From 90cfdf5aa57b75a30baa10e7156334d5b1ada540 Mon Sep 17 00:00:00 2001 From: ddelpiano Date: Tue, 14 Nov 2023 12:23:26 +0100 Subject: [PATCH 001/126] Fixing show graph on macos due to issue with graphviz for mkdir freeze --- package.json | 2 +- src/server/model/parser.py | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index b325171b..3df319cf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "psyneulinkviewer", - "version": "0.0.4", + "version": "0.0.5", "main": "./public/electron.js", "description": "An editor and viewer for PsyNeuLink models", "private": true, diff --git a/src/server/model/parser.py b/src/server/model/parser.py index b7dcfd2e..fd30cdb7 100644 --- a/src/server/model/parser.py +++ b/src/server/model/parser.py @@ -197,8 +197,9 @@ def generate_graphviz(self): node = self.model_tree.get_graph()[key].get_node() if node.componentType in self.psyneulink_composition_classes: gv_node = None - node.show_graph(show_node_structure='all') - gv_node = node.show_graph(show_node_structure='all', output_fmt="gv") + # TODO: below commented since breaking on macos + # node.show_graph(show_node_structure=pnl.ALL) + gv_node = node.show_graph(show_node_structure=pnl.ALL, output_fmt="gv") self.graphviz_graph[PNLTypes.COMPOSITIONS.value].append(gv_node.pipe('json', quiet=True).decode()) elif node.componentType in self.psyneulink_mechanism_classes: if orphan_nodes is None: From fc4a29ac702d92fef4c612806992ea475cde7197 Mon Sep 17 00:00:00 2001 From: Jesus M Date: Tue, 14 Nov 2023 11:09:18 -0800 Subject: [PATCH 002/126] Update README.md --- README.md | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/README.md b/README.md index c83c2de7..6d823214 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ Before running the software follow the steps below - Create a conda environment ``` -conda create --name psnl_viewer python=3.7 +conda create --name psnl_viewer python=3.11 ``` * Activate the conda environment just created @@ -70,12 +70,6 @@ chmod +x installation.sh ## Usage -- If you need to work purely on the frontend you can run: - -``` -yarn run start:dev -``` - - If you need to work on the entire flow of the application you must start it with: ``` From 6715a32138c5f7b6f129cdcece1f60afd05a2d42 Mon Sep 17 00:00:00 2001 From: jrmartin Date: Mon, 18 Dec 2023 22:30:00 +0100 Subject: [PATCH 003/126] Fixes that worked on Mac M1 Instance --- installation.sh | 5 +++++ pre_installation.sh | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/installation.sh b/installation.sh index d10e1049..39a26337 100755 --- a/installation.sh +++ b/installation.sh @@ -179,3 +179,8 @@ else echo " - The script can be run in update (-u / --update) or install (-i / --install) mode." echo " - please use the option desidered to run the script again." fi + +pip uninstall -y grpcio && pip uninstall -y grpcio-tools +conda install -c -y conda-forge grpcio +pip install -y modeci_mdf +conda install -y python-graphviz diff --git a/pre_installation.sh b/pre_installation.sh index 5676233c..97c315fe 100644 --- a/pre_installation.sh +++ b/pre_installation.sh @@ -4,6 +4,6 @@ PSNL_HOME=`pwd` cd ../ git clone https://github.com/PrincetonUniversity/PsyNeuLink cd PsyNeuLink -git checkout 12bc1298fe +git checkout master pip install -e . cd $PSNL_HOME From d517a45e4083f55d65b89df7a01a5799f7d833af Mon Sep 17 00:00:00 2001 From: Dario Del Piano Date: Mon, 24 Jun 2024 16:17:20 +0200 Subject: [PATCH 004/126] latest updates and build github actions --- .github/workflows/build.yml | 43 ++ package.json | 6 +- yarn.lock | 903 +++++++++++++++++++++++++++++++++++- 3 files changed, 936 insertions(+), 16 deletions(-) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..61712918 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,43 @@ +name: Build +on: [push, pull_request] + +jobs: + build_on_linux: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@master + with: + node-version: 18.19 + - name: install dependencies + run: yarn + - name: build + run: yarn linux64 + - name: package + run: yarn package:linux + + build_on_mac: + runs-on: macos-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@master + with: + node-version: 18.19 + - name: install dependencies + run: yarn + - name: build + run: yarn osx + - name: package + run: yarn package:osx + + # build_on_win: + # runs-on: windows-latest + # steps: + # - uses: actions/checkout@v2 + # - uses: actions/setup-node@master + # with: + # node-version: 14 + # - name: install dependencies + # run: npm install + # - name: build + # run: npm run make diff --git a/package.json b/package.json index 3df319cf..a01fec90 100644 --- a/package.json +++ b/package.json @@ -13,9 +13,9 @@ "@fortawesome/react-fontawesome": "^0.1.9", "@grpc/grpc-js": "^1.8.9", "@grpc/proto-loader": "^0.7.5", - "@metacell/geppetto-meta-client": "1.2.0", - "@metacell/geppetto-meta-core": "1.2.0", - "@metacell/geppetto-meta-ui": "1.2.0", + "@metacell/geppetto-meta-client": "1.2.8", + "@metacell/geppetto-meta-core": "1.2.8", + "@metacell/geppetto-meta-ui": "1.2.8", "@metacell/meta-diagram": "file:.yalc/@metacell/meta-diagram", "@mui/icons-material": "^5.8.4", "@mui/lab": "^5.0.0-alpha.103", diff --git a/yarn.lock b/yarn.lock index 8439cca1..fe46c73a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -47,11 +47,24 @@ "@babel/highlight" "^7.22.10" chalk "^2.4.2" +"@babel/code-frame@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.7.tgz#882fd9e09e8ee324e496bd040401c6f046ef4465" + integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== + dependencies: + "@babel/highlight" "^7.24.7" + picocolors "^1.0.0" + "@babel/compat-data@^7.22.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9": version "7.22.9" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.9.tgz#71cdb00a1ce3a329ce4cbec3a44f9fef35669730" integrity sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ== +"@babel/compat-data@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.7.tgz#d23bbea508c3883ba8251fb4164982c36ea577ed" + integrity sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw== + "@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.7.2", "@babel/core@^7.8.0": version "7.22.10" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.10.tgz#aad442c7bcd1582252cb4576747ace35bc122f35" @@ -92,6 +105,16 @@ "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" +"@babel/generator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.7.tgz#1654d01de20ad66b4b4d99c135471bc654c55e6d" + integrity sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA== + dependencies: + "@babel/types" "^7.24.7" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^2.5.1" + "@babel/helper-annotate-as-pure@^7.18.6", "@babel/helper-annotate-as-pure@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" @@ -99,6 +122,13 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-annotate-as-pure@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz#5373c7bc8366b12a033b4be1ac13a206c6656aab" + integrity sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg== + dependencies: + "@babel/types" "^7.24.7" + "@babel/helper-builder-binary-assignment-operator-visitor@^7.22.5": version "7.22.10" resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.10.tgz#573e735937e99ea75ea30788b57eb52fab7468c9" @@ -106,6 +136,14 @@ dependencies: "@babel/types" "^7.22.10" +"@babel/helper-builder-binary-assignment-operator-visitor@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz#37d66feb012024f2422b762b9b2a7cfe27c7fba3" + integrity sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + "@babel/helper-compilation-targets@^7.22.10", "@babel/helper-compilation-targets@^7.22.5", "@babel/helper-compilation-targets@^7.22.6": version "7.22.10" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz#01d648bbc25dd88f513d862ee0df27b7d4e67024" @@ -117,6 +155,17 @@ lru-cache "^5.1.1" semver "^6.3.1" +"@babel/helper-compilation-targets@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz#4eb6c4a80d6ffeac25ab8cd9a21b5dfa48d503a9" + integrity sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg== + dependencies: + "@babel/compat-data" "^7.24.7" + "@babel/helper-validator-option" "^7.24.7" + browserslist "^4.22.2" + lru-cache "^5.1.1" + semver "^6.3.1" + "@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0", "@babel/helper-create-class-features-plugin@^7.22.10", "@babel/helper-create-class-features-plugin@^7.22.5": version "7.22.10" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.10.tgz#dd2612d59eac45588021ac3d6fa976d08f4e95a3" @@ -132,6 +181,21 @@ "@babel/helper-split-export-declaration" "^7.22.6" semver "^6.3.1" +"@babel/helper-create-class-features-plugin@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.7.tgz#2eaed36b3a1c11c53bdf80d53838b293c52f5b3b" + integrity sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-function-name" "^7.24.7" + "@babel/helper-member-expression-to-functions" "^7.24.7" + "@babel/helper-optimise-call-expression" "^7.24.7" + "@babel/helper-replace-supers" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/helper-split-export-declaration" "^7.24.7" + semver "^6.3.1" + "@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.5": version "7.22.9" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.9.tgz#9d8e61a8d9366fe66198f57c40565663de0825f6" @@ -141,6 +205,15 @@ regexpu-core "^5.3.1" semver "^6.3.1" +"@babel/helper-create-regexp-features-plugin@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.24.7.tgz#be4f435a80dc2b053c76eeb4b7d16dd22cfc89da" + integrity sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + regexpu-core "^5.3.1" + semver "^6.3.1" + "@babel/helper-define-polyfill-provider@^0.4.2": version "0.4.2" resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz#82c825cadeeeee7aad237618ebbe8fa1710015d7" @@ -152,11 +225,29 @@ lodash.debounce "^4.0.8" resolve "^1.14.2" +"@babel/helper-define-polyfill-provider@^0.6.1", "@babel/helper-define-polyfill-provider@^0.6.2": + version "0.6.2" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz#18594f789c3594acb24cfdb4a7f7b7d2e8bd912d" + integrity sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ== + dependencies: + "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-plugin-utils" "^7.22.5" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + "@babel/helper-environment-visitor@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz#f06dd41b7c1f44e1f8da6c4055b41ab3a09a7e98" integrity sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q== +"@babel/helper-environment-visitor@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz#4b31ba9551d1f90781ba83491dd59cf9b269f7d9" + integrity sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ== + dependencies: + "@babel/types" "^7.24.7" + "@babel/helper-function-name@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz#ede300828905bb15e582c037162f99d5183af1be" @@ -165,6 +256,14 @@ "@babel/template" "^7.22.5" "@babel/types" "^7.22.5" +"@babel/helper-function-name@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz#75f1e1725742f39ac6584ee0b16d94513da38dd2" + integrity sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA== + dependencies: + "@babel/template" "^7.24.7" + "@babel/types" "^7.24.7" + "@babel/helper-hoist-variables@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" @@ -172,6 +271,13 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-hoist-variables@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz#b4ede1cde2fd89436397f30dc9376ee06b0f25ee" + integrity sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ== + dependencies: + "@babel/types" "^7.24.7" + "@babel/helper-member-expression-to-functions@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz#0a7c56117cad3372fbf8d2fb4bf8f8d64a1e76b2" @@ -179,6 +285,14 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-member-expression-to-functions@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.7.tgz#67613d068615a70e4ed5101099affc7a41c5225f" + integrity sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz#1a8f4c9f4027d23f520bd76b364d44434a72660c" @@ -186,6 +300,14 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-module-imports@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz#f2f980392de5b84c3328fc71d38bd81bbb83042b" + integrity sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + "@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.22.9": version "7.22.9" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz#92dfcb1fbbb2bc62529024f72d942a8c97142129" @@ -197,6 +319,17 @@ "@babel/helper-split-export-declaration" "^7.22.6" "@babel/helper-validator-identifier" "^7.22.5" +"@babel/helper-module-transforms@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz#31b6c9a2930679498db65b685b1698bfd6c7daf8" + integrity sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ== + dependencies: + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-simple-access" "^7.24.7" + "@babel/helper-split-export-declaration" "^7.24.7" + "@babel/helper-validator-identifier" "^7.24.7" + "@babel/helper-optimise-call-expression@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" @@ -204,11 +337,23 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-optimise-call-expression@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz#8b0a0456c92f6b323d27cfd00d1d664e76692a0f" + integrity sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A== + dependencies: + "@babel/types" "^7.24.7" + "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== +"@babel/helper-plugin-utils@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz#98c84fe6fe3d0d3ae7bfc3a5e166a46844feb2a0" + integrity sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg== + "@babel/helper-remap-async-to-generator@^7.22.5", "@babel/helper-remap-async-to-generator@^7.22.9": version "7.22.9" resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz#53a25b7484e722d7efb9c350c75c032d4628de82" @@ -218,6 +363,15 @@ "@babel/helper-environment-visitor" "^7.22.5" "@babel/helper-wrap-function" "^7.22.9" +"@babel/helper-remap-async-to-generator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.7.tgz#b3f0f203628522713849d49403f1a414468be4c7" + integrity sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-wrap-function" "^7.24.7" + "@babel/helper-replace-supers@^7.22.5", "@babel/helper-replace-supers@^7.22.9": version "7.22.9" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz#cbdc27d6d8d18cd22c81ae4293765a5d9afd0779" @@ -227,6 +381,15 @@ "@babel/helper-member-expression-to-functions" "^7.22.5" "@babel/helper-optimise-call-expression" "^7.22.5" +"@babel/helper-replace-supers@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.24.7.tgz#f933b7eed81a1c0265740edc91491ce51250f765" + integrity sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg== + dependencies: + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-member-expression-to-functions" "^7.24.7" + "@babel/helper-optimise-call-expression" "^7.24.7" + "@babel/helper-simple-access@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" @@ -234,6 +397,14 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-simple-access@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz#bcade8da3aec8ed16b9c4953b74e506b51b5edb3" + integrity sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" @@ -241,6 +412,14 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-skip-transparent-expression-wrappers@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz#5f8fa83b69ed5c27adc56044f8be2b3ea96669d9" + integrity sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + "@babel/helper-split-export-declaration@^7.22.6": version "7.22.6" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" @@ -248,21 +427,43 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-split-export-declaration@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz#83949436890e07fa3d6873c61a96e3bbf692d856" + integrity sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA== + dependencies: + "@babel/types" "^7.24.7" + "@babel/helper-string-parser@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== +"@babel/helper-string-parser@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz#4d2d0f14820ede3b9807ea5fc36dfc8cd7da07f2" + integrity sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg== + "@babel/helper-validator-identifier@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193" integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ== +"@babel/helper-validator-identifier@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" + integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== + "@babel/helper-validator-option@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz#de52000a15a177413c8234fa3a8af4ee8102d0ac" integrity sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw== +"@babel/helper-validator-option@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz#24c3bb77c7a425d1742eec8fb433b5a1b38e62f6" + integrity sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw== + "@babel/helper-wrap-function@^7.22.9": version "7.22.10" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.10.tgz#d845e043880ed0b8c18bd194a12005cb16d2f614" @@ -272,6 +473,16 @@ "@babel/template" "^7.22.5" "@babel/types" "^7.22.10" +"@babel/helper-wrap-function@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.24.7.tgz#52d893af7e42edca7c6d2c6764549826336aae1f" + integrity sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw== + dependencies: + "@babel/helper-function-name" "^7.24.7" + "@babel/template" "^7.24.7" + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + "@babel/helpers@^7.22.10": version "7.22.10" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.22.10.tgz#ae6005c539dfbcb5cd71fb51bfc8a52ba63bc37a" @@ -290,11 +501,34 @@ chalk "^2.4.2" js-tokens "^4.0.0" +"@babel/highlight@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.7.tgz#a05ab1df134b286558aae0ed41e6c5f731bf409d" + integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== + dependencies: + "@babel/helper-validator-identifier" "^7.24.7" + chalk "^2.4.2" + js-tokens "^4.0.0" + picocolors "^1.0.0" + "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.10", "@babel/parser@^7.22.5": version "7.22.10" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.10.tgz#e37634f9a12a1716136c44624ef54283cabd3f55" integrity sha512-lNbdGsQb9ekfsnjFGhEiF4hfFqGgfOP3H3d27re3n+CGhNuTSUEQdfWk556sTLNTloczcdM5TYF2LhzmDQKyvQ== +"@babel/parser@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.7.tgz#9a5226f92f0c5c8ead550b750f5608e766c8ce85" + integrity sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw== + +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.7.tgz#fd059fd27b184ea2b4c7e646868a9a381bbc3055" + integrity sha512-TiT1ss81W80eQsN+722OaeQMY/G4yTb4G9JrqeiDADs3N8lbPMGldWi9x8tyqCW5NLx1Jh2AvkE6r6QvEltMMQ== + dependencies: + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz#87245a21cd69a73b0b81bcda98d443d6df08f05e" @@ -302,6 +536,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.7.tgz#468096ca44bbcbe8fcc570574e12eb1950e18107" + integrity sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz#fef09f9499b1f1c930da8a0c419db42167d792ca" @@ -311,6 +552,23 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" "@babel/plugin-transform-optional-chaining" "^7.22.5" +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz#e4eabdd5109acc399b38d7999b2ef66fc2022f89" + integrity sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/plugin-transform-optional-chaining" "^7.24.7" + +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.7.tgz#71b21bb0286d5810e63a1538aa901c58e87375ec" + integrity sha512-utA4HuR6F4Vvcr+o4DnjL8fCOlgRFGbeeBEGNg3ZTrLFw6VWG5XmUrvcQ0FjIYMU2ST4XcR2Wsp7t9qOAPnxMg== + dependencies: + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-proposal-class-properties@^7.16.0": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" @@ -441,6 +699,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-syntax-import-assertions@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz#2a0b406b5871a20a841240586b1300ce2088a778" + integrity sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-import-attributes@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz#ab840248d834410b829f569f5262b9e517555ecb" @@ -448,6 +713,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-syntax-import-attributes@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz#b4f9ea95a79e6912480c4b626739f86a076624ca" + integrity sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" @@ -547,6 +819,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-arrow-functions@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz#4f6886c11e423bd69f3ce51dbf42424a5f275514" + integrity sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-async-generator-functions@^7.22.10": version "7.22.10" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.10.tgz#45946cd17f915b10e65c29b8ed18a0a50fc648c8" @@ -557,6 +836,16 @@ "@babel/helper-remap-async-to-generator" "^7.22.9" "@babel/plugin-syntax-async-generators" "^7.8.4" +"@babel/plugin-transform-async-generator-functions@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.7.tgz#7330a5c50e05181ca52351b8fd01642000c96cfd" + integrity sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g== + dependencies: + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-remap-async-to-generator" "^7.24.7" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-transform-async-to-generator@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz#c7a85f44e46f8952f6d27fe57c2ed3cc084c3775" @@ -566,6 +855,15 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-remap-async-to-generator" "^7.22.5" +"@babel/plugin-transform-async-to-generator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz#72a3af6c451d575842a7e9b5a02863414355bdcc" + integrity sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA== + dependencies: + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-remap-async-to-generator" "^7.24.7" + "@babel/plugin-transform-block-scoped-functions@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz#27978075bfaeb9fa586d3cb63a3d30c1de580024" @@ -573,6 +871,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-block-scoped-functions@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz#a4251d98ea0c0f399dafe1a35801eaba455bbf1f" + integrity sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-block-scoping@^7.22.10": version "7.22.10" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.10.tgz#88a1dccc3383899eb5e660534a76a22ecee64faa" @@ -580,6 +885,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-block-scoping@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.7.tgz#42063e4deb850c7bd7c55e626bf4e7ab48e6ce02" + integrity sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-class-properties@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz#97a56e31ad8c9dc06a0b3710ce7803d5a48cca77" @@ -588,6 +900,14 @@ "@babel/helper-create-class-features-plugin" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-class-properties@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz#256879467b57b0b68c7ddfc5b76584f398cd6834" + integrity sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-class-static-block@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.5.tgz#3e40c46f048403472d6f4183116d5e46b1bff5ba" @@ -597,6 +917,15 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-class-static-block" "^7.14.5" +"@babel/plugin-transform-class-static-block@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz#c82027ebb7010bc33c116d4b5044fbbf8c05484d" + integrity sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-transform-classes@^7.22.6": version "7.22.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz#e04d7d804ed5b8501311293d1a0e6d43e94c3363" @@ -612,6 +941,20 @@ "@babel/helper-split-export-declaration" "^7.22.6" globals "^11.1.0" +"@babel/plugin-transform-classes@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.7.tgz#4ae6ef43a12492134138c1e45913f7c46c41b4bf" + integrity sha512-CFbbBigp8ln4FU6Bpy6g7sE8B/WmCmzvivzUC6xDAdWVsjYTXijpuuGJmYkAaoWAzcItGKT3IOAbxRItZ5HTjw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-compilation-targets" "^7.24.7" + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-function-name" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-replace-supers" "^7.24.7" + "@babel/helper-split-export-declaration" "^7.24.7" + globals "^11.1.0" + "@babel/plugin-transform-computed-properties@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz#cd1e994bf9f316bd1c2dafcd02063ec261bb3869" @@ -620,6 +963,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/template" "^7.22.5" +"@babel/plugin-transform-computed-properties@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz#4cab3214e80bc71fae3853238d13d097b004c707" + integrity sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/template" "^7.24.7" + "@babel/plugin-transform-destructuring@^7.22.10": version "7.22.10" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.10.tgz#38e2273814a58c810b6c34ea293be4973c4eb5e2" @@ -627,6 +978,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-destructuring@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.7.tgz#a097f25292defb6e6cc16d6333a4cfc1e3c72d9e" + integrity sha512-19eJO/8kdCQ9zISOf+SEUJM/bAUIsvY3YDnXZTupUCQ8LgrWnsG/gFB9dvXqdXnRXMAM8fvt7b0CBKQHNGy1mw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-dotall-regex@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz#dbb4f0e45766eb544e193fb00e65a1dd3b2a4165" @@ -635,6 +993,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-dotall-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz#5f8bf8a680f2116a7207e16288a5f974ad47a7a0" + integrity sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-duplicate-keys@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz#b6e6428d9416f5f0bba19c70d1e6e7e0b88ab285" @@ -642,6 +1008,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-duplicate-keys@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz#dd20102897c9a2324e5adfffb67ff3610359a8ee" + integrity sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-dynamic-import@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.5.tgz#d6908a8916a810468c4edff73b5b75bda6ad393e" @@ -650,6 +1023,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" +"@babel/plugin-transform-dynamic-import@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz#4d8b95e3bae2b037673091aa09cd33fecd6419f4" + integrity sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-transform-exponentiation-operator@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz#402432ad544a1f9a480da865fda26be653e48f6a" @@ -658,6 +1039,14 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-exponentiation-operator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz#b629ee22645f412024297d5245bce425c31f9b0d" + integrity sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-export-namespace-from@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.5.tgz#57c41cb1d0613d22f548fddd8b288eedb9973a5b" @@ -666,6 +1055,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" +"@babel/plugin-transform-export-namespace-from@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz#176d52d8d8ed516aeae7013ee9556d540c53f197" + integrity sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-transform-flow-strip-types@^7.16.0": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.22.5.tgz#0bb17110c7bf5b35a60754b2f00c58302381dee2" @@ -681,6 +1078,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-for-of@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz#f25b33f72df1d8be76399e1b8f3f9d366eb5bc70" + integrity sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/plugin-transform-function-name@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz#935189af68b01898e0d6d99658db6b164205c143" @@ -690,6 +1095,15 @@ "@babel/helper-function-name" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-function-name@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.7.tgz#6d8601fbffe665c894440ab4470bc721dd9131d6" + integrity sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w== + dependencies: + "@babel/helper-compilation-targets" "^7.24.7" + "@babel/helper-function-name" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-json-strings@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.5.tgz#14b64352fdf7e1f737eed68de1a1468bd2a77ec0" @@ -698,6 +1112,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-json-strings" "^7.8.3" +"@babel/plugin-transform-json-strings@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz#f3e9c37c0a373fee86e36880d45b3664cedaf73a" + integrity sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-transform-literals@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz#e9341f4b5a167952576e23db8d435849b1dd7920" @@ -705,6 +1127,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-literals@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.7.tgz#36b505c1e655151a9d7607799a9988fc5467d06c" + integrity sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-logical-assignment-operators@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.5.tgz#66ae5f068fd5a9a5dc570df16f56c2a8462a9d6c" @@ -713,6 +1142,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" +"@babel/plugin-transform-logical-assignment-operators@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz#a58fb6eda16c9dc8f9ff1c7b1ba6deb7f4694cb0" + integrity sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-transform-member-expression-literals@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz#4fcc9050eded981a468347dd374539ed3e058def" @@ -720,6 +1157,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-member-expression-literals@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz#3b4454fb0e302e18ba4945ba3246acb1248315df" + integrity sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-modules-amd@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz#4e045f55dcf98afd00f85691a68fc0780704f526" @@ -728,6 +1172,14 @@ "@babel/helper-module-transforms" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-modules-amd@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz#65090ed493c4a834976a3ca1cde776e6ccff32d7" + integrity sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg== + dependencies: + "@babel/helper-module-transforms" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-modules-commonjs@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz#7d9875908d19b8c0536085af7b053fd5bd651bfa" @@ -737,6 +1189,15 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-simple-access" "^7.22.5" +"@babel/plugin-transform-modules-commonjs@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.7.tgz#9fd5f7fdadee9085886b183f1ad13d1ab260f4ab" + integrity sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ== + dependencies: + "@babel/helper-module-transforms" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-simple-access" "^7.24.7" + "@babel/plugin-transform-modules-systemjs@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.5.tgz#18c31410b5e579a0092638f95c896c2a98a5d496" @@ -747,6 +1208,16 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-validator-identifier" "^7.22.5" +"@babel/plugin-transform-modules-systemjs@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.7.tgz#f8012316c5098f6e8dee6ecd58e2bc6f003d0ce7" + integrity sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw== + dependencies: + "@babel/helper-hoist-variables" "^7.24.7" + "@babel/helper-module-transforms" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-validator-identifier" "^7.24.7" + "@babel/plugin-transform-modules-umd@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz#4694ae40a87b1745e3775b6a7fe96400315d4f98" @@ -755,6 +1226,14 @@ "@babel/helper-module-transforms" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-modules-umd@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz#edd9f43ec549099620df7df24e7ba13b5c76efc8" + integrity sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A== + dependencies: + "@babel/helper-module-transforms" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" @@ -763,6 +1242,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-named-capturing-groups-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz#9042e9b856bc6b3688c0c2e4060e9e10b1460923" + integrity sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-new-target@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz#1b248acea54ce44ea06dfd37247ba089fcf9758d" @@ -770,6 +1257,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-new-target@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz#31ff54c4e0555cc549d5816e4ab39241dfb6ab00" + integrity sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-nullish-coalescing-operator@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.5.tgz#f8872c65776e0b552e0849d7596cddd416c3e381" @@ -778,6 +1272,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" +"@babel/plugin-transform-nullish-coalescing-operator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz#1de4534c590af9596f53d67f52a92f12db984120" + integrity sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-transform-numeric-separator@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.5.tgz#57226a2ed9e512b9b446517ab6fa2d17abb83f58" @@ -786,6 +1288,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-numeric-separator" "^7.10.4" +"@babel/plugin-transform-numeric-separator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz#bea62b538c80605d8a0fac9b40f48e97efa7de63" + integrity sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-transform-object-rest-spread@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.5.tgz#9686dc3447df4753b0b2a2fae7e8bc33cdc1f2e1" @@ -797,6 +1307,16 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-transform-parameters" "^7.22.5" +"@babel/plugin-transform-object-rest-spread@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz#d13a2b93435aeb8a197e115221cab266ba6e55d6" + integrity sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q== + dependencies: + "@babel/helper-compilation-targets" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.24.7" + "@babel/plugin-transform-object-super@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz#794a8d2fcb5d0835af722173c1a9d704f44e218c" @@ -805,6 +1325,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-replace-supers" "^7.22.5" +"@babel/plugin-transform-object-super@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz#66eeaff7830bba945dd8989b632a40c04ed625be" + integrity sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-replace-supers" "^7.24.7" + "@babel/plugin-transform-optional-catch-binding@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.5.tgz#842080be3076703be0eaf32ead6ac8174edee333" @@ -813,6 +1341,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" +"@babel/plugin-transform-optional-catch-binding@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz#00eabd883d0dd6a60c1c557548785919b6e717b4" + integrity sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-transform-optional-chaining@^7.22.10", "@babel/plugin-transform-optional-chaining@^7.22.5": version "7.22.10" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.10.tgz#076d28a7e074392e840d4ae587d83445bac0372a" @@ -822,6 +1358,15 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" "@babel/plugin-syntax-optional-chaining" "^7.8.3" +"@babel/plugin-transform-optional-chaining@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.7.tgz#b8f6848a80cf2da98a8a204429bec04756c6d454" + integrity sha512-tK+0N9yd4j+x/4hxF3F0e0fu/VdcxU18y5SevtyM/PCFlQvXbR0Zmlo2eBrKtVipGNFzpq56o8WsIIKcJFUCRQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-transform-parameters@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz#c3542dd3c39b42c8069936e48717a8d179d63a18" @@ -829,6 +1374,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-parameters@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz#5881f0ae21018400e320fc7eb817e529d1254b68" + integrity sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-private-methods@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz#21c8af791f76674420a147ae62e9935d790f8722" @@ -837,6 +1389,14 @@ "@babel/helper-create-class-features-plugin" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-private-methods@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz#e6318746b2ae70a59d023d5cc1344a2ba7a75f5e" + integrity sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-private-property-in-object@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.5.tgz#07a77f28cbb251546a43d175a1dda4cf3ef83e32" @@ -847,6 +1407,16 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" +"@babel/plugin-transform-private-property-in-object@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz#4eec6bc701288c1fab5f72e6a4bbc9d67faca061" + integrity sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-transform-property-literals@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz#b5ddabd73a4f7f26cd0e20f5db48290b88732766" @@ -854,6 +1424,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-property-literals@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz#f0d2ed8380dfbed949c42d4d790266525d63bbdc" + integrity sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-react-constant-elements@^7.12.1": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.22.5.tgz#6dfa7c1c37f7d7279e417ceddf5a04abb8bb9c29" @@ -902,6 +1479,14 @@ "@babel/helper-plugin-utils" "^7.22.5" regenerator-transform "^0.15.2" +"@babel/plugin-transform-regenerator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz#021562de4534d8b4b1851759fd7af4e05d2c47f8" + integrity sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + regenerator-transform "^0.15.2" + "@babel/plugin-transform-reserved-words@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz#832cd35b81c287c4bcd09ce03e22199641f964fb" @@ -909,6 +1494,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-reserved-words@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz#80037fe4fbf031fc1125022178ff3938bb3743a4" + integrity sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-runtime@^7.16.4": version "7.22.10" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.10.tgz#89eda6daf1d3af6f36fb368766553054c8d7cd46" @@ -928,6 +1520,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-shorthand-properties@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz#85448c6b996e122fa9e289746140aaa99da64e73" + integrity sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-spread@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz#6487fd29f229c95e284ba6c98d65eafb893fea6b" @@ -936,6 +1535,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" +"@babel/plugin-transform-spread@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz#e8a38c0fde7882e0fb8f160378f74bd885cc7bb3" + integrity sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/plugin-transform-sticky-regex@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz#295aba1595bfc8197abd02eae5fc288c0deb26aa" @@ -943,6 +1550,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-sticky-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz#96ae80d7a7e5251f657b5cf18f1ea6bf926f5feb" + integrity sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-template-literals@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz#8f38cf291e5f7a8e60e9f733193f0bcc10909bff" @@ -950,6 +1564,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-template-literals@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz#a05debb4a9072ae8f985bcf77f3f215434c8f8c8" + integrity sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-typeof-symbol@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz#5e2ba478da4b603af8673ff7c54f75a97b716b34" @@ -957,6 +1578,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-typeof-symbol@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.7.tgz#f074be466580d47d6e6b27473a840c9f9ca08fb0" + integrity sha512-VtR8hDy7YLB7+Pet9IarXjg/zgCMSF+1mNS/EQEiEaUPoFXCVsHG64SIxcaaI2zJgRiv+YmgaQESUfWAdbjzgg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-typescript@^7.22.5": version "7.22.10" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.10.tgz#aadd98fab871f0bb5717bcc24c31aaaa455af923" @@ -974,6 +1602,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-unicode-escapes@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz#2023a82ced1fb4971630a2e079764502c4148e0e" + integrity sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-unicode-property-regex@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz#098898f74d5c1e86660dc112057b2d11227f1c81" @@ -982,6 +1617,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-unicode-property-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz#9073a4cd13b86ea71c3264659590ac086605bbcd" + integrity sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-unicode-regex@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz#ce7e7bb3ef208c4ff67e02a22816656256d7a183" @@ -990,6 +1633,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-unicode-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz#dfc3d4a51127108099b19817c0963be6a2adf19f" + integrity sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-unicode-sets-regex@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz#77788060e511b708ffc7d42fdfbc5b37c3004e91" @@ -998,6 +1649,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-unicode-sets-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz#d40705d67523803a576e29c63cef6e516b858ed9" + integrity sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/preset-env@^7.11.0", "@babel/preset-env@^7.12.1", "@babel/preset-env@^7.16.4": version "7.22.10" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.22.10.tgz#3263b9fe2c8823d191d28e61eac60a79f9ce8a0f" @@ -1084,6 +1743,93 @@ core-js-compat "^3.31.0" semver "^6.3.1" +"@babel/preset-env@^7.23.5": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.24.7.tgz#ff067b4e30ba4a72f225f12f123173e77b987f37" + integrity sha512-1YZNsc+y6cTvWlDHidMBsQZrZfEFjRIo/BZCT906PMdzOyXtSLTgqGdrpcuTDCXyd11Am5uQULtDIcCfnTc8fQ== + dependencies: + "@babel/compat-data" "^7.24.7" + "@babel/helper-compilation-targets" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-validator-option" "^7.24.7" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.24.7" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.24.7" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.7" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.24.7" + "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.24.7" + "@babel/plugin-syntax-import-attributes" "^7.24.7" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.24.7" + "@babel/plugin-transform-async-generator-functions" "^7.24.7" + "@babel/plugin-transform-async-to-generator" "^7.24.7" + "@babel/plugin-transform-block-scoped-functions" "^7.24.7" + "@babel/plugin-transform-block-scoping" "^7.24.7" + "@babel/plugin-transform-class-properties" "^7.24.7" + "@babel/plugin-transform-class-static-block" "^7.24.7" + "@babel/plugin-transform-classes" "^7.24.7" + "@babel/plugin-transform-computed-properties" "^7.24.7" + "@babel/plugin-transform-destructuring" "^7.24.7" + "@babel/plugin-transform-dotall-regex" "^7.24.7" + "@babel/plugin-transform-duplicate-keys" "^7.24.7" + "@babel/plugin-transform-dynamic-import" "^7.24.7" + "@babel/plugin-transform-exponentiation-operator" "^7.24.7" + "@babel/plugin-transform-export-namespace-from" "^7.24.7" + "@babel/plugin-transform-for-of" "^7.24.7" + "@babel/plugin-transform-function-name" "^7.24.7" + "@babel/plugin-transform-json-strings" "^7.24.7" + "@babel/plugin-transform-literals" "^7.24.7" + "@babel/plugin-transform-logical-assignment-operators" "^7.24.7" + "@babel/plugin-transform-member-expression-literals" "^7.24.7" + "@babel/plugin-transform-modules-amd" "^7.24.7" + "@babel/plugin-transform-modules-commonjs" "^7.24.7" + "@babel/plugin-transform-modules-systemjs" "^7.24.7" + "@babel/plugin-transform-modules-umd" "^7.24.7" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.24.7" + "@babel/plugin-transform-new-target" "^7.24.7" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.7" + "@babel/plugin-transform-numeric-separator" "^7.24.7" + "@babel/plugin-transform-object-rest-spread" "^7.24.7" + "@babel/plugin-transform-object-super" "^7.24.7" + "@babel/plugin-transform-optional-catch-binding" "^7.24.7" + "@babel/plugin-transform-optional-chaining" "^7.24.7" + "@babel/plugin-transform-parameters" "^7.24.7" + "@babel/plugin-transform-private-methods" "^7.24.7" + "@babel/plugin-transform-private-property-in-object" "^7.24.7" + "@babel/plugin-transform-property-literals" "^7.24.7" + "@babel/plugin-transform-regenerator" "^7.24.7" + "@babel/plugin-transform-reserved-words" "^7.24.7" + "@babel/plugin-transform-shorthand-properties" "^7.24.7" + "@babel/plugin-transform-spread" "^7.24.7" + "@babel/plugin-transform-sticky-regex" "^7.24.7" + "@babel/plugin-transform-template-literals" "^7.24.7" + "@babel/plugin-transform-typeof-symbol" "^7.24.7" + "@babel/plugin-transform-unicode-escapes" "^7.24.7" + "@babel/plugin-transform-unicode-property-regex" "^7.24.7" + "@babel/plugin-transform-unicode-regex" "^7.24.7" + "@babel/plugin-transform-unicode-sets-regex" "^7.24.7" + "@babel/preset-modules" "0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2 "^0.4.10" + babel-plugin-polyfill-corejs3 "^0.10.4" + babel-plugin-polyfill-regenerator "^0.6.1" + core-js-compat "^3.31.0" + semver "^6.3.1" + "@babel/preset-modules@0.1.6-no-external-plugins": version "0.1.6-no-external-plugins" resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" @@ -1137,6 +1883,15 @@ "@babel/parser" "^7.22.5" "@babel/types" "^7.22.5" +"@babel/template@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.7.tgz#02efcee317d0609d2c07117cb70ef8fb17ab7315" + integrity sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig== + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/parser" "^7.24.7" + "@babel/types" "^7.24.7" + "@babel/traverse@^7.22.10", "@babel/traverse@^7.7.2": version "7.22.10" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.10.tgz#20252acb240e746d27c2e82b4484f199cf8141aa" @@ -1153,6 +1908,22 @@ debug "^4.1.0" globals "^11.1.0" +"@babel/traverse@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.7.tgz#de2b900163fa741721ba382163fe46a936c40cf5" + integrity sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA== + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/generator" "^7.24.7" + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-function-name" "^7.24.7" + "@babel/helper-hoist-variables" "^7.24.7" + "@babel/helper-split-export-declaration" "^7.24.7" + "@babel/parser" "^7.24.7" + "@babel/types" "^7.24.7" + debug "^4.3.1" + globals "^11.1.0" + "@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.20.7", "@babel/types@^7.22.10", "@babel/types@^7.22.5", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.22.10" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.10.tgz#4a9e76446048f2c66982d1a989dd12b8a2d2dc03" @@ -1162,6 +1933,15 @@ "@babel/helper-validator-identifier" "^7.22.5" to-fast-properties "^2.0.0" +"@babel/types@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.7.tgz#6027fe12bc1aa724cd32ab113fb7f1988f1f66f2" + integrity sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q== + dependencies: + "@babel/helper-string-parser" "^7.24.7" + "@babel/helper-validator-identifier" "^7.24.7" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -1866,6 +2646,15 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" +"@jridgewell/gen-mapping@^0.3.5": + version "0.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" + integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== + dependencies: + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" + "@jridgewell/resolve-uri@^3.1.0": version "3.1.1" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" @@ -1876,6 +2665,11 @@ resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + "@jridgewell/source-map@^0.3.3": version "0.3.5" resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3bb4d5c6825aab0d281268f47f6ad5853431e91" @@ -1897,6 +2691,14 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" +"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": + version "0.3.25" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + "@leichtgewicht/ip-codec@^2.0.1": version "2.0.4" resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" @@ -2033,10 +2835,10 @@ prop-types "^15.7.2" react-is "^16.8.0 || ^17.0.0" -"@metacell/geppetto-meta-client@1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@metacell/geppetto-meta-client/-/geppetto-meta-client-1.2.0.tgz#7053bbdc51981eef311eadd68ea959de8ee8a003" - integrity sha512-C6PyOOB1PMS5XQB/KKCyMxGDhLE59RJYIfxmPguWElMzm16kS83mDBs5Ysoblq927zauTQopSwY8NIJ8MHG8Fw== +"@metacell/geppetto-meta-client@1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@metacell/geppetto-meta-client/-/geppetto-meta-client-1.2.8.tgz#84c3b791288452f987cb3a1e56a47c9a8952bd59" + integrity sha512-pDORhlNYv5HILPaGPuJGFV5xLgvdtrtHklBfTW3jMfBAzbXO5qxRyslfpES2VxdcFGONW5Gr6KCbRWBmm2My+g== dependencies: "@material-ui/core" "^4.1.3" pako "^1.0.3" @@ -2046,19 +2848,20 @@ redux "^4.1.0" url-join "^4.0.0" -"@metacell/geppetto-meta-core@1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@metacell/geppetto-meta-core/-/geppetto-meta-core-1.2.0.tgz#52f84f4dec2035e0a2803f44a03043040c2e4e03" - integrity sha512-kY8bdXzVqnGnw1kVdPHNlm5jZl9axDKppHZcHGKUtcFFgWaGslNl8PwGxU0cFh+Hr/Lpk0f5tSj/0N40AW7LTg== +"@metacell/geppetto-meta-core@1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@metacell/geppetto-meta-core/-/geppetto-meta-core-1.2.8.tgz#34e991feb099bb63d3737b7f8495df5b8b1f3425" + integrity sha512-1AMhQLw3+3YFufG2YUsgsxi3YGZx94VKloXq5aENZo5ZLW+aLvlSAUcRUl68LUPt/Axd+6xc1R7qGNOghv7Irw== -"@metacell/geppetto-meta-ui@1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@metacell/geppetto-meta-ui/-/geppetto-meta-ui-1.2.0.tgz#cb685fe6a710fd2d36c8e5b198cdb19f74f19223" - integrity sha512-Qkp6iMWJCOozK4gcvVUxwAqDgJ9hXjJD5060bCEloyQmYI4e8cdGpb3u5sD8Ey6J5ERrWhbo5klUEPeMH4885A== +"@metacell/geppetto-meta-ui@1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@metacell/geppetto-meta-ui/-/geppetto-meta-ui-1.2.8.tgz#3a6b34e561de88e88b892ae8bc80a32cc2e4b2a1" + integrity sha512-wiC7GiJZWp66wUG4jIGcP1wieAi4fEtyncpEcNjwssuURSddixFnCkH0dSX5KwJ3PjDbHEyco6/M6nG+DYFJlw== "@metacell/meta-diagram@file:.yalc/@metacell/meta-diagram": - version "0.1.3" + version "0.3.1" dependencies: + "@babel/preset-env" "^7.23.5" "@projectstorm/react-canvas-core" "^6.7.4" "@projectstorm/react-diagrams" "^6.7.4" assets "^3.0.1" @@ -4033,6 +4836,15 @@ babel-plugin-named-asset-import@^0.3.8: resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz#6b7fa43c59229685368683c28bc9734f24524cc2" integrity sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q== +babel-plugin-polyfill-corejs2@^0.4.10: + version "0.4.11" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz#30320dfe3ffe1a336c15afdcdafd6fd615b25e33" + integrity sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q== + dependencies: + "@babel/compat-data" "^7.22.6" + "@babel/helper-define-polyfill-provider" "^0.6.2" + semver "^6.3.1" + babel-plugin-polyfill-corejs2@^0.4.5: version "0.4.5" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz#8097b4cb4af5b64a1d11332b6fb72ef5e64a054c" @@ -4042,6 +4854,14 @@ babel-plugin-polyfill-corejs2@^0.4.5: "@babel/helper-define-polyfill-provider" "^0.4.2" semver "^6.3.1" +babel-plugin-polyfill-corejs3@^0.10.4: + version "0.10.4" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz#789ac82405ad664c20476d0233b485281deb9c77" + integrity sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.1" + core-js-compat "^3.36.1" + babel-plugin-polyfill-corejs3@^0.8.3: version "0.8.3" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz#b4f719d0ad9bb8e0c23e3e630c0c8ec6dd7a1c52" @@ -4057,6 +4877,13 @@ babel-plugin-polyfill-regenerator@^0.5.2: dependencies: "@babel/helper-define-polyfill-provider" "^0.4.2" +babel-plugin-polyfill-regenerator@^0.6.1: + version "0.6.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz#addc47e240edd1da1058ebda03021f382bba785e" + integrity sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.2" + babel-plugin-transform-react-remove-prop-types@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" @@ -4274,6 +5101,16 @@ browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.18.1, browserslist@^4 node-releases "^2.0.13" update-browserslist-db "^1.0.11" +browserslist@^4.22.2, browserslist@^4.23.0: + version "4.23.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.1.tgz#ce4af0534b3d37db5c1a4ca98b9080f985041e96" + integrity sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw== + dependencies: + caniuse-lite "^1.0.30001629" + electron-to-chromium "^1.4.796" + node-releases "^2.0.14" + update-browserslist-db "^1.0.16" + bser@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" @@ -4475,6 +5312,11 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001517, caniuse-lite@^1.0.30001520: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001521.tgz#e9930cf499f7c1e80334b6c1fbca52e00d889e56" integrity sha512-fnx1grfpEOvDGH+V17eccmNjucGUnCbP6KL+l5KqBIerp26WK/+RQ7CIDE37KGJjaPyqWXXlFUyKiWmvdNNKmQ== +caniuse-lite@^1.0.30001629: + version "1.0.30001636" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001636.tgz#b15f52d2bdb95fad32c2f53c0b68032b85188a78" + integrity sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg== + canvas-fit@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/canvas-fit/-/canvas-fit-1.5.0.tgz#ae13be66ade42f5be0e487e345fce30a5e5b5e5f" @@ -4982,6 +5824,13 @@ core-js-compat@^3.31.0: dependencies: browserslist "^4.21.9" +core-js-compat@^3.36.1: + version "3.37.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.37.1.tgz#c844310c7852f4bdf49b8d339730b97e17ff09ee" + integrity sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg== + dependencies: + browserslist "^4.23.0" + core-js-pure@^3.23.3: version "3.32.0" resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.32.0.tgz#5d79f85da7a4373e9a06494ccbef995a4c639f8b" @@ -6061,6 +6910,11 @@ electron-to-chromium@^1.4.477: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.495.tgz#d72d2eddc05d07c538275a00f2619b113848bff6" integrity sha512-mwknuemBZnoOCths4GtpU/SDuVMp3uQHKa2UNJT9/aVD6WVRjGpXOxRGX7lm6ILIenTdGXPSTCTDaWos5tEU8Q== +electron-to-chromium@^1.4.796: + version "1.4.810" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.810.tgz#7dee01b090b9e048e6db752f7b30921790230654" + integrity sha512-Kaxhu4T7SJGpRQx99tq216gCq2nMxJo+uuT6uzz9l8TVN2stL7M06MIIXAtr9jsrLs2Glflgf2vMQRepxawOdQ== + electron@^19.0.0: version "19.1.9" resolved "https://registry.yarnpkg.com/electron/-/electron-19.1.9.tgz#01995eea4014f7cdb2f616f5f3492d4ed6f5e4f0" @@ -6327,6 +7181,11 @@ escalade@^3.1.1: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== +escalade@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" + integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -10094,6 +10953,11 @@ node-releases@^2.0.13: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== +node-releases@^2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" + integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== + "node-sass@yarn:sass": version "1.66.0" resolved "https://registry.yarnpkg.com/sass/-/sass-1.66.0.tgz#74728eed49b0e490cd729c233e7f1c6ce356e638" @@ -10657,6 +11521,11 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== +picocolors@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" + integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== + picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" @@ -13884,6 +14753,14 @@ update-browserslist-db@^1.0.11: escalade "^3.1.1" picocolors "^1.0.0" +update-browserslist-db@^1.0.16: + version "1.0.16" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz#f6d489ed90fb2f07d67784eb3f53d7891f736356" + integrity sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ== + dependencies: + escalade "^3.1.2" + picocolors "^1.0.1" + update-diff@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/update-diff/-/update-diff-1.1.0.tgz#f510182d81ee819fb82c3a6b22b62bbdeda7808f" From a83709c15b1b60d65f332600490f8634438c8e46 Mon Sep 17 00:00:00 2001 From: Dario Del Piano Date: Mon, 24 Jun 2024 16:19:23 +0200 Subject: [PATCH 005/126] fixing build packages --- .github/workflows/build.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 61712918..30306bce 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -9,6 +9,8 @@ jobs: - uses: actions/setup-node@master with: node-version: 18.19 + - name: install meta-diagram + run: bash installation.sh -i - name: install dependencies run: yarn - name: build @@ -23,6 +25,8 @@ jobs: - uses: actions/setup-node@master with: node-version: 18.19 + - name: install meta-diagram + run: bash installation.sh -i - name: install dependencies run: yarn - name: build From e1149c406dc213797642d6fd732ff1ab70320d8f Mon Sep 17 00:00:00 2001 From: Dario Del Piano Date: Mon, 24 Jun 2024 16:29:40 +0200 Subject: [PATCH 006/126] fixing conda path for macos --- .github/workflows/build.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 30306bce..75a15799 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -25,6 +25,8 @@ jobs: - uses: actions/setup-node@master with: node-version: 18.19 + - name: create conda symlink + run: ln -s $CONDA/bin/conda /usr/bin/conda - name: install meta-diagram run: bash installation.sh -i - name: install dependencies From ada8d9a9ac6547b0b57a866b2c99047226e59fcd Mon Sep 17 00:00:00 2001 From: Dario Del Piano Date: Mon, 24 Jun 2024 16:31:57 +0200 Subject: [PATCH 007/126] fixing packaging --- .github/workflows/build.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 75a15799..a79bf027 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -16,7 +16,7 @@ jobs: - name: build run: yarn linux64 - name: package - run: yarn package:linux + run: tar -czf linux.tar.gz ./psyneulinkviewer-linux-x64 build_on_mac: runs-on: macos-latest @@ -35,6 +35,8 @@ jobs: run: yarn osx - name: package run: yarn package:osx + - name: package + run: tar -czf osx.tar.gz ./psyneulinkviewer-darwin-x64 # build_on_win: # runs-on: windows-latest From 1e1c73f3b6f9407dd3cc35a263084f8d1734be0f Mon Sep 17 00:00:00 2001 From: Dario Del Piano Date: Mon, 24 Jun 2024 16:34:14 +0200 Subject: [PATCH 008/126] checking conda --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a79bf027..bb32790b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -26,7 +26,7 @@ jobs: with: node-version: 18.19 - name: create conda symlink - run: ln -s $CONDA/bin/conda /usr/bin/conda + run: echo $CONDA - name: install meta-diagram run: bash installation.sh -i - name: install dependencies From aa234db5ad6ebdc46ee573408692995b694510c1 Mon Sep 17 00:00:00 2001 From: Dario Del Piano Date: Mon, 24 Jun 2024 16:36:44 +0200 Subject: [PATCH 009/126] checking conda 2 --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bb32790b..8007dc49 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -26,7 +26,7 @@ jobs: with: node-version: 18.19 - name: create conda symlink - run: echo $CONDA + run: /usr/local/miniconda/bin/conda --version - name: install meta-diagram run: bash installation.sh -i - name: install dependencies From 7b195452e6bba67b3518f3d57279b92b71d6ac52 Mon Sep 17 00:00:00 2001 From: Dario Del Piano Date: Mon, 24 Jun 2024 16:38:10 +0200 Subject: [PATCH 010/126] checking conda 3 --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8007dc49..54bbe385 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -26,7 +26,7 @@ jobs: with: node-version: 18.19 - name: create conda symlink - run: /usr/local/miniconda/bin/conda --version + run: wget https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh -O ~/miniconda.sh && bash ~/miniconda.sh -b -p $HOME/miniconda - name: install meta-diagram run: bash installation.sh -i - name: install dependencies From 647fb8b524796549113aee6c573fb551696ed25f Mon Sep 17 00:00:00 2001 From: Dario Del Piano Date: Mon, 24 Jun 2024 16:51:47 +0200 Subject: [PATCH 011/126] checking conda 4 --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 54bbe385..e1fd6fc2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -26,7 +26,7 @@ jobs: with: node-version: 18.19 - name: create conda symlink - run: wget https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh -O ~/miniconda.sh && bash ~/miniconda.sh -b -p $HOME/miniconda + run: wget https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh -O ~/miniconda.sh && bash ~/miniconda.sh -b -p $HOME/miniconda && source ~/.zshrc && source ~/.bashrc - name: install meta-diagram run: bash installation.sh -i - name: install dependencies From 4c7f656fe9457acb4c50c7ee83f4156ef06ab5ae Mon Sep 17 00:00:00 2001 From: Dario Del Piano Date: Mon, 24 Jun 2024 16:53:52 +0200 Subject: [PATCH 012/126] checking conda 5 --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e1fd6fc2..50ace518 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -26,7 +26,7 @@ jobs: with: node-version: 18.19 - name: create conda symlink - run: wget https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh -O ~/miniconda.sh && bash ~/miniconda.sh -b -p $HOME/miniconda && source ~/.zshrc && source ~/.bashrc + run: wget https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh -O ~/miniconda.sh && bash ~/miniconda.sh -b -p $HOME/miniconda && source ~/.bashrc - name: install meta-diagram run: bash installation.sh -i - name: install dependencies From 0d253d9b5fc3f8d5b838fe6e7edcf5e0adaf4358 Mon Sep 17 00:00:00 2001 From: Dario Del Piano Date: Mon, 24 Jun 2024 18:02:28 +0200 Subject: [PATCH 013/126] checking conda 6 --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 50ace518..f1f5f9f6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -26,7 +26,7 @@ jobs: with: node-version: 18.19 - name: create conda symlink - run: wget https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh -O ~/miniconda.sh && bash ~/miniconda.sh -b -p $HOME/miniconda && source ~/.bashrc + run: wget https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh -O ~/miniconda.sh && bash ~/miniconda.sh -b -p $HOME/miniconda && source $HOME/miniconda/bin/activate && conda init - name: install meta-diagram run: bash installation.sh -i - name: install dependencies From ca1356b4f58f32475f374804203ef05afc48bf78 Mon Sep 17 00:00:00 2001 From: jrmartin Date: Thu, 27 Jun 2024 21:52:03 -0700 Subject: [PATCH 014/126] #PSYNEU-134 - POC packacking application as a python package installable with 'pip install'. --- package/LICENSE | 19 +++++++++ package/README.md | 3 ++ package/pyproject.toml | 18 +++++++++ package/src/__init__.py | 0 package/src/setup.py | 89 +++++++++++++++++++++++++++++++++++++++++ 5 files changed, 129 insertions(+) create mode 100644 package/LICENSE create mode 100644 package/README.md create mode 100644 package/pyproject.toml create mode 100644 package/src/__init__.py create mode 100644 package/src/setup.py diff --git a/package/LICENSE b/package/LICENSE new file mode 100644 index 00000000..335ea9d0 --- /dev/null +++ b/package/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2018 The Python Packaging Authority + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/package/README.md b/package/README.md new file mode 100644 index 00000000..bd4c0a5a --- /dev/null +++ b/package/README.md @@ -0,0 +1,3 @@ +# PsyNeuLinkView Package + +PsyNeuLinkView package release 0.0.5 \ No newline at end of file diff --git a/package/pyproject.toml b/package/pyproject.toml new file mode 100644 index 00000000..2cca7790 --- /dev/null +++ b/package/pyproject.toml @@ -0,0 +1,18 @@ +[project] +name = "PsyNeuLinkView" +version = "0.0.5" +authors = [ + { name="Metacell", email="metacell@metacell.com" }, +] +description = "Metacell Package" +readme = "README.md" +requires-python = "==3.11" +classifiers = [ + "Programming Language :: Python :: 3", + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", +] + +[project.urls] +Homepage = "https://github.com/Metacell/PsyNeuLinkView" +Issues = "https://github.com/Metacell/PsyNeuLinkView/issues" \ No newline at end of file diff --git a/package/src/__init__.py b/package/src/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/package/src/setup.py b/package/src/setup.py new file mode 100644 index 00000000..ececef4a --- /dev/null +++ b/package/src/setup.py @@ -0,0 +1,89 @@ +import requests +import re +import json +import platform +import os +import logging +import tarfile +from setuptools import setup, find_packages +from setuptools.command.install import install + +logger = logging.getLogger(__name__) +logging.basicConfig(level=logging.INFO) + +def get_filename_from_cd(cd): + """ + Get filename from content-disposition + """ + if not cd: + return None + fname = re.findall('filename=(.+)', cd) + if len(fname) == 0: + return None + return fname[0] + +def get_latest_release(installation_path): + url = 'https://api.github.com/repos/MetaCell/PsyNeuLinkView/releases' + headers = {'Accept': 'application/vnd.github+json','Authorization': 'Bearer JWT', 'X-GitHub-Api-Version' : '2022-11-28'} + r = requests.get(url, allow_redirects=True) + releases = json.loads(r.text) + assets = releases[0]["assets"] + + target_release = None + for asset in assets : + if platform.system().lower() in asset['name'] : + target_release = asset["browser_download_url"] + + logging.info("System detected %s :", platform.system()) + logging.info("Target release url found %s :", target_release) + logging.info("Downloading release to %s...", installation_path) + release_download = requests.get(target_release, allow_redirects=True) + + filename = get_filename_from_cd(release_download.headers.get('content-disposition')) + location = os.path.join(installation_path, filename) + logging.info("Writing release to %s...", location) + open(location, 'wb').write(release_download.content) + + logging.info("Opening compressed file %s", filename) + tar = tarfile.open(location) + tar.extractall(path=installation_path) + tar.close() + logging.info("Release file uncompressed at : %s", location) + + application = os.path.join(installation_path, "psyneulinkviewer-linux-x64/psyneulinkviewer") + logging.info("***") + logging.info("***") + logging.info("***") + logging.info("***") + logging.info("*** To launch the application run : **** ") + logging.info(" %s " , application) + +class InstallCommand(install): + user_options = install.user_options + [ + ('path=', None, 'an option that takes a value') + ] + + def initialize_options(self): + install.initialize_options(self) + self.path = None + + def finalize_options(self): + # Validate options + if self.path is None: + self.path = os.path.dirname(os.path.realpath(__file__)) + super().finalize_options() + + + def run(self): + global path + path = self.path # will be 1 or None + install.run(self) + get_latest_release(self.path) + +setup( + name="PsyNeuLinkView", + version="0.0.5", + cmdclass={ + 'install': InstallCommand + } +) \ No newline at end of file From dc11b75f7c0c4885b315168ab3a2b7841d4694a0 Mon Sep 17 00:00:00 2001 From: jrmartin Date: Thu, 27 Jun 2024 22:07:08 -0700 Subject: [PATCH 015/126] #PSYNEU-134 -Better logging and symlink creation --- package/src/setup.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/package/src/setup.py b/package/src/setup.py index ececef4a..6ec9cb5a 100644 --- a/package/src/setup.py +++ b/package/src/setup.py @@ -51,6 +51,10 @@ def get_latest_release(installation_path): logging.info("Release file uncompressed at : %s", location) application = os.path.join(installation_path, "psyneulinkviewer-linux-x64/psyneulinkviewer") + symlink = "/usr/local/bin/psyneulinkviewer" + logging.info("Creating symlink at : %s", symlink) + os.symlink(application, symlink) + logging.info("Symlink created") logging.info("***") logging.info("***") logging.info("***") From f0e970c12b5a584800efc2ac91554baf41696b9d Mon Sep 17 00:00:00 2001 From: jrmartin Date: Sun, 30 Jun 2024 09:25:15 -0700 Subject: [PATCH 016/126] #134 - Fix symlink path --- package/pyproject.toml | 18 ------------------ package/{src => }/setup.py | 30 +++++++++++++++++++----------- 2 files changed, 19 insertions(+), 29 deletions(-) delete mode 100644 package/pyproject.toml rename package/{src => }/setup.py (74%) diff --git a/package/pyproject.toml b/package/pyproject.toml deleted file mode 100644 index 2cca7790..00000000 --- a/package/pyproject.toml +++ /dev/null @@ -1,18 +0,0 @@ -[project] -name = "PsyNeuLinkView" -version = "0.0.5" -authors = [ - { name="Metacell", email="metacell@metacell.com" }, -] -description = "Metacell Package" -readme = "README.md" -requires-python = "==3.11" -classifiers = [ - "Programming Language :: Python :: 3", - "License :: OSI Approved :: MIT License", - "Operating System :: OS Independent", -] - -[project.urls] -Homepage = "https://github.com/Metacell/PsyNeuLinkView" -Issues = "https://github.com/Metacell/PsyNeuLinkView/issues" \ No newline at end of file diff --git a/package/src/setup.py b/package/setup.py similarity index 74% rename from package/src/setup.py rename to package/setup.py index 6ec9cb5a..8e110b97 100644 --- a/package/src/setup.py +++ b/package/setup.py @@ -1,4 +1,4 @@ -import requests +from pip._vendor import requests import re import json import platform @@ -40,27 +40,35 @@ def get_latest_release(installation_path): release_download = requests.get(target_release, allow_redirects=True) filename = get_filename_from_cd(release_download.headers.get('content-disposition')) - location = os.path.join(installation_path, filename) - logging.info("Writing release to %s...", location) - open(location, 'wb').write(release_download.content) + tar_location = os.path.join(installation_path, filename) + logging.info("Writing release to %s...", tar_location) + open(tar_location, 'wb').write(release_download.content) logging.info("Opening compressed file %s", filename) - tar = tarfile.open(location) - tar.extractall(path=installation_path) + tar = tarfile.open(tar_location) + extract_location = "/usr/local/bin" + tar.extractall(path=extract_location) tar.close() - logging.info("Release file uncompressed at : %s", location) + logging.info("Release file uncompressed at : %s", extract_location) - application = os.path.join(installation_path, "psyneulinkviewer-linux-x64/psyneulinkviewer") + application = os.path.join(extract_location, "psyneulinkviewer-linux-x64/psyneulinkviewer") symlink = "/usr/local/bin/psyneulinkviewer" logging.info("Creating symlink at : %s", symlink) - os.symlink(application, symlink) + logging.info("Application at : %s", application) + try: + if os.path.islink(symlink): + os.remove(symlink) + os.symlink(application, symlink) + except OSError as e: + logging.error("Error applying symlin %f ", e) + logging.info("Symlink created") logging.info("***") logging.info("***") logging.info("***") logging.info("***") logging.info("*** To launch the application run : **** ") - logging.info(" %s " , application) + logging.info(" %s " ,symlink) class InstallCommand(install): user_options = install.user_options + [ @@ -85,7 +93,7 @@ def run(self): get_latest_release(self.path) setup( - name="PsyNeuLinkView", + name="psyneulinkview", version="0.0.5", cmdclass={ 'install': InstallCommand From e0622fef220e2693b8c1bb46a4b1d8e39dc67d20 Mon Sep 17 00:00:00 2001 From: jrmartin Date: Sun, 30 Jun 2024 09:29:00 -0700 Subject: [PATCH 017/126] #134- Add read me instructions --- package/README.md | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/package/README.md b/package/README.md index bd4c0a5a..ca51137e 100644 --- a/package/README.md +++ b/package/README.md @@ -1,3 +1,23 @@ # PsyNeuLinkView Package -PsyNeuLinkView package release 0.0.5 \ No newline at end of file +To build pip package +``` +cd package +python3 -m build +``` + +To pip install package created in previous step +``` +python3 -m pip install --no-index --find-links={package_directory_path + "/dist"} psyneulinkview +``` + +To run psyneulinkviewer +``` +/usr/local/bin/psyneulinkviewer +``` + +or + +``` +psyneulinkviewer +``` \ No newline at end of file From 1baba8e096abf31457776b64ea40067595523589 Mon Sep 17 00:00:00 2001 From: jrmartin Date: Wed, 3 Jul 2024 16:17:40 -0700 Subject: [PATCH 018/126] #134 - Add checks for OS, python version, conda version, graphviz and psyneulink --- package/README.md | 2 +- package/setup.py | 81 +++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 75 insertions(+), 8 deletions(-) diff --git a/package/README.md b/package/README.md index ca51137e..bfd7db8b 100644 --- a/package/README.md +++ b/package/README.md @@ -8,7 +8,7 @@ python3 -m build To pip install package created in previous step ``` -python3 -m pip install --no-index --find-links={package_directory_path + "/dist"} psyneulinkview +python3 -m pip install --no-index --find-links=package_directory_path + "/dist" psyneulinkview ``` To run psyneulinkviewer diff --git a/package/setup.py b/package/setup.py index 8e110b97..b495a3fe 100644 --- a/package/setup.py +++ b/package/setup.py @@ -1,9 +1,11 @@ -from pip._vendor import requests import re import json import platform import os +import sys +import subprocess import logging +import importlib.util import tarfile from setuptools import setup, find_packages from setuptools.command.install import install @@ -11,6 +13,62 @@ logger = logging.getLogger(__name__) logging.basicConfig(level=logging.INFO) +graphviz = "graphviz" +psyneulink = "psyneulink" + +def check_os(self): + if os.name == 'nt': + sys.exit('Windows is not supported') + else: + logging.info("OS version supported") + +def check_python(self): + if not sys.version_info.major == 3 and not sys.version_info.minor == 6 : + logging.error('Python version not supported, 3.11 is required. %f' , sys.version_info) + sys.exit('Python version not supported, 3.11 is required.') + else: + logging.info("Python version is supported") + +def check_conda(self): + result = subprocess.run( + ["conda", "--version"], + capture_output = True, + text = True + ) + logging.info("conda version %s", result.stdout) + +def check_rosetta(self): + if sys.platform == "darwin": + result = subprocess.run( + ["rosseta", "--version"], + capture_output = True, + text = True + ) + logging.info("rosseta version %s", result.stdout) + +def check_graphviz(self): + if importlib.util.find_spec(graphviz) is None: + logging.error(graphviz +" is not installed, installing") + result = subprocess.run( + ["pip", "install", "graphviz"], + capture_output = True, + text = True + ) + else: + logging.info(graphviz +" is installed") + +def check_psyneulink(self): + if importlib.util.find_spec(psyneulink) is None: + logging.error(psyneulink +" is not installed, installing") + result = subprocess.run( + ["pip", "install", "psyneulink"], + capture_output = True, + text = True + ) + else: + logging.info(psyneulink +" is installed") + + def get_filename_from_cd(cd): """ Get filename from content-disposition @@ -23,6 +81,8 @@ def get_filename_from_cd(cd): return fname[0] def get_latest_release(installation_path): + import requests + url = 'https://api.github.com/repos/MetaCell/PsyNeuLinkView/releases' headers = {'Accept': 'application/vnd.github+json','Authorization': 'Bearer JWT', 'X-GitHub-Api-Version' : '2022-11-28'} r = requests.get(url, allow_redirects=True) @@ -63,13 +123,19 @@ def get_latest_release(installation_path): logging.error("Error applying symlin %f ", e) logging.info("Symlink created") - logging.info("***") - logging.info("***") - logging.info("***") - logging.info("***") + logging.info("*** To launch the application run : **** ") logging.info(" %s " ,symlink) +def prerequisites(self): + check_os(self) + check_python(self) + check_conda(self) + check_rosetta(self) + check_graphviz(self) + check_psyneulink(self) + get_latest_release(self.path) + class InstallCommand(install): user_options = install.user_options + [ ('path=', None, 'an option that takes a value') @@ -90,12 +156,13 @@ def run(self): global path path = self.path # will be 1 or None install.run(self) - get_latest_release(self.path) + prerequisites(self) setup( name="psyneulinkview", version="0.0.5", cmdclass={ 'install': InstallCommand - } + }, + setup_requires=['requests'] ) \ No newline at end of file From 44406e2d71427433dbccda532cfed5ad899e2bbf Mon Sep 17 00:00:00 2001 From: Dario Del Piano Date: Thu, 4 Jul 2024 01:24:58 +0200 Subject: [PATCH 019/126] conda changes for osx --- .github/workflows/build.yml | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f1f5f9f6..a4e26af0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -2,21 +2,21 @@ name: Build on: [push, pull_request] jobs: - build_on_linux: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@master - with: - node-version: 18.19 - - name: install meta-diagram - run: bash installation.sh -i - - name: install dependencies - run: yarn - - name: build - run: yarn linux64 - - name: package - run: tar -czf linux.tar.gz ./psyneulinkviewer-linux-x64 + # build_on_linux: + # runs-on: ubuntu-latest + # steps: + # - uses: actions/checkout@v2 + # - uses: actions/setup-node@master + # with: + # node-version: 18.19 + # - name: install meta-diagram + # run: bash installation.sh -i + # - name: install dependencies + # run: yarn + # - name: build + # run: yarn linux64 + # - name: package + # run: tar -czf linux.tar.gz ./psyneulinkviewer-linux-x64 build_on_mac: runs-on: macos-latest @@ -27,8 +27,10 @@ jobs: node-version: 18.19 - name: create conda symlink run: wget https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh -O ~/miniconda.sh && bash ~/miniconda.sh -b -p $HOME/miniconda && source $HOME/miniconda/bin/activate && conda init + - name: extra steps + run: source $HOME/miniconda/bin/activate && conda --version && - name: install meta-diagram - run: bash installation.sh -i + run: source $HOME/miniconda/bin/activate && bash installation.sh -i - name: install dependencies run: yarn - name: build From bc42389bf45e7e66d28a6c6979d8bb3802676162 Mon Sep 17 00:00:00 2001 From: Dario Del Piano Date: Thu, 4 Jul 2024 01:26:51 +0200 Subject: [PATCH 020/126] conda changes for osx 2 --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a4e26af0..c20f0498 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -28,7 +28,7 @@ jobs: - name: create conda symlink run: wget https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh -O ~/miniconda.sh && bash ~/miniconda.sh -b -p $HOME/miniconda && source $HOME/miniconda/bin/activate && conda init - name: extra steps - run: source $HOME/miniconda/bin/activate && conda --version && + run: source $HOME/miniconda/bin/activate && conda --version - name: install meta-diagram run: source $HOME/miniconda/bin/activate && bash installation.sh -i - name: install dependencies From 778b7b056d551c5535419147e8acf3e915709eae Mon Sep 17 00:00:00 2001 From: Dario Del Piano Date: Thu, 4 Jul 2024 01:34:01 +0200 Subject: [PATCH 021/126] conda changes for osx 3 --- .github/workflows/build.yml | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c20f0498..a697f657 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -2,21 +2,21 @@ name: Build on: [push, pull_request] jobs: - # build_on_linux: - # runs-on: ubuntu-latest - # steps: - # - uses: actions/checkout@v2 - # - uses: actions/setup-node@master - # with: - # node-version: 18.19 - # - name: install meta-diagram - # run: bash installation.sh -i - # - name: install dependencies - # run: yarn - # - name: build - # run: yarn linux64 - # - name: package - # run: tar -czf linux.tar.gz ./psyneulinkviewer-linux-x64 + build_on_linux: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@master + with: + node-version: 18.19 + - name: install meta-diagram + run: bash installation.sh -i + - name: install dependencies + run: yarn + - name: build + run: yarn linux64 + - name: package + run: tar -czf linux.tar.gz ./psyneulinkviewer-linux-x64 build_on_mac: runs-on: macos-latest @@ -35,8 +35,6 @@ jobs: run: yarn - name: build run: yarn osx - - name: package - run: yarn package:osx - name: package run: tar -czf osx.tar.gz ./psyneulinkviewer-darwin-x64 From 60c3d5bf0f77657b85ad4a5de1caeab154a37697 Mon Sep 17 00:00:00 2001 From: Dario Del Piano Date: Thu, 4 Jul 2024 01:42:52 +0200 Subject: [PATCH 022/126] fixing conflicts --- pre_installation.sh | 4 ---- 1 file changed, 4 deletions(-) diff --git a/pre_installation.sh b/pre_installation.sh index 3b637b2a..97c315fe 100644 --- a/pre_installation.sh +++ b/pre_installation.sh @@ -4,10 +4,6 @@ PSNL_HOME=`pwd` cd ../ git clone https://github.com/PrincetonUniversity/PsyNeuLink cd PsyNeuLink -<<<<<<< release/0.0.5-fixes -- Incoming Change git checkout master -======= -git checkout devel ->>>>>>> develop -- Current Change pip install -e . cd $PSNL_HOME From 73f87b70eb62d6871f8356cb04839f8ea5105dba Mon Sep 17 00:00:00 2001 From: jrmartin Date: Thu, 4 Jul 2024 08:10:19 -0700 Subject: [PATCH 023/126] #134 - Add entry point to launch psyneulink. Adds dist packages --- .../psyneulinkview-0.0.5-py3-none-any.whl | Bin 0 -> 3963 bytes package/dist/psyneulinkview-0.0.5.tar.gz | Bin 0 -> 3530 bytes package/{src => psyneulinkviewer}/__init__.py | 0 package/psyneulinkviewer/start.py | 155 ++++++++++++++++++ package/setup.py | 40 ++--- 5 files changed, 176 insertions(+), 19 deletions(-) create mode 100644 package/dist/psyneulinkview-0.0.5-py3-none-any.whl create mode 100644 package/dist/psyneulinkview-0.0.5.tar.gz rename package/{src => psyneulinkviewer}/__init__.py (100%) create mode 100644 package/psyneulinkviewer/start.py diff --git a/package/dist/psyneulinkview-0.0.5-py3-none-any.whl b/package/dist/psyneulinkview-0.0.5-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..2e21180bf8bbe854c3dae13e78f33ce805bd3ec8 GIT binary patch literal 3963 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 hkt-sYz&pzR(;zU$ER4jZi}UB(e*khldSn0q literal 0 HcmV?d00001 diff --git a/package/dist/psyneulinkview-0.0.5.tar.gz b/package/dist/psyneulinkview-0.0.5.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..bd97d99ce0562032416ab3ef74c4e7dde5a18fee GIT binary patch literal 3530 zcmV;*4K?x~iwFqqx`t)~|8R48Ze?|BX>MzFX=QgUFfK4IH7;~vascfe{d3y5vOoK; z(D>#CXu*Ji&}Jqxk0!L?9f1tc_Bxr4&)5Rg8rx^f`RL94?{8QBzfT*8dHu z|M#N*^-TZQU$q*w_Dfx>NzMPX^?$#2+#QU&kGcO34w|>=f4z24NB!SuH`;o$0lEMT zLB0Nr)b_dmpQ!#n_WYZG%@>>$tr7tj@FkfnC^^633(qCzruD^~Gj~op5mW?>-zdsC z4VEkn8ML#IENDQdH)I}|E~j>x%mPY@HzU@<4Cb^SZPrgdjTI+FCZax90f2ipj+^|qE5gd={^dSCn5^5=4# z@K>{%G=&S(ambV=0)ufuyk?G_0EdU|<8o#?#Pj&$@$&2BSh9>Ar^-GCu9} z`#6-+c?Z;wkUnxeJpVZAy*-_f(_#Ol3ze_CKw0N?zZ(w)Oda<-y|Xeo>6~@mc15ot zU>PY07E?z)oOZDa$LqlV<4JEgKsJttgUJY9%fRJml6C#i8+Xg3GwO{|Aa6#)v$BHX zgdRhI1o{oSF%}dxS(_06!S{FLZibMYbUS^(HO9`!VhXHDlPUdwdHy5Me`NV_{r~e{ z-d4cw4Ik70Z{F(v*XsJ_`A@5H(31ZDKFS&8rfqVw@*ccTaNiDzuGN)+xul0=eQhWi zgjgg>KlXGhZ@?!%BuU69b%wP6^8D}LdH$!@YR&emR|oR^@2T7WQMYq)*438wUe5n& zEpYaQ{cp6It#%Xbf9s$o?f*W?Pvktj8PKQ?E8sn>faJ)JD$2wo(}+1X@tIHjr1rPp zep4(vd-cUJVS`kbF|26Ep4f-EAX>*sfr%ARaiqsw;s^ASc~MA0PJPiShbiB;QgOWs zb8UJJk283v;8G2b5}bz30%~zDxG{W_FUSj`R`Ebi-Sk~jx`N2vXrh5=tVUr_bv(;- zs#E4xcfu%MK$Mu;9nI4I%lKc$|FZl5_J6%nqw_iF;F(wb8~gu3`5$_{hVj45|B&&Y z)c<>o{}TN#<3FkYck2JYcrN_l^Iu(uM;ZU^qsa5$r(LA|m-b)Ue`){kW&g*+ccbI( zSmW3HG3|d-*Ej8dyV;iZe;*~a+u4!75>g)dnt!8w%L`QQu}p4-v8hj8o4VGGAx?Df z1g0*>6JC$G{BA(*`G!L;sj~x$235mgF5`x=%^fu2I^fVE?Z34D(*DaL?f<=$_9NJT zc-^r7t$IVo|9dHNtIPOb+J9;PrTv%o|C{!IGY)&C_`kko|C%oIn)TP zfcZT9v=tbWqpgf7O~lHFOOv@$RY?0U?Z34DvOEF%zjnO(u>F5${I74?|HeUG=6`>O z`KN*0`qKXI-Tuq`@9$^-W&XFc|99Je8dU%O{(sp0f9i;_uXa3^;zw7tEIsGqU!J3XgMVIlP)c;cd?^*wYh`# zYUA%en+s|_5;=P?Dpi1)eIrQB0*>_An^MYmi?uF@7c(ZzprhedAG|XxoZ;p4y zrmyjb!=_rqnUmIn)bTb~Wfpi#B65zo=Q$xsv0_b`;FS+Xa@j+;39DJ&a%sA@mfjYT z4j8{G3KAl|z)UF8=9KqEUC}UHb4d-Oq@-=F15ZGURW$0Dg+9ffy6bWlN=q9g3AkW zJrFc#p`-F9X<+y+J%w;rcOv#-BOnDIKQY4$K*2pQP--QTFMg> zU(1mrNDKjEC;bdWq%FD}yhf|`~_$iZyR<9$Q z0sTE<0kt*q^Q=J1TVs`WNa=x??;*SmjChCfZW-cLyk;uGfQFI7VNI;IjTS_1F&pGU z74T}AsFg~BT>Vte+AY)PQ9unZ;(mmPCP743&75ARl|)p=jI5I`M#w1tIfTJty0nnn zfOw7kz=Ivf&DP#;EK8GN>bnCGUgOe1Mb^-y$8QLd0z3o&3iKDeYsCJ zdXD{deWnQ&75daFrm!Vk3_pJ2s*2CIl#>*S2-6CBfm4@PY!>=nD6S7*>yhYx%g*m~;L;T{BI;(bxq^BzeLz>S zkPdQG)LxVdW$0f@(LqB|bSa@Csojn@c^9x3wNEQPK@ZW88v%8w8PZ}R3~`yexDzT} zU8$e*dj#O2A}XW60a6PK&i(MPS~Y#9%^6=rQ}isV0R>N^nHg}f|lwf_$e{+7wBRY%7x@g{jZ`O!CzA|0C(lTA0{BA z!mpLLjGso+O2=pEud@pT!1S7~SL*eO{<83AEE^&3m@#y5iojPHZ)*3hKrZnWS>X{b zvr;0!!a6QHlChEvgpp8L6}9nbIcf6od)0m(ZB#l$VF}pkU&c3 zy80iB5s6JX2!-09{>dS1J^T`FLv5{eHAtNo)?KB@0`OQ`n&&3W=nE1_K>j@kbPn&~HWh zwa*@NxA$Z@qhptlJ_LYyw}A4a#9cifG)TT0cFxtbP|~gd3*F`?VWG5ZZ43cd{I?U9 zK3IehmIu-qy9nzP!-&9T62oX)L?lZ5ng^!E^K#jU1k@CnmcXLELj_RWUXEC(F2 z;x56B5`hV#BR9u}$w6@lHn#D`8-As!HfL|M$C}lP;}^V?FS@Q=A2hc^n_Yw+<4u4l z=`=)I(U;Wh>eb27xayFjJdsgwlPQfjf)c#2P&gYY{x!V$6>|e^ zka=$hBI)(Gp29U+8!{Ys(ft91NLG%+x@V*&5WvUHO85{%5nLCg-P$sqpXBOBbtlmC z=g-N+BaR76ZXy2kM}9Tojf;omIRfom3#dF*QqBY_3_Gk_5sHD1p;Q;_@9$U^URqnfhzT@1ld5Jr`p_F#81gN{RcbHBGABu)B0ftd3C6dRS z?o{9#v!Ey-jr80^#C?W=;D(VzesN!UrYgVxdEoayGXLxQeg7l#zvTBno8SM$SAbZv z`Qz>XJM+Jr2OIfc2Y4l%{QhST<$})V;?Vq)!p*r6-}rq*#ET8i1U%OisR^Y0m-!!0 zBLAaNZ^`@*Y5(IZz#eh`-#@Q@iEGQ&e=c*qP7nc?xHWOzIz+x>^n2$4w{|723e-%fO}9Iz^+ z7b~sf_}C!TVF_Om8XM0?X`z)&8nw0R7vv&aGsS|~)L_=pNP>zoT@u5A@J&4K_yXn_ zf)dk-XcBuS<_l$uKd)t`!@klKdoiTWEVn3A3T}g3Ma1wXm`@FMHVC+DcMkCrc@OR4 zTb~3XZ_-zIxBT4k+q*8P>l2eB8=%SF?@j?OGg%2WRXP{S)OqDAHti Date: Fri, 5 Jul 2024 07:38:31 -0700 Subject: [PATCH 024/126] #134 - Add entry point to allow installing and running psyneulinkviewer after installation --- package/psyneulinkviewer/start.py | 8 ++------ package/setup.py | 2 +- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/package/psyneulinkviewer/start.py b/package/psyneulinkviewer/start.py index a673c3f7..3818f1d7 100644 --- a/package/psyneulinkviewer/start.py +++ b/package/psyneulinkviewer/start.py @@ -120,9 +120,7 @@ def get_latest_release(installation_path): os.remove(symlink) os.symlink(application, symlink) result = subprocess.run( - [symlink], - capture_output = True, - text = True + [symlink] ) except OSError as e: logging.error("Error applying symlin %f ", e) @@ -141,9 +139,7 @@ def prerequisites(): check_psyneulink() if os.path.islink(symlink): result = subprocess.run( - [symlink], - capture_output = True, - text = True + [symlink] ) else: get_latest_release(os.path.dirname(os.path.realpath(__file__))) diff --git a/package/setup.py b/package/setup.py index f11266a3..4755485b 100644 --- a/package/setup.py +++ b/package/setup.py @@ -160,7 +160,7 @@ def run(self): setup( name="psyneulinkview", - version="0.0.5", + version="0.0.1", setup_requires=['requests'], entry_points={ 'console_scripts': [ From 4e1479140018e9b8e91f9c4e337759d3ea5c72f5 Mon Sep 17 00:00:00 2001 From: Jesus M Date: Fri, 5 Jul 2024 15:16:31 -0700 Subject: [PATCH 025/126] Update README.md --- package/README.md | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/package/README.md b/package/README.md index bfd7db8b..b7528eb7 100644 --- a/package/README.md +++ b/package/README.md @@ -1,4 +1,4 @@ -# PsyNeuLinkView Package +# PsyNeuLinkView Package Building To build pip package ``` @@ -6,18 +6,24 @@ cd package python3 -m build ``` -To pip install package created in previous step +To upload to distribution server ``` -python3 -m pip install --no-index --find-links=package_directory_path + "/dist" psyneulinkview +twine upload dist/* ``` -To run psyneulinkviewer +To pip install local package created in previous steps ``` -/usr/local/bin/psyneulinkviewer +python3 -m pip install --no-index --find-links=package_directory_path + "/dist" psyneulinkview ``` -or +# PsyNeuLinkView Installing from PyPI + +To install from PyPi +``` +pip install psyneulinkview --extra-index-url https://pypi.org/project/psyneulinkview +``` +To run psyneulinkviewer ``` psyneulinkviewer -``` \ No newline at end of file +``` From b481c429403abba3e38789e2ad7d5de9b083fd5c Mon Sep 17 00:00:00 2001 From: Jesus M Date: Fri, 12 Jul 2024 00:52:08 -0700 Subject: [PATCH 026/126] Update README.md --- package/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/README.md b/package/README.md index b7528eb7..b3918df8 100644 --- a/package/README.md +++ b/package/README.md @@ -6,7 +6,7 @@ cd package python3 -m build ``` -To upload to distribution server +To upload to distribution server. You will need token shared privately. ``` twine upload dist/* ``` From 8cf1deee79c6d8fbc910b3359a186a65379f0fbe Mon Sep 17 00:00:00 2001 From: Dario Del Piano Date: Thu, 25 Jul 2024 16:45:15 +0200 Subject: [PATCH 027/126] adding release actions --- .github/workflows/build.yml | 12 --------- .github/workflows/release.yml | 49 +++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 12 deletions(-) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a697f657..5819b032 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -37,15 +37,3 @@ jobs: run: yarn osx - name: package run: tar -czf osx.tar.gz ./psyneulinkviewer-darwin-x64 - - # build_on_win: - # runs-on: windows-latest - # steps: - # - uses: actions/checkout@v2 - # - uses: actions/setup-node@master - # with: - # node-version: 14 - # - name: install dependencies - # run: npm install - # - name: build - # run: npm run make diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..73b86788 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,49 @@ +name: Build +on: [push, pull_request] + +jobs: + build_on_linux: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@master + with: + node-version: 18.19 + - name: install meta-diagram + run: bash installation.sh -i + - name: install dependencies + run: yarn + - name: build + run: yarn linux64 + - name: package + run: tar -czf linux.tar.gz ./psyneulinkviewer-linux-x64 + - name: release + uses: softprops/action-gh-release@v2 + if: startsWith(github.ref, 'refs/tags/') + with: + files: linux.tar.gz + + build_on_mac: + runs-on: macos-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@master + with: + node-version: 18.19 + - name: create conda symlink + run: wget https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh -O ~/miniconda.sh && bash ~/miniconda.sh -b -p $HOME/miniconda && source $HOME/miniconda/bin/activate && conda init + - name: extra steps + run: source $HOME/miniconda/bin/activate && conda --version + - name: install meta-diagram + run: source $HOME/miniconda/bin/activate && bash installation.sh -i + - name: install dependencies + run: yarn + - name: build + run: yarn osx + - name: package + run: tar -czf osx.tar.gz ./psyneulinkviewer-darwin-x64 + - name: release + uses: softprops/action-gh-release@v2 + if: startsWith(github.ref, 'refs/tags/') + with: + files: osx.tar.gz From 3ad185fd06e307c1fece23ac97ddd581eee78a26 Mon Sep 17 00:00:00 2001 From: Dario Del Piano Date: Thu, 25 Jul 2024 16:50:10 +0200 Subject: [PATCH 028/126] forgot release yml --- .github/workflows/release.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 73b86788..160d6bfb 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,5 +1,8 @@ -name: Build -on: [push, pull_request] +name: Release +on: + release: + types: + - created jobs: build_on_linux: From f22ff5fceb1721208c50f8da96a8e813439f1301 Mon Sep 17 00:00:00 2001 From: Dario Del Piano Date: Thu, 25 Jul 2024 17:07:22 +0200 Subject: [PATCH 029/126] modifying actions build --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5819b032..dd75f101 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,5 +1,5 @@ name: Build -on: [push, pull_request] +on: [pull_request] jobs: build_on_linux: From 274bd7d620f21a8758af7290b490a941f45c5a2e Mon Sep 17 00:00:00 2001 From: jrmartin Date: Fri, 26 Jul 2024 11:12:51 +0200 Subject: [PATCH 030/126] #PSYNEU-136 - Conda installation as part of pip install process --- .../build/lib/psyneulinkviewer/__init__.py | 0 package/build/lib/psyneulinkviewer/conda.py | 71 ++++++++ package/build/lib/psyneulinkviewer/start.py | 151 ++++++++++++++++++ package/configuration.py | 15 ++ package/psyneulinkviewer/conda.py | 72 +++++++++ package/requirements.txt | 2 + package/setup.py | 43 +++-- 7 files changed, 331 insertions(+), 23 deletions(-) create mode 100644 package/build/lib/psyneulinkviewer/__init__.py create mode 100644 package/build/lib/psyneulinkviewer/conda.py create mode 100644 package/build/lib/psyneulinkviewer/start.py create mode 100644 package/configuration.py create mode 100644 package/psyneulinkviewer/conda.py create mode 100644 package/requirements.txt diff --git a/package/build/lib/psyneulinkviewer/__init__.py b/package/build/lib/psyneulinkviewer/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/package/build/lib/psyneulinkviewer/conda.py b/package/build/lib/psyneulinkviewer/conda.py new file mode 100644 index 00000000..8ba6afe3 --- /dev/null +++ b/package/build/lib/psyneulinkviewer/conda.py @@ -0,0 +1,71 @@ +import re +import json +import platform +import os +import sys +import subprocess +import logging +import importlib.util +import tarfile +import atexit +import configuration +import wget +import platform +from setuptools import setup, find_packages +from setuptools.command.install import install +from packaging.version import Version + +logger = logging.getLogger(__name__) +logging.basicConfig(level=logging.INFO) + +def activate_env(): + logging.info("Creating conda ") + subprocess.run(configuration.create_env, shell=True) + + logging.info("Activating conda ") + subprocess.run(configuration.activate_env, shell=True) + +def install_conda(): + if os.name == 'posix': + bash_file = wget.download(configuration.linux_conda_bash, out="psyneulinkviewer") + elif platform.system() == 'Darwin': + bash_file = wget.download(configuration.mac_conda_bashf) + + logging.info("Installing conda %s", bash_file) + logging.info(bash_file) + subprocess.run("chmod +x " + bash_file, shell=True) + subprocess.run(bash_file + " -b -u -p ~/miniconda3", shell=True) + + activate_env() + logging.info("Clean up ") + subprocess.run("rm -rf " + bash_file, shell=True) + + +def check_conda_installation(): + conda_version = subprocess.run( + ["conda", "--version"], + capture_output = True, + text = True + ).stdout + if conda_version: + conda_version = conda_version.split(" ")[1] + logging.info("conda version %s", conda_version) + + if conda_version is not None: + logging.info("Conda not installed") + install_conda() + + if Version(conda_version) > Version(configuration.conda_required_version): + logging.info("Conda version exists and valid, %s", conda_version) + else: + logging.error("Conda version not up to date, update required"); + + envs = subprocess.run( + ["conda", "env","list"], + capture_output = True, + text = True + ).stdout.splitlines() + active_env = list(filter(lambda s: '*' in str(s), envs))[0] + env_name = str(active_env).split()[0] + if env_name is not None: + logging.info("Conda environment foudn and activated%s", env_name) \ No newline at end of file diff --git a/package/build/lib/psyneulinkviewer/start.py b/package/build/lib/psyneulinkviewer/start.py new file mode 100644 index 00000000..3818f1d7 --- /dev/null +++ b/package/build/lib/psyneulinkviewer/start.py @@ -0,0 +1,151 @@ +import re +import json +import platform +import os +import sys +import subprocess +import logging +import importlib.util +import tarfile +from setuptools import setup, find_packages +from setuptools.command.install import install + +logger = logging.getLogger(__name__) +logging.basicConfig(level=logging.INFO) + +graphviz = "graphviz" +psyneulink = "psyneulink" +symlink = "/usr/local/bin/psyneulinkviewer" + +def check_os(): + if os.name == 'nt': + sys.exit('Windows is not supported') + else: + logging.info("OS version supported") + +def check_python(): + if not sys.version_info.major == 3 and not sys.version_info.minor == 6 : + logging.error('Python version not supported, 3.11 is required. %f' , sys.version_info) + sys.exit('Python version not supported, 3.11 is required.') + else: + logging.info("Python version is supported") + +def check_conda(): + result = subprocess.run( + ["conda", "--version"], + capture_output = True, + text = True + ) + logging.info("conda version %s", result.stdout) + +def check_rosetta(): + if sys.platform == "darwin": + result = subprocess.run( + ["rosseta", "--version"], + capture_output = True, + text = True + ) + logging.info("rosseta version %s", result.stdout) + +def check_graphviz(): + if importlib.util.find_spec(graphviz) is None: + logging.error(graphviz +" is not installed, installing") + result = subprocess.run( + ["pip", "install", "graphviz"], + capture_output = True, + text = True + ) + else: + logging.info(graphviz +" is installed") + +def check_psyneulink(): + if importlib.util.find_spec(psyneulink) is None: + logging.error(psyneulink +" is not installed, installing") + result = subprocess.run( + ["pip", "install", "psyneulink"], + capture_output = True, + text = True + ) + else: + logging.info(psyneulink +" is installed") + + +def get_filename_from_cd(cd): + """ + Get filename from content-disposition + """ + if not cd: + return None + fname = re.findall('filename=(.+)', cd) + if len(fname) == 0: + return None + return fname[0] + +def get_latest_release(installation_path): + import requests + + url = 'https://api.github.com/repos/MetaCell/PsyNeuLinkView/releases' + headers = {'Accept': 'application/vnd.github+json','Authorization': 'Bearer JWT', 'X-GitHub-Api-Version' : '2022-11-28'} + r = requests.get(url, allow_redirects=True) + releases = json.loads(r.text) + assets = releases[0]["assets"] + + target_release = None + for asset in assets : + if platform.system().lower() in asset['name'] : + target_release = asset["browser_download_url"] + + logging.info("System detected %s :", platform.system()) + logging.info("Target release url found %s :", target_release) + logging.info("Downloading release to %s...", installation_path) + release_download = requests.get(target_release, allow_redirects=True) + + filename = get_filename_from_cd(release_download.headers.get('content-disposition')) + tar_location = os.path.join(installation_path, filename) + logging.info("Writing release to %s...", tar_location) + open(tar_location, 'wb').write(release_download.content) + + logging.info("Opening compressed file %s", filename) + tar = tarfile.open(tar_location) + extract_location = "/usr/local/bin" + tar.extractall(path=extract_location) + tar.close() + logging.info("Release file uncompressed at : %s", extract_location) + + application = os.path.join(extract_location, "psyneulinkviewer-linux-x64/psyneulinkviewer") + logging.info("Creating symlink at : %s", symlink) + logging.info("Application at : %s", application) + try: + if os.path.islink(symlink): + os.remove(symlink) + os.symlink(application, symlink) + result = subprocess.run( + [symlink] + ) + except OSError as e: + logging.error("Error applying symlin %f ", e) + + logging.info("Symlink created") + + logging.info("*** To launch the application run : **** ") + logging.info(" %s " ,symlink) + +def prerequisites(): + check_os() + check_python() + check_conda() + check_rosetta() + check_graphviz() + check_psyneulink() + if os.path.islink(symlink): + result = subprocess.run( + [symlink] + ) + else: + get_latest_release(os.path.dirname(os.path.realpath(__file__))) + +def main(): + prerequisites() + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/package/configuration.py b/package/configuration.py new file mode 100644 index 00000000..24a48df7 --- /dev/null +++ b/package/configuration.py @@ -0,0 +1,15 @@ +graphviz = "graphviz" +psyneulink = "psyneulink" +conda_required_version = "4.9.1" + +releases_url = 'https://api.github.com/repos/MetaCell/PsyNeuLinkView/releases' +application_url = "psyneulinkviewer-linux-x64/psyneulinkviewer" +symlink = "/usr/local/bin/psyneulinkviewer" +extract_location = "/usr/local/bin" + +linux_conda_bash = "https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh" +mac_conda_bash = "https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh" + +env_name = "psyneulinkviewer" +create_env = "conda create --name " + env_name +activate_env = "conda activate " + env_name diff --git a/package/psyneulinkviewer/conda.py b/package/psyneulinkviewer/conda.py new file mode 100644 index 00000000..db0e7390 --- /dev/null +++ b/package/psyneulinkviewer/conda.py @@ -0,0 +1,72 @@ +import re +import json +import platform +import os +import sys +import subprocess +import logging +import importlib.util +import tarfile +import atexit +import configuration +import wget +import platform +import requests +from setuptools import setup, find_packages +from setuptools.command.install import install +from packaging.version import Version + +logger = logging.getLogger(__name__) +logging.basicConfig(level=logging.INFO) + +def activate_env(): + logging.info("Creating conda ") + subprocess.run(configuration.create_env, shell=True) + + logging.info("Activating conda ") + subprocess.run(configuration.activate_env, shell=True) + +def install_conda(): + if os.name == 'posix': + bash_file = requests.get(configuration.linux_conda_bash) + elif platform.system() == 'Darwin': + bash_file = wget.download(configuration.mac_conda_bashf) + + logging.info("Installing conda %s", bash_file) + logging.info(bash_file) + subprocess.run("chmod +x " + bash_file, shell=True) + subprocess.run(bash_file + " -b -u -p ~/miniconda3", shell=True) + + activate_env() + logging.info("Clean up ") + subprocess.run("rm -rf " + bash_file, shell=True) + + +def check_conda_installation(): + conda_version = subprocess.run( + ["conda", "--version"], + capture_output = True, + text = True + ).stdout + if conda_version: + conda_version = conda_version.split(" ")[1] + logging.info("conda version %s", conda_version) + + if conda_version is not None: + logging.info("Conda not installed") + install_conda() + + if Version(conda_version) > Version(configuration.conda_required_version): + logging.info("Conda version exists and valid, %s", conda_version) + else: + logging.error("Conda version not up to date, update required"); + + envs = subprocess.run( + ["conda", "env","list"], + capture_output = True, + text = True + ).stdout.splitlines() + active_env = list(filter(lambda s: '*' in str(s), envs))[0] + env_name = str(active_env).split()[0] + if env_name is not None: + logging.info("Conda environment foudn and activated%s", env_name) \ No newline at end of file diff --git a/package/requirements.txt b/package/requirements.txt new file mode 100644 index 00000000..a379fde6 --- /dev/null +++ b/package/requirements.txt @@ -0,0 +1,2 @@ +wget==3.2 +packaging \ No newline at end of file diff --git a/package/setup.py b/package/setup.py index 4755485b..0fe38785 100644 --- a/package/setup.py +++ b/package/setup.py @@ -10,13 +10,13 @@ import atexit from setuptools import setup, find_packages from setuptools.command.install import install +from packaging.version import Version +from psyneulinkviewer.conda import check_conda_installation +import configuration logger = logging.getLogger(__name__) logging.basicConfig(level=logging.INFO) -graphviz = "graphviz" -psyneulink = "psyneulink" - def check_os(): if os.name == 'nt': sys.exit('Windows is not supported') @@ -30,14 +30,6 @@ def check_python(): else: logging.info("Python version is supported") -def check_conda(): - result = subprocess.run( - ["conda", "--version"], - capture_output = True, - text = True - ) - logging.info("conda version %s", result.stdout) - def check_rosetta(): if sys.platform == "darwin": result = subprocess.run( @@ -48,26 +40,26 @@ def check_rosetta(): logging.info("rosseta version %s", result.stdout) def check_graphviz(): - if importlib.util.find_spec(graphviz) is None: - logging.error(graphviz +" is not installed, installing") + if importlib.util.find_spec(configuration.graphviz) is None: + logging.error(configuration.graphviz +" is not installed, installing") result = subprocess.run( ["pip", "install", "graphviz"], capture_output = True, text = True ) else: - logging.info(graphviz +" is installed") + logging.info(configuration.graphviz +" is installed") def check_psyneulink(): - if importlib.util.find_spec(psyneulink) is None: - logging.error(psyneulink +" is not installed, installing") + if importlib.util.find_spec(configuration.psyneulink) is None: + logging.error(configuration.psyneulink +" is not installed, installing") result = subprocess.run( ["pip", "install", "psyneulink"], capture_output = True, text = True ) else: - logging.info(psyneulink +" is installed") + logging.info(configuration.psyneulink +" is installed") def get_filename_from_cd(cd): @@ -84,9 +76,8 @@ def get_filename_from_cd(cd): def get_latest_release(installation_path): import requests - url = 'https://api.github.com/repos/MetaCell/PsyNeuLinkView/releases' headers = {'Accept': 'application/vnd.github+json','Authorization': 'Bearer JWT', 'X-GitHub-Api-Version' : '2022-11-28'} - r = requests.get(url, allow_redirects=True) + r = requests.get(configuration.releases_url, allow_redirects=True) releases = json.loads(r.text) assets = releases[0]["assets"] @@ -107,13 +98,13 @@ def get_latest_release(installation_path): logging.info("Opening compressed file %s", filename) tar = tarfile.open(tar_location) - extract_location = "/usr/local/bin" + extract_location = configuration.extract_location tar.extractall(path=extract_location) tar.close() logging.info("Release file uncompressed at : %s", extract_location) - application = os.path.join(extract_location, "psyneulinkviewer-linux-x64/psyneulinkviewer") - symlink = "/usr/local/bin/psyneulinkviewer" + application = os.path.join(extract_location, configuration.application_url) + symlink = configuration.symlink logging.info("Creating symlink at : %s", symlink) logging.info("Application at : %s", application) try: @@ -131,7 +122,8 @@ def get_latest_release(installation_path): def prerequisites(): check_os() check_python() - check_conda() + check_conda_installation() + #Install package requirements here check_rosetta() check_graphviz() check_psyneulink() @@ -155,6 +147,8 @@ def finalize_options(self): def run(self): global path + prerequisites() + print("pre") path = self.path # will be 1 or None install.run(self) @@ -166,5 +160,8 @@ def run(self): 'console_scripts': [ 'psyneulinkviewer = psyneulinkviewer.start:main', ] + }, + cmdclass={ + 'install': InstallCommand } ) \ No newline at end of file From 0cc490b9b90d8b775b9f5d304043e3ba3b78ab69 Mon Sep 17 00:00:00 2001 From: jrmartin Date: Fri, 26 Jul 2024 11:16:56 +0200 Subject: [PATCH 031/126] #PSYNEU-136 - Clean up logs --- package/psyneulinkviewer/conda.py | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/package/psyneulinkviewer/conda.py b/package/psyneulinkviewer/conda.py index db0e7390..10fe748b 100644 --- a/package/psyneulinkviewer/conda.py +++ b/package/psyneulinkviewer/conda.py @@ -1,13 +1,7 @@ -import re -import json import platform import os -import sys import subprocess import logging -import importlib.util -import tarfile -import atexit import configuration import wget import platform @@ -50,16 +44,17 @@ def check_conda_installation(): ).stdout if conda_version: conda_version = conda_version.split(" ")[1] - logging.info("conda version %s", conda_version) + logging.info("Conda version detected : %s", conda_version) if conda_version is not None: - logging.info("Conda not installed") + logging.info("Conda ist not installed, downloading conda installation.") install_conda() if Version(conda_version) > Version(configuration.conda_required_version): logging.info("Conda version exists and valid, %s", conda_version) else: - logging.error("Conda version not up to date, update required"); + logging.error("Conda version not up to date, update required") + install_conda() envs = subprocess.run( ["conda", "env","list"], @@ -69,4 +64,4 @@ def check_conda_installation(): active_env = list(filter(lambda s: '*' in str(s), envs))[0] env_name = str(active_env).split()[0] if env_name is not None: - logging.info("Conda environment foudn and activated%s", env_name) \ No newline at end of file + logging.info("Conda environment found and activated %s", env_name) \ No newline at end of file From 2fa6aa9ecf4c6f4786931cd893d9a7acc931fe27 Mon Sep 17 00:00:00 2001 From: jrmartin Date: Fri, 26 Jul 2024 11:35:12 +0200 Subject: [PATCH 032/126] #PSYNEU-136 - Clean up conda installation process --- package/psyneulinkviewer/conda.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/package/psyneulinkviewer/conda.py b/package/psyneulinkviewer/conda.py index 10fe748b..ae75f62c 100644 --- a/package/psyneulinkviewer/conda.py +++ b/package/psyneulinkviewer/conda.py @@ -1,11 +1,11 @@ import platform import os +import sys import subprocess import logging import configuration import wget import platform -import requests from setuptools import setup, find_packages from setuptools.command.install import install from packaging.version import Version @@ -22,7 +22,7 @@ def activate_env(): def install_conda(): if os.name == 'posix': - bash_file = requests.get(configuration.linux_conda_bash) + bash_file = wget.download(configuration.linux_conda_bash, out="psyneulinkviewer") elif platform.system() == 'Darwin': bash_file = wget.download(configuration.mac_conda_bashf) @@ -47,8 +47,14 @@ def check_conda_installation(): logging.info("Conda version detected : %s", conda_version) if conda_version is not None: - logging.info("Conda ist not installed, downloading conda installation.") - install_conda() + logging.info("Conda is not installed") + user_input = input("Do you want to continue with conda installation? (yes/no): ") + if user_input.lower() in ["yes", "y"]: + logging.info("Continuing with conda installation...") + install_conda() + else: + logging.error("Exiting, conda must be installed to continue...") + sys.exit() if Version(conda_version) > Version(configuration.conda_required_version): logging.info("Conda version exists and valid, %s", conda_version) From 6dee38c4caa31b86e17f65081af163505b2bf634 Mon Sep 17 00:00:00 2001 From: jrmartin Date: Fri, 26 Jul 2024 11:38:01 +0200 Subject: [PATCH 033/126] #PSYNEU-137 - Install rosetta as part of pip installation process --- package/configuration.py | 2 ++ package/psyneulinkviewer/rosetta.py | 37 +++++++++++++++++++++++++++++ package/setup.py | 9 ------- 3 files changed, 39 insertions(+), 9 deletions(-) create mode 100644 package/psyneulinkviewer/rosetta.py diff --git a/package/configuration.py b/package/configuration.py index 24a48df7..42ca0154 100644 --- a/package/configuration.py +++ b/package/configuration.py @@ -13,3 +13,5 @@ env_name = "psyneulinkviewer" create_env = "conda create --name " + env_name activate_env = "conda activate " + env_name + +rosetta_installation = "softwareupdate --install-rosetta --agree-to-license" \ No newline at end of file diff --git a/package/psyneulinkviewer/rosetta.py b/package/psyneulinkviewer/rosetta.py new file mode 100644 index 00000000..10c630db --- /dev/null +++ b/package/psyneulinkviewer/rosetta.py @@ -0,0 +1,37 @@ +import platform +import subprocess +import logging +import configuration +import platform +import sys +from setuptools.command.install import install +from packaging.version import Version + +logger = logging.getLogger(__name__) +logging.basicConfig(level=logging.INFO) + +def install_rosetta(): + if platform.system() == 'Darwin': + logging.info("Installing rosetta") + subprocess.run(configuration.rosetta_installation, shell=True) + +def check_conda_installation(): + if platform.system() == 'Darwin': + rosetta_version = subprocess.run( + ["rosseta", "--version"], + capture_output = True, + text = True + ).stdout + if rosetta_version: + rosetta_version = rosetta_version.split(" ")[1] + logging.info("Rosseta version detected : %s", rosetta_version) + + if rosetta_version is None: + logging.info("Rosetta ist not installed") + user_input = input("Do you want to continue with rosetta installation? (yes/no): ") + if user_input.lower() in ["yes", "y"]: + logging.info("Continuing with rosetta installation...") + install_rosetta() + else: + logging.error("Exiting, rosetta must be installed to continue...") + sys.exit() diff --git a/package/setup.py b/package/setup.py index 0fe38785..15e1d302 100644 --- a/package/setup.py +++ b/package/setup.py @@ -30,15 +30,6 @@ def check_python(): else: logging.info("Python version is supported") -def check_rosetta(): - if sys.platform == "darwin": - result = subprocess.run( - ["rosseta", "--version"], - capture_output = True, - text = True - ) - logging.info("rosseta version %s", result.stdout) - def check_graphviz(): if importlib.util.find_spec(configuration.graphviz) is None: logging.error(configuration.graphviz +" is not installed, installing") From b3f5c44168d56ef0364e2fdf9281149b7b81ec92 Mon Sep 17 00:00:00 2001 From: jrmartin Date: Fri, 26 Jul 2024 16:24:56 +0200 Subject: [PATCH 034/126] #PSYNEU-137 - Cleanup check --- package/psyneulinkviewer/conda.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/psyneulinkviewer/conda.py b/package/psyneulinkviewer/conda.py index ae75f62c..540ad748 100644 --- a/package/psyneulinkviewer/conda.py +++ b/package/psyneulinkviewer/conda.py @@ -46,7 +46,7 @@ def check_conda_installation(): conda_version = conda_version.split(" ")[1] logging.info("Conda version detected : %s", conda_version) - if conda_version is not None: + if conda_version is None: logging.info("Conda is not installed") user_input = input("Do you want to continue with conda installation? (yes/no): ") if user_input.lower() in ["yes", "y"]: From 9fb06a8756f3fd56ac39a3d7fff0cb2857bfface Mon Sep 17 00:00:00 2001 From: jrmartin Date: Fri, 26 Jul 2024 16:43:44 +0200 Subject: [PATCH 035/126] #PSYNEU-137 - Fix import --- package/setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/package/setup.py b/package/setup.py index 15e1d302..ec48215d 100644 --- a/package/setup.py +++ b/package/setup.py @@ -12,6 +12,7 @@ from setuptools.command.install import install from packaging.version import Version from psyneulinkviewer.conda import check_conda_installation +from psyneulinkviewer.conda import check_rosetta import configuration logger = logging.getLogger(__name__) From 5d6d8ec7e2b2345e40691ea1f6e1a9da6554ede1 Mon Sep 17 00:00:00 2001 From: jrmartin Date: Fri, 26 Jul 2024 16:50:55 +0200 Subject: [PATCH 036/126] #PSYNEU-137 - Fix rosetta installation --- package/psyneulinkviewer/rosetta.py | 2 +- package/setup.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/psyneulinkviewer/rosetta.py b/package/psyneulinkviewer/rosetta.py index 10c630db..d710c082 100644 --- a/package/psyneulinkviewer/rosetta.py +++ b/package/psyneulinkviewer/rosetta.py @@ -15,7 +15,7 @@ def install_rosetta(): logging.info("Installing rosetta") subprocess.run(configuration.rosetta_installation, shell=True) -def check_conda_installation(): +def check_rosetta_installation(): if platform.system() == 'Darwin': rosetta_version = subprocess.run( ["rosseta", "--version"], diff --git a/package/setup.py b/package/setup.py index ec48215d..03ed4cb1 100644 --- a/package/setup.py +++ b/package/setup.py @@ -12,7 +12,7 @@ from setuptools.command.install import install from packaging.version import Version from psyneulinkviewer.conda import check_conda_installation -from psyneulinkviewer.conda import check_rosetta +from psyneulinkviewer.rosetta import check_rosetta_installation import configuration logger = logging.getLogger(__name__) @@ -116,7 +116,7 @@ def prerequisites(): check_python() check_conda_installation() #Install package requirements here - check_rosetta() + check_rosetta_installation() check_graphviz() check_psyneulink() get_latest_release(os.path.dirname(os.path.realpath(__file__))) From 300f15a768b80e28fe3ee21d5149cc823b54e91d Mon Sep 17 00:00:00 2001 From: jrmartin Date: Fri, 26 Jul 2024 16:53:55 +0200 Subject: [PATCH 037/126] #PSYNEU-135 - Check node version and install if not present --- package/configuration.py | 6 ++++- package/psyneulinkviewer/node.py | 38 ++++++++++++++++++++++++++++++++ package/setup.py | 4 +++- 3 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 package/psyneulinkviewer/node.py diff --git a/package/configuration.py b/package/configuration.py index 42ca0154..538bb202 100644 --- a/package/configuration.py +++ b/package/configuration.py @@ -14,4 +14,8 @@ create_env = "conda create --name " + env_name activate_env = "conda activate " + env_name -rosetta_installation = "softwareupdate --install-rosetta --agree-to-license" \ No newline at end of file +rosetta_installation = "softwareupdate --install-rosetta --agree-to-license" + +conda_forge = "conda config --add channels conda-forge" +node_installation = "conda install nodejs" +node_required_version = "4.19.0" diff --git a/package/psyneulinkviewer/node.py b/package/psyneulinkviewer/node.py new file mode 100644 index 00000000..93621df7 --- /dev/null +++ b/package/psyneulinkviewer/node.py @@ -0,0 +1,38 @@ +import sys +import subprocess +import logging +import configuration +from setuptools.command.install import install +from packaging.version import Version + +logger = logging.getLogger(__name__) +logging.basicConfig(level=logging.INFO) + +def install_node(): + logging.info("Installing node") + subprocess.run(configuration.conda_forge, shell=True) + subprocess.run(configuration.node_installation, shell=True) + +def check_node_installation(): + node_version = subprocess.run( + ["node", "--version"], + capture_output = True, + text = True + ).stdout + logging.info("Node version detected : %s", node_version) + + if node_version is None: + logging.info("Node is not installed") + user_input = input("Do you want to continue with node installation? (yes/no): ") + if user_input.lower() in ["yes", "y"]: + logging.info("Continuing with node installation...") + install_node() + else: + logging.error("Exiting, node must be installed to continue...") + sys.exit() + + if Version(node_version) > Version(configuration.node_required_version): + logging.info("Node version exists and valid, %s", node_version) + else: + logging.error("Node version not up to date, update required") + install_node() \ No newline at end of file diff --git a/package/setup.py b/package/setup.py index 03ed4cb1..74e1865d 100644 --- a/package/setup.py +++ b/package/setup.py @@ -13,6 +13,7 @@ from packaging.version import Version from psyneulinkviewer.conda import check_conda_installation from psyneulinkviewer.rosetta import check_rosetta_installation +from psyneulinkviewer.node import check_node_installation import configuration logger = logging.getLogger(__name__) @@ -114,9 +115,10 @@ def get_latest_release(installation_path): def prerequisites(): check_os() check_python() - check_conda_installation() + #check_conda_installation() #Install package requirements here check_rosetta_installation() + check_node_installation() check_graphviz() check_psyneulink() get_latest_release(os.path.dirname(os.path.realpath(__file__))) From f7477fbab1c9b1eae2f08281c62c23f6942d6742 Mon Sep 17 00:00:00 2001 From: jrmartin Date: Fri, 26 Jul 2024 16:54:54 +0200 Subject: [PATCH 038/126] #PSYNEU-136 - Create conda with python version 3.11 --- package/configuration.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/configuration.py b/package/configuration.py index 24a48df7..85303b80 100644 --- a/package/configuration.py +++ b/package/configuration.py @@ -11,5 +11,5 @@ mac_conda_bash = "https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh" env_name = "psyneulinkviewer" -create_env = "conda create --name " + env_name +create_env = "conda create --name " + env_name + " python=3.11" activate_env = "conda activate " + env_name From 54ff1563cb8407cdd462b1c4b155d560646d1adb Mon Sep 17 00:00:00 2001 From: jrmartin Date: Fri, 26 Jul 2024 17:02:28 +0200 Subject: [PATCH 039/126] #PSYNEU-135 - Uncoment line for conda installation --- package/setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/setup.py b/package/setup.py index 74e1865d..0cff02d7 100644 --- a/package/setup.py +++ b/package/setup.py @@ -115,7 +115,7 @@ def get_latest_release(installation_path): def prerequisites(): check_os() check_python() - #check_conda_installation() + check_conda_installation() #Install package requirements here check_rosetta_installation() check_node_installation() From 1c2314c5d380cdb77c376fe1b88671867178bf2b Mon Sep 17 00:00:00 2001 From: jrmartin Date: Fri, 26 Jul 2024 18:23:35 +0200 Subject: [PATCH 040/126] #PSYNEU-134 - Use cmdClass to install prerequesites during installation process instead of after --- package/setup.py | 141 ++--------------------------------------------- 1 file changed, 5 insertions(+), 136 deletions(-) diff --git a/package/setup.py b/package/setup.py index 4755485b..ad636475 100644 --- a/package/setup.py +++ b/package/setup.py @@ -1,142 +1,12 @@ -import re -import json -import platform -import os -import sys -import subprocess import logging -import importlib.util -import tarfile -import atexit +import os from setuptools import setup, find_packages from setuptools.command.install import install +from psyneulinkviewer.start import prerequisites logger = logging.getLogger(__name__) logging.basicConfig(level=logging.INFO) -graphviz = "graphviz" -psyneulink = "psyneulink" - -def check_os(): - if os.name == 'nt': - sys.exit('Windows is not supported') - else: - logging.info("OS version supported") - -def check_python(): - if not sys.version_info.major == 3 and not sys.version_info.minor == 6 : - logging.error('Python version not supported, 3.11 is required. %f' , sys.version_info) - sys.exit('Python version not supported, 3.11 is required.') - else: - logging.info("Python version is supported") - -def check_conda(): - result = subprocess.run( - ["conda", "--version"], - capture_output = True, - text = True - ) - logging.info("conda version %s", result.stdout) - -def check_rosetta(): - if sys.platform == "darwin": - result = subprocess.run( - ["rosseta", "--version"], - capture_output = True, - text = True - ) - logging.info("rosseta version %s", result.stdout) - -def check_graphviz(): - if importlib.util.find_spec(graphviz) is None: - logging.error(graphviz +" is not installed, installing") - result = subprocess.run( - ["pip", "install", "graphviz"], - capture_output = True, - text = True - ) - else: - logging.info(graphviz +" is installed") - -def check_psyneulink(): - if importlib.util.find_spec(psyneulink) is None: - logging.error(psyneulink +" is not installed, installing") - result = subprocess.run( - ["pip", "install", "psyneulink"], - capture_output = True, - text = True - ) - else: - logging.info(psyneulink +" is installed") - - -def get_filename_from_cd(cd): - """ - Get filename from content-disposition - """ - if not cd: - return None - fname = re.findall('filename=(.+)', cd) - if len(fname) == 0: - return None - return fname[0] - -def get_latest_release(installation_path): - import requests - - url = 'https://api.github.com/repos/MetaCell/PsyNeuLinkView/releases' - headers = {'Accept': 'application/vnd.github+json','Authorization': 'Bearer JWT', 'X-GitHub-Api-Version' : '2022-11-28'} - r = requests.get(url, allow_redirects=True) - releases = json.loads(r.text) - assets = releases[0]["assets"] - - target_release = None - for asset in assets : - if platform.system().lower() in asset['name'] : - target_release = asset["browser_download_url"] - - logging.info("System detected %s :", platform.system()) - logging.info("Target release url found %s :", target_release) - logging.info("Downloading release to %s...", installation_path) - release_download = requests.get(target_release, allow_redirects=True) - - filename = get_filename_from_cd(release_download.headers.get('content-disposition')) - tar_location = os.path.join(installation_path, filename) - logging.info("Writing release to %s...", tar_location) - open(tar_location, 'wb').write(release_download.content) - - logging.info("Opening compressed file %s", filename) - tar = tarfile.open(tar_location) - extract_location = "/usr/local/bin" - tar.extractall(path=extract_location) - tar.close() - logging.info("Release file uncompressed at : %s", extract_location) - - application = os.path.join(extract_location, "psyneulinkviewer-linux-x64/psyneulinkviewer") - symlink = "/usr/local/bin/psyneulinkviewer" - logging.info("Creating symlink at : %s", symlink) - logging.info("Application at : %s", application) - try: - if os.path.islink(symlink): - os.remove(symlink) - os.symlink(application, symlink) - except OSError as e: - logging.error("Error applying symlin %f ", e) - - logging.info("Symlink created") - - logging.info("*** To launch the application run : **** ") - logging.info(" %s " ,symlink) - -def prerequisites(): - check_os() - check_python() - check_conda() - check_rosetta() - check_graphviz() - check_psyneulink() - get_latest_release(os.path.dirname(os.path.realpath(__file__))) - class InstallCommand(install): user_options = install.user_options + [ ('path=', None, 'an option that takes a value') @@ -157,14 +27,13 @@ def run(self): global path path = self.path # will be 1 or None install.run(self) + prerequisites() setup( name="psyneulinkview", version="0.0.1", setup_requires=['requests'], - entry_points={ - 'console_scripts': [ - 'psyneulinkviewer = psyneulinkviewer.start:main', - ] + cmdclass={ + 'install': InstallCommand, } ) \ No newline at end of file From be43f51a8e6aaee454b92d739abc9a78a18a6881 Mon Sep 17 00:00:00 2001 From: jrmartin Date: Fri, 26 Jul 2024 18:30:42 +0200 Subject: [PATCH 041/126] #PSYNEU-136 - Update prerequesites in start.py file --- package/psyneulinkviewer/start.py | 49 +++++++++++-------------------- 1 file changed, 17 insertions(+), 32 deletions(-) diff --git a/package/psyneulinkviewer/start.py b/package/psyneulinkviewer/start.py index 3818f1d7..ee8fab25 100644 --- a/package/psyneulinkviewer/start.py +++ b/package/psyneulinkviewer/start.py @@ -7,16 +7,16 @@ import logging import importlib.util import tarfile +import atexit from setuptools import setup, find_packages from setuptools.command.install import install +from packaging.version import Version +from psyneulinkviewer.conda import check_conda_installation +import configuration logger = logging.getLogger(__name__) logging.basicConfig(level=logging.INFO) -graphviz = "graphviz" -psyneulink = "psyneulink" -symlink = "/usr/local/bin/psyneulinkviewer" - def check_os(): if os.name == 'nt': sys.exit('Windows is not supported') @@ -30,14 +30,6 @@ def check_python(): else: logging.info("Python version is supported") -def check_conda(): - result = subprocess.run( - ["conda", "--version"], - capture_output = True, - text = True - ) - logging.info("conda version %s", result.stdout) - def check_rosetta(): if sys.platform == "darwin": result = subprocess.run( @@ -48,26 +40,26 @@ def check_rosetta(): logging.info("rosseta version %s", result.stdout) def check_graphviz(): - if importlib.util.find_spec(graphviz) is None: - logging.error(graphviz +" is not installed, installing") + if importlib.util.find_spec(configuration.graphviz) is None: + logging.error(configuration.graphviz +" is not installed, installing") result = subprocess.run( ["pip", "install", "graphviz"], capture_output = True, text = True ) else: - logging.info(graphviz +" is installed") + logging.info(configuration.graphviz +" is installed") def check_psyneulink(): - if importlib.util.find_spec(psyneulink) is None: - logging.error(psyneulink +" is not installed, installing") + if importlib.util.find_spec(configuration.psyneulink) is None: + logging.error(configuration.psyneulink +" is not installed, installing") result = subprocess.run( ["pip", "install", "psyneulink"], capture_output = True, text = True ) else: - logging.info(psyneulink +" is installed") + logging.info(configuration.psyneulink +" is installed") def get_filename_from_cd(cd): @@ -84,9 +76,8 @@ def get_filename_from_cd(cd): def get_latest_release(installation_path): import requests - url = 'https://api.github.com/repos/MetaCell/PsyNeuLinkView/releases' headers = {'Accept': 'application/vnd.github+json','Authorization': 'Bearer JWT', 'X-GitHub-Api-Version' : '2022-11-28'} - r = requests.get(url, allow_redirects=True) + r = requests.get(configuration.releases_url, allow_redirects=True) releases = json.loads(r.text) assets = releases[0]["assets"] @@ -107,21 +98,19 @@ def get_latest_release(installation_path): logging.info("Opening compressed file %s", filename) tar = tarfile.open(tar_location) - extract_location = "/usr/local/bin" + extract_location = configuration.extract_location tar.extractall(path=extract_location) tar.close() logging.info("Release file uncompressed at : %s", extract_location) - application = os.path.join(extract_location, "psyneulinkviewer-linux-x64/psyneulinkviewer") + application = os.path.join(extract_location, configuration.application_url) + symlink = configuration.symlink logging.info("Creating symlink at : %s", symlink) logging.info("Application at : %s", application) try: if os.path.islink(symlink): os.remove(symlink) os.symlink(application, symlink) - result = subprocess.run( - [symlink] - ) except OSError as e: logging.error("Error applying symlin %f ", e) @@ -133,16 +122,12 @@ def get_latest_release(installation_path): def prerequisites(): check_os() check_python() - check_conda() + check_conda_installation() + #Install package requirements here check_rosetta() check_graphviz() check_psyneulink() - if os.path.islink(symlink): - result = subprocess.run( - [symlink] - ) - else: - get_latest_release(os.path.dirname(os.path.realpath(__file__))) + get_latest_release(os.path.dirname(os.path.realpath(__file__))) def main(): prerequisites() From fc52ef64370646c7110fd5e51b35edafb1788ee8 Mon Sep 17 00:00:00 2001 From: jrmartin Date: Fri, 26 Jul 2024 18:34:32 +0200 Subject: [PATCH 042/126] #PSYNEU-136 - Remove build folder --- .../build/lib/psyneulinkviewer/__init__.py | 0 package/build/lib/psyneulinkviewer/conda.py | 71 -------- package/build/lib/psyneulinkviewer/start.py | 151 ------------------ 3 files changed, 222 deletions(-) delete mode 100644 package/build/lib/psyneulinkviewer/__init__.py delete mode 100644 package/build/lib/psyneulinkviewer/conda.py delete mode 100644 package/build/lib/psyneulinkviewer/start.py diff --git a/package/build/lib/psyneulinkviewer/__init__.py b/package/build/lib/psyneulinkviewer/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/package/build/lib/psyneulinkviewer/conda.py b/package/build/lib/psyneulinkviewer/conda.py deleted file mode 100644 index 8ba6afe3..00000000 --- a/package/build/lib/psyneulinkviewer/conda.py +++ /dev/null @@ -1,71 +0,0 @@ -import re -import json -import platform -import os -import sys -import subprocess -import logging -import importlib.util -import tarfile -import atexit -import configuration -import wget -import platform -from setuptools import setup, find_packages -from setuptools.command.install import install -from packaging.version import Version - -logger = logging.getLogger(__name__) -logging.basicConfig(level=logging.INFO) - -def activate_env(): - logging.info("Creating conda ") - subprocess.run(configuration.create_env, shell=True) - - logging.info("Activating conda ") - subprocess.run(configuration.activate_env, shell=True) - -def install_conda(): - if os.name == 'posix': - bash_file = wget.download(configuration.linux_conda_bash, out="psyneulinkviewer") - elif platform.system() == 'Darwin': - bash_file = wget.download(configuration.mac_conda_bashf) - - logging.info("Installing conda %s", bash_file) - logging.info(bash_file) - subprocess.run("chmod +x " + bash_file, shell=True) - subprocess.run(bash_file + " -b -u -p ~/miniconda3", shell=True) - - activate_env() - logging.info("Clean up ") - subprocess.run("rm -rf " + bash_file, shell=True) - - -def check_conda_installation(): - conda_version = subprocess.run( - ["conda", "--version"], - capture_output = True, - text = True - ).stdout - if conda_version: - conda_version = conda_version.split(" ")[1] - logging.info("conda version %s", conda_version) - - if conda_version is not None: - logging.info("Conda not installed") - install_conda() - - if Version(conda_version) > Version(configuration.conda_required_version): - logging.info("Conda version exists and valid, %s", conda_version) - else: - logging.error("Conda version not up to date, update required"); - - envs = subprocess.run( - ["conda", "env","list"], - capture_output = True, - text = True - ).stdout.splitlines() - active_env = list(filter(lambda s: '*' in str(s), envs))[0] - env_name = str(active_env).split()[0] - if env_name is not None: - logging.info("Conda environment foudn and activated%s", env_name) \ No newline at end of file diff --git a/package/build/lib/psyneulinkviewer/start.py b/package/build/lib/psyneulinkviewer/start.py deleted file mode 100644 index 3818f1d7..00000000 --- a/package/build/lib/psyneulinkviewer/start.py +++ /dev/null @@ -1,151 +0,0 @@ -import re -import json -import platform -import os -import sys -import subprocess -import logging -import importlib.util -import tarfile -from setuptools import setup, find_packages -from setuptools.command.install import install - -logger = logging.getLogger(__name__) -logging.basicConfig(level=logging.INFO) - -graphviz = "graphviz" -psyneulink = "psyneulink" -symlink = "/usr/local/bin/psyneulinkviewer" - -def check_os(): - if os.name == 'nt': - sys.exit('Windows is not supported') - else: - logging.info("OS version supported") - -def check_python(): - if not sys.version_info.major == 3 and not sys.version_info.minor == 6 : - logging.error('Python version not supported, 3.11 is required. %f' , sys.version_info) - sys.exit('Python version not supported, 3.11 is required.') - else: - logging.info("Python version is supported") - -def check_conda(): - result = subprocess.run( - ["conda", "--version"], - capture_output = True, - text = True - ) - logging.info("conda version %s", result.stdout) - -def check_rosetta(): - if sys.platform == "darwin": - result = subprocess.run( - ["rosseta", "--version"], - capture_output = True, - text = True - ) - logging.info("rosseta version %s", result.stdout) - -def check_graphviz(): - if importlib.util.find_spec(graphviz) is None: - logging.error(graphviz +" is not installed, installing") - result = subprocess.run( - ["pip", "install", "graphviz"], - capture_output = True, - text = True - ) - else: - logging.info(graphviz +" is installed") - -def check_psyneulink(): - if importlib.util.find_spec(psyneulink) is None: - logging.error(psyneulink +" is not installed, installing") - result = subprocess.run( - ["pip", "install", "psyneulink"], - capture_output = True, - text = True - ) - else: - logging.info(psyneulink +" is installed") - - -def get_filename_from_cd(cd): - """ - Get filename from content-disposition - """ - if not cd: - return None - fname = re.findall('filename=(.+)', cd) - if len(fname) == 0: - return None - return fname[0] - -def get_latest_release(installation_path): - import requests - - url = 'https://api.github.com/repos/MetaCell/PsyNeuLinkView/releases' - headers = {'Accept': 'application/vnd.github+json','Authorization': 'Bearer JWT', 'X-GitHub-Api-Version' : '2022-11-28'} - r = requests.get(url, allow_redirects=True) - releases = json.loads(r.text) - assets = releases[0]["assets"] - - target_release = None - for asset in assets : - if platform.system().lower() in asset['name'] : - target_release = asset["browser_download_url"] - - logging.info("System detected %s :", platform.system()) - logging.info("Target release url found %s :", target_release) - logging.info("Downloading release to %s...", installation_path) - release_download = requests.get(target_release, allow_redirects=True) - - filename = get_filename_from_cd(release_download.headers.get('content-disposition')) - tar_location = os.path.join(installation_path, filename) - logging.info("Writing release to %s...", tar_location) - open(tar_location, 'wb').write(release_download.content) - - logging.info("Opening compressed file %s", filename) - tar = tarfile.open(tar_location) - extract_location = "/usr/local/bin" - tar.extractall(path=extract_location) - tar.close() - logging.info("Release file uncompressed at : %s", extract_location) - - application = os.path.join(extract_location, "psyneulinkviewer-linux-x64/psyneulinkviewer") - logging.info("Creating symlink at : %s", symlink) - logging.info("Application at : %s", application) - try: - if os.path.islink(symlink): - os.remove(symlink) - os.symlink(application, symlink) - result = subprocess.run( - [symlink] - ) - except OSError as e: - logging.error("Error applying symlin %f ", e) - - logging.info("Symlink created") - - logging.info("*** To launch the application run : **** ") - logging.info(" %s " ,symlink) - -def prerequisites(): - check_os() - check_python() - check_conda() - check_rosetta() - check_graphviz() - check_psyneulink() - if os.path.islink(symlink): - result = subprocess.run( - [symlink] - ) - else: - get_latest_release(os.path.dirname(os.path.realpath(__file__))) - -def main(): - prerequisites() - -if __name__ == "__main__": - main() \ No newline at end of file From bb3b96cde83cbd9796e48dcd81e4fc17f6b81f35 Mon Sep 17 00:00:00 2001 From: jrmartin Date: Fri, 26 Jul 2024 18:52:30 +0200 Subject: [PATCH 043/126] #PSYNEU-135 - Cleanup --- package/psyneulinkviewer/rosetta.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/package/psyneulinkviewer/rosetta.py b/package/psyneulinkviewer/rosetta.py index d710c082..fb79baf0 100644 --- a/package/psyneulinkviewer/rosetta.py +++ b/package/psyneulinkviewer/rosetta.py @@ -22,8 +22,6 @@ def check_rosetta_installation(): capture_output = True, text = True ).stdout - if rosetta_version: - rosetta_version = rosetta_version.split(" ")[1] logging.info("Rosseta version detected : %s", rosetta_version) if rosetta_version is None: From 00b24131b4d67aa67b958ff9e486dad36909f8d7 Mon Sep 17 00:00:00 2001 From: jrmartin Date: Mon, 29 Jul 2024 14:29:52 +0200 Subject: [PATCH 044/126] #PSYNEU-136 - Wrap installation on try/catch, and fix typo --- package/psyneulinkviewer/conda.py | 67 +++++++++++++++++-------------- package/setup.py | 4 +- 2 files changed, 39 insertions(+), 32 deletions(-) diff --git a/package/psyneulinkviewer/conda.py b/package/psyneulinkviewer/conda.py index ae75f62c..17a9313a 100644 --- a/package/psyneulinkviewer/conda.py +++ b/package/psyneulinkviewer/conda.py @@ -37,37 +37,42 @@ def install_conda(): def check_conda_installation(): - conda_version = subprocess.run( - ["conda", "--version"], - capture_output = True, - text = True - ).stdout - if conda_version: - conda_version = conda_version.split(" ")[1] - logging.info("Conda version detected : %s", conda_version) + try: + conda_version = subprocess.run( + ["conda", "--version"], + capture_output = True, + text = True + ).stdout + if conda_version: + conda_version = conda_version.split(" ")[1] + logging.info("Conda version detected : %s", conda_version) - if conda_version is not None: - logging.info("Conda is not installed") - user_input = input("Do you want to continue with conda installation? (yes/no): ") - if user_input.lower() in ["yes", "y"]: - logging.info("Continuing with conda installation...") + if conda_version is None: + logging.info("Conda is not installed") + user_input = input("Do you want to continue with conda installation? (yes/no): ") + if user_input.lower() in ["yes", "y"]: + logging.info("Continuing with conda installation...") + install_conda() + else: + logging.error("Exiting, conda must be installed to continue...") + sys.exit() + + if Version(conda_version) > Version(configuration.conda_required_version): + logging.info("Conda version exists and valid, %s", conda_version) + else: + logging.error("Conda version not up to date, update required") install_conda() + + envs = subprocess.run( + ["conda", "env","list"], + capture_output = True, + text = True + ).stdout.splitlines() + active_env = list(filter(lambda s: '*' in str(s), envs))[0] + env_name = str(active_env).split()[0] + if env_name is not None: + logging.info("Conda environment found and activated %s", env_name) else: - logging.error("Exiting, conda must be installed to continue...") - sys.exit() - - if Version(conda_version) > Version(configuration.conda_required_version): - logging.info("Conda version exists and valid, %s", conda_version) - else: - logging.error("Conda version not up to date, update required") - install_conda() - - envs = subprocess.run( - ["conda", "env","list"], - capture_output = True, - text = True - ).stdout.splitlines() - active_env = list(filter(lambda s: '*' in str(s), envs))[0] - env_name = str(active_env).split()[0] - if env_name is not None: - logging.info("Conda environment found and activated %s", env_name) \ No newline at end of file + activate_env() + except Exception as error: + logging.error("Error %s ", error) \ No newline at end of file diff --git a/package/setup.py b/package/setup.py index 9dabc6c1..8339933a 100644 --- a/package/setup.py +++ b/package/setup.py @@ -34,7 +34,9 @@ def run(self): setup( name="psyneulinkview", version="0.0.1", - setup_requires=['requests'], + install_requires=['requests', + 'wget' + 'packaging'], cmdclass={ 'install': InstallCommand, } From f3add7894e1849668374b289d07927e39dd8a3a0 Mon Sep 17 00:00:00 2001 From: jrmartin Date: Mon, 29 Jul 2024 14:39:28 +0200 Subject: [PATCH 045/126] #PSYNEU-136 - Better logging --- package/psyneulinkviewer/conda.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/psyneulinkviewer/conda.py b/package/psyneulinkviewer/conda.py index 17a9313a..7c075552 100644 --- a/package/psyneulinkviewer/conda.py +++ b/package/psyneulinkviewer/conda.py @@ -75,4 +75,4 @@ def check_conda_installation(): else: activate_env() except Exception as error: - logging.error("Error %s ", error) \ No newline at end of file + logging.error("Error with conda installation: %s ", error) \ No newline at end of file From 0c254d0b5df1c5f822ca6e90065ef3dc74fdb218 Mon Sep 17 00:00:00 2001 From: jrmartin Date: Mon, 29 Jul 2024 14:56:52 +0200 Subject: [PATCH 046/126] #PSYNEU-137 -Wrap rosetta installation into try/catch --- package/psyneulinkviewer/rosetta.py | 39 ++++++++++++++++------------- 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/package/psyneulinkviewer/rosetta.py b/package/psyneulinkviewer/rosetta.py index d710c082..1ffccc2d 100644 --- a/package/psyneulinkviewer/rosetta.py +++ b/package/psyneulinkviewer/rosetta.py @@ -16,22 +16,25 @@ def install_rosetta(): subprocess.run(configuration.rosetta_installation, shell=True) def check_rosetta_installation(): - if platform.system() == 'Darwin': - rosetta_version = subprocess.run( - ["rosseta", "--version"], - capture_output = True, - text = True - ).stdout - if rosetta_version: - rosetta_version = rosetta_version.split(" ")[1] - logging.info("Rosseta version detected : %s", rosetta_version) + try: + if platform.system() == 'Darwin': + rosetta_version = subprocess.run( + ["rosseta", "--version"], + capture_output = True, + text = True + ).stdout + if rosetta_version: + rosetta_version = rosetta_version.split(" ")[1] + logging.info("Rosseta version detected : %s", rosetta_version) - if rosetta_version is None: - logging.info("Rosetta ist not installed") - user_input = input("Do you want to continue with rosetta installation? (yes/no): ") - if user_input.lower() in ["yes", "y"]: - logging.info("Continuing with rosetta installation...") - install_rosetta() - else: - logging.error("Exiting, rosetta must be installed to continue...") - sys.exit() + if rosetta_version is None: + logging.info("Rosetta ist not installed") + user_input = input("Do you want to continue with rosetta installation? (yes/no): ") + if user_input.lower() in ["yes", "y"]: + logging.info("Continuing with rosetta installation...") + install_rosetta() + else: + logging.error("Exiting, rosetta must be installed to continue...") + sys.exit() + except Exception as error: + logging.error("Error with rosetta installation: %s ", error) From f0ffa0eca74346bdf52bb5bc2d8219b9767cc471 Mon Sep 17 00:00:00 2001 From: jrmartin Date: Mon, 29 Jul 2024 15:11:38 +0200 Subject: [PATCH 047/126] #PSYNEU-135 - Wrap check node installation with try/catch --- package/psyneulinkviewer/node.py | 43 +++++++++++++++++--------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/package/psyneulinkviewer/node.py b/package/psyneulinkviewer/node.py index 93621df7..fa2b8f6c 100644 --- a/package/psyneulinkviewer/node.py +++ b/package/psyneulinkviewer/node.py @@ -14,25 +14,28 @@ def install_node(): subprocess.run(configuration.node_installation, shell=True) def check_node_installation(): - node_version = subprocess.run( - ["node", "--version"], - capture_output = True, - text = True - ).stdout - logging.info("Node version detected : %s", node_version) + try: + node_version = subprocess.run( + ["node", "--version"], + capture_output = True, + text = True + ).stdout + logging.info("Node version detected : %s", node_version) - if node_version is None: - logging.info("Node is not installed") - user_input = input("Do you want to continue with node installation? (yes/no): ") - if user_input.lower() in ["yes", "y"]: - logging.info("Continuing with node installation...") - install_node() + if node_version is None: + logging.info("Node is not installed") + user_input = input("Do you want to continue with node installation? (yes/no): ") + if user_input.lower() in ["yes", "y"]: + logging.info("Continuing with node installation...") + install_node() + else: + logging.error("Exiting, node must be installed to continue...") + sys.exit() + + if Version(node_version) > Version(configuration.node_required_version): + logging.info("Node version exists and valid, %s", node_version) else: - logging.error("Exiting, node must be installed to continue...") - sys.exit() - - if Version(node_version) > Version(configuration.node_required_version): - logging.info("Node version exists and valid, %s", node_version) - else: - logging.error("Node version not up to date, update required") - install_node() \ No newline at end of file + logging.error("Node version not up to date, update required") + install_node() + except Exception as error: + logging.error("Error with node installation: %s ", error) \ No newline at end of file From db37698de8c0040821d3cda3a9d0151eff267b31 Mon Sep 17 00:00:00 2001 From: jrmartin Date: Tue, 6 Aug 2024 14:12:59 +0200 Subject: [PATCH 048/126] #PSYNEU-136 - Handle better errors when conda not present --- package/psyneulinkviewer/conda.py | 50 ++++++++++++++++++------------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/package/psyneulinkviewer/conda.py b/package/psyneulinkviewer/conda.py index 7c075552..dc204307 100644 --- a/package/psyneulinkviewer/conda.py +++ b/package/psyneulinkviewer/conda.py @@ -14,7 +14,7 @@ logging.basicConfig(level=logging.INFO) def activate_env(): - logging.info("Creating conda ") + logging.info("Creating conda environment ") subprocess.run(configuration.create_env, shell=True) logging.info("Activating conda ") @@ -37,6 +37,7 @@ def install_conda(): def check_conda_installation(): + conda_version = None try: conda_version = subprocess.run( ["conda", "--version"], @@ -46,33 +47,40 @@ def check_conda_installation(): if conda_version: conda_version = conda_version.split(" ")[1] logging.info("Conda version detected : %s", conda_version) + except Exception as error: + logging.error("Error with conda installation: %s ", error) - if conda_version is None: - logging.info("Conda is not installed") - user_input = input("Do you want to continue with conda installation? (yes/no): ") - if user_input.lower() in ["yes", "y"]: - logging.info("Continuing with conda installation...") - install_conda() - else: - logging.error("Exiting, conda must be installed to continue...") - sys.exit() - - if Version(conda_version) > Version(configuration.conda_required_version): - logging.info("Conda version exists and valid, %s", conda_version) - else: - logging.error("Conda version not up to date, update required") + if conda_version is None: + logging.info("Conda is not installed") + user_input = input("Do you want to continue with conda installation? (yes/no): ") + if user_input.lower() in ["yes", "y"]: + logging.info("Continuing with conda installation...") install_conda() + else: + logging.error("Exiting, conda must be installed to continue...") + sys.exit() + + if Version(conda_version) > Version(configuration.conda_required_version): + logging.info("Conda version exists and valid, %s", conda_version) + else: + logging.error("Conda version not up to date, update required") + install_conda() + env_name = None + try: envs = subprocess.run( ["conda", "env","list"], capture_output = True, text = True - ).stdout.splitlines() + ).stdout + if envs is not None: + envs = envs.splitlines() active_env = list(filter(lambda s: '*' in str(s), envs))[0] env_name = str(active_env).split()[0] - if env_name is not None: - logging.info("Conda environment found and activated %s", env_name) - else: - activate_env() except Exception as error: - logging.error("Error with conda installation: %s ", error) \ No newline at end of file + logging.error("Environment not found active: %s ", error) + + if env_name is not None: + logging.info("Conda environment found and activated %s", env_name) + else: + activate_env() \ No newline at end of file From a4ffef91c3725eed2d0d3b552d14a349ad573178 Mon Sep 17 00:00:00 2001 From: jrmartin Date: Tue, 6 Aug 2024 14:31:02 +0200 Subject: [PATCH 049/126] #PSYNEU-137 - Handle better lack of rossetta installation, catch error and proceed with installation --- package/psyneulinkviewer/rosetta.py | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/package/psyneulinkviewer/rosetta.py b/package/psyneulinkviewer/rosetta.py index 1ffccc2d..3fc221bd 100644 --- a/package/psyneulinkviewer/rosetta.py +++ b/package/psyneulinkviewer/rosetta.py @@ -16,6 +16,7 @@ def install_rosetta(): subprocess.run(configuration.rosetta_installation, shell=True) def check_rosetta_installation(): + rosetta_version = None try: if platform.system() == 'Darwin': rosetta_version = subprocess.run( @@ -26,15 +27,16 @@ def check_rosetta_installation(): if rosetta_version: rosetta_version = rosetta_version.split(" ")[1] logging.info("Rosseta version detected : %s", rosetta_version) - - if rosetta_version is None: - logging.info("Rosetta ist not installed") - user_input = input("Do you want to continue with rosetta installation? (yes/no): ") - if user_input.lower() in ["yes", "y"]: - logging.info("Continuing with rosetta installation...") - install_rosetta() - else: - logging.error("Exiting, rosetta must be installed to continue...") - sys.exit() except Exception as error: logging.error("Error with rosetta installation: %s ", error) + + if rosetta_version is None: + logging.info("Rosetta ist not installed") + user_input = input("Do you want to continue with rosetta installation? (yes/no): ") + if user_input.lower() in ["yes", "y"]: + logging.info("Continuing with rosetta installation...") + install_rosetta() + else: + logging.error("Exiting, rosetta must be installed to continue...") + sys.exit() + From dc4b700b2d31dbbf9734f02b557678232e74a101 Mon Sep 17 00:00:00 2001 From: jrmartin Date: Tue, 6 Aug 2024 14:34:56 +0200 Subject: [PATCH 050/126] #PSYNEU-135 - Handle better node installation when there's an error --- package/psyneulinkviewer/node.py | 33 ++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/package/psyneulinkviewer/node.py b/package/psyneulinkviewer/node.py index fa2b8f6c..739cfe20 100644 --- a/package/psyneulinkviewer/node.py +++ b/package/psyneulinkviewer/node.py @@ -14,6 +14,7 @@ def install_node(): subprocess.run(configuration.node_installation, shell=True) def check_node_installation(): + node_version = None try: node_version = subprocess.run( ["node", "--version"], @@ -21,21 +22,21 @@ def check_node_installation(): text = True ).stdout logging.info("Node version detected : %s", node_version) + except Exception as error: + logging.error("Error with node installation: %s ", error) - if node_version is None: - logging.info("Node is not installed") - user_input = input("Do you want to continue with node installation? (yes/no): ") - if user_input.lower() in ["yes", "y"]: - logging.info("Continuing with node installation...") - install_node() - else: - logging.error("Exiting, node must be installed to continue...") - sys.exit() - - if Version(node_version) > Version(configuration.node_required_version): - logging.info("Node version exists and valid, %s", node_version) - else: - logging.error("Node version not up to date, update required") + if node_version is None: + logging.info("Node is not installed") + user_input = input("Do you want to continue with node installation? (yes/no): ") + if user_input.lower() in ["yes", "y"]: + logging.info("Continuing with node installation...") install_node() - except Exception as error: - logging.error("Error with node installation: %s ", error) \ No newline at end of file + else: + logging.error("Exiting, node must be installed to continue...") + sys.exit() + + if Version(node_version) > Version(configuration.node_required_version): + logging.info("Node version exists and valid, %s", node_version) + else: + logging.error("Node version not up to date, update required") + install_node() \ No newline at end of file From 87571dad040edd64f48c6866757fa9ad13c74c0c Mon Sep 17 00:00:00 2001 From: jrmartin Date: Tue, 6 Aug 2024 17:32:37 +0200 Subject: [PATCH 051/126] #PSYNEU-136 - Don't log error if exception is FileNotFoundError and continue with process, otherwise log it and exit --- package/psyneulinkviewer/conda.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/package/psyneulinkviewer/conda.py b/package/psyneulinkviewer/conda.py index dc204307..5f52809b 100644 --- a/package/psyneulinkviewer/conda.py +++ b/package/psyneulinkviewer/conda.py @@ -46,9 +46,11 @@ def check_conda_installation(): ).stdout if conda_version: conda_version = conda_version.split(" ")[1] - logging.info("Conda version detected : %s", conda_version) + logging.info("Conda version detected : %s", conda_version) except Exception as error: - logging.error("Error with conda installation: %s ", error) + if not isinstance(error, FileNotFoundError): + logging.error("Error with conda installation, exiting setup: %s ", error) + sys.exit() if conda_version is None: logging.info("Conda is not installed") From 86db20363e9dc04f992295e46831b8ed2f502e2e Mon Sep 17 00:00:00 2001 From: jrmartin Date: Tue, 6 Aug 2024 17:51:07 +0200 Subject: [PATCH 052/126] #PSYNEU-137 - Don't log error if exception is FileNotFoundError and continue with process, otherwise log it and exit --- package/psyneulinkviewer/rosetta.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/package/psyneulinkviewer/rosetta.py b/package/psyneulinkviewer/rosetta.py index 3fc221bd..0e882b91 100644 --- a/package/psyneulinkviewer/rosetta.py +++ b/package/psyneulinkviewer/rosetta.py @@ -26,9 +26,11 @@ def check_rosetta_installation(): ).stdout if rosetta_version: rosetta_version = rosetta_version.split(" ")[1] - logging.info("Rosseta version detected : %s", rosetta_version) + logging.info("Rosseta version detected : %s", rosetta_version) except Exception as error: - logging.error("Error with rosetta installation: %s ", error) + if not isinstance(error, FileNotFoundError): + logging.error("Error with rosetta installation, exiting setup: %s ", error) + sys.exit() if rosetta_version is None: logging.info("Rosetta ist not installed") From 5c37e4f29d30ae0ecc39a7cee1ed8fc607116307 Mon Sep 17 00:00:00 2001 From: jrmartin Date: Tue, 6 Aug 2024 17:53:19 +0200 Subject: [PATCH 053/126] #PSYNEU-135 - Don't log error if exception is FileNotFoundError and continue with process, otherwise log it and exit --- package/psyneulinkviewer/node.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/package/psyneulinkviewer/node.py b/package/psyneulinkviewer/node.py index 739cfe20..7baf555a 100644 --- a/package/psyneulinkviewer/node.py +++ b/package/psyneulinkviewer/node.py @@ -21,9 +21,10 @@ def check_node_installation(): capture_output = True, text = True ).stdout - logging.info("Node version detected : %s", node_version) except Exception as error: - logging.error("Error with node installation: %s ", error) + if not isinstance(error, FileNotFoundError): + logging.error("Error with node installation, exiting setup: %s ", error) + sys.exit() if node_version is None: logging.info("Node is not installed") From 2e071e4f89ab08cc58a92b80dbd7dfbb6284173b Mon Sep 17 00:00:00 2001 From: Dario Del Piano Date: Fri, 9 Aug 2024 10:20:01 +0200 Subject: [PATCH 054/126] building before packaging --- .github/workflows/build.yml | 8 ++++++-- .github/workflows/release.yml | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index dd75f101..e72bee41 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -14,8 +14,10 @@ jobs: - name: install dependencies run: yarn - name: build - run: yarn linux64 + run: yarn build - name: package + run: yarn linux64 + - name: archive run: tar -czf linux.tar.gz ./psyneulinkviewer-linux-x64 build_on_mac: @@ -34,6 +36,8 @@ jobs: - name: install dependencies run: yarn - name: build - run: yarn osx + run: yarn build - name: package + run: yarn osx + - name: archive run: tar -czf osx.tar.gz ./psyneulinkviewer-darwin-x64 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 160d6bfb..41019d44 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -17,8 +17,10 @@ jobs: - name: install dependencies run: yarn - name: build - run: yarn linux64 + run: yarn build - name: package + run: yarn linux64 + - name: archive run: tar -czf linux.tar.gz ./psyneulinkviewer-linux-x64 - name: release uses: softprops/action-gh-release@v2 @@ -42,8 +44,10 @@ jobs: - name: install dependencies run: yarn - name: build - run: yarn osx + run: yarn build - name: package + run: yarn osx + - name: archive run: tar -czf osx.tar.gz ./psyneulinkviewer-darwin-x64 - name: release uses: softprops/action-gh-release@v2 From 1d37a810394d239e379c5105fb0061aa3a7daa1b Mon Sep 17 00:00:00 2001 From: jrmartin Date: Sat, 10 Aug 2024 15:01:21 +0200 Subject: [PATCH 055/126] #PSYNEU-140 - Fixes to installation process --- package/bash_scripts/conda.sh | 3 + .../psyneulinkview-0.0.5-py3-none-any.whl | Bin 3963 -> 0 bytes package/dist/psyneulinkview-0.0.5.tar.gz | Bin 3530 -> 0 bytes package/psyneulinkviewer/conda.py | 88 ++++++++++++------ .../{ => psyneulinkviewer}/configuration.py | 3 +- package/psyneulinkviewer/node.py | 5 +- package/psyneulinkviewer/rosetta.py | 5 +- package/psyneulinkviewer/start.py | 46 ++++----- package/requirements.txt | 3 +- package/setup.py | 29 +++--- 10 files changed, 112 insertions(+), 70 deletions(-) create mode 100755 package/bash_scripts/conda.sh delete mode 100644 package/dist/psyneulinkview-0.0.5-py3-none-any.whl delete mode 100644 package/dist/psyneulinkview-0.0.5.tar.gz rename package/{ => psyneulinkviewer}/configuration.py (79%) diff --git a/package/bash_scripts/conda.sh b/package/bash_scripts/conda.sh new file mode 100755 index 00000000..2a5fd8ea --- /dev/null +++ b/package/bash_scripts/conda.sh @@ -0,0 +1,3 @@ +#!/bin/bash +source ~/.bashrc +source ~/.profile \ No newline at end of file diff --git a/package/dist/psyneulinkview-0.0.5-py3-none-any.whl b/package/dist/psyneulinkview-0.0.5-py3-none-any.whl deleted file mode 100644 index 2e21180bf8bbe854c3dae13e78f33ce805bd3ec8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3963 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 hkt-sYz&pzR(;zU$ER4jZi}UB(e*khldSn0q diff --git a/package/dist/psyneulinkview-0.0.5.tar.gz b/package/dist/psyneulinkview-0.0.5.tar.gz deleted file mode 100644 index bd97d99ce0562032416ab3ef74c4e7dde5a18fee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3530 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 Version(configuration.conda_required_version): - logging.info("Conda version exists and valid, %s", conda_version) - else: - logging.error("Conda version not up to date, update required") install_conda() + else: + from packaging.version import Version + if Version(conda_version) > Version(configuration.conda_required_version): + logging.info("Conda version exists and valid, %s", conda_version) + else: + logging.info("Conda version not up to date, updating version") + install_conda() env_name = None try: - envs = subprocess.run( - ["conda", "env","list"], + env_name = subprocess.run( + ["conda", "info"], capture_output = True, text = True ).stdout - if envs is not None: - envs = envs.splitlines() - active_env = list(filter(lambda s: '*' in str(s), envs))[0] - env_name = str(active_env).split()[0] + if env_name: + env_name = re.search('(?<=active environment : )(\w+)', env_name) + env_name = env_name.group(1) + print(type(env_name)) + if env_name == "None": + logging.info("Conda version not detected : %s", env_name) + env_name = None + else: + logging.info("Conda version detected : %s", env_name) except Exception as error: - logging.error("Environment not found active: %s ", error) + logging.info("Environment not found active: %s ", error) if env_name is not None: logging.info("Conda environment found and activated %s", env_name) else: - activate_env() \ No newline at end of file + create_env() \ No newline at end of file diff --git a/package/configuration.py b/package/psyneulinkviewer/configuration.py similarity index 79% rename from package/configuration.py rename to package/psyneulinkviewer/configuration.py index 77c57523..837b32d1 100644 --- a/package/configuration.py +++ b/package/psyneulinkviewer/configuration.py @@ -10,9 +10,10 @@ linux_conda_bash = "https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh" mac_conda_bash = "https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh" -env_name = "psyneulinkviewer" +env_name = "psyneulinkview" create_env = "conda create --name " + env_name + " python=3.11" activate_env = "conda activate " + env_name +continue_on_conda = "conda run -n " + env_name + " --verbose --no-capture-output --live-stream python -c 'from psyneulinkviewer.start import continue_on_conda; continue_on_conda()'" rosetta_installation = "softwareupdate --install-rosetta --agree-to-license" diff --git a/package/psyneulinkviewer/node.py b/package/psyneulinkviewer/node.py index 7baf555a..29c0d4a0 100644 --- a/package/psyneulinkviewer/node.py +++ b/package/psyneulinkviewer/node.py @@ -1,9 +1,8 @@ import sys import subprocess import logging -import configuration +from psyneulinkviewer import configuration from setuptools.command.install import install -from packaging.version import Version logger = logging.getLogger(__name__) logging.basicConfig(level=logging.INFO) @@ -35,7 +34,7 @@ def check_node_installation(): else: logging.error("Exiting, node must be installed to continue...") sys.exit() - + from packaging.version import Version if Version(node_version) > Version(configuration.node_required_version): logging.info("Node version exists and valid, %s", node_version) else: diff --git a/package/psyneulinkviewer/rosetta.py b/package/psyneulinkviewer/rosetta.py index 0e882b91..cf2baf43 100644 --- a/package/psyneulinkviewer/rosetta.py +++ b/package/psyneulinkviewer/rosetta.py @@ -1,11 +1,10 @@ import platform import subprocess import logging -import configuration import platform import sys +from psyneulinkviewer import configuration from setuptools.command.install import install -from packaging.version import Version logger = logging.getLogger(__name__) logging.basicConfig(level=logging.INFO) @@ -32,7 +31,7 @@ def check_rosetta_installation(): logging.error("Error with rosetta installation, exiting setup: %s ", error) sys.exit() - if rosetta_version is None: + if rosetta_version is None and platform.system() == 'Darwin': logging.info("Rosetta ist not installed") user_input = input("Do you want to continue with rosetta installation? (yes/no): ") if user_input.lower() in ["yes", "y"]: diff --git a/package/psyneulinkviewer/start.py b/package/psyneulinkviewer/start.py index e79d499d..ce1bfaba 100644 --- a/package/psyneulinkviewer/start.py +++ b/package/psyneulinkviewer/start.py @@ -8,13 +8,12 @@ import importlib.util import tarfile import atexit +from psyneulinkviewer import configuration from setuptools import setup, find_packages from setuptools.command.install import install -from packaging.version import Version from psyneulinkviewer.conda import check_conda_installation from psyneulinkviewer.rosetta import check_rosetta_installation from psyneulinkviewer.node import check_node_installation -import configuration logger = logging.getLogger(__name__) logging.basicConfig(level=logging.INFO) @@ -26,34 +25,35 @@ def check_os(): logging.info("OS version supported") def check_python(): - if not sys.version_info.major == 3 and not sys.version_info.minor == 6 : + if not sys.version_info.major == 3 and not sys.version_info.minor == 7 : logging.error('Python version not supported, 3.11 is required. %f' , sys.version_info) sys.exit('Python version not supported, 3.11 is required.') else: logging.info("Python version is supported") def check_graphviz(): - if importlib.util.find_spec(configuration.graphviz) is None: - logging.error(configuration.graphviz +" is not installed, installing") + logging.info(configuration.graphviz +" is not installed, installing") + try: result = subprocess.run( - ["pip", "install", "graphviz"], + ["conda", "install", "graphviz"], capture_output = True, text = True - ) - else: - logging.info(configuration.graphviz +" is installed") + ).stdout + logger.info("Success installing graphviz %s ", result) + except Exception as error: + logger.info("Error installing graphviz") def check_psyneulink(): - if importlib.util.find_spec(configuration.psyneulink) is None: - logging.error(configuration.psyneulink +" is not installed, installing") + logging.info(configuration.psyneulink +" installing") + try: result = subprocess.run( ["pip", "install", "psyneulink"], capture_output = True, text = True - ) - else: - logging.info(configuration.psyneulink +" is installed") - + ).stdout + logger.info("Success installing psyneulink %s ", result) + except Exception as error: + logger.info("Error installing psyneulink") def get_filename_from_cd(cd): """ @@ -72,7 +72,7 @@ def get_latest_release(installation_path): headers = {'Accept': 'application/vnd.github+json','Authorization': 'Bearer JWT', 'X-GitHub-Api-Version' : '2022-11-28'} r = requests.get(configuration.releases_url, allow_redirects=True) releases = json.loads(r.text) - assets = releases[0]["assets"] + assets = releases[1]["assets"] target_release = None for asset in assets : @@ -112,17 +112,21 @@ def get_latest_release(installation_path): logging.info("*** To launch the application run : **** ") logging.info(" %s " ,symlink) -def prerequisites(): - check_os() - check_python() - check_conda_installation() - #Install package requirements here +def continue_on_conda(): check_rosetta_installation() check_node_installation() check_graphviz() check_psyneulink() get_latest_release(os.path.dirname(os.path.realpath(__file__))) +def prerequisites(): + check_os() + check_python() + check_conda_installation() + #Install package requirements on conda + subprocess.run(configuration.continue_on_conda, shell=True) + + def main(): prerequisites() diff --git a/package/requirements.txt b/package/requirements.txt index a379fde6..c499e750 100644 --- a/package/requirements.txt +++ b/package/requirements.txt @@ -1,2 +1,3 @@ wget==3.2 -packaging \ No newline at end of file +packaging +requests \ No newline at end of file diff --git a/package/setup.py b/package/setup.py index 8339933a..9b14831a 100644 --- a/package/setup.py +++ b/package/setup.py @@ -1,13 +1,14 @@ import logging import os +import subprocess +import sys from setuptools import setup, find_packages from setuptools.command.install import install -from psyneulinkviewer.start import prerequisites logger = logging.getLogger(__name__) logging.basicConfig(level=logging.INFO) -class InstallCommand(install): +class Install(install): user_options = install.user_options + [ ('path=', None, 'an option that takes a value') ] @@ -22,22 +23,26 @@ def finalize_options(self): self.path = os.path.dirname(os.path.realpath(__file__)) super().finalize_options() - def run(self): global path - prerequisites() - print("pre") path = self.path # will be 1 or None - install.run(self) + from psyneulinkviewer.start import prerequisites prerequisites() + install.run(self) setup( - name="psyneulinkview", - version="0.0.1", - install_requires=['requests', - 'wget' + name="psyneulinkviewer", + version="0.0.41", + url='https://github.com/metacell/psyneulinkviewer', + author='metacell', + author_email='dev@metacell.us', + setup_requires=['requests', + 'wget', 'packaging'], + packages=find_packages(), cmdclass={ - 'install': InstallCommand, - } + 'install': Install + }, + python_requires=">=3.7", + scripts=['bash_scripts/conda.sh'] ) \ No newline at end of file From f03a84e242c377b235f97305e720a94e98c75dec Mon Sep 17 00:00:00 2001 From: jrmartin Date: Wed, 14 Aug 2024 04:25:40 +0200 Subject: [PATCH 056/126] #PSYNEU-140 - Using conda binary to run installation --- package/psyneulinkviewer/conda.py | 13 ++++++++----- package/psyneulinkviewer/configuration.py | 5 +++-- package/setup.py | 2 +- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/package/psyneulinkviewer/conda.py b/package/psyneulinkviewer/conda.py index c5de6a8b..567fee89 100644 --- a/package/psyneulinkviewer/conda.py +++ b/package/psyneulinkviewer/conda.py @@ -34,6 +34,7 @@ def create_env(): if env_name is None: logging.info("Creating conda environment ") subprocess.run(configuration.create_env, shell=True) + def shell_source(script): """Sometime you want to emulate the action of "source" in bash, @@ -56,15 +57,17 @@ def install_conda(): logging.info(bash_file) subprocess.run("chmod +x " + bash_file, shell=True) subprocess.run(bash_file + " -b -u -p ~/miniconda3", shell=True) + subprocess.run("~/miniconda3/bin/conda init bash", shell=True) + subprocess.run("~/miniconda3/bin/conda init zsh", shell=True) + subprocess.run("exec bash bash_scripts/conda.sh", shell=True) + #subprocess.run(configuration.chmod_conda, shell=True) logging.info("Clean up ") subprocess.run("rm -rf " + bash_file, shell=True) - subprocess.run("~/miniconda3/bin/conda init bash", shell=True) - subprocess.run("~/miniconda3/bin/conda init zsh", shell=True) - logging.info("To continue, run command below on terminal and then re-run pip install") - logging.info("sudo ~/.bashrc") - sys.exit() + # logging.info("To continue, run command below on terminal and then re-run pip install") + # logging.info("sudo ~/.bashrc") + # sys.exit() def check_conda_installation(): conda_version = None diff --git a/package/psyneulinkviewer/configuration.py b/package/psyneulinkviewer/configuration.py index 837b32d1..963ff75f 100644 --- a/package/psyneulinkviewer/configuration.py +++ b/package/psyneulinkviewer/configuration.py @@ -11,9 +11,10 @@ mac_conda_bash = "https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh" env_name = "psyneulinkview" -create_env = "conda create --name " + env_name + " python=3.11" +chmod_conda = "chmod +x ~/miniconda3/bin/conda" +create_env = "~/miniconda3/bin/conda create --name " + env_name + " python=3.11" activate_env = "conda activate " + env_name -continue_on_conda = "conda run -n " + env_name + " --verbose --no-capture-output --live-stream python -c 'from psyneulinkviewer.start import continue_on_conda; continue_on_conda()'" +continue_on_conda = "~/miniconda3/bin/conda run -n " + env_name + " --verbose --no-capture-output --live-stream python -c 'from psyneulinkviewer.start import continue_on_conda; continue_on_conda()'" rosetta_installation = "softwareupdate --install-rosetta --agree-to-license" diff --git a/package/setup.py b/package/setup.py index 9b14831a..69955988 100644 --- a/package/setup.py +++ b/package/setup.py @@ -32,7 +32,7 @@ def run(self): setup( name="psyneulinkviewer", - version="0.0.41", + version="0.0.410", url='https://github.com/metacell/psyneulinkviewer', author='metacell', author_email='dev@metacell.us', From 599a3f24589495b0dbefdf8dead34091e58abf30 Mon Sep 17 00:00:00 2001 From: jrmartin Date: Mon, 19 Aug 2024 23:54:26 +0200 Subject: [PATCH 057/126] #PSYNEU-140 - Fix installation process on MAC , update distribution folder --- .../psyneulinkviewer-0.0.42-py3-none-any.whl | Bin 0 -> 8281 bytes package/dist/psyneulinkviewer-0.0.42.tar.gz | Bin 0 -> 6314 bytes package/psyneulinkviewer.egg-info/PKG-INFO | 8 ++ package/psyneulinkviewer.egg-info/SOURCES.txt | 14 +++ .../dependency_links.txt | 1 + .../psyneulinkviewer.egg-info/top_level.txt | 1 + package/psyneulinkviewer/conda.py | 82 +++++++++++++----- package/psyneulinkviewer/configuration.py | 19 +++- package/psyneulinkviewer/node.py | 17 +++- package/psyneulinkviewer/rosetta.py | 7 +- package/psyneulinkviewer/start.py | 33 ++++++- package/setup.py | 2 +- 12 files changed, 153 insertions(+), 31 deletions(-) create mode 100644 package/dist/psyneulinkviewer-0.0.42-py3-none-any.whl create mode 100644 package/dist/psyneulinkviewer-0.0.42.tar.gz create mode 100644 package/psyneulinkviewer.egg-info/PKG-INFO create mode 100644 package/psyneulinkviewer.egg-info/SOURCES.txt create mode 100644 package/psyneulinkviewer.egg-info/dependency_links.txt create mode 100644 package/psyneulinkviewer.egg-info/top_level.txt diff --git a/package/dist/psyneulinkviewer-0.0.42-py3-none-any.whl b/package/dist/psyneulinkviewer-0.0.42-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..1bae8598982e4adb7367f10f43e3aef45780d1ec GIT binary patch literal 8281 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 literal 0 HcmV?d00001 diff --git a/package/dist/psyneulinkviewer-0.0.42.tar.gz b/package/dist/psyneulinkviewer-0.0.42.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..c8c766a6066af306da7cc9999c960fc042dc018c GIT binary patch literal 6314 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 g>7=3.7 +License-File: LICENSE diff --git a/package/psyneulinkviewer.egg-info/SOURCES.txt b/package/psyneulinkviewer.egg-info/SOURCES.txt new file mode 100644 index 00000000..e0600309 --- /dev/null +++ b/package/psyneulinkviewer.egg-info/SOURCES.txt @@ -0,0 +1,14 @@ +LICENSE +README.md +setup.py +bash_scripts/conda.sh +psyneulinkviewer/__init__.py +psyneulinkviewer/conda.py +psyneulinkviewer/configuration.py +psyneulinkviewer/node.py +psyneulinkviewer/rosetta.py +psyneulinkviewer/start.py +psyneulinkviewer.egg-info/PKG-INFO +psyneulinkviewer.egg-info/SOURCES.txt +psyneulinkviewer.egg-info/dependency_links.txt +psyneulinkviewer.egg-info/top_level.txt \ No newline at end of file diff --git a/package/psyneulinkviewer.egg-info/dependency_links.txt b/package/psyneulinkviewer.egg-info/dependency_links.txt new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/package/psyneulinkviewer.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/package/psyneulinkviewer.egg-info/top_level.txt b/package/psyneulinkviewer.egg-info/top_level.txt new file mode 100644 index 00000000..7c1a94eb --- /dev/null +++ b/package/psyneulinkviewer.egg-info/top_level.txt @@ -0,0 +1 @@ +psyneulinkviewer diff --git a/package/psyneulinkviewer/conda.py b/package/psyneulinkviewer/conda.py index 567fee89..87196519 100644 --- a/package/psyneulinkviewer/conda.py +++ b/package/psyneulinkviewer/conda.py @@ -12,6 +12,8 @@ logger = logging.getLogger(__name__) logging.basicConfig(level=logging.INFO) +conda_installed = False + def create_env(): env_name = None try: @@ -24,7 +26,7 @@ def create_env(): envs = envs.splitlines() env_name = list(filter(lambda s: configuration.env_name in str(s), envs))[0] env_name = str(env_name).split()[0] - logging.info("found env %s", env_name) + logging.info("Environment found %s", env_name) logging.info("env_name %s", env_name) if env_name == configuration.env_name: logging.info("Conda environment found %s", env_name) @@ -32,8 +34,9 @@ def create_env(): logging.info("Conda environment not found") if env_name is None: - logging.info("Creating conda environment ") - subprocess.run(configuration.create_env, shell=True) + command = get_conda_installed_path() + configuration.create_env + logging.info("Creating conda environment %s", command) + subprocess.run(command, shell=True) def shell_source(script): @@ -48,26 +51,45 @@ def shell_source(script): def install_conda(): import wget - if os.name == 'posix': - bash_file = wget.download(configuration.linux_conda_bash, out="psyneulinkviewer") + if platform.system() == 'Linux': + bash_file = wget.download(configuration.linux_conda_bash, out="tmp") elif platform.system() == 'Darwin': - bash_file = wget.download(configuration.mac_conda_bashf) + bash_file = wget.download(configuration.mac_conda_bash) logging.info("Installing conda %s", bash_file) logging.info(bash_file) subprocess.run("chmod +x " + bash_file, shell=True) - subprocess.run(bash_file + " -b -u -p ~/miniconda3", shell=True) - subprocess.run("~/miniconda3/bin/conda init bash", shell=True) - subprocess.run("~/miniconda3/bin/conda init zsh", shell=True) + subprocess.run("bash " + bash_file + " -b -u -p " + configuration.conda_installation_path, shell=True) + subprocess.run(configuration.conda_binary + " init bash", shell=True) + subprocess.run(configuration.conda_binary + " init zsh", shell=True) subprocess.run("exec bash bash_scripts/conda.sh", shell=True) - #subprocess.run(configuration.chmod_conda, shell=True) logging.info("Clean up ") subprocess.run("rm -rf " + bash_file, shell=True) - # logging.info("To continue, run command below on terminal and then re-run pip install") - # logging.info("sudo ~/.bashrc") - # sys.exit() + conda_installed = True + +def get_conda_installed_path(): + installation_path = detect_activated_conda_location() + logging.info("installation_path %s ", installation_path) + if installation_path is None: + if platform.system() == "Darwin": + installation_path = configuration.conda_installation_path_mac_default + logging.info("installation_path %s ", conda_installed) + installation_path = configuration.conda_installation_path + + return installation_path.strip() + +def conda_binary_path(): + installation_path = detect_activated_conda_location() + if conda_installed: + installation_path = configuration.conda_installation_path + else: + if installation_path is None: + if platform.system() == "Darwin": + installation_path = configuration.conda_installation_path_mac_default + + return installation_path def check_conda_installation(): conda_version = None @@ -96,6 +118,14 @@ def check_conda_installation(): logging.info("Conda version not up to date, updating version") install_conda() + env_name = detect_activated_conda() + + if env_name is not None: + logging.info("Conda environment found and activated %s", env_name) + else: + create_env() + +def detect_activated_conda() : env_name = None try: env_name = subprocess.run( @@ -106,16 +136,28 @@ def check_conda_installation(): if env_name: env_name = re.search('(?<=active environment : )(\w+)', env_name) env_name = env_name.group(1) - print(type(env_name)) if env_name == "None": - logging.info("Conda version not detected : %s", env_name) + logging.info("Conda environment not detected : %s", env_name) env_name = None else: - logging.info("Conda version detected : %s", env_name) + logging.info("Conda environment detected : %s", env_name) except Exception as error: logging.info("Environment not found active: %s ", error) + + return env_name - if env_name is not None: - logging.info("Conda environment found and activated %s", env_name) - else: - create_env() \ No newline at end of file +def detect_activated_conda_location() : + env_location = None + try: + env_location = subprocess.run( + ["conda", "info"], + capture_output = True, + text = True + ).stdout + if env_location: + env_location = re.search('(?<=base environment : )(/[a-zA-Z0-9\./]*[\s]?)', env_location) + env_location = env_location.group(0) + except Exception as error: + logging.info("Environment not found active: %s ", error) + + return env_location \ No newline at end of file diff --git a/package/psyneulinkviewer/configuration.py b/package/psyneulinkviewer/configuration.py index 963ff75f..b8466866 100644 --- a/package/psyneulinkviewer/configuration.py +++ b/package/psyneulinkviewer/configuration.py @@ -4,6 +4,10 @@ releases_url = 'https://api.github.com/repos/MetaCell/PsyNeuLinkView/releases' application_url = "psyneulinkviewer-linux-x64/psyneulinkviewer" +application_url_mac = "psyneulinkviewer-linux-x64/psyneulinkviewer.app" + + +#Symlink symlink = "/usr/local/bin/psyneulinkviewer" extract_location = "/usr/local/bin" @@ -11,10 +15,17 @@ mac_conda_bash = "https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh" env_name = "psyneulinkview" -chmod_conda = "chmod +x ~/miniconda3/bin/conda" -create_env = "~/miniconda3/bin/conda create --name " + env_name + " python=3.11" -activate_env = "conda activate " + env_name -continue_on_conda = "~/miniconda3/bin/conda run -n " + env_name + " --verbose --no-capture-output --live-stream python -c 'from psyneulinkviewer.start import continue_on_conda; continue_on_conda()'" + +conda_installation_path = "~/miniconda3" +conda_installation_path_mac_default = "/opt/miniconda3" + +conda_binary = "~/miniconda3/bin/conda" +conda_binary_mac_default = "/opt/miniconda3/bin/conda" + +create_env = "/bin/conda create --name " + env_name + " python=3.11" + +binary_commands = " --verbose --no-capture-output --live-stream python -c 'from psyneulinkviewer.start import continue_on_conda; continue_on_conda()'" +continue_on_conda_new_env = "/bin/conda run -n " + env_name + binary_commands rosetta_installation = "softwareupdate --install-rosetta --agree-to-license" diff --git a/package/psyneulinkviewer/node.py b/package/psyneulinkviewer/node.py index 29c0d4a0..cc401a3f 100644 --- a/package/psyneulinkviewer/node.py +++ b/package/psyneulinkviewer/node.py @@ -27,10 +27,25 @@ def check_node_installation(): if node_version is None: logging.info("Node is not installed") - user_input = input("Do you want to continue with node installation? (yes/no): ") + user_input = "yes" + try: + user_input = input("Do you want to continue with node installation? (yes/no): ") + except Exception as error: + logging.info("No input entered, continue with installation of node") + if user_input.lower() in ["yes", "y"]: logging.info("Continuing with node installation...") install_node() + try: + node_version = subprocess.run( + ["node", "--version"], + capture_output = True, + text = True + ).stdout + except Exception as error: + if not isinstance(error, FileNotFoundError): + logging.error("Error with node installation, exiting setup: %s ", error) + sys.exit() else: logging.error("Exiting, node must be installed to continue...") sys.exit() diff --git a/package/psyneulinkviewer/rosetta.py b/package/psyneulinkviewer/rosetta.py index cf2baf43..ee5cef40 100644 --- a/package/psyneulinkviewer/rosetta.py +++ b/package/psyneulinkviewer/rosetta.py @@ -33,7 +33,12 @@ def check_rosetta_installation(): if rosetta_version is None and platform.system() == 'Darwin': logging.info("Rosetta ist not installed") - user_input = input("Do you want to continue with rosetta installation? (yes/no): ") + user_input = "yes" + try: + user_input = input("Do you want to continue with rosetta installation? (yes/no): ") + except Exception as error: + logging.info("No input entered, continue with installation of rosetta") + if user_input.lower() in ["yes", "y"]: logging.info("Continuing with rosetta installation...") install_rosetta() diff --git a/package/psyneulinkviewer/start.py b/package/psyneulinkviewer/start.py index ce1bfaba..4a39670c 100644 --- a/package/psyneulinkviewer/start.py +++ b/package/psyneulinkviewer/start.py @@ -11,7 +11,7 @@ from psyneulinkviewer import configuration from setuptools import setup, find_packages from setuptools.command.install import install -from psyneulinkviewer.conda import check_conda_installation +from psyneulinkviewer.conda import check_conda_installation, detect_activated_conda, detect_activated_conda_location, get_conda_installed_path from psyneulinkviewer.rosetta import check_rosetta_installation from psyneulinkviewer.node import check_node_installation @@ -75,9 +75,13 @@ def get_latest_release(installation_path): assets = releases[1]["assets"] target_release = None + platform_name = platform.system().lower() + if platform.system() == 'Darwin': + platform_name = "osx" for asset in assets : - if platform.system().lower() in asset['name'] : + if platform_name in asset['name'] : target_release = asset["browser_download_url"] + logging.info("System detected %s :", platform.system()) logging.info("Target release url found %s :", target_release) @@ -91,13 +95,24 @@ def get_latest_release(installation_path): logging.info("Opening compressed file %s", filename) tar = tarfile.open(tar_location) + extract_location = configuration.extract_location + permissions = os.access(extract_location, os.W_OK) + logging.info("Extract location permissions : %s", permissions) + tar.extractall(path=extract_location) tar.close() logging.info("Release file uncompressed at : %s", extract_location) application = os.path.join(extract_location, configuration.application_url) + if platform.system() == "Darwin": + application = os.path.join(extract_location, configuration.application_url_mac) + symlink = configuration.symlink + + permissions = os.access(symlink, os.W_OK) + logging.info("Symlink path permission : %s", permissions) + logging.info("Creating symlink at : %s", symlink) logging.info("Application at : %s", application) try: @@ -124,8 +139,18 @@ def prerequisites(): check_python() check_conda_installation() #Install package requirements on conda - subprocess.run(configuration.continue_on_conda, shell=True) - + env_name = detect_activated_conda() + env_location = detect_activated_conda_location() + if env_name is None or env_location is None: + conda_command_binary = configuration.conda_binary + configuration.continue_on_conda_new_env + if platform.system() == 'Darwin': + conda_command_binary = get_conda_installed_path() + configuration.continue_on_conda_new_env + logging.info("Binary command %s ", conda_command_binary) + subprocess.run(conda_command_binary, shell=True) + else: + command = env_location + "/bin/conda run -n " + env_name + configuration.binary_commands + logging.info("Binary command %s ", command) + subprocess.run(command, shell=True) def main(): prerequisites() diff --git a/package/setup.py b/package/setup.py index 69955988..74cc5a7b 100644 --- a/package/setup.py +++ b/package/setup.py @@ -32,7 +32,7 @@ def run(self): setup( name="psyneulinkviewer", - version="0.0.410", + version="0.0.42", url='https://github.com/metacell/psyneulinkviewer', author='metacell', author_email='dev@metacell.us', From 398a4e1e7dd4613a94f1d6af7d4b9b55b7093e45 Mon Sep 17 00:00:00 2001 From: jrmartin Date: Tue, 20 Aug 2024 00:08:11 +0200 Subject: [PATCH 058/126] #PSYNEU-140 - Cleanup --- package/psyneulinkviewer/conda.py | 4 ++-- package/psyneulinkviewer/start.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/psyneulinkviewer/conda.py b/package/psyneulinkviewer/conda.py index 87196519..44ce17ae 100644 --- a/package/psyneulinkviewer/conda.py +++ b/package/psyneulinkviewer/conda.py @@ -137,10 +137,10 @@ def detect_activated_conda() : env_name = re.search('(?<=active environment : )(\w+)', env_name) env_name = env_name.group(1) if env_name == "None": - logging.info("Conda environment not detected : %s", env_name) + logging.info("Conda environment not detected active : %s", env_name) env_name = None else: - logging.info("Conda environment detected : %s", env_name) + logging.info("Conda environment detected active : %s", env_name) except Exception as error: logging.info("Environment not found active: %s ", error) diff --git a/package/psyneulinkviewer/start.py b/package/psyneulinkviewer/start.py index 4a39670c..e8434cc7 100644 --- a/package/psyneulinkviewer/start.py +++ b/package/psyneulinkviewer/start.py @@ -142,7 +142,7 @@ def prerequisites(): env_name = detect_activated_conda() env_location = detect_activated_conda_location() if env_name is None or env_location is None: - conda_command_binary = configuration.conda_binary + configuration.continue_on_conda_new_env + conda_command_binary = configuration.conda_installation_path + configuration.continue_on_conda_new_env if platform.system() == 'Darwin': conda_command_binary = get_conda_installed_path() + configuration.continue_on_conda_new_env logging.info("Binary command %s ", conda_command_binary) From 8fda62e20fd285ab9af8eb0653310094aac4ab08 Mon Sep 17 00:00:00 2001 From: jrmartin Date: Tue, 20 Aug 2024 18:08:40 +0200 Subject: [PATCH 059/126] #PSYNEU-140 - Fix installation issues on MAC --- .../psyneulinkviewer-0.0.42-py3-none-any.whl | Bin 8281 -> 0 bytes package/dist/psyneulinkviewer-0.0.42.tar.gz | Bin 6314 -> 0 bytes package/psyneulinkviewer.egg-info/PKG-INFO | 8 -------- package/psyneulinkviewer.egg-info/SOURCES.txt | 14 -------------- .../dependency_links.txt | 1 - package/psyneulinkviewer.egg-info/top_level.txt | 1 - package/psyneulinkviewer/node.py | 3 ++- package/psyneulinkviewer/rosetta.py | 3 ++- package/setup.py | 2 +- 9 files changed, 5 insertions(+), 27 deletions(-) delete mode 100644 package/dist/psyneulinkviewer-0.0.42-py3-none-any.whl delete mode 100644 package/dist/psyneulinkviewer-0.0.42.tar.gz delete mode 100644 package/psyneulinkviewer.egg-info/PKG-INFO delete mode 100644 package/psyneulinkviewer.egg-info/SOURCES.txt delete mode 100644 package/psyneulinkviewer.egg-info/dependency_links.txt delete mode 100644 package/psyneulinkviewer.egg-info/top_level.txt diff --git a/package/dist/psyneulinkviewer-0.0.42-py3-none-any.whl b/package/dist/psyneulinkviewer-0.0.42-py3-none-any.whl deleted file mode 100644 index 1bae8598982e4adb7367f10f43e3aef45780d1ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8281 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 diff --git a/package/dist/psyneulinkviewer-0.0.42.tar.gz b/package/dist/psyneulinkviewer-0.0.42.tar.gz deleted file mode 100644 index c8c766a6066af306da7cc9999c960fc042dc018c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6314 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 g>7=3.7 -License-File: LICENSE diff --git a/package/psyneulinkviewer.egg-info/SOURCES.txt b/package/psyneulinkviewer.egg-info/SOURCES.txt deleted file mode 100644 index e0600309..00000000 --- a/package/psyneulinkviewer.egg-info/SOURCES.txt +++ /dev/null @@ -1,14 +0,0 @@ -LICENSE -README.md -setup.py -bash_scripts/conda.sh -psyneulinkviewer/__init__.py -psyneulinkviewer/conda.py -psyneulinkviewer/configuration.py -psyneulinkviewer/node.py -psyneulinkviewer/rosetta.py -psyneulinkviewer/start.py -psyneulinkviewer.egg-info/PKG-INFO -psyneulinkviewer.egg-info/SOURCES.txt -psyneulinkviewer.egg-info/dependency_links.txt -psyneulinkviewer.egg-info/top_level.txt \ No newline at end of file diff --git a/package/psyneulinkviewer.egg-info/dependency_links.txt b/package/psyneulinkviewer.egg-info/dependency_links.txt deleted file mode 100644 index 8b137891..00000000 --- a/package/psyneulinkviewer.egg-info/dependency_links.txt +++ /dev/null @@ -1 +0,0 @@ - diff --git a/package/psyneulinkviewer.egg-info/top_level.txt b/package/psyneulinkviewer.egg-info/top_level.txt deleted file mode 100644 index 7c1a94eb..00000000 --- a/package/psyneulinkviewer.egg-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -psyneulinkviewer diff --git a/package/psyneulinkviewer/node.py b/package/psyneulinkviewer/node.py index cc401a3f..2fd1f1a3 100644 --- a/package/psyneulinkviewer/node.py +++ b/package/psyneulinkviewer/node.py @@ -27,11 +27,12 @@ def check_node_installation(): if node_version is None: logging.info("Node is not installed") - user_input = "yes" + user_input = "no" try: user_input = input("Do you want to continue with node installation? (yes/no): ") except Exception as error: logging.info("No input entered, continue with installation of node") + user_input = "yes" if user_input.lower() in ["yes", "y"]: logging.info("Continuing with node installation...") diff --git a/package/psyneulinkviewer/rosetta.py b/package/psyneulinkviewer/rosetta.py index ee5cef40..33faae62 100644 --- a/package/psyneulinkviewer/rosetta.py +++ b/package/psyneulinkviewer/rosetta.py @@ -33,11 +33,12 @@ def check_rosetta_installation(): if rosetta_version is None and platform.system() == 'Darwin': logging.info("Rosetta ist not installed") - user_input = "yes" + user_input = "no" try: user_input = input("Do you want to continue with rosetta installation? (yes/no): ") except Exception as error: logging.info("No input entered, continue with installation of rosetta") + user_input = "yes" if user_input.lower() in ["yes", "y"]: logging.info("Continuing with rosetta installation...") diff --git a/package/setup.py b/package/setup.py index 74cc5a7b..5534e008 100644 --- a/package/setup.py +++ b/package/setup.py @@ -32,7 +32,7 @@ def run(self): setup( name="psyneulinkviewer", - version="0.0.42", + version="0.1.0", url='https://github.com/metacell/psyneulinkviewer', author='metacell', author_email='dev@metacell.us', From 566fe1d4c7b743d6462fcf98ca2c73508d59bf6f Mon Sep 17 00:00:00 2001 From: jrmartin Date: Tue, 20 Aug 2024 23:22:45 +0200 Subject: [PATCH 060/126] #PSYNEU - 140 --- package/README.md | 50 ++++++++++++++++++--- package/dist/psyneulinkviewer-0.1.0.tar.gz | Bin 0 -> 6345 bytes 2 files changed, 44 insertions(+), 6 deletions(-) create mode 100644 package/dist/psyneulinkviewer-0.1.0.tar.gz diff --git a/package/README.md b/package/README.md index b3918df8..6cece49a 100644 --- a/package/README.md +++ b/package/README.md @@ -6,24 +6,62 @@ cd package python3 -m build ``` -To upload to distribution server. You will need token shared privately. +To test local build ``` -twine upload dist/* +pip install dist/psyneulinkviewer-VERSIOn.tar.gz ``` -To pip install local package created in previous steps +To upload to distribution server. You will need token shared privately to be able to upload. ``` -python3 -m pip install --no-index --find-links=package_directory_path + "/dist" psyneulinkview +python3 -m twine upload dist/* ``` -# PsyNeuLinkView Installing from PyPI +To upload to test Pypi server +``` +python3 -m twine upload --repository testpypi dist/* +``` + +# PsyNeuLinkView Installing from PyPI Linux To install from PyPi ``` -pip install psyneulinkview --extra-index-url https://pypi.org/project/psyneulinkview +sudo pip install psyneulinkviewer +``` + +Re-read bash profile after conda installation +``` +source ~/.bash_profile +``` + +Activate psyneulinkview +``` +conda activate psyneulinkview ``` To run psyneulinkviewer ``` psyneulinkviewer ``` + +# PsyNeuLinkView Installing from PyPI MacOS + +To install from PyPi +``` +sudo pip install psyneulinkviewer +``` + +Re-read bash profile after conda installation +``` +source ~/.bash_profile +``` + +Activate psyneulinkview +``` +conda activate psyneulinkview +``` + +Activate psyneulinkview +``` +open /usr/local/bin/psyneulinkviewer-darwin-x64/psyneulinkviewer.app +``` + diff --git a/package/dist/psyneulinkviewer-0.1.0.tar.gz b/package/dist/psyneulinkviewer-0.1.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..fcd2d089ff4396335f6c7d04c352f04fffc82b0d GIT binary patch literal 6345 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 LQpbig0Pp|+w@t#Z literal 0 HcmV?d00001 From d656d9854faa342b034c05b305d022d124147ab0 Mon Sep 17 00:00:00 2001 From: jrmartin Date: Wed, 21 Aug 2024 08:42:00 +0200 Subject: [PATCH 061/126] #PSYNEU-140 - Update installation instructions --- package/.eggs/README.txt | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 package/.eggs/README.txt diff --git a/package/.eggs/README.txt b/package/.eggs/README.txt new file mode 100644 index 00000000..5d016688 --- /dev/null +++ b/package/.eggs/README.txt @@ -0,0 +1,6 @@ +This directory contains eggs that were downloaded by setuptools to build, test, and run plug-ins. + +This directory caches those eggs to prevent repeated downloads. + +However, it is safe to delete this directory. + From 96a8a76939ddcbfefa9c1d191de91993ffc70249 Mon Sep 17 00:00:00 2001 From: jrmartin Date: Wed, 21 Aug 2024 08:57:19 +0200 Subject: [PATCH 062/126] #PSYNEU-140 - Cleanup --- package/.eggs/README.txt | 6 ------ package/bash_scripts/conda.sh | 3 --- 2 files changed, 9 deletions(-) delete mode 100644 package/.eggs/README.txt delete mode 100755 package/bash_scripts/conda.sh diff --git a/package/.eggs/README.txt b/package/.eggs/README.txt deleted file mode 100644 index 5d016688..00000000 --- a/package/.eggs/README.txt +++ /dev/null @@ -1,6 +0,0 @@ -This directory contains eggs that were downloaded by setuptools to build, test, and run plug-ins. - -This directory caches those eggs to prevent repeated downloads. - -However, it is safe to delete this directory. - diff --git a/package/bash_scripts/conda.sh b/package/bash_scripts/conda.sh deleted file mode 100755 index 2a5fd8ea..00000000 --- a/package/bash_scripts/conda.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -source ~/.bashrc -source ~/.profile \ No newline at end of file From 4fd22032fd9aa408f987361fe1094a5c6073f28b Mon Sep 17 00:00:00 2001 From: Jesus M Date: Wed, 21 Aug 2024 09:07:17 +0200 Subject: [PATCH 063/126] Update README.md --- package/README.md | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/package/README.md b/package/README.md index 6cece49a..e65f45dc 100644 --- a/package/README.md +++ b/package/README.md @@ -21,7 +21,7 @@ To upload to test Pypi server python3 -m twine upload --repository testpypi dist/* ``` -# PsyNeuLinkView Installing from PyPI Linux +# PsyNeuLinkView Installing from Linux To install from PyPi ``` @@ -43,7 +43,7 @@ To run psyneulinkviewer psyneulinkviewer ``` -# PsyNeuLinkView Installing from PyPI MacOS +# PsyNeuLinkView Installing from MacOS To install from PyPi ``` @@ -65,3 +65,12 @@ Activate psyneulinkview open /usr/local/bin/psyneulinkviewer-darwin-x64/psyneulinkviewer.app ``` + +# Testing Models + +If all went well with installation, you should see the application running as in screenshot below : +![image](https://github.com/user-attachments/assets/ec84044c-287a-4e39-bdf7-aa27cdc486f9) + +To test models, download [these models](https://github.com/MetaCell/PsyNeuLinkView/tree/feature/PSYNEU-140/test_models) and import one at a time to test. Each time a Model is open, the previous one will disappear. I recommend you start with the models inside 'working_tests', as those are the ones we know for sure should we working. + +To import go to File -> Open Models From f9fc165431104052202dc2878bbc5dd4db867d4e Mon Sep 17 00:00:00 2001 From: jrmartin Date: Fri, 30 Aug 2024 18:10:16 +0200 Subject: [PATCH 064/126] #PSYNEU-138 - Add installation scripts and update read me --- package/README.md | 103 ++++++++++++++++++++++++++----------- package/linux_installer.sh | 2 + package/mac_installer.sh | 2 + 3 files changed, 78 insertions(+), 29 deletions(-) create mode 100755 package/linux_installer.sh create mode 100755 package/mac_installer.sh diff --git a/package/README.md b/package/README.md index e65f45dc..15af8c4b 100644 --- a/package/README.md +++ b/package/README.md @@ -1,70 +1,92 @@ -# PsyNeuLinkView Package Building +# Installing on Linux -To build pip package +Download bash script to install here +It's recommended to download it in your home directory. + +On terminal, go to your root directory ``` -cd package -python3 -m build +cd ~ ``` -To test local build +And run installer ``` -pip install dist/psyneulinkviewer-VERSIOn.tar.gz +sudo bash -i linux_installer.sh ``` -To upload to distribution server. You will need token shared privately to be able to upload. +The application should open up after succesfully installing psyneulinkviewer. + +# Installing on MAC + +Download bash script to install here +It's recommended to download it in your home directory. + +On terminal, go to your root directory ``` -python3 -m twine upload dist/* +cd ~ ``` -To upload to test Pypi server +And run installer ``` -python3 -m twine upload --repository testpypi dist/* +sudo bash -i mac_installer.sh ``` -# PsyNeuLinkView Installing from Linux +The application should open up after succesfully installing psyneulinkviewer. + + +# Installation process inside script + +The scripts above run the following commands in order: -To install from PyPi +Firs installs the python module 'psyneulinkviewer' from PyPi ``` sudo pip install psyneulinkviewer ``` +This commands installs required libraries and packages. Also creates a conda enviroment where the needed packages are installed. -Re-read bash profile after conda installation +After successfully installing the python package above, it reset the user's bash profile to apply the settings changes +- Linux ``` -source ~/.bash_profile +source ~/.profile ``` -Activate psyneulinkview +- Mac ``` -conda activate psyneulinkview +source ~/.bash_profile ``` -To run psyneulinkviewer +Then, the conda environment created is activated with command below: ``` -psyneulinkviewer +conda activate psyneulinkview ``` -# PsyNeuLinkView Installing from MacOS +Finally, the last step of the script opens the psyneulinkviewer application: -To install from PyPi +On linux: ``` -sudo pip install psyneulinkviewer +psyneulinkviewer ``` -Re-read bash profile after conda installation +On Mac: ``` -source ~/.bash_profile +open /usr/local/bin/psyneulinkviewer-darwin-x64/psyneulinkviewer.app ``` -Activate psyneulinkview +The psyneulinkviewer application is installed on user directory: ``` -conda activate psyneulinkview +/usr/local/bin/ ``` -Activate psyneulinkview -``` -open /usr/local/bin/psyneulinkviewer-darwin-x64/psyneulinkviewer.app -``` +# Psyneulinkviewer Requirements + +Psyneulinkviewer requires: +- Python 3.11 and pip +- Pip packages : psyneulink, graphviz, wget, packaging and requests +- Conda 4.9.1 or above +- Node 4.19.0 or above +- Rosetta ( on Mac) + +All of these are downloaded and installed as part of psyneulinkviewer installation process. # Testing Models @@ -74,3 +96,26 @@ If all went well with installation, you should see the application running as in To test models, download [these models](https://github.com/MetaCell/PsyNeuLinkView/tree/feature/PSYNEU-140/test_models) and import one at a time to test. Each time a Model is open, the previous one will disappear. I recommend you start with the models inside 'working_tests', as those are the ones we know for sure should we working. To import go to File -> Open Models + +# PsyNeuLinkView Package Building + +To build pip package +``` +cd package +python3 -m build +``` + +To test local build +``` +pip install dist/psyneulinkviewer-VERSIOn.tar.gz +``` + +To upload to distribution server. You will need token shared privately to be able to upload. +``` +python3 -m twine upload dist/* +``` + +To upload to test Pypi server +``` +python3 -m twine upload --repository testpypi dist/* +``` \ No newline at end of file diff --git a/package/linux_installer.sh b/package/linux_installer.sh new file mode 100755 index 00000000..25577f82 --- /dev/null +++ b/package/linux_installer.sh @@ -0,0 +1,2 @@ +#!/usr/bin/env bash -l +pip install -vv psyneulinkviewer && source ~/.profile && conda activate psyneulinkview && psyneulinkviewer diff --git a/package/mac_installer.sh b/package/mac_installer.sh new file mode 100755 index 00000000..5cfe27ac --- /dev/null +++ b/package/mac_installer.sh @@ -0,0 +1,2 @@ +#!/usr/bin/env bash -l +pip install -vv psyneulinkviewer --break-system-packages && source ~/.bash_profile && conda activate psyneulinkview && open /usr/local/bin/psyneulinkviewer-darwin-x64/psyneulinkviewer.app/ From 4cf3ff759ffaf8816193d42a20e99cd350965ecb Mon Sep 17 00:00:00 2001 From: Jesus M Date: Fri, 30 Aug 2024 18:13:20 +0200 Subject: [PATCH 065/126] Update README.md --- package/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package/README.md b/package/README.md index 15af8c4b..4690fdda 100644 --- a/package/README.md +++ b/package/README.md @@ -1,6 +1,6 @@ # Installing on Linux -Download bash script to install here +Download bash script to install [here](https://raw.githubusercontent.com/MetaCell/PsyNeuLinkView/feature/PSYNEU-140/package/linux_installer.sh). It's recommended to download it in your home directory. On terminal, go to your root directory @@ -17,7 +17,7 @@ The application should open up after succesfully installing psyneulinkviewer. # Installing on MAC -Download bash script to install here +Download bash script to install [here](https://raw.githubusercontent.com/MetaCell/PsyNeuLinkView/feature/PSYNEU-140/package/mac_installer.sh). It's recommended to download it in your home directory. On terminal, go to your root directory @@ -118,4 +118,4 @@ python3 -m twine upload dist/* To upload to test Pypi server ``` python3 -m twine upload --repository testpypi dist/* -``` \ No newline at end of file +``` From 3ce78f17a0170673b8b38543eac5f4600c967e9f Mon Sep 17 00:00:00 2001 From: jrmartin Date: Sun, 1 Sep 2024 18:12:57 +0200 Subject: [PATCH 066/126] #PSYNEU-140 - Cleanup --- package/psyneulinkviewer/conda.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/package/psyneulinkviewer/conda.py b/package/psyneulinkviewer/conda.py index 44ce17ae..bd3c24ba 100644 --- a/package/psyneulinkviewer/conda.py +++ b/package/psyneulinkviewer/conda.py @@ -27,7 +27,6 @@ def create_env(): env_name = list(filter(lambda s: configuration.env_name in str(s), envs))[0] env_name = str(env_name).split()[0] logging.info("Environment found %s", env_name) - logging.info("env_name %s", env_name) if env_name == configuration.env_name: logging.info("Conda environment found %s", env_name) except Exception as error: @@ -140,7 +139,11 @@ def detect_activated_conda() : logging.info("Conda environment not detected active : %s", env_name) env_name = None else: - logging.info("Conda environment detected active : %s", env_name) + if env_name == configuration.env_name: + logging.info("Conda environment detected active : %s", env_name) + else: + logging.info("Active environment not matching : %s", configuration.env_name) + env_name = None except Exception as error: logging.info("Environment not found active: %s ", error) From 7b6c8d8fa2f5b2398e2ffa1f603f2535dc581bf9 Mon Sep 17 00:00:00 2001 From: jrmartin Date: Sun, 1 Sep 2024 19:09:08 +0200 Subject: [PATCH 067/126] #PSYNEU-140 - Update version and cleanup logs --- .../dist/psyneulinkviewer-0.2.0-py3-none-any.whl | Bin 0 -> 8037 bytes package/dist/psyneulinkviewer-0.2.0.tar.gz | Bin 0 -> 7091 bytes package/psyneulinkviewer/conda.py | 1 - package/setup.py | 5 ++--- 4 files changed, 2 insertions(+), 4 deletions(-) create mode 100644 package/dist/psyneulinkviewer-0.2.0-py3-none-any.whl create mode 100644 package/dist/psyneulinkviewer-0.2.0.tar.gz diff --git a/package/dist/psyneulinkviewer-0.2.0-py3-none-any.whl b/package/dist/psyneulinkviewer-0.2.0-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..a90cb96ba2606fbf5753462df360b69515cf76bd GIT binary patch literal 8037 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 literal 0 HcmV?d00001 diff --git a/package/psyneulinkviewer/conda.py b/package/psyneulinkviewer/conda.py index bd3c24ba..cc3f8ec2 100644 --- a/package/psyneulinkviewer/conda.py +++ b/package/psyneulinkviewer/conda.py @@ -61,7 +61,6 @@ def install_conda(): subprocess.run("bash " + bash_file + " -b -u -p " + configuration.conda_installation_path, shell=True) subprocess.run(configuration.conda_binary + " init bash", shell=True) subprocess.run(configuration.conda_binary + " init zsh", shell=True) - subprocess.run("exec bash bash_scripts/conda.sh", shell=True) logging.info("Clean up ") subprocess.run("rm -rf " + bash_file, shell=True) diff --git a/package/setup.py b/package/setup.py index 5534e008..6de3178f 100644 --- a/package/setup.py +++ b/package/setup.py @@ -32,7 +32,7 @@ def run(self): setup( name="psyneulinkviewer", - version="0.1.0", + version="0.2.0", url='https://github.com/metacell/psyneulinkviewer', author='metacell', author_email='dev@metacell.us', @@ -43,6 +43,5 @@ def run(self): cmdclass={ 'install': Install }, - python_requires=">=3.7", - scripts=['bash_scripts/conda.sh'] + python_requires=">=3.7" ) \ No newline at end of file From 5de5806493b3c3c1dd48b35545d1b6c626a0579f Mon Sep 17 00:00:00 2001 From: jrmartin Date: Sun, 1 Sep 2024 19:10:02 +0200 Subject: [PATCH 068/126] #PSYNEU-140 - Delete old version --- package/dist/psyneulinkviewer-0.1.0.tar.gz | Bin 6345 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 package/dist/psyneulinkviewer-0.1.0.tar.gz diff --git a/package/dist/psyneulinkviewer-0.1.0.tar.gz b/package/dist/psyneulinkviewer-0.1.0.tar.gz deleted file mode 100644 index fcd2d089ff4396335f6c7d04c352f04fffc82b0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6345 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 LQpbig0Pp|+w@t#Z From 8b8e2e2a058f52bfa65336a6f486d9c0172b5251 Mon Sep 17 00:00:00 2001 From: jrmartin Date: Thu, 5 Sep 2024 20:38:05 +0200 Subject: [PATCH 069/126] #PSYNEU-140 -Update readme --- package/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package/README.md b/package/README.md index 4690fdda..3f8e4ef4 100644 --- a/package/README.md +++ b/package/README.md @@ -102,7 +102,8 @@ To import go to File -> Open Models To build pip package ``` cd package -python3 -m build +python3 -m pip install build +python3 -m build --sdist ``` To test local build From b922e30e0b001013a446233b02778e02bbdd10ce Mon Sep 17 00:00:00 2001 From: jrmartin Date: Thu, 5 Sep 2024 20:38:50 +0200 Subject: [PATCH 070/126] #PSYNEU-140 - Update version to fix issue with previous one --- .../dist/psyneulinkviewer-0.2.0-py3-none-any.whl | Bin 8037 -> 0 bytes package/dist/psyneulinkviewer-0.2.0.tar.gz | Bin 7091 -> 0 bytes package/dist/psyneulinkviewer-0.3.0.tar.gz | Bin 0 -> 7103 bytes package/setup.py | 2 +- 4 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 package/dist/psyneulinkviewer-0.2.0-py3-none-any.whl delete mode 100644 package/dist/psyneulinkviewer-0.2.0.tar.gz create mode 100644 package/dist/psyneulinkviewer-0.3.0.tar.gz diff --git a/package/dist/psyneulinkviewer-0.2.0-py3-none-any.whl b/package/dist/psyneulinkviewer-0.2.0-py3-none-any.whl deleted file mode 100644 index a90cb96ba2606fbf5753462df360b69515cf76bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8037 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 diff --git a/package/dist/psyneulinkviewer-0.3.0.tar.gz b/package/dist/psyneulinkviewer-0.3.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..86ef671cbfc85b0f28dcebd3273fb176a88a5239 GIT binary patch literal 7103 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 Date: Mon, 9 Sep 2024 17:28:17 -0700 Subject: [PATCH 071/126] Update README.md --- package/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package/README.md b/package/README.md index 3f8e4ef4..a31dd27b 100644 --- a/package/README.md +++ b/package/README.md @@ -10,7 +10,7 @@ cd ~ And run installer ``` -sudo bash -i linux_installer.sh +bash -i linux_installer.sh ``` The application should open up after succesfully installing psyneulinkviewer. @@ -27,7 +27,7 @@ cd ~ And run installer ``` -sudo bash -i mac_installer.sh +bash -i mac_installer.sh ``` The application should open up after succesfully installing psyneulinkviewer. From b42a2eb448e4c31e8f7e0d50cb41f441389cdc61 Mon Sep 17 00:00:00 2001 From: Jesus M Date: Mon, 9 Sep 2024 17:28:42 -0700 Subject: [PATCH 072/126] Update README.md --- package/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package/README.md b/package/README.md index 3f8e4ef4..a31dd27b 100644 --- a/package/README.md +++ b/package/README.md @@ -10,7 +10,7 @@ cd ~ And run installer ``` -sudo bash -i linux_installer.sh +bash -i linux_installer.sh ``` The application should open up after succesfully installing psyneulinkviewer. @@ -27,7 +27,7 @@ cd ~ And run installer ``` -sudo bash -i mac_installer.sh +bash -i mac_installer.sh ``` The application should open up after succesfully installing psyneulinkviewer. From 850981f6a9fd12e5b19bb0235d4541bebd9d5628 Mon Sep 17 00:00:00 2001 From: jrmartin Date: Mon, 9 Sep 2024 17:37:34 -0700 Subject: [PATCH 073/126] #PSYNEU-140 - Update version and install symlink for Mac users on user directory --- package/dist/psyneulinkviewer-0.3.0.tar.gz | Bin 7103 -> 0 bytes package/dist/psyneulinkviewer-0.3.1.tar.gz | Bin 0 -> 7128 bytes package/mac_installer.sh | 2 +- package/psyneulinkviewer/start.py | 6 +++++- package/setup.py | 2 +- 5 files changed, 7 insertions(+), 3 deletions(-) delete mode 100644 package/dist/psyneulinkviewer-0.3.0.tar.gz create mode 100644 package/dist/psyneulinkviewer-0.3.1.tar.gz diff --git a/package/dist/psyneulinkviewer-0.3.0.tar.gz b/package/dist/psyneulinkviewer-0.3.0.tar.gz deleted file mode 100644 index 86ef671cbfc85b0f28dcebd3273fb176a88a5239..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7103 zcmV;w8$jeAiwFq$_t|Cw|8R48Ze?|BX>MzFX=Qh1axE|}GcGVLbYXG;?LBLA+c=W> z%wK`y)Rd%&Nb6}O+SBYRwvy<^uacd~&UsT>N`fp-D3V7~c060Vzx}%Lp!kw3du(TC z1Ju;S0vnA+1Kj|+frhzf?)~M=`tqJyGa9^jl2qeq)4#P^v$g&k^Xs)nz43y4dGQQs z6-HJ7)xY>QQ{xp`M)s2S>YYZrybym z)Xb(?+k15R@3h-#xo@OpzTVp3-*0xBolYI(zg26sUy$~5%75T_(Ka{$o6rCA`rrI_ z(EpA7y#8-0{r@cbzp>W;Es)aMYY=~>`M-7je>6N8oSY9HPyY8?txfvBQQNOG{SQF< z^#;rn^>(e1XT8cCSc( z1sQ=I-D=ty4VHEo+VI^D$$|!Sa!alP%Z=!)O6CEj#G8}p!V0cvl|&w~+*{()AcO+m zB(iK55n5ylRcinlEdWjE&7&JDpa480Rv3Cy+X8%K=1o^i>PA+C_04UEhNK(;h5ETD zp;uTXGio`S?GpSZKam?7s9r@RpkWl)Q^ZjvwmWrJGo(R&cI>4sYQW-*AE5?FS0S_j z>8z5aH?!yXFJ;a0R};q$7gaK|5%pvhL1u`VQ|e+VXvdxxkdQi#1{iFho3(XK9fLvA zePn1PSQKK;&B9xzTVjXWd=}neJ zs5SAfDQgSwZr6)|R89hRfWPil@hMzbjzcC?FbwJi_F9SN1Xw-Dg&WzHLwqk_^<|rB zLjCUtg)~n>>@Z$aHhYJD_qyEXoFXZ$s>7V>U zej1(}R>|P6XQRRSIXN9^!{f7~;Q;c6CkIC#4u>c2$Qvkka(Y3IhR4GTKzeaXutI@q zI565em=wf*A;ix|%XCFpqr{@Ex{t(cf z3{T#Upq9b$;N-%DS|N`Neuf|9{C)rE2&>ZiAAtH1(nk(X&wd#V-@U&e?@x~o2ax$@ z0F?FL91VC?(5Qo>{_wa;4*SRbcLP@H6tIjm1mo0^kM9SVh4uB}zk`e6=?OOD;Pm8T z1V5|L%F#t!^yBb+P$m7*@EjTPc654N)sUS~;*=qQawh|h1zAl}Jpv&3`@{JlMo10^ z{UgA2j)k#_64+Ezrdt0$y8Wk_U;o$D`u|zh|D8hnPpjTgn}Bb4{eSk;I|F9E)8|~c3z4w;X@U1HV zT||)|cK7zKU`4%}m{V`Lw*<^nSpDwh(D1!Pmq-YaVbG;zJ6%}GU;jmZGFPECqW`zD zVFhpSO-Yyh*lU^{?TD|mjkmBT=n}DERZ2_Q|J3~dK>J_2QR~#3`^x^O=Ks;4e|S7F zm$PS>|J$8blgQCa@r598d@!Kf_k3n-q{Q+0c#R6gXO|B@`78FXxgbuBD8I}mQy8H9u{Pf*x_qP?eBm8yEdJXf3ZKbzB?nq z$|W%sgyn~;na5dT*d$LUFUzcLzVFymZc+>v-pZK~&!;X~`NWz7IV4<7r!<_e9OqV6 zf<2HGM^n?XJ#^eZ_`3bGw5ET6-pNw=Bz?2)9FEQpJSZ7rDSJjmzwlc5-=VO>BK28= z?Q&_kGb~HI0M=q%O?ztxp`;*W@IJT8FTL5yp`?^0sYK?1we9tpJ(Qtu*bFqp;3pNHcVjwuQVHmOj03Ct80_J^y?!ILJ z02l$j5PcIalA#$w-!Wdnu$xlyuRT*1=A#OLj;$%lz+f%o3?Ou~TV*vRS>ZBXa5l}* zV`5Ds`klTnu zhQ%WV)gSiqS}|~PGL&%4-;uK{Ua^zJ4hc0a_gM^h^q3gZ1J*R_bw2EEA9F#L;!&L3 zAy?4@<}a@8->T&1ibhod##~*ft^hX;p<06+u-=O?(M$4?fHfzc3 zk%z<9B4wugt!V|M1q7LQbV!*fNmUCR!n)S{vO*vuh!8r*WV=9dvFYXl=tQ!QfglI? zG@PT?hukocruY{Q+hp-7>TIb?L&{}7*@>X;xYLiRHyE812Ic}ZJR9_+tNqudy#$`F zXRL%F0ejrAfCtkB>$yEE1eSz*bo#1QYqh3E<5kBpTD1Avn9SxK!?GHk>1^71wLgCi z+`52C1zLnU6Pi<9&r6q_fjqyk=1r4h1oRipkXX-{&a!%`Ld0YXneZf2@@8c_=zC>|CisKRPeP{TJTHH8t=}ZZlEVs}A$pWaeBwiLqC>ZA zUM2lJ7@ZGKT@#pPUi}thTls82;G#u(bJ^m62G^jg$S=TO#($i~0O~Wvg@c7tqaQF8 zjT4NAu2O5lCmoK_`d(^S@us{!@7Vx7B#vX)7zxw`>2&X7Bx8`M=-!-%hJjQ|Et`{a@+-=d}N;^S?^} zZ_@wcvF+N?cx?K&k8S^t^?!W+w^47mmH%Jqf2IGQ+yDCtc(3%o(*HUA&rH$}QT})8 z|9Z1k?@0e|qXQd%JpEZ$`u|yyu;uxV70tb1sY#1vDE|s?*MF`i!cHu69PbJ(+}Z{# z0o9m4Dx}fMk30`8k^&XxRLR_SXJctk&%&C*Gh#}co+vARa`3!an*+gko!eKdfZ3ll z4GD#hJxQ^7MWZ8@S00aDYe~oBiYC8Jtk9kwFa%|XUQ?$hzu=L`ipKpjUC_757Lt&q?l@Pak|yKrMqG5k6V(JcMYlj&ZRZpR)0Q5a`NG{|JMC|AhKOrzIh zdlOX%AnzZg$zzQcwXS)b8S~c4YnKuRf zAvc!G4n)x9%0VA0^GLA^VCW3fISL(z8hUcMjKu!o5RWM&X}`7t8%_J6N#0X-8;e*_ z#jUuBWk)8|&v~9zl~vTG_{Fz4M(KSL_uXNBuUF}V0pld4g$3q7WC$jV8?gqbIzOBjV9dnM+lFRh0!^S?9a zdykbirCYC@9HRoWXrMR5~(uqw@!=+F;>Lz*{6&WNa_lf#ni=} zRTW{G*sc}avKrC8z=+Tv1=DXiL9-$*l*UZ zLISdUL@A^ZokrvMpol<#{!Rod7mN-)kLUZ4=+!*_iWIbbiQFWyNi=jW8hU#2D{9J4 zLuZTv1I)5kPPAcS+0?uYYZH_ALy6(D4gN2HrD)*hF`4Ki_RB)AC5PW5^{hS5wyXO{ z?V_+uO?B@MgW&!H;c*AU*1iyZu%Oe=<2*vy75vLJzrM0@8J>mOaXoGrqR3M&$5XVW zxt%3D^;=Hkpy4j-pYB|%N-TVwf-39Ebz1`G&MQ`+8yBT^$oj;EH5&t{vO^;$Ui21M zs{_oc6fdJ0IIP(5A9-31$xI(UqF-#b=44yPu22lDXnH>a1J^{@@_K!o=3Q>+7qLj} ziDJ>zb2>*ZaS9}k?^)%^Ff*>0FN4JWswDqJRyo}PT#IXF3&SO_B_ej5l%Gn`bdus`tPc`fz+#lq!ECts7+Lo-E9Q%o_9CBgbjLP3qipSI6-Fsn+R$J(?z*d{_}tL zSku${sxGON|911TQYzYhXRygX&8xs$`Q>^gJ3%G)>N+y9U{=~?4;|}1L2!4IeV~BI zxbHSg$OA14ySCu|)E82iud1K#KIGQYilz$`;`K~X(3VPJ1x1Xzw;^OuWC9Vb-!K^@ zR}_+lZBm+8pC!aqW^NVP1kk^c*h;GMqMM*MBfhW!$_ww_rDgoqH~zO~y#AZH_vwer zzlERvEX7&ks%)zz`BR8?t@7j}Av*#j1>ctDK7yum~$cA-hv zw17GkmI~o`6*!PzlJ{yX-!>C>YuKfQjW=v0l9HCVMkFxmxiQO({Dl|I^lW*wF5MFc zURKlbuIKsf5_7eX|BGnuxC5tauqq2+1(ICxWC{W5tdjzP;;XyBC)08*egK07RDwsa)ps`#9Q%df4tu^!-cM;T@epQd~8im&;M#z!BQaB5{vf?H}#B%JY@sa z|Fy2CscSnJ0U66YKT4I;Qda*ATGkhQL7jrT18cIFw%)-r$oP}k+7rWIjYro&%n5Wp z@M}6fyf+9~M7{Cl+8(-A&|Wyf+gE_YGsN275Nmq_M&dO!!U(Ea%4@I2l#~jOJDB|5 z*ZR;y1Oou}2`=ySKjpK^l@eo0I(O{Sn}W9DHD$xiHZs#F5P5z_G1ZNTNe1=gzCdW2 z05C)W$g!>hN{z@fMBvQ0XXjpU#m1K4I-7s6z--3u@49%=jD0g0sIIx*jOIv4*$WAR z{2B_-VkL(6FZFL{0i@RdYW=@n|F=7@>gxQzTL0(Q|EMt^c>MFO^?$40Y_au!yy3LJQpqh& zGRH{PUhEvCq@I1a%ZHr-+HP}Z&33E=I$`w3!c*zRDc)is>-Qjgcs$_)!JX1{5+~8~G+9Ex` zvz>BJF}sJj-9zlQir+@}&po>ScZubbif4hC-hCcHQo!q|^7@xB`SS-3oq|0x2nFw}oVlmdcHanL(lz~FloqL@f z_cMM8HH|2FZE}Ylmp`otC+**{g?#eJLZ&!MCTQ7kJC($$7jni;L+gV)!A;1VO9{s9Tg9BO-HY{R+D%ps~p|H^nfv%V9c%Z1Sy?#LE&% z?@CNql|MLPuU}s=$@lXTspjgc6maRDn0H`a1|vSyUd%&zcD(SYMcUvIA31-i=iKDg z#JewIVV~O41vKPmcXz%_$FSj_@#*%bx?9I(MKJE1zh#qr#wKnz-(T~l-0P}ajGgc3 z3vg!!b}aKdbW7sQKX%Mxbc1jEnNCPtCHPw1kZ9)$J)QK?+E^eS^>;g|MT$znpXO&@y?FkuO>#{ zx8(!3B?4fLTBBjq>qg^M>7Tqsj7yvxoa3@K+QglfD!zu}-9RJxD@0-92$+NeY)GMr zv7y3pVB*N-5d7^LRvQPstbe-Hd9MD6a{`t|$V>r|wByPJnY?(Bv#?1M&pmC~S-iRz ze&M4G<9;#f&}bxxFEk~`q5BxnWeIM0fImy+NV(2%^a1nV;v_UKp7cFP5EzhuQlO!^pb z({cfWlC_BNaTpITnGG_0GbvTf8^A*I?Ga5V4DE&Q5s7#8e9-VA3=bCEj9KK<6hn>B zO0gj^b3_RA1vj}eu?{i-Tw?KY!w?lu$T?}T38|a~#xQ~A$MNY;MNAxUU=mlI#44N& ziL6SjMkGzB`LVBh*=l13m{SL~4uz4$MxyH&`&Mp(p;i=!m&oDe+Ai@1SY{mM8Ia~? z=HA|Rjg}8X^>{VorLoF75Y_tfU%HgY*S7Y$0NUEw;+7#{_vO}zHuv*}2%M78btj3O zqDuP-cC8B}IFVlj@{Jo~s~xg6ro^Ap`2Z8prFTussp|O`kyTDqlp#|r$WG7sN(+}` zG5SI`7kln;-G10TF=tjq+rnz`IHO(&^urH7kPDAE77YDG(aUzgtsf9bFJdfPW0Gpz zCK)m=dnr%EDcj=YO#l=e5l?(wZ^aUs$*lm(E?BO~?u4lZm1F!HxZ|+Ec4Icjz?Q!v z8Ul)d?IvORpkcZZUYM?5?6DJBMd8}m=kJE{wNmkDT#$IT5uZV1C3g-3RSd9Z|A+p+hI;=` zo&Qk!|2fZpNd2$Qe<=OGQU9O)^v*zc?xUUmfaPB!tN$B~wu=AtEC~Z}&8*0h?vXBO zn04(0!_Vf93}`V78zkC$Z%GXwHt1asKe>MN_H2*(fZ*%AT-^kAY z%}%YY=KrtJ|4Q`L{QvCpzdHZ*_2&QL^Isk46r~Ej-T9vzfv5AU$CCf8^M7kUJ^$C+ z`zrp!^Q22y*s=TMpR~xj8c$ZXgU6=X4;JOOM{1hV1Zw_Q`~PoZ|G(dQt@i(F{+CYR zN0a|;?|(LH&3OKA*V+8vZmIqMv!vpXP2QI1PI08)r-{Av$RUTOjunPPTqu;6*Tvl` z78%oHaXvy89h7}EQ`s-cWqg6FTw-^qOI3E|uS!amOE?^f78ZuI`bUc>r4wsm6m@3I{g6RYuKGdute3$K!UVOHnCY(yxfp3W4l$Xo?Z zuXLX?v?X57Vh3k?B?*_x9<%eby;9~pt$<MzFX=Qh1axE|}GcGYMbYXG;?LBLE+cvWK z%wK`ao*qe!NbBWCwAbw_wvy=9uVXvS_Ih))lmuC9D3X_;>^OV2zx~eOLGdM9c5SD- z0oxOc;9xKqU}gXeFt9i5jlZ5apWjhuLZcT?@-)P=>TjdbZZCghdb81LHeZm>FP`C9 zu-J*9_!r;i)7mEU*qzhe=5}lIRcmLf(X!i{J3FnG@j^fU`A^7he7f*l|I?LAuW4j8 z?6%$9cy#&S-rN*_x5VE@tCNxWW@l?_d%M|cwOb(no7>x4FUaO|%KvYaE!fJ->ClI3&NYoy`06QIC$c=9dVDQA&a-8PA;PlGaHa z5XZkEA&nSh2u88v`iRgWV<_4H$an^5STK#RornVPggA@^W7h$EWD<-QbLz)VjO9&T zk1|q?fkN|4<}ho#kO_4>!}SS%Q=iDS3sf&+5>XaM?ig{@iR+KO#RO?kpFMZ($`UX; z=La(Y>4HHGkj^@p2NQRSe<`n4xEOgZo7Kt0Mbx8342cXA$JEDMP>+ouB8+;T0T^7M zo7Z(o9fv{ELu66UcQ<(l>e?z&W_)lf9Rd|$>5BfoF4x&*zfNXvv&sXW}SQ(oWDDMe@+16w0Cs= zD>;5cdPl#Kp9e?#b<+Ra$!Y)Wj2xdDgTs@9K_AivM|%hF_XkIB$!o}WbbL+@28V-l zKze>mut14w&_6?DhyByNcktSKJvbPg|5`WR49<@b=bPhG(jzCm)APaJ`-9#oIeCA2 za(vc@;`agV(ctLKDU{Mb>>r)mP%5O6{x9%C&ffJ74zMVr_a3M}Mf%9z@yV~JgSYR_ z$-Co&{XQhV?gM4L*9U!36jW;Opf@@sLXKmO1o9pA1r}sA$+QT7 z;QRZteu9wf_j?C`>kKnv6&0|pO{O0IKl=Jlr#Sv^>GA)wjQ@8^*MGLQU+w5wz_&a8 zKl%Bs1(xslImZ8ub}PUBv)$O*(&PW^4Bxt>WjBo@XHL5$-#3f| zhIbOsnL+-kgP zz0&J{+Ww#Rd;5oddp>yv`@aS9&h7tJd%M%@G|~RIHapt>KgaVO8Te2&&%;Hdz$XW; zzxZqz`@yyE1 zM*%17=7=r;{ik1`qisy76E7mVadP(SQUATw>@+q)zSu}NJS1T#OQMm@W;NRw#1%#& z3Ml8)pQtr3Nu(R&($r0`h{z1aBxC}^g>f82H#RYhW1qyhw&gosom>W(kwZp75HBH( zfBfSg#&|-0=Rb^|KOxb=CkYjVr?bT*5G=7=QlwMl<*RLB=(%IDq{wE$!kdsFq&``M z#F+v)ge}Hn%BBm?yHSN;3*^PoHjI1=9rpIVZu`ug@xMXq><qEzvl$#qzyKEGf)pF92p^O7Kfu~^qI-nbD{6fh1Sigo#UFj;t%RPrQM$TSM( z2-^LUp>M)RG7L-VJI*WUc4JC@->_9?(W?OH&>52)43;v? z0YWqTbzV}M6+Y*MVABLWCeAo^ulNi49~9%sh(b^3ik{B1E4W;viL&0H#CSKNIL~1* zVKEKW+PhQ;*sW#1$+df02)bMfxi%BUmv$0_0X_%_E-xDk7HxRJ*zq<-u3wnuSraFM zo^5^J>J+}&Q2bILZzB#Fmh==fQ%?c=mL}7 z62-;M%{kDCWFG=S9`I=}MXwLJ<|0k;7k1lp_B!fprArwVGM{clP%yG_PnQ-ewUB@I*m?eY_)c_9jimzudLBz zx@|d5YkNEycXqa>uYgU}vE**0}satRKlSsszzxh!nmQ%cLinlGh8@L*FY$G{P5dpQKDFJFi}a)^8JQp0Q#) zU;3j!WLXTou~MDl1ew}GSf<(CB8BILaWM>fjk%SRA2 zx&nnpeuYNhjfA!ipgvI?T{vhz!-(r~v_b*;Q=O5pOah}VtVgOgF{n+d%HuTtP(lT- z-N{YpN)m3xVp$Ol1LmU6VN#N)dv0F z-fZjrA6oxw{jc@Ee*P5tpSvU;qWtgF|IK!%xt-Vl%|=`6|L1t*T5jk$@id6$hFY;^ z>KD6N{#=ZtpFpK}!6kY)j1^cSYH)ufqwyk)g8)~gB`Qp*ld0=ZhRUCkhqa|=%vQ^_ zGOv6U;6=BF0D}HHbuSkY_dgg05(*!86~*=?jSqNQbvX2$IUNpbhWa*gm^AUA`d8Ij*C6n~PhJMV9R)t+X)*e)h!#NyFrG&XngxmJXZ3+3 zA8Iy>Cy*&gaHoPMm*HU`PIWhfMpBG_Y!-TM3@t!ewU!4`^+sx|Q`d`u;hr-eO&r3y z*+#MxaC8yHQI*x|yntHmqVaJRVgyvLH9<OZ<1?#+KsvP3WR|`k^JWt*G42 zy97jGnCsCXlku!tBQJB6UiR%(R3U&mf0iYWS6Y_3wP7}SNBLkh^KM7sQ%~I-=(qbK#@cl`f?q+d{`818)tHxu%p9V41k%xLQSF zma=5-0$j7keS(e1>bzJ%X8bxty|6ZSg}bqY!E zC1}MQ1tYOaG)y5HX4d$XRb{QNGem&_W;qKlUSU{PRWHZdl<|HjF~Zv5KM@Q?Bfp5r zM)!YMm3l4R{T``h-D$pF-AAeyg<)!@dDrL!_wNXg+Zk?c3)u!UI{q{)B2-NwzFdjp zODl)rd8jqVHd9pL_%8Y}CyJ&vAbF8Ych<*yHtgFUtDV%GMSb=UF zl)8+!i4S8o4p8TthK_>x4USg(m{cntMssi&vEv`LTN264Za$-*T|VaIQ^&4U3_NRg zJ^~%rM%e0de4OQ7q3f5iNY058(KHJ>M-6dGBu>m()y_aWDOe1HshztCe0S}J2mY{FZ1lZyJQqgdtJ=R*2ZpyG6Py(t?HOOkBdEt|k)Sdm@?5GraFm1O-jf@IFSo?gNVJ@E=b z$qYC}X9SZ7>O|vNwNm}*zjt}nv-7Ghsa5}e{jydmn||l8sh{>`6fDAOvz9kd>AAXz zOf0cV>&&4O-6sj|u38@`Au?&Z)e`c+m4$U{aDVDcDJ&M%D>ff;YwpD384B^zQk2xC zR$4$A(l1*Ak+ol84ALVCMZ;}Uni`*_#8oBUDzYh{Katofs*0kUqBkeLFaatG z@5Y5=ed$^M+pu2!-QM{4!^Pj($DfoqD_phPN=d&;(Qee9yeH&)fTG}=^Z#i7ulE0@ z{J))@c0>Drwg0!w|C=)F_wxha75}l*lK$WAMr*qbx}eqB+T7Ou-{*MLsWq^~ruuEB zP5@&1^362LCzuGu544$v5mArAP=O5>kq7A&b*{<@T|0HQil0YWdBRE|sTiqaWD=uU z=(Bv0zx1G?na_`_OZUWqhZRjc>w9)H$5exfzli3JGmxeMqp}D_An6fLE)$^6J1Gz- zIl2vevK`+M8!&ia9oKjH+s2{#)wa;d#bWC~)M96AxYe=Q%rvsDh=(ISbjHVLf3uuu zE)g54!F!IIX3j&NSpzhGUzXE0jWrelIm?1D&g3&PtNuB(ye-6lIsxCmceFr!KOOEX=IkvZ;CtgvD z#Zb ecLMq*A)w!4~KKmYW_xeJx;~;EP88OEIZht8k`dQ-?miE~zUXQ@8wlC3BSm zkr!uFGtG#YR8Uvp3xujk083_o6z4Lc)QSU322M>{b{a&Nyl+XabNhoCCKG;s+sA{3 z{F}u=O~Vf+v_L{;y^tWtZ%l%gD=|EOYkoTeAU*!qW zX1kNy|JmB^H1zoY8TWs#wafD!8!qp;mGhDJXQsCsVaHW&;FVi&5XfA6s|g=(+;fvk zVQ`Y$MzZu`7a$e&{KH*7>>SYTYtFpdPwv6~I*wwj+vE9(Gi<%XP0Rzi+~Ot1cqY)m zf}zj`X7VM|k_Axyw`%SOnGKF=D8HiCKauJUWuU%mU6P_y(k~UV_!+nPrJOlLC8}s8GUT36A-SALkif!8~e9b~z zWIK4iQSK>b_Yk*xh~2H?x6=J{kEZ`aV)>-vSt6!)??+G+h%)M;{5cqZalwV!xt9{C zVkgNJxc**_)IN@M$639NqjY{+yH(-bv4JB~Zpns)9G@~MOZRQiBtBfp1{fhmdUUPl z|9bwf=l}Zo_n-gE725|b0o*bFZ?`+m{Q1w$wm$#)ob&(u$<2Eo^~42)f6Mg&*|C#N z`)eNtTDh1YF`Bm=a!Zf(%A6-F7YE9K73u2RT}uS(SFs%HU6Y*)6Y@YN=gzs#n)95M zbDYxo4OA~jb8&7`tW+-LmTmLJwm%isUAcKahx==8pI45zM_U-lb5gF2h>*Dt5hNAw z7G^PDWd)^-Ltk?drKnBrSVwutBXX}KlNXDIsyNuG;7$x-<^J`I+dmVL4u!|Xe3GQ6SPGo+K zW=ZY&$A)=~W(eId*9fVj1YfHeQuTa-hDcSgwhRD+mX2#nRK>&bq&l7~<5uy%Z)r>v zl<+LeTiUFN%lOS5%9)%*ni6_yJV`eTKhT&g`%RYzvC$p^iPefKWVdSbbJycZ5_1GT zRCyM@P}5kASH5#tj53wfQydl;%F`RwV(ghr)TiW5B%V0qGf>3NhNiB zW8(@ewm3oZ5=SYOdPQ6u?0(_j5&SiEBCuEg^Whw-R{5Lt){WmSMpiF$)dj~D0${C1 zt7SEtR%@s7FHs}TB|#3_xcnMz>P$-=Z$k>Mp_1YjDwf&;rr-b@QfOmrC{~SZ?70F$ z++D;=6QCE(j~Av$H9rbYz|aVpDIwD9xN1PA4qg;i*whlwJ=e1Hc+G%)7QGDPesSt> z(MS?sx|E!R?&Clg6@0CHB-yo|Ld^uQIf}rz(`cyTX(6A@?6PZF_@*;nspWbr$a5D2 zx=`t|cuD7+6x9p_j~1!md>l!Z)G`d}4o1G_FVVyS5%vZaXeaw;YIr6M^6G^7tK!T5}aJ^C$h{c1_vFI8|ElRiXZX}N?!=~86) zIE;svP6ipi9#v}gHDIB|`p7DjhW5hysN}thA!v98-Gc`=<16x6ilIcPrJRu11tMz8 zC`2WvxpMIiasbBtf+v;WSInoMLl}1AVs6#^UE1UjZ_Z?>)tG>ExV5Y1(O?Wh`@`_~ z=du>+3t*CznZ_zT7^$RMqN7x0(X1eeyZK@h?%HDy<|U3QAs)I?) zxArS}T9WW{e@jHGyVQzEqN*0l{vcDz3hkv@W|<+y^x|MvOh7q%T*k-B3V+6S0Zc^a z!4<7$iWgsGQZ-djj!ZeQJU$a6MjTcq=u6#o{MyoG{b3f!opLqf7FNqkM$J;7AAb0O zoCm~nK+0xiH#7pben23zjIn&IOzKIUROq|>;X)a2?G|Ts3ZP`Gd+O_QN|{PbPic5^ z$*@y3CzwoB^2s}J$KwI|hTK*ThZwe$R|IqppA~}{q%2#BfMv^#n@~FiPD&ir0DaoNI@(DhZylb~wR&9ALa*G=r-oJ}_dE3uVi5wrhp(D+?J~e%|zf zn-W$Kcb`bccT$w?|F1HUv8o9$OS z+6%1xzlpbqUS3*gBsLx>|M$E9vE9V|ANu}Bz5hq+|7YF*!}Y)3|D*N)O8tNG^IHqu z`H!~$2Zn#Gy#DXB^!;DY^I!nBi4!}@J=P^HyJ;L@_~F8q5hH=&oy2$-%&8SRmjJ4Q zilqX)%>nZmL%S8w2(Mk2Cvs>WK~`4*@N z4XHn&{`h8ypV=MYaS#sq2H5*ZiMIdR{%iZMpFg?%FH?no(Ec|X&7A$;Zf-TT{eO-} zi@KiwYx}S5zqbF{{;y^KA27GM)Bd;e_J4D$y`}B{*Jyt&`r7_KyZzVuzrLRRFW>*Q zv)SrsRq*ZFf3XNWo?bqd{NHN-J6l=%-`w76>igfG<+*@?9gipQ(TJVP;b`G{xZRw; z@F>r_q+w`HpzXh&|9=zn|IJrzJ^$DCUpavvP5y7Y|Fzv{FYSM;iS~c9(b4w*IiB*6 zUBNBUy^=`JPZN9VkwZ?6J%=$O4`Qm|1@cT9kBl1dI4_JxhvgsbO!7-|ksN%hR`@aZ zN}V5-tdol469Gr!nS&wCK2b&-ymw;2=pM!24T^_>TO7w}RlvPC}%QU@q|%&V%NQy~iQj)XBjRgOk_=B5TVE z;E}={&6i#OGsP_d-wJ96zpZyHh3#KWyg$du(xEw^5snmM1iEG2hpG2c)L zv4+?-BLX1t@H)ja^&*&&45hVeaz!f>7m>GHxz8Tjipb~ijkCKI1(!)4^8K{CmE3+> z3B&1Ccg(Qei;9XuQYpV^h>*%PNaE_R$xS#F8QDo`fZdEfsMf^S@qEH%bN8PK!ir>T zrK<#%fBKh1$9MlODK_~wVAIftMD?Q|{pd$O`q7Vm^rIjB=tn>L(T{%gqaXd~M?d<> OKmQMD7buMY@BjeRLvKg` literal 0 HcmV?d00001 diff --git a/package/mac_installer.sh b/package/mac_installer.sh index 5cfe27ac..dc1b578c 100755 --- a/package/mac_installer.sh +++ b/package/mac_installer.sh @@ -1,2 +1,2 @@ #!/usr/bin/env bash -l -pip install -vv psyneulinkviewer --break-system-packages && source ~/.bash_profile && conda activate psyneulinkview && open /usr/local/bin/psyneulinkviewer-darwin-x64/psyneulinkviewer.app/ +pip install -vv psyneulinkviewer --break-system-packages && source ~/.bash_profile && conda activate psyneulinkview && open ~/psyneulinkviewer-darwin-x64/psyneulinkviewer.app/ diff --git a/package/psyneulinkviewer/start.py b/package/psyneulinkviewer/start.py index e8434cc7..c498e666 100644 --- a/package/psyneulinkviewer/start.py +++ b/package/psyneulinkviewer/start.py @@ -95,8 +95,10 @@ def get_latest_release(installation_path): logging.info("Opening compressed file %s", filename) tar = tarfile.open(tar_location) - + extract_location = configuration.extract_location + if platform.system() == "Darwin": + extract_location = os.path.expanduser("~") permissions = os.access(extract_location, os.W_OK) logging.info("Extract location permissions : %s", permissions) @@ -109,6 +111,8 @@ def get_latest_release(installation_path): application = os.path.join(extract_location, configuration.application_url_mac) symlink = configuration.symlink + if platform.system() == "Darwin": + symlink = os.path.join(extract_location, "psyneulinkviewer") permissions = os.access(symlink, os.W_OK) logging.info("Symlink path permission : %s", permissions) diff --git a/package/setup.py b/package/setup.py index 9bff3fc0..d7884b16 100644 --- a/package/setup.py +++ b/package/setup.py @@ -32,7 +32,7 @@ def run(self): setup( name="psyneulinkviewer", - version="0.3.0", + version="0.3.1", url='https://github.com/metacell/psyneulinkviewer', author='metacell', author_email='dev@metacell.us', From c0a45f5715e18deb70860916805899659c2837b7 Mon Sep 17 00:00:00 2001 From: jrmartin Date: Tue, 10 Sep 2024 16:46:57 -0700 Subject: [PATCH 074/126] #PSYNEU-140 - Update version, allow installation if users are creating from another codna environment, add --use-pep517 flag --- package/dist/psyneulinkviewer-0.3.1.tar.gz | Bin 7128 -> 0 bytes package/dist/psyneulinkviewer-0.3.2.tar.gz | Bin 0 -> 7118 bytes package/mac_installer.sh | 2 +- package/psyneulinkviewer/conda.py | 7 ++----- package/psyneulinkviewer/start.py | 1 - package/setup.py | 2 +- 6 files changed, 4 insertions(+), 8 deletions(-) delete mode 100644 package/dist/psyneulinkviewer-0.3.1.tar.gz create mode 100644 package/dist/psyneulinkviewer-0.3.2.tar.gz diff --git a/package/dist/psyneulinkviewer-0.3.1.tar.gz b/package/dist/psyneulinkviewer-0.3.1.tar.gz deleted file mode 100644 index 739c7803ea66f809e3eb76fbca57074751806750..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7128 zcmV;}8zMzFX=Qh1axE|}GcGYMbYXG;?LBLE+cvWK z%wK`ao*qe!NbBWCwAbw_wvy=9uVXvS_Ih))lmuC9D3X_;>^OV2zx~eOLGdM9c5SD- z0oxOc;9xKqU}gXeFt9i5jlZ5apWjhuLZcT?@-)P=>TjdbZZCghdb81LHeZm>FP`C9 zu-J*9_!r;i)7mEU*qzhe=5}lIRcmLf(X!i{J3FnG@j^fU`A^7he7f*l|I?LAuW4j8 z?6%$9cy#&S-rN*_x5VE@tCNxWW@l?_d%M|cwOb(no7>x4FUaO|%KvYaE!fJ->ClI3&NYoy`06QIC$c=9dVDQA&a-8PA;PlGaHa z5XZkEA&nSh2u88v`iRgWV<_4H$an^5STK#RornVPggA@^W7h$EWD<-QbLz)VjO9&T zk1|q?fkN|4<}ho#kO_4>!}SS%Q=iDS3sf&+5>XaM?ig{@iR+KO#RO?kpFMZ($`UX; z=La(Y>4HHGkj^@p2NQRSe<`n4xEOgZo7Kt0Mbx8342cXA$JEDMP>+ouB8+;T0T^7M zo7Z(o9fv{ELu66UcQ<(l>e?z&W_)lf9Rd|$>5BfoF4x&*zfNXvv&sXW}SQ(oWDDMe@+16w0Cs= zD>;5cdPl#Kp9e?#b<+Ra$!Y)Wj2xdDgTs@9K_AivM|%hF_XkIB$!o}WbbL+@28V-l zKze>mut14w&_6?DhyByNcktSKJvbPg|5`WR49<@b=bPhG(jzCm)APaJ`-9#oIeCA2 za(vc@;`agV(ctLKDU{Mb>>r)mP%5O6{x9%C&ffJ74zMVr_a3M}Mf%9z@yV~JgSYR_ z$-Co&{XQhV?gM4L*9U!36jW;Opf@@sLXKmO1o9pA1r}sA$+QT7 z;QRZteu9wf_j?C`>kKnv6&0|pO{O0IKl=Jlr#Sv^>GA)wjQ@8^*MGLQU+w5wz_&a8 zKl%Bs1(xslImZ8ub}PUBv)$O*(&PW^4Bxt>WjBo@XHL5$-#3f| zhIbOsnL+-kgP zz0&J{+Ww#Rd;5oddp>yv`@aS9&h7tJd%M%@G|~RIHapt>KgaVO8Te2&&%;Hdz$XW; zzxZqz`@yyE1 zM*%17=7=r;{ik1`qisy76E7mVadP(SQUATw>@+q)zSu}NJS1T#OQMm@W;NRw#1%#& z3Ml8)pQtr3Nu(R&($r0`h{z1aBxC}^g>f82H#RYhW1qyhw&gosom>W(kwZp75HBH( zfBfSg#&|-0=Rb^|KOxb=CkYjVr?bT*5G=7=QlwMl<*RLB=(%IDq{wE$!kdsFq&``M z#F+v)ge}Hn%BBm?yHSN;3*^PoHjI1=9rpIVZu`ug@xMXq><qEzvl$#qzyKEGf)pF92p^O7Kfu~^qI-nbD{6fh1Sigo#UFj;t%RPrQM$TSM( z2-^LUp>M)RG7L-VJI*WUc4JC@->_9?(W?OH&>52)43;v? z0YWqTbzV}M6+Y*MVABLWCeAo^ulNi49~9%sh(b^3ik{B1E4W;viL&0H#CSKNIL~1* zVKEKW+PhQ;*sW#1$+df02)bMfxi%BUmv$0_0X_%_E-xDk7HxRJ*zq<-u3wnuSraFM zo^5^J>J+}&Q2bILZzB#Fmh==fQ%?c=mL}7 z62-;M%{kDCWFG=S9`I=}MXwLJ<|0k;7k1lp_B!fprArwVGM{clP%yG_PnQ-ewUB@I*m?eY_)c_9jimzudLBz zx@|d5YkNEycXqa>uYgU}vE**0}satRKlSsszzxh!nmQ%cLinlGh8@L*FY$G{P5dpQKDFJFi}a)^8JQp0Q#) zU;3j!WLXTou~MDl1ew}GSf<(CB8BILaWM>fjk%SRA2 zx&nnpeuYNhjfA!ipgvI?T{vhz!-(r~v_b*;Q=O5pOah}VtVgOgF{n+d%HuTtP(lT- z-N{YpN)m3xVp$Ol1LmU6VN#N)dv0F z-fZjrA6oxw{jc@Ee*P5tpSvU;qWtgF|IK!%xt-Vl%|=`6|L1t*T5jk$@id6$hFY;^ z>KD6N{#=ZtpFpK}!6kY)j1^cSYH)ufqwyk)g8)~gB`Qp*ld0=ZhRUCkhqa|=%vQ^_ zGOv6U;6=BF0D}HHbuSkY_dgg05(*!86~*=?jSqNQbvX2$IUNpbhWa*gm^AUA`d8Ij*C6n~PhJMV9R)t+X)*e)h!#NyFrG&XngxmJXZ3+3 zA8Iy>Cy*&gaHoPMm*HU`PIWhfMpBG_Y!-TM3@t!ewU!4`^+sx|Q`d`u;hr-eO&r3y z*+#MxaC8yHQI*x|yntHmqVaJRVgyvLH9<OZ<1?#+KsvP3WR|`k^JWt*G42 zy97jGnCsCXlku!tBQJB6UiR%(R3U&mf0iYWS6Y_3wP7}SNBLkh^KM7sQ%~I-=(qbK#@cl`f?q+d{`818)tHxu%p9V41k%xLQSF zma=5-0$j7keS(e1>bzJ%X8bxty|6ZSg}bqY!E zC1}MQ1tYOaG)y5HX4d$XRb{QNGem&_W;qKlUSU{PRWHZdl<|HjF~Zv5KM@Q?Bfp5r zM)!YMm3l4R{T``h-D$pF-AAeyg<)!@dDrL!_wNXg+Zk?c3)u!UI{q{)B2-NwzFdjp zODl)rd8jqVHd9pL_%8Y}CyJ&vAbF8Ych<*yHtgFUtDV%GMSb=UF zl)8+!i4S8o4p8TthK_>x4USg(m{cntMssi&vEv`LTN264Za$-*T|VaIQ^&4U3_NRg zJ^~%rM%e0de4OQ7q3f5iNY058(KHJ>M-6dGBu>m()y_aWDOe1HshztCe0S}J2mY{FZ1lZyJQqgdtJ=R*2ZpyG6Py(t?HOOkBdEt|k)Sdm@?5GraFm1O-jf@IFSo?gNVJ@E=b z$qYC}X9SZ7>O|vNwNm}*zjt}nv-7Ghsa5}e{jydmn||l8sh{>`6fDAOvz9kd>AAXz zOf0cV>&&4O-6sj|u38@`Au?&Z)e`c+m4$U{aDVDcDJ&M%D>ff;YwpD384B^zQk2xC zR$4$A(l1*Ak+ol84ALVCMZ;}Uni`*_#8oBUDzYh{Katofs*0kUqBkeLFaatG z@5Y5=ed$^M+pu2!-QM{4!^Pj($DfoqD_phPN=d&;(Qee9yeH&)fTG}=^Z#i7ulE0@ z{J))@c0>Drwg0!w|C=)F_wxha75}l*lK$WAMr*qbx}eqB+T7Ou-{*MLsWq^~ruuEB zP5@&1^362LCzuGu544$v5mArAP=O5>kq7A&b*{<@T|0HQil0YWdBRE|sTiqaWD=uU z=(Bv0zx1G?na_`_OZUWqhZRjc>w9)H$5exfzli3JGmxeMqp}D_An6fLE)$^6J1Gz- zIl2vevK`+M8!&ia9oKjH+s2{#)wa;d#bWC~)M96AxYe=Q%rvsDh=(ISbjHVLf3uuu zE)g54!F!IIX3j&NSpzhGUzXE0jWrelIm?1D&g3&PtNuB(ye-6lIsxCmceFr!KOOEX=IkvZ;CtgvD z#Zb ecLMq*A)w!4~KKmYW_xeJx;~;EP88OEIZht8k`dQ-?miE~zUXQ@8wlC3BSm zkr!uFGtG#YR8Uvp3xujk083_o6z4Lc)QSU322M>{b{a&Nyl+XabNhoCCKG;s+sA{3 z{F}u=O~Vf+v_L{;y^tWtZ%l%gD=|EOYkoTeAU*!qW zX1kNy|JmB^H1zoY8TWs#wafD!8!qp;mGhDJXQsCsVaHW&;FVi&5XfA6s|g=(+;fvk zVQ`Y$MzZu`7a$e&{KH*7>>SYTYtFpdPwv6~I*wwj+vE9(Gi<%XP0Rzi+~Ot1cqY)m zf}zj`X7VM|k_Axyw`%SOnGKF=D8HiCKauJUWuU%mU6P_y(k~UV_!+nPrJOlLC8}s8GUT36A-SALkif!8~e9b~z zWIK4iQSK>b_Yk*xh~2H?x6=J{kEZ`aV)>-vSt6!)??+G+h%)M;{5cqZalwV!xt9{C zVkgNJxc**_)IN@M$639NqjY{+yH(-bv4JB~Zpns)9G@~MOZRQiBtBfp1{fhmdUUPl z|9bwf=l}Zo_n-gE725|b0o*bFZ?`+m{Q1w$wm$#)ob&(u$<2Eo^~42)f6Mg&*|C#N z`)eNtTDh1YF`Bm=a!Zf(%A6-F7YE9K73u2RT}uS(SFs%HU6Y*)6Y@YN=gzs#n)95M zbDYxo4OA~jb8&7`tW+-LmTmLJwm%isUAcKahx==8pI45zM_U-lb5gF2h>*Dt5hNAw z7G^PDWd)^-Ltk?drKnBrSVwutBXX}KlNXDIsyNuG;7$x-<^J`I+dmVL4u!|Xe3GQ6SPGo+K zW=ZY&$A)=~W(eId*9fVj1YfHeQuTa-hDcSgwhRD+mX2#nRK>&bq&l7~<5uy%Z)r>v zl<+LeTiUFN%lOS5%9)%*ni6_yJV`eTKhT&g`%RYzvC$p^iPefKWVdSbbJycZ5_1GT zRCyM@P}5kASH5#tj53wfQydl;%F`RwV(ghr)TiW5B%V0qGf>3NhNiB zW8(@ewm3oZ5=SYOdPQ6u?0(_j5&SiEBCuEg^Whw-R{5Lt){WmSMpiF$)dj~D0${C1 zt7SEtR%@s7FHs}TB|#3_xcnMz>P$-=Z$k>Mp_1YjDwf&;rr-b@QfOmrC{~SZ?70F$ z++D;=6QCE(j~Av$H9rbYz|aVpDIwD9xN1PA4qg;i*whlwJ=e1Hc+G%)7QGDPesSt> z(MS?sx|E!R?&Clg6@0CHB-yo|Ld^uQIf}rz(`cyTX(6A@?6PZF_@*;nspWbr$a5D2 zx=`t|cuD7+6x9p_j~1!md>l!Z)G`d}4o1G_FVVyS5%vZaXeaw;YIr6M^6G^7tK!T5}aJ^C$h{c1_vFI8|ElRiXZX}N?!=~86) zIE;svP6ipi9#v}gHDIB|`p7DjhW5hysN}thA!v98-Gc`=<16x6ilIcPrJRu11tMz8 zC`2WvxpMIiasbBtf+v;WSInoMLl}1AVs6#^UE1UjZ_Z?>)tG>ExV5Y1(O?Wh`@`_~ z=du>+3t*CznZ_zT7^$RMqN7x0(X1eeyZK@h?%HDy<|U3QAs)I?) zxArS}T9WW{e@jHGyVQzEqN*0l{vcDz3hkv@W|<+y^x|MvOh7q%T*k-B3V+6S0Zc^a z!4<7$iWgsGQZ-djj!ZeQJU$a6MjTcq=u6#o{MyoG{b3f!opLqf7FNqkM$J;7AAb0O zoCm~nK+0xiH#7pben23zjIn&IOzKIUROq|>;X)a2?G|Ts3ZP`Gd+O_QN|{PbPic5^ z$*@y3CzwoB^2s}J$KwI|hTK*ThZwe$R|IqppA~}{q%2#BfMv^#n@~FiPD&ir0DaoNI@(DhZylb~wR&9ALa*G=r-oJ}_dE3uVi5wrhp(D+?J~e%|zf zn-W$Kcb`bccT$w?|F1HUv8o9$OS z+6%1xzlpbqUS3*gBsLx>|M$E9vE9V|ANu}Bz5hq+|7YF*!}Y)3|D*N)O8tNG^IHqu z`H!~$2Zn#Gy#DXB^!;DY^I!nBi4!}@J=P^HyJ;L@_~F8q5hH=&oy2$-%&8SRmjJ4Q zilqX)%>nZmL%S8w2(Mk2Cvs>WK~`4*@N z4XHn&{`h8ypV=MYaS#sq2H5*ZiMIdR{%iZMpFg?%FH?no(Ec|X&7A$;Zf-TT{eO-} zi@KiwYx}S5zqbF{{;y^KA27GM)Bd;e_J4D$y`}B{*Jyt&`r7_KyZzVuzrLRRFW>*Q zv)SrsRq*ZFf3XNWo?bqd{NHN-J6l=%-`w76>igfG<+*@?9gipQ(TJVP;b`G{xZRw; z@F>r_q+w`HpzXh&|9=zn|IJrzJ^$DCUpavvP5y7Y|Fzv{FYSM;iS~c9(b4w*IiB*6 zUBNBUy^=`JPZN9VkwZ?6J%=$O4`Qm|1@cT9kBl1dI4_JxhvgsbO!7-|ksN%hR`@aZ zN}V5-tdol469Gr!nS&wCK2b&-ymw;2=pM!24T^_>TO7w}RlvPC}%QU@q|%&V%NQy~iQj)XBjRgOk_=B5TVE z;E}={&6i#OGsP_d-wJ96zpZyHh3#KWyg$du(xEw^5snmM1iEG2hpG2c)L zv4+?-BLX1t@H)ja^&*&&45hVeaz!f>7m>GHxz8Tjipb~ijkCKI1(!)4^8K{CmE3+> z3B&1Ccg(Qei;9XuQYpV^h>*%PNaE_R$xS#F8QDo`fZdEfsMf^S@qEH%bN8PK!ir>T zrK<#%fBKh1$9MlODK_~wVAIftMD?Q|{pd$O`q7Vm^rIjB=tn>L(T{%gqaXd~M?d<> OKmQMD7buMY@BjeRLvKg` diff --git a/package/dist/psyneulinkviewer-0.3.2.tar.gz b/package/dist/psyneulinkviewer-0.3.2.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..ff0dd45a78c6feea286a898e8e1ea5fa344dcaef GIT binary patch literal 7118 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 Date: Tue, 10 Sep 2024 16:55:31 -0700 Subject: [PATCH 075/126] #PSYNEU-140 - Update readme and bash scripts --- package/README.md | 31 +++++++++++++++++++++++++++++-- package/linux_installer.sh | 2 +- package/mac_installer.sh | 2 +- 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/package/README.md b/package/README.md index a31dd27b..1cb244a2 100644 --- a/package/README.md +++ b/package/README.md @@ -13,7 +13,21 @@ And run installer bash -i linux_installer.sh ``` -The application should open up after succesfully installing psyneulinkviewer. +After installation is done: + +If conda environment is already active, run +``` +psyneulinkviewer +``` + +If conda environment is not active, then run : +``` +source ~/.profile +conda activate psyneulinkview +psyneulinkviewer +``` + +The application should open up after succesfully after this. # Installing on MAC @@ -30,8 +44,21 @@ And run installer bash -i mac_installer.sh ``` -The application should open up after succesfully installing psyneulinkviewer. +After installation is done: + +If conda environment is already active, run +``` +open ~/psyneulinkviewer-darwin-x64/psyneulinkviewer.app/ +``` + +If conda environment is not active, then run : +``` +source ~/.bash_profile +conda activate psyneulinkview +open ~/psyneulinkviewer-darwin-x64/psyneulinkviewer.app/ +``` +The application should open up after succesfully after this. # Installation process inside script diff --git a/package/linux_installer.sh b/package/linux_installer.sh index 25577f82..2e7597d9 100755 --- a/package/linux_installer.sh +++ b/package/linux_installer.sh @@ -1,2 +1,2 @@ #!/usr/bin/env bash -l -pip install -vv psyneulinkviewer && source ~/.profile && conda activate psyneulinkview && psyneulinkviewer +pip install -vv psyneulinkviewer --use-pep517 diff --git a/package/mac_installer.sh b/package/mac_installer.sh index 467ea5dc..43bd3cee 100755 --- a/package/mac_installer.sh +++ b/package/mac_installer.sh @@ -1,2 +1,2 @@ #!/usr/bin/env bash -l -pip install -vv psyneulinkviewer --break-system-packages --use-pep517 && source ~/.bash_profile && conda activate psyneulinkview && open ~/psyneulinkviewer-darwin-x64/psyneulinkviewer.app/ +pip install -vv psyneulinkviewer --break-system-packages --use-pep517 From b090b2ea9a58698a192efd855b32de3aae9f7275 Mon Sep 17 00:00:00 2001 From: jrmartin Date: Mon, 16 Sep 2024 10:27:51 -0700 Subject: [PATCH 076/126] #PSYNEU-145 - Add desktop icons, release new version with previous fixes from #140 --- package/README.md | 39 ++++----- package/dist/psyneulinkviewer-0.3.2.tar.gz | Bin 7118 -> 0 bytes package/dist/psyneulinkviewer-0.4.0.tar.gz | Bin 0 -> 7604 bytes package/linux_installer.sh | 52 +++++++++++- package/mac_installer.sh | 77 +++++++++++++++++- package/psyneulinkviewer.egg-info/PKG-INFO | 11 +++ package/psyneulinkviewer.egg-info/SOURCES.txt | 14 ++++ .../dependency_links.txt | 1 + .../psyneulinkviewer.egg-info/requires.txt | 3 + .../psyneulinkviewer.egg-info/top_level.txt | 1 + package/psyneulinkviewer/conda.py | 1 + package/psyneulinkviewer/configuration.py | 2 +- package/psyneulinkviewer/start.py | 8 +- package/setup.py | 36 +++++++- 14 files changed, 208 insertions(+), 37 deletions(-) delete mode 100644 package/dist/psyneulinkviewer-0.3.2.tar.gz create mode 100644 package/dist/psyneulinkviewer-0.4.0.tar.gz create mode 100644 package/psyneulinkviewer.egg-info/PKG-INFO create mode 100644 package/psyneulinkviewer.egg-info/SOURCES.txt create mode 100644 package/psyneulinkviewer.egg-info/dependency_links.txt create mode 100644 package/psyneulinkviewer.egg-info/requires.txt create mode 100644 package/psyneulinkviewer.egg-info/top_level.txt diff --git a/package/README.md b/package/README.md index 1cb244a2..1d1a9c01 100644 --- a/package/README.md +++ b/package/README.md @@ -3,11 +3,16 @@ Download bash script to install [here](https://raw.githubusercontent.com/MetaCell/PsyNeuLinkView/feature/PSYNEU-140/package/linux_installer.sh). It's recommended to download it in your home directory. -On terminal, go to your root directory +On terminal, go to your home directory ``` cd ~ ``` +Change file permissions to allow user to run it +``` +chmod + x linux_installer.sh +``` + And run installer ``` bash -i linux_installer.sh @@ -27,18 +32,23 @@ conda activate psyneulinkview psyneulinkviewer ``` -The application should open up after succesfully after this. +The application should open up succesfully after this. An icon will be visible on the Desktop as well. # Installing on MAC Download bash script to install [here](https://raw.githubusercontent.com/MetaCell/PsyNeuLinkView/feature/PSYNEU-140/package/mac_installer.sh). It's recommended to download it in your home directory. -On terminal, go to your root directory +On terminal, go to your home directory ``` cd ~ ``` +Give user permissions to file +``` +chmod +x mac_installer.sh +``` + And run installer ``` bash -i mac_installer.sh @@ -58,7 +68,7 @@ conda activate psyneulinkview open ~/psyneulinkviewer-darwin-x64/psyneulinkviewer.app/ ``` -The application should open up after succesfully after this. +The application should open up succesfully after this. A desktop icon should be visible as well. # Installation process inside script @@ -81,27 +91,8 @@ source ~/.profile source ~/.bash_profile ``` -Then, the conda environment created is activated with command below: -``` -conda activate psyneulinkview -``` - -Finally, the last step of the script opens the psyneulinkviewer application: +Then, a desktop file is created on the Desktop which allows users to open the application this way -On linux: -``` -psyneulinkviewer -``` - -On Mac: -``` -open /usr/local/bin/psyneulinkviewer-darwin-x64/psyneulinkviewer.app -``` - -The psyneulinkviewer application is installed on user directory: -``` -/usr/local/bin/ -``` # Psyneulinkviewer Requirements diff --git a/package/dist/psyneulinkviewer-0.3.2.tar.gz b/package/dist/psyneulinkviewer-0.3.2.tar.gz deleted file mode 100644 index ff0dd45a78c6feea286a898e8e1ea5fa344dcaef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7118 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 literal 0 HcmV?d00001 diff --git a/package/linux_installer.sh b/package/linux_installer.sh index 2e7597d9..912d120b 100755 --- a/package/linux_installer.sh +++ b/package/linux_installer.sh @@ -1,2 +1,50 @@ -#!/usr/bin/env bash -l -pip install -vv psyneulinkviewer --use-pep517 +#!/bin/bash +pip install -vv psyneulinkviewer --use-pep517 && source ~/.profile + +# Variables +APP_NAME="PsyneulinkViewer" # Name of the application +SYMLINK_PATH="/usr/local/bin/psyneulinkviewer" # Symlink to the application you want to launch +CONDA_ENV="psyneulinkview" # Conda environment to activate if none is active +ICON_PATH="/usr/local/bin/psyneulinkviewer-linux-x64/resources/app/build/logo.png" # Path to the custom icon +DESKTOP_FILE="$HOME/Desktop/$APP_NAME.desktop" # Path where the desktop shortcut will be created + +# Function to check if a conda environment is already active +is_conda_active() { + if [[ -n "$CONDA_DEFAULT_ENV" ]]; then + echo "Conda environment '$CONDA_DEFAULT_ENV' is already active." + return 0 + else + echo "No active conda environment found. Activating '$CONDA_ENV'..." + return 1 + fi +} + +# Creating the .desktop file for the application +echo "[Desktop Entry]" > "$DESKTOP_FILE" +echo "Version=1.0" >> "$DESKTOP_FILE" +echo "Name=$APP_NAME" >> "$DESKTOP_FILE" + +# Create the Exec command: Check if conda environment is active, if not activate the specified one +echo "Exec=bash -c 'source ~/miniconda3/etc/profile.d/conda.sh && \ +if ! is_conda_active; then conda activate $CONDA_ENV; fi && \ +$SYMLINK_PATH'" >> "$DESKTOP_FILE" + +# Set the custom icon +echo "Icon=$ICON_PATH" >> "$DESKTOP_FILE" +echo "Type=Application" >> "$DESKTOP_FILE" +echo "Terminal=false" >> "$DESKTOP_FILE" +echo "Categories=Application;" >> "$DESKTOP_FILE" + +# Make the .desktop file executable +chmod +x "$DESKTOP_FILE" + +echo "Desktop shortcut created at $DESKTOP_FILE" + +# Function to check if conda environment is active +is_conda_active() { + if [[ -n "$CONDA_DEFAULT_ENV" ]]; then + return 0 # True, environment is active + else + return 1 # False, no environment is active + fi +} diff --git a/package/mac_installer.sh b/package/mac_installer.sh index 43bd3cee..d0376284 100755 --- a/package/mac_installer.sh +++ b/package/mac_installer.sh @@ -1,2 +1,75 @@ -#!/usr/bin/env bash -l -pip install -vv psyneulinkviewer --break-system-packages --use-pep517 +#!/bin/bash +pip install -vv dist/psyneulinkviewer-0.3.3.tar.gz --break-system-packages --use-pep517 && source ~/.bash_profile + +# Variables - adjust these for your setup +APP_PATH="$HOME/psyneulinkviewer-darwin-x64/psyneulinkviewer.app/" # Replace with the full path to the application +CONDA_ENV="psyneulinkview" # Replace with your Conda environment name +ICON_PATH="$HOME/psyneulinkviewer-darwin-x64/psyneulinkviewer.app/Contents/Resources/electron.icns" # Replace with the full path to your custom icon (should be in .icns format) +SHORTCUT_NAME="PsyneulinkViewer" # Name for the desktop shortcut + +# Define paths +DESKTOP_PATH="$HOME/Desktop" +APP_SHORTCUT_PATH="$DESKTOP_PATH/$SHORTCUT_NAME.app" +COMMAND_FILE_PATH="$APP_SHORTCUT_PATH/Contents/MacOS/$SHORTCUT_NAME" +ICON_FILE_PATH="$APP_SHORTCUT_PATH/Contents/Resources/$SHORTCUT_NAME.icns" + +# Create .app structure +mkdir -p "$APP_SHORTCUT_PATH/Contents/MacOS" +mkdir -p "$APP_SHORTCUT_PATH/Contents/Resources" + +# Function to check if a conda environment is active +is_conda_active() { + # Check if the CONDA_DEFAULT_ENV variable is set, meaning a conda environment is active + if [ -z "$CONDA_DEFAULT_ENV" ]; then + return 1 # No active conda environment + else + return 0 # A conda environment is already active + fi +} + +# Write the .command file that launches the app with conda environment +cat < "$COMMAND_FILE_PATH" +#!/bin/bash +source ~/.bash_profile +# Activate conda environment and launch application +source \$(conda info --base)/etc/profile.d/conda.sh +if ! is_conda_active; then conda activate $CONDA_ENV; fi +open "$APP_PATH" +EOL + +# Make the script executable +chmod +x "$COMMAND_FILE_PATH" + +# Copy the custom icon +cp "$ICON_PATH" "$ICON_FILE_PATH" + +# Create Info.plist for the app +cat < "$APP_SHORTCUT_PATH/Contents/Info.plist" + + + + + CFBundleExecutable + $SHORTCUT_NAME + CFBundleIconFile + $SHORTCUT_NAME + CFBundleIdentifier + com.example.$SHORTCUT_NAME + CFBundleName + $SHORTCUT_NAME + CFBundleVersion + 1.0 + CFBundlePackageType + APPL + + +EOL + +# Set the correct file permissions for the .app +chmod -R 755 "$APP_SHORTCUT_PATH" + +# Touch the app to refresh Finder so it displays the correct icon +touch "$APP_SHORTCUT_PATH" + +echo "Shortcut created at $DESKTOP_PATH/$SHORTCUT_NAME.app" + diff --git a/package/psyneulinkviewer.egg-info/PKG-INFO b/package/psyneulinkviewer.egg-info/PKG-INFO new file mode 100644 index 00000000..8aa3736e --- /dev/null +++ b/package/psyneulinkviewer.egg-info/PKG-INFO @@ -0,0 +1,11 @@ +Metadata-Version: 2.1 +Name: psyneulinkviewer +Version: 0.4.0 +Home-page: https://github.com/metacell/psyneulinkviewer +Author: metacell +Author-email: dev@metacell.us +Requires-Python: >=3.7 +License-File: LICENSE +Requires-Dist: requests +Requires-Dist: wget +Requires-Dist: packaging<=24.0 diff --git a/package/psyneulinkviewer.egg-info/SOURCES.txt b/package/psyneulinkviewer.egg-info/SOURCES.txt new file mode 100644 index 00000000..478c163b --- /dev/null +++ b/package/psyneulinkviewer.egg-info/SOURCES.txt @@ -0,0 +1,14 @@ +LICENSE +README.md +setup.py +psyneulinkviewer/__init__.py +psyneulinkviewer/conda.py +psyneulinkviewer/configuration.py +psyneulinkviewer/node.py +psyneulinkviewer/rosetta.py +psyneulinkviewer/start.py +psyneulinkviewer.egg-info/PKG-INFO +psyneulinkviewer.egg-info/SOURCES.txt +psyneulinkviewer.egg-info/dependency_links.txt +psyneulinkviewer.egg-info/requires.txt +psyneulinkviewer.egg-info/top_level.txt \ No newline at end of file diff --git a/package/psyneulinkviewer.egg-info/dependency_links.txt b/package/psyneulinkviewer.egg-info/dependency_links.txt new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/package/psyneulinkviewer.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/package/psyneulinkviewer.egg-info/requires.txt b/package/psyneulinkviewer.egg-info/requires.txt new file mode 100644 index 00000000..3f10f0cf --- /dev/null +++ b/package/psyneulinkviewer.egg-info/requires.txt @@ -0,0 +1,3 @@ +requests +wget +packaging<=24.0 diff --git a/package/psyneulinkviewer.egg-info/top_level.txt b/package/psyneulinkviewer.egg-info/top_level.txt new file mode 100644 index 00000000..7c1a94eb --- /dev/null +++ b/package/psyneulinkviewer.egg-info/top_level.txt @@ -0,0 +1 @@ +psyneulinkviewer diff --git a/package/psyneulinkviewer/conda.py b/package/psyneulinkviewer/conda.py index 94a0ce4f..05238d74 100644 --- a/package/psyneulinkviewer/conda.py +++ b/package/psyneulinkviewer/conda.py @@ -31,6 +31,7 @@ def create_env(): logging.info("Conda environment found %s", env_name) except Exception as error: logging.info("Conda environment not found") + env_name = None if env_name is None: command = get_conda_installed_path() + configuration.create_env diff --git a/package/psyneulinkviewer/configuration.py b/package/psyneulinkviewer/configuration.py index b8466866..afbb8027 100644 --- a/package/psyneulinkviewer/configuration.py +++ b/package/psyneulinkviewer/configuration.py @@ -4,7 +4,7 @@ releases_url = 'https://api.github.com/repos/MetaCell/PsyNeuLinkView/releases' application_url = "psyneulinkviewer-linux-x64/psyneulinkviewer" -application_url_mac = "psyneulinkviewer-linux-x64/psyneulinkviewer.app" +application_url_mac = "psyneulinkviewer-darwin-x64/psyneulinkviewer.app" #Symlink diff --git a/package/psyneulinkviewer/start.py b/package/psyneulinkviewer/start.py index 3f4e3806..5a0d7ae4 100644 --- a/package/psyneulinkviewer/start.py +++ b/package/psyneulinkviewer/start.py @@ -45,12 +45,8 @@ def check_graphviz(): def check_psyneulink(): logging.info(configuration.psyneulink +" installing") try: - result = subprocess.run( - ["pip", "install", "psyneulink"], - capture_output = True, - text = True - ).stdout - logger.info("Success installing psyneulink %s ", result) + subprocess.check_call([sys.executable, "-m", "pip", "install", "psyneulink"]) + logger.info("Success installing psyneulink") except Exception as error: logger.info("Error installing psyneulink") diff --git a/package/setup.py b/package/setup.py index 832d58c2..dcb84a4c 100644 --- a/package/setup.py +++ b/package/setup.py @@ -8,6 +8,24 @@ logger = logging.getLogger(__name__) logging.basicConfig(level=logging.INFO) +# Check if running in a conda environment +in_conda = 'CONDA_PREFIX' in os.environ + +# Define common dependencies +common_requires = [ + 'requests', + 'wget', + 'packaging<=24.0' +] + +# Define extra dependencies for conda environments +conda_requires = ['psyneulink'] + +non_conda_requires = [] + +# Combine dependencies based on environment +install_requires = common_requires + (conda_requires if in_conda else non_conda_requires) + class Install(install): user_options = install.user_options + [ ('path=', None, 'an option that takes a value') @@ -26,19 +44,33 @@ def finalize_options(self): def run(self): global path path = self.path # will be 1 or None + + package_name = 'psyneulinkviewer' + + # Try to uninstall the package using pip + try: + result = subprocess.run(['pip', 'uninstall', '-y', package_name], + capture_output = True, + text = True + ).stdout + subprocess.run(['pip', 'cache', 'purge']) + logging.info(f"Previous version of {package_name} uninstalled {result}.") + except subprocess.CalledProcessError: + logging.info(f"No previous version of {package_name} installed or uninstall failed.") from psyneulinkviewer.start import prerequisites prerequisites() install.run(self) setup( name="psyneulinkviewer", - version="0.3.2", + version="0.4.0", url='https://github.com/metacell/psyneulinkviewer', author='metacell', author_email='dev@metacell.us', setup_requires=['requests', 'wget', - 'packaging'], + 'packaging<=24.0'], + install_requires=install_requires, packages=find_packages(), cmdclass={ 'install': Install From bd2e06529c51aa14d1172d057413bc5de2131bfa Mon Sep 17 00:00:00 2001 From: jrmartin Date: Tue, 17 Sep 2024 06:05:35 -0700 Subject: [PATCH 077/126] #PSYNEU-145 - Fix wrong install path --- package/mac_installer.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/mac_installer.sh b/package/mac_installer.sh index d0376284..d5ac8e33 100755 --- a/package/mac_installer.sh +++ b/package/mac_installer.sh @@ -1,5 +1,5 @@ #!/bin/bash -pip install -vv dist/psyneulinkviewer-0.3.3.tar.gz --break-system-packages --use-pep517 && source ~/.bash_profile +pip install -vv psyneulinkviewer --break-system-packages --use-pep517 && source ~/.bash_profile # Variables - adjust these for your setup APP_PATH="$HOME/psyneulinkviewer-darwin-x64/psyneulinkviewer.app/" # Replace with the full path to the application From 8915a64ea36ae40eeb4ea26e92583e19ed8867d6 Mon Sep 17 00:00:00 2001 From: jrmartin Date: Thu, 19 Sep 2024 23:48:51 -0700 Subject: [PATCH 078/126] #PSYNEU-140 - Check for python 3.7 to 3.12 --- package/dist/psyneulinkviewer-0.4.0.tar.gz | Bin 7604 -> 0 bytes package/dist/psyneulinkviewer-0.4.3.tar.gz | Bin 0 -> 7635 bytes package/psyneulinkviewer.egg-info/PKG-INFO | 2 +- package/psyneulinkviewer/conda.py | 2 +- package/psyneulinkviewer/node.py | 12 ++++++++---- package/psyneulinkviewer/start.py | 4 ++-- package/setup.py | 2 +- 7 files changed, 13 insertions(+), 9 deletions(-) delete mode 100644 package/dist/psyneulinkviewer-0.4.0.tar.gz create mode 100644 package/dist/psyneulinkviewer-0.4.3.tar.gz diff --git a/package/dist/psyneulinkviewer-0.4.0.tar.gz b/package/dist/psyneulinkviewer-0.4.0.tar.gz deleted file mode 100644 index fdf81a97f6138b5e13b90ba7c23d2360d15563a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7604 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 diff --git a/package/dist/psyneulinkviewer-0.4.3.tar.gz b/package/dist/psyneulinkviewer-0.4.3.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..6bcc16d7eab1ce113e65b884d4ff7897083aab7c GIT binary patch literal 7635 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 Version(configuration.node_required_version): - logging.info("Node version exists and valid, %s", node_version) - else: + if node_version is None: logging.error("Node version not up to date, update required") - install_node() \ No newline at end of file + install_node() + else: + if Version(node_version) > Version(configuration.node_required_version): + logging.info("Node version exists and valid, %s", node_version) + else: + logging.error("Node version not up to date, update required") + install_node() \ No newline at end of file diff --git a/package/psyneulinkviewer/start.py b/package/psyneulinkviewer/start.py index 5a0d7ae4..dd71f694 100644 --- a/package/psyneulinkviewer/start.py +++ b/package/psyneulinkviewer/start.py @@ -24,8 +24,8 @@ def check_os(): logging.info("OS version supported") def check_python(): - if not sys.version_info.major == 3 and not sys.version_info.minor == 7 : - logging.error('Python version not supported, 3.11 is required. %f' , sys.version_info) + if not (3, 7) <= sys.version_info < (3, 12): + logging.error('Python version not supported, python 3.7 to 3.11 is required. %f' , sys.version_info) sys.exit('Python version not supported, 3.11 is required.') else: logging.info("Python version is supported") diff --git a/package/setup.py b/package/setup.py index dcb84a4c..c977e8b0 100644 --- a/package/setup.py +++ b/package/setup.py @@ -63,7 +63,7 @@ def run(self): setup( name="psyneulinkviewer", - version="0.4.0", + version="0.4.3", url='https://github.com/metacell/psyneulinkviewer', author='metacell', author_email='dev@metacell.us', From 32932ddaae40814bb3d67a0d431527ceb504b285 Mon Sep 17 00:00:00 2001 From: jrmartin Date: Fri, 20 Sep 2024 00:11:46 -0700 Subject: [PATCH 079/126] #PSYNEU-140 - Version update --- package/dist/psyneulinkviewer-0.4.3.tar.gz | Bin 7635 -> 0 bytes package/dist/psyneulinkviewer-0.4.4.tar.gz | Bin 0 -> 7656 bytes package/psyneulinkviewer.egg-info/PKG-INFO | 3 ++- package/psyneulinkviewer.egg-info/requires.txt | 1 + package/setup.py | 6 +++++- 5 files changed, 8 insertions(+), 2 deletions(-) delete mode 100644 package/dist/psyneulinkviewer-0.4.3.tar.gz create mode 100644 package/dist/psyneulinkviewer-0.4.4.tar.gz diff --git a/package/dist/psyneulinkviewer-0.4.3.tar.gz b/package/dist/psyneulinkviewer-0.4.3.tar.gz deleted file mode 100644 index 6bcc16d7eab1ce113e65b884d4ff7897083aab7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7635 zcmV;^9W3G>iwFqE8SQ2Q|8R48Ze?|BX>MzFX=Qh1axE|}G%hnPbYXG;?LBLE+cvWO z%wK`ao*qe!Nb6-O(XG1c+Df8ZzmDxR?e*qpX$i8}NTikzJ8n<=+waT(p!l@p)N%H1 z$UZEBgTY`hm;o@rz}zu+{(fqGc+IUT_rCfhPeVLKe;bW&%EXeIkRNM5hqYIb@}?EkyHUgs;e`;`6vSMG=Y(((e^;lJg; z0oZKzpV$88zk~j7b+h`vUF!cQ(f_Tr{_j99ZMH7b0v_CvPA3k3H?{+#x z`oGoaHc|g~0jS$-!S`mb(b)ZpHJ-Bnf1&z+-(B5#_Vqkq)k%%D8qMeIV$Rv=T`+eY zc4|%DTi3R8&Gte_@a*7D(@wd!w0+-(@3zn8+~Zew?Ao)OfKTge=5fy48Jo;4@0!(6x~{1s7$kj#3=JfUd`!8WyUS!vY+sv&o&!a4$}@F=WmMv?d=g*^g3sK=!o9_+ zO+yF=wBwz!q)~zZ(`EzTrU{_o+49W%eTCwVQSUmI# zC$OyrTe%*Um#(G><-Z=X^OKhsZ}-lIY;?{}&rW_C9SjeczIP7qdY!!;UA#VdbHM=O zZ14Eu7k2WJ?H&KZejFVi)YX3<>=xValSk`V|(m$@9bi<|K@P- zjGewYJ3TocLh%QH_IPys@(fBD9u1E#Oehu7*zhNKVdt;+4iB*?ZSM_Ge}?q2{gcyQ z&PK0ZU$ECFhX+GQ{9y=`?fq~#6h%R$_7C?)M|F0vceM9vNV!e`%bA8?f;#s0^$?S= zygm4L|6+7>|qgc62_hv%Ry?IWpws*~w8|Lv})r6G8&{j)wvZ zvYI7Y1VHfp&G|4w$PR{khk)xGGh-DMuvwbSa{T}3>p$)6_`g|>|DR<1-^*S9=`?%g zB;X4k|DXQ&$^grE@)YC$MhE(Ta{Z^*=rzmn|5H3iJg}x#U>QHb=o5x-ebzFY+Of6d zeU_FDErKB-(O$btZmg_p0G$WH%J1*&T*HVuyfP>5a%TycCouZm$)FK)i9S;hGQr?W z%U<+hB!BaF^~nr9^NBNT;pTWaqm@VM0APHkx68B7hUNf~(Q1QW<1Ii_LrfLmL5@`pxGU{_~&OWXk@eAKL!ha;`b8H^x@RXl>5I zB{p0c^zh9K9VlMpo-f@gd&WMnYz+j~J!dL1s4tAtiN}UroNWdbP?^LsrR_uQ9p2Zp z(TvvmEXJK1+jAXUEXB{(!UL0j$E-OXxDgF)E`7jpGIpieSzi!qcZbK5%iu z*`GV+%5#xZn!rHdR=`u^$AW@sZF03**b`ARf9{5hDRWm)R=8q*IGJ#N7A_W072*S~ zR+?-NcmTz*TU)GA-q^l<1&t+_a1XfuK5$pe^4Tp8BQ-58=tq0|pI6M6*5oq_`73Bu zA;>8ar^bwl^aqwEb}M-<$n>bvOmgyPW{zP@E$`NLj1S#T=9>xPw(|&5kJTJ+C;ESl z%8%_LFq0C!fO?9|73(WGokJ7=l>&@DHj+K%vR?=~#BX1^6Ob)wzr%8AIaAEbTo0xc z(5NqM&sPoZ6Z}fJmq55eprewmdxgzBcgargPHn;SaO$#^y^8u}t}3}eH%6>{S)M0m zc~elYSDxje=K`G`vKu0w7QV|SAYTD~N(cnW!!0TSBHQ5{d!@?C$T1@Yd}=Du7VRM$ z#9k|%Sj8mr%mmE$ikP>JkyGzF^r`Ye~OZ*)^dERMs zIuoPyyk{95-hN?RO=msBvRb{#bkcd=oxK2VU4X5E8lftH>eScf?ou#Nr014gWODNK1*mhUsRX74j|o9dJrCpKvm7&JJ1|6 z^1FImwJ4-Z1SYXl)=CTlaB++o-?J0!jzVOZ?0hknNk2blKZN!IJ>!Jv3SUU=%08ur z59(DYvo5pE_IA-_JupKR1O-P#_%9?)@1%PJUbtqI3{q^y#6i1 z7OqHYaKNM-@?dpm|-J z0PGxB37Ju5aTQjdHFqV+{9yy8o}-|NYt4|8n<#qX)26 zt^$6!>woFwoxj@uAGH4){x*B%{_oQNQ|kYx^#AO>XtjF1X6gSa^?yeHkH@xS2jj81 zx_fN@kJA6$9{$s6gZ^*tcFO%9rT#DV|I_;apEsMkjZ*)Y`ai4xX;u7Vl>bKk-)uL# zT{-@5ba!!{&}ujE{Aa2EKm8+D3s(y(n7Q6kQ){BW`sLrPe}-3bC0eB{+-qDz*9x$B zTq8%0&x3FkxGt`FN>rFqXEWQGj@62N8rGD)98)a_%DnPbfM*xZ1rW&V%)SmiTH)3- zBosal6vgH>4-P4Je3Sq_d|dO_^g^c^ea7cfr$Y5Q(*atq z>kHct^mp|H(8OBdqW9PhgH;#+#tSdxNsxelP#;+Ip=SEQ6f#8#_Ds+uU7^S1oQy|%>_q?!Us%hlsm1($vXRUP9Gwt>SM_UkDxg-oY`iN% zjDYI3CP=Af;8pY4&djaq!u$ z*pU9<%C+S)?s=}a#=i+SwiMylYg!JcNc6OHy`Y7Ytt&enWPmO*PDwiS)nHz&v1ch} ztYyB4S_Dw%(voBoGi0f2!c%=gey=ls&KHXTif>I+hWZ?(j)hyZDqPgE@9DaJ?k+j` zanKWUYdN&TgD=AcI_k+6Mh64Y4W|nfI*K5=Mn&I=9Iig@rijyiV|h0E3w)Ek=5$Jr zS?J)DC-m&Vgz^Q?(<-!%Iu^gI>=jRT{!{caRdo|s^WRvU&c2a;cc?#g)Il72bUIA( z1+hjd0MU~s4IT9N@pbP=w$O>lK&>G%*Oc-CEK_?DRIAv@WgpWA0N1RMHwu%<-%r^R z`k*GM@lDA#Gh9uP3V5vveJO=Yh?-KFl3lb-TZ*hQE+$x{fGc@_wlhie4{C*|fLb<7>RYO} z=+V9%9lB}+o0XDuKH7AU$OFH1W?V5NWX6gb<%VY#v$%e$izaj}7j z&>scUZy7{6t+2n~7Hz1}^O@rauW2q(-XnJsfABC(Jt5hlWX+C1t;{l%pW3{zt zDiNUP6v3)F(xGSZeB(2{p2c5Ny(^m|V;PFNhAz5>p0tE{RoO~(#@JziSys3R3am*{ z^-`>jS@Mr1Mwl4p&Va%Fn-YtaS;eznE z!fH--@4&}KYk##OWs%u8;0LS?VqjOCfvw2 zu(dc)wlH=EjSI2iRR5{vnUe%JBYhB?<>c$sSR==0KH0hLcJnuiQKCx7oy{d!5nmAy zDyoP|w*7)ZGy&dDFJXl~@p3`VbT~$*2Qvq5d6RjyQvKU^1F^e0!P`EoRsV7OtX9dJ zi>I)upXRmahO26`mNroFiMx(W%&|(_OsFH>CkgHsEfy5bxD($pJ!Bg)wj$xd>j%TU zl>=Esf!d7QURC;i@*Eq~+h>AzfbX~b5Srt(A94}c2pPB z*KfL(Kc_?}Ix?ken#UI$#ytKw^cIj_Q73n-m2JjO@6d^d!ZSPyNkxktRFW9=jLgzv ze(otsJ)IvHlyY%wIEty`nYHt~C8lb=_=|XULf_k=Q!G1Iwv$snj4wSH8^woWsZ4-6 z?TtX7=+H4R%CsCy?7*PNI<{le+s={t)i%(ZC$eNs- z|7=*^QX^S zlBr5TpBKj<6U~U2R8&{t^ni{TMZ{fij^mE-?%{2$-{`Jz#d|I6`zcKnYD z^CP!^ZW{l0+TD)Y|Jj2nD2)GGy>=P@=_&VrZnewv0UItKxRvvf_h-hp6`|lN&u`(b z8wAp~-d#e&jR)>a$&5`>J4e=z>kOo#o<3}HTc?2TUp%L3e{!ew=kX0=-5$?1oM7t) z&oG4wxyLb#5i_8H1w)|?^yo{XB{QJ(x2hkwiH(eEBwtYLzp?5a_d$Kv`YgULbaR{J zRZP$TQ-Oecc-cd;@WjyDoyB`qe%*mGJ?UMN>|TSJ3m243wTAl(FDV1a>z)2?gQFR# zQa3zgnPQq|fqPkKi==?38|8uB>;c{F0p0H2?pNr?dO*|vrEd92yJt=}-Mj@sQ6S2w zi}IIX{KW+qYO`LfLuG{|Rp9p9H?~$Fl1kDb_imKnQCO>-9Vam%&TR2gJ4NF36z?F( zohH}r*AX$&3-*sB%HF>1K9Vb0&XlA6a{gb=|FiS|^89}}|1X;V%LUtyS_0TG|8KWD z&Gh;IPOn?e|DSOFpFX+y;G>?nfbjoveLxC!v`>HQ^FM`)2@<1z&tbOs7%R_rQn)yf z2dqd}-!?4~Y+uEEteYk~mpbHuOxDJ^&X)6>!Z}Xv{06F*qB%P^$yO?ra?eirY}=oS z>K5*oPvQQYJLZ+&?a>xS(wvl28xfTCV>*(Gs0uTO&$5D&$Dz-;h?3PN8`e=i?OIA6 zdy1D+BIWuKGjvtbUz?}Fg<(Js6fD9x*|iqS^=8pzc5++a{buU+VxF!D6irKu{l6AYOB13 z=ER#MqyyCtS4cOXR`MJgsSqaT(G)DorYDFIyD4J?VG-4Ko%L$$y8%%lF^mx<`;I;~ zTeTurO+{Wr5qC>OW!Kg2&9>RYK`Y%>VXto_G1)h>3ae*|t>v)g{&F&yx8PO^Bjhe% zn%WkgyNe>ZmJ#hHf2Lxis~sg?T_U#ifT6QOCrotbo~t_&S@%$Th)KB>`jpWl|HM)&Qa{#fI$^U zIiBHgp;E7i8+`5G=sSY{z%38V$^X2)fT~q~HeT7m>+s6hTiNQS;R*w=R-@H2noXni zyz+;r5phY7gC;1wSQwnf$6}Vs{r1;+h&NO@LlD z-(Bh=RevWq0V5Y=ri6$usH%~XIslPb>QZYh4_s7EWw5mcTG2n zp+`WM6@0C{W64FAOw9zae&vDf<=$AuvO+%V$@R~?&`IZ1srAAqsKGucgG{CKVijEw zDXJM5p7Bvp@(4+i)I1F87C%~imuSG;e&gfnP+`y`2^m#2EqKXti-b+IjnWr`d?k}E z%9LG<%Bke&mx|;R&=5a31j8o^IrOV*JJp<+TdLqZCcX8<8gCAR;-$!VZ5V(qo(z5X z_Nr1dZvhL>)<;$$H>?(3JtS|2TY+KpK|Cn17%hz_DTWfEmU6yeW{9Y*BLL-`s!D}t zOaW*Q3tW_gUooG5Siyt>S5>R}pVC^z?@uI1i!59U8FnV+g4!l@Vy$HbQOJo5UZF~3cZsEhG|PZw zGo?=F)gIVPk5@9D42#Lv`h;IHmrQ>knQLqtNX#5d)Fq3H1WaPSSFYr#MMmfE)`*Hl zsvvZys>NC!WJ+G4d$E>TXNWO9JMBZ)5uogPuMPi@%Ylc;nhU(;)_hG#tKT2 zDF>D(=VHW&!^#MKuHTF87=4|90t7-SJT3(f?=K_8E?YHd0WeW>>**xzuKH%23 z2&CsRmZli29@R;Ool76`ld;b3@fybfa`v3ZzOE;LvBdZUgpzZHovJy(WTKLf-hn#{ z3XV4>TR9$MoKUI==p35Ef*Is~vJ$SJEMHFLV@Y`--{|w#BXw`6yywn~T{Vd}H&V{6 zLrLXCSJ^t0UpnwEUM88ql@pK`G0AnT^?BE=!sq3M>&!p*`H{N=3W$41=-`bMCFTDI zQHBar91r}MB;&sA7a8E}X^vC~uP7>VqOqQBaacB4-SpAf2UYT8VkBd)T3U9r=#}bW zng$K77Wl||jmHQ+9!vWr@|KR0(*OJE{J-V>kDt%~n|uFbx7F>uD80a?|2Og>@#|{? zZPU(2_Wy_7|JZIeo8|qF<^G>i|3CTuAJG5h{-09+7wZ4hA72^h#xzU*-Ovr+6>`+tdmy<(2ERmf6&fF_Lp;BZ(HlkdSDv-6c0x)-`~tm}0R2Z%e>D z!O(6QG{RZfX9_|l7#!xBi$0t3o4>11X6S2YVzI_I#EykN`+m?id)lFh7iHjP_&z%v z?GKO7hil*i+YkC{&t@u}E|y89MMrtR8?-uKiV`gCe`)_q`(N7st?mE$$(ytN;kg-n z2p-G+cbm0a6d7PzZ1?Vf!|XDaP~Y5z<6Up}A9 z{^zN}zi9u_*eC6Ouh}i*KR(G*cJ(j&DeZr0|4aK{+W)QXe|&E9Nb~?>5W$ zPfzkh3*@vS{zWc7MpPmh0j()CS2G=(wETTN%P(@A$@+sWE+!13#ZAF^8GYf;YT+%W6 zigL76MEt=D`difRl-s4Ey^EDXQDPE>P%N-a1$=pLcD(4yx_egurxV3khyzh!`|k1z zOG}gk+~re@kCEh)jP1Tgk*@SJR!tRS6w04Inu+9RlG*rFD-;T;Qm1elbyl&U6-6k)U~XYl+V?=0g%^{BT!zb(Vc*2{ zAa-C|3;Q>&uvdM)n8iZTC<=-o*I^pqjpClD0CG_w(7yK;@iqGiuT8^YxP*v@=~&~< z#0*In`+z_!vFH*j3}9zwh^(zEfMF+6G+!^=D{Dc)hSpK-1QlzFzGk;Jbp0#Nniv3O z%@qMnnnQ(QsiaL*C3|J$*X+W(!;og7qtpt<)luPILZ2c++N+ zY^iW4>E0blxF$Bni*U3Qw=)~8OSG=6&OoQ3luQi0#h~(#Q*zQaSadXQP*HG+!d9W!eN~pSV%V`IMzFX=Qh1axE|}G%hqQbYXG;?LBLE+cvWO z%wK_JPmiQVr1i3tXzT7ewvy=9uVXt+d%ZbYT7oP#5~=0Gj@#4z_B%5GC_XLOb)3Bo z*@s1NFc=I5GXMq{m|N!7KToWWZ@4w#-dCUGX^5xjZ==!ftbSv9v(aj{zG5H0dV(kP z1IvTrzxpzt)^oN9>;>Ox_FCQN&F$@O&up|?jpmD{_Eq`(<)5X0>+o=HJ0GrXe#1SZ zVRp>U)}#0T-uAZm+ZBHstz@5XcDlWGtJ&Rd_MrcF8;#CaZ2Kwu|1aDR{e|TPw!?qT zfdjDV^sm?c=6{3!Z*{Z!zg_D8C(-|{mHzKQFKxVNn~hTQf9d-FV7NCpIvYG*|L=A> zMf$(h=r&RRcLAu|Y{BEkk8c*5(zfk?Z=PqwO`)U@j>bS;W-1nTF&p11|4Q8&x zPOR|<>&kYn*lq|3o*mq3+6ng-w(r~U-S*jxd;Id2U3r!h@JXFbJv1;Wzb(-Pk~N7%-3ffoG2qN1fTucpgrW2K9MvFKk%? zW+#658XygQr~%ShXA5^?Pw_9OYAwUdx$V#DY+@to%P@dM9}~yi!CX*}E!Sf{pU*YG zU<2J$*A;aHgQPE!p@C$Pk101Zcaf}#?Q7G}bD&60c_uEfj7t24j{{6W@TohWyEj<1 zvFl81tdZZ>G;C4p(!J(X7t!2~8vv<-1Z;ris#WDDe`d|+?2=1{LAk(QD^?v3i-&&U z1hzG2OV^|F($zGf{5J!3cKqu6-R|jt4bRxg>G6-l{lPxdchBHmud{c<^EbzD&ly0R z?jD{0%#L5N-J_q`55uGVIvf0SaymFWW5=i3@bKhdIDoX_(cZz^{o&DT_7d_P9iOv< z;o2gW9iRMs zI(+@+oV__d*dIXR%K=cf`|@BQih@e*9qbMd>ui7baQF3qavcMfQw_lcb?n`n0VZL2 zyYTPc`SAD%tFd={bbbo2b*Sa(d6f0t@N7_LyQjl5WXP-2*q5V|TH&0L)_;{cdH@h`B_cDF~Th@P%d1 z`!JHf{-^q6hQ4;n{}b9Uf;YsZq|d(JX`4OmK#a7FS1>2&GdW>h0q?`OyblBa|Aa91 z_tWV&S3F3kE!AY_yPa0YY-B!1)%YuE#&Z3yT>p#g|8}F-X?4r>ztaAn4tDns2j*h( z1opq%?R3fhw{QWl(?a{->Xr8YNuICS(1EJW=eTI(I_$u9!jGD^@7_3b*P5_P%bziS z?Ac3NWU>V?yTE0?_f=)~J?q94ra$z#H+G$XI{}RXaD1_cqkt3t_K1go{=<(TXj@Zm z1);~cPR@Ql8oV`{oyL~1zkF+sB#dN9+%x@I&D4fL#RqE+C>PwBs5LN2q#fYW)U6wO zYzAWzHUYCe4qWfnWSVyDumIP#9BW=@S1xAEfzm zwK)ry*l=ag!#6Kpcws0rx8T-hxH4s>Lor%bxzA#EB9vgOXwkcFVWfIGjwhy&; zcwf_oQ(Eh@7nlxk44S=nH$b0%w0lR;gb2`c+CB2IG;mR zh!410X|i450Tjn>Y_UdpZTt2mG?rY#-RJ&?z+E!SXE!*E)U>pqAMWmbUNK)-It?AKFD=CM9|S^%R*a)>m>mhbRCl1sHv7BzwYTzYuhY-@bGwAY0OYhsDBjCYYDG z9!x2qQD51fuNvGZ_@!_!fpCRDMBw!=C0N|lw7V@3-2#8jd! z+Cw&oy;3@{ic1WFi*@YUFwf)xfnbLOH9(z6N*9?O5P(|(06-X|T>0o?bC3+pkY+nq zD>Kni0O-&fvpZy10YWo7bzp>&9{Pr?B^FK6D)we(k7vRv`b0db5E9NHCAj2hy0LCG zl(>^r8!|cHMxOhcmia8(5&c<)@=vzSW>d7Ly~I=yk*IOvGxj?ACzrEp``0>6{p+jA zK4p)V2@JMJ&EGL!m`(I>Q42xxkqaH6V>Vxyjd=2@i>+a?Dwz~(TmvBh`4lcNpOb_r z4GyfsvLb=O{h!h0UDylY>BML`1As8sqb4xC= zxdG6hXLzxkk-%3IEwMnKCA1u{1N1$^c`$iW0nlUvsF6sr1hcUZpjg*MPxkn=?S?*O zr%}kn_JOP1@=P{dS#iPq0Na^b2J;FclzOe)xZVfg{|L+VD|KuKkZvhG2oFV|s%9S? zXpSlQT|KT^6w)OElh`S1B?bYwIL3_c*)euUAu>#Mz8K4-pP#drp*=^>I3c>k7gD>j zPpRR9dKJp7&5T7tIa9v)M}f#NeDsw|9V454?v5>$g9fKDJP4gNnLiFr&xXg22^=-A zevPn&OOhHKFe!&TnM&?mgDqu0LnBZlp$Z464;&4mg=S&tk;z8o>Y{bDE``Ds7)?27 zUezW5JI7UdMB}$PR8Z|sZkM(s;Z7`u;qj&G+c-v}oJ-6Y!~IwH|CRf{Kim3W?*8w_ zix;h4xeEB@uK%TzxBhJZzt{fnRSuTj-uGS;=uu>RYxPoTJX`Rrm1h2mT!;u2tjquulamOeZeiUHBC7CMyrMV z9rnta`&`o|d@9`}Bko*RYkiHu13#$@fID&>PHBO6D?Um9A3m=5YkHwmjXvXZp;MuH zo#_Cr*Y&yW2m1SZ0%&Y4anXC^hQTrn0OPqA@+3&WKdKKb`cO0dU;>$<1bZrIlCIDr za?ZxlNQ&`~=`ZJY04>1%YAp?<>W$P^r}jJmhR?0V<-}rsKiNoT1ddLKz^nSTIu%f> zT{PYoAx1#;S`(yHGw`bUY-j3L^+C+nJ9R^6!oKnKdW5u=;({z`r-0i29VP8$e9ML9 z@sDG^4A_AF;L5e-Gwyk=x5B>;H?|bv*K1l1r%3d)biJU3ldUT|9b|wmGD=B0^wnTi zt+8h*W~^ksh*|_t=hBj76EkF~E5cKKL4L0@f5zwY9TeZ1s0{TvN*xKeW>vVTW#7|v z{mfl(^5dW<=EibphX-GTb9B^`FN_Wbq8m;ZD0CD-bd8F>6FFRc+)WXu{o3+u^cVOh zd&B9J9<$KFDNpFxfeGaco~Ko49d#^zS=vjU?EEL_Wvc2Xu;%YroX)!lgmD)?*Lr0M&2k) zCVxL=OX!1|q{cTT+stq|K`P+2CiJBgE+J}4WlDC@Hf<@g%D9+dkpjK|DTF>*A;))R zCBEd)CXe+FK&?=17O0#q*8N^m-P5P4%v9j*Mj}>KeM}8hX+a=2c}Q(HUWf0cKg@ zJSeaxMb%5OHfG5mN{lcu_&*QErJj?;WTLluS(VBxE`E>Hvi3Axul^&|i^G^T(YzZ7 z!Tkl{afRW|wvcTw3;>)!-%TzcfPeW}uI5!NL6%Jhom{iLjQxiB0 z-|>&wOCyYBa<3ErXwyKG=8=7=7$|FUasq;DB5bv$X?bkTihdr8p_=!>RsL%QGhlZbtebHp|J^sj)_m&wR3T+s)>06r)6ykUN`8 zup+)9AXHQlm2C3`gJ=T0nO?#Qed6VUoau0kP7h`d-15e=YNh&*?{>uQ>I855tXBQk z&9ho1Z!Vs~rhb}No*OQ!&05+(#V77MGBL+0Z8D*bbe|-+U$j_IG~-Tu%k+><$k>R4 zd#@i1@>ULH5d~^9ZhKYfcgb^XBoh;Cm3XIc$AJEe1YA*-74jIpDM5#+LRQSTE-d5M zUE_Zn#*2TMTkpTU_?Q3wA4>2QuG(Ft#9w76Xl$NAjafgnHmF-N1cm;5rVFM z>#?J{n7(?`wfs3HLeY^aUDG^1=P>5+N1-=|^olyUV=Zknc6x_SJQSYcQAjFU?4Xjw zsApuB7V~pYQR?aZxS*7aW6e=a9nY+t-7YBpi!c5no~_XLw&)bg)}`&_ln>)e55`9E zp;#&tpiX-u5GXoy42&`@#}Yd*D6)?2*z~q_sD8B#^k(^iaUfXnygTZ4On;_pN%zCU z5g%IPMMD z)?kfi(^j)~f{Z@N={z$Gsyw;_B2J*gK^*eg!J~KOWi?t3a$}e;sGzf;Tm$5 zV#ryF0pfhk4H%+xYoQK|8e>+;-S1$Eqh+gI51_w7nDIEG(f^)Js@5vRlw|72;Ws&T z#RI;Eldfc{QqbqcF~~$SA|@5pRXF{iY7)SZ86d^F@;EmF*N~A@qn4ez-WAD~+1P$73XhB0CWG_YVOw1FOdNwj1Jl>S!reK)a@QH|saYW)vZz2!cr?^>V5 z_l2%+le~%v8el3Aa1SqgNEV(Ldb`tjugb4GP^KrnOOo9yFmvvLlBw2kf8hmX0C~OD z->-2rBUS2#hb&V}(=2c=3vH1U@N}cxvzy(cyWOMP-P!#L{aE*C`ajhzKWX>O>89(q zASen%8Ff+q0*t@7;6iQIi*=~1kfaLSeEY`63PesyH65>x7`D|lI2V}>M!U2<@`T8|1Zz~m-GLk`M+GSeb5rX zn)!db-D#%J|95)5a{m8>^Z)e8&3hm9#07-^m+J#ku%mtY8=wCvTuhJ{^*au;#m88A zzLUbmfjnSEy85Iya_2Wty%f#axktPkl(DxxaP96rkmN*;$k=ORj0o2*$! z`Lt^(dF&}(PKlK317_%|q(3)FFNd<_{I8tW53Dn@=iv4vka@le1_F7G={D#E9LLF@ms&YP-&QHTK;OQ6Vvm z5GDJLJ~msmB3DgCUPKXhOGIVY)$Yx<*~39A-Bw|*ZX_|;H`5BMXNs-mu;uP@GMG2u zRth8JE?}D47M{C{BDt0k?IwSwXFTBb*j*@c%$}I7d7yx4SMJ6K{s@7E@Zaie1F%-3 z)iRn*qxHP3KI_T#&%Dq{XH==x!Y8P~J}84s zrSoDHof9dl85o}NQBm>;Ns`n&4C)p?T6~viz}$Z0AesBnePZVJ}OtkRVbOR7aWN>vuk3X-^!E;iz>IiAC`Ava{$sgw(9o6w21mK8)HCo*`2DvjMG zmJ-q|1Cq^@I-OU$XEQxs$#^m>CSR))e#u-i{hnm5u&p66b1YGpEG`l-iTO^slBX6K zoxfWlDi*1N(4DFlD|wJ9d4=xAT4t3Y#`NsaQ_K&EJ+@CHTZKPiy8y=H3-_8=6UB=! zGN~FXC`G0mSRS8=5hD&OBlNj`GrD+jRezYXk$0@7-N9;kRid5?^zFCbvU8WsE$C&l zyvz82Ti+s(p2t|4Vz7EtClz)seaKJ7I=jPb90SPNa~}J;ngGTU;}Z}{&KY*9<^+?8 zNsUo0rXbuZzko(C>xPG#HIhBtk<%N8s&tDJKy`l1+J1=(C zB;MReIX4a^l@ncM<4}I-z`J;vWCB-CKwiWo*RfXTT{jA!mlv)x|J>&TcLx*@cc0L~ zYbi>~|4UJZ3R4^p{Fo%;uI(2Y;OuFRR0yvqDsrN+o^5bgHd)>D(b;=d@*y#ju~#iD zJ6iNg^)O9?23HGwWW7cs1Rss0{StXgM@i}b{dE4{^8Uxq=l{*U|FPL?Z?{S>aOwYz zd`SH2%0Sz+^}zmrzxyBC%~rF#|FPWvQ|kXG-v1-?f2sLP{a>X2Pkwl9pp*a6_Wv{* z9Y{;+|4ysbF8BXD#e)IZCRSi6uUwzC%%*mPk(@IdNwf%tghYGeF1WF@t^icU6pICT zTL9)UhIY%K5zfLsQxG!2;4s&m_t}JB|5JT3Lti@;i#5I>b}aPS_d9K~ryYoRQ3h^? z@3Vv9-r(qLumaw<{h+_{Y^KubVwqH0bd>kIomK~wVES`ZjlYt5EbV`3|4aK{+W(F1 z|Jm`|)4jo&8GH;L%l>zp&6NG$ZZt~!|0GXjHwU}>hXZpl(P;CmxxCfxx&vG*ydYLv z8#-7k3NEJIaq3tr+>x%WAFFB`iSr#$6TalmggfKg5q|d9fJ^t%ITGh^Lpp|C(#w*(Roqs|NesQzi?pH+$VyIsbo> z=K= zf9!Tw=fBz=vj5wq{ePM#KV+wSM|98VriV`xk@JxQQQkYoI$15#>II z2ILfOfG#tT`+aO^OOd8-1jA4?7gU#uawAnlbj1pKlhp5&Q>mi8kCj3(a1w=3q_a!~ ze0eK)yy(hGc~tqI1f zF>VCQk^+r2o?E`pWGE69zDr6S1?hJw(xFcm70^dBk^D?D8=q>00zFmg6fC69Di*Y& z2$UGiER4DP0qC;u+O?3&V4yOnow)qO4s2^~|H>8is?X=sSfCw6K@sFC2nD=RR2LN< zFDeAu_s$}|W2!@I1wBA`hxsvt9!v;nSUFU0(soqM;a142hBO^h0( zg4u*V#k;hZ#kXJ-#a4wbWG^v5V}u!Bj9d7BoX)4Zx}}J^u{EA?{ILwZD_(hDE55K| zs-JlL+IB-f(x>i}{T8py?<+n+|Nl+!=65rDu}6%YJpw)vZ-X^=d`$6@kL7wYRz!f5 ztlD;Jfv`^E^yG(irVa4Qd?v!Wtb{EU>?Pg1BMH~Uwto?9m!gtpLy?KrmDSnNX`m<* zLvOxQxz8CuX&Wp$__tG0aEas*od?{hq|O6M7@{{)uR9lM6O?`8Mk(iO+Du8IPaA}t zbbU&o6HY5$$yqS7m>!}XO(pijR`bTlMb6{^#jM_nre@sv;blu!AT WPx+Kj`IOI}dj1b`D(DIT@Bje$P+r^s literal 0 HcmV?d00001 diff --git a/package/psyneulinkviewer.egg-info/PKG-INFO b/package/psyneulinkviewer.egg-info/PKG-INFO index 2cd12449..b1e69f96 100644 --- a/package/psyneulinkviewer.egg-info/PKG-INFO +++ b/package/psyneulinkviewer.egg-info/PKG-INFO @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: psyneulinkviewer -Version: 0.4.3 +Version: 0.4.4 Home-page: https://github.com/metacell/psyneulinkviewer Author: metacell Author-email: dev@metacell.us @@ -9,3 +9,4 @@ License-File: LICENSE Requires-Dist: requests Requires-Dist: wget Requires-Dist: packaging<=24.0 +Requires-Dist: psyneulink diff --git a/package/psyneulinkviewer.egg-info/requires.txt b/package/psyneulinkviewer.egg-info/requires.txt index 3f10f0cf..1607e837 100644 --- a/package/psyneulinkviewer.egg-info/requires.txt +++ b/package/psyneulinkviewer.egg-info/requires.txt @@ -1,3 +1,4 @@ requests wget packaging<=24.0 +psyneulink diff --git a/package/setup.py b/package/setup.py index c977e8b0..96cdb858 100644 --- a/package/setup.py +++ b/package/setup.py @@ -8,6 +8,10 @@ logger = logging.getLogger(__name__) logging.basicConfig(level=logging.INFO) +if not (3, 7) <= sys.version_info < (3, 12): + logging.error('Python version not supported, python 3.7 to 3.11 is required. %f' , sys.version_info) + sys.exit('Python version not supported, 3.7 to 3.11 is required.') + # Check if running in a conda environment in_conda = 'CONDA_PREFIX' in os.environ @@ -63,7 +67,7 @@ def run(self): setup( name="psyneulinkviewer", - version="0.4.3", + version="0.4.4", url='https://github.com/metacell/psyneulinkviewer', author='metacell', author_email='dev@metacell.us', From 79e1b465a492bc84a850abdba9ee9be55336ec1b Mon Sep 17 00:00:00 2001 From: Jesus M Date: Tue, 24 Sep 2024 00:52:32 +0200 Subject: [PATCH 080/126] Update linux_installer.sh --- package/linux_installer.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/linux_installer.sh b/package/linux_installer.sh index 912d120b..99829b25 100755 --- a/package/linux_installer.sh +++ b/package/linux_installer.sh @@ -1,5 +1,5 @@ #!/bin/bash -pip install -vv psyneulinkviewer --use-pep517 && source ~/.profile +pip install -vv psyneulinkviewer --break-system-packages --use-pep517 && source ~/.profile # Variables APP_NAME="PsyneulinkViewer" # Name of the application From c6d7430623dbfe1a1450a285b58b0d046681827d Mon Sep 17 00:00:00 2001 From: jrmartin Date: Mon, 23 Sep 2024 16:00:22 -0700 Subject: [PATCH 081/126] #PSYNEU-140 - Fix installation on linux --- package/README.md | 4 ++-- package/dist/psyneulinkviewer-0.4.4.tar.gz | Bin 7656 -> 0 bytes package/dist/psyneulinkviewer-0.4.5.tar.gz | Bin 0 -> 7608 bytes package/psyneulinkviewer.egg-info/PKG-INFO | 3 +-- package/psyneulinkviewer.egg-info/requires.txt | 1 - package/setup.py | 11 ++++++----- 6 files changed, 9 insertions(+), 10 deletions(-) delete mode 100644 package/dist/psyneulinkviewer-0.4.4.tar.gz create mode 100644 package/dist/psyneulinkviewer-0.4.5.tar.gz diff --git a/package/README.md b/package/README.md index 1d1a9c01..bbf53043 100644 --- a/package/README.md +++ b/package/README.md @@ -15,7 +15,7 @@ chmod + x linux_installer.sh And run installer ``` -bash -i linux_installer.sh +./linux_installer.sh ``` After installation is done: @@ -51,7 +51,7 @@ chmod +x mac_installer.sh And run installer ``` -bash -i mac_installer.sh +./mac_installer.sh ``` After installation is done: diff --git a/package/dist/psyneulinkviewer-0.4.4.tar.gz b/package/dist/psyneulinkviewer-0.4.4.tar.gz deleted file mode 100644 index a806fb27d2dbd50e592337c6c07b4daa98a99b36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7656 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 WPx+Kj`IOI}dj1b`D(DIT@Bje$P+r^s diff --git a/package/dist/psyneulinkviewer-0.4.5.tar.gz b/package/dist/psyneulinkviewer-0.4.5.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..90e679d31287c8b2d6cdb41b1ee0abad0688ea37 GIT binary patch literal 7608 zcmV;p9Y^9HiwFqZ^6_Q@|8R48Ze?|BX>MzFX=Qh1axE|}G%htRbYXG;?LBLE+cvWO z%wK`ao*qe!Nb6ywTd-Zkdfz^MC33|7dW~Ke^~XUjOfQJ4O1x)#x@+ z|8F-st#+q@`hUCI+WCq#p0fXcq5A*8UEF*2%`{-uQH`}4&0TgmKo%rEv zfHd@>21sX}&E2s*!M~iUwFs|gwm+@2v5ly&!vGR}OdN3sb3r|}T#xyDHq!uu4Rljo zm(&pqlDC4Nv`{#W&xL{}Jr#}r2`-e>5zkqkW&fX3#U!T6YWB_r#e{%T? zJAKLaPkv!P4o(j1tpD@bdH>>qot|rhh~Yr9v9({{%1W;`RQ~5f-KGzX9sckv?{CdiKlt;MMC( z_WJbbun&nZ`as$Ki=)0M3MzGQv_Ckmv%~%4{a1a;bqZL{H3SpXvA3`Ln1to+!@q;e z!RZNB8{RkmD?C&1|t_#eJRaC%cX)??4f4TlsuK$$JfAjeN?8jFISiaN88~=9-$N!B^ zyPaD9+1_b4%JKhGJjXn+##Ue%Kf&k|hHpLAGMn0oHRnB+mJKa}AtBLTyK`mTA{}T4U)hyTlO8bA_-#IJKY^faO}G_=9^X2<_~oSk#%OjLTf+YGtr?OqlqGS` z^rtmb8w3>}tT~{Zb7!p9z$B4&fJ;;NZs@Toj7iuStokT$y?c{s+Nr|=T-$Q2S)JXu zm@x-Z`{zIZsg1_$Px_%9OfBbz(|TiUWsKJ5EL>v4l|c{RywHK-Mega`9kXZb1IyMx zVBL4dB7^$EDBavD%rF7c6}VWSw0)?z!+V-Gn9wSp#kg~8d#;1ar1%*G6^!{kvqph^ z%j;Akq00=!sEi^sjvGWMf+=?hPml8Wz`qe^e{Puz&qW?-0t10t0Z)w_3ks%H$;D!3 zk3`M>rT zz+EuQXLmS&)U>pSAMYQ0UICw5qt7hfub@?h2&aUb8Z#!$A6S~$HIiHa{-|Hm(AKN)#_9Wz=`iRUG>m@neLKFa%0*pR3 zl0D|KM+iE^Z(q6)kS%Fn!+dTzW6aB352g{&s4s2LR}JnH{6e^tK&(Qbqmr(Bg-twn z&d%=7Y{Bzz?6QTuhTo+oB@W6;Fcp5>vp0v#Q)10tVhzRN}+Ujcqf z2n5N)9d>^r+u>_(9BL97@?$xz9DOgMdP$` zy_?#jsj!4T5l_m4gfmD9E;*O(ta}Y5?kv@YOisa(=f0+8KFfAQAC{qfl5Mlu6s>75 zFcm~3YMl6*MIC*Ti|MWXTb-u+_2mSgvPVk;20NhU@0iccCVI7~g&_IFg^tiMo6pTg zJo((k*05NWjEOa>fe?Uv3b&WfNkWwF2G(I&k-%X8TUcIz&}o5A>POihsiR&3ok;dE z5H#~ig<+4lBT41>3rtfYdmW8{>i$0GnP!1rEZnfvYoUj8?f`fIx&ntcJ?($4>^bms zX#!(QJJ{le1v~&Nfi1UX`M?r?i;s3YjZSA|w03taqr=~<&5 zfm@egrJzQr3ZOdmrJ=hL3>4|PB^O!S0O-#%xmeCn;H!z2n4_N(S`OF&`kvw3m%OI{ zXtF-kNF-T;+1LkAtm~pDd;HdRL!YwK_+xDQz*TN}CL1j6w_tvN?My9$c?A(ly;kmA z?>+E;h~@f~I<^Byx0D`)hayl_v-b`($Ao;X9#<_2=@NlS?3A?<<{uZtnDIS3#qKCX zhRMzsW0~~rbM_*%XXp(lMA!I2YFG9tHE>X`LYcLhF;6IG$`}7A5E+J#{&A^eWV6rQ zk)?9bur!7Tp|d9Qr~diH;M6gJqvp+T5w>taQiDS!<%B0w$-P^!rR*1I1ZpHy;Q;lX zqd~OLEG#@S*{EDyw2s!bP`Co4DTm9;+5}+dxGIlm{5FRQs@>WB!j>eg#9|m8U%0-F zqch66z>G26rT?#7|NC72zwJ)5(=As4zufh|bn@0;?f(zj|J`b|x{Y%Gcj^Br_5V}) zf7-3qZnOQo^#7FlKcoMLL))=~;m};%Keqoz>HqER&Ni5dHt7FWd#CjOl={Ea|4;1y zZ$00AzFX@5QvYZ4Kdq2|jPhTr|C{Y*w=2j0-A-q_1^T~P?*DtDN3I+$W>zq9y}72= zM}76nzhC|gujQ(=N}0JgxSp;RVDY#{P92{I;UaKdT>q4)Fs05Wwlf~8)%!H8Dg8R8 zS{#&l<*NYCE}{z{kk^TQ6MD4Tt!YRoeB4tMn>Rc-qO|I8=vZ?;9M&}T?b`C~(E%Z- z&iE~#?Wr%gCAOvs$KPu-kuEQxU@b1M& z3E;!WC4WsXbgI#3e6DmVRIf7~p!K>wv;9DSS5E+qtOYKB58W_WgaKf@^g^Bl3HS%~ zfkhu`rXP$UQWMfmFSb+Umrf1;Fr`HNPHP z%`F$sD=#1GnzFv=z z)>2%MCG8bZ+gnl6LB`KqSRVf{;){Uw=?|`ATR!8S=Xy*0>u_UB5q`a<<#38bPfOPe zS~%IdveQ8Z=pw_Eq(ff~rqvpImSV>bG#Iu#kHHALo`QeJ>% zY>$F!6+5}?WBMMzHEZOV!esLOQ?`UYs7Y#kQ?ktr7h|LXUTZ>MO5qZsrc|b67j4s) zBCCvx2^J~fbC5#llNEA;SC-;S&TaBu?@?}3ITx!*i4{Apgm_~fS=m`(L5H+$<0DGK z9Wn88a(ExxpCtMRwL(-tEt@6vE!A7}X!ni|T{VKuN=Z5&Z9qumf!{hau9*=sV?m!% zJwL7>D2a5$+M@EXT-%Q2-BXFU*g!<+kAms945FM?IGAyZHrMF+%<<;T@FuHRstE;} z9vt9DA?w8|Rf>I@kJ$Biz(>JQZ8I861n5OYuxgHU=vh49_)M>7@z+%E%I3&ehN7;a zi>{$3En!|&HWHm7b{Jrm70!YJYf@Cb6l-Ia{9}m`CI+QoT5gSrg5>fe<`g5FS?;R> z$Sj|7Y@VPk$?Y`RiFakYLBm}&->n_EDl9@yL6!B?U@eAoNyR`}lamt=ToYldHBHN7 zYgY90SR^M%QPl~k`^dv~asJ7qYO(>?_wf&zKBe|TM)19j z8y@)M2V(2wtu?b@_+8Zg*~+cMjcfy3ivwi~V`tE~5F1YQpIV+dNpLgL2eDaBzD|ub za(w2Ko!f3Uf1?;Bs)XFxT!Izx6#=25il}6pFBn7<;LY?BR_GHi7vxNbV|02jbKsUY znpP{-AHLfYJFOGE?Xg<*A9v4cmAtul3Y+?A-gs`fs5Wb90~MdR>&V0$tF+04I?{cT z;9k*ULD7sm@h#IsHX&mp5+1yM(9c^rkVO=z&A9DVrLU6b*hnTO*eY?QaL0iDjRag# zl@;-djW))A zY_&Vx?b84I6puP11tSDq{nld#b}@bVrfd0gN`#{0Q@W;ke8yqS;}1h`2I&=bipN^m zX6z&noqi}h&!do3wAi5~iBZqUEG_2eo~YE*`Efxh7sr}onL3_dySSfYs^*Koh-WMG zy)8P?vUP1cIpxFn(u1*4d?=R61gO*A2n33b9s{FH%dx}`42rB{J2t&-9jjk$1HD;( zU>pfn>~@FUj_FTzE$M#vc*Mun==9=e!}8`5u@;-@q}ZvaT;z#$KmE^TIc;6rVBwEg z<}QLnJ}t4*pF&G*A*KcixHVYg*|g=Xogkx6ayripgDQ{ifQS?5a1aN6_VAb@V3FlU zM^yLFoq}tG*Lc_qaJYt?r5JLSVt_c`as!6w+?uPyqsE9;a`!u!;+WZT*FyjT05cv( zH2UANN!40~n37B#I{YrDu6WqjaMG1bRSNpNI1-s?M#Q9|x(cTsR80aHG6SSoHy-Ck z;2JV=YSgk5*SjIvl3XVPgc-(TItA?wDstNURYu1o_pMp!r%1k9+E0 z%m}C)|Ci(ca{p&J{$Dr#M}_&3+dtQh|8d)AdjIG4PO}{UKjHq*jdpoHV8i7Dw{kx6 z{>=EcA{1QZ`7PXagFyPmyGv-e@xXm4nXyS~=g87=oq<%;(}#6#>lD!H#dE6mCwE$Z z9^Ww5?eSd03AV2B3{%*U6^>zyo&gOk7z%BmM_&>xnE|E0RsGOSY-Cg;`GQ*iz^eD$ z2lZX+vG~5w^=*<@F+l@N1p@BjWe>^16GLxz67N;{bqC7yq<2ZOdkJRFTu?IA8tyN= zq6{Ff_xigvj%K7v-SCiQifNh!?q#7Zk^-J?lm~XR2Xwawbi0+^uh5V6fTsUT-SU%m z&zx?$ehY%4K$KAz<em83ydZj|6rh^w3(Cov(; zZ1GY%MdI`n?;y#YCf8Q$h#2Vw`$rOGZ{Btv$(1Z;%29tg|1anN+4+B`)oL|&%lqHT z`G0o)FBfb-Y6)P?{J-7q(EV@SX1lT7?sVz=f3rOQ`IPhj^vTT!AN9lqg#XC(0V&wg zKK+f){}e7JNR0Z5!));}R-W&qaB(0HSdp&2ty?14yo&i)*G+b=bjSmlthIBU4d*$9 zbDZ4y4OA~hb9Qc$tyC&y#ZLKb+ne6@&i^*`|F&Dr z=1w{PE9ZZi`5$dF`b6=68l4>#|Ff~v+NStFJLUb~PdWedxSGiQ>cjNxQKJF@f9bjm z`Dz7dp8vvR@sr08GUc8zNlU?T;(EcUr~10nQ1!wv00rbkW3D(sc{9O+{KD4~&z$iw ze~KBlD9ZI?Q)|~Z)uFtK6U62K(WtHR7Mc@pm5>fpKU^T)d|b(MXrw}zTtri_D4U)j zM(n1H5rjol+jX{6W8du&6%xY`QL^voW3yE&a@ADir4(_uL{xTN?cQvgJ2+^in=9<) z?Ib4qW>R7GOtG~bwyZ8EgLwmPr7%M70;Z{L;kmmgl4}{!Zt`b(#sglD-HRf}?1|Z$ z$9=IYcjE(pgbja28`nS8`9IM)B;zi`T`%!#UZQ%7sk5lcgO1ll*u`W$2X{)6qfWj- zv&6RZW5cX$h8Xvy<^$O3m5@X}3ImLHgbO=!3q}n2OSm0f4V+O`@Jrdgz7^C1T zXoyIep{5*;#?{ey87PYWzTyE>P{PG4Z~HRFwoex}D6ei5+DWL9(Ks&4bmTEwf14~1 zL8G}sj#gA5dsUOpJdegvybt(Lr7W~!(kR9&-w77OIz{yqoA!tD7)3Q3_azZ#DY^=W z5~nm3#I5STSN2E9|4NTlV&^EfZo#06qa4q0xKOEA#0|doZ}c6(UvSFjAqkl?NQM z<$;UJX}r4Ye-KiJfwqV`T)mOR=dS5SG4u%Ns)DbTcPzQ+lBt;h)~`LVz1$nBSXRhq zJ-Pmw7dq*JDz#kr1U1+LWss?KUaX=^B1JU=!!tfAN**CelA4D>-Q`D%?-C7|+i!ea z9V!fZBq5`!rUfrqZjrEwwo&?GFJH-|i!x;wqjD-a`lTW{1vJDD4#Dt=LJs}v+DD8!%LqU@r>aun8B+k-!vYuO;8)D&9~Lm7z*W_%{-?B7@mmxL z(jp62O{2k}f9Bia>5q9W)EB@kDl?8%x)NeZwMa*)%A#3868F-@M%*<=Gnh8yh73EG zazSkqI4g|E;;=G8pX)cHOBk2+hdCR0$7^<1EDzx|e7x@=}aFPr9F%m>{17J>9U#?lmn)uTG8uyg4{elphC3a@btAZO2c z?CWv@7)y*#Kqxt9*r}QmOeQM%=pDE-qu_W$vX#Rj#tEg0fX<;gESN#=CoAFl$@1k? zK9-ah@{K-!Jy3Uu$~*78*tL^*izDUSIFwXQbd`-m`K1Hz;>D5)TsZ-G5tCfUTAp{^ zD12UCxX%1@pC7q9pn$lCgbrRyQBwY2h%!`|;&|Z4BpIu=Uu1x@r#Vs~yrQVciN<=i z!C~2Cb<;;@A5_VYiII%GYHr!lqF1ViX&N-RTHqt=H5?-Na47AU$Xhx}O8@Vt^Z%Cj zKYl*{Z|?n%&pXY|Zs`Rs{lAe9iQn89Xq&b^vj0Eq{zv%SD(`8=74#Gq1`fQgtM^66ogDLILtL?JvQdIe^;N((AUnz zVvTQz9Sc47{a)ML(T+sCC<8ac_t??kpnr1FUjiT6e$ZQbHdEzDTb$?bo+|NHaV|8oC#Y5%kKUpRqBlbgrt|10f( zCpG_Xc01eM(*8fia|HuC3Oe*o3#^;rb!gAB-^#@a(+*a`1BnGq}DfVd=oUg8lD{ zBbi@7g*bW0p=CM6A)s3hNtHLlw%@q}1QU0Zh2)kH8HC9xuAG)M^#L=|rI=;y_f`fjhs((h}u>Q1LN_1xbpB3~9eak*@SJ zR!tQX6BP<5!Lpn!=>`M(XeN@MNoM0ytxyE0N}ZyJ z)LF#>;S~`SgQV3lP>lt~?K3k()|M5(Xd5Y- zZ)WbbHKQ0y%V2(jiX}x~vpX9!-Zf`UjQg_Wihw4CsiMzR(w4cBy(#l+cIn+?hYcO2 zO);F1igFYB6bRE^6km@~6m%83kiEdjjS*&iG4A32IGs;*r%MraBWpC}_+t@zH@xz$ zR(zAiL_hQRt?h<>r2O0o`#oNpKbCxi{{Oq+%^zm=#*Y{|2Lya3-ui1U|Cr$IAB**5 zEQtUqS+?!O0%0A;>B*1xOgrP1T}{M$SqfV!3QW3pM-r}y^8g|WFNG`3#wZi5E331o z(+E-~hTd$i@{q%U(l%IhB5<#w;1bD0Iw-hTNgWiFFhp;pUiYrjCMf&FjZ)6nw3(7Z zpEd}4=>!3$#zA|DQBk!fzK-T&(*AqDN2OO(hwCYmK%f4Q=*WIA3)Sf`q^^|_ddjDK a%BOtFr+mt%e9C8&=l=mD@5;^q@BjeGgO3FO literal 0 HcmV?d00001 diff --git a/package/psyneulinkviewer.egg-info/PKG-INFO b/package/psyneulinkviewer.egg-info/PKG-INFO index b1e69f96..884b6654 100644 --- a/package/psyneulinkviewer.egg-info/PKG-INFO +++ b/package/psyneulinkviewer.egg-info/PKG-INFO @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: psyneulinkviewer -Version: 0.4.4 +Version: 0.4.5 Home-page: https://github.com/metacell/psyneulinkviewer Author: metacell Author-email: dev@metacell.us @@ -9,4 +9,3 @@ License-File: LICENSE Requires-Dist: requests Requires-Dist: wget Requires-Dist: packaging<=24.0 -Requires-Dist: psyneulink diff --git a/package/psyneulinkviewer.egg-info/requires.txt b/package/psyneulinkviewer.egg-info/requires.txt index 1607e837..3f10f0cf 100644 --- a/package/psyneulinkviewer.egg-info/requires.txt +++ b/package/psyneulinkviewer.egg-info/requires.txt @@ -1,4 +1,3 @@ requests wget packaging<=24.0 -psyneulink diff --git a/package/setup.py b/package/setup.py index 96cdb858..a65a70aa 100644 --- a/package/setup.py +++ b/package/setup.py @@ -8,13 +8,14 @@ logger = logging.getLogger(__name__) logging.basicConfig(level=logging.INFO) -if not (3, 7) <= sys.version_info < (3, 12): - logging.error('Python version not supported, python 3.7 to 3.11 is required. %f' , sys.version_info) - sys.exit('Python version not supported, 3.7 to 3.11 is required.') - # Check if running in a conda environment in_conda = 'CONDA_PREFIX' in os.environ +if in_conda: + if not (3, 7) <= sys.version_info < (3, 12): + logging.error('Python version not supported, python 3.7 to 3.11 is required. %f' , sys.version_info) + sys.exit('Python version not supported, 3.7 to 3.11 is required.') + # Define common dependencies common_requires = [ 'requests', @@ -67,7 +68,7 @@ def run(self): setup( name="psyneulinkviewer", - version="0.4.4", + version="0.4.5", url='https://github.com/metacell/psyneulinkviewer', author='metacell', author_email='dev@metacell.us', From 261fe622f98fb508ab582eb9c14fa942f8f26fbe Mon Sep 17 00:00:00 2001 From: jrmartin Date: Mon, 23 Sep 2024 16:07:48 -0700 Subject: [PATCH 082/126] #PSYNEU-140 - Update version after python check fix --- package/dist/psyneulinkviewer-0.4.5.tar.gz | Bin 7608 -> 0 bytes package/dist/psyneulinkviewer-0.4.6.tar.gz | Bin 0 -> 7617 bytes package/psyneulinkviewer.egg-info/PKG-INFO | 2 +- package/psyneulinkviewer/start.py | 13 ++++++++----- package/setup.py | 2 +- 5 files changed, 10 insertions(+), 7 deletions(-) delete mode 100644 package/dist/psyneulinkviewer-0.4.5.tar.gz create mode 100644 package/dist/psyneulinkviewer-0.4.6.tar.gz diff --git a/package/dist/psyneulinkviewer-0.4.5.tar.gz b/package/dist/psyneulinkviewer-0.4.5.tar.gz deleted file mode 100644 index 90e679d31287c8b2d6cdb41b1ee0abad0688ea37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7608 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 a%BOtFr+mt%e9C8&=l=mD@5;^q@BjeGgO3FO diff --git a/package/dist/psyneulinkviewer-0.4.6.tar.gz b/package/dist/psyneulinkviewer-0.4.6.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..0892f4bf116a7dac49f54c1ecaa34449f312f89d GIT binary patch literal 7617 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 Date: Tue, 24 Sep 2024 22:17:01 -0700 Subject: [PATCH 083/126] #PSYNEU -140 - Fix linux installation bugs --- package/.linux_installer.sh.swp | Bin 0 -> 12288 bytes package/dist/psyneulinkviewer-0.4.6.tar.gz | Bin 7617 -> 7817 bytes package/linux_installer.sh | 19 +++++++------------ package/mac_installer.sh | 2 +- package/psyneulinkviewer/start.py | 19 +++++++++++++++++++ package/setup.py | 2 +- 6 files changed, 28 insertions(+), 14 deletions(-) create mode 100644 package/.linux_installer.sh.swp diff --git a/package/.linux_installer.sh.swp b/package/.linux_installer.sh.swp new file mode 100644 index 0000000000000000000000000000000000000000..730b11d19440d06837ccd262b3bcfc8dc1404183 GIT binary patch literal 12288 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 b)UMzFX=Qh1axE|}G%hwSbYXG;?LBLE+cvWO z%wK`ao*qe!Nb6p0yF zd2(VA91I47!3=-_2Ihvj@sDHc<6CY`xcAj3c^cv=`rBx> z|A#*2UqS!3x>^0-F7^Mj=>OJI|2JPYK>xSQMydI~bp5|S+#MXA4xX<6ce|Y;{oiVI zo2dUc8=Y3W(*U^UX15Lczww;?{|nXsyYAx7v#+iLRvp(^tI^zMXV;t^-v!sM!;Y=- z2kXjquGmfp37#F?Y1%RO=C<$K@ZI*=HTU@C9lP=@C*YGhn|hoxcgn`smUqSLEO43S z+_44se8}Kl2A1t0LW_-|Xbm8PYe3_>)8N+fH~>$W<@@f~wg4ZSxZ`lnoxlpPys16o zKC1>mp?)fJ=rt;2!mXKRI}E?6PwdtPs>6VJ+z&i^j5zAdcE+=Cf;6blGkb2!5->aQ z!`A?5=tB*V&N`dB6MKq(IaO;BUe0X)y3QsxqP`3RNc1sr%pJ@H_1JJd=JVN10}M9M zO?6#TM=(hG0vQ@e7WtTRd+pAXHL-nd8hQ>C$tlmo1(s2XzwmK@DF{AwXEXN}t2TC> ziH$Y#dzywVYF)ZFoa!Q)+i?RRRgi!UuvoUL{N!I-vl+YOl3`FTu-A%J$HU^G`#6DZ z&Dg^AsJwJFO(_5EfSn$_K6}4&GGN0~c6@U5<8W`V$Ml_3c-QOf{qXGV(YrGS5GOl_ zXFs!}*KFtTXZFMJaIek=KOLV8PEXmM+^&;sD^`6M0PMZ*?kMIJFkZO!?U03+Uw!jA>w>}bi#Jn@y^NFaQEH*&Ivny zcXE7mI)LK$0PW%M@bw9lGB_9TKs^c!~^peR6bA*N~l%p$iCPx<^ekN=NO&J9@hDf2VN# z-{`d4sr8@DEl4WI|IhFo@W7f_fo1#%qfZ#V^;pYnYKPXG_gGpsvB#TlTC6Bl(+us843-YbX5Q zp$#K=Lrh9~?E8M(+|u^NNZWV~bAld|6V@g09*oO-F!29(2xEUgoql`8gLK+LO?JNP zw>n?SB1pOZSFZoX?SH$~EZ6@^`+qXn**h4R^T{);|8=|Vma_lNR;LO5zuRmzOZ)#E z&)00|00(9>Tr_eWwr@M(M@`#vZ=IQIP1vR7Uo(H~*$Y}^vIQ_Z$7R2ZsxteYb!!UK zANt%IyH3EJfJOm0zSzZ4z_EXK$U{K?;YSd(jVZT+(Bm7&r#~MK-WknKV?)?qzA-}* zMzSRCnf`Un)P_OD2Wt)}=iHg7H84q}9pKW`of~@W8pb4S0#yY-Nnr<}6%d!<9h~-@MR);zjQ3xjSJm z*hiMFfxx=sOhg9tg;Bb>QJ7&0q$_Z-Kxz9>Z-@6ZZ8)V>K8tbZ#`atXmr3z62r3x! zJ7$do`-a!4L_(Jth*23uXdE|)Pz2Z9Av`_G;{*T3oc*z3E<6``qzMcJZUsCwax5sA zRwWmUnLQRY^RL}-Hev1p$_f|E565HfPs7;^szQ9gbxM=%01u!zc592($s60ZFQJ*_ z;_V*yKLqZASw6eP0i>p-Mf_lA_wx$)+!}vo@qPoXDnvLX+|-ycVgAU{#IBI!0`Mo5 zW0H_RGV=;!VtKc=V|?s(GT%%Pw2dc_ca)aVdP4u_sC;bafZ3Cff9fMLSFD%hbPG`c zR0=Tq*huz-%N`-<5WjutLO`~peGT)u64Jzq7rPw)%jQUb9GfsRVL z?iDum+&MeGJGKSS!->ll_9E($xk}^=T^F(PWqF>M*-bzbUwW2@-U@Vd$PS2nn)xmp zgM0<}DIpLf54YI;iEM{+?2jrdBWH{h@QJBJTeOF45PPX^VilJd1Q+YrsbT8L0|LRW z2nv97k(4enH6Q?Y1OR{m;PcU~<{%lGAx(9zK4zk$0MLOoX7|Xj0)%FE>c9vkJ@gG( zODvkCmFw-bJ-!x}&?n+ad5~}hDZwS@(yeu;p~M}h+K|a9IP%=rw9IGOj_AWOluxp4 zHk+a~?FFWSh(wJOU$dyAPjYd6WB*#G>3)4V!Kdue(tyEssrftROS6eyEovc1K6IfY zbj;>Uvk^}|aj`WlRwZL%jcXtTAfLkR<#Un{rMrQ3SXLx3*#8!m7a(+6pp*Jh_DAZd zXFw;CeE@@zE*gkNTTb{{=OZzRDA7DFE%V1tX zgi^1STi5#l{2yVtex;7>0Mad`2jQUzRMqT*1I;ldU#rJei$c0YU=llJt%Ui<1uZtZD!09%9--TKMF*K;iG?C z>KNJVGk0vM95gJA;X&xE$^3C}aymS6OyH<_^=pJJT#(e@P)RxA$y9Rh25c$&85)5a z2~{{iec)&iEi?-Yk4!cyR~N0Lbtx3Cz-Y?h^0GDo*g3AsBO1TWp@M36e7CSA3HM?# z4395d-^S4yIK81B;lSFZnkF8^P%+uGhPR{_7=^}lrT#-Hu~58D6TYT%!8|99#C zDfRy|`hVK3)^@Y~vh@Fy`ah%pMrU;f?lXLu=BrB%wzy~6c$tpJP1HFE0sJO~$o>*D&SM1?7JHnp9}NUh$d zVNL1RG1cOr%qw37cyeqmg6H`Dj$r)VE8^ zx5vALpgQ9>eAZWAa7%1W6OO;pa#6p}URyJtYubcQrORZ*ottW{r!jcoCzSzkhpxjZ zE%5HdM+xA=$0dJFFLbKWXME0eDpapC9ia8PKC}Hmzo;jG#?}HCz(;NvEW!XVo_Qfp zf&~1d`oN+OHPa6!kSR*Ar-CNw7Cj_KZ5)lH82_05VrB=>0^G0G(m<--NNsg$&jMih z%$i?LEavx;jbujP=#U7!s$Z*90kztBB1Nwuj*p|<@=egbz|0>+rQiNZxX*rxC z(bLlPf)-A;uIzM>0lLU2CF#&tgX?OIy+|=*Df30tB7i!VmL!{)Axm8np6Uzod!6~$ zd^YQ&_|`;asLxUANVqtw!d)%$5`Re1Iia6~zmS>~yz&F`jPN(#kh0acSLeCCNC|~eAtwQUlWAV$vUhrh+ zKSqyJRX2e(f5YN*_KozxL;b0v_T$jQ<3W-yh&56Hh@LcQ=%DY9FMCI_g^ol9Y7LRO zrj!?8nb_l?TE$K-`5JF~K4Qd=63weX>GM@XAtr$+=D5>ptZ+m2qs1>3DYS}EQZ>ip*N4s})=&BKHR!Y+OXahnb5B%1damkF3 z84LQ9>iKa6K}n<|Ru+|q<A?Yh6tZ5dQl;3Z`G{SQ2Yeii)Hb7uM1WpY1gqvqhn~grjnDLY7Jp6ku56Bs zWhm+zy675u(h}xXWi8PeVTS=`S>Y@wuqH*-OR+X)$sbFMFfsU_2jf!D$zn3m^Sr1^ zWfm8|Cu&)Hnyy#xiR#5+%$jK4HH6^dg7CD$aBo}4Hn`^F52GwX)fD2(jX29xI3`a+ ztvNV144LIqj?ELaCApm@JMpe;H)y!?=Ecf^tHL7W6jWJH4c1~f*B-tC-8e$EeQFa2 z25JOQr~N92Ztxn1t^-V}<&UWe9ER`sN9?N+#xl9@iGQ?dph@${o>UB!H90u}!8H-K zTGO;Vwq`{?k418V6m?BKqjS`_Ca1@V39Q~+{iYtwK!0=Fm?uw3$fu;|EcAflLR*-eGr@F z?&?{`2-lt&%qvPhnF(%`49h7u9AhZJ^>4cO99SW0lsK zP)E8?65K0VEGU|BC%$ER$U0=KMZ$yE4+eQF2eOC)wHdd)s`UHhIX04s3AReSSGZ$9 ze<1-^RAq%cMsG^cVXBZ7^Nn-M_;ttlzlQPhpXSEJx99)#FaE9sU*W3VS4#XGn|JZ4Z{hzH) zv(d)*kF9p6+b#XS&+(`;QZPc$)o(p^U>DPuZ@QL0r$i_^KBa4#$7dYIJpL&3W{_S{ zr+BP|ZN^UW(CLT5^E?VkMT;F;k{I=j%+g|h?ukl0ogWvJa&fFUmZ{_UwbQ#frfRZ$9z@W%Fwqw)V#)10P zHqe{p2gbf&#ddep?U??xt|i?Mk4Jo9jgL-$GAwT{5o@uTPKup+%0-@7_tXDameba? zH5UGeW$q$K{VBB67Gi3UfLnnzo=scM+6glHB&YMtFsSnA4v08`4hM1Ir;o=J z0gEg*I-=S~cM7f%UgBXdz~LHlmSV_RiUHz$!wndsb8D^+j~ZiE$=&Z@ieqNWT@L{W z0L*wC(dd86CRJ+{VoEY~MERmP&El)$PAET zU3r`vfosUfsZq;LUGIuyOLCnI5N4Q6=oGAj=i2C-L7=+kxD%csA+bit5abtMg63;6 zJnpG~F(aUI{9lg$%l)6__Vwrw^;#)+wO-7tg8M zpWJEvd3?iIx2JOrC)m2eGfZJa?r{ub^bBZV!BA)eJ^GSp$qXp{t?GMjVk4s($rsf6 z@2q;qeNf-E9*ge_UEL;m6%#bTR3P9UUiOeIJTdfkr}18uUw5EPPkNUmyO&_*%mpP= zt>ON{bIJhndZ%Bka5N)T>V}6bQ%ut=a4!pOkreQBqdc&iJ)pZipxfQs{R;h94`}*7 z)h$11_sr?0tG6I13Pc%oQT`l^zqsH+ZPtr*sH~8r3S58t#@Y%*Qb`)*-i;DG3UQUQ z<0K};nJr#wr%0Th;vFQp)8yLyIwD4T!Tym%+3UC6Be|00OgZW==l|vWKRf^Lv|6p^ zc6t9>Isebj|K)=1qm}?x%>Uc%4&DFOZMGYm?M|1@|2NC?pU*k}PoLa;@KH}(K=_Yb zACQ6_?bBcT{7>Oxg2brbbC@kY#>(@Z6fO?r0V~qgw^d67>sK)!>#E7lxej?CleKcL zv*tXfaE_BZzk%wdXwJ?}vXx4u+_O_Y+x91-x`q4YQ@B6pj(O#Gd$NU*G$-ZMMg(Ym zOh;1DRbl4vSyoW;IP^IeQL@@(#X8ETT}#PhPw{d}q+A~{LsupJxk-9Clr86f<@|45 z|8Kjs-6-$>Dd&IL`5$dF`egBcHka`~8%>J;vsK>z{haeZkE@B?FFs7qo-`^D@RzR3 zkgryN=J`)d7C(6mAye)dle82ZC$1NqdaAEF4OK4;15iLtH0FvEls6MB$S-^?@yrlG0zs;E@K3#3T0+z)pnh2)!27^B2A(lVL9wO z`q*sUJ3Fh$Yc1lAjfkka+W*-$w{X}?cVF1c`%O&t&9uVmnW77Z#4F0mV6UuyxHp9v zuoQ4sZ8Fc@laX8*iT0+y&@=w@dhC`JIRi+{{XFiAJ-%xnA0%w}Guj6KsZJA$t|l3G zDsGO6Um6qDTTH}7RUUL$FTyUS{yDf);vT7tHJT-MH~<^w-e!n#U+PhSt)2^s_w_AVn+`yYHKqvmg|YwmcST=azV33suA_>XgsNoC(E!?^!E)9n1T`x zV|jO&F|mER{z3VOqd-wYt&AseS*8P&(Q4jwd88VRA9A#!3h7r(Izc_2MA1XwLzS}7 z`b(o2uY4z13=$R9Qyc*p$wL{{Y!sP9(5C2O9ZI~Wi6w4)|E;n!M*dfNtP(qwv2g?D zSsV;`frF1qy&~=dwtuDX2>yy&9vG+peSZd3tNdiVv4gkarLnWH)xE_P24Jm5t7SBs zMr*tByQmRyNsxmEExq&_JE~F_*BL=2#ieO}Y-g8(18hj4iBX>Xs%K(%7ZBnC94bwK zo;NSfb&;xH2u{E_2$?A%;>)vYoTZLaWERfU%FP3psMC0L*Z(M_48wL2b!d+z@wqF+ zQA9ohI5B71Ur4ltHG_d6AFK zh!oWf3{MQHn0tgINopPjbu%C>wVi5C1TR%^9+TdCV#PRzLGe;#^fwG=7f*&h ze0y1`nYVz2XX_)YkQ<~6FEx^P&Mm+&`XC+@ri>QalN3XVP)j-cFf&Bdmhpsg&S<5A zJ*EJ(hlN4P!LOLlKQ3T;f@`!@{SRra;&(CWGnjd zB2^FwRMlcB4>BdM(4APzEHlKIo*jCMNhGny_Gx6R@F#2+z<7M_-tcOoc=1IhRbvIE z$dm)iqf;?r#9?KGKGzFJS2`~15A!$jwbitHSS>GM)N_Hp{q|dS=CYXuz3e*gnm^#y zw+N)?F_xwntRB@#1+hyX8I+OJ?(sp#0CIM)$G$EnfU(5*1cZ`vhMlT8!DOP6kKTbh zGYYjgB3n5cVboEo2)HMf%9S1_i`DBoOgRijwmG zN|d339>>E-Cds&OGe-tEdp0B$5G;zZoM@~UYaG2zRyTbR_d%6>OvGjERddUZR>o32 zOw*vj)p8+Ouh9s>MjDA2++L?XA)aT>5__9}>U1GSHfA zJhJ~k?EXjiyjkA=SnmHR_5ZW){{j79?*A$Ef1&k2?sOtDyiw>e-Q zV`#Sw8sXmSF$EzL3=XryS&vQl%|Fy9GxW6+vAp6NVvj+Oecx}JTiU*e7iHjP_#WFI z?hX!52TR~R+Yfq6Ut}tsE|y89MMrtR>$f^ziV`gCe`)_q`(N7sweA1u(Yuq~!KoR1 z3?5|v@45fE+ia%of45!6e|?rGvYUgQy@P={pJ=ps)?D0a_uT=m68zZ>8t|oz7P2|NkuQUv~Y{ z{y)3@FZX|cKKozp|1Rx+*8U48@OXOlRQ>;6``_s%_kTCLoo*Tb`B|QG7}!zBpbIUq zu11%kJ;QTp^g=f(^jSkIH9=|r%lZG8G5>Fu_dk^Oe?x5od$Rt2-~EqU@%?`t?El^N zW*PtUS)Tlmo$fu+J)@f*K21c2 zQaofx`z4BWrC+dWs+gFlPzVT?B?UM;o>{)nWK0Vm4Lk6!)XfDi#Q@hVJ7!wPFvA{@s zW`@YxvH}<%BSrJo%)PW`6cuS1eos)br08pQYlFtS>oJPLq(T?67Z__X!i+D*9sD1s^SSPHDWYy{ zjjuWWScKjcuUyoMBh*gyV~^k1Zs^2Pz{lck zu;TKMDc=6ESWU)~2#}Ix+fFSI)=8Y6{CLl_GhW%%M1+>5u%+U*q> "$DESKTOP_FILE" echo "Terminal=false" >> "$DESKTOP_FILE" echo "Categories=Application;" >> "$DESKTOP_FILE" +APP_DESKTOP="$HOME/.local/share/applications/$APP_NAME.desktop" + +cp "$DESKTOP_FILE" "$APP_DESKTOP" # Make the .desktop file executable chmod +x "$DESKTOP_FILE" +chmod +x "$APP_DESKTOP" -echo "Desktop shortcut created at $DESKTOP_FILE" - -# Function to check if conda environment is active -is_conda_active() { - if [[ -n "$CONDA_DEFAULT_ENV" ]]; then - return 0 # True, environment is active - else - return 1 # False, no environment is active - fi -} +echo "Desktop shortcut created at $APP_DESKTOP" diff --git a/package/mac_installer.sh b/package/mac_installer.sh index d5ac8e33..2e318393 100755 --- a/package/mac_installer.sh +++ b/package/mac_installer.sh @@ -3,7 +3,7 @@ pip install -vv psyneulinkviewer --break-system-packages --use-pep517 && source # Variables - adjust these for your setup APP_PATH="$HOME/psyneulinkviewer-darwin-x64/psyneulinkviewer.app/" # Replace with the full path to the application -CONDA_ENV="psyneulinkview" # Replace with your Conda environment name +CONDA_ENV=$PSYNEULINK_ENV # Replace with your Conda environment name ICON_PATH="$HOME/psyneulinkviewer-darwin-x64/psyneulinkviewer.app/Contents/Resources/electron.icns" # Replace with the full path to your custom icon (should be in .icns format) SHORTCUT_NAME="PsyneulinkViewer" # Name for the desktop shortcut diff --git a/package/psyneulinkviewer/start.py b/package/psyneulinkviewer/start.py index 7592206d..3bc37b15 100644 --- a/package/psyneulinkviewer/start.py +++ b/package/psyneulinkviewer/start.py @@ -2,6 +2,7 @@ import json import platform import os +import shutil import sys import subprocess import logging @@ -95,8 +96,16 @@ def get_latest_release(installation_path): tar = tarfile.open(tar_location) extract_location = configuration.extract_location + + psyneulink_location = configuration.extract_location + configuration.application_url if platform.system() == "Darwin": extract_location = os.path.expanduser("~") + psyneulink_location = configuration.extract_location + configuration.application_url_mac + + # Remove the folder if it exists + if os.path.exists(psyneulink_location): + shutil.rmtree(psyneulink_location) + permissions = os.access(extract_location, os.W_OK) logging.info("Extract location permissions : %s", permissions) @@ -143,6 +152,12 @@ def prerequisites(): #Install package requirements on conda env_name = detect_activated_conda() env_location = detect_activated_conda_location() + env_var_name = 'PSYNEULINK_ENV' + env_var_value = configuration.env_name + bashrc_path = f"{os.path.expanduser('~')}/.profile" # Change to .bash_profile or .profile if needed + if platform.system() == 'Darwin': + bashrc_path = f"{os.path.expanduser('~')}/.bashrc_profile" + if env_name is None or env_location is None: conda_command_binary = configuration.conda_installation_path + configuration.continue_on_conda_new_env if platform.system() == 'Darwin': @@ -150,10 +165,14 @@ def prerequisites(): logging.info("Binary command %s ", conda_command_binary) subprocess.run(conda_command_binary, shell=True) else: + env_var_value = env_name command = env_location + "/bin/conda run -n " + env_name + configuration.binary_commands logging.info("Binary command %s ", command) subprocess.run(command, shell=True) + with open(bashrc_path, 'a') as f: + f.write(f'\nexport {env_var_name}="{env_var_value}"\n') + def main(): prerequisites() diff --git a/package/setup.py b/package/setup.py index dbb8b2d5..c1d11282 100644 --- a/package/setup.py +++ b/package/setup.py @@ -68,7 +68,7 @@ def run(self): setup( name="psyneulinkviewer", - version="0.4.6", + version="0.4.7", url='https://github.com/metacell/psyneulinkviewer', author='metacell', author_email='dev@metacell.us', From 164b51c63fb6150ecbe15b3a16ef42883fe1411a Mon Sep 17 00:00:00 2001 From: jrmartin Date: Tue, 24 Sep 2024 22:18:14 -0700 Subject: [PATCH 084/126] #PSYNEU - 140 - update version with fixes --- .gitignore | 4 +++- package/dist/psyneulinkviewer-0.4.6.tar.gz | Bin 7817 -> 0 bytes package/dist/psyneulinkviewer-0.4.7.tar.gz | Bin 0 -> 7822 bytes package/psyneulinkviewer.egg-info/PKG-INFO | 2 +- 4 files changed, 4 insertions(+), 2 deletions(-) delete mode 100644 package/dist/psyneulinkviewer-0.4.6.tar.gz create mode 100644 package/dist/psyneulinkviewer-0.4.7.tar.gz diff --git a/.gitignore b/.gitignore index c033b54a..6d2b7c50 100644 --- a/.gitignore +++ b/.gitignore @@ -48,4 +48,6 @@ yalc.lock #prettier config .prettierrc.json -.idea \ No newline at end of file +.idea + +package/.eggs \ No newline at end of file diff --git a/package/dist/psyneulinkviewer-0.4.6.tar.gz b/package/dist/psyneulinkviewer-0.4.6.tar.gz deleted file mode 100644 index 133f9b1ebc8c679c989bf80207875db9f817d46a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7817 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 b)UMzFX=Qh1axE|}G%hzTbYXG;?LBLA+qSa( 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 literal 0 HcmV?d00001 diff --git a/package/psyneulinkviewer.egg-info/PKG-INFO b/package/psyneulinkviewer.egg-info/PKG-INFO index f8bdd8c3..b6458a8c 100644 --- a/package/psyneulinkviewer.egg-info/PKG-INFO +++ b/package/psyneulinkviewer.egg-info/PKG-INFO @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: psyneulinkviewer -Version: 0.4.6 +Version: 0.4.7 Home-page: https://github.com/metacell/psyneulinkviewer Author: metacell Author-email: dev@metacell.us From 559a8f3ac44ce81d364383039e8cee7ee892464a Mon Sep 17 00:00:00 2001 From: jrmartin Date: Tue, 24 Sep 2024 22:46:50 -0700 Subject: [PATCH 085/126] #psyneu-140 - fix desktop --- package/linux_installer.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package/linux_installer.sh b/package/linux_installer.sh index 09921892..b78beec6 100755 --- a/package/linux_installer.sh +++ b/package/linux_installer.sh @@ -40,6 +40,7 @@ APP_DESKTOP="$HOME/.local/share/applications/$APP_NAME.desktop" cp "$DESKTOP_FILE" "$APP_DESKTOP" # Make the .desktop file executable chmod +x "$DESKTOP_FILE" +rm "$DESKTOP_FILE" chmod +x "$APP_DESKTOP" -echo "Desktop shortcut created at $APP_DESKTOP" +echo "Application shortcut created at $APP_DESKTOP" From fc66d2187c90b9df061af9890d738e5b182e3a4c Mon Sep 17 00:00:00 2001 From: jrmartin Date: Wed, 25 Sep 2024 13:31:59 -0700 Subject: [PATCH 086/126] #PSYNEU-140 - Fix re-running installation after broken step --- package/dist/psyneulinkviewer-0.4.7.tar.gz | Bin 7822 -> 8058 bytes package/linux_installer.sh | 2 +- package/mac_installer.sh | 2 +- package/psyneulinkviewer/configuration.py | 3 +- package/psyneulinkviewer/start.py | 45 +++++++++++++++++---- package/setup.py | 2 +- 6 files changed, 42 insertions(+), 12 deletions(-) diff --git a/package/dist/psyneulinkviewer-0.4.7.tar.gz b/package/dist/psyneulinkviewer-0.4.7.tar.gz index 6d0037b2eb8aae34bfb48fbb023310d8dd7fe381..07cf9ab8b78fbae2b1eb361f0e39be61029ec501 100644 GIT binary patch literal 8058 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 IvHMzFX=Qh1axE|}G%hzTbYXG;?LBLA+qSa( z%wK`aPDfHB(t24=bgK5awvy=9ud$t`y>3Q_mLQ9bMC$Ni$L+Mg{q8ORicd>+9jE7n zoJ=f&i^XEG*afh_!rU^q{&`}3c+IT|_rCZjPeVLKe;bWQt;55)?YzIX`3?7s zhS@Q9wjRCz@9b>j-{#JCBmOt)^UY3or?b=SwmV(u|DA4U`wO=Hl>Pt4ntP#N47cw4 zf9PZW9rS;zo7MmAQvW}R{%@`HfAdA7^?bW!HcHL^x$FOf;ojirZ18yfzuWB;>Hk)v z+eH1p-RQL1od&=)x4Z4;7p(D={r@x7|9kH8*0Zl>0jrK{tkq~fXXi7{PHuyl>#!4R z{NB2wgvdu#2tqV?gUnV5l+hO=kePTB@P#p%$<9^`TW5iKswlkiG6Qn_Xp4$ssmVnub zAHD`iLmz5@bk^Czo!C?S%c)w+@N#bZvpSpDi25=NAkoLfF?TQ*)MLx_n9t{P4KUb1 zH`R4T9l;>!OJryuS>$8N&CFdSYhwG_H1r%Ol2e|E3oN4&f92xp%HVKtbZ$bakj4f-!V5cly?bzgMQOWlfcjIUkL?|w{Cqlm z_4=H>K0eqVK;riUpltX1gMlatDz$g8J3Oqj{oTXeR|Cp*3|LMz1QXP;x3347gyrqR zzrFL}@ex*I@A&Ba6kh94%hU5H>)YYkpw4zrhiAx;m#4>vbq(1GIgSYl zXb}Lx_cv#Q2qD`a>>dEFGt7)tRKR9wGRyIQx&BkG|CG;v^Z5VdhgSwzzT?Lm|91+< z|BX(&om&6d-sv>T@&8jihdi(*R$v)F!sru*Z#~vBo7$1J;60X>4K0EpA<K0+O1}}{#V-n)4}fk;lNx>o?!j2+ikam{crCyVF(KSzuRoJ zO8fs5&zEfI00-uCTr_eWc3?Z<2Tj{|Z=AVnP1vR7&zL{<>?JKS*#ekd;IiMlsxteY zbz=(CANt%IyH3EJfJOm0zSzT2z=?l*#6v*;{znkBttq#H(BoStXFnee-WbhJV@udy zzBNY@MzSRCnf|P1YQv!7gEa?~3+_zR8ki)~4sdDe)(t&2gE0x4fK?v{u6JuPO*?j2 zfNNWhHLtTP7c=HSYXADzzqIj${YgKxy_w})aawPTt&GvyoP|qlxH9PBn-@AzyvRLU zxD)n_ePG!d2&}u#L}XB37^RzAg&C$mx&jvql(rA`c6d+IhErPQvlw@-ZO?UZnG`>R zpn@^KW!5;buX&wHBy^d97?n|k#&LrPMKI$I;ptHxANV)s?9VN8>AA=wO<*8!E8wY- zV?n{RD!E+F?XjqtKXb$Rgt<#7D_k-^9FMs_4d-*H3h@EgDNVKuJb>cZjV)FuuWjGH zgl3Y9xBJ|GAGk|q`RoP2Z7wqKr#1=dcCoWss%cw`@Dv@(^UBt?l<#}ReHvvt2=~*6nE6~v)J0S9D z?z?OZ@)h8xgg}ry++g=7vK`K`KdP*ZoH0_sC#Di@(H^ov?3KESRa{~aT&!cKhN&kH z2n4$#C;-w$Qo6|0fB@VQ000Jn&queKgJfuiG}XEKn2C-8K!?_t-66vY5SrPk10$65 z&^Kf)v1pQ3t~WD#JQJ4CC*nzYkZ=Ym!6oO?jdiP`#GRztkjW`H^4!<7%xBq-=)*FU zPqJ+`o1!)CC8mOiM2!<)v#6s_ayh%Uf2-4UzrLE_Q}$?Sz+ijS{2lX!*+j1vwGbp9 zxzG_hX7h#Fh$o-A*cukAk}Jku=Di-jAOdM)&D&K&>`Kv&@K zrlQ)=L#UWGDiGh>lZ&Xh0yQ6Mr5 zAN}J}$H-=%yJJh`pkZkY4?<^6=8uEZv*EF00!PiO-y&?`lB5QQO3DdOrjmQtU`yH0 z&sKNp2Jx7CRp;=gZWU^7Yx@aA(OQCQDMpF)#SG5Vi&T&;9(fD-^6;!*E+odf@ zxD$(Eczo&lHjd6H=MpoO5kcI;p@GMBfH?f+5we|x*L4Q8SZ`X9z0rT?eY|E2za zTK|8m)p*`$l={Ea{~7&HE94JR{%iGrv)$}=#rVJ5={B+dw{S30>i?&B*-nn7LRM>)bV)`E(6!a^-qZkQ|fGLJCl)Gy-&lM z(ywEx#X*@@z6$W{BDw$qd7auver@`+@$ho&XwKOI!dSxnZyj1HgFhg**uo z@DJ((i$2s$KbSzKD8ZfznxtFwh#a+XG?HTcWBSXv9Y70kzgkNJsd^)|)u}xXfZ=m% zaXGP=-%B=<8G)liBJiqytxg5hY8Q=nMTiklz19RN)eO99KHHhPRecci`%c}^nXs>X zy&fU0rMMtV>K9PkyQ8GNjGwu%JpN(KmjN5lA6&(@e8xS`^;Y=T;l`FC{CZ8x;S`CU zmaZ4HaI$q}r-Ka8MMfz}hrSxjsx|g3#f+8A7g37<>ReiqY+{BibwzlpFUaq8=Fj+i z-beARiONu)qtuabaaM)9TJ}9%*U#JqC!Y>_Wo|5o_IdC{I7g>F`Nim9AiCsqfkH4S&*Q%CK`p@%1fBwr9~qyi8GdrBn(AHI92v_{ z)HQU`HT0w<%&W>qqBFt{1I)6*c~D?YimI1lZOoEClo(-R@IMd6rJj?;WTNMJS(VBx zE`E>Hvi3Axuihioi^G^T(YzZ7!Tkl{afRW|wvcTw3;>)!-%TzcfPeW}u zI5!NL&wS0jvNa^DmGVADX8=8-+A7$|FUasq;DB5bv$ zX?bkTihdr8p_=!>RsL%QGhlZbtebHp|J^ zsj)_m&wR3T+s)>06r)6ykUN`8up+)9AXHQlm2C3`gJ=T0nO?#QedOhWoau0kP7h`d z-15e=YNh(!H+`|wI>Fl>t5tuwc~-0B&BasL)KBxubHin|SxXzJ_{3dDCgxbBO(xWl z?vn)fiWUosX55KynI5tU85@ys@AZR0-pYY2qCjoNZLcc*E_sfPWMYD?67Ll57|`EH zz!gF7`*-vIcDopO<9X@-E&acF{@>Wl;(mVMb@3lNZL$Be)oC`` z82_==hPTrH`xK8lBLyP_UH#T$2X--i^`>k2b4rAw<5Rk(d3?@c%;S$jZw~1db&AJY z+Ggw|51oD}JkO($RJ7QkC5chb$Sf`9=bot4)A?~hDHq3@W0^XhUpu>9V5;Vezldim z^t~-Q(Xw@EJ2~aU_|k*1QG6(t$^@v>-UtMWjvfP}Ov|yv4h)K{V>>pzZ5^s#Z3Deo zeqbC3Ry^;Hx*gM>=~~kL@NmS3*7*4BC&Tg<60sJW>7>}Hr(EQTbwB;jRXJ^4+hF03 zSmrK+L_RIC(w{<0Z6T%x3Ai;_1?-f|L68jx&QMi z_kV7*%kv%^F7LUO^O5&w#l)86g$=pGF^thOpn(NLp$+utOQIz+p!Bz@ z@4JbOjA|rbQ0wnl^_KgfzH2=e-xs>RP4X%xXn?6ez&*U|Az650=5l0p#^of49cbj8v%`9Hku<{HWbCr<<;5LXs+Q^X(fOD-cN~ zX^=ZNO7JMeRnCr+m=I^Sc&VKtae9h(kmOF2Yj^9280iK3M-pXk-gXb5 zm-GMZ{J+y`wVKb%``^m>e|G*a7i=H21h8iQ-)?v4{Iya_2Wty%f#axk&rWw6_kXrP1(fr@C!GIz zTutPD^GBNuY6WPl|H9Pqqem1n{5{usA_^^TLAs!t)Z(obfn6_I%rxn+$O~@ZRy!{_g1HbntTcQ-z|2M6p5Q z6J6Jj&By^no#m@IL2T*}4fZN;q22K^3h8(C!zEUbPbztSkW}Q8vuNfPWz!S0Zm|h7 zMv$sdX0BFk*V#^uebXn>B-#;{!@i-9&DNcBwTistBJSphh^njIplx#p2f=g`hP}G& z#AIJhE3BR=x?q63rmPJ1%H~IXQUPt#L>|!Ax2X{)`BbBj1 zv&4=HV8h(m3^DFYJqobZ3n7tw90nLm2^WnP$oZwcOtnSqAi}%a#te+*dL*_bFh+r0 z(5#VaM7=v2Ppad|DhL(*eZ>Q&poIHa-XvyBY@aTJP#)tbY?M$d<4IhW={RMywl`fJ zutwvD9IdEA`c;$8Q;#Q6ED`unr7W}>(@IC}i*bbkSPRCHMzd+Oo>%@5H6ktva?qfq7h+=vSL)(&BdDafLd}ou z^HOkt4JkA+=96FbOziFgLR^PKr3uiB=DQ1Br0VYkCtw_e%#;xE#acD$Qim%t%V=sH z=bj7JX}r4Ye-KiJLA;1Mw8xV8-1XupJ|6*HRPeR(jwMY&re*?Izx2RBb8n>LWFepR zm#d>8?p6Gep!@(S>qOY^6d!rT_$GE2FS^&P+J9)M+*Ce&LpKC|AwOKP+M5 zgKNQ6{mBpcNPg$+l`6WB$3%oc`UK%*TiQN?MzZ2VoVuO51DW+C)2#bxJ#r)Is z7I^VjE^Ji3Xq?zJm&6o{h6&Yl)i5ff`F3>tL!Ouq1Tc&E5XUNgJ+Y)(r05j~(Kcfp z`{`mM5jDqin91eFbUT%uiv&D$Vj^z^QB05wUSW@77r&)?dX@oqHf`;m68U%~qfo^< z>FNk(GM7xhCz&g3Ye>wT8`UL?iv&z!zEiH`u~J3{Bv*)vMXDgSs;b3G9%M>hp}Vn` zS!IYZJv)AnbyC}>>4CzZ7ytl_M?JopC|-P#N!3_EDKh2g{P;`^yK!tDq0e<}(k+>* z`okoc+?O@&4pz&1E%jWWufP79ox5yqK`)!--JA&A`Wk`sJjT*Ijn$(%skngYQ9MOPdG{QixR1wfQv>*Uu z3GOE=;rhw)<)TR}DK93Uun|Lb$*a7S(2Ly*iq~vX&W&Sz<%GZ4EY>1sx`t7KETAH8 zk~|n5{V*CF{a8uBTwC*yv!bxjnhFu?jn%>Dss4M8HLm1Nt{P6F;hk^+^KB{%Bl#E?e%5?s%TEsZ>vi?FMs+Z#oK%!@pme}wsg z8(j*ByH6DCwG<^a#rL8N6>&Qr!!$|8T|0>~z}bUI$k7@p)u z`k45=xbV<;;IvDDhW9a1hbe|tsi7^I#=Qizt@8fQa{pJU|DSmO7wP|U|5vI13-$lW53dZ|)^XqcU!CInKRfMq zO8>VT+uP;-ucvr00N=z4Eaf@vv6k7?jxdsUX6uj^!H|$>uiXVVmev)3s+e-I0DlX> zJjT#|88pJ7+hYnsCKwzhM)Mw<@auo7PiE+Ar(!M0H^i=z9{aZ6hSCp2yf6a~L-g3e zaBpyQHdq1g+kVhnd7o41bg@t>Ejr5mO~2LoT$EsG|4aK{+W*r2Z*2e1j^CW_4bIHq zLvSzqf5-jb-DWdw|8clb+W#kbBD*=*-9H?di-|_trOoB7cGn&7THyu3+S<_3T2XL0 z?T%CDTH%QVZT(nP+en=6fST|ncP88!-;VIJzXn`-uhxMD?s7!?rSH?3O8Z~h|I+@K z&!@8gd8+U)+JAUW+5c{%U7r7XlBewIpZ8PR|I+@K_P@0M8{7Z*+~$$y|BZGxW&b_P@0MrTs7Me`)_WvHuTPv|MZdTj}|KXS-4Q|369lmtDWK z|4(lJ%l+S<&iKa7vxZh`g3|t%^Z(Cc{@;4hEa(5F{a2g79X=Qm4=x8212#S46oCW)_BDeh+k6i~<_Sh^{gsp|};t4s2^~|Hc*es?X=s znA|D~iXc}q2XCf~GeWTqqe7s4?=0d=_9NaFh_ep~5fACH!kdXNk}mch;ca4pCYBgm z(aaE8TU7ufP^4(Sn!A_QoI*IQVyg)%Rup~7Zfwwamz*^*Sjvhk0-6+N6niFZnJd|w zQom&9-Ys_6&{5hHqZO$jI-yU&O6_Iw^(aMwaiI&@ON_1=Va6BZ7XFXZ`BZoM6j3*} z#xssTmZ5jWEAMK>F^Q-8iN~*PH}oUr=T6!0@!I^c;v@9`-vw{}Ftazl#K_qr;1lsS zSabQy6mNf7t|wzf1W3uMZKoCp>m*K3euQt@8L#YWA~?xP*is=&(!D#9a7~;C5RsB8 zq--_>nrK~FoxV;ZNSPRV^M2(%hXbW;u;@f!zoOt0$s;-_*sr7x3Q8EFH&UkpnFRXuheSvAdsV1T ghaq*XywtRO%BOtFr+mt%d^UalAL_)QivaKd0KB{M6#xJL diff --git a/package/linux_installer.sh b/package/linux_installer.sh index b78beec6..c9604225 100755 --- a/package/linux_installer.sh +++ b/package/linux_installer.sh @@ -26,7 +26,7 @@ echo "Name=$APP_NAME" >> "$DESKTOP_FILE" # Create the Exec command: Check if conda environment is active, if not activate the specified one echo "Exec=bash -c 'source ~/miniconda3/etc/profile.d/conda.sh && \ -if ! is_conda_active; then conda activate $CONDA_ENV; fi && \ +conda activate $CONDA_ENV && \ $SYMLINK_PATH'" >> "$DESKTOP_FILE" # Set the custom icon diff --git a/package/mac_installer.sh b/package/mac_installer.sh index 2e318393..55b93efe 100755 --- a/package/mac_installer.sh +++ b/package/mac_installer.sh @@ -33,7 +33,7 @@ cat < "$COMMAND_FILE_PATH" source ~/.bash_profile # Activate conda environment and launch application source \$(conda info --base)/etc/profile.d/conda.sh -if ! is_conda_active; then conda activate $CONDA_ENV; fi +conda activate $CONDA_ENV open "$APP_PATH" EOL diff --git a/package/psyneulinkviewer/configuration.py b/package/psyneulinkviewer/configuration.py index afbb8027..796716ea 100644 --- a/package/psyneulinkviewer/configuration.py +++ b/package/psyneulinkviewer/configuration.py @@ -5,7 +5,8 @@ releases_url = 'https://api.github.com/repos/MetaCell/PsyNeuLinkView/releases' application_url = "psyneulinkviewer-linux-x64/psyneulinkviewer" application_url_mac = "psyneulinkviewer-darwin-x64/psyneulinkviewer.app" - +installation_folder_name = "/psyneulinkviewer-linux-x64" +installation_folder_name_mac = "/psyneulinkviewer-darwin-x64" #Symlink symlink = "/usr/local/bin/psyneulinkviewer" diff --git a/package/psyneulinkviewer/start.py b/package/psyneulinkviewer/start.py index 3bc37b15..1efb5544 100644 --- a/package/psyneulinkviewer/start.py +++ b/package/psyneulinkviewer/start.py @@ -97,13 +97,15 @@ def get_latest_release(installation_path): extract_location = configuration.extract_location - psyneulink_location = configuration.extract_location + configuration.application_url + psyneulink_location = extract_location + configuration.installation_folder_name if platform.system() == "Darwin": extract_location = os.path.expanduser("~") - psyneulink_location = configuration.extract_location + configuration.application_url_mac + psyneulink_location = extract_location + configuration.installation_folder_name_mac + logging.info("Removing %s", psyneulink_location) # Remove the folder if it exists if os.path.exists(psyneulink_location): + logging.info("Removing %s", psyneulink_location) shutil.rmtree(psyneulink_location) permissions = os.access(extract_location, os.W_OK) @@ -145,6 +147,37 @@ def continue_on_conda(): check_psyneulink() get_latest_release(os.path.dirname(os.path.realpath(__file__))) +def update_env_variable(var_name, var_value): + # Determine the appropriate profile file based on the OS + profile_file = os.path.expanduser('~/.profile') + if platform.system() == 'Darwin': + # For macOS and Linux + profile_file = os.path.expanduser('~/.bash_profile') + + # Read the current content of the profile file + try: + with open(profile_file, 'r') as file: + lines = file.readlines() + except FileNotFoundError: + lines = [] + + # Update or add the environment variable + var_found = False + for i, line in enumerate(lines): + if line.startswith(f'export {var_name}='): + lines[i] = f'export {var_name}="{var_value}"\n' + var_found = True + break + + if not var_found: + lines.append(f'export {var_name}="{var_value}"\n') + + # Write the updated content back to the profile file + with open(profile_file, 'w') as file: + file.writelines(lines) + + logging.info(f"Updated {var_name} in {profile_file}.") + def prerequisites(): check_os() check_python() @@ -154,10 +187,7 @@ def prerequisites(): env_location = detect_activated_conda_location() env_var_name = 'PSYNEULINK_ENV' env_var_value = configuration.env_name - bashrc_path = f"{os.path.expanduser('~')}/.profile" # Change to .bash_profile or .profile if needed - if platform.system() == 'Darwin': - bashrc_path = f"{os.path.expanduser('~')}/.bashrc_profile" - + if env_name is None or env_location is None: conda_command_binary = configuration.conda_installation_path + configuration.continue_on_conda_new_env if platform.system() == 'Darwin': @@ -170,8 +200,7 @@ def prerequisites(): logging.info("Binary command %s ", command) subprocess.run(command, shell=True) - with open(bashrc_path, 'a') as f: - f.write(f'\nexport {env_var_name}="{env_var_value}"\n') + update_env_variable(env_var_name, env_var_value) def main(): prerequisites() diff --git a/package/setup.py b/package/setup.py index c1d11282..713dc765 100644 --- a/package/setup.py +++ b/package/setup.py @@ -54,7 +54,7 @@ def run(self): # Try to uninstall the package using pip try: - result = subprocess.run(['pip', 'uninstall', '-y', package_name], + result = subprocess.run(['pip', 'uninstall', '-y', package_name, "--break-system-packages"], capture_output = True, text = True ).stdout From bbbc7926dfb1db25065757387bb7339d4810eeb5 Mon Sep 17 00:00:00 2001 From: jrmartin Date: Wed, 25 Sep 2024 15:30:36 -0700 Subject: [PATCH 087/126] #PSYNEU-140 - Mac installation fixes, updating version --- package/dist/psyneulinkviewer-0.4.7.tar.gz | Bin 8058 -> 0 bytes package/dist/psyneulinkviewer-0.4.8.tar.gz | Bin 0 -> 8109 bytes package/mac_installer.sh | 7 +++---- package/psyneulinkviewer.egg-info/PKG-INFO | 2 +- package/psyneulinkviewer/start.py | 2 +- package/setup.py | 2 +- 6 files changed, 6 insertions(+), 7 deletions(-) delete mode 100644 package/dist/psyneulinkviewer-0.4.7.tar.gz create mode 100644 package/dist/psyneulinkviewer-0.4.8.tar.gz diff --git a/package/dist/psyneulinkviewer-0.4.7.tar.gz b/package/dist/psyneulinkviewer-0.4.7.tar.gz deleted file mode 100644 index 07cf9ab8b78fbae2b1eb361f0e39be61029ec501..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8058 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 IvHMzFX=Qh1axE|}G%h$UbYXG;?LBLE+cvWO z%wK`aoE}MyNb6-e(bnB{Z6(pIWBb@n(_Ys{OG}W=h9b3m*l~N>-+pHX0L7;zyNu~TlgR(hQvUZ~l(t@W%~mD(zjXP(KiVB0oD3gt{P%mk zGWp+W_1h@_`vBB$ci?+_tA+Ew)>DrEFI4{TdW&1%zPt)qebQi^R{I4zz2fZXHoWp& zc4SRHSeLeY$#x=0@a^zc(~h`5w}Zfj?{>hhxX&+c*`;r}A)hwc%;%hWGd8)h{7c?s zp~o!umMyp+KnCw3v}_j(wAciy)&MfRf?@)17T#Ds2jD5Qg20>D7L>=P-XxlHH?%^m zZ)Q6@VD%6%)K6p%y+M^sx#eiK%kZ1}#BOZBItrQ3gV47pSVoiC?!<|vh=cm<*mGOf zfZ2&2fd+*}0ki<|Y_hpGwP*O3Q?nM)g<}U-O*XZ$=!+g^fxF=-Kmj{ovFug(DY&v6hh1<VGq2Cx@?2-|rj`+318F9UuNU+8gdMedh$;^(K2iI(>8a?vw$< z@y@~N&+PCO+d24|{V+P%YqH@_N5{jH6Lxs4jou#ZkA{#oI@sNRw>LU?&Ax|x2ZyI@ zfAn^A3Wc5?GOSP*H5#5^VQ+`WyKmri=ljwA==A5N_G)x`fMvcqJZ3xWXy^EJwEJ#< z=a?P6J3cx*8AA1YQ0&3z;MFnIGJHEcI5nYGNMpkv;f0;N+1cO6slT4iB&yyN3s-$MD*ORvw?mS>KONhE29}JUT&wygEL7+tiSpkmHaFfqVx; zQ3{fprFsNF@crG%FfNeo4R`jTtP{+PO;o^Ur82Aef3^Pe-@g9S?R2*)E8xqW{~!JE z+5pXW_!RU1RW>2MPdqo|Zb-8LoL}tXEZ``(J>U@(|KUeqw2c|J!pP?vM<+iY4Br{; zUTZ_>U%ufW3S(Il_s!s{VQQnW7JxQ~BIn$lsx>f)q#feY)U6l!>2YzkU^5_gWf(6lJ!h>1lIM5WL1Fln=YzJrn)v+5} ztWI9rfqenpBo}Y@c<>?g7R(CR4Nf36Ez9C>cXmH7gU_wWXJ+r$(5r%lGt5n$nPBFR zEQ{<4PA&m|R6ZsS`7>u%7*or?v0dY1znA-F0;6p_0>2}-jMroOzlP;Q2M1VBg8ylZ z$Xtn0QZOt;1<)ucF~Cl;r(BK*frt1VNEZT@hpTiA
    3B>Q*>P<>X-HT!m^u!B);%1AH5am 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 "$COMMAND_FILE_PATH" #!/bin/bash -source ~/.bash_profile -# Activate conda environment and launch application -source \$(conda info --base)/etc/profile.d/conda.sh +source ~/.bashrc_profile +source ~/miniconda3/etc/profile.d/conda.sh conda activate $CONDA_ENV open "$APP_PATH" EOL diff --git a/package/psyneulinkviewer.egg-info/PKG-INFO b/package/psyneulinkviewer.egg-info/PKG-INFO index b6458a8c..f9bfd786 100644 --- a/package/psyneulinkviewer.egg-info/PKG-INFO +++ b/package/psyneulinkviewer.egg-info/PKG-INFO @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: psyneulinkviewer -Version: 0.4.7 +Version: 0.4.8 Home-page: https://github.com/metacell/psyneulinkviewer Author: metacell Author-email: dev@metacell.us diff --git a/package/psyneulinkviewer/start.py b/package/psyneulinkviewer/start.py index 1efb5544..8548f740 100644 --- a/package/psyneulinkviewer/start.py +++ b/package/psyneulinkviewer/start.py @@ -152,7 +152,7 @@ def update_env_variable(var_name, var_value): profile_file = os.path.expanduser('~/.profile') if platform.system() == 'Darwin': # For macOS and Linux - profile_file = os.path.expanduser('~/.bash_profile') + profile_file = os.path.expanduser('~/.bashrc_profile') # Read the current content of the profile file try: diff --git a/package/setup.py b/package/setup.py index 713dc765..a88d7741 100644 --- a/package/setup.py +++ b/package/setup.py @@ -68,7 +68,7 @@ def run(self): setup( name="psyneulinkviewer", - version="0.4.7", + version="0.4.8", url='https://github.com/metacell/psyneulinkviewer', author='metacell', author_email='dev@metacell.us', From 1c651cfff3ac3a5784c6d79bbb17bb0c5c45e74b Mon Sep 17 00:00:00 2001 From: jrmartin Date: Wed, 25 Sep 2024 15:31:16 -0700 Subject: [PATCH 088/126] #PSYNEU-140 - remove testing path , use prod path for psyneulinkviewer --- package/mac_installer.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/mac_installer.sh b/package/mac_installer.sh index 2901430f..44ce4728 100755 --- a/package/mac_installer.sh +++ b/package/mac_installer.sh @@ -1,5 +1,5 @@ #!/bin/bash -pip install -vv dist/psyneulinkviewer-0.4.8.tar.gz --break-system-packages --use-pep517 && source ~/.bashrc_profile +pip install -vv psyneulinkviewer --break-system-packages --use-pep517 && source ~/.bashrc_profile # Variables - adjust these for your setup APP_PATH="$HOME/psyneulinkviewer-darwin-x64/psyneulinkviewer.app/" # Replace with the full path to the application From bca000569b0879ba3bee97e5e56dea4cff6c45f0 Mon Sep 17 00:00:00 2001 From: jrmartin Date: Fri, 27 Sep 2024 08:40:11 -0700 Subject: [PATCH 089/126] #PSYNEU-140 - Add sandbox permission commands, fix other installation errors reported --- package/linux_installer.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package/linux_installer.sh b/package/linux_installer.sh index c9604225..796c1f51 100755 --- a/package/linux_installer.sh +++ b/package/linux_installer.sh @@ -1,5 +1,5 @@ #!/bin/bash -pip install -vv psyneulinkviewer --break-system-packages --use-pep517 && source ~/.profile +pip install -vv psyneulinkviewer --break-system-packages --use-pep517 && . ~/.profile && sudo chown root:root /usr/local/bin/psyneulinkviewer-linux-x64/chrome-sandbox && sudo chmod 4755 /usr/local/bin/psyneulinkviewer-linux-x64/chrome-sandbox # Variables APP_NAME="PsyneulinkViewer" # Name of the application @@ -25,7 +25,7 @@ echo "Version=1.0" >> "$DESKTOP_FILE" echo "Name=$APP_NAME" >> "$DESKTOP_FILE" # Create the Exec command: Check if conda environment is active, if not activate the specified one -echo "Exec=bash -c 'source ~/miniconda3/etc/profile.d/conda.sh && \ +echo "Exec=bash -c '. ~/miniconda3/etc/profile.d/conda.sh && \ conda activate $CONDA_ENV && \ $SYMLINK_PATH'" >> "$DESKTOP_FILE" From 6a1411f988128c29a8eededb43e75789c3c8a1c9 Mon Sep 17 00:00:00 2001 From: ddelpiano Date: Tue, 22 Oct 2024 15:44:38 +0200 Subject: [PATCH 090/126] updating readme with the packaging information --- README.md | 168 +++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 117 insertions(+), 51 deletions(-) diff --git a/README.md b/README.md index 768c05b4..b017bd3a 100644 --- a/README.md +++ b/README.md @@ -1,95 +1,161 @@ -# Production installation +# Installing on Linux -## Pre installation +Download bash script to install [here](https://raw.githubusercontent.com/MetaCell/PsyNeuLinkView/feature/PSYNEU-140/package/linux_installer.sh). +It's recommended to download it in your home directory. -This application comes with a requirement for node [version 16.16](https://nodejs.org/en/blog/release/v16.16.0), please install that node version or nvm ([macos installation](https://aws.plainenglish.io/how-to-install-nvm-on-a-mac-8c1e9d1adc17) or [linux installation](https://tecadmin.net/how-to-install-nvm-on-ubuntu-20-04/)) to manage multiple node version. +On terminal, go to your home directory -In order to being able to run successfully PsyNeuLinkView you will need to follow the steps below +``` +cd ~ +``` + +Change file permissions to allow user to run it + +``` +chmod + x linux_installer.sh +``` + +And run installer + +``` +./linux_installer.sh +``` + +After installation is done: + +If conda environment is already active, run + +``` +psyneulinkviewer +``` + +If conda environment is not active, then run : + +``` +source ~/.profile +conda activate psyneulinkview +psyneulinkviewer +``` + +The application should open up succesfully after this. An icon will be visible on the Desktop as well. + +# Installing on MAC + +Download bash script to install [here](https://raw.githubusercontent.com/MetaCell/PsyNeuLinkView/feature/PSYNEU-140/package/mac_installer.sh). +It's recommended to download it in your home directory. + +On terminal, go to your home directory + +``` +cd ~ +``` + +Give user permissions to file + +``` +chmod +x mac_installer.sh +``` -- Create a conda environment +And run installer ``` -conda create --name psnl_viewer python=3.11 +./mac_installer.sh ``` -* Activate the conda environment just created +After installation is done: + +If conda environment is already active, run ``` -conda activate psnl_viewer +open ~/psyneulinkviewer-darwin-x64/psyneulinkviewer.app/ ``` -* Make the pre_installation.sh script executable +If conda environment is not active, then run : ``` -chmod +x pre_installation.sh +source ~/.bash_profile +conda activate psyneulinkview +open ~/psyneulinkviewer-darwin-x64/psyneulinkviewer.app/ ``` -* Run the pre_installation script that will take care of installing PsyNeuLink +The application should open up succesfully after this. A desktop icon should be visible as well. + +# Installation process inside script + +The scripts above run the following commands in order: + +Firs installs the python module 'psyneulinkviewer' from PyPi ``` -bash pre_installation.sh +sudo pip install psyneulinkviewer ``` -* Download the packaged version of the software from the [releases page](https://github.com/MetaCell/PsyNeuLinkView/releases) link, then +This commands installs required libraries and packages. Also creates a conda enviroment where the needed packages are installed. + +After successfully installing the python package above, it reset the user's bash profile to apply the settings changes + +- Linux -### MacOS +``` +source ~/.profile +``` -* Open your terminal and navigate to the folder containing the archive osx.tar.gz previously downloaded +- Mac -* Open the archive and then navigate in the app folder with the commands below +``` +source ~/.bash_profile +``` - ``` - tar xvfz osx.tar.gz - cd PsyNeuLinkViewer-darwin-x64/PsyNeuLinkViewer.app/Contents/MacOS/ - ``` +Then, a desktop file is created on the Desktop which allows users to open the application this way -* Before to launch the application ensure that you are running the node version required, so +# Psyneulinkviewer Requirements - ``` - node --version - ``` +Psyneulinkviewer requires: - and if this is different from v16.16 then either follow the steps at the top or run +- Python 3.11 and pip +- Pip packages : psyneulink, graphviz, wget, packaging and requests +- Conda 4.9.1 or above +- Node 4.19.0 or above +- Rosetta ( on Mac) - ``` - nvm use 16.16 - ``` +All of these are downloaded and installed as part of psyneulinkviewer installation process. -* Now you can run the application +# Testing Models - ``` - ./PsyNeuLinkViewer - ``` +If all went well with installation, you should see the application running as in screenshot below : +![image](https://github.com/user-attachments/assets/ec84044c-287a-4e39-bdf7-aa27cdc486f9) -### Linux +To test models, download [these models](https://github.com/MetaCell/PsyNeuLinkView/tree/feature/PSYNEU-140/test_models) and import one at a time to test. Each time a Model is open, the previous one will disappear. I recommend you start with the models inside 'working_tests', as those are the ones we know for sure should we working. -* Open your terminal and navigate to the folder containing the archive linux.tar.gz previously downloaded +To import go to File -> Open Models -* Open the archive and then navigate in the app folder with the commands below +# PsyNeuLinkView Package Building - ``` - tar xvfz linux.tar.gz - cd PsyNeuLinkViewer-linux-x64/ - ``` +To build pip package -* Before to launch the application ensure that you are running the node version required, so +``` +cd package +python3 -m pip install build +python3 -m build --sdist +``` - ``` - node --version - ``` +To test local build - and if this is different from v16.16 then either follow the steps at the top or run +``` +pip install dist/psyneulinkviewer-VERSIOn.tar.gz +``` - ``` - nvm use 16.16 - ``` +To upload to distribution server. You will need token shared privately to be able to upload. -* Now you can run the application +``` +python3 -m twine upload dist/* +``` - ``` - ./PsyNeuLinkViewer - ``` +To upload to test Pypi server +``` +python3 -m twine upload --repository testpypi dist/* +``` # Development Installation From dfd6e6fa8f6aa81fa83f3dca72f76b7aaa6094f8 Mon Sep 17 00:00:00 2001 From: ddelpiano Date: Thu, 7 Nov 2024 11:21:32 +0100 Subject: [PATCH 091/126] check last command on script exec --- package/linux_installer.sh | 25 ++++++++++++++----------- package/mac_installer.sh | 28 ++++++++++++++++------------ 2 files changed, 30 insertions(+), 23 deletions(-) diff --git a/package/linux_installer.sh b/package/linux_installer.sh index 796c1f51..c8a8df84 100755 --- a/package/linux_installer.sh +++ b/package/linux_installer.sh @@ -1,5 +1,18 @@ #!/bin/bash + +check_last_command () { + if [[ $? -ne 0 ]]; then + echo ">>> Please report the output below to support@metacell.us <<<" + echo "Error: $1" + python --version + pip --version + conda --version + exit 1 + fi +} + pip install -vv psyneulinkviewer --break-system-packages --use-pep517 && . ~/.profile && sudo chown root:root /usr/local/bin/psyneulinkviewer-linux-x64/chrome-sandbox && sudo chmod 4755 /usr/local/bin/psyneulinkviewer-linux-x64/chrome-sandbox +check_last_command(); # Variables APP_NAME="PsyneulinkViewer" # Name of the application @@ -8,18 +21,8 @@ CONDA_ENV=$PSYNEULINK_ENV # Conda environment t ICON_PATH="/usr/local/bin/psyneulinkviewer-linux-x64/resources/app/build/logo.png" # Path to the custom icon DESKTOP_FILE="$HOME/Desktop/$APP_NAME.desktop" # Path where the desktop shortcut will be created -# Function to check if a conda environment is already active -is_conda_active() { - if [[ -n "$CONDA_DEFAULT_ENV" ]]; then - echo "Conda environment '$CONDA_DEFAULT_ENV' is already active." - return 0 - else - echo "No active conda environment found. Activating '$CONDA_ENV'..." - return 1 - fi -} - # Creating the .desktop file for the application +rm -f "$DESKTOP_FILE" echo "[Desktop Entry]" > "$DESKTOP_FILE" echo "Version=1.0" >> "$DESKTOP_FILE" echo "Name=$APP_NAME" >> "$DESKTOP_FILE" diff --git a/package/mac_installer.sh b/package/mac_installer.sh index 44ce4728..111e836a 100755 --- a/package/mac_installer.sh +++ b/package/mac_installer.sh @@ -1,5 +1,19 @@ #!/bin/bash + +check_last_command () { + if [[ $? -ne 0 ]]; then + echo ">>> Please report the output below to support@metacell.us <<<" + echo "Error: $1" + python --version + pip --version + conda --version + exit 1 + fi +} + + pip install -vv psyneulinkviewer --break-system-packages --use-pep517 && source ~/.bashrc_profile +check_last_command(); # Variables - adjust these for your setup APP_PATH="$HOME/psyneulinkviewer-darwin-x64/psyneulinkviewer.app/" # Replace with the full path to the application @@ -14,21 +28,12 @@ COMMAND_FILE_PATH="$APP_SHORTCUT_PATH/Contents/MacOS/$SHORTCUT_NAME" ICON_FILE_PATH="$APP_SHORTCUT_PATH/Contents/Resources/$SHORTCUT_NAME.icns" # Create .app structure +rm -rf "$APP_SHORTCUT_PATH" mkdir -p "$APP_SHORTCUT_PATH/Contents/MacOS" mkdir -p "$APP_SHORTCUT_PATH/Contents/Resources" - -# Function to check if a conda environment is active -is_conda_active() { - # Check if the CONDA_DEFAULT_ENV variable is set, meaning a conda environment is active - if [ -z "$CONDA_DEFAULT_ENV" ]; then - return 1 # No active conda environment - else - return 0 # A conda environment is already active - fi -} - # Write the .command file that launches the app with conda environment cat < "$COMMAND_FILE_PATH" + #!/bin/bash source ~/.bashrc_profile source ~/miniconda3/etc/profile.d/conda.sh @@ -71,4 +76,3 @@ chmod -R 755 "$APP_SHORTCUT_PATH" touch "$APP_SHORTCUT_PATH" echo "Shortcut created at $DESKTOP_PATH/$SHORTCUT_NAME.app" - From b80597132a275ea8fb2b3e18f6b58331cbee38c1 Mon Sep 17 00:00:00 2001 From: ddelpiano Date: Thu, 7 Nov 2024 11:24:39 +0100 Subject: [PATCH 092/126] check last command on script exec 2 --- package/mac_installer.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/mac_installer.sh b/package/mac_installer.sh index 111e836a..12acd8bc 100755 --- a/package/mac_installer.sh +++ b/package/mac_installer.sh @@ -13,7 +13,7 @@ check_last_command () { pip install -vv psyneulinkviewer --break-system-packages --use-pep517 && source ~/.bashrc_profile -check_last_command(); +check_last_command # Variables - adjust these for your setup APP_PATH="$HOME/psyneulinkviewer-darwin-x64/psyneulinkviewer.app/" # Replace with the full path to the application From 22af705a74b16614aa460b074c445c571287c3f8 Mon Sep 17 00:00:00 2001 From: ddelpiano Date: Thu, 7 Nov 2024 11:26:53 +0100 Subject: [PATCH 093/126] check last command on script exec 3 --- package/linux_installer.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/linux_installer.sh b/package/linux_installer.sh index c8a8df84..81c9d52a 100755 --- a/package/linux_installer.sh +++ b/package/linux_installer.sh @@ -12,7 +12,7 @@ check_last_command () { } pip install -vv psyneulinkviewer --break-system-packages --use-pep517 && . ~/.profile && sudo chown root:root /usr/local/bin/psyneulinkviewer-linux-x64/chrome-sandbox && sudo chmod 4755 /usr/local/bin/psyneulinkviewer-linux-x64/chrome-sandbox -check_last_command(); +check_last_command # Variables APP_NAME="PsyneulinkViewer" # Name of the application From a1fef9b8a172cfa838320eab114579e5756bf293 Mon Sep 17 00:00:00 2001 From: ddelpiano Date: Thu, 7 Nov 2024 11:27:30 +0100 Subject: [PATCH 094/126] check last command on script exec 4 --- package/mac_installer.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/package/mac_installer.sh b/package/mac_installer.sh index 12acd8bc..ea14ddb0 100755 --- a/package/mac_installer.sh +++ b/package/mac_installer.sh @@ -1,5 +1,4 @@ #!/bin/bash - check_last_command () { if [[ $? -ne 0 ]]; then echo ">>> Please report the output below to support@metacell.us <<<" From 3839aa36974e97772023902a71a28a447db8c0fc Mon Sep 17 00:00:00 2001 From: ddelpiano Date: Thu, 7 Nov 2024 18:09:06 +0100 Subject: [PATCH 095/126] pushing installers --- package/.linux_installer.sh.swp | Bin 12288 -> 0 bytes package/README.md | 86 +++++++++++++++++--- package/installers/generate_linux_binary.sh | 3 + package/installers/linux | Bin 0 -> 17056 bytes package/installers/linux.sh | 37 +++++++++ package/installers/macos.scpt | 3 + package/{ => scripts}/linux_installer.sh | 0 package/{ => scripts}/mac_installer.sh | 0 8 files changed, 117 insertions(+), 12 deletions(-) delete mode 100644 package/.linux_installer.sh.swp create mode 100755 package/installers/generate_linux_binary.sh create mode 100755 package/installers/linux create mode 100755 package/installers/linux.sh create mode 100755 package/installers/macos.scpt rename package/{ => scripts}/linux_installer.sh (100%) rename package/{ => scripts}/mac_installer.sh (100%) diff --git a/package/.linux_installer.sh.swp b/package/.linux_installer.sh.swp deleted file mode 100644 index 730b11d19440d06837ccd262b3bcfc8dc1404183..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI2O>Y}T7{{kbh}Y5z4jg)UvbGu!^={IZsv>fcNgOq5>{v=-sS1%b-W}U3uXk4a z;>0S11L703NWc*|Bak?7;ef;uaexC~fDcQEUEeAnTdi3a{Y=~t`M_2<9 zb6a?x)rdxQk!-qtzv+qtE8upYcZKD-esb7y{V3+1Cqgsoo$Z8vstITU^9dwzr*!lD z?zOASX{i^C1$yE6-TCA76HP!9&;&FAO+XXS1T+CnKoj`i5r~6x>>cdtv3zG&^ZU7D z_xwkF(*!gDO+XXS1T+CnKoigeGyzRO6VL=Sf&U-@?lAVj6O6s}B%H_p|Hps-|9*k7 zFQCt%PoWz0^K*<1p+C+u_5ivMHK8}47oqQ;W$bI{OQ;Jqp)IHeZ9gSkP{c{-(=rukoqLhELcS#758Y7u1L4QyM#Syd z9g1{{z>wo}moRrHOfYr+Jhwx8dsOntD6VeR*D9^G>Uw2&bEj3UHx1g~U!k}seC9?i zTlx-fWlO&FGTmcvEb-xi^eL8P_k`Uim`lgaS&<35C&^e7Q9qUeMLikDb`p~v3LXoG zcud8$>h_(Ttww8oW3y`Dmz&-|I`qmR9Grbppc?NB(&XgnTIjsWU--0XZ=frYv}QMAFCs1m%H7fLD-k zbony9nRBXwT)EAo9+hlbjARnpf{rYZP;NNwF-}#Y&^ms#j{&Q*mTr zY>F^Kq|3|Z(ix-n#`#$F<8ZW(ktebu-<#`qPf56r4AW2f!`xzQZb46~G;^^o^D;iA za5^&a9g`}m%#pHKeDPuM7ERMM=GXqQWmZ+FW~y>*YO3HD)28Afiq0taDqrHCZxj5K z{i>EWvpQqbHD5N0x3_9lD-V}7$$)YF8>FrRHF(^kgPsVp92$3rNxM04J&)RA+;-Tc zCd-DEM4{zLn|oH<^{pTp`69vj>;4c2vPD=*k7Ab&Z(O%RkrhZ}A?{W?aXkkUyV4B& zZsthpP5vc!3XM`_^>lG(Z5P#8HfC2lX=K`9`aRO}L|n1Nq}0=j^2OAhere and double click to run the installation. + +# Installing on MAC + +Download the installer from here and double click to run the installation + +On terminal, go to your home directory + +``` +cd ~ +``` + +Give user permissions to file + +``` +chmod +x mac_installer.sh +``` + +And run installer + +``` +./mac_installer.sh +``` + +After installation is done: + +If conda environment is already active, run + +``` +open ~/psyneulinkviewer-darwin-x64/psyneulinkviewer.app/ +``` + +If conda environment is not active, then run : + +``` +source ~/.bash_profile +conda activate psyneulinkview +open ~/psyneulinkviewer-darwin-x64/psyneulinkviewer.app/ +``` + +The application should open up succesfully after this. A desktop icon should be visible as well. + +# Manual installation on Linux + Download bash script to install [here](https://raw.githubusercontent.com/MetaCell/PsyNeuLinkView/feature/PSYNEU-140/package/linux_installer.sh). -It's recommended to download it in your home directory. +It's recommended to download it in your home directory. On terminal, go to your home directory + ``` cd ~ ``` Change file permissions to allow user to run it + ``` chmod + x linux_installer.sh ``` -And run installer +And run installer + ``` ./linux_installer.sh ``` After installation is done: -If conda environment is already active, run +If conda environment is already active, run + ``` psyneulinkviewer ``` If conda environment is not active, then run : + ``` source ~/.profile conda activate psyneulinkview @@ -34,34 +83,39 @@ psyneulinkviewer The application should open up succesfully after this. An icon will be visible on the Desktop as well. -# Installing on MAC +# Manual installation on MAC Download bash script to install [here](https://raw.githubusercontent.com/MetaCell/PsyNeuLinkView/feature/PSYNEU-140/package/mac_installer.sh). -It's recommended to download it in your home directory. +It's recommended to download it in your home directory. On terminal, go to your home directory + ``` cd ~ ``` Give user permissions to file + ``` chmod +x mac_installer.sh ``` -And run installer +And run installer + ``` ./mac_installer.sh ``` After installation is done: -If conda environment is already active, run +If conda environment is already active, run + ``` open ~/psyneulinkviewer-darwin-x64/psyneulinkviewer.app/ ``` If conda environment is not active, then run : + ``` source ~/.bash_profile conda activate psyneulinkview @@ -75,25 +129,29 @@ The application should open up succesfully after this. A desktop icon should be The scripts above run the following commands in order: Firs installs the python module 'psyneulinkviewer' from PyPi + ``` sudo pip install psyneulinkviewer ``` + This commands installs required libraries and packages. Also creates a conda enviroment where the needed packages are installed. -After successfully installing the python package above, it reset the user's bash profile to apply the settings changes +After successfully installing the python package above, it reset the user's bash profile to apply the settings changes + - Linux + ``` source ~/.profile ``` -- Mac +- Mac + ``` source ~/.bash_profile ``` Then, a desktop file is created on the Desktop which allows users to open the application this way - # Psyneulinkviewer Requirements Psyneulinkviewer requires: @@ -113,11 +171,12 @@ If all went well with installation, you should see the application running as in To test models, download [these models](https://github.com/MetaCell/PsyNeuLinkView/tree/feature/PSYNEU-140/test_models) and import one at a time to test. Each time a Model is open, the previous one will disappear. I recommend you start with the models inside 'working_tests', as those are the ones we know for sure should we working. -To import go to File -> Open Models +To import go to File -> Open Models # PsyNeuLinkView Package Building To build pip package + ``` cd package python3 -m pip install build @@ -125,16 +184,19 @@ python3 -m build --sdist ``` To test local build + ``` pip install dist/psyneulinkviewer-VERSIOn.tar.gz ``` -To upload to distribution server. You will need token shared privately to be able to upload. +To upload to distribution server. You will need token shared privately to be able to upload. + ``` python3 -m twine upload dist/* ``` To upload to test Pypi server + ``` python3 -m twine upload --repository testpypi dist/* ``` diff --git a/package/installers/generate_linux_binary.sh b/package/installers/generate_linux_binary.sh new file mode 100755 index 00000000..e1699cde --- /dev/null +++ b/package/installers/generate_linux_binary.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +shc -vrf linux.sh -o linux diff --git a/package/installers/linux b/package/installers/linux new file mode 100755 index 0000000000000000000000000000000000000000..64dcd553d8ae1d7025ef73d865c06ac11ee7b306 GIT binary patch literal 17056 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/dev/null 2>&1 + if [ $? -eq 0 ]; then + xterm -fa 'Monospace' -fs 14 -hold -e "cd ~ && . .bashrc && curl -H \"Cache-Control: no-cache\" https://raw.githubusercontent.com/MetaCell/PsyNeuLinkView/develop/package/scripts/linux_installer.sh -o linux_installer.sh && chmod +x linux_installer.sh && ./linux_installer.sh && rm -f linux_installer.sh && bash" + RUN_FLAG=1 + fi +fi + +if [ $RUN_FLAG -eq 0 ]; then + command -v konsole >/dev/null 2>&1 + if [ $? -eq 0 ]; then + konsole --noclose -e "cd ~ && . .bashrc && curl -H \"Cache-Control: no-cache\" https://raw.githubusercontent.com/MetaCell/PsyNeuLinkView/develop/package/scripts/linux_installer.sh -o linux_installer.sh && chmod +x linux_installer.sh && ./linux_installer.sh && rm -f linux_installer.sh && bash" + RUN_FLAG=1 + fi +fi + + +if [ $RUN_FLAG -eq 0 ]; then + command -v gnome-terminal >/dev/null + if [ $? -eq 0 ]; then + gnome-terminal -- bash -c "cd ~ && . .bashrc && curl -H \"Cache-Control: no-cache\" https://raw.githubusercontent.com/MetaCell/PsyNeuLinkView/develop/package/scripts/linux_installer.sh -o linux_installer.sh && chmod +x linux_installer.sh && ./linux_installer.sh && rm -f linux_installer.sh && bash" + RUN_FLAG=1 + fi +fi + +if [ $RUN_FLAG -eq 0 ]; then + command -v notify-send >/dev/null 2>&1 + if [ $? -eq 0 ]; then + notify-send "PsyNeuLinkViewer installation ERROR: No terminal found" "Try the manual installation documented in the github README." + else + xmessage -center -buttons 'Close':0 -default Ok -nearmouse "Error during the PsyNeuLinkViewer installation: No terminal found\nPlease try to download the linux installer bash script and run this manually from your terminal as documented in the repository README." + fi +fi diff --git a/package/installers/macos.scpt b/package/installers/macos.scpt new file mode 100755 index 00000000..f2a06849 --- /dev/null +++ b/package/installers/macos.scpt @@ -0,0 +1,3 @@ +osascript -e 'tell app "Terminal" + do script "cd ~ && curl -H \"Cache-Control: no-cache\" https://raw.githubusercontent.com/MetaCell/PsyNeuLinkView/develop/package/scripts/mac_installer.sh -o mac_installer.sh && chmod +x mac_installer.sh && ./mac_installer.sh && rm -f mac_installer.sh" +end tell' > /dev/null diff --git a/package/linux_installer.sh b/package/scripts/linux_installer.sh similarity index 100% rename from package/linux_installer.sh rename to package/scripts/linux_installer.sh diff --git a/package/mac_installer.sh b/package/scripts/mac_installer.sh similarity index 100% rename from package/mac_installer.sh rename to package/scripts/mac_installer.sh From e988ce28ab514b3c9d1c078797ea647310f68f50 Mon Sep 17 00:00:00 2001 From: ddelpiano Date: Thu, 7 Nov 2024 18:12:02 +0100 Subject: [PATCH 096/126] fix readmes --- README.md | 14 +++++++++++--- package/README.md | 40 ++-------------------------------------- 2 files changed, 13 insertions(+), 41 deletions(-) diff --git a/README.md b/README.md index b017bd3a..8f90b069 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,14 @@ # Installing on Linux -Download bash script to install [here](https://raw.githubusercontent.com/MetaCell/PsyNeuLinkView/feature/PSYNEU-140/package/linux_installer.sh). +Download the installer from ``here `` and double click to run the installation. + +# Installing on MAC + +Download the installer from ``here `` and double click to run the installation. + +# Manual installation on Linux + +Download bash script to install [here](https://raw.githubusercontent.com/MetaCell/PsyNeuLinkView/develop/package/linux_installer.sh). It's recommended to download it in your home directory. On terminal, go to your home directory @@ -39,9 +47,9 @@ psyneulinkviewer The application should open up succesfully after this. An icon will be visible on the Desktop as well. -# Installing on MAC +# Manual installation on MAC -Download bash script to install [here](https://raw.githubusercontent.com/MetaCell/PsyNeuLinkView/feature/PSYNEU-140/package/mac_installer.sh). +Download bash script to install [here](https://raw.githubusercontent.com/MetaCell/PsyNeuLinkView/develop/package/mac_installer.sh). It's recommended to download it in your home directory. On terminal, go to your home directory diff --git a/package/README.md b/package/README.md index d4724173..67fdb281 100644 --- a/package/README.md +++ b/package/README.md @@ -1,46 +1,10 @@ # Installing on Linux -Download the installer from here and double click to run the installation. +Download the installer from ``here`` and double click to run the installation. # Installing on MAC -Download the installer from here and double click to run the installation - -On terminal, go to your home directory - -``` -cd ~ -``` - -Give user permissions to file - -``` -chmod +x mac_installer.sh -``` - -And run installer - -``` -./mac_installer.sh -``` - -After installation is done: - -If conda environment is already active, run - -``` -open ~/psyneulinkviewer-darwin-x64/psyneulinkviewer.app/ -``` - -If conda environment is not active, then run : - -``` -source ~/.bash_profile -conda activate psyneulinkview -open ~/psyneulinkviewer-darwin-x64/psyneulinkviewer.app/ -``` - -The application should open up succesfully after this. A desktop icon should be visible as well. +Download the installer from ``here `` and double click to run the installation. # Manual installation on Linux From cd728028761b86b1a8bb988b861e30d436dcb31a Mon Sep 17 00:00:00 2001 From: ddelpiano Date: Thu, 7 Nov 2024 18:41:34 +0100 Subject: [PATCH 097/126] fix readmes 2 --- README.md | 4 ++-- package/README.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 8f90b069..9ecd593f 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ # Installing on Linux -Download the installer from ``here `` and double click to run the installation. +Download the installer from here and double click to run the installation. # Installing on MAC -Download the installer from ``here `` and double click to run the installation. +Download the installer from here and double click to run the installation. # Manual installation on Linux diff --git a/package/README.md b/package/README.md index 67fdb281..a62700f0 100644 --- a/package/README.md +++ b/package/README.md @@ -1,10 +1,10 @@ # Installing on Linux -Download the installer from ``here`` and double click to run the installation. +Download the installer from here and double click to run the installation. # Installing on MAC -Download the installer from ``here `` and double click to run the installation. +Download the installer from here and double click to run the installation. # Manual installation on Linux From 4dc0d2b7d36e0e3d61efe4cf541fa1c42731e31e Mon Sep 17 00:00:00 2001 From: ddelpiano Date: Sun, 10 Nov 2024 12:02:47 +0100 Subject: [PATCH 098/126] fixing env inheritance in linux installer --- package/installers/linux | Bin 17056 -> 17344 bytes package/installers/linux.sh | 9 ++++----- package/scripts/linux_installer.sh | 4 ++++ 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/package/installers/linux b/package/installers/linux index 64dcd553d8ae1d7025ef73d865c06ac11ee7b306..56ae33ba4d5ffb249b3df077551d729d74d082d4 100755 GIT binary patch delta 4125 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 KOjxw0(Ek8M&mqVF delta 3833 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 UOHCCj69wQmIq*=U>{Yn`2k4QoXaE2J diff --git a/package/installers/linux.sh b/package/installers/linux.sh index ec6b4220..5ec29c5b 100755 --- a/package/installers/linux.sh +++ b/package/installers/linux.sh @@ -1,11 +1,11 @@ -#!/bin/sh +#!/bin/bash -icl RUN_FLAG=0 if [ $RUN_FLAG -eq 0 ]; then command -v xterm >/dev/null 2>&1 if [ $? -eq 0 ]; then - xterm -fa 'Monospace' -fs 14 -hold -e "cd ~ && . .bashrc && curl -H \"Cache-Control: no-cache\" https://raw.githubusercontent.com/MetaCell/PsyNeuLinkView/develop/package/scripts/linux_installer.sh -o linux_installer.sh && chmod +x linux_installer.sh && ./linux_installer.sh && rm -f linux_installer.sh && bash" + xterm -fa 'Monospace' -fs 14 -hold -e $SHELL -ilc "cd $HOME && curl -H \"Cache-Control: no-cache\" https://raw.githubusercontent.com/MetaCell/PsyNeuLinkView/develop/package/scripts/linux_installer.sh -o linux_installer.sh && chmod +x linux_installer.sh && bash linux_installer.sh && rm -f linux_installer.sh" RUN_FLAG=1 fi fi @@ -13,16 +13,15 @@ fi if [ $RUN_FLAG -eq 0 ]; then command -v konsole >/dev/null 2>&1 if [ $? -eq 0 ]; then - konsole --noclose -e "cd ~ && . .bashrc && curl -H \"Cache-Control: no-cache\" https://raw.githubusercontent.com/MetaCell/PsyNeuLinkView/develop/package/scripts/linux_installer.sh -o linux_installer.sh && chmod +x linux_installer.sh && ./linux_installer.sh && rm -f linux_installer.sh && bash" + konsole --noclose -e $SHELL -ilc "cd $HOME && curl -H \"Cache-Control: no-cache\" https://raw.githubusercontent.com/MetaCell/PsyNeuLinkView/develop/package/scripts/linux_installer.sh -o linux_installer.sh && chmod +x linux_installer.sh && bash linux_installer.sh && rm -f linux_installer.sh" RUN_FLAG=1 fi fi - if [ $RUN_FLAG -eq 0 ]; then command -v gnome-terminal >/dev/null if [ $? -eq 0 ]; then - gnome-terminal -- bash -c "cd ~ && . .bashrc && curl -H \"Cache-Control: no-cache\" https://raw.githubusercontent.com/MetaCell/PsyNeuLinkView/develop/package/scripts/linux_installer.sh -o linux_installer.sh && chmod +x linux_installer.sh && ./linux_installer.sh && rm -f linux_installer.sh && bash" + gnome-terminal -- $SHELL -ilc "cd $HOME && curl -H \"Cache-Control: no-cache\" https://raw.githubusercontent.com/MetaCell/PsyNeuLinkView/develop/package/scripts/linux_installer.sh -o linux_installer.sh && chmod +x linux_installer.sh && bash linux_installer.sh && rm -f linux_installer.sh; exec bash" RUN_FLAG=1 fi fi diff --git a/package/scripts/linux_installer.sh b/package/scripts/linux_installer.sh index 81c9d52a..bd1f43ec 100755 --- a/package/scripts/linux_installer.sh +++ b/package/scripts/linux_installer.sh @@ -1,5 +1,9 @@ #!/bin/bash +echo 'I AM SOURCING BASHRC' +source ~/.profile +echo $PATH + check_last_command () { if [[ $? -ne 0 ]]; then echo ">>> Please report the output below to support@metacell.us <<<" From 4ce8a0205f1c86154e546f3083c1e368506c4ac0 Mon Sep 17 00:00:00 2001 From: ddelpiano Date: Mon, 11 Nov 2024 13:25:06 +0100 Subject: [PATCH 099/126] adding installer.py --- package/installers/installer.py | 46 +++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 package/installers/installer.py diff --git a/package/installers/installer.py b/package/installers/installer.py new file mode 100644 index 00000000..9465a0c9 --- /dev/null +++ b/package/installers/installer.py @@ -0,0 +1,46 @@ +from os import path +import sys +import subprocess + +def does_it_exists(command): + rc = subprocess.call(['which', command]) + if rc == 0: + return True + else: + return False + + +# create a function, download_installer, that takes in input the url and +# save the bash script in the home directory of the user +def download_installer(url): + # download the installer + import requests + response = requests.get(url) + # save the installer in the home directory + installer_path = path.join(path.expanduser('~'), 'installer.sh') + with open(installer_path, 'wb') as f: + f.write(response.content) + return installer_path + + +# check if the platofrm is windows, linux or macos +if sys.platform == 'linux': + # install the linux specific package + linux_url = 'https://raw.githubusercontent.com/MetaCell/PsyNeuLinkView/develop/package/scripts/linux_installer.sh' + linux_installer = download_installer(linux_url) + command1 = ["xterm", "-fa", "'Monospace'", "-fs", "14", "-hold", "-e", "/bin/bash", "-ilc", "cd $HOME && chmod +x " + linux_installer + " && bash " + linux_installer + "; rm -f " + linux_installer] + command2 = ["konsole", "--noclose", "-e", "$SHELL", "-ilc", "cd $HOME && chmod +x " + linux_installer + " && bash " + linux_installer + "; rm -f " + linux_installer] + command3 = ["gnome-terminal", "--", "$SHELL", "-ilc", "cd $HOME && chmod +x " + linux_installer + " && bash " + linux_installer + "; rm -f " + linux_installer] + # check if the user has the item 0 of each command array installed, once you find one installed run the command + for command in [command1, command2, command3]: + if does_it_exists(command[0]): + subprocess.call(command) + break +elif sys.platform == 'darwin': + # install the macos specific package + mac_url = 'https://raw.githubusercontent.com/MetaCell/PsyNeuLinkView/develop/package/scripts/mac_installer.sh' + mac_installer = download_installer(mac_url) + command1 = ["osascript", "-e", "tell application \"Terminal\" to do script \"cd $HOME && chmod +x " + mac_installer + " && bash " + mac_installer + "; rm -f " + mac_installer + "\" end tell"] + subprocess.call(command1) +else: + raise Exception('Unsupported platform') From 1bdf1b222dbc460a15c326d6eb980e05978f9fef Mon Sep 17 00:00:00 2001 From: jrmartin Date: Mon, 11 Nov 2024 17:17:34 -0800 Subject: [PATCH 100/126] Fix installation packages for mac and linux --- package/scripts/linux_installer.sh | 2 +- package/scripts/mac_installer.sh | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/scripts/linux_installer.sh b/package/scripts/linux_installer.sh index 81c9d52a..08e9a4a8 100755 --- a/package/scripts/linux_installer.sh +++ b/package/scripts/linux_installer.sh @@ -11,8 +11,8 @@ check_last_command () { fi } +pip uninstall psyneulinkviewer && pip cache purge pip install -vv psyneulinkviewer --break-system-packages --use-pep517 && . ~/.profile && sudo chown root:root /usr/local/bin/psyneulinkviewer-linux-x64/chrome-sandbox && sudo chmod 4755 /usr/local/bin/psyneulinkviewer-linux-x64/chrome-sandbox -check_last_command # Variables APP_NAME="PsyneulinkViewer" # Name of the application diff --git a/package/scripts/mac_installer.sh b/package/scripts/mac_installer.sh index ea14ddb0..0bfd61e8 100755 --- a/package/scripts/mac_installer.sh +++ b/package/scripts/mac_installer.sh @@ -10,7 +10,7 @@ check_last_command () { fi } - +pip uninstall psyneulinkviewer && pip cache purge pip install -vv psyneulinkviewer --break-system-packages --use-pep517 && source ~/.bashrc_profile check_last_command @@ -30,9 +30,9 @@ ICON_FILE_PATH="$APP_SHORTCUT_PATH/Contents/Resources/$SHORTCUT_NAME.icns" rm -rf "$APP_SHORTCUT_PATH" mkdir -p "$APP_SHORTCUT_PATH/Contents/MacOS" mkdir -p "$APP_SHORTCUT_PATH/Contents/Resources" + # Write the .command file that launches the app with conda environment cat < "$COMMAND_FILE_PATH" - #!/bin/bash source ~/.bashrc_profile source ~/miniconda3/etc/profile.d/conda.sh From 726d56e4824a8ccc250eecfd80ab4f301066e40a Mon Sep 17 00:00:00 2001 From: jrmartin Date: Wed, 13 Nov 2024 08:31:45 -0800 Subject: [PATCH 101/126] Conda version check fix attempt, forces None when there's an error to avoid empty string version mismatch. Update release --- package/dist/psyneulinkviewer-0.4.8.tar.gz | Bin 8109 -> 0 bytes package/dist/psyneulinkviewer-0.4.9.tar.gz | Bin 0 -> 8480 bytes package/psyneulinkviewer.egg-info/PKG-INFO | 3 +- .../psyneulinkviewer.egg-info/requires.txt | 1 + package/psyneulinkviewer/conda.py | 17 ++++++++---- package/setup.py | 26 ++++++++++++------ 6 files changed, 32 insertions(+), 15 deletions(-) delete mode 100644 package/dist/psyneulinkviewer-0.4.8.tar.gz create mode 100644 package/dist/psyneulinkviewer-0.4.9.tar.gz diff --git a/package/dist/psyneulinkviewer-0.4.8.tar.gz b/package/dist/psyneulinkviewer-0.4.8.tar.gz deleted file mode 100644 index b04a8eb0f280dc80d69d706c5af4b8ae0ecf0af9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8109 zcmV;eA5!2SiwFqti}Yp!|8R48Ze?|BX>MzFX=Qh1axE|}G%h$UbYXG;?LBLE+cvWO z%wK`aoE}MyNb6-e(bnB{Z6(pIWBb@n(_Ys{OG}W=h9b3m*l~N>-+pHX0L7;zyNu~TlgR(hQvUZ~l(t@W%~mD(zjXP(KiVB0oD3gt{P%mk zGWp+W_1h@_`vBB$ci?+_tA+Ew)>DrEFI4{TdW&1%zPt)qebQi^R{I4zz2fZXHoWp& zc4SRHSeLeY$#x=0@a^zc(~h`5w}Zfj?{>hhxX&+c*`;r}A)hwc%;%hWGd8)h{7c?s zp~o!umMyp+KnCw3v}_j(wAciy)&MfRf?@)17T#Ds2jD5Qg20>D7L>=P-XxlHH?%^m zZ)Q6@VD%6%)K6p%y+M^sx#eiK%kZ1}#BOZBItrQ3gV47pSVoiC?!<|vh=cm<*mGOf zfZ2&2fd+*}0ki<|Y_hpGwP*O3Q?nM)g<}U-O*XZ$=!+g^fxF=-Kmj{ovFug(DY&v6hh1<VGq2Cx@?2-|rj`+318F9UuNU+8gdMedh$;^(K2iI(>8a?vw$< z@y@~N&+PCO+d24|{V+P%YqH@_N5{jH6Lxs4jou#ZkA{#oI@sNRw>LU?&Ax|x2ZyI@ zfAn^A3Wc5?GOSP*H5#5^VQ+`WyKmri=ljwA==A5N_G)x`fMvcqJZ3xWXy^EJwEJ#< z=a?P6J3cx*8AA1YQ0&3z;MFnIGJHEcI5nYGNMpkv;f0;N+1cO6slT4iB&yyN3s-$MD*ORvw?mS>KONhE29}JUT&wygEL7+tiSpkmHaFfqVx; zQ3{fprFsNF@crG%FfNeo4R`jTtP{+PO;o^Ur82Aef3^Pe-@g9S?R2*)E8xqW{~!JE z+5pXW_!RU1RW>2MPdqo|Zb-8LoL}tXEZ``(J>U@(|KUeqw2c|J!pP?vM<+iY4Br{; zUTZ_>U%ufW3S(Il_s!s{VQQnW7JxQ~BIn$lsx>f)q#feY)U6l!>2YzkU^5_gWf(6lJ!h>1lIM5WL1Fln=YzJrn)v+5} ztWI9rfqenpBo}Y@c<>?g7R(CR4Nf36Ez9C>cXmH7gU_wWXJ+r$(5r%lGt5n$nPBFR zEQ{<4PA&m|R6ZsS`7>u%7*or?v0dY1znA-F0;6p_0>2}-jMroOzlP;Q2M1VBg8ylZ z$Xtn0QZOt;1<)ucF~Cl;r(BK*frt1VNEZT@hpTiA
      3B>Q*>P<>X-HT!m^u!B);%1AH5am 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 Date: Wed, 13 Nov 2024 09:12:11 -0800 Subject: [PATCH 102/126] Update version --- package/dist/psyneulinkviewer-0.4.9.1.tar.gz | Bin 0 -> 8464 bytes package/dist/psyneulinkviewer-0.4.9.tar.gz | Bin 8480 -> 0 bytes package/psyneulinkviewer.egg-info/PKG-INFO | 2 +- package/setup.py | 2 +- 4 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 package/dist/psyneulinkviewer-0.4.9.1.tar.gz delete mode 100644 package/dist/psyneulinkviewer-0.4.9.tar.gz diff --git a/package/dist/psyneulinkviewer-0.4.9.1.tar.gz b/package/dist/psyneulinkviewer-0.4.9.1.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..ed7c2e1135ccf8ac0fb3dbb2576fb395875914f1 GIT binary patch literal 8464 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 kS`{#E&*R>9&-$i1Rn1H07ruwh5!Hn literal 0 HcmV?d00001 diff --git a/package/dist/psyneulinkviewer-0.4.9.tar.gz b/package/dist/psyneulinkviewer-0.4.9.tar.gz deleted file mode 100644 index 172ddb48470bd1c964abfa66606561a9bc2c595a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8480 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 Date: Mon, 18 Nov 2024 09:41:38 -0800 Subject: [PATCH 103/126] Find conda path dynamically --- package/scripts/mac_installer.sh | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/package/scripts/mac_installer.sh b/package/scripts/mac_installer.sh index 0bfd61e8..ba17ec0c 100755 --- a/package/scripts/mac_installer.sh +++ b/package/scripts/mac_installer.sh @@ -10,10 +10,6 @@ check_last_command () { fi } -pip uninstall psyneulinkviewer && pip cache purge -pip install -vv psyneulinkviewer --break-system-packages --use-pep517 && source ~/.bashrc_profile -check_last_command - # Variables - adjust these for your setup APP_PATH="$HOME/psyneulinkviewer-darwin-x64/psyneulinkviewer.app/" # Replace with the full path to the application CONDA_ENV=$PSYNEULINK_ENV # Replace with your Conda environment name @@ -26,17 +22,28 @@ APP_SHORTCUT_PATH="$DESKTOP_PATH/$SHORTCUT_NAME.app" COMMAND_FILE_PATH="$APP_SHORTCUT_PATH/Contents/MacOS/$SHORTCUT_NAME" ICON_FILE_PATH="$APP_SHORTCUT_PATH/Contents/Resources/$SHORTCUT_NAME.icns" -# Create .app structure rm -rf "$APP_SHORTCUT_PATH" +rm -rf "$HOME/psyneulinkviewer-darwin-x64/" +rm -rf "$DESKTOP_PATH/$SHORTCUT_NAME.app" +ls -ls + +pip uninstall psyneulinkviewer && pip cache purge +pip install -vv psyneulinkviewer --break-system-packages --use-pep517 && source ~/.bashrc_profile +check_last_command + +# Create .app structure mkdir -p "$APP_SHORTCUT_PATH/Contents/MacOS" mkdir -p "$APP_SHORTCUT_PATH/Contents/Resources" +CONDA_SH=$(find ~ -name conda.sh 2>/dev/null | head -n 1) + # Write the .command file that launches the app with conda environment cat < "$COMMAND_FILE_PATH" #!/bin/bash +ps aux | grep rpc_server | grep -v grep | awk '{print $2}' | xargs kill -9 source ~/.bashrc_profile -source ~/miniconda3/etc/profile.d/conda.sh -conda activate $CONDA_ENV +source $CONDA_SH +conda activate $PSYNEULINK_ENV open "$APP_PATH" EOL From 71cfde3d7c6bfa36f81c7b83a8253354bd287766 Mon Sep 17 00:00:00 2001 From: jrmartin Date: Mon, 18 Nov 2024 09:43:15 -0800 Subject: [PATCH 104/126] cleanup script --- package/scripts/mac_installer.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/scripts/mac_installer.sh b/package/scripts/mac_installer.sh index ba17ec0c..6126714f 100755 --- a/package/scripts/mac_installer.sh +++ b/package/scripts/mac_installer.sh @@ -23,9 +23,9 @@ COMMAND_FILE_PATH="$APP_SHORTCUT_PATH/Contents/MacOS/$SHORTCUT_NAME" ICON_FILE_PATH="$APP_SHORTCUT_PATH/Contents/Resources/$SHORTCUT_NAME.icns" rm -rf "$APP_SHORTCUT_PATH" +# Cleanup existing installations of psneulinkviewer rm -rf "$HOME/psyneulinkviewer-darwin-x64/" rm -rf "$DESKTOP_PATH/$SHORTCUT_NAME.app" -ls -ls pip uninstall psyneulinkviewer && pip cache purge pip install -vv psyneulinkviewer --break-system-packages --use-pep517 && source ~/.bashrc_profile From b0fe60b350b33daa0b7b98fd06794dd216d039a3 Mon Sep 17 00:00:00 2001 From: jrmartin Date: Mon, 18 Nov 2024 10:08:10 -0800 Subject: [PATCH 105/126] Kill server if running prior to installation --- package/scripts/mac_installer.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package/scripts/mac_installer.sh b/package/scripts/mac_installer.sh index 6126714f..603dfe5a 100755 --- a/package/scripts/mac_installer.sh +++ b/package/scripts/mac_installer.sh @@ -27,6 +27,8 @@ rm -rf "$APP_SHORTCUT_PATH" rm -rf "$HOME/psyneulinkviewer-darwin-x64/" rm -rf "$DESKTOP_PATH/$SHORTCUT_NAME.app" +ps aux | grep rpc_server | grep -v grep | awk '{print $2}' | xargs kill -9 + pip uninstall psyneulinkviewer && pip cache purge pip install -vv psyneulinkviewer --break-system-packages --use-pep517 && source ~/.bashrc_profile check_last_command @@ -40,7 +42,6 @@ CONDA_SH=$(find ~ -name conda.sh 2>/dev/null | head -n 1) # Write the .command file that launches the app with conda environment cat < "$COMMAND_FILE_PATH" #!/bin/bash -ps aux | grep rpc_server | grep -v grep | awk '{print $2}' | xargs kill -9 source ~/.bashrc_profile source $CONDA_SH conda activate $PSYNEULINK_ENV From 2397d48b2f8d719c1299845b1d86e73954919c4b Mon Sep 17 00:00:00 2001 From: jrmartin Date: Mon, 18 Nov 2024 10:24:05 -0800 Subject: [PATCH 106/126] Cleanup linux script --- package/scripts/linux_installer.sh | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/package/scripts/linux_installer.sh b/package/scripts/linux_installer.sh index 08e9a4a8..94b77ad8 100755 --- a/package/scripts/linux_installer.sh +++ b/package/scripts/linux_installer.sh @@ -11,25 +11,32 @@ check_last_command () { fi } -pip uninstall psyneulinkviewer && pip cache purge -pip install -vv psyneulinkviewer --break-system-packages --use-pep517 && . ~/.profile && sudo chown root:root /usr/local/bin/psyneulinkviewer-linux-x64/chrome-sandbox && sudo chmod 4755 /usr/local/bin/psyneulinkviewer-linux-x64/chrome-sandbox - # Variables -APP_NAME="PsyneulinkViewer" # Name of the application -SYMLINK_PATH="psyneulinkviewer" # Symlink to the application you want to launch -CONDA_ENV=$PSYNEULINK_ENV # Conda environment to activate if none is active -ICON_PATH="/usr/local/bin/psyneulinkviewer-linux-x64/resources/app/build/logo.png" # Path to the custom icon +APP_NAME="PsyneulinkViewer" # Name of the application +SYMLINK_PATH="psyneulinkviewer" # Symlink to the application you want to launch +CONDA_ENV=$PSYNEULINK_ENV # Conda environment to activate if none is active +ICON_PATH="/usr/local/bin/psyneulinkviewer-linux-x64/resources/app/build/logo.png" # Path to the custom icon DESKTOP_FILE="$HOME/Desktop/$APP_NAME.desktop" # Path where the desktop shortcut will be created -# Creating the .desktop file for the application rm -f "$DESKTOP_FILE" + +# Cleanup existing installations of psneulinkviewer +rm -rf "/usr/local/bin/psyneulinkviewer-linux-x64/" +rm -rf "/usr/local/bin/psyneulinkviewer" +# Kill any existing rpc_server instances +ps aux | grep rpc_server | grep -v grep | awk '{print $2}' | xargs kill -9 + +pip uninstall psyneulinkviewer && pip cache purge +pip install -vv psyneulinkviewer --break-system-packages --use-pep517 && . ~/.profile && sudo chown root:root /usr/local/bin/psyneulinkviewer-linux-x64/chrome-sandbox && sudo chmod 4755 /usr/local/bin/psyneulinkviewer-linux-x64/chrome-sandbox + +# Creating the .desktop file for the application echo "[Desktop Entry]" > "$DESKTOP_FILE" echo "Version=1.0" >> "$DESKTOP_FILE" echo "Name=$APP_NAME" >> "$DESKTOP_FILE" # Create the Exec command: Check if conda environment is active, if not activate the specified one echo "Exec=bash -c '. ~/miniconda3/etc/profile.d/conda.sh && \ -conda activate $CONDA_ENV && \ +conda activate $PSYNEULINK_ENV && \ $SYMLINK_PATH'" >> "$DESKTOP_FILE" # Set the custom icon From a8e16378ca0d3fd0faf0169c205c7ad69a30c68d Mon Sep 17 00:00:00 2001 From: jrmartin Date: Tue, 19 Nov 2024 08:40:16 -0800 Subject: [PATCH 107/126] Find conda path, if not look in usual places --- package/scripts/mac_installer.sh | 33 ++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/package/scripts/mac_installer.sh b/package/scripts/mac_installer.sh index 603dfe5a..91f0592a 100755 --- a/package/scripts/mac_installer.sh +++ b/package/scripts/mac_installer.sh @@ -1,4 +1,5 @@ #!/bin/bash + check_last_command () { if [[ $? -ne 0 ]]; then echo ">>> Please report the output below to support@metacell.us <<<" @@ -11,10 +12,10 @@ check_last_command () { } # Variables - adjust these for your setup -APP_PATH="$HOME/psyneulinkviewer-darwin-x64/psyneulinkviewer.app/" # Replace with the full path to the application -CONDA_ENV=$PSYNEULINK_ENV # Replace with your Conda environment name -ICON_PATH="$HOME/psyneulinkviewer-darwin-x64/psyneulinkviewer.app/Contents/Resources/electron.icns" # Replace with the full path to your custom icon (should be in .icns format) -SHORTCUT_NAME="PsyneulinkViewer" # Name for the desktop shortcut +APP_PATH="$HOME/psyneulinkviewer-darwin-x64/psyneulinkviewer.app/" +CONDA_ENV=$PSYNEULINK_ENV +ICON_PATH="$HOME/psyneulinkviewer-darwin-x64/psyneulinkviewer.app/Contents/Resources/electron.icns" +SHORTCUT_NAME="PsyneulinkViewer" # Define paths DESKTOP_PATH="$HOME/Desktop" @@ -37,7 +38,27 @@ check_last_command mkdir -p "$APP_SHORTCUT_PATH/Contents/MacOS" mkdir -p "$APP_SHORTCUT_PATH/Contents/Resources" -CONDA_SH=$(find ~ -name conda.sh 2>/dev/null | head -n 1) +# Try to find conda.sh, limit search to likely locations +CONDA_SH=$(find ~ -maxdepth 4 -name conda.sh 2>/dev/null | head -n 1) + +echo "Conda.sh found at $CONDA_SH" + +# If conda.sh is not found, try the default locations +if [[ -z "$CONDA_SH" ]]; then + if [[ -f "$HOME/anaconda3/etc/profile.d/conda.sh" ]]; then + CONDA_SH="$HOME/anaconda3/etc/profile.d/conda.sh" + elif [[ -f "$HOME/miniconda3/etc/profile.d/conda.sh" ]]; then + CONDA_SH="$HOME/miniconda3/etc/profile.d/conda.sh" + fi + + echo "Conda.sh found at $CONDA_SH" +fi + +# Check if conda.sh was found +if [[ -z "$CONDA_SH" ]]; then + echo "Error: conda.sh not found! Please ensure Conda is installed properly." + exit 1 +fi # Write the .command file that launches the app with conda environment cat < "$COMMAND_FILE_PATH" @@ -82,4 +103,4 @@ chmod -R 755 "$APP_SHORTCUT_PATH" # Touch the app to refresh Finder so it displays the correct icon touch "$APP_SHORTCUT_PATH" -echo "Shortcut created at $DESKTOP_PATH/$SHORTCUT_NAME.app" +echo "Shortcut created at $DESKTOP_PATH/$SHORTCUT_NAME.app" \ No newline at end of file From 49175976cb54182cb79f50736effcb4990c2c7f5 Mon Sep 17 00:00:00 2001 From: ddelpiano Date: Tue, 26 Nov 2024 17:13:37 +0100 Subject: [PATCH 108/126] update latest --- .github/workflows/installers.yml | 31 +++++++++++++++++ package/installers/generate_linux_binary.sh | 3 -- package/installers/linux | Bin 17344 -> 0 bytes package/installers/linux.sh | 36 -------------------- package/installers/requirements.txt | 0 5 files changed, 31 insertions(+), 39 deletions(-) create mode 100644 .github/workflows/installers.yml delete mode 100755 package/installers/generate_linux_binary.sh delete mode 100755 package/installers/linux delete mode 100755 package/installers/linux.sh create mode 100644 package/installers/requirements.txt diff --git a/.github/workflows/installers.yml b/.github/workflows/installers.yml new file mode 100644 index 00000000..6db2961e --- /dev/null +++ b/.github/workflows/installers.yml @@ -0,0 +1,31 @@ +name: Installers +on: + release: + types: + - created +jobs: + build: + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: ['ubuntu-latest', 'macos-latest'] + + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: 3.10 + + - name: Install dependencies + working-directory: ./package/installers + run: pip install -r requirements.txt pyinstaller + - name: Build + working-directory: ./package/installers + run: pyinstaller your-code.py + - name: Rename the installer with the OS name + working-directory: ./package/installers + run: mv dist/installer/installer dist/installer/installer-${{ matrix.os }} + - uses: actions/upload-artifact@v2 + with: + path: dist/* diff --git a/package/installers/generate_linux_binary.sh b/package/installers/generate_linux_binary.sh deleted file mode 100755 index e1699cde..00000000 --- a/package/installers/generate_linux_binary.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -shc -vrf linux.sh -o linux diff --git a/package/installers/linux b/package/installers/linux deleted file mode 100755 index 56ae33ba4d5ffb249b3df077551d729d74d082d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17344 zcmeHvdpuOz`~P;oM5A&|FBr7O-`4S zZl_b|b|@7|QcfjQGf~lvuD;LOdoQMW<@@`*e&6rw_51zN>Sdnwyr0W@*0a`LYwtCC z`h_#aTUAAcz(tK1M^IcZ8u4HRDPyq)L3j|O2z~hMOY|W$0ak}U4@Rs^t5sW7Bd%iKa3A z!&K1@<;K8{wli@1mb!PR`K?U5*bccvc5KFu&Ddeui~@p!Db6R#3HlqwzVMLnu=r4HKB+_NId!%FBOR@G#F{+Usf@ znwjy#lu0i!ESfie;daqHz9`8qY1Bx&kt6IAV(lHN5Kvrf_(OAQ;xvB(+!P^< zNh6_}Li5-kk{L2`q#vX=jIDmiYesVFf&-gW^UuNCy?gVyTBbG zAU0+B?Z>b#^oMkTqkerap50yG+q=Lwbb&AH0zcCQ9@GUst&9GebfI6+1wNn)99{O` z%frDg@R42M=sNnIAB24mztROB)J1>MF`+y@XoqtJ0wN+#z~c)eKp`wCG&q9C4~^z6 z0bdLpClYe`i;!zjjujy1h!3N^#&Bc8VxSFfOafO3E_eyCVXm&h2?=4L{0Jgc7#kgp zgkf=uiHJl2Psjxw@WYP{hL}QyyjVU0_=|V~sG$JSVloh0 zQ%6++?5sN4I}^b^v!(_^_qdU~1R+;2YpPdtET20obbd67ATlPF&txK)R{gFbjD{+# zRjRNqslq>X>J!z_KNVOdHL02wgJ3$VAxr%w=CL<@s$T(=pPJ5Ayf z!{<{x_=S0iYz!%Vb)pBupP=MwggL{Ddh>KpjDvtj1@Fgr{?#(~JErKugM#sF2G{nW z;0_$~)$TNo)?&qVx>f;4>pCtn1)RABphV3IxG7c!+NOXjF68+7LHkc%1$}%yAlyO$ zAHw+20*pxkC3R51@!o|5qZDxD3l|Rs9Q7F&QUOP8;Nqu%3i?S3I83CDlA?g)TQ4NcRKW2ZMEF_-yaxi9vQ+_BT>r8aaAxXI z76%n@bRU4rF$LTRgFw$H;KmAgkphnP8eB>ga5D@7Emy#ME8st>KQizm13xnGhGp@Q zOl{I8B^vkOUY$%Y5~{YBlc|@rFHy;9cYbY85baiP;geErFgWV z$SXQ|v=PcLcJgRrkst5m(S|7B)5)U^M!vq2M;nWLWhaj|6uF?2M;nQJekYGM5c!Nw z9&H@*@tr){FyxM%JlZJa{X2QILCAY{@@Qk0t9J5eqmaM;+R`|! zA;>Rw@@ONFAMfPR1|Z+l$)kl|zP^KRx0(mpj$m2BLm0|$yVY_y4N&A4De-(IK0=9~ zr^NrH#7|S=y_NWJO8iJA-d>3xq{Le&@y1GgcO_m^iT^tE+y1{-;$JH9PnGzGN_^Ef z{O}h(;#>1baUGf3(CjyhGrVZ{RZ{A<5T;GLQ9h`?jj(4~rokY=1tN7b8-<8QPefeX zghp`bYz8HC>FBiAvMf`O-X(^DzT5@rJJ%s%{go6qlNVmPlNZ|5NR@xcTVI8S;DF0G z&~C4##~ItB@lSDk0Jen4)}Ksu8xNWUDSjfXT>!)*OW<0R;*1c7Zw z`^a9N2trix2fKeX4ng1q>y$8o8B}>I=bhrlB@y zE&wRCNF`GvlvWM|l2#-tS-Upq5^jVPC(Fd522#S2kz!7pyo_#f7-dm}92yM(hpbcT z2AP~zXvc(-a9UN$Gc~%=epPAZZLP@-;&L*q9Gtb0D&?$G1`xzE)KSoVM0wGurU(l7 zI#s(yHBkf)#jI0?24vU;=)rN|=pG!RwW)sXpmh9OX~}AkP<>0MR5X?YNh@Nddq4uo z6`VG7>%1bS0g=??27Q!4@d|pK3@V$SU4$Bw;DptQBK?NB2v1k98gk{j)bJR ziWC>i?tW@-PcK@mdj>qU%hw=fX?h6M&#r|!Iw}Eg#WFuo1H)>{Fg*(7z){}Bls0f} zl#G)pNpFIhIDHu?Nz$89os$A`0vU-pYoR)XuAYJFD7sq0v|4~#MGd;am2`$`UE<#s zPTCq$9T95CPJL`|zp6O9+eopfxlsdUMw?7cZX<-lP_9S`wG0fvbyrTasHPDva3u1B zO%|w_$|qw57csUH-BY}PRy6s+E-F5M4nk5&sZ1N9fuRzoSEDO`z-Qp3Mt`FrkZSym zx@LV*TrU0xxWiOOi)G=UQ!otHGr(+MaH#B3c9f3-w4oww?02w!&CF_; zzX4k^DZU9dRK8?f6cQr^Ki(gJ6{pJ-Yyb@bRGeOpz|`|dMu_IXXwaUe$g^YX7s#9j){_YErtX77+;* zl@F}KQfEWTC)0(MRCJY~lX@O~s*3!e+l&nrqw7VH8%#iuwN|4`#SeQURW8CB-op{) zgqq+Lpd(2~&C;E)z9=29(x^ercT#C?1-2>9ErmHS6Yk4kAw36E?HEiG_yhNxT9|IN zgs2y!WFFinp>9{VqV8jf9fY!fIFejA%Z4-*z{Eh~?#O80hxQ5)CM$xPgmVr&q(h`) zPNnQF=R;KFD2`N!ar7U-}4pj4hzs78vw@{i^Hf*bk_*jYEVMG+=ei8Ck7ag!O{`N z^p6-u>%}9?nAZD~(F;<*b~2bB>MNu77lS#2-dP6QM`7qHTF6Mt-=k#$WrRqVp0sb_ibuAr zv?0(Z+%Idm7o_?Ro*}=zfrahX65OXTJx+kAnYiKslK%mI3N+}rUcj9cvYvx_>xt&O zR3nm!bt1x;_)8f*Ck5;@gAIatg7wZZSU1o+%h(>IFqEluM!Nr9M??aE!HLQfMI zem%P5)zI3fL%e2zfdBFkbfXevsy>X0$bDiq!^=~?RjFjrB{&(%GK=WWa zhI4M&dC>dD7&28(7NZvEyir?H8I^)!*?_k&N>Ys?#7ctNI(JvkS!m%i5GTXpCqm;@ zOG*P^X#8s>9Du4|;P1nPC&g-%EVT$^)UKjgo6Q(EJX!}E$Q^k*c#E@>dnbbhX%%qsv zjoQG$82|`)Y&MwVIXCDM{oF=9S9d%~Q+fFR?gO3IqmpD5okX}r;F}PF zGn&ok@`O=b0XtL>xoD0<5St$>U=IvtC&mgECfE~W`J(9PaRf1%O;{zMf1}w}3A%)e zx!M@?-IG52mAqvC_{i& z!kUo+)CIPVY@iOX_7njf1GE;XBi!z()7_xHV+EIl%90s`N|J$!xt^BxTF^m{-01w= z0NR92j36dx!J1^^y{?3sev%7Q;Jw8uplr@O%_RWE%_)wvK69m^j8qZ#_)8+mhw{5s$V zASZ9XkvDe8n*d)5xkBHObo!Td$n_weDUidkZ{&d;@}VGK1M&|jZXBOlvkFo`@lOFf z3UZE)Pden|DRY7iP&CMAg1l8-LC#54Qf_4zsUf84+y{a1GleKdB#vZhT<2M(DMx{0hTny z?_S{di_B@b`9@(7Pr6i+g8c;usa+z+PN|22Z&vsQNKz&!MM zFw~EsAq>GPIeY@UkOS3>eC0r~^Yi80yE+5QfGvG=-tc z@&BKAZIAD3RM^%Gt9h#D@OO~s(^jnyYt@OL_Sw!}yiZZ0fVy>2_ty9(^inNJ z*fzxRpQ!aq+eU9Us^A6u+uK(A-Ha^@CTA>2aQK+`Ice7-sijEJ<39f_o~3s6L0ecyY>ow$E^=k4<2~* zlkep_7d|g&*>=_^_1IvUTbW&<$IUx^@3|P1Pb6pD54%X}@*frntrwV@Epl-2`SP*M zq9(9(5V`4(;J#Xuc4eDI9wi%gTnWL(w+wbBiS(GEM86<$-> z{HQ)-bF%6ZC)bQMLsK(*%oB(WOjw>a!V4qk=-+3vyH}3e9@so^8sXg5d+L+Dkxpwb zUo@SgpFH(#!AaG5r|t&#@-p*YURz$bE1~M=!oo?0qrGzW`^w`=%{t=AN)xt&lr6>H0X3I5ZxL9pc)lWiNr=Pqd9Ew>eK9^ew%3ah?JdS4?wS6-JWktL^64BI z>mvST_R@u;4YF+xbuWDKN9lvwEoQa9eD2+N+5N_$N4gqi9G#8g1DUonOb*3a72S^y zA39(7$$sPWkK61> z3kw3D*((Z$nXSDD)B zmI(!Yc3R}*Wt(nxi9gxBCH%NxGUwFl0f_Zg~h*Fu(N7Z zcFe8lcthvKxssdvwU$PVsShk+zg+D*b^>dG!C_0^N^AMS=HJHU9PxQ;8#TXQ-seJ} zusU(K$cbhBFUKBk3RH1n72GoPIP&4U0}%PP*MNn?%fW!$gQ7}q>yjqJEzC95@Y#+N;h`FwGYbk=O|!7KW|W!YWd zI%5C*)n@hVKZ(ZWr>Bd^zN%LXe?DkF|H8S92PIcC*EqC4ncXgmV#ky9k?97nR;u?3 zN?m?f-~Y&>i!Sc7HQ1*|$xDrN^IR(V1^IIK>+&_GpKaYNDn)22EQ5pZ*-$Q+La=^i>OSW{c7&6htW|n8s^xitY>`%oP9nF%{{`gXJ zz@%tM+Nxh046+}z$h|Ulcx=5fZRn|}nw#R_=S%v%IJf`!=qayVCl|H0#@+HM=@pQ$ zs48=SL)yPfWByugy=N@cb+GthJ>Q7C=7Y-X{nEc)tC$FuN6%1&a7Px$wiH|H%vUSh1&_d1re&(Ekr@Xe0 zeEI%Pi|&B=c|qmQcayqht!b?v=zcWCKGjaLqnI^(R{f=;f89#k^I@Z_%K3Q?VKbd( zKX2xr?VEW|yl{>fHw2 zu#$wHuQMF>PL69oG~=E3^pQQcm;7}`HCl5*)?aG-zRXQ38@VAr_G8f#>8j6zM`ylr zZ~e80=(Z$Gb8_VERl%`;&*r_mnIIWqR-ipO$TQ)=w$}WGDmDfjQ`XMMXX@Rh zc}GMy*V}J7{~K?UETSwvKh)^N(}}&VEoG_~+`v`7%w}zTMNuh|lPLu$wVy zdFVvHWDSQ5>kO_+o$=b;Nl6Dn`;z$q713d(+fEvr7zagdoWIpP%Q8i(x}|T9!RE>F z`5UbCxa(qv+YX%QHD+&Knbw5H4dDy>MX0&!^tv-ET`W7aY1&xzlt}C1L*dasISIF0 zXn+0HCVce*{%(&;gRcH@EBKRs_)?+N%kuTHMS}+R;Mf_I%@ze+tZ!F6FzEWsR@-Un zYpyQttG|_Xp5=$oEza4ve6HIh^Iu~V)`jpSBMZ&1U;bEMH``@)K?qE<9L*g~q74Qs-XDJ? za^0Ep`|zipHZ_F>xo@m;y%wLi@UUrE{M$Wc#df`isCZ{<)qQERmh;blFj-aRa@D6v zGPwHew(F3(qu-gUFd=yLU&HIW{(9bfOf6svb^t=ozd`B`d{wyn?CiI`qJ zBVwm*;L!EIrCyQt6MwOHl`i~yyanmadtBY;`8fWib$3F}56kksW?&RBe3ySnbzSKO ztLHTfXP)zlJFxQM!d@pz%j*N!N1~jywpY&m_=o!y5ALx(dhQiu_0&WQQ@l0%uhO&)81YE=`hFh{Nozu{N#y&OJ^QFYvnobU`vJl zl0fUUB}q%XZVt{gXjsr>)|VHW^yGw9_Wj7OE4@Chck5}UH|dSF*}_&sW2XqqqB3Hl zm)B_a5dZlizEH#-?qu(1?_lTXB%=5c)(k=r_6bq&D>Ed=U?RhzP$^qP0B7``8IXBMC}9Dl{RAun%9%Pgop7Q=x#CEaD0h z(65FlHHHZWnSdJ|iVT=qT(l5H0Y8$mhpK&KEK^C~h7tBcZW6HYOD7&^$A*UrLkW9s zRB(hKG=>`-6%O7oNBam46$nBhbYy|+&{Sv)51i5F^Ai#X`>@!U7%m@uarQqf=y?}C z`r_wU<=+$I=WE;yexAoXdW8W!(_;Isem9Htna5Df66m``MSJDn&!X=a6$|>ROtH8E zqiCPSJlJB&R#b+%vi(HB;Oo&?96vrcz;py-kIxO1tV_VDLO;IJU&OjG>)-X zj-P>vWT>E=Vtah9foU_Nh}&20e+FYep3%eSB$(oJ6=aWcrfk0sFq9MQpTOq;48`Y1 zph6Yp@y`NO(VorNVM=|c&DbKM5fWzG*U#roI<<}uAyvd?DhF%3b^6$-Y) zG#6xw?GxyNM1`S0bsV_SFt(#Pf;b8lMSFY>hbcav!}`kkJIUDN@h8}fCPM=l785*v zm_H8{)IPQkVAB#zm6tf>_DhxQ%Ncu2Pax+CMY;VuAnOi)_&f}sJL2EFE9+w()5l=T zQn1J8lBV$57Ajbe<~n(dzW@Q6ySROPeun@5f@UUubp4@%?eIAM1{hMo_V`@VU>MSd z|L1@v9iP}9)At}zv?n|mRR@~-;sa3zW-}C%&rm_WaQpaomA+$W4U&l;>$7o%q3FNP iKq^dg9a3yRr~{!Z*qtK9Z7ZsZnD%wCA|q5{iT?sVM0=9} diff --git a/package/installers/linux.sh b/package/installers/linux.sh deleted file mode 100755 index 5ec29c5b..00000000 --- a/package/installers/linux.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/bash -icl - -RUN_FLAG=0 - -if [ $RUN_FLAG -eq 0 ]; then - command -v xterm >/dev/null 2>&1 - if [ $? -eq 0 ]; then - xterm -fa 'Monospace' -fs 14 -hold -e $SHELL -ilc "cd $HOME && curl -H \"Cache-Control: no-cache\" https://raw.githubusercontent.com/MetaCell/PsyNeuLinkView/develop/package/scripts/linux_installer.sh -o linux_installer.sh && chmod +x linux_installer.sh && bash linux_installer.sh && rm -f linux_installer.sh" - RUN_FLAG=1 - fi -fi - -if [ $RUN_FLAG -eq 0 ]; then - command -v konsole >/dev/null 2>&1 - if [ $? -eq 0 ]; then - konsole --noclose -e $SHELL -ilc "cd $HOME && curl -H \"Cache-Control: no-cache\" https://raw.githubusercontent.com/MetaCell/PsyNeuLinkView/develop/package/scripts/linux_installer.sh -o linux_installer.sh && chmod +x linux_installer.sh && bash linux_installer.sh && rm -f linux_installer.sh" - RUN_FLAG=1 - fi -fi - -if [ $RUN_FLAG -eq 0 ]; then - command -v gnome-terminal >/dev/null - if [ $? -eq 0 ]; then - gnome-terminal -- $SHELL -ilc "cd $HOME && curl -H \"Cache-Control: no-cache\" https://raw.githubusercontent.com/MetaCell/PsyNeuLinkView/develop/package/scripts/linux_installer.sh -o linux_installer.sh && chmod +x linux_installer.sh && bash linux_installer.sh && rm -f linux_installer.sh; exec bash" - RUN_FLAG=1 - fi -fi - -if [ $RUN_FLAG -eq 0 ]; then - command -v notify-send >/dev/null 2>&1 - if [ $? -eq 0 ]; then - notify-send "PsyNeuLinkViewer installation ERROR: No terminal found" "Try the manual installation documented in the github README." - else - xmessage -center -buttons 'Close':0 -default Ok -nearmouse "Error during the PsyNeuLinkViewer installation: No terminal found\nPlease try to download the linux installer bash script and run this manually from your terminal as documented in the repository README." - fi -fi diff --git a/package/installers/requirements.txt b/package/installers/requirements.txt new file mode 100644 index 00000000..e69de29b From aa20171bc5b5190627637f78bb62ea68e50a617d Mon Sep 17 00:00:00 2001 From: ddelpiano Date: Tue, 26 Nov 2024 18:19:41 +0100 Subject: [PATCH 109/126] edit readme --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9ecd593f..8da55bab 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ # Installing on Linux -Download the installer from here and double click to run the installation. +To be edited - Download the installer from ``here `` and double click to run the installation. # Installing on MAC -Download the installer from here and double click to run the installation. +To be edited - Download the installer from ``here `` and double click to run the installation. # Manual installation on Linux From 34867e43e5dfb477974d7a71f9e118876c312702 Mon Sep 17 00:00:00 2001 From: ddelpiano Date: Tue, 26 Nov 2024 18:21:13 +0100 Subject: [PATCH 110/126] installers action --- .github/workflows/installers.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/installers.yml b/.github/workflows/installers.yml index 6db2961e..7763130c 100644 --- a/.github/workflows/installers.yml +++ b/.github/workflows/installers.yml @@ -1,8 +1,6 @@ name: Installers -on: - release: - types: - - created +on: [pull_request] + jobs: build: runs-on: ${{ matrix.os }} From 8ca1e65fcf0d55fd147a00df0cacf08f2afc7a82 Mon Sep 17 00:00:00 2001 From: ddelpiano Date: Tue, 26 Nov 2024 18:35:25 +0100 Subject: [PATCH 111/126] fixing bash installation --- installation.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/installation.sh b/installation.sh index 39a26337..b204d2c6 100755 --- a/installation.sh +++ b/installation.sh @@ -181,6 +181,6 @@ else fi pip uninstall -y grpcio && pip uninstall -y grpcio-tools -conda install -c -y conda-forge grpcio +conda install -y -c conda-forge grpcio pip install -y modeci_mdf conda install -y python-graphviz From cfe49e2f8a3d5171fe4de8307938c798016060b9 Mon Sep 17 00:00:00 2001 From: ddelpiano Date: Tue, 26 Nov 2024 18:38:43 +0100 Subject: [PATCH 112/126] fixing installer job --- .github/workflows/installers.yml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/installers.yml b/.github/workflows/installers.yml index 7763130c..b71fc687 100644 --- a/.github/workflows/installers.yml +++ b/.github/workflows/installers.yml @@ -1,6 +1,8 @@ name: Installers -on: [pull_request] - +on: + release: + types: + - created jobs: build: runs-on: ${{ matrix.os }} @@ -24,6 +26,8 @@ jobs: - name: Rename the installer with the OS name working-directory: ./package/installers run: mv dist/installer/installer dist/installer/installer-${{ matrix.os }} - - uses: actions/upload-artifact@v2 + - name: release + uses: softprops/action-gh-release@v2 + if: startsWith(github.ref, 'refs/tags/') with: - path: dist/* + files: dist/installer/installer-${{ matrix.os }} From 0d8676d5e619d824ced969d75f3228158cef9273 Mon Sep 17 00:00:00 2001 From: ddelpiano Date: Tue, 26 Nov 2024 18:53:03 +0100 Subject: [PATCH 113/126] changing python version --- .github/workflows/installers.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/installers.yml b/.github/workflows/installers.yml index b71fc687..4b1e01e5 100644 --- a/.github/workflows/installers.yml +++ b/.github/workflows/installers.yml @@ -15,7 +15,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 with: - python-version: 3.10 + python-version: 3.12.7 - name: Install dependencies working-directory: ./package/installers From d47bf28e5cb01099a65302aceafa892440d26206 Mon Sep 17 00:00:00 2001 From: ddelpiano Date: Tue, 26 Nov 2024 18:55:26 +0100 Subject: [PATCH 114/126] fix in installer yaml --- .github/workflows/installers.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/installers.yml b/.github/workflows/installers.yml index 4b1e01e5..6f15526d 100644 --- a/.github/workflows/installers.yml +++ b/.github/workflows/installers.yml @@ -22,7 +22,7 @@ jobs: run: pip install -r requirements.txt pyinstaller - name: Build working-directory: ./package/installers - run: pyinstaller your-code.py + run: pyinstaller installer.py - name: Rename the installer with the OS name working-directory: ./package/installers run: mv dist/installer/installer dist/installer/installer-${{ matrix.os }} From 0d484f197f7217b572947338307371a2ae15d815 Mon Sep 17 00:00:00 2001 From: ddelpiano Date: Tue, 26 Nov 2024 19:00:57 +0100 Subject: [PATCH 115/126] fix in installer yaml 2 --- .github/workflows/installers.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/installers.yml b/.github/workflows/installers.yml index 6f15526d..62eb82bc 100644 --- a/.github/workflows/installers.yml +++ b/.github/workflows/installers.yml @@ -30,4 +30,4 @@ jobs: uses: softprops/action-gh-release@v2 if: startsWith(github.ref, 'refs/tags/') with: - files: dist/installer/installer-${{ matrix.os }} + files: ./package/installers/dist/installer/installer-${{ matrix.os }} From f527c3703c8a03ee467b0ba9aa3d162ccfc671f1 Mon Sep 17 00:00:00 2001 From: ddelpiano Date: Tue, 26 Nov 2024 19:10:35 +0100 Subject: [PATCH 116/126] fixing request import --- package/installers/installer.py | 2 +- package/installers/macos.scpt | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) delete mode 100755 package/installers/macos.scpt diff --git a/package/installers/installer.py b/package/installers/installer.py index 9465a0c9..9c5af7d8 100644 --- a/package/installers/installer.py +++ b/package/installers/installer.py @@ -1,6 +1,7 @@ from os import path import sys import subprocess +import requests def does_it_exists(command): rc = subprocess.call(['which', command]) @@ -14,7 +15,6 @@ def does_it_exists(command): # save the bash script in the home directory of the user def download_installer(url): # download the installer - import requests response = requests.get(url) # save the installer in the home directory installer_path = path.join(path.expanduser('~'), 'installer.sh') diff --git a/package/installers/macos.scpt b/package/installers/macos.scpt deleted file mode 100755 index f2a06849..00000000 --- a/package/installers/macos.scpt +++ /dev/null @@ -1,3 +0,0 @@ -osascript -e 'tell app "Terminal" - do script "cd ~ && curl -H \"Cache-Control: no-cache\" https://raw.githubusercontent.com/MetaCell/PsyNeuLinkView/develop/package/scripts/mac_installer.sh -o mac_installer.sh && chmod +x mac_installer.sh && ./mac_installer.sh && rm -f mac_installer.sh" -end tell' > /dev/null From 79085ab4f86b5f37ce9fc8e480c3d0cd3fff1d00 Mon Sep 17 00:00:00 2001 From: ddelpiano Date: Tue, 26 Nov 2024 22:06:14 +0100 Subject: [PATCH 117/126] generate single file for the installer --- .github/workflows/installers.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/installers.yml b/.github/workflows/installers.yml index 62eb82bc..193d02fa 100644 --- a/.github/workflows/installers.yml +++ b/.github/workflows/installers.yml @@ -22,12 +22,12 @@ jobs: run: pip install -r requirements.txt pyinstaller - name: Build working-directory: ./package/installers - run: pyinstaller installer.py + run: pyinstaller --onefile installer.py - name: Rename the installer with the OS name working-directory: ./package/installers - run: mv dist/installer/installer dist/installer/installer-${{ matrix.os }} + run: mv dist/installer dist/installer-${{ matrix.os }} - name: release uses: softprops/action-gh-release@v2 if: startsWith(github.ref, 'refs/tags/') with: - files: ./package/installers/dist/installer/installer-${{ matrix.os }} + files: ./package/installers/dist/installer-${{ matrix.os }} From 6f93448ce15a79880fe20e00001efdcffa96c4de Mon Sep 17 00:00:00 2001 From: ddelpiano Date: Tue, 26 Nov 2024 22:15:10 +0100 Subject: [PATCH 118/126] fixing issue in psyneuview build with the installation.sh --- installation.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/installation.sh b/installation.sh index b204d2c6..e656556a 100755 --- a/installation.sh +++ b/installation.sh @@ -180,7 +180,11 @@ else echo " - please use the option desidered to run the script again." fi +echo "### removing grpcio ###" pip uninstall -y grpcio && pip uninstall -y grpcio-tools +echo "### installing grpcio ###" conda install -y -c conda-forge grpcio -pip install -y modeci_mdf +echo "### installing modeci_mdf ###" +pip install modeci_mdf +echo "### installing graphviz ###" conda install -y python-graphviz From bafaca656cedddd8ffaabf0d73367419dbee58b6 Mon Sep 17 00:00:00 2001 From: ddelpiano Date: Tue, 26 Nov 2024 22:25:58 +0100 Subject: [PATCH 119/126] still issues with the requests lib missing --- .github/workflows/installers.yml | 2 +- installation.sh | 7 +++++-- package/installers/requirements.txt | 2 ++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/installers.yml b/.github/workflows/installers.yml index 193d02fa..1bcb5d57 100644 --- a/.github/workflows/installers.yml +++ b/.github/workflows/installers.yml @@ -19,7 +19,7 @@ jobs: - name: Install dependencies working-directory: ./package/installers - run: pip install -r requirements.txt pyinstaller + run: pip install -r requirements.txt - name: Build working-directory: ./package/installers run: pyinstaller --onefile installer.py diff --git a/installation.sh b/installation.sh index e656556a..f0795969 100755 --- a/installation.sh +++ b/installation.sh @@ -180,11 +180,14 @@ else echo " - please use the option desidered to run the script again." fi +echo "### installing graphviz ###" +conda install -y python-graphviz + echo "### removing grpcio ###" pip uninstall -y grpcio && pip uninstall -y grpcio-tools + echo "### installing grpcio ###" conda install -y -c conda-forge grpcio + echo "### installing modeci_mdf ###" pip install modeci_mdf -echo "### installing graphviz ###" -conda install -y python-graphviz diff --git a/package/installers/requirements.txt b/package/installers/requirements.txt index e69de29b..95027339 100644 --- a/package/installers/requirements.txt +++ b/package/installers/requirements.txt @@ -0,0 +1,2 @@ +pyinstaller==6.11.1 +requests==2.32.3 From 676e2d031f73030b8d75c23ed0f6a86e4c8b836d Mon Sep 17 00:00:00 2001 From: ddelpiano Date: Wed, 27 Nov 2024 11:13:04 +0100 Subject: [PATCH 120/126] fixing mac script --- package/installers/installer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/installers/installer.py b/package/installers/installer.py index 9c5af7d8..e98c9ec2 100644 --- a/package/installers/installer.py +++ b/package/installers/installer.py @@ -40,7 +40,7 @@ def download_installer(url): # install the macos specific package mac_url = 'https://raw.githubusercontent.com/MetaCell/PsyNeuLinkView/develop/package/scripts/mac_installer.sh' mac_installer = download_installer(mac_url) - command1 = ["osascript", "-e", "tell application \"Terminal\" to do script \"cd $HOME && chmod +x " + mac_installer + " && bash " + mac_installer + "; rm -f " + mac_installer + "\" end tell"] + command2 = ["osascript", "-e", "'tell application \"Terminal\" to do script \"cd $HOME && chmod +x " + mac_installer + " && bash " + mac_installer + "; rm -f " + mac_installer + "' end tell"] subprocess.call(command1) else: raise Exception('Unsupported platform') From 8c03dc8d8ddb9744860bac4a7c51008d47f5cfc9 Mon Sep 17 00:00:00 2001 From: ddelpiano Date: Wed, 27 Nov 2024 11:40:35 +0100 Subject: [PATCH 121/126] fixing macos installer --- package/installers/installer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/installers/installer.py b/package/installers/installer.py index e98c9ec2..91fa7fc9 100644 --- a/package/installers/installer.py +++ b/package/installers/installer.py @@ -40,7 +40,7 @@ def download_installer(url): # install the macos specific package mac_url = 'https://raw.githubusercontent.com/MetaCell/PsyNeuLinkView/develop/package/scripts/mac_installer.sh' mac_installer = download_installer(mac_url) - command2 = ["osascript", "-e", "'tell application \"Terminal\" to do script \"cd $HOME && chmod +x " + mac_installer + " && bash " + mac_installer + "; rm -f " + mac_installer + "' end tell"] + command1 = ["osascript", "-e", "tell application \"Terminal\" to do script \"cd $HOME && chmod +x " + mac_installer + " && bash " + mac_installer + "; rm -f " + mac_installer + "\""] subprocess.call(command1) else: raise Exception('Unsupported platform') From 5958891d2d1206944450275639b865e1f479b345 Mon Sep 17 00:00:00 2001 From: ddelpiano Date: Wed, 27 Nov 2024 11:49:02 +0100 Subject: [PATCH 122/126] producing 3 installers, 2 macos versions --- .github/workflows/installers.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/installers.yml b/.github/workflows/installers.yml index 1bcb5d57..2eb034cc 100644 --- a/.github/workflows/installers.yml +++ b/.github/workflows/installers.yml @@ -9,7 +9,7 @@ jobs: strategy: fail-fast: false matrix: - os: ['ubuntu-latest', 'macos-latest'] + platform: ['darwin/x64', 'darwing/arm64', 'linux/x64'] steps: - uses: actions/checkout@v2 @@ -25,9 +25,9 @@ jobs: run: pyinstaller --onefile installer.py - name: Rename the installer with the OS name working-directory: ./package/installers - run: mv dist/installer dist/installer-${{ matrix.os }} + run: mv dist/installer dist/installer-${{ matrix.platform == 'darwin/x64' && 'osx-x64' || matrix.platform == 'darwin/arm64' && 'osx-arm64' || matrix.platform == 'linux/x64' && 'linux-x64' }} - name: release uses: softprops/action-gh-release@v2 if: startsWith(github.ref, 'refs/tags/') with: - files: ./package/installers/dist/installer-${{ matrix.os }} + files: ./package/installers/dist/installer-${{ matrix.platform == 'darwin/x64' && 'osx-x64' || matrix.platform == 'darwin/arm64' && 'osx-arm64' || matrix.platform == 'linux/x64' && 'linux-x64' }} From a8c6da26fa0f8e43e71da6193632170ea1b8daff Mon Sep 17 00:00:00 2001 From: ddelpiano Date: Wed, 27 Nov 2024 11:52:02 +0100 Subject: [PATCH 123/126] producing 3 installers, 2 macos versions 2 --- .github/workflows/installers.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/installers.yml b/.github/workflows/installers.yml index 2eb034cc..4b381e9b 100644 --- a/.github/workflows/installers.yml +++ b/.github/workflows/installers.yml @@ -5,7 +5,7 @@ on: - created jobs: build: - runs-on: ${{ matrix.os }} + runs-on: ${{ matrix.platform }} strategy: fail-fast: false matrix: From e5afb3c44bafd4f20ed3000ac3b00e462d1bce82 Mon Sep 17 00:00:00 2001 From: ddelpiano Date: Wed, 27 Nov 2024 12:04:55 +0100 Subject: [PATCH 124/126] reverting to working runners --- .github/workflows/installers.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/installers.yml b/.github/workflows/installers.yml index 4b381e9b..1bcb5d57 100644 --- a/.github/workflows/installers.yml +++ b/.github/workflows/installers.yml @@ -5,11 +5,11 @@ on: - created jobs: build: - runs-on: ${{ matrix.platform }} + runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: - platform: ['darwin/x64', 'darwing/arm64', 'linux/x64'] + os: ['ubuntu-latest', 'macos-latest'] steps: - uses: actions/checkout@v2 @@ -25,9 +25,9 @@ jobs: run: pyinstaller --onefile installer.py - name: Rename the installer with the OS name working-directory: ./package/installers - run: mv dist/installer dist/installer-${{ matrix.platform == 'darwin/x64' && 'osx-x64' || matrix.platform == 'darwin/arm64' && 'osx-arm64' || matrix.platform == 'linux/x64' && 'linux-x64' }} + run: mv dist/installer dist/installer-${{ matrix.os }} - name: release uses: softprops/action-gh-release@v2 if: startsWith(github.ref, 'refs/tags/') with: - files: ./package/installers/dist/installer-${{ matrix.platform == 'darwin/x64' && 'osx-x64' || matrix.platform == 'darwin/arm64' && 'osx-arm64' || matrix.platform == 'linux/x64' && 'linux-x64' }} + files: ./package/installers/dist/installer-${{ matrix.os }} From ebf949bbb2e526a237164cd41c2f53f1c5f8893b Mon Sep 17 00:00:00 2001 From: ddelpiano Date: Wed, 27 Nov 2024 12:29:34 +0100 Subject: [PATCH 125/126] generate .app for macos --- .github/workflows/installers.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/installers.yml b/.github/workflows/installers.yml index 1bcb5d57..cdd19fd7 100644 --- a/.github/workflows/installers.yml +++ b/.github/workflows/installers.yml @@ -22,12 +22,12 @@ jobs: run: pip install -r requirements.txt - name: Build working-directory: ./package/installers - run: pyinstaller --onefile installer.py + run: pyinstaller --onefile -w installer.py - name: Rename the installer with the OS name working-directory: ./package/installers - run: mv dist/installer dist/installer-${{ matrix.os }} + run: mv dist/ psyneuviewer-installer-${{ matrix.os }} && tar cvfz psyneu-installer-${{ matrix.os }}.tar.gz psyneuviewer-installer-${{ matrix.os }} - name: release uses: softprops/action-gh-release@v2 if: startsWith(github.ref, 'refs/tags/') with: - files: ./package/installers/dist/installer-${{ matrix.os }} + files: ./package/installers/psyneu-installer-${{ matrix.os }}.tar.gz From 45d7d2c599f6f7078616bb46ae7070c546ea9375 Mon Sep 17 00:00:00 2001 From: ddelpiano Date: Wed, 27 Nov 2024 15:25:57 +0100 Subject: [PATCH 126/126] new README --- README.md | 98 ++++++++++++++++++++--------------------------- package/README.md | 90 ------------------------------------------- 2 files changed, 41 insertions(+), 147 deletions(-) diff --git a/README.md b/README.md index 8da55bab..31c796b0 100644 --- a/README.md +++ b/README.md @@ -1,92 +1,76 @@ -# Installing on Linux +# Installing on MacOS -To be edited - Download the installer from ``here `` and double click to run the installation. +## Use the installer file -# Installing on MAC +Download the [installer](https://github.com/MetaCell/PsyNeuLinkView/releases/download/0.0.6/psyneu-installer-macos-latest.tar.gz) file, uncompress the archive, enter in the folder extracted and click on installer.app to execute the PsyNeuLinkViewer installation. -To be edited - Download the installer from ``here `` and double click to run the installation. +Note: The app is not signed through an Apple developer ID, so depending on the security settings of your machine you might need to instruct the Gatekeeper that the app you are trying to run is secure. -# Manual installation on Linux +To do so: -Download bash script to install [here](https://raw.githubusercontent.com/MetaCell/PsyNeuLinkView/develop/package/linux_installer.sh). -It's recommended to download it in your home directory. +- On your Mac, choose Apple menu > System Settings, then click Privacy & Security in the sidebar. (You may need to scroll down.) +- Go to Security, then click Open. +- Click Open Anyway. +- This button is available for about an hour after you try to open the app. +- Enter your login password, then click OK. -On terminal, go to your home directory +## Manual installation in a custom conda environment -``` -cd ~ -``` +PsyNeuLinkViewer is an application built on top of Electron (and NodeJS) and python for what concern the simulation part, since is levering [PsyNeuLink](https://github.com/PrincetonUniversity/PsyNeuLink) at the backend level. +We might want to run this installation for a specific conda environment, in that case the steps to follow are: -Change file permissions to allow user to run it +- Download the script from here -``` -chmod + x linux_installer.sh -``` - -And run installer +- Open your Terminal application +- Move to the same folder where the file has been downloaded ``` -./linux_installer.sh +cd ~/Downloads ``` -After installation is done: - -If conda environment is already active, run - +- Create and/or activate the conda environment you want to use ``` -psyneulinkviewer +conda create --name psyneulinkview python=3.10 +conda activate psyneulinkview ``` -If conda environment is not active, then run : - +- Run the installation script ``` -source ~/.profile -conda activate psyneulinkview -psyneulinkviewer +bash mac_installer.sh ``` +- Once finished, the script will create the terminal command psyneulinkviewer which can be used to launch the application, otherwise this will be present also in your desktop. -The application should open up succesfully after this. An icon will be visible on the Desktop as well. +# Installing on Linux -# Manual installation on MAC +## Use the installer file -Download bash script to install [here](https://raw.githubusercontent.com/MetaCell/PsyNeuLinkView/develop/package/mac_installer.sh). -It's recommended to download it in your home directory. +Download the [installer](https://github.com/MetaCell/PsyNeuLinkView/releases/download/0.0.6/psyneu-installer-ubuntu-latest.tar.gz) file, uncompress the archive, enter in the folder extracted and click on installer.app to execute the PsyNeuLinkViewer installation. -On terminal, go to your home directory +## Manual installation in a custom conda environment -``` -cd ~ -``` - -Give user permissions to file +PsyNeuLinkViewer is an application built on top of Electron (and NodeJS) and python for what concern the simulation part, since is levering [PsyNeuLink](https://github.com/PrincetonUniversity/PsyNeuLink) at the backend level. +We might want to run this installation for a specific conda environment, in that case the steps to follow are: -``` -chmod +x mac_installer.sh -``` +- Download the script from here -And run installer +- Open your Terminal application +- Move to the same folder where the file has been downloaded ``` -./mac_installer.sh +cd ~/Downloads ``` -After installation is done: - -If conda environment is already active, run - +- Create and/or activate the conda environment you want to use ``` -open ~/psyneulinkviewer-darwin-x64/psyneulinkviewer.app/ +conda create --name psyneulinkview python=3.10 +conda activate psyneulinkview ``` -If conda environment is not active, then run : - +- Run the installation script ``` -source ~/.bash_profile -conda activate psyneulinkview -open ~/psyneulinkviewer-darwin-x64/psyneulinkviewer.app/ +bash linux_installer.sh ``` - -The application should open up succesfully after this. A desktop icon should be visible as well. +- Once finished, the script will create the terminal command psyneulinkviewer which can be used to launch the application, otherwise this will be present also in your desktop. # Installation process inside script @@ -105,13 +89,13 @@ After successfully installing the python package above, it reset the user's bash - Linux ``` -source ~/.profile +source ~/.profile ``` - Mac ``` -source ~/.bash_profile +source ~/.bash_profile ``` Then, a desktop file is created on the Desktop which allows users to open the application this way diff --git a/package/README.md b/package/README.md index a62700f0..27ba2d3e 100644 --- a/package/README.md +++ b/package/README.md @@ -1,93 +1,3 @@ -# Installing on Linux - -Download the installer from here and double click to run the installation. - -# Installing on MAC - -Download the installer from here and double click to run the installation. - -# Manual installation on Linux - -Download bash script to install [here](https://raw.githubusercontent.com/MetaCell/PsyNeuLinkView/feature/PSYNEU-140/package/linux_installer.sh). -It's recommended to download it in your home directory. - -On terminal, go to your home directory - -``` -cd ~ -``` - -Change file permissions to allow user to run it - -``` -chmod + x linux_installer.sh -``` - -And run installer - -``` -./linux_installer.sh -``` - -After installation is done: - -If conda environment is already active, run - -``` -psyneulinkviewer -``` - -If conda environment is not active, then run : - -``` -source ~/.profile -conda activate psyneulinkview -psyneulinkviewer -``` - -The application should open up succesfully after this. An icon will be visible on the Desktop as well. - -# Manual installation on MAC - -Download bash script to install [here](https://raw.githubusercontent.com/MetaCell/PsyNeuLinkView/feature/PSYNEU-140/package/mac_installer.sh). -It's recommended to download it in your home directory. - -On terminal, go to your home directory - -``` -cd ~ -``` - -Give user permissions to file - -``` -chmod +x mac_installer.sh -``` - -And run installer - -``` -./mac_installer.sh -``` - -After installation is done: - -If conda environment is already active, run - -``` -open ~/psyneulinkviewer-darwin-x64/psyneulinkviewer.app/ -``` - -If conda environment is not active, then run : - -``` -source ~/.bash_profile -conda activate psyneulinkview -open ~/psyneulinkviewer-darwin-x64/psyneulinkviewer.app/ -``` - -The application should open up succesfully after this. A desktop icon should be visible as well. - # Installation process inside script The scripts above run the following commands in order: