Support more vscode variables in .env files

Applies To

[X] Notebooks (.ipynb files)
[X] Interactive Window and/or Cell Scripts (.py files with #%% markers)

What happened?
directory structure :
root/
    .vscode/
        settings.json
    folder/
        test.py
        test.ipynb
    tools/
        module.py
    .env

module.py's content is
def func():
    """This is a function"""
    print("Hello World")

content of test.py and test.ipynb is the same:
import sys
print(sys.path)
from module import func

settings.json:
{
    "terminal.integrated.env.osx": {
        "PYTHONPATH": "${env:PYTHONPATH}:${workspaceFolder}/tools",
    },
    "terminal.integrated.env.linux": {
        "PYTHONPATH": "${env:PYTHONPATH}:${workspaceFolder}/tools",
    },
    "terminal.integrated.env.windows": {
        "PYTHONPATH": "${env:PYTHONPATH};${workspaceFolder}/tools",
    },
    "python.envFile": "${workspaceFolder}/.env"
}

.env:
PYTHONPATH=${PYTHONPATH}:${workspaceFolder}${pathSeparator}tools

Expected Behaviour
both test.py and test.ipynb run without errors and print /root/tools among the paths.
Actual Behaviour
test.py runs as expected, but jupyter notebook prints /root/folder/tools instead of the correct path and it gives an import error.
Same behaviour observed using fileWorkspaceFolder or cwd variables in place of workspaceFolder
VS Code Version
1.71.2
Jupyter Extension Version
v2022.8.1002431955
Jupyter logs
Visual Studio Code (1.71.2, undefined, desktop)
Jupyter Extension Version: 2022.8.1002431955.
Python Extension Version: 2022.14.0.
Workspace folder /Users/ahmedelashry/Downloads/test_
error 15:20:1.62: Exception while attempting zmq : [Error: No native build was found for platform=darwin arch=arm64 runtime=electron abi=106 uv=1 armv=8 libc=glibc node=16.14.2 electron=19.0.12
    loaded from: /Users/ahmedelashry/.vscode/extensions/ms-toolsai.jupyter-2022.8.1002431955/out/node_modules/zeromq

	at load.path (/Users/ahmedelashry/.vscode/extensions/ms-toolsai.jupyter-2022.8.1002431955/out/node_modules/node-gyp-build/index.js:1:3163)
	at load (/Users/ahmedelashry/.vscode/extensions/ms-toolsai.jupyter-2022.8.1002431955/out/node_modules/node-gyp-build/index.js:1:648)
	at Object.<anonymous> (/Users/ahmedelashry/.vscode/extensions/ms-toolsai.jupyter-2022.8.1002431955/out/node_modules/zeromq/lib/native.js:1:198)
	at u._compile (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/loader.js:4:1313)
	at Module._extensions..js (node:internal/modules/cjs/loader:1220:10)
	at Module.load (node:internal/modules/cjs/loader:1035:32)
	at Module._load (node:internal/modules/cjs/loader:876:12)
	at c._load (node:electron/js2c/asar_bundle:5:13343)
	at s._load (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:111:14538)
	at p._load (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:106:62866)
	at E._load (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:106:62234)
	at Module.require (node:internal/modules/cjs/loader:1059:19)
	at p (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/loader.js:4:699)
	at Object.<anonymous> (/Users/ahmedelashry/.vscode/extensions/ms-toolsai.jupyter-2022.8.1002431955/out/node_modules/zeromq/lib/index.js:1:144)
	at u._compile (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/loader.js:4:1313)
	at Module._extensions..js (node:internal/modules/cjs/loader:1220:10)
	at Module.load (node:internal/modules/cjs/loader:1035:32)
	at Module._load (node:internal/modules/cjs/loader:876:12)
	at c._load (node:electron/js2c/asar_bundle:5:13343)
	at s._load (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:111:14538)
	at p._load (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:106:62866)
	at E._load (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:106:62234)
	at Module.require (node:internal/modules/cjs/loader:1059:19)
	at p (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/loader.js:4:699)
	at 92747 (/Users/ahmedelashry/.vscode/extensions/ms-toolsai.jupyter-2022.8.1002431955/out/extension.node.js:17:503599)
	at __webpack_require__ (/Users/ahmedelashry/.vscode/extensions/ms-toolsai.jupyter-2022.8.1002431955/out/extension.node.js:17:1383216)
	at l.zmqSupported (/Users/ahmedelashry/.vscode/extensions/ms-toolsai.jupyter-2022.8.1002431955/out/extension.node.js:2:2360645)
	at l.isSupportedForLocalLaunch (/Users/ahmedelashry/.vscode/extensions/ms-toolsai.jupyter-2022.8.1002431955/out/extension.node.js:2:2360388)
	at get isSupported [as isSupported] (/Users/ahmedelashry/.vscode/extensions/ms-toolsai.jupyter-2022.8.1002431955/out/extension.node.js:2:2360298)
	at t.registerTypes (/Users/ahmedelashry/.vscode/extensions/ms-toolsai.jupyter-2022.8.1002431955/out/extension.node.js:2:2376353)
	at /Users/ahmedelashry/.vscode/extensions/ms-toolsai.jupyter-2022.8.1002431955/out/extension.node.js:2:1792972
	at /Users/ahmedelashry/.vscode/extensions/ms-toolsai.jupyter-2022.8.1002431955/out/extension.node.js:2:1793727
	at /Users/ahmedelashry/.vscode/extensions/ms-toolsai.jupyter-2022.8.1002431955/out/extension.node.js:2:1793735
	at t.activate (/Users/ahmedelashry/.vscode/extensions/ms-toolsai.jupyter-2022.8.1002431955/out/extension.node.js:2:1793857)
	at Tn._callActivateOptional (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:97:17649)
	at Tn._callActivate (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:97:17307)
	at /Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:97:15118
	at process.processTicksAndRejections (node:internal/process/task_queues:96:5)
	at async E._activate (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:85:8224)
	at async E._waitForDepsThenActivate (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:85:8166)
	at async E._initialize (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:85:7530)]
User belongs to experiment group 'jupyterTest'
User belongs to experiment group 'jupyterEnhancedDataViewer'
info 15:20:1.291: LSP Notebooks experiment is enabled
info 15:20:1.293: Attempting to start a server because of preload conditions ...
info 15:20:1.301: Checking for server existence.
info 15:20:1.301: Checking for server usability.
info 15:20:1.646: Starting Jupyter Session id = 'startUsingPythonInterpreter:.jvsc74a57bd031f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6./usr/bin/python3./usr/bin/python3.-m#ipykernel_launcher' (Python Path: , EnvType: Global, EnvName: '', Version: 3.8.9) for '/Users/ahmedelashry/Downloads/test_/folder/test.ipynb' (disableUI=true)
info 15:20:1.853: Experiment status for python is {"enabled":true,"optInto":[],"optOutFrom":[]}
info 15:20:1.857: Widget Message: Received IPyWidgetMessages.IPyWidgets_IsReadyRequest
info 15:20:1.866: Preferred Remote kernel for /Users/ahmedelashry/Downloads/test_/folder/test.ipynb is undefined
info 15:20:1.866: Find preferred kernel for /Users/ahmedelashry/Downloads/test_/folder/test.ipynb with metadata {"kernelspec":{"display_name":"Python 3.8.9 64-bit","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.8.9"},"orig_nbformat":4,"vscode":{"interpreter":{"hash":"31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6"}}} & preferred interpreter /usr/bin/python3
info 15:20:1.869: Preferred Remote kernel for /Users/ahmedelashry/Downloads/test_/folder/test.ipynb is undefined
info 15:20:1.869: Preferred kernel .jvsc74a57bd031f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6./usr/bin/python3./usr/bin/python3.-m#ipykernel_launcher is exact match or top match for non python kernels, (false, [object Object], true, false)
info 15:20:1.869: PreferredConnection: .jvsc74a57bd031f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6./usr/bin/python3./usr/bin/python3.-m#ipykernel_launcher found for NotebookDocument: /Users/ahmedelashry/Downloads/test_/folder/test.ipynb
info 15:20:1.939: Process Execution: > /usr/bin/python3 -m pip list
> /usr/bin/python3 -m pip list
info 15:20:1.947: Process Execution: > /usr/bin/python3 -c "import jupyter"
> /usr/bin/python3 -c "import jupyter"
info 15:20:1.948: Process Execution: > /usr/bin/python3 -c "import notebook"
> /usr/bin/python3 -c "import notebook"
info 15:20:2.82: Process Execution: > /usr/bin/python3 -m jupyter kernelspec --version
> /usr/bin/python3 -m jupyter kernelspec --version
info 15:20:2.364: Starting notebook server.
info 15:20:2.364: Connecting to server
info 15:20:2.364: Launching server
info 15:20:2.365: Starting Notebook
info 15:20:2.366: Generating custom default config at /var/folders/bb/ysm6jxm150q7zn1ypj34scg80000gn/T/2b1a6199-4900-40cc-8b6e-cf32bff4bebf/jupyter_notebook_config.py
info 15:20:2.366: Starting Jupyter Notebook
Starting Jupyter from /usr/bin/python3
info 15:20:2.368: Creating daemon pool for /usr/bin/python3 with env variables count 41
info 15:20:2.369: Process Execution: > /usr/bin/python3 -m vscode_datascience_helpers.daemon --daemon-module=vscode_datascience_helpers.jupyter_daemon -v --ppid 58341
> /usr/bin/python3 -m vscode_datascience_helpers.daemon --daemon-module=vscode_datascience_helpers.jupyter_daemon -v --ppid 58341
info 15:20:2.370: Process Execution: > /usr/bin/python3 -m vscode_datascience_helpers.daemon --daemon-module=vscode_datascience_helpers.jupyter_daemon -v --ppid 58341
> /usr/bin/python3 -m vscode_datascience_helpers.daemon --daemon-module=vscode_datascience_helpers.jupyter_daemon -v --ppid 58341
info 15:20:2.370: Process Execution: > /usr/bin/python3 -m vscode_datascience_helpers.daemon --daemon-module=vscode_datascience_helpers.jupyter_daemon -v --ppid 58341
> /usr/bin/python3 -m vscode_datascience_helpers.daemon --daemon-module=vscode_datascience_helpers.jupyter_daemon -v --ppid 58341
info 15:20:2.432: Process Execution: > /usr/bin/python3 (daemon) -m jupyter notebook --no-browser --notebook-dir="/Users/ahmedelashry/Downloads/test_" --config=/var/folders/bb/ysm6jxm150q7zn1ypj34scg80000gn/T/2b1a6199-4900-40cc-8b6e-cf32bff4bebf/jupyter_notebook_config.py --NotebookApp.iopub_data_rate_limit=10000000000.0
> /usr/bin/python3 (daemon) -m jupyter notebook --no-browser --notebook-dir="/Users/ahmedelashry/Downloads/test_" --config=/var/folders/bb/ysm6jxm150q7zn1ypj34scg80000gn/T/2b1a6199-4900-40cc-8b6e-cf32bff4bebf/jupyter_notebook_config.py --NotebookApp.iopub_data_rate_limit=10000000000.0
info 15:20:2.432: Waiting for Jupyter Notebook
/Users/ahmedelashry/Library/Python/3.8/lib/python/site-packages/traitlets/traitlets.py:2392: FutureWarning: Supporting extra quotes around strings is deprecated in traitlets 5.0. You can use '/Users/ahmedelashry/Downloads/test_' instead of '"/Users/ahmedelashry/Downloads/test_"' if you require traitlets >=5.
  warn(
info 15:20:2.698: /Users/ahmedelashry/Library/Python/3.8/lib/python/site-packages/traitlets/traitlets.py:2392: FutureWarning: Supporting extra quotes around strings is deprecated in traitlets 5.0. You can use '/Users/ahmedelashry/Downloads/test_' instead of '"/Users/ahmedelashry/Downloads/test_"' if you require traitlets >=5.
  warn(

info 15:20:2.864: Preferred Remote kernel for /Users/ahmedelashry/Downloads/test_/folder/test.ipynb is undefined
[I 15:20:02.979 NotebookApp] The port 8888 is already in use, trying another port.
info 15:20:2.980: /Users/ahmedelashry/Library/Python/3.8/lib/python/site-packages/traitlets/traitlets.py:2392: FutureWarning: Supporting extra quotes around strings is deprecated in traitlets 5.0. You can use '/Users/ahmedelashry/Downloads/test_' instead of '"/Users/ahmedelashry/Downloads/test_"' if you require traitlets >=5.
  warn(
[I 15:20:02.979 NotebookApp] The port 8888 is already in use, trying another port.

[I 15:20:02.985 NotebookApp] Serving notebooks from local directory: /Users/ahmedelashry/Downloads/test_
info 15:20:2.985: /Users/ahmedelashry/Library/Python/3.8/lib/python/site-packages/traitlets/traitlets.py:2392: FutureWarning: Supporting extra quotes around strings is deprecated in traitlets 5.0. You can use '/Users/ahmedelashry/Downloads/test_' instead of '"/Users/ahmedelashry/Downloads/test_"' if you require traitlets >=5.
  warn(
[I 15:20:02.979 NotebookApp] The port 8888 is already in use, trying another port.
[I 15:20:02.985 NotebookApp] Serving notebooks from local directory: /Users/ahmedelashry/Downloads/test_

[I 15:20:02.985 NotebookApp] Jupyter Notebook 6.4.12 is running at:
info 15:20:2.986: /Users/ahmedelashry/Library/Python/3.8/lib/python/site-packages/traitlets/traitlets.py:2392: FutureWarning: Supporting extra quotes around strings is deprecated in traitlets 5.0. You can use '/Users/ahmedelashry/Downloads/test_' instead of '"/Users/ahmedelashry/Downloads/test_"' if you require traitlets >=5.
  warn(
[I 15:20:02.979 NotebookApp] The port 8888 is already in use, trying another port.
[I 15:20:02.985 NotebookApp] Serving notebooks from local directory: /Users/ahmedelashry/Downloads/test_
[I 15:20:02.985 NotebookApp] Jupyter Notebook 6.4.12 is running at:

[I 15:20:02.985 NotebookApp] http://localhost:8889/?token=854d7814d454986c7c0fa318e952e49266b45a939b9fe9d2
info 15:20:2.986: /Users/ahmedelashry/Library/Python/3.8/lib/python/site-packages/traitlets/traitlets.py:2392: FutureWarning: Supporting extra quotes around strings is deprecated in traitlets 5.0. You can use '/Users/ahmedelashry/Downloads/test_' instead of '"/Users/ahmedelashry/Downloads/test_"' if you require traitlets >=5.
  warn(
[I 15:20:02.979 NotebookApp] The port 8888 is already in use, trying another port.
[I 15:20:02.985 NotebookApp] Serving notebooks from local directory: /Users/ahmedelashry/Downloads/test_
[I 15:20:02.985 NotebookApp] Jupyter Notebook 6.4.12 is running at:
[I 15:20:02.985 NotebookApp] http://localhost:8889/?token=854d7814d454986c7c0fa318e952e49266b45a939b9fe9d2

info 15:20:2.986: Process Execution: > /usr/bin/python3 (daemon) ~/.vscode/extensions/ms-toolsai.jupyter-2022.8.1002431955/pythonFiles/vscode_datascience_helpers/getServerInfo.py
> /usr/bin/python3 (daemon) ~/.vscode/extensions/ms-toolsai.jupyter-2022.8.1002431955/pythonFiles/vscode_datascience_helpers/getServerInfo.py
[I 15:20:02.985 NotebookApp]  or http://<IP_ADDRESS>:8889/?token=854d7814d454986c7c0fa318e952e49266b45a939b9fe9d2
info 15:20:2.988: /Users/ahmedelashry/Library/Python/3.8/lib/python/site-packages/traitlets/traitlets.py:2392: FutureWarning: Supporting extra quotes around strings is deprecated in traitlets 5.0. You can use '/Users/ahmedelashry/Downloads/test_' instead of '"/Users/ahmedelashry/Downloads/test_"' if you require traitlets >=5.
  warn(
[I 15:20:02.979 NotebookApp] The port 8888 is already in use, trying another port.
[I 15:20:02.985 NotebookApp] Serving notebooks from local directory: /Users/ahmedelashry/Downloads/test_
[I 15:20:02.985 NotebookApp] Jupyter Notebook 6.4.12 is running at:
[I 15:20:02.985 NotebookApp] http://localhost:8889/?token=854d7814d454986c7c0fa318e952e49266b45a939b9fe9d2
[I 15:20:02.985 NotebookApp]  or http://<IP_ADDRESS>:8889/?token=854d7814d454986c7c0fa318e952e49266b45a939b9fe9d2

info 15:20:2.988: Process Execution: > /usr/bin/python3 (daemon) ~/.vscode/extensions/ms-toolsai.jupyter-2022.8.1002431955/pythonFiles/vscode_datascience_helpers/getServerInfo.py
> /usr/bin/python3 (daemon) ~/.vscode/extensions/ms-toolsai.jupyter-2022.8.1002431955/pythonFiles/vscode_datascience_helpers/getServerInfo.py
[I 15:20:02.985 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
info 15:20:2.989: /Users/ahmedelashry/Library/Python/3.8/lib/python/site-packages/traitlets/traitlets.py:2392: FutureWarning: Supporting extra quotes around strings is deprecated in traitlets 5.0. You can use '/Users/ahmedelashry/Downloads/test_' instead of '"/Users/ahmedelashry/Downloads/test_"' if you require traitlets >=5.
  warn(
[I 15:20:02.979 NotebookApp] The port 8888 is already in use, trying another port.
[I 15:20:02.985 NotebookApp] Serving notebooks from local directory: /Users/ahmedelashry/Downloads/test_
[I 15:20:02.985 NotebookApp] Jupyter Notebook 6.4.12 is running at:
[I 15:20:02.985 NotebookApp] http://localhost:8889/?token=854d7814d454986c7c0fa318e952e49266b45a939b9fe9d2
[I 15:20:02.985 NotebookApp]  or http://<IP_ADDRESS>:8889/?token=854d7814d454986c7c0fa318e952e49266b45a939b9fe9d2
[I 15:20:02.985 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).

[C 15:20:02.987 NotebookApp]

    To access the notebook, open this file in a browser:
        file:///Users/ahmedelashry/Library/Jupyter/runtime/nbserver-58435-open.html
    Or copy and paste one of these URLs:
        http://localhost:8889/?token=854d7814d454986c7c0fa318e952e49266b45a939b9fe9d2
     or http://<IP_ADDRESS>:8889/?token=854d7814d454986c7c0fa318e952e49266b45a939b9fe9d2
info 15:20:2.990: /Users/ahmedelashry/Library/Python/3.8/lib/python/site-packages/traitlets/traitlets.py:2392: FutureWarning: Supporting extra quotes around strings is deprecated in traitlets 5.0. You can use '/Users/ahmedelashry/Downloads/test_' instead of '"/Users/ahmedelashry/Downloads/test_"' if you require traitlets >=5.
  warn(
[I 15:20:02.979 NotebookApp] The port 8888 is already in use, trying another port.
[I 15:20:02.985 NotebookApp] Serving notebooks from local directory: /Users/ahmedelashry/Downloads/test_
[I 15:20:02.985 NotebookApp] Jupyter Notebook 6.4.12 is running at:
[I 15:20:02.985 NotebookApp] http://localhost:8889/?token=854d7814d454986c7c0fa318e952e49266b45a939b9fe9d2
[I 15:20:02.985 NotebookApp]  or http://<IP_ADDRESS>:8889/?token=854d7814d454986c7c0fa318e952e49266b45a939b9fe9d2
[I 15:20:02.985 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 15:20:02.987 NotebookApp]

    To access the notebook, open this file in a browser:
        file:///Users/ahmedelashry/Library/Jupyter/runtime/nbserver-58435-open.html
    Or copy and paste one of these URLs:
        http://localhost:8889/?token=854d7814d454986c7c0fa318e952e49266b45a939b9fe9d2
     or http://<IP_ADDRESS>:8889/?token=854d7814d454986c7c0fa318e952e49266b45a939b9fe9d2

info 15:20:3.186: Connecting to process server
info 15:20:3.186: Connecting server kernel http://localhost:8889/
info 15:20:3.186: Creating server with url : http://localhost:8889/
info 15:20:3.192: Connection complete server
info 15:20:3.192: Server started.
info 15:20:3.263: Process Execution: > /usr/bin/python3 (daemon) ~/.vscode/extensions/ms-toolsai.jupyter-2022.8.1002431955/pythonFiles/vscode_datascience_helpers/getServerInfo.py
> /usr/bin/python3 (daemon) ~/.vscode/extensions/ms-toolsai.jupyter-2022.8.1002431955/pythonFiles/vscode_datascience_helpers/getServerInfo.py
info 15:20:3.263: Process Execution: > /usr/bin/python3 (daemon) ~/.vscode/extensions/ms-toolsai.jupyter-2022.8.1002431955/pythonFiles/vscode_datascience_helpers/getServerInfo.py
> /usr/bin/python3 (daemon) ~/.vscode/extensions/ms-toolsai.jupyter-2022.8.1002431955/pythonFiles/vscode_datascience_helpers/getServerInfo.py
[I 15:20:03.293 NotebookApp] Creating new notebook in /folder
info 15:20:3.324: installMissingDependencies /usr/bin/python3, ui.disabled=true for resource '/Users/ahmedelashry/Downloads/test_/folder/test.ipynb'
info 15:20:3.326: Process Execution: > /usr/bin/python3 -c "import ipykernel"
> /usr/bin/python3 -c "import ipykernel"
info 15:20:3.516: Spec argv[0] updated from '/usr/bin/python3' to '/usr/bin/python3'
[I 15:20:03.585 NotebookApp] Kernel started: 4f16566d-ade0-4e7f-a0bb-9739f9256a0a, name: python389jvsc74a57bd031f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6
info 15:20:3.600: Waiting for idle on (kernel): 4f16566d-ade0-4e7f-a0bb-9739f9256a0a -> unknown
[W 15:20:03.610 NotebookApp] delete /folder/test-jvsc-0e2a5c25-c12e-4f50-a670-d1eecfb208f262e0c21c-5df8-4760-b6dd-9cf8234ab7cd.ipynb
info 15:20:4.531: Finished waiting for idle on (kernel): 4f16566d-ade0-4e7f-a0bb-9739f9256a0a -> idle
info 15:20:4.532: Started session for kernel startUsingPythonInterpreter:.jvsc74a57bd031f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6./usr/bin/python3./usr/bin/python3.-m#ipykernel_launcher
info 15:20:4.532: Finished connecting kernel startUsingPythonInterpreter:.jvsc74a57bd031f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6./usr/bin/python3./usr/bin/python3.-m#ipykernel_launcher
info 15:20:4.533: UpdateWorkingDirectoryAndPath in Kernel
info 15:20:4.534: Executing silently Code (idle) = import os\nimport sys\n%cd "//Users/ahmedelashry/Downloads/test_/folder"\nif os.getcwd() not in sys.pat
info 15:20:4.757: Executing silently Code (completed) = import os\nimport sys\n%cd "//Users/ahmedelashry/Downloads/test_/folder"\nif os.getcwd() not in sys.pat with 1 output(s)
info 15:20:4.757: Waiting for idle on (kernel): 4f16566d-ade0-4e7f-a0bb-9739f9256a0a -> idle
info 15:20:4.757: Finished waiting for idle on (kernel): 4f16566d-ade0-4e7f-a0bb-9739f9256a0a -> idle
info 15:20:4.760: Process Execution: > /usr/bin/python3 ~/.vscode/extensions/ms-toolsai.jupyter-2022.8.1002431955/pythonFiles/printJupyterDataDir.py
> /usr/bin/python3 ~/.vscode/extensions/ms-toolsai.jupyter-2022.8.1002431955/pythonFiles/printJupyterDataDir.py
info 15:20:4.763: Widget Message: Received IPyWidgets_kernelOptions in ScriptManager
info 15:20:4.763: Widget Message: Received IPyWidgetMessages.IPyWidgets_kernelOptions
info 15:20:4.875: Widget Message: data-base-url set to https://file%2B.vscode-resource.vscode-cdn.net/Users/ahmedelashry/.vscode/extensions/ms-toolsai.jupyter-2022.8.1002431955/tmp/scripts/31287cf9e2e18afa40154cd18cb1e57335b009e6bfea9730c6beb09c8a1ec8b0/jupyter
info 15:25:57.928: Execute Cell 1 /Users/ahmedelashry/Downloads/test_/folder/test.ipynb
info 15:25:57.966: Cell 1 executed with state Success
info 15:25:58.828: Execute Cell 1 /Users/ahmedelashry/Downloads/test_/folder/test.ipynb
info 15:25:58.853: Cell 1 executed with state Success
info 15:26:31.600: Execute Cell 1 /Users/ahmedelashry/Downloads/test_/folder/test.ipynb
info 15:26:31.627: Cell 1 executed with state Success
info 15:31:10.445: Restart requested file:///Users/ahmedelashry/Downloads/test_/folder/test.ipynb
info 15:31:10.447: Restart kernel execution
info 15:31:10.447: Cancel pending cells
info 15:31:10.447: Restarting 4f16566d-ade0-4e7f-a0bb-9739f9256a0a
[I 15:31:10.451 NotebookApp] Creating new notebook in /folder
info 15:31:10.459: installMissingDependencies /usr/bin/python3, ui.disabled=false for resource '/Users/ahmedelashry/Downloads/test_/folder/test.ipynb'
info 15:31:10.461: Process Execution: > /usr/bin/python3 -c "import ipykernel"
> /usr/bin/python3 -c "import ipykernel"
info 15:31:10.602: Spec argv[0] updated from '/usr/bin/python3' to '/usr/bin/python3'
[I 15:31:10.625 NotebookApp] Kernel started: 827c8a41-c44d-45b2-b741-ba05876bc3a4, name: python389jvsc74a57bd031f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6
info 15:31:10.631: Waiting for idle on (kernel): 827c8a41-c44d-45b2-b741-ba05876bc3a4 -> unknown
[W 15:31:10.635 NotebookApp] delete /folder/test-jvsc-c2f2a306-4b49-4e2a-908f-c733addbc010fd7d86de-c748-4f50-9cff-7bac29a0751e.ipynb
info 15:31:11.41: Finished waiting for idle on (kernel): 827c8a41-c44d-45b2-b741-ba05876bc3a4 -> idle
info 15:31:11.42: Got new session 827c8a41-c44d-45b2-b741-ba05876bc3a4
info 15:31:11.42: Started new restart session
info 15:31:11.44: Executing silently Code (idle) = import sys\nprint(sys.executable)
info 15:31:11.47: Widget Message: Received IPyWidgetMessages.IPyWidgets_onRestartKernel
[I 15:31:11.048 NotebookApp] Kernel shutdown: 4f16566d-ade0-4e7f-a0bb-9739f9256a0a
info 15:31:11.61: Widget Message: Received IPyWidgets_kernelOptions in ScriptManager
info 15:31:11.61: Widget Message: Received IPyWidgetMessages.IPyWidgets_kernelOptions
info 15:31:11.114: Executing silently Code (completed) = import sys\nprint(sys.executable) with 1 output(s)
info 15:31:11.115: Process Execution: > /usr/bin/python3 -c "import sys;print(sys.executable)"
> /usr/bin/python3 -c "import sys;print(sys.executable)"
info 15:31:11.116: UpdateWorkingDirectoryAndPath in Kernel
info 15:31:11.116: Executing silently Code (idle) = import os\nimport sys\n%cd "//Users/ahmedelashry/Downloads/test_/folder"\nif os.getcwd() not in sys.pat
info 15:31:11.128: Executing silently Code (completed) = import os\nimport sys\n%cd "//Users/ahmedelashry/Downloads/test_/folder"\nif os.getcwd() not in sys.pat with 1 output(s)
info 15:31:11.128: Waiting for idle on (kernel): 827c8a41-c44d-45b2-b741-ba05876bc3a4 -> idle
info 15:31:11.128: Finished waiting for idle on (kernel): 827c8a41-c44d-45b2-b741-ba05876bc3a4 -> idle
info 15:31:11.578: Execute Cell 1 /Users/ahmedelashry/Downloads/test_/folder/test.ipynb
info 15:31:11.602: Cell 1 executed with state Success
info 15:31:13.974: Execute Cell 0 /Users/ahmedelashry/Downloads/test_/folder/test.ipynb
info 15:31:14.252: Cancel all remaining cells true || Error || undefined
info 15:31:14.252: Cancel pending cells
info 15:31:14.252: Cell 0 executed with state Error
info 15:32:48.530: Execute Cell 0 /Users/ahmedelashry/Downloads/test_/folder/test.ipynb
info 15:32:48.566: Cancel all remaining cells true || Error || undefined
info 15:32:48.566: Cancel pending cells
info 15:32:48.566: Cell 0 executed with state Error
info 15:37:51.264: Restart requested file:///Users/ahmedelashry/Downloads/test_/folder/test.ipynb
info 15:37:51.266: Restart kernel execution
info 15:37:51.266: Cancel pending cells
info 15:37:51.266: Restarting 827c8a41-c44d-45b2-b741-ba05876bc3a4
[I 15:37:51.272 NotebookApp] Creating new notebook in /folder
info 15:37:51.283: installMissingDependencies /usr/bin/python3, ui.disabled=false for resource '/Users/ahmedelashry/Downloads/test_/folder/test.ipynb'
info 15:37:51.289: Process Execution: > /usr/bin/python3 -c "import ipykernel"
> /usr/bin/python3 -c "import ipykernel"
info 15:37:51.418: Spec argv[0] updated from '/usr/bin/python3' to '/usr/bin/python3'
[I 15:37:51.441 NotebookApp] Kernel started: 7ee9e182-9f60-4fe2-9439-7f3ea54be1ad, name: python389jvsc74a57bd031f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6
info 15:37:51.447: Waiting for idle on (kernel): 7ee9e182-9f60-4fe2-9439-7f3ea54be1ad -> unknown
[W 15:37:51.449 NotebookApp] delete /folder/test-jvsc-9cdf9f0e-55fd-4eea-a6cc-b722acd6c0f5d6bf3430-fe9f-4662-b2e9-8c87921cc718.ipynb
info 15:37:51.789: Finished waiting for idle on (kernel): 7ee9e182-9f60-4fe2-9439-7f3ea54be1ad -> idle
info 15:37:51.790: Got new session 7ee9e182-9f60-4fe2-9439-7f3ea54be1ad
info 15:37:51.790: Started new restart session
info 15:37:51.792: Executing silently Code (idle) = import sys\nprint(sys.executable)
info 15:37:51.795: Widget Message: Received IPyWidgetMessages.IPyWidgets_onRestartKernel
info 15:37:51.795: Widget Message: Received IPyWidgets_kernelOptions in ScriptManager
info 15:37:51.795: Widget Message: Received IPyWidgetMessages.IPyWidgets_kernelOptions
[I 15:37:51.795 NotebookApp] Kernel shutdown: 827c8a41-c44d-45b2-b741-ba05876bc3a4
info 15:37:51.862: Executing silently Code (completed) = import sys\nprint(sys.executable) with 1 output(s)
info 15:37:51.864: Process Execution: > /usr/bin/python3 -c "import sys;print(sys.executable)"
> /usr/bin/python3 -c "import sys;print(sys.executable)"
info 15:37:51.864: UpdateWorkingDirectoryAndPath in Kernel
info 15:37:51.864: Executing silently Code (idle) = import os\nimport sys\n%cd "//Users/ahmedelashry/Downloads/test_/folder"\nif os.getcwd() not in sys.pat
info 15:37:51.878: Executing silently Code (completed) = import os\nimport sys\n%cd "//Users/ahmedelashry/Downloads/test_/folder"\nif os.getcwd() not in sys.pat with 1 output(s)
info 15:37:51.878: Waiting for idle on (kernel): 7ee9e182-9f60-4fe2-9439-7f3ea54be1ad -> idle
info 15:37:51.878: Finished waiting for idle on (kernel): 7ee9e182-9f60-4fe2-9439-7f3ea54be1ad -> idle
info 15:37:54.969: Execute Cell 0 /Users/ahmedelashry/Downloads/test_/folder/test.ipynb
info 15:37:54.970: Execute Cell 1 /Users/ahmedelashry/Downloads/test_/folder/test.ipynb
info 15:37:54.970: Execute Cell 2 /Users/ahmedelashry/Downloads/test_/folder/test.ipynb
info 15:37:55.266: Cancel all remaining cells true || Error || undefined
info 15:37:55.266: Cancel pending cells
info 15:37:55.266: Cell 0 executed with state Error
info 15:37:55.266: Cell 1 executed with state Idle
info 15:37:55.266: Cell 2 executed with state Idle
info 15:37:57.990: Execute Cell 1 /Users/ahmedelashry/Downloads/test_/folder/test.ipynb
info 15:37:58.7: Cell 1 executed with state Idle
info 15:38:43.394: Restart requested file:///Users/ahmedelashry/Downloads/test_/folder/test.ipynb
info 15:38:43.395: Restart kernel execution
info 15:38:43.395: Cancel pending cells
info 15:38:43.395: Restarting 7ee9e182-9f60-4fe2-9439-7f3ea54be1ad
[I 15:38:43.400 NotebookApp] Creating new notebook in /folder
info 15:38:43.407: installMissingDependencies /usr/bin/python3, ui.disabled=false for resource '/Users/ahmedelashry/Downloads/test_/folder/test.ipynb'
info 15:38:43.411: Process Execution: > /usr/bin/python3 -c "import ipykernel"
> /usr/bin/python3 -c "import ipykernel"
info 15:38:43.520: Spec argv[0] updated from '/usr/bin/python3' to '/usr/bin/python3'
[I 15:38:43.545 NotebookApp] Kernel started: 974336c7-86f1-42cf-bfa2-c725a65f5b50, name: python389jvsc74a57bd031f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6
info 15:38:43.550: Waiting for idle on (kernel): 974336c7-86f1-42cf-bfa2-c725a65f5b50 -> unknown
[W 15:38:43.554 NotebookApp] delete /folder/test-jvsc-79741209-7031-43d7-bb92-72d2e3f5a6c87ed3313c-7e12-4a7f-8c4c-580a785c7680.ipynb
info 15:38:44.49: Finished waiting for idle on (kernel): 974336c7-86f1-42cf-bfa2-c725a65f5b50 -> idle
info 15:38:44.49: Got new session 974336c7-86f1-42cf-bfa2-c725a65f5b50
info 15:38:44.49: Started new restart session
info 15:38:44.51: Executing silently Code (idle) = import sys\nprint(sys.executable)
info 15:38:44.53: Widget Message: Received IPyWidgetMessages.IPyWidgets_onRestartKernel
[I 15:38:44.053 NotebookApp] Kernel shutdown: 7ee9e182-9f60-4fe2-9439-7f3ea54be1ad
info 15:38:44.56: Widget Message: Received IPyWidgets_kernelOptions in ScriptManager
info 15:38:44.56: Widget Message: Received IPyWidgetMessages.IPyWidgets_kernelOptions
info 15:38:44.119: Executing silently Code (completed) = import sys\nprint(sys.executable) with 1 output(s)
info 15:38:44.121: Process Execution: > /usr/bin/python3 -c "import sys;print(sys.executable)"
> /usr/bin/python3 -c "import sys;print(sys.executable)"
info 15:38:44.123: UpdateWorkingDirectoryAndPath in Kernel
info 15:38:44.123: Executing silently Code (idle) = import os\nimport sys\n%cd "//Users/ahmedelashry/Downloads/test_/folder"\nif os.getcwd() not in sys.pat
info 15:38:44.137: Executing silently Code (completed) = import os\nimport sys\n%cd "//Users/ahmedelashry/Downloads/test_/folder"\nif os.getcwd() not in sys.pat with 1 output(s)
info 15:38:44.137: Waiting for idle on (kernel): 974336c7-86f1-42cf-bfa2-c725a65f5b50 -> idle
info 15:38:44.137: Finished waiting for idle on (kernel): 974336c7-86f1-42cf-bfa2-c725a65f5b50 -> idle
info 15:38:44.316: Execute Cell 0 /Users/ahmedelashry/Downloads/test_/folder/test.ipynb
info 15:38:44.316: Execute Cell 1 /Users/ahmedelashry/Downloads/test_/folder/test.ipynb
info 15:38:44.316: Execute Cell 2 /Users/ahmedelashry/Downloads/test_/folder/test.ipynb
info 15:38:44.614: Cancel all remaining cells true || Error || undefined
info 15:38:44.614: Cancel pending cells
info 15:38:44.615: Cell 0 executed with state Error
info 15:38:44.615: Cell 1 executed with state Idle
info 15:38:44.615: Cell 2 executed with state Idle
info 15:41:27.294: Starting interactive window for resource '/Users/ahmedelashry/Downloads/test_/folder/test2.py'
info 15:41:27.374: Attempting to start a server because of preload conditions ...
info 15:41:27.376: Preferred Remote kernel for Interactive-1.interactive is undefined
info 15:41:27.386: Process Execution: > /usr/bin/python3 -m pip list
> /usr/bin/python3 -m pip list
info 15:41:27.534: Starting Jupyter Session id = 'startUsingPythonInterpreter:.jvsc74a57bd031f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6./usr/bin/python3./usr/bin/python3.-m#ipykernel_launcher' (Python Path: , EnvType: Global, EnvName: '', Version: 3.8.9) for 'Interactive-1.interactive' (disableUI=false)
[I 15:41:27.545 NotebookApp] Creating new notebook in /folder
info 15:41:27.554: installMissingDependencies /usr/bin/python3, ui.disabled=false for resource '/Users/ahmedelashry/Downloads/test_/folder/test2.py'
info 15:41:27.555: Process Execution: > /usr/bin/python3 -c "import ipykernel"
> /usr/bin/python3 -c "import ipykernel"
info 15:41:27.781: Spec argv[0] updated from '/usr/bin/python3' to '/usr/bin/python3'
[I 15:41:27.822 NotebookApp] Kernel started: 9333888e-3c31-4c68-8125-6741a62f0106, name: python389jvsc74a57bd031f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6
info 15:41:27.829: Waiting for idle on (kernel): 9333888e-3c31-4c68-8125-6741a62f0106 -> unknown
[W 15:41:27.834 NotebookApp] delete /folder/test2.py-jvsc-367acf20-f1d9-46cb-ad83-189b48d7163943b8410f-d732-4ba0-9b77-59ce79403b40.ipynb
info 15:41:28.258: Finished waiting for idle on (kernel): 9333888e-3c31-4c68-8125-6741a62f0106 -> idle
info 15:41:28.258: Started session for kernel startUsingPythonInterpreter:.jvsc74a57bd031f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6./usr/bin/python3./usr/bin/python3.-m#ipykernel_launcher
info 15:41:28.258: Finished connecting kernel startUsingPythonInterpreter:.jvsc74a57bd031f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6./usr/bin/python3./usr/bin/python3.-m#ipykernel_launcher
info 15:41:28.260: UpdateWorkingDirectoryAndPath in Kernel
info 15:41:28.260: Executing silently Code (idle) = import types as _VSCODE_types\nimport os\nimport hashlib as _VSCODE_hashlib\nfrom IPython import get_ip
info 15:41:28.334: Executing silently Code (completed) = import types as _VSCODE_types\nimport os\nimport hashlib as _VSCODE_hashlib\nfrom IPython import get_ip with 1 output(s)
info 15:41:28.335: Waiting for idle on (kernel): 9333888e-3c31-4c68-8125-6741a62f0106 -> idle
info 15:41:28.335: Finished waiting for idle on (kernel): 9333888e-3c31-4c68-8125-6741a62f0106 -> idle
info 15:41:28.337: Executing silently Code (idle) = __file__ = '/Users/ahmedelashry/Downloads/test_/folder/test2.py'
info 15:41:28.339: Widget Message: Received IPyWidgets_kernelOptions in ScriptManager
info 15:41:28.339: Widget Message: Received IPyWidgetMessages.IPyWidgets_kernelOptions
info 15:41:28.341: Executing silently Code (completed) = __file__ = '/Users/ahmedelashry/Downloads/test_/folder/test2.py' with 0 output(s)
info 15:41:28.342: Generated code for 1 = <ipython-input-1-fc21d79efc59> with 6 lines
info 15:41:28.354: Widget Message: data-base-url set to https://file%2B.vscode-resource.vscode-cdn.net/Users/ahmedelashry/.vscode/extensions/ms-toolsai.jupyter-2022.8.1002431955/tmp/scripts/31287cf9e2e18afa40154cd18cb1e57335b009e6bfea9730c6beb09c8a1ec8b0/jupyter
info 15:41:28.626: Cancel all remaining cells true || Error || undefined
info 15:41:28.626: Cancel pending cells
info 15:41:28.626: Cell 1 executed with state Error
info 15:42:38.968: Loading webview. View is notset
info 15:42:38.968: Loading web view...
info 15:42:38.969: Webview panel created.
info 15:42:39.201: Web view react rendered
info 15:42:39.213: Executing silently Code (idle) = def _VSCODE_getVariable(what_to_get, is_debugging, *args):\n# Query Jupyter server for the info
info 15:42:39.214: Executing silently Code (idle) = def _VSCODE_getVariable(what_to_get, is_debugging, *args):\n# Query Jupyter server for the info
info 15:42:39.227: Executing silently Code (completed) = def _VSCODE_getVariable(what_to_get, is_debugging, *args):\n# Query Jupyter server for the info with 1 output(s)
info 15:42:39.238: Executing silently Code (completed) = def _VSCODE_getVariable(what_to_get, is_debugging, *args):\n# Query Jupyter server for the info with 1 output(s)

Coding Language and Runtime Version
Python v.3.8.9
Language Extension Version (if applicable)
v2022.14.0
Anaconda Version (if applicable)
No response
Running Jupyter locally or remotely?
Local

Thanks for filing this issue, however we do not support all tokens defined here https://code.visualstudio.com/docs/editor/variables-reference (which is what I believe you are using)
Instead you can include the following in your .env file to get around this current limitation:
PYTHONPATH=./tools

Thanks for filing this issue, however we do not support all tokens defined here https://code.visualstudio.com/docs/editor/variables-reference (which is what I believe you are using)
Also, found that there are other issues with the workspace folder of the ipynb file, i've investigated this and filed an issue separately that can be tracked here https://github.com/microsoft/vscode-jupyter/issues/11552
Right now this is blocked by a few issues,

https://github.com/microsoft/vscode-jupyter/issues/11552
We don't support all tokens defined here https://code.visualstudio.com/docs/editor/variables-reference (which is what I believe you are using)

Unfortunately I don't have a work around yet, I'll have an update when issue #11552 is fixed

As far as I can tell at the moment the only way to get this to reliably work is to use an absolute path to the tools folder when setting PYTHONPATH (e.g. PYTHONPATH=/Users/<username>/Documents/root/tools on macOS). So every project with this structure would require manually editing the .env file.
I have had some success using PYTHONPATH=S{PWD}/tools, however this only seems to work if I opened root from terminal using code ..
I have also noticed that setting PYTHONPATH in the .env file overrides the setting of PYTHONPATH that Jupyter seems to be doing.
e.g. running a notebook test.ipynb from a folder /Users/oliver/Documents/kliima/kliima-data/notebooks with /Users/oliver/Documents/kliima/kliima-data open as a workspace in vscode:
Without any .env file:
>>> import sys
>>> sys.path

['/Users/oliver/Documents/kliima/kliima-data/notebooks',
 '/Users/oliver/.vscode/extensions/ms-toolsai.jupyter-2022.11.1003412109/pythonFiles',
 '/Users/oliver/.vscode/extensions/ms-toolsai.jupyter-2022.11.1003412109/pythonFiles/lib/python',
 '/Users/oliver/miniconda3/envs/forge/lib/python310.zip',
 '/Users/oliver/miniconda3/envs/forge/lib/python3.10',
 '/Users/oliver/miniconda3/envs/forge/lib/python3.10/lib-dynload',
 '',
 '/Users/oliver/miniconda3/envs/forge/lib/python3.10/site-packages']

With PYTHONPATH=/Users/Oliver/Documents/kliima/kliima-data/modules in ${workspaceFolder}/.env:
>>> import sys
>>> sys.path

['/Users/oliver/Documents/kliima/kliima-data/notebooks',
 '/Users/oliver/Documents/kliima/kliima-data/modules',
 '/Users/oliver/miniconda3/envs/forge/lib/python310.zip',
 '/Users/oliver/miniconda3/envs/forge/lib/python3.10',
 '/Users/oliver/miniconda3/envs/forge/lib/python3.10/lib-dynload',
 '',
 '/Users/oliver/miniconda3/envs/forge/lib/python3.10/site-packages']

... as you can see, the .vscode/extensions/ms-toolsai.jupyter-2022.11.1003412109/pythonFiles etc. entries are no longer there.
With PYTHONPATH=${PYTHONPATH}:/Users/Oliver/Documents/kliima/kliima-data/modules in ${workspaceFolder}/.env:
>>> import sys
>>> sys.path

['/Users/oliver/Documents/kliima/kliima-data/notebooks',
 '/Users/oliver/Documents/kliima/kliima-data/notebooks',
 '/Users/oliver/Documents/kliima/kliima-data/modules',
 '/Users/oliver/miniconda3/envs/forge/lib/python310.zip',
 '/Users/oliver/miniconda3/envs/forge/lib/python3.10',
 '/Users/oliver/miniconda3/envs/forge/lib/python3.10/lib-dynload',
 '',
 '/Users/oliver/miniconda3/envs/forge/lib/python3.10/site-packages']

... the .vscode/extensions/ms-toolsai.jupyter-2022.11.1003412109/pythonFiles entries are still not there. For some reason this last one also duplicates the entry of /Users/oliver/Documents/kliima/kliima-data/notebooks.


[Sharkey] Columns only load one page of results

Version: 5.545
Device: Motorola Moto G Stylus 5G
Android: 13
Behavior
When scrolling a timeline, toast message "End of List" when end of initial results are reached.
Expected Behavior
When scrolling timeline, older messages should load at end of list.

mastodon api expect link header to get parameters to get next page. it's
api compatibility issue of the your server.
2024年4月23日(火) 3:09 Jack Meyers @.***>:

Version: 5.545
Device: Motorola Moto G Stylus 5G
Android: 13
Behavior
When scrolling a timeline, toast message "End of List" when end of initial
results are reached.
Expected Behavior
When scrolling timeline, older messages should load at end of list.
—
Reply to this email directly, view it on GitHub
https://github.com/tateisu/SubwayTooter/issues/263, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AACRQ6CYIYBIBQIJ4FNUP2TY6VG53AVCNFSM6AAAAABGTIPF6WVHI2DSMVQWIX3LMV43ASLTON2WKOZSGI2TOMJXGAYTSOI
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>


data: olatocode

Fixes Issue

Changes proposed

Check List (Check all the applicable boxes)

[x] My code follows the code style of this project.
[ ] My change requires changes to the documentation.
[ ] I have updated the documentation accordingly.
[ ] All new and existing tests passed.
[ ] This PR does not contain plagiarized content.
[x] The title of my pull request is a short description of the requested changes.

Screenshots

Note to reviewers

Closing this one because this is a duplicate to PR no. #3143.
Please make the requested changes in #3143. That would be good to merge then!


Void action

:+1:  Have a look at the few comments on the tests. Otherwise if you can squash it afterwards, it can be merged : )


iOS Database not encrypted

I am having issues with the encrypted database.
For a medical app we are required to encrypt our database. I followed this guide
https://moor.simonbinder.eu/docs/other-engines/encryption/#encrypted-version-of-moorffi
1: adding sqlcipher_flutter_libs package
2: adding the pragma key
3: setupSqlcipher
This is my setup:
  Future<DatabaseConnection> provideDatabaseConnection() async {
    final dbFolder = await getApplicationDocumentsDirectory();
    final file = File(join(dbFolder.path, 'db.sqlite'));
    final receivePort = ReceivePort();

    await Isolate.spawn(
      _startBackground,
      _IsolateStartRequest(receivePort.sendPort, file.path, 'TEST'),
    );

    // ignore: avoid_as
    final isolate = await receivePort.first as MoorIsolate;
    return isolate.connect();
  }

  void _startBackground(_IsolateStartRequest request) {
    open.overrideFor(OperatingSystem.android, () => DynamicLibrary.open('libsqlite3.so'));
    final executor = VmDatabase(File(request.targetPath), logStatements: true, setup: (db) => db.execute("PRAGMA key = '${request.password}'"));
    final moorIsolate = MoorIsolate.inCurrent(
      () => DatabaseConnection.fromExecutor(executor),
    );
    request.sendMoorIsolate.send(moorIsolate);
  }

class _IsolateStartRequest {
  final SendPort sendMoorIsolate;
  final String targetPath;
  final String password;

  _IsolateStartRequest(
    this.sendMoorIsolate,
    this.targetPath,
    this.password,
  );
}

On android I get this error when accessing the database.
E/flutter (24427): [ERROR:flutter/lib/ui/ui_dart_state.cc(186)] Unhandled Exception: Invalid argument(s): Failed to load dynamic library (dlopen failed: library "libsqlite3.so" not found)
E/flutter (24427): #0      _open (dart:ffi-patch/ffi_dynamic_library_patch.dart:11:55)
E/flutter (24427): #1      new DynamicLibrary.open (dart:ffi-patch/ffi_dynamic_library_patch.dart:20:12)
E/flutter (24427): #2      _startBackground.<anonymous closure> (package:my_app/di/injectable.dart:103:66)
E/flutter (24427): #3      OpenDynamicLibrary.openSqlite (package:sqlite3/src/load_library.dart:107:25)
E/flutter (24427): #4      sqlite3 (package:sqlite3/src/api/sqlite3.dart:12:38)
E/flutter (24427): #5      _VmDelegate._createDatabase (package:moor/src/ffi/vm_database.dart:159:13)
E/flutter (24427): #6      _VmDelegate.open (package:moor/src/ffi/vm_database.dart:138:7)
E/flutter (24427): #7      DelegatedDatabase.ensureOpen.<anonymous closure> (package:moor/src/runtime/executor/helpers/engines.dart:259:22)
E/flutter (24427): <asynchronous suspension>
E/flutter (24427): #8      Lock.synchronized.callBlockAndComplete (package:moor/src/utils/synchronized.dart:18:16)
E/flutter (24427): <asynchronous suspension>
E/flutter (24427): #9      ServerImplementation._handleEnsureOpen (package:moor/src/runtime/remote/server_impl.dart:117:12)
E/flutter (24427): <asynchronous suspension>
E/flutter (24427): #10     MoorCommunication.setRequestHandler.<anonymous closure>.<anonymous closure> (package:moor/src/runtime/remote/communication.dart)
E/flutter (24427): <asynchronous suspension>

So I found a couple of issues that looked similar:
I added this instead of the snippet that was provided in the docs:
DynamicLibrary _safeSqliteOpen() {
  DynamicLibrary libsqlite;
  try {
    libsqlite = DynamicLibrary.open('libsqlite3.so');
  } catch (e) {
    print("fail, fallback 1");
    libsqlite = DynamicLibrary.open("/data/data/<app-id>/lib/libsqlite3.so");
    print('fallback success');
  }
  return libsqlite;
}

But then I got this.
ERROR:flutter/lib/ui/ui_dart_state.cc(186)] Unhandled Exception: Invalid argument(s): Failed to load dynamic library (dlopen failed: library "/data/data/<app-id>/lib/libsqlite3.so" not found)
E/flutter (24427): #0      _open (dart:ffi-patch/ffi_dynamic_library_patch.dart:11:55)
E/flutter (24427): #1      new DynamicLibrary.open (dart:ffi-patch/ffi_dynamic_library_patch.dart:20:12)
E/flutter (24427): #2      _safeSqliteOpen (package:my_app/di/injectable.dart:118:32)
E/flutter (24427): #3      OpenDynamicLibrary.openSqlite (package:sqlite3/src/load_library.dart:107:25)
E/flutter (24427): #4      sqlite3 (package:sqlite3/src/api/sqlite3.dart:12:38)
E/flutter (24427): #5      _VmDelegate._createDatabase (package:moor/src/ffi/vm_database.dart:159:13)
E/flutter (24427): #6      _VmDelegate.open (package:moor/src/ffi/vm_database.dart:138:7)
E/flutter (24427): #7      DelegatedDatabase.ensureOpen.<anonymous closure> (package:moor/src/runtime/executor/helpers/engines.dart:259:22)
E/flutter (24427): <asynchronous suspension>
E/flutter (24427): #8      Lock.synchronized.callBlockAndComplete (package:moor/src/utils/synchronized.dart:18:16)
E/flutter (24427): <asynchronous suspension>
E/flutter (24427): #9      ServerImplementation._handleEnsureOpen (package:moor/src/runtime/remote/server_impl.dart:117:12)
E/flutter (24427): <asynchronous suspension>
E/flutter (24427): #10     MoorCommunication.setRequestHandler.<anonymous closure>.<anonymous closure> (package:moor/src/runtime/remote/communication.dart)
E/flutter (24427): <asynchronous suspension>

On iOS I get no errors when running. I can add , remove & update items in the database. But when I access the database file. I can read everything. How do I fix this? And is my iOS database even encrypted at this point?

Alright I got a little further. I was still trying to import libsqlite3  instead of libsqlcipher. Right now I got android working.
When I try to open the db in table plus I get this popup for Android.

It looks like this works now that you're opening libsqlcipher.so on Android? On iOS it should work out of the box I think, since we're linking sqlcipher into the Flutter binary.

When reading this. https://github.com/simolus3/sqlite3.dart/tree/master/sqlcipher_flutter_libs
I get confused on what I should use. And when I should call what?
Should it be like this?
await applyWorkaroundToOpenSqlCipherOnOldAndroidVersions();
open.overrideFor(
      OperatingSystem.android, openCipherOnAndroid);

Or like this:
open.overrideFor(
      OperatingSystem.android, applyWorkaroundToOpenSqlCipherOnOldAndroidVersions);

On iOS I can change the password and I can still access the file. In tableplus I don't get the passphrase popup. So the database is not yet encrypted out of the box

I found this:
https://github.com/simolus3/moor/issues/451#issuecomment-602062594
Where they say that we should still add the iOS native lib.
But that could not be found and throws this error:
[VERBOSE-2:ui_dart_state.cc(186)] Unhandled Exception: Invalid argument(s): Failed to load dynamic library (dlopen(/usr/lib/libsqlcipher.dylib, 1): image not found)
#0      _open (dart:ffi-patch/ffi_dynamic_library_patch.dart:11:55)
#1      new DynamicLibrary.open (dart:ffi-patch/ffi_dynamic_library_patch.dart:20:12)
#2      _startBackground.<anonymous closure> (package:my_app/di/injectable.dart:107:64)
#3      OpenDynamicLibrary.openSqlite (package:sqlite3/src/load_library.dart:107:25)
#4      sqlite3 (package:sqlite3/src/api/sqlite3.dart:12:38)
#5      _VmDelegate._createDatabase (package:moor/src/ffi/vm_database.dart:159:13)
#6      _VmDelegate.open (package:moor/src/ffi/vm_database.dart:138:7)
#7      DelegatedDatabase.ensureOpen.<anonymous closure> (package:moor/src/runtime/executor/helpers/engines.dart:259:22)
<asynchronous suspension>
#8      Lock.synchronized.callBlockAndComplete (package:moor/src/utils/synchronized.dart:18:16)
<asynchronous suspension>
#9      ServerImplementation._handleEnsu<…>

@vanlooverenkoen For iOS you can try using DynamicLibrary.process() instead. As Simon says, it's being compiled into the Flutter binary.

Alright yes that does the trick.
Personally, I think the encrypted library should get more attention. We should have some extra docs. And the libraries should be released to pub.dev With an easy api.

@davidmartos96 Do you have an idea what I should use here?

When reading this. https://github.com/simolus3/sqlite3.dart/tree/master/sqlcipher_flutter_libs
I get confused on what I should use. And when I should call what?
Should it be like this?
await applyWorkaroundToOpenSqlCipherOnOldAndroidVersions();
open.overrideFor(
      OperatingSystem.android, openCipherOnAndroid);

Or like this:
open.overrideFor(
      OperatingSystem.android, applyWorkaroundToOpenSqlCipherOnOldAndroidVersions);

or simply
open.overrideFor(OperatingSystem.android, () => DynamicLibrary.open('libsqlcipher.so'));

I haven't tried Simon's sqlcipher libs yet, but looking at the methods it looks like you should call both methods for the workarounds. So the first snippet you posted. Maybe Simon has more input on this.

Yeah that is wat I currenlty have. @simolus3 can you confirm this is correct?

Personally, I think the encrypted library should get more attention. We should have some extra docs. And the libraries should be released to pub.dev With an easy api.

Those are all valid points, I'll work on them this weekend. There's a PR to also support macOS with sqlcipher_flutter_libs. I'll get that merged and applied to sqlite3_flutter_libs as well. Then I can publish that all to pub and give clearer examples in the docs.
The applyWorkaroundToOpenSqlCipherOnOldAndroidVersions is a method which uses some Android hacks to work around an Android bug when opening native libraries. So far, the bug only occurs on Android 6.0.1.
open.overrideFor is used to change the default method the sqlite3 package uses to open the library. On Android, the default behavior is to attempt to open libsqlite3.so which is not what you want. So, your current code is correct:

Call (and await) applyWorkaroundToOpenSqlCipherOnOldAndroidVersions if you want to support Android 6.0.1
Use open.overrideFor so that you open libsqlcipher.so instead.

On iOS, you should just use DynamicLibrary.process() as David mentioned. This is also the default behavior, so you shouldn't need anything special for that.

Alright perfect. For now we will still use the git url.
Encrypted moor should only be used if moor_flutter is used. Right?

Yes, exactly.

Ok, so I've just published sqlcipher_flutter_libs to pub. Depending on that package will include sqlcipher on Android, iOS and macOS.
I've also updated the docs on encryption (preview here) a bit:

It mentions the correct override on Android
On iOS and macOS, I still believe that the default option should work. We have an integration test verifying that sqlite3_key is available without any additional overrides on both iOS and macOS. If it doesn't work for you I'd love to see a repro!
It gives some pointers on how to use SQLCipher on Windows or Linux.

Please let me know if you would want more information in the docs, or if you're still having issues with the new library on pub.

Looking good.
Regarding the iOS override. I am currently on a very tight deadline. I will create a sample project once I have some more time.
I only had 1 more question. When using the encrypted_moor on android we should add this proguard rule. This is not required anymore when using sqlcipher_flutter_libs? Or do we still need to add this?
-keep class net.sqlcipher.** { *; }

I think you don't need to keep sqlcipher's Java classes because they're not used with moor/ffi.
That said, I'm wondering why we need to keep them for the sqflite based implementation @davidmartos96. Is there some reflective access that would break otherwise?

@simolus3 It's needed when using platform channels (encrypted_moor) because of the minification and proguard configuration that Flutter does automatically on release mode.
It's a known error to miss the proguard configuration when using SQLCipher library from Java.
https://stackoverflow.com/a/42555193/5617722
https://github.com/sqlcipher/android-database-sqlcipher/issues/442

Hi All,
I am also kind of stuck.
I am using encrypted_moor with following dependencies:
encrypted_moor:
    git:
      url: https://github.com/simolus3/moor.git
      path: extras/encryption

  sqlcipher_flutter_libs:
    git:
      url: https://github.com/simolus3/sqlite3.dart.git
      path: sqlcipher_flutter_libs

 moor: ^4.3.0

This is how I am opening encrypted db file:
(EncryptedExecutor.inDatabaseFolder(
            path: 'hello.sqlite',
            password: 'hello',
            logStatements: true,
            singleInstance: true,
            creator: (file) async {
              final blob =
                  await rootBundle.load('assets/database/hello.sqlite');
              await file.writeAsBytes(blob.buffer.asUint8List());
            }))

I am not sure how to get pass to this error:
CDN: trunk Relative path: Specs/1/2/7/SQLCipher/4.4.2/SQLCipher.podspec.json exists! Returning local because checking is only perfomed in repo update
      CDN: trunk Relative path: Specs/1/2/7/SQLCipher/4.4.3/SQLCipher.podspec.json exists! Returning local because checking is only perfomed in repo update
    [!] CocoaPods could not find compatible versions for pod "SQLCipher":
      In Podfile:
        sqflite_sqlcipher (from `.symlinks/plugins/sqflite_sqlcipher/ios`) was resolved to 0.0.1, which depends on
          SQLCipher (= 4.4.2)
        sqlcipher_flutter_libs (from `.symlinks/plugins/sqlcipher_flutter_libs/ios`) was resolved to 0.0.1, which depends on
          SQLCipher (~> 4.4.3)

I would really appreciate your help. Thank you.
PS: I am Android developer and I am new to Flutter.

@akshaytaru2007 You should not depend on both encrypted_moor and sqclipher_flutter_libs as those are different implementations.
Of you want to use an EncryptedExecutor, drop the sqlcipher_flutter_libs dependency.

@akshaytaru2007 And about the pod install error you have, that happens sometimes.
You just need to run the following:
flutter clean and then delete the Podfile.lock file inside the iOS folder.
Then run the app as usual

@simolus3 Thanks a lot. It worked! I just removed the sqlcipher_flutter_libs. @davidmartos96  as soon as I removed the dependency, it build correctly. :)
Thank you for awesome library!


[DOC-9184][DOC-9197] Client certificate authentication and SCIM provisioning are GA

[DOC-9184] SCIM is GA for CC orgs
[DOC-9197] Client certificates for auth to Dedicated clusters are GA
Merge after https://github.com/cockroachlabs/managed-service/pull/15305 merges, the defaults are changed for the related feature flags, and updates to the UI are deployed. Date for the release note tentatively set to 2023-11-16.
Previews
releases/cloud.md
src/current/cockroachcloud/authentication.md
src/current/cockroachcloud/client-certs-dedicated.md
src/current/cockroachcloud/cloud-org-sso.md
src/current/cockroachcloud/configure-scim-provisioning.md
src/current/v23.1/hashicorp-integration.md
src/current/v23.1/security-reference/transport-layer-security.md
src/current/v23.2/hashicorp-integration.md
src/current/v23.2/security-reference/transport-layer-security.md

I don't really understand the build failure. 99% sure it is some kind of a false positive because I can't get it to happen locally and I didn't change most of the pages that are erroring, and the Feature Availability page hasn't moved. However, if you look at the page source and then look for feature-availability and look at the TOC entries, they all start with $VERSION instead of /docs/$VERSION and I wonder if that is a bug. cc/ @mikeCRL Please take a look.


Number formatting and negative sign

During implementation of jExcel in my project I'm facing two problems:

I have no mask on number column, and I can't type negative sign in a cell (number cell type)
How to remove trailing zeros from the value? For example:

1.000000-> 1 1.210000 -> 1.21

If you update jSuites you can use something like that: [-]#,##

You can =ROUND or you can use a method to round in JS.

mytable = jexcel(document.getElementById('spreadsheet'), {
data:data,
columns: [
{ type: 'text', title:'Car', width:120 },
{ type: 'numeric', title:'Price', width:100, mask:' #.##,00', decimal:'.' },
],
updateTable: function (instance, cell, col, row, val, label, cellName) {
if (col == 2) { cell.innerHTML = Math.round(val); }
}
});


cleanup, and swap elastic for opensearch

@quinnwai see
https://github.com/ACED-IDP/submission/blob/main/tests/integration/test_upload.py
Right now it is just a stub.   You could implement a click test runner.
See https://github.com/ACED-IDP/gen3_util/blob/feature/git/tests/integration/test_bucket_import.py#L46-L47


docker-machine create using digitalocean driver needs droplet reboot to start listening on 2376

I noticed that last week my deployment scripts stopped working. The main problems is:
docker-machine create "--driver" "digitalocean" [other driver settings] "droplet-name"
This errors with:
docker-machine : Error creating machine: Error running provisioning: Unable to verify the Docker daemon is
listening: Maximum number of retries (10) exceeded

This happens consistently. It seems to be because the docker host fails to listen on port 2376. I presume because docker does not start.
Rebooting the droplet after issuing docker-machine create forces docker to start listening on port 2376 and everything then works as normal, so I have added this workaround to my deployment scripts.

How do you restart your droplet whilst it is just in creation mode by the "docker-machine create" command.
Is it possible to share the snippet of this workaround? Thanks in advance

How do you restart your droplet whilst it is just in creation mode by the "docker-machine create" command.
Is it possible to share the snippet of this workaround? Thanks in advance

The full PowerShell script workaround:
docker-machine create $docker.driver $vms.web.name

$env:Path = "$($digitalOcean.bin);$($env:Path)"

$droplets = doctl compute droplet list $digitalOcean.auth | ConvertFrom-Json

$droplet = $droplets | Where-Object {$_.Name -eq $vms.web.name}

doctl compute droplet-action reboot $droplet.id $digitalOcean.auth

$ip = docker-machine ip $vms.web.name

do
{
    sleep 1
}
until(Test-NetConnection $ip -Port 2376 | ? { $_.TcpTestSucceeded })

Thanks. With your insights I decided to it manually.
1 -  reboot the droplet.
2 - run "docker-machine regenerate-certs machine-name"
About 2 months I need to execute the script again, by that time, I hope it is resolved :)

About 2 months I need to execute the script again, by that time, I hope it is resolved :)

Make sure to +1 the issue then!

For me I needed to restart the docker service.
Before the service wasn't listening in the network interface:
systemctl status docker.service
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
  Drop-In: /etc/systemd/system/docker.service.d
           └─10-machine.conf
   Active: active (running) since Mon 2021-01-11 16:38:43 UTC; 2min 24s ago
     Docs: https://docs.docker.com
 Main PID: 20707 (dockerd)
   CGroup: /system.slice/docker.service
           └─20707 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Jan 11 16:38:42 true dockerd[20707]: time="2021-01-11T16:38:42.849273393Z" level=warning msg="Your kernel does not support swap memory limit"
Jan 11 16:38:42 true dockerd[20707]: time="2021-01-11T16:38:42.849585773Z" level=warning msg="Your kernel does not support CPU realtime scheduler"
Jan 11 16:38:42 true dockerd[20707]: time="2021-01-11T16:38:42.850137298Z" level=info msg="Loading containers: start."
Jan 11 16:38:42 true dockerd[20707]: time="2021-01-11T16:38:42.976737533Z" level=info msg="Default bridge (docker0) is assigned with an IP address <IP_ADDRESS>/16. Daemon option --bip can be used to set a prefe
Jan 11 16:38:43 true dockerd[20707]: time="2021-01-11T16:38:43.021144594Z" level=info msg="Loading containers: done."
Jan 11 16:38:43 true dockerd[20707]: time="2021-01-11T16:38:43.065147486Z" level=info msg="Docker daemon" commit=8891c58 graphdriver(s)=overlay2 version=20.10.2
Jan 11 16:38:43 true dockerd[20707]: time="2021-01-11T16:38:43.065334208Z" level=info msg="Daemon has completed initialization"
Jan 11 16:38:43 true systemd[1]: Started Docker Application Container Engine.
Jan 11 16:38:43 true dockerd[20707]: time="2021-01-11T16:38:43.097588922Z" level=info msg="API listen on /var/run/docker.sock"
Jan 11 16:38:46 true systemd[1]: Started Docker Application Container Engine.

After restarting docker.service it listen to <IP_ADDRESS>:2376 and the daemon can be contacted by docker-machine:
systemctl restart docker.service

systemctl status docker.service
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
  Drop-In: /etc/systemd/system/docker.service.d
           └─10-machine.conf
   Active: active (running) since Mon 2021-01-11 16:41:18 UTC; 2s ago
     Docs: https://docs.docker.com
 Main PID: 21666 (dockerd)
    Tasks: 12
   Memory: 41.1M
      CPU: 438ms
   CGroup: /system.slice/docker.service
           └─21666 /usr/bin/dockerd -H tcp://<IP_ADDRESS>:2376 -H unix:///var/run/docker.sock --storage-driver overlay2 --tlsverify --tlscacert /etc/docker/ca.pem --tlscert /etc/docker/server.pem --tlskey /etc/doc

Jan 11 16:41:18 true dockerd[21666]: time="2021-01-11T16:41:18.302975014Z" level=warning msg="Your kernel does not support swap memory limit"
Jan 11 16:41:18 true dockerd[21666]: time="2021-01-11T16:41:18.303558253Z" level=warning msg="Your kernel does not support CPU realtime scheduler"
Jan 11 16:41:18 true dockerd[21666]: time="2021-01-11T16:41:18.304190321Z" level=info msg="Loading containers: start."
Jan 11 16:41:18 true dockerd[21666]: time="2021-01-11T16:41:18.483956848Z" level=info msg="Default bridge (docker0) is assigned with an IP address <IP_ADDRESS>/16. Daemon option --bip can be used to set a prefe
Jan 11 16:41:18 true dockerd[21666]: time="2021-01-11T16:41:18.528351736Z" level=info msg="Loading containers: done."
Jan 11 16:41:18 true dockerd[21666]: time="2021-01-11T16:41:18.564827725Z" level=info msg="Docker daemon" commit=8891c58 graphdriver(s)=overlay2 version=20.10.2
Jan 11 16:41:18 true dockerd[21666]: time="2021-01-11T16:41:18.564977429Z" level=info msg="Daemon has completed initialization"
Jan 11 16:41:18 true systemd[1]: Started Docker Application Container Engine.
Jan 11 16:41:18 true dockerd[21666]: time="2021-01-11T16:41:18.607117310Z" level=info msg="API listen on [::]:2376"
Jan 11 16:41:18 true dockerd[21666]: time="2021-01-11T16:41:18.617467835Z" level=info msg="API listen on /var/run/docker.sock"

For me I needed to restart the docker service.
Before the service wasn't listening in the network interface:
systemctl status docker.service
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
  Drop-In: /etc/systemd/system/docker.service.d
           └─10-machine.conf
   Active: active (running) since Mon 2021-01-11 16:38:43 UTC; 2min 24s ago
     Docs: https://docs.docker.com
 Main PID: 20707 (dockerd)
   CGroup: /system.slice/docker.service
           └─20707 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Jan 11 16:38:42 true dockerd[20707]: time="2021-01-11T16:38:42.849273393Z" level=warning msg="Your kernel does not support swap memory limit"
Jan 11 16:38:42 true dockerd[20707]: time="2021-01-11T16:38:42.849585773Z" level=warning msg="Your kernel does not support CPU realtime scheduler"
Jan 11 16:38:42 true dockerd[20707]: time="2021-01-11T16:38:42.850137298Z" level=info msg="Loading containers: start."
Jan 11 16:38:42 true dockerd[20707]: time="2021-01-11T16:38:42.976737533Z" level=info msg="Default bridge (docker0) is assigned with an IP address <IP_ADDRESS>/16. Daemon option --bip can be used to set a prefe
Jan 11 16:38:43 true dockerd[20707]: time="2021-01-11T16:38:43.021144594Z" level=info msg="Loading containers: done."
Jan 11 16:38:43 true dockerd[20707]: time="2021-01-11T16:38:43.065147486Z" level=info msg="Docker daemon" commit=8891c58 graphdriver(s)=overlay2 version=20.10.2
Jan 11 16:38:43 true dockerd[20707]: time="2021-01-11T16:38:43.065334208Z" level=info msg="Daemon has completed initialization"
Jan 11 16:38:43 true systemd[1]: Started Docker Application Container Engine.
Jan 11 16:38:43 true dockerd[20707]: time="2021-01-11T16:38:43.097588922Z" level=info msg="API listen on /var/run/docker.sock"
Jan 11 16:38:46 true systemd[1]: Started Docker Application Container Engine.

After restarting docker.service it listen to <IP_ADDRESS>:2376 and the daemon can be contacted by docker-machine:
systemctl restart docker.service

systemctl status docker.service
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
  Drop-In: /etc/systemd/system/docker.service.d
           └─10-machine.conf
   Active: active (running) since Mon 2021-01-11 16:41:18 UTC; 2s ago
     Docs: https://docs.docker.com
 Main PID: 21666 (dockerd)
    Tasks: 12
   Memory: 41.1M
      CPU: 438ms
   CGroup: /system.slice/docker.service
           └─21666 /usr/bin/dockerd -H tcp://<IP_ADDRESS>:2376 -H unix:///var/run/docker.sock --storage-driver overlay2 --tlsverify --tlscacert /etc/docker/ca.pem --tlscert /etc/docker/server.pem --tlskey /etc/doc

Jan 11 16:41:18 true dockerd[21666]: time="2021-01-11T16:41:18.302975014Z" level=warning msg="Your kernel does not support swap memory limit"
Jan 11 16:41:18 true dockerd[21666]: time="2021-01-11T16:41:18.303558253Z" level=warning msg="Your kernel does not support CPU realtime scheduler"
Jan 11 16:41:18 true dockerd[21666]: time="2021-01-11T16:41:18.304190321Z" level=info msg="Loading containers: start."
Jan 11 16:41:18 true dockerd[21666]: time="2021-01-11T16:41:18.483956848Z" level=info msg="Default bridge (docker0) is assigned with an IP address <IP_ADDRESS>/16. Daemon option --bip can be used to set a prefe
Jan 11 16:41:18 true dockerd[21666]: time="2021-01-11T16:41:18.528351736Z" level=info msg="Loading containers: done."
Jan 11 16:41:18 true dockerd[21666]: time="2021-01-11T16:41:18.564827725Z" level=info msg="Docker daemon" commit=8891c58 graphdriver(s)=overlay2 version=20.10.2
Jan 11 16:41:18 true dockerd[21666]: time="2021-01-11T16:41:18.564977429Z" level=info msg="Daemon has completed initialization"
Jan 11 16:41:18 true systemd[1]: Started Docker Application Container Engine.
Jan 11 16:41:18 true dockerd[21666]: time="2021-01-11T16:41:18.607117310Z" level=info msg="API listen on [::]:2376"
Jan 11 16:41:18 true dockerd[21666]: time="2021-01-11T16:41:18.617467835Z" level=info msg="API listen on /var/run/docker.sock"

This seems to be the same problem than #4858.

This seems to be the same problem than #4858.


Need more opportunities to share/save to gallery for tutorial cards

If classes only get through one game, they still need to be able to share with teachers.
They also should be allowed to build on it from their gallery in whatever way they are inspired to.
We’re going to at least need sharing/save to gallery at the end of each game, but a manual trigger would be helpful, too.
P.S.  All of the content was written believing students already had the option to share and save at the end of each game, so if we can't implement, I'll need to go through each card and remove the prompts to do so.

Duplicate of https://github.com/microsoft/pxt-arcade/issues/3063


[Bug]: The data source is exported after configuring the SYS user. The user permissions are incorrect.

ODC version
ODC4.2.3
OB version
independent
What happened?
The data source is exported after configuring the SYS user. The user permissions are incorrect.

What did you expect to happen?
The data source is exported after configuring the SYS user. can export normally
How can we reproduce it (as minimally and precisely as possible)?
create datasource
configuring  the sys
Anything else we need to know?
No response
Cloud
No response

pass


Revisit the biomass equation

All of the gap filling is based on the biomass components from the standard gram-negative equation, so we may be gap filling for nothing if those components aren't really there.

Looked at the Biomass components for P. simiae (gram-negative) on KBase.
Daniel is worried about apo-ACP, unsure why it is in the equation.

Just to understand central carbon metabolism and nitrogen metabolism it may be enough to simplify the biomass reaction to amino acids and cofactors we know are there, it may make the model much simpler, but that may be fine.

Daniel says not to use the core model biomass reaction, that is too small.

Instead of making a new biomass reaction, gap fill when maximizing for each biomass component individually (the way we check for blocked biomass components).

Daniel said to make a table of the biomass components and compare to the other tables that Daniel has for other organisms and to the KBase core biomass.

Related existing issues:

#36
#51
#37

Other ideas:

Look at the data from "Integration of Biomass Formulations of Genome-Scale Metabolic Models with Experimental Data Reveals Universally Essential Cofactors in Prokaryotes"

Made a new issue for it: #67

Check biomass component producibility before and after adding Michelle's reactions

Made a new issue for it: #68


improve CI to test against multiple Docker versions

We test docker-client in CircleCI against Docker 1.8 (IIRC, that is the oldest version that is available) but for unrelated and uninteresting reasons we use Docker 1.6 internally at Spotify. So after merging PRs from contributors into the project that work fine in 1.8, we find subtle test failures when we try to build the project (in order to release to Maven Central) on our internal Jenkins.
I'd like to explore soon if it is possible to have a CI solution that can do a matrix build of docker-client against several versions of docker, to try and catch these issues at submission time, rather than release time. I think it would be a lot easier for us as maintainers but also better for contributors also (to be able to tell you that your change breaks on docker 1.7 and 1.8 but works on 1.9, for example).
Alternatively we could run our Jenkins here at Spotify on something > 1.6, but since we are still using that version in production it is important to us to make sure that docker-client is well-tested for 1.6.

Travis supports Docker now but doesn't appear that you can choose the version.

One other idea would be to build PRs from contributors on our internal Jenkins, using the Github PR builder plugin (which asks admins to approve testing of each PR to make sure they are not malicious).

How to install Docker 1.6 or 1.7 on Circle: https://discuss.circleci.com/t/how-use-a-different-docker-version/298/7
1.9: https://discuss.circleci.com/t/docker-1-9-1-is-available/1009
1.10 beta: https://discuss.circleci.com/t/docker-1-10-0-is-available-beta/2100

Do you want someone (you, me, anyone else) to file issues for all the failures happening over on #389?

@johnflavin yeah I think that is a fine approach, or a PR that fixes an issue at the same time is fine too. I am going to close this particular issue since we now have a CI solution for Github PRs that tests on > 1 docker version.

It's good to start addressing this issue. I also wouldn't mind seeing support for, say 2 or 3 previous versions. Generally I don't see checks being contributed when functionality is changed from one version of the docker Remote API to another so that breaks compatibility.
I know that the Remote API has a way to specify what version you expect in response, but it seems versioning isn't really supported for all fields, nor is it clear what fields are versioned (https://github.com/docker/docker/issues/14524) .

@rgrunber are there specific versions would you like to see support for?

No specific version. I just mean that at the point of a release for docker-client it should support the same version of docker that is out, and 1 or 2 of the previous ones. At least this way, people who cannot adopt the latest version of docker immediately are still able to use the library against a slightly older version.
It might make contributions a little trickier as people might have a change that works great against the latest docker but don't have much interest in polishing it up and making it behave with older versions.

I would like to have Travis test against 1.6 through whatever is current. Right now it does 1.6 and 1.8.2 (I think, or another 1.8.x), but just because I haven't had a chance to hunt down why some tests fail on the other versions I introduced in #389


HTTP Device - Echo - "[device] isn't respondig"

Bridge is setup, Echo discovers all HTTP devices on RASP PI.
Actioning the HTTP devices through browser like:  http://rasp:8888/group_3_down works just fine. The HTTP server request closes with an HTTP 200 OK.  All fine too when I hit the button in the HA-Bridge console app (!)
Now if i user the bridge using the Echo - the call is being made twice, and Echo responds  "[device] isn't respondig".
That is weird, help?
[{"id":"1","uniqueid":"00:17:88:5E:D3:01-01","name":"Master Bedroom Shade","mapType":"httpDevice","deviceType":"custom","offUrl":"[{"item":"http://localhost:8888/group_3_down\",\"type\":\"httpDevice\",\"httpVerb\":\"GET\",\"contentType\":\"*/*\",\"delay\":\"0\",\"count\":\"0\"}]","onUrl":"[{\"item\":\"http://localhost:8888/group_3_up\",\"type\":\"httpDevice\",\"httpVerb\":\"GET\",\"contentType\":\"*/*\",\"delay\":\"0\",\"count\":\"0\"}]","inactive":false,"noState":false,"offState":false,"deviceState":{"on":false,"bri":0,"hue":0,"sat":0,"effect":"none","ct":0,"alert":"none","reachable":true}}

The configuration looks fine. Would need you to turn on debugging and post log to help find the cause. https://github.com/bwssytems/ha-bridge#the-logs-tab

It looks like HTTPHome.deviceHandler expects a non-null response from the API. The API I was calling from HA Bridge returns a 204 (no content) with a null entity on success, so while the action was successful the Echo thinks it's failed based on the response from HA Bridge. I just modified my API to return the String "SUCCESS" on success, and now it plays well together.
I think most of the smart home APIs return some kind of status when you change something, so I could see an argument that a null response means something has gone wrong. It doesn't look like HA Bridge actually needs to do anything with the response though, so if HTTPHandler threw an exception if it got too many non-200 responses and ran out of retries then HTTPHome could look for that, and return success if it doesn't get one. If this seems reasonable I can submit a pull request.
Here's a section of my logs that covers the problem:
09-17-2017 20:59:25.005 | DEBUG | executing HUE api request to Http PUT: http://<IP_ADDRESS>:9089/api/lights/10/state | com.bwssystems.HABridge.plugins.http.HTTPHome
-- | -- | -- | --
09-17-2017 20:59:25.005 | DEBUG | doHttpRequest with url: http://<IP_ADDRESS>:9089/api/lights/10/state with http command: PUT with body: {"on":false} | com.bwssystems.HABridge.plugins.http.HTTPHandler
09-17-2017 20:59:25.005 | DEBUG | Making outbound call in doHttpRequest: <<<PUT http://<IP_ADDRESS>:9089/api/lights/10/state HTTP/1.1>>> | com.bwssystems.HABridge.plugins.http.HTTPHandler
09-17-2017 20:59:25.029 | DEBUG | PUT execute (0) on URL responded: 204 | com.bwssystems.HABridge.plugins.http.HTTPHandler
09-17-2017 20:59:25.029 | DEBUG | Successfull response - The http response is <<<null>>> | com.bwssystems.HABridge.plugins.http.HTTPHandler
09-17-2017 20:59:25.029 | WARN | Error on calling url to change device state: http://<IP_ADDRESS>:9089/api/lights/10/state | com.bwssystems.HABridge.plugins.http.HTTPHome

any update on this?


⚠ Bofrost.lu has degraded performance

In 12fdfd5, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 1741 ms

Resolved: Bofrost.lu performance has improved in aaca9ef.


Feat: use new logo on the app

@vpchung Where can we find the logo? I would like to use it for GitHub teams.

Stockard sent it over Jira in the ticket!


Cannot play if cannot drag-and-drop datapack to minecraft window

I'm on linux, so that's probably the reason why drag and drop for minecraft doesn't work. Where can I put this datapack manually?
Possible solutions (from my pov)

add a button "Select datapack file" (with opening system's file selector)
pick datapack from .minecraft/datapacks folder

I would like to know which file caused the problem?
Do you have drag and drop missing in your system?
Is the Minecraft window not responding after drag and drop?
Retry it please with disabled full screen mode.
You can manually put the file named bacap.zip (the correct name is required) to .minecraft/datapacks directory.  The mod does the same thing.
Thanks for suggestion, "Select datapack file" button will be added in 1.3 update

which file caused the problem?

BlazeandCave's Advancements Pack 1.16.3.zip from modrinth (currently modrinth not work), but it seems that neither file will work

Do you have drag and drop missing in your system?

No, drag and drop works, for example, from dolphin to browser

Is the Minecraft window not responding after drag and drop?

No, just nothing happens, I can still click "Cancel" button

Retry it please with disabled full screen mode.

Same in both modes

The mod does the same thing.

I couldn't find mod, only datapack :cry: (at least on modrinth)

from modrinth

The game checks the SHA1 of the file to be downloaded, so you should click the "Download" button which will open the required file download page

sha-1 checks when you put file via drag and drop. If you put named file manually then sha-1 check skipped

btw ATD 1.2 is developed and supported for BACAP 1.16.2, so I not recommend to use BACAP 1.16.3 (it will be coming in ATD 1.3).

load these datapacks automatically

Unfortunately the owner of BACAP has a very strict license, so I don't want to risk it

I believe that I can add automatic loading but only for main datapack (because owner of BACAP published it on Modrinth), but his other datapacks can still only be downloaded from PMC.

Ok, I did it and it will in ATD 1.3:


Pro Nautical Miles Unit label not showing in feature label

In Pro the Nautical Miles Unit portion of the label is not showing in the feature's label.
This is because the feature's unit is "NauticalMiles" (no space) vs. "Nautical Miles" (space) as noted in issue #608

Addressed in PR #610 by removing space from NauticalMiles in label expressions of DistanceAndDirection layers
After change should look like:

This is fixed and has been tested in 2.2:

n.m. is not a symbol for nautical mile. They symbol for nautical mile is M, NM, or nmi
Removing the verified label, and adding back development and qc (manual).

Change made in PR #615
Should look like this with PR - layer label expression change highlighted below:

Verified on build 20 of DD. Can test from MT build when it finishes.


Create Release with filtfilt function

I have seen that @markert included pull request #21 into the master branch. I installed fili by running npm install fili but the function filtfilt is not yet included in the release version 2.0.1.
Is it possible to create a new release with this feature included?

Done.


WIP: Querying issues

added metrics
restructured code
benchmark tool changed to spam perl clicker smart contract invocation (to run it requires to spawn it first)

NOTE: proper benchmark to invoke smart contract and run bunch of calls to it maybe added later

#161

Closing as this PR has been split into two separate PRs.


optimized translation index.md

improved readability. Corrected some web translation mistakes

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the master branch of freeCodeCamp.
[x] None of my changes are plagiarized from another source without proper attribution.
[x] My article does not contain shortened URLs or affiliate links.

If your pull request closes a GitHub issue, replace the XXXXX below with the issue number.
Closes #XXXXX

@zd6  thank you for your contribution!


Added instance Typeable Naming

Why do you need this instance? Data.Typeable has been replaced by Type.Reflection for a long time ago. Legacy requirement?

Since GHC 7.10 Typeable instances are automatically discharged by the compiler and any manual deriving is simply ignored. So, I don't think this addition will be useful.

This was a wild red herring chase.


Voice assistant support

This is outside of the scope of this project, but I was wondering if anyone managed to get Alexa or other voice assistant to return the data about the upcoming busses using this sensor. I have the sensor and voice assistant exposed to each other. I am just missing the phrase that would activate it

Any suggestion on how and what is needed? I have no insights into if a sensor value could be used? Anyone

I found a way to make it work! This code only works with one bus, in my case I will set it to 999, you can change the bus number in the script
service: tts.speak
target:
  entity_id: tts.google_en_com
data:
  message: >
    {% set departures = state_attr('sensor.sl_departure_sensor',
    'departures') | selectattr('line', 'equalto', '999') | list %} {% if
    departures %}
      {% set next_departure = departures[0] %}
      {% set departure_time = next_departure.expected %}
      {% set departure_datetime = departure_time %}
      {% set now = now().replace(tzinfo=None) %}
      {% set minutes_until_departure = int(((departure_datetime - now).total_seconds() // 60)) %}
      leaves in {{ minutes_until_departure }} minutes to {{ next_departure.destination }} number 999.
    {% else %}
      No line 999 bus departures found.
    {% endif %}
  media_player_entity_id: media_player.dining_room
  cache: true
  language: en


Editing BLOB values in separate editor doesn't save changes

System information:

Operating system (distribution) and version Win 10
DBeaver version 21.1.4
Maria DB

Steps to reproduce, if exist:

Press Shift + Enter on a BLOB value
Add something in hex editor and save changes
Try to save changes in data grid

Expected: Changes can be saved
Actual: Data grid doesn't show any changes and can't be saved

#12614


Statuses for withdrawn candidates

What's included?
Updates to store/application.js so that a check for an accompanying applicationRecord can be accessed and used when withdrawing an application from the application view.
Using this, the button now updates the withdrawn status to both if both exist, if not, only the application status is updated.
How to test?
Withdraw an application from an application view. Ensure that the status is updated and reflected in all application lists.
Risk - how likely is this to impact other areas?
🟢 No risk - this is a self-contained piece of work
Additional context

PREVIEW:DEVELOP
can be OFF, DEVELOP or STAGING

Looking good, Mr T! I note there are still a few candidates on 184 with a blank status column. Once you've addressed, I'll be happy to approve the ticket :-)


Fix --min-runtime parsing

The documentation says it should be able to handle a number of formats (default values for all of WwDdHhMm plus an unadorned value to designate minutes) but it does not - it seems to be a chrono::Duration that only handles the 'm' suffix?  This is pretty brittle.

Mostly this is OK actually, it's just missing test cases and documentaiton.


docs(kic): update prometheus labels for KIC 2.9.x

Description
Update prometheus labels for KIC 2.9.x to account for https://github.com/Kong/kubernetes-ingress-controller/pull/3521
This also prunes some trailing whitespace in the changed doc.
Closes https://github.com/Kong/kubernetes-ingress-controller/issues/3417
Checklist

[x] Review label added
[x] PR pointed to correct branch (main for immediate publishing, or a release branch: e.g. release/gateway-3.2, release/deck-1.17)

@acgoldsmith Can we get this merged? The conditional formatting allows us to merge this before KIC's 2.9 release


Relationship Field > Link to Globals

This is currently not supported, but seems like a bit of an oversight, since Globals appear to be what should be used for one-off data (i.e. a contact page with specific fields).
If for example you’d like to have some sort of a menu builder, it’d be crucial to pull in globals as an option in a relationship field.
There is already a related discussion here, though it seems stagnant: https://github.com/payloadcms/payload/discussions/2100.
Not sure how complicated this would be, but would be great if this could land with Payload V3.

https://github.com/payloadcms/payload/discussions/4650
Another related discusssion pointing out alot of the caveats that come with bending a “page” collection to include different sets of data.

Hey @robinscholz - had a discussion about this with the team and while we see the potential benefits, we’re not currently planning to add support for referencing globals in relationship fields in the immediate roadmap.
The discussion you linked does dive into a few workarounds, which may help in some cases.
However, we completely understand the desire for flexibility and how this feature can extend that. So, while it’s not at the top of our priority list at the moment, we’d definitely welcome community PRs if this is something you’d like to explore further. And though there are no concrete plans for this at the moment, we're open to revisiting this down the line!
Thanks again for the feedback!


Not able to use flavor options with Flutter logs command

Steps to reproduce
I have an app which has multiple flavors. But when i was running Flutter logs command, It is not running throwing error as below.

The Xcode project defines schemes: dev, prd
You must specify a --flavor option to select one of the available schemes.

But when i tried to pass flutter logs --flavor dev, it is throwing error as below

Could not find an option named "flavor".

Expected results
It should start logging.
Actual results
It is throwing error and not running.
Code sample
flutter logs --flavor dev
Screenshots or Video
No response
Logs
Logs
Could not find an option named "flavor".

Flutter Doctor output
Doctor output
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.24.2, on macOS 14.6.1 23G93 darwin-arm64, locale
    en-IN)
[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 16.0)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2022.3)
[✓] VS Code (version 1.93.1)
[✓] Connected device (5 available)
[✓] Network resources

• No issues found!```

</details>

@dishankjindal1
I am not sure if flutter logs command supports flavor flag yet. See the help section for flutter logs which doesn't contain flavor flag:

unlike, flutter run which does support flavor as shown below:

So this seems to be a current limitation that you are facing.


Provide initial Docker support

This provides a Dockerfile and initial usage documentation to run the SteamDatabaseBackend in a Docker container. This simplifies the initial setup and makes it simpler for someone to spin up their own instance.
As a use-case example, when running a local steamcache instance, the access logs will contain in the URL the depot ID being requested by a client. By being able to resolve these to depot names, and resolve a depot ID to an AppID, the cache maintainer can better manage content and shout at people at LAN parties downloading single player games.

While nice, we have no need for Docker configuration to exist in the repo.


Connection problems during background mode.

Quirks using background mode.

after background mode for certian amount of minutes
-- The long running connections no longer response ACK even tho connection is opened.
-- If cordova's keepRunning is set to false in config.xml , the timers are no longer ran as soon as background is activated
Going back to forground
-- the app send back acks to TCP connections , resulting in buckets of packets to be transffered back to the client.

I have tried restarting the SSE Connection.
Tested on XiaoMi Max , Every connection attempts at background mode fails with DNS Error , popping console and running xhr request also results in same error. seems xiaomi disable network connections for background process totally , i am not sure what other phones does.

Hello @v3ss0n Yes it may be related to XiaoMi and I dont have one. What happens if you test with another phone like Samsung?

Hi I'm have the same problem with webSocket.
tested on a samsung .

I also have the same issues with WebSocket. any hope?


[MRG] add .coveragerc to exclude externals

Follow-up to #281 : excluding externals (and tests) from coverage report illustrates where we should focus attention to (e.g. viz.py is trailing behind the rest...).

Codecov Report

Merging #282 (8f25a3a) into master (c79156e) will increase coverage by 0.42%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master     #282      +/-   ##
==========================================
+ Coverage   89.65%   90.07%   +0.42%
==========================================
  Files          25       14      -11
  Lines        3151     2136    -1015
==========================================
- Hits         2825     1924     -901
+ Misses        326      212     -114

Impacted Files
Coverage Δ

hnn_core/tests/test_drives.py

hnn_core/externals/mne.py

hnn_core/tests/test_viz.py

hnn_core/tests/conftest.py

hnn_core/tests/test_dipole.py

hnn_core/tests/test_cell.py

hnn_core/tests/test_params.py

hnn_core/tests/test_mpi_child.py

hnn_core/tests/test_feed.py

hnn_core/tests/test_parallel_backends.py

... and 1 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update c79156e...8f25a3a. Read the comment docs.

Inspired, I improved the coverage of viz.py ;) a89a6f9 should be cherry-picked regardless of the fate of this PR!

Perfect, thanks @cjayb . Now you know how to get fast merges ;-)


Rename new keywords

Summary of changes (Bug fix, feature, docs update, ...)
Three changes made to the if_exists and save_current keywords

Update save_current to use "auto", "y", "n" (rather than None, True, False) as more descriptive
Update if_exists to use "auto" (rather than "default") as the base case - more in line with other tools which have automatic behaviour based on logic
Update if_exists to use "combine" (rather than "replace") - this is hopefully more descriptive of what this does.

Please check if the PR fulfills these requirements

[x] Ran black and flake8 over relevant files
Currently unable to successfully run tests as branched from Iss561/addZarrStore and this didn't have all the necessary sub-modules for the tests to run.

No, all good, feel free to merge it.


feat: :construction_worker: add gtests to ctest

Adds support for ctest by adding gtest_discover_tests to all of the CMakeLists.txt files. This allows one to use colcon test --ctest-args .... I have been using this a lot to filter tests so I thought I'd share it case others want to use it.

As an FYI, I discovered that this results in a slowdown of running the tests. Probably not a big deal when run tests once, but if using with an colcon retest flags or looping manually, you'll notice. I created an issue at colcon/colcon-cmake#120.

I'm a little reluctant about adding this change. I think the majority of users won't use ctest to filter their tests, but rather call the test binary directly.
At the same time I'm worried about the extra amount of code in the cmake + the explicit gtest imports... I suggest we close this PR instead of merging

I'm a little reluctant about adding this change. I think the majority of users won't use ctest to filter their tests, but rather call the test binary directly.
At the same time I'm worried about the extra amount of code in the cmake + the explicit gtest imports... I suggest we close this PR instead of merging

That's fine. I just thought I'd offer it as I used it a lot in debugging #263. It's really mostly useful if you want the tests to show up independently with colcon test.