Specify permitted next nodes for all flows

This supersedes PR #2002.
Trello card - https://trello.com/c/jtjRNOW9/97-update-all-flows-to-use-permitted-next-nodes
Based on feedback from @floehopper, I've added the permitted named option to Question::Base#next_node.
I've updated all flows that use next_node with a block to additionally supply the permitted next nodes.
I've updated Question::Base#next_node to raise an exception if it's called with a block but the permitted next nodes aren't specified.
I've updated Question::Base#next_node_for to raise an exception if the next_node isn't found in the list of permitted_next_nodes.
NOTE. Using next_node :symbol or next_node_if automatically add the nodes to permitted_next_nodes so I've only updated the flows/questions that use next_node with a block.
The advantage of using permitted_next_nodes is that it allows us to visualise the flows.
Visualising additional-commodity-code
Before

After

Looks good to me. Maybe we should run all the regression tests before deploying these changes.

Maybe we should run all the regression tests before deploying these changes.

Good shout! This caught some problems in my changes to benefit-cap-calculator. I've fixed the changes and force pushed.

The regression tests have all passed locally so I'm going to get this merged to master!


chore: update script for sdk versioning

part of MBL-635
Changes

Modified update-version script to adjust only Flutter version in pubspec without updating the native iOS SDK version
Updated update-version script to align Android SDK source version with Flutter version
Refactored repetitive script code into a function within update-version and removed the redundant update-plugin script
Added Android SDK source file to .releaserc.json to ensure it is committed with releases

Release Checklist for Updating SDK Version

[x] sd is installed in deploy workflow
[x] Expected files update correctly
[x] All updated files are included in .releaserc.json

Script Output (Locally Tested)
./scripts/update-version.sh "2.0.0"

Before Changes
Updating files to new version: 2.0.0
Updating pubspec.yaml
Check file, you should see version inside has been updated!
Now, updating plugin....
Updating files to new version: 2.0.0
Updating customer_io_plugin_version.dart
Check file, you should see version inside has been updated!

After Changes
Starting version update to: 2.0.0

Updating version in pubspec.yaml...
Done! Showing changes in pubspec.yaml:
diff --git a/pubspec.yaml b/pubspec.yaml
index d91304d..27868f6 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,6 +1,6 @@
 name: customer_io
 description: An official flutter plugin for Customer.io, an automated messaging platform for tech-savvy marketers.
-version: 1.5.2
+version: 2.0.0
 homepage: https://customer.io
 repository: https://github.com/customerio/customerio-flutter

Updating version in ./lib/customer_io_plugin_version.dart...
Done! Showing changes in ./lib/customer_io_plugin_version.dart:
diff --git a/lib/customer_io_plugin_version.dart b/lib/customer_io_plugin_version.dart
index 98d7f0f..e691fbf 100755
--- a/lib/customer_io_plugin_version.dart
+++ b/lib/customer_io_plugin_version.dart
@@ -1,2 +1,2 @@
 // Don't modify this line - it's automatically updated
-const version = "1.5.2";
+const version = "2.0.0";

Updating version in android/src/main/res/values/customer_io_config.xml...
Done! Showing changes in android/src/main/res/values/customer_io_config.xml:
diff --git a/android/src/main/res/values/customer_io_config.xml b/android/src/main/res/values/customer_io_config.xml
index 20b8417..325d399 100644
--- a/android/src/main/res/values/customer_io_config.xml
+++ b/android/src/main/res/values/customer_io_config.xml
@@ -9,5 +9,5 @@
     This will be updated by update-version script with Flutter package version
     whenever new version of Flutter package is released
     -->
-    <string name="customer_io_wrapper_sdk_client_version">1.5.2</string>
+    <string name="customer_io_wrapper_sdk_client_version">2.0.0</string>
 </resources>

Version update complete for targeted files.

@Shahroz16 I've tried to verify all the necessary changes, but please make sure to double-check any additional adjustments needed for this in the release 😅

@Shahroz16 Sounds good. Let's continue the discussion on Slack to explore more options to test this better.


Incoming props changing quickly can cause an incorrect displayValue to be set

I'm running into an issue where the underlying Rating component's state.displayValue is getting updated incorrectly.
Here is a Codepen demonstrating the problem: https://codepen.io/joekrill/pen/NyeKpL
Note that hovering an icon momentarily, then moving the mouse out of the component completely continues to show the last hovered item instead of reverting back to the current value. This can vary a bit depending on how quickly the mouse is moved - if you're not seeing this behaviour try moving the mouse more slowly. Here's a gif of what I'm seeing (I'm not clicking anything at all here, just moving the mouse):

This only seems to happen in some very specific scenarios. For example, doing any of the following will cause things to work "as expected":

Not setting the initialRating prop, or setting it to zero (0)
Not setting fullSymbol and emptySymbol props, or setting them to a string, or even precreating their components.
Removing the code that shows the "hoveredRating" value separately.

Ultimately I think the problem is that in the Rating component's componentWillReceiveProps method, setState is called by passing a new state object directly, and is using a reference to the current state (this.state.displayValue, in this particular case, line 5 below):
componentWillReceiveProps(nextProps) {
    const valueChanged = this.props.value !== nextProps.value;
    this.setState({
      dirty: valueChanged || this.state.dirty,
      displayValue: valueChanged ? nextProps.value : this.state.displayValue
    });
  }

However, per the the React docs, setState calls of this type are asynchronous and may be batched together. In this particular case, this can cause this.state.displayValue to be set based on an out-of-date previous displayValue. Which is why it is recommended that the updater function form of setState be used instead. So this should really be:
componentWillReceiveProps(nextProps) {
    const valueChanged = this.props.value !== nextProps.value;
    this.setState((prevState) => ({
      dirty: valueChanged || prevState.dirty,
      displayValue: valueChanged ? nextProps.value : prevState.displayValue
    }));
  }

And indeed that seems to fix the problem in my testing.
So I think when props are changed in a certain way that causes componentWillReceiveProps to get called very soon after onMouseLeave, the setState calls get batched causing the wrong displayValue to get calculated.
I'm still a little confused as to why exactly it is that certain things - like not setting initialRating - prevent the problem.  But that doesn't really change the fact that this setState call should be using an updater function since it's setting the new state based on the previous state. So I'll put up a PR for that at least.

I can see your codepen demonstrating this behavior. I have even tried your same codepen removing the initialRating and/or the fullSymbol/emptySymbol  and, as you say, it surprisingly works as expected! It's really weird...
The first thing I have done is just fork your codepen and try to create a regular wrapped component (without recompose): https://codepen.io/anon/pen/RQEmWG?editors=0011
Could you check I did it right? I mean, if this codepen corresponds to yours but without the recompose library?
I was trying to reduce it to its bare bones to help me figure out what was really causing this weird effect, but you know what? I cannot reproduce it 😅.

However, per the the React docs, setState calls of this type are asynchronous and may be batched together. In this particular case, this can cause this.state.displayValue to be set based on an out-of-date previous displayValue.

That is definitely an error in the code, nice catch. I will take a look at the other things later tonight if I find the time.

@dreyescat Yes that's the same. I only used recompose because that's what we've been using and I wanted to make sure I could reproduce it correctly. But I'm actually seeing the same (unexpected) behavior with your barebones codepen, so it's even weirder that you are not.

@joekrill My fault! You are completely right. I see the same unexpected behavior in my version.

@dreyescat Oh good. It's a little finicky, too, depending on how quickly the mouse cursor moves, so maybe that's what was causing the confusion.
And thanks so much for getting this merged and updated no npm so quickly!


Installation trouble

Hi,
I've done the first two steps of the installation (using npm) process, but I'm unsure as to how the third and fourth steps should work.
Do I have to add jtt_footballdata to the app.module.ts as a dependency? If so, then what should I use as the import statement?
Also, do I have to include a path to the js file in my .angular-cli.json file in the script array?

hi @ZeroDarkThirty
this is a angular 1.x repo
you can't use it in angular 2 or angular 4 project

Oh I see. Any idea on how to make football-data api calls using angular 2/4?

you can do the api calls directly

I haven't worked with external API in Angular before but I'm trying to figure it out. In my service I have this so far:
export class FootballService {
  private _url: string = "http://api.football-data.org/v1/competitions/426/leagueTable";
  constructor(private _http: Http) { }

  getLeagueTable(){
    return this._http.get(this._url)
            .map((res: Response) => res.json());
  }
}

Not sure if I'm on the right track or where the X-Auth-Token should go.
And in the component:
ngOnInit() {
    this._footyService.getTeamName()
      .subscribe(res => this.league = res); //league is an array
  }

sorry I have no time to help you here


Jupyter Notebook cells hang forever in VSCode

Update
VSCode jupyter notebooks work locally. It is an issue on the remote server.
Environment data

VS Code version: 1.84.2
Jupyter Extension version (available under the Extensions sidebar): v2023.10.1003070148
Python Extension version (available under the Extensions sidebar): v2023.20.0
OS (Windows | Mac | Linux distro) and version: laptop is Mac, remote machine is Linux
Python and/or Anaconda version:
Type of virtual environment used: conda
Jupyter server running: Remote through SSH VSCode extension

Expected behaviour
Cells NOT running. They were running normally and suddenly an interactive notebook started to hang. Then normal .ipynb files were also hanging. There was no update of any sort on my end. Might it be something on VSCode end?
I tried many things from related posts:
-Disabling pylance.
-Forcing the reinstalling of notebook, jupyter and ipykernel.
Actual behaviour
Cells running for both interactive notebooks and file-based notebooks.
Logs (output jupyter)

Show Logs
Visual Studio Code (1.84.2, ssh-remote, desktop)
Jupyter Extension Version: 2023.10.1003070148.
Python Extension Version: 2023.20.0.
Platform: linux (x64).
Workspace folder /home/barbem4, Home = /home/barbem4
02:51:57.010 [debug] Get Custom Env Variables, Class name = Ul (started execution), Arg 1: undefined, Arg 2: "RunPythonCode"
02:51:57.012 [info] Start refreshing Kernel Picker<PHONE_NUMBER>012)
02:51:57.031 [info] Using Pylance
02:52:00.292 [debug] Get Custom Env Variables, Class name = Ul, completed in 3282ms, has a truthy return value, Arg 1: undefined, Arg 2: "RunPythonCode"
02:52:00.292 [debug] Jupyter Paths /kernels:
02:52:00.517 [debug] Kernel Spec Root Paths, /usr/share/jupyter/kernels, /usr/local/share/jupyter/kernels, ~/.local/share/jupyter/kernels
02:52:00.561 [debug] Search for KernelSpecs in Interpreter ~/.conda/envs/praxis_env/bin/python
02:52:00.562 [debug] Finding Global Python KernelSpecs
02:52:00.605 [debug] Search for KernelSpecs in Interpreter /bin/python
02:52:00.605 [debug] Search for KernelSpecs in Interpreter /bin/python3.6
02:52:00.606 [debug] Search for KernelSpecs in Interpreter /usr/bin/python
02:52:00.607 [debug] Search for KernelSpecs in Interpreter /usr/bin/python3.6
02:52:00.609 [debug] Search for KernelSpecs in Interpreter /opt/miniconda/bin/python
02:52:00.610 [debug] Search for KernelSpecs in Interpreter ~/sandbox/bin/python
02:52:00.611 [debug] Full interpreter list is length: 7, /bin/python::Unknown:/bin/python, /bin/python3.6::Unknown:/bin/python3.6, /usr/bin/python::Unknown:/usr/bin/python, /usr/bin/python3.6::Unknown:/usr/bin/python3.6, ~/.conda/envs/praxis_env/bin/python:praxis_env:Conda:~/.conda/envs/praxis_env/bin/python, /opt/miniconda/bin/python:base:Conda:/opt/miniconda/bin/python, ~/sandbox/bin/python:sandbox:Venv:~/sandbox/bin/python
02:52:00.615 [debug] Getting activated env variables, Class name = $a (started execution), Arg 1: "~", Arg 2: "~/.conda/envs/praxis_env/bin/python", Arg 3: undefined
02:52:00.616 [debug] Get Custom Env Variables, Class name = Ul (started execution), Arg 1: "~", Arg 2: "RunPythonCode"
02:52:00.616 [debug] Get Custom Env Variables, Class name = Ul, completed in 0ms, has a truthy return value, Arg 1: "~", Arg 2: "RunPythonCode"
02:52:00.784 [debug] Kernels for interpreter /bin/python are .jvsc74a57bd0e7370f93d1d0cde622a1f8e1c04877d8463912d04d973331ad4851f04de6915a./bin/python./bin/python.-m#ipykernel_launcher
02:52:00.786 [debug] Kernels for interpreter /bin/python3.6 are .jvsc74a57bd0db0f6cbdde3eb805f0a229b988d6bd72d452c42e640dd9958b4355934ec01bf5./bin/python3.6./bin/python3.6.-m#ipykernel_launcher
02:52:00.786 [debug] Kernels for interpreter /usr/bin/python are .jvsc74a57bd0767d51c1340bd893661ea55ea3124f6de3c7a262a8b4abca0554b478b1e2ff90./usr/bin/python./usr/bin/python.-m#ipykernel_launcher
02:52:00.786 [debug] Kernels for interpreter /usr/bin/python3.6 are .jvsc74a57bd030295c5bec572e859485b1ffa5e89b8b3e2022ef6e3e739c1ac40f143a557caf./usr/bin/python3.6./usr/bin/python3.6.-m#ipykernel_launcher
02:52:00.787 [debug] Kernels for interpreter /opt/miniconda/bin/python are .jvsc74a57bd04c2b8563932708ac4f64e3bc4797ea8eb43fc7530baa7f01daadf5b46d7b1fd4./opt/miniconda/python./opt/miniconda/python.-m#ipykernel_launcher
02:52:00.822 [debug] Loading kernelspec from ~/.local/share/jupyter/kernels/python3/kernel.json
02:52:00.822 [debug] Loading kernelspec from ~/.conda/envs/praxis_env/share/jupyter/kernels/python3/kernel.json for ~/.conda/envs/praxis_env/bin/python
02:52:00.823 [debug] Loading kernelspec from ~/sandbox/share/jupyter/kernels/python3/kernel.json for ~/sandbox/bin/python
02:52:00.828 [debug] Kernel Specs found in interpreter ~/.conda/envs/praxis_env/bin/python are [{"specFile":"~/.conda/envs/praxis_env/share/jupyter/kernels/python3/kernel.json","interpreterPath":"~/.conda/envs/praxis_env/bin/python","isRegisteredByVSC":"registeredByNewVersionOfExt","name":"pythonjvsc74a57bd0af59e808e2bb2d49f2aad3fcaa4e3b4707b54f609965d9d8e3585c2a4131334f","argv":["python","-m","ipykernel_launcher","-f","{connection_file}"],"language":"python","executable":"python","display_name":"Python 3 (ipykernel)","metadata":{"debugger":true,"vscode":{"originalSpecFile":"~/.conda/envs/praxis_env/share/jupyter/kernels/python3/kernel.json","originalDisplayName":"Python 3 (ipykernel)"}}}]
02:52:00.828 [debug] Hiding default kernel spec 'Python 3 (ipykernel)', 'pythonjvsc74a57bd0af59e808e2bb2d49f2aad3fcaa4e3b4707b54f609965d9d8e3585c2a4131334f', /python for interpreter ~/.conda/envs/praxis_env/bin/python and spec ~/.conda/envs/praxis_env/share/jupyter/kernels/python3/kernel.json
02:52:00.828 [debug] Kernels for interpreter ~/.conda/envs/praxis_env/bin/python are .jvsc74a57bd0af59e808e2bb2d49f2aad3fcaa4e3b4707b54f609965d9d8e3585c2a4131334f.~/.conda/envs/praxis_env/python.~/.conda/envs/praxis_env/python.-m#ipykernel_launcher
02:52:00.829 [debug] Kernel Specs found in interpreter ~/sandbox/bin/python are [{"specFile":"~/sandbox/share/jupyter/kernels/python3/kernel.json","interpreterPath":"~/sandbox/bin/python","isRegisteredByVSC":"registeredByNewVersionOfExt","name":"pythonjvsc74a57bd0b0e92fd24cd1235dca8a7d32022db8bc6b9211cbdc26753cfb27ff825bde661f","argv":["python","-m","ipykernel_launcher","-f","{connection_file}"],"language":"python","executable":"python","display_name":"Python 3 (ipykernel)","metadata":{"debugger":true,"vscode":{"originalSpecFile":"~/sandbox/share/jupyter/kernels/python3/kernel.json","originalDisplayName":"Python 3 (ipykernel)"}}}]
02:52:00.830 [debug] Hiding default kernel spec 'Python 3 (ipykernel)', 'pythonjvsc74a57bd0b0e92fd24cd1235dca8a7d32022db8bc6b9211cbdc26753cfb27ff825bde661f', /python for interpreter ~/sandbox/bin/python and spec ~/sandbox/share/jupyter/kernels/python3/kernel.json
02:52:00.830 [debug] Kernels for interpreter ~/sandbox/bin/python are .jvsc74a57bd0b0e92fd24cd1235dca8a7d32022db8bc6b9211cbdc26753cfb27ff825bde661f.~/sandbox/python.~/sandbox/python.-m#ipykernel_launcher
02:52:04.360 [info] Start refreshing Interpreter Kernel Picker
02:52:04.372 [debug] KernelProvider switched kernel to id = .jvsc74a57bd0af59e808e2bb2d49f2aad3fcaa4e3b4707b54f609965d9d8e3585c2a4131334f.~/.conda/envs/praxis_env/python.~/.conda/envs/praxis_env/python.-m#ipykernel_launcher
02:52:04.373 [debug] start the kernel, options.disableUI=true for ~/projects/Initial SLE dataset/Linear models SLE/Experiments/Check_files.ipynb
02:52:04.400 [debug] Controller selection change completed
02:52:04.404 [debug] Preferred Remote kernel for ~/projects/Initial SLE dataset/Linear models SLE/Experiments/Check_files.ipynb is undefined
02:52:04.444 [info] Starting Kernel startUsingPythonInterpreter, .jvsc74a57bd0af59e808e2bb2d49f2aad3fcaa4e3b4707b54f609965d9d8e3585c2a4131334f.~/.conda/envs/praxis_env/python.~/.conda/envs/praxis_env/python.-m#ipykernel_launcher  (Python Path: ~/.conda/envs/praxis_env/bin/python, Conda, praxis_env, 3.9.18) for '~/projects/Initial SLE dataset/Linear models SLE/Experiments/Check_files.ipynb' (disableUI=true)
02:52:04.445 [debug] Creating raw notebook for resource '~/projects/Initial SLE dataset/Linear models SLE/Experiments/Check_files.ipynb'
02:52:04.476 [debug] Kernel Launcher. launch, Class name = Fv (started execution), Arg 1: "~/.conda/envs/praxis_env/python.~/.conda/envs/praxis_env/python.-m#ipykernel_launcher", Arg 2: 60000, Arg 3: "~/projects/Initial SLE dataset/Linear models SLE/Experiments/Check_files.ipynb", Arg 4: "~/projects/Initial SLE dataset/Linear models SLE/Experiments", Arg 5: ""
02:52:04.492 [debug] Getting activated env variables, Class name = $a (started execution), Arg 1: "~/projects/Initial SLE dataset/Linear models SLE/Experiments/Check_files.ipynb", Arg 2: "~/.conda/envs/praxis_env/bin/python", Arg 3: undefined
02:52:04.492 [debug] Get Custom Env Variables, Class name = Ul (started execution), Arg 1: "~/projects/Initial SLE dataset/Linear models SLE/Experiments/Check_files.ipynb", Arg 2: "RunPythonCode"
02:52:04.493 [debug] Get Custom Env Variables, Class name = Ul, completed in 1ms, has a truthy return value, Arg 1: "~/projects/Initial SLE dataset/Linear models SLE/Experiments/Check_files.ipynb", Arg 2: "RunPythonCode"
02:52:04.579 [debug] Launching kernel in kernelProcess.ts, Class name = Lv (started execution), Arg 1: "~/projects/Initial SLE dataset/Linear models SLE/Experiments", Arg 2: ""
02:52:04.637 [debug] Initialize notebook communications for editor ~/projects/Initial SLE dataset/Linear models SLE/Experiments/Check_files.ipynb
02:52:04.637 [debug] Resolving notebook UI Comms (resolve) for ~/projects/Initial SLE dataset/Linear models SLE/Experiments/Check_files.ipynb
02:52:04.638 [debug] initialize CommonMessageCoordinator
02:52:04.640 [debug] Registering commtarget jupyter.widget
02:52:04.640 [debug] IPyWidgetMessageDispatcher.initialize
02:52:04.641 [debug] Attempting to determine version of IPyWidgets
02:52:04.649 [debug] Waiting for IPyWidgets version
02:52:04.649 [debug] Waiting for IPyWidgets version promise
02:52:04.701 [debug] Attempting to determine version of IPyWidgets
02:52:04.702 [debug] Waiting for IPyWidgets version
02:52:04.702 [debug] Waiting for IPyWidgets version promise
02:52:05.012 [debug] Python API env change detected, update => '/usr/bin/python3.6m'
02:52:05.033 [debug] Python API env change detected, update => '/usr/bin/python3.6m'
02:52:05.041 [debug] Search for KernelSpecs in Interpreter /usr/bin/python3.6m
02:52:05.044 [debug] Full interpreter list is length: 7, /bin/python::Unknown:/bin/python, /bin/python3.6::Unknown:/bin/python3.6, /usr/bin/python::Unknown:/usr/bin/python, /usr/bin/python3.6m::Unknown:/usr/bin/python3.6m, ~/.conda/envs/praxis_env/bin/python:praxis_env:Conda:~/.conda/envs/praxis_env/bin/python, /opt/miniconda/bin/python:base:Conda:/opt/miniconda/bin/python, ~/sandbox/bin/python:sandbox:Venv:~/sandbox/bin/python
02:52:05.051 [debug] Kernels for interpreter /usr/bin/python3.6m are .jvsc74a57bd0fdb70176b9f68a63fad060439e1eecc9dfd60edecc2378a4464637b9f14b2c93./usr/bin/python3.6m./usr/bin/python3.6m.-m#ipykernel_launcher
02:52:06.315 [debug] Conda file returned by Python Extension is conda
02:52:06.970 [debug] Python API env change detected, update => '/usr/bin/python3.6m'
02:52:06.991 [debug] Full interpreter list is length: 7, /bin/python::Unknown:/bin/python, /bin/python3.6::Unknown:/bin/python3.6, /usr/bin/python::Unknown:/usr/bin/python, /usr/bin/python3.6m::Unknown:/usr/bin/python3.6m, ~/.conda/envs/praxis_env/bin/python:praxis_env:Conda:~/.conda/envs/praxis_env/bin/python, /opt/miniconda/bin/python:base:Conda:/opt/miniconda/bin/python, ~/sandbox/bin/python:sandbox:Venv:~/sandbox/bin/python
02:52:06.991 [debug] Refreshed Environments
02:52:07.550 [debug] Got env vars with python ~/.conda/envs/praxis_env/bin/python, with env var count 51 in 3058ms.
    PATH value is ~/.vscode-server/bin/1a5daa3a0231a0fbba4f14db7ec463cf99d7768e/bin/remote-cli:~/.conda/envs/bin:/opt/python-3.9.12/bin:~/local/bin:~/.vscode-server/bin/b3e4e68a0bc097f0ae7907b217c1119af9e03435/bin/remote-cli:~/.conda/envs/bin:/opt/python-3.9.12/bin:/opt/python-3.9.12/bin:~/.conda/envs/bin:~/.conda/envs/praxis_env/bin:/opt/miniconda/condabin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/usr/local/nz/bin:/usr/local/nz/bin64:/usr/local/texlive/2022/bin/x86_64-linux:/usr/local/nz/bin:/usr/local/nz/bin64:~/.fzf/bin and
    Path value is undefined
02:52:07.550 [debug] Prepend PATH with python bin for ~/.conda/envs/praxis_env/bin/python,
    PATH value is ~/.vscode-server/bin/1a5daa3a0231a0fbba4f14db7ec463cf99d7768e/bin/remote-cli:~/.conda/envs/bin:/opt/python-3.9.12/bin:~/local/bin:~/.vscode-server/bin/b3e4e68a0bc097f0ae7907b217c1119af9e03435/bin/remote-cli:~/.conda/envs/bin:/opt/python-3.9.12/bin:/opt/python-3.9.12/bin:~/.conda/envs/bin:~/.conda/envs/praxis_env/bin:/opt/miniconda/condabin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/usr/local/nz/bin:/usr/local/nz/bin64:/usr/local/texlive/2022/bin/x86_64-linux:/usr/local/nz/bin:/usr/local/nz/bin64:~/.fzf/bin and
    Path value is undefined
02:52:07.551 [debug] Activated Env Variables for ~/.conda/envs/praxis_env/bin/python,
    PATH value is ~/.conda/envs/praxis_env/bin:~/.vscode-server/bin/1a5daa3a0231a0fbba4f14db7ec463cf99d7768e/bin/remote-cli:~/.conda/envs/bin:/opt/python-3.9.12/bin:~/local/bin:~/.vscode-server/bin/b3e4e68a0bc097f0ae7907b217c1119af9e03435/bin/remote-cli:~/.conda/envs/bin:/opt/python-3.9.12/bin:/opt/python-3.9.12/bin:~/.conda/envs/bin:~/.conda/envs/praxis_env/bin:/opt/miniconda/condabin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/usr/local/nz/bin:/usr/local/nz/bin64:/usr/local/texlive/2022/bin/x86_64-linux:/usr/local/nz/bin:/usr/local/nz/bin64:~/.fzf/bin and
    Path value is undefined
02:52:07.551 [debug] Getting activated env variables, Class name = $a, completed in 3059ms, has a truthy return value, Arg 1: "~/projects/Initial SLE dataset/Linear models SLE/Experiments/Check_files.ipynb", Arg 2: "~/.conda/envs/praxis_env/bin/python", Arg 3: undefined
02:52:07.576 [info] Process Execution: ~/.conda/envs/praxis_env/bin/python -c "import ipykernel; print(ipykernel.__version__); print("5dc3a68c-e34e-4080-9c3e-2a532b2ccb4d"); print(ipykernel.__file__)"
02:52:07.576 [debug] Kernel Env Variables for ~/.vscode-server/extensions/ms-toolsai.jupyter-2023.10.1003070148-linux-x64/temp/jupyter/kernels/pythonjvsc74a57bd0af59e808e2bb2d49f2aad3fcaa4e3b4707b54f609965d9d8e3585c2a4131334f/kernel.json, PATH value is ~/.conda/envs/praxis_env/bin:~/.vscode-server/bin/1a5daa3a0231a0fbba4f14db7ec463cf99d7768e/bin/remote-cli:~/.conda/envs/bin:/opt/python-3.9.12/bin:~/local/bin:~/.vscode-server/bin/b3e4e68a0bc097f0ae7907b217c1119af9e03435/bin/remote-cli:~/.conda/envs/bin:/opt/python-3.9.12/bin:/opt/python-3.9.12/bin:~/.conda/envs/bin:~/.conda/envs/praxis_env/bin:/opt/miniconda/condabin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/usr/local/nz/bin:/usr/local/nz/bin64:/usr/local/texlive/2022/bin/x86_64-linux:/usr/local/nz/bin:/usr/local/nz/bin64:~/.fzf/bin
02:52:07.597 [info] Process Execution: ~/.conda/envs/praxis_env/bin/python -m ipykernel_launcher --ip=<IP_ADDRESS> --stdin=9008 --control=9006 --hb=9005 --Session.signature_scheme="hmac-sha256" --Session.key=b"d8694d87-d19d-4804-ae60-ce12c4c5aae3" --shell=9007 --transport="tcp" --iopub=9009 --f=~/.local/share/jupyter/runtime/kernel-v2-21257XLJ43cyNnIpN.json
    > cwd: ~/projects/Initial SLE dataset/Linear models SLE/Experiments
02:52:07.598 [debug] Launching kernel in kernelProcess.ts, Class name = Lv, completed in 3019ms, has a truthy return value, Arg 1: "~/projects/Initial SLE dataset/Linear models SLE/Experiments", Arg 2: ""
02:52:07.612 [debug] Got env vars with python ~/.conda/envs/praxis_env/bin/python, with env var count 51 in 6996ms.
    PATH value is ~/.vscode-server/bin/1a5daa3a0231a0fbba4f14db7ec463cf99d7768e/bin/remote-cli:~/.conda/envs/bin:/opt/python-3.9.12/bin:~/local/bin:~/.vscode-server/bin/b3e4e68a0bc097f0ae7907b217c1119af9e03435/bin/remote-cli:~/.conda/envs/bin:/opt/python-3.9.12/bin:/opt/python-3.9.12/bin:~/.conda/envs/bin:~/.conda/envs/praxis_env/bin:/opt/miniconda/condabin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/usr/local/nz/bin:/usr/local/nz/bin64:/usr/local/texlive/2022/bin/x86_64-linux:/usr/local/nz/bin:/usr/local/nz/bin64:~/.fzf/bin and
    Path value is undefined
02:52:07.612 [debug] Prepend PATH with python bin for ~/.conda/envs/praxis_env/bin/python,
    PATH value is ~/.vscode-server/bin/1a5daa3a0231a0fbba4f14db7ec463cf99d7768e/bin/remote-cli:~/.conda/envs/bin:/opt/python-3.9.12/bin:~/local/bin:~/.vscode-server/bin/b3e4e68a0bc097f0ae7907b217c1119af9e03435/bin/remote-cli:~/.conda/envs/bin:/opt/python-3.9.12/bin:/opt/python-3.9.12/bin:~/.conda/envs/bin:~/.conda/envs/praxis_env/bin:/opt/miniconda/condabin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/usr/local/nz/bin:/usr/local/nz/bin64:/usr/local/texlive/2022/bin/x86_64-linux:/usr/local/nz/bin:/usr/local/nz/bin64:~/.fzf/bin and
    Path value is undefined
02:52:07.612 [debug] Activated Env Variables for ~/.conda/envs/praxis_env/bin/python,
    PATH value is ~/.conda/envs/praxis_env/bin:~/.vscode-server/bin/1a5daa3a0231a0fbba4f14db7ec463cf99d7768e/bin/remote-cli:~/.conda/envs/bin:/opt/python-3.9.12/bin:~/local/bin:~/.vscode-server/bin/b3e4e68a0bc097f0ae7907b217c1119af9e03435/bin/remote-cli:~/.conda/envs/bin:/opt/python-3.9.12/bin:/opt/python-3.9.12/bin:~/.conda/envs/bin:~/.conda/envs/praxis_env/bin:/opt/miniconda/condabin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/usr/local/nz/bin:/usr/local/nz/bin64:/usr/local/texlive/2022/bin/x86_64-linux:/usr/local/nz/bin:/usr/local/nz/bin64:~/.fzf/bin and
    Path value is undefined
02:52:07.612 [debug] Getting activated env variables, Class name = $a, completed in 6997ms, has a truthy return value, Arg 1: "~", Arg 2: "~/.conda/envs/praxis_env/bin/python", Arg 3: undefined
02:52:07.639 [info] Process Execution: ~/.conda/envs/praxis_env/bin/python -m pip list
02:52:08.216 [info] ipykernel version & path 6.26.0, ~/.conda/envs/praxis_env/lib/python3.9/site-packages/ipykernel/__init__.py for ~/.conda/envs/praxis_env/bin/python
02:52:09.554 [debug] KernelProcess output: NOTE: When using the ipython kernel entry point, Ctrl-C will not work.

To exit, you will have to explicitly quit this process, by either sending
"quit" from a client, or using Ctrl-\ in UNIX-like environments.

To read more about this, see https://github.com/ipython/ipython/issues/2049

To connect another client to this kernel, use:
    --existing kernel-v2-21257XLJ43cyNnIpN.json

02:52:09.555 [debug] Kernel Output: To connect another client to this kernel, use: --existing kernel-v2-21257XLJ43cyNnIpN.json

02:52:09.800 [debug] Kernel Launcher. launch, Class name = Fv, completed in 5324ms, has a truthy return value, Arg 1: "~/.conda/envs/praxis_env/python.~/.conda/envs/praxis_env/python.-m#ipykernel_launcher", Arg 2: 60000, Arg 3: "~/projects/Initial SLE dataset/Linear models SLE/Experiments/Check_files.ipynb", Arg 4: "~/projects/Initial SLE dataset/Linear models SLE/Experiments", Arg 5: ""
02:52:09.812 [debug] Waiting for Raw Session to be ready in postStartRawSession
02:52:09.812 [debug] Waiting for Raw session to be ready, currently connected
02:52:09.812 [debug] Raw session connected
02:52:09.812 [debug] Waiting for Raw session to be ready for 30s
02:52:09.813 [debug] Waited for Raw session to be ready & got connected
02:52:09.813 [debug] Successfully waited for Raw Session to be ready in postStartRawSession
02:52:09.813 [debug] Kernel status before requesting kernel info and after ready is unknown
02:52:09.813 [debug] Sending request for kernelInfo
02:52:11.313 [debug] Did not get a response for requestKernelInfo
02:52:11.313 [debug] Sending request for kernelInfo
02:52:12.093 [info] End refreshing Kernel Picker<PHONE_NUMBER>012)
02:52:12.814 [debug] Did not get a response for requestKernelInfo
02:52:12.814 [warn] Didn't get response for requestKernelInfo after 3001ms.
02:52:12.819 [debug] Begin sendTelemetryForPythonKernelExecutable
02:52:12.820 [debug] Executing silently Code (unknown) = import sys as _VSCODE_sys\nprint(_VSCODE_sys.executable); del _VSCODE_sys
02:52:24.563 [info] Handle Execution of Cells 0 for ~/projects/Initial SLE dataset/Linear models SLE/Experiments/Check_files.ipynb
02:52:24.567 [debug] start the kernel, options.disableUI=false for ~/projects/Initial SLE dataset/Linear models SLE/Experiments/Check_files.ipynb

May be related to #14519

I just tried the same .ipynb file with the same environment on a different ssh machine  (both are mounted on the same NSF system) and it works fine.
The difference in the logs seems to stem from the requestKernelInfo not succeeding.
Non working machine:
06:56:53.583 [debug] Did not get a response for requestKernelInfo
06:56:53.583 [debug] Sending request for kernelInfo
06:56:55.084 [debug] Did not get a response for requestKernelInfo
06:56:55.084 [warn] Didn't get response for requestKernelInfo after 3001ms.
Working machine:
06:57:36.162 [debug] Sending request for kernelInfo
06:57:36.468 [debug] Got response for requestKernelInfo
Why is the resquest not getting a response?

Sorry you are running into this issue and thank you for filing this issue
I will have a look and see what's going on here.

Closing as a duplicate of #14519


to.have.prop doesn't work correctly with false value that is compared with undefined

If a component has a prop set to false then to.have.prop check will pass when its value is compared with undefined. For example (all of them are green):
class ButtonComponent extends React.Component {
  static propTypes = {
    isDisabled: React.PropTypes.bool
  }
  static defaultProps = {
    isDisabled: false
  }
  render () {
    return (

    )
  }
}

const wrapper = mount(<ButtonComponent />)

expect(wrapper).to.have.prop('isDisabled', false);
expect(wrapper).to.have.prop('isDisabled', undefined);
expect(wrapper).to.have.prop('isDisabled').equal(false);

What's ButtonComponent? Elements have props, components don't.

Updated the example to make it more correct

In this example, you're mounting what ButtonComponent renders - you don't need to assert on its props because you just passed them (and you don't need to assert on defaultProps, because that's an implementation detail of the component). In other words, the thing in the wrapper is the div and that's what you should be making assertions on.

Saying the wrapper contains the div is not accurate in this case. If I further extend the example to render elements with props:
class ButtonComponent extends React.Component {
  render() {
    return (

    );
  }
}

const wrapper = mount(<ButtonComponent baz="qux" />);
const spanWrapper = wrapper.find("span");

expect(spanWrapper).to.have.id("bar"); // passes
expect(spanWrapper).to.have.prop("id", "bar"); // passes

expect(wrapper).to.have.prop("baz", "qux"); // passes (even though it's on ButtonComponent)
expect(wrapper).to.have.id("foo"); // passes
expect(wrapper).to.have.prop("id", "foo"); // fails

So the prop assertion behaves differently on the root component in a way which is unexpected.
Why would I want to use prop("id", "foo") when I have id("foo")? I like to assert that my elements have a style prop, but I don't care what the values are (I find it very brittle to assert all the style properties and values). expect(someWrapper).to.have.prop("style")
There's some special casing that is done to the root wrapper, because the output from wrapper.debug() is:
<ButtonComponent>

</ButtonComponent>

but wrapper.children().debug():

Either enzyme does something special when it calls children(), or it does something special when it calls debug() on the root element. Regardless, the assert expect(wrapper).to.have.prop("something") is checking the ButtonComponent element, not the div. @ljharb is correct in that the wrapper is usually treated as containing the div, because I can use id("foo"). However, for the prop call, suddenly the element under test is the ButtonComponent again.
For all the reasons @ljharb brought up above, it seems that there is no need to have prop assert on the ButtonComponent itself, so this is a bug; the assertion should be using the div.

@nadiam84 I believe this is fixed as of 0.7.0, can you confirm this please

The original problem seems to have been fixed. The broken case now fails properly.
expect(wrapper).to.have.prop('isDisabled', undefined);

Should I open a new issue for the problems I'm having accessing the root element for to.have.prop?

@nigelrobbins3 yes please
@nadiam84 I'm closing this issue, feel free to re-open if you think this was a mistake


[Bug] Color picker / provider broken (not showing)

Reproducible in vscode.dev or in VS Code Desktop?

[X] Not reproducible in vscode.dev or VS Code Desktop

Reproducible in the monaco editor playground?

[ ] Not reproducible in the monaco editor playground

Monaco Editor Playground Code
// NOTE: This is copied directly from the Color Provider example:
// https://microsoft.github.io/monaco-editor/playground.html#extending-language-services-color-provider-example

monaco.languages.register({
	id: 'colorLanguage'
});

monaco.editor.create(document.getElementById('container'), {
	value: 'red\nblue\ngreen',
	language: 'colorLanguage',
	colorDecorators: true
});

monaco.languages.registerColorProvider('colorLanguage', {
	provideColorPresentations: (model, colorInfo) => {
		var color = colorInfo.color;
		var red256 = Math.round(color.red * 255);
		var green256 = Math.round(color.green * 255);
		var blue256 = Math.round(color.blue * 255);
		var label;
		if (color.alpha === 1) {
			label = 'rgb(' + red256 + ', ' + green256 + ', ' + blue256 + ')';
		} else {
			label = 'rgba(' + red256 + ', ' + green256 + ', ' + blue256 + ', ' + color.alpha + ')';
		}

		return [
			{
				label: label
			}
		];
	},

	provideDocumentColors: () => {
		return [
			{
				color: { red: 1, blue: 0, green: 0, alpha: 1 },
				range: {
					startLineNumber: 1,
					startColumn: 0,
					endLineNumber: 1,
					endColumn: 0
				}
			},
			{
				color: { red: 0, blue: 1, green: 0, alpha: 1 },
				range: {
					startLineNumber: 2,
					startColumn: 0,
					endLineNumber: 2,
					endColumn: 0
				}
			},
			{
				color: { red: 0, blue: 0, green: 1, alpha: 1 },
				range: {
					startLineNumber: 3,
					startColumn: 0,
					endLineNumber: 3,
					endColumn: 0
				}
			}
		];
	}
});

Actual Behavior
The color picker is not displayed.
Expected Behavior
The color picker should pop up on hover.
Additional Context
No response

This broke in 0.31.0-dev.20211210

Blame points to https://github.com/microsoft/vscode/compare/15415b6de68f3fcfefcd264ac37cc3c3d54a378b...a1842c8f633237d6d850ada5772359ad32480655
I think it could be https://github.com/microsoft/vscode/commit/5f75c4a41091ac36faea06bf86965d507ce77fa8

Hey, I was experimenting with this example as well, and through some experiments, I figured out that the missing color indicators are related to the ranges returned as part of the IColorInformation from provideDocumentColors. Seemingly, the start- and end column values are the cause of the error.
In fact, it seems that there has to be at least a difference of 1 between the start- and end column values to display any color indicators, and if the startColumn = 0, then a difference of two (endColumn at least 2) is required.
I am not sure what exactly changed within the Monaco code to cause this, or whether this is intentional, but I hope this pointer can help people with the same issue :)
Here is a modified version of the code that works up to the current latest stable release 0.40.0 (beyond that it's untested):
monaco.languages.register({
	id: "colorLanguage",
});

monaco.editor.create(document.getElementById("container"), {
	value: "red\nblue\ngreen",
	language: "colorLanguage",
	colorDecorators: true,
});

monaco.languages.registerColorProvider("colorLanguage", {
	provideColorPresentations: (model, colorInfo) => {
		var color = colorInfo.color;
		var red256 = Math.round(color.red * 255);
		var green256 = Math.round(color.green * 255);
		var blue256 = Math.round(color.blue * 255);
		var label;
		if (color.alpha === 1) {
			label = "rgb(" + red256 + ", " + green256 + ", " + blue256 + ")";
		} else {
			label =
				"rgba(" +
				red256 +
				", " +
				green256 +
				", " +
				blue256 +
				", " +
				color.alpha +
				")";
		}

		return [
			{
				label: label,
			},
		];
	},

	provideDocumentColors: () => {
		return [
			{
				color: { red: 1, blue: 0, green: 0, alpha: 1 },
				range: {
					startLineNumber: 1,
					startColumn: 1,
					endLineNumber: 1,
					endColumn: 4,
				},
			},
			{
				color: { red: 0, blue: 1, green: 0, alpha: 1 },
				range: {
					startLineNumber: 2,
					startColumn: 1,
					endLineNumber: 2,
					endColumn: 5,
				},
			},
			{
				color: { red: 0, blue: 0, green: 1, alpha: 1 },
				range: {
					startLineNumber: 3,
					startColumn: 1,
					endLineNumber: 3,
					endColumn: 6,
				},
			},
		];
	},
});

I would like to further highlight that in the current configuration the replacement of text when choosing a new color is a bit weird, as color names are converted to rgb(red, green, blue) strings, and change iteratively with every new replacement, and that the placement of color indicators is static to the original string in the editor. But I assume this is due to the simplicity of the example. Just a heads-up for everyone trying to build from here.


New version of Small Ubuntu for monitoring

Nothing to say apart that Xenial may feel old will soon be out of normal support (but not EOL)

Nothing to say apart that Xenial may feel old will soon be out of normal support (but not EOL)


Improve HTTP::ChunkedContent implementation

Reading from HTTP::ChunkedContent now raises IO::Error if the IO ends before the entire size of a chunk is read.
Fixes #5852

Well, to be honest there was nothing to fix: the input is invalid so it raised.
Raising an explicit exception is nicer, but if I'd stumble upon them, I wouldn't understand the messages... Maybe something more explicit, such as:

"invalid http chunked content: expected chunk data but got EOF"
"invalid http chunked content: expected chunk size but got EOF"

@ysbaddaden you're right, I would've trouble to grasp the meaning as well... and I wrote it this morning 🙈

@ysbaddaden before, you'd get a nil error if the EOF appeared when parsing the chunk size, but not if you got an EOF in the middle of a chunk (the EOF would just get passed through). This PR changes both to an error, so it is adding new errrors.

I noticed a few other issues where the implementation was incomplete and added some improvements to comply with RFC 7230.

raises IO::EOFError if a chunk cannot be completely read (I added a specific error message, I figure it doesn't hurt to be specific).
the constructor won't start reading the parent IO and thus no longer raises. Chunks will only be consumed when a read method is called.
chunk extensions (parameters after chunk size, separated by ;) are recognized but ignored.
trailing headers after the final chunk delimiter \0\r\n are parsed and can be accessed as #headers.

@ysbaddaden The RFC explicitly requires CRLF. Some implementations (like Go's) enforce that. But Firefox, Chrome, Edge, curl all accept \n as well, so it's probably okay to be not totally strict.

@RX14 The issue from #3270 was not compromised, the example provided there already worked with the code before the last commit. For the matter of that issue, it doesn't matter if CRLF at the end of the chunk is read or not (i.e. 7 or 9 bytes) because it is already sent together with the chunk data anyway.
The issue in #3270 (which was fixed in 4e00257) was, when a chunk was consumed, it would read CRLF plus the entire following line - that's 12 bytes  (7 + CRLF + 0 + CRLF) in the spec example. Obviously, this would delay receiving a chunk until the chunk size of the following chunk is sent.
As long as a completely sent chunk is immediately followed by CRLF, there is no issue. And I figured it should only be treated as a valid chunk if it is properly delimited by CRLF. But how to handle this is not clearly stated in the RFC. Similarly as we will properly accept CRLF in place of LF it probably makes sense to not strictly require a complete chunk to be delimited but accept it without progressing forward in the stream.
In golang/go#17355 this is explained that the read method should not have to wait once it has received some data it can deliver to the sender.

's irrelevant if CRLF at the end of the chunk is read immediately or not (i.e. 7 or 9 bytes) because it is already sent together with the chunk data anyway.

That's not an assumption I want to make. Bad implementations won't do this I'm certain. We should always return data when @chunk_remaining == 0, without waiting for the trailing crlf.

Agreed. That's changed in the implementation now.

Oh, sorry, I missed that commit.


database: refactor load and save to be standalone functions

The state of the database object was heavily dependent on the current
stage that the update process was currently in. This makes it difficult
doing a save since it's not obvious what state is stable and what is
in fluctuation.
Instead of load and save being methods of database, make them standalone
functions where the caller is responsible for explicitly passing in what
is to be saved.
Fixes google/safebrowsing#24

LGTM


Added a missing boost chrono dependency

@asierguti
this is merging, but just a question: what boost version do you have ? and on which platform ?
our build was working fine without it on Ubuntu 18.04 and boost 1.69

Centos 7.6 with with devtoolset-8 (gcc 8) and boost 1.71.


Easy cookies management

I don't find it easy to add or remove the cookies in the request header.
Is it possible to add a function expressly to manage the cookies?
Or should't the client at least manage the cookies by itself, depending on the response header?
I couldn't login with my application, because the client seems to ignore the "set-cookie" in the server response header, and it fails to send the cookies back in the following requests.

Cookie-based auth in an API (as opposed to a web site) is unusual and somewhat unorthodox, so I wouldn’t want to build special handling for it directly into Siesta itself.
If you do need cookie handling, that’s a responsibility that’s best left to the underlying networking library plus your app-specific rules for allowing & storing cookies. You’d add your own beforeStartingRequest hook to add cookie headers before sending the request, then receive cookie headers on receiving the response. That could even make a nice little lib.
For examples of the code you’d need to put in the beforeStartingRequest hook, see:
https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/URLLoadingSystem/CookiesandCustomProtocols/CookiesandCustomProtocols.html
http://stackoverflow.com/questions/29596206/how-to-get-cookie-from-a-nsurlsession-with-swift

Thank you, I'll follow your advices; I haven't other options, since I don't own the server side

Yes, we often have to make things work well with the APIs we’re given.
I’ll close this for now, but please do ask if you hit a snag with your Siesta configuration. The basic structure will be something like this:
service.configure {
  addStoredCookiesTo($0.config.headers)

  $0.config.beforeStartingRequest {
    _, req in
    req.onSuccess {
      entity in
      storeCookiesFrom(entity.headers)
    }
  }
}

func addStoredCookiesTo(inout headers: [String:String]) {
  // for each stored cookie
    header[cookieKey] = formattedCookieValue
}

func storeCookiesFrom(headers: [String:String]) {
  // parse any cookie headers
  if newCookieDetected {
    // store cookie
    service.invalidateConfiguration() // crucial!
  }
}

Ok, thanks a lot!

@pcantrell did you solve this? I have the same requirement to receive and send back a cookie but can't get it to work.


Fix working on Android < 4.4 and Java < 7

A not yet available constructor of GZIPOutputStream was used.

Changes Unknown when pulling 882f385eacea73737f9b0bb0d7c772e80b8dc63a on philippwiesemann:fix-core-gzip into ** on NanoHttpd:master**.


please give some usage scenarios for GPTCache

Hi
I am very confused with scenarios like AI chat, NPCs in the game which seems not really suitable for GPTCache, as these requests' contents are almost diifferent.
Although similarity evaluation can estimate some similarity requests and then making responses from GPTCahe, the responses' performance seems make a little worse than from LLM.
So can you give some typical scenarios that can be applied with GPTCache?  What I mean is what characteristics do GPTCache scenarios conform to?
thanks!

Hi ZZBoom,
We have identified a few use cases:

Our https://osschat.io/ project involves users asking questions for the open-source community, such as "What is PyTorch?"
If you are building an app for paper Q&A, GPTCache can cache the paper and the questions. When similar questions arise, it can directly use the cached results.
If you are using OpenAI Whisper, you could cache the audio and its transcript as a peer, no don't need to translate again.

Locality is all you need for using semantic cache. Not all scenarios will fit the semantic cache, but there will be some.
Furthermore, the local model should be much faster than ChatGPT, as shown in our benchmark https://zilliz.com/blog/Yet-another-cache-but-for-ChatGPT.

Thanks @xiaofan-luan for your quick reply! May I take it that the scenarios with limited questions are more suitably applied with GPTCache?

For a specific field and user group or at a given time, certain problems may have a particular range, which is also very suitable for GPTCache.

Thanks @xiaofan-luan for your quick reply! May I take it that the scenarios with limited questions are more suitably applied with GPTCache?

Yes, for a cache to work it has to be focusing on certain domain, not like a real chatbot


Add all spell events to ClosureEvents

It would be useful to have all those events in ClosureEvents:
EVENT_PLAYER_UNIT_SPELL_CHANNEL
EVENT_PLAYER_UNIT_SPELL_CAST
EVENT_PLAYER_UNIT_SPELL_EFFECT
EVENT_PLAYER_UNIT_SPELL_FINISH
EVENT_PLAYER_UNIT_SPELL_ENDCAST
Issue is that onCast is used for the EVENT_PLAYER_UNIT_SPELL_EFFECT event so we would have to find different names. After a conversation with @Frotty we came up with (in order):
onChannel, onStart, onCast, onFinish and onEnd.
Would be nice to have some feedback/suggestions before doing the PR.

@Krypt0n What about pushing BetterCast here?

Ok so we have some enhanced casting System here, called "BetterCast" which handles several closure events, while using a preset ability (based on channel) which does mostly nothing but handling cooldown and manacost check.
Current usable events:
OnBegin
OnFail
OnPreCast
OnCastStart
OnCastUpdate
OnCastTick
OnCastEnd
OnEffect
OnChannelStart
OnChannelUpdate
OnChannelTick
OnChannelEnd
OnEnd

Could do some adaptions and hotdoc, and might prepare it for stdlib, would need some polishing then i guess.

@Krypt0n ❓ 😄

Yeah sup, well I was planning to reworked the system, and the thing is scale it a bit higher and that is not dooable by plain wc3 natives. So it will no run with my Custom UI API which is also WIP, and that is way to much for stdlib tbh.

Yeah sup, well I was planning to reworked the system, and the thing is scale it a bit higher and that is not dooable by plain wc3 natives.

What?

As I said. Its not done, and I pause that, cause working now on a Custom UI API, which will be required for the CastingSystem as it does fit all requirements with using, normal wc3 native abilities and triggers.

I don't see how UI is related to adding spell events

Everything...

Its basically the essence, cause without custom UI you can no clearing trigger spells that nicely and freely without interacting with units orders etc.

Everything...

No. And then as @Krypt0n already said, this isn't stdlib material.
This ticket is simply about adding spell events,

@WareditorGit is this still valid?

yes


Embed functionality

Use special glsl.app/embed/#id URL for rendering only canvas, so it can be embed into other webpages in <iframe>
This would allow not only feature the shader previews in articles but also enable to use shaders as page backgrounds and etc

Web component, exposed method to set the shader or use attribute with id if it’s published


Error: image.max is not a function

Usage of max configuration option causes an error image.max is not a function.
From what I can tell the error comes from sharp, and occurs because the max function was deprecated - see: https://sharp.pixelplumbing.com/changelog#v0210---4supthsup-october-2018
[15:39:56] Error in plugin "gulp-responsive"
Message:
    File `xxx.jpg`: image.max is not a function
Details:
    domainEmitter: [object Object]
    domainThrown: false

Stack:
    at DestroyableTransform.through2Handler [as _transform] (D:\...\node_modules\gulp-responsive\lib\index.js:98:14)

Since this project seems to be inactive, even just for the moment (https://github.com/mahnunchik/gulp-responsive/issues/111), I've gone ahead and created a  completely new plugin for this purpose on my own: https://github.com/robinloeffel/gulp-rezzy. It uses sharp under the hood, as well.

Sharp max function is deprecated. Instead we need to use the Sharp fit param.
I made a pull request that add the fit param to gulp-responsive config : #146


[? / Firebase] Sign-in with dynamic link

Low priority? Close if we don’t think this is necessary / wanted

Alternative sign-in method with dynamic link set up with e58c424.

Do we have code in OnbordingUI for initiating the process?


Modifications to collab-spark-bot-hosting

I am running this lab outside of the track its a part of so some of these suggestions may just clarify some items if for some reason the end-user is also running this lab outside the track.
Step 2:

Add image of the forking and maybe a link to the github lab or the github forking help link: https://help.github.com/articles/fork-a-repo/
Quickly explain that Redis is a database/storage system

Step 3:

SPARK_TOKEN Var: The lab does not (but it should) instruct the user to create a spark bot to generate this token.
PUBLIC_URL Var: You should probably indicate that if they scroll down they can cut and paste the URL (see image).

Minor note that the last image of this step looks nicely formatted, but the user will get the raw JSON. Not sure if that will confuse anybody.

Thanks for the input @stgreenb
Is there any timeline you need that for?
Would March 14th work for you ?

@ObjectIsAdvantag , that timing will suit me just fine.

I've updated the lab

new Create Bot account step
add image to Fork the original repo
add Heroku domain instructions as suggested

Release v0.19.2 pushed in production
https://github.com/CiscoDevNet/labs-cloud-collab/releases/tag/v0.19.2

@stgreenb you'll certainly be interested to walk through ;-)
https://learninglabs.cisco.com/tracks/collab-cloud/spark-apps/collab-spark-bot-hosting/step/1

@ObjectIsAdvantag , looks good, thank you.


Add a post-process to fill in publication date, author, abstract etc.

Currently we store the PMID in the uniquename column of the pub table when we see a new publication but no other details (author, date, abstract) are stored.  These should be queried from pubmed in a post-process and added to the pub table.
See also #67 and #558.

I've added a script that queries PubMed for publication details and then stores them.  It's not ready to put in the load script yet.  The querying is very slow so it need to cache the results locally.  I'll make that change then add it to the load.

I've added caching and added it to the load script.
This work isn't super urgent but it will enable the stats page to load in just a second or two (after a small change to that code).

I've added caching and added it to the load script.

It all worked fine in the most recent load.


Local File Inclusion - Any Version of php proxy

We know https://unblockvideos.com/ using php-proxy script.
im trying to put file:///etc/passwd on "url". but it's contain error :
Could not resolve host : file
i think this is a filter/waf. and there is a easy way to bypass it.
create php file contains :

then upload it to your server.
as a sample this is my serper :
https://onlinehmp.com/content/banner/zotac.php
Put it on proxy url and you will get the /etc/passwd file
Thx, Regards !

Can you paste here the content of the URL:
https://onlinehmp.com/content/banner/zotac.php
So I can test it locally.
Thanks!

Pada tanggal Kam, 20 Jun 2019 21.07, Web Addicto<EMAIL_ADDRESS>menulis:

Can you paste here the content of the URL:
https://onlinehmp.com/content/banner/zotac.php
So I can test it locally.
Thanks!
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/Athlon1600/php-proxy-app/issues/161?email_source=notifications&email_token=AIYGWACY5VBD72AHKHAIXGDP3OFJPA5CNFSM4HP33FGKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODYFQSYI#issuecomment-504039777,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AIYGWAFO43MZEMHQYLIPBOLP3OFJPANCNFSM4HP33FGA
.


Gmod Server Migration tool for deprecated servers

This is not for requesting support for new games/applications
To do this you should go to https://github.com/CubeCoders/AMPTemplates and first attempt to build a configuration yourself - otherwise you can request a template from this repo.
Feature Request
Creating some form of tool to migrate servers from the deprecated garrys mod template to the new one
Feature Information:

this is specific for garrys mod
this would migrate the 4020 folder from the old instance to the new and remember the port configuration

#Why does this need to be added?
Because server managers often have a lot of servers to be maintained - due to this having to go through and manually delete every server, re-create them and also being restricted to doing them only via sftp is borderline impossible in scenarios where the server is hosted offsite, which is the exact scenario I am in, because I only have a 10mbps upload at my house downloading an entire server only to immediately reupload it would probably take closer to an entire day per server of downtime, then when you factor in the fact that I have about 20 garrys mod servers for my community it would take me roughly a month of transferring to make this migration.
My current workaround is to just copy the 4020 folder from one instance to another, but apparently that risks breaking things. Either way that will still take me hours. This is not an ideal situation for any system administrators.
I confirm:

[x] that I have searched for an existing feature request matching the description.
[x] that my checkboxes above look like the one on the left (remove this line when done)

Not only this - I have to go into every single instance after remaking them & re-assign an IP since <IP_ADDRESS> is not allowed by AMP, so therefore I have even more manual work to do times 20

Is this Windows or Linux? You should be able to copy the files on the remote server locally without moving it you your PC.

Windows, my apologies!
I also have to re-set the workshop key and steam API key on top of the GSLT and the IP assignment. lots of manual steps on top of file copying and its a lot haha

I'm going to close this one as not planned. While it'd be nice to have, this is a one time migration. The time it'd take to develop would outweigh the benefit to people. What we are doing though, is focusing on things like improving the upload speeds in the web browser and making importing of configs easier in generic instances. All things that will boost this experience.


Update to sbt-typelevel 0.4.11

Codecov Report

Merging #41 (757fc51) into main (4c064db) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main      #41   +/-   ##
=======================================
  Coverage   93.02%   93.02%
=======================================
  Files          17       17
  Lines         502      502
  Branches       68       68
=======================================
  Hits          467      467
  Misses         35       35

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 4c064db...757fc51. Read the comment docs.


Console should capture key events when open

Please capture keystrokes when the console is open, so that they are not passed to the scene.
Currently, when I press "enter" to send a command to the console, the keystroke is also captured by my scene -- which in my case is mapped to ui_accept, so it clicks a Start button in the Menu scene and changes to a different scene.  Similarly, my keyboard-controlled player turns left when I type "a" in the console.

Viewport.set_input_as_handled() should do it

It's not that simple, because any code that checks Input.is_action_pressed() can't be prevented from knowing a key is down.  As a workaround I paused the game when opening the debug window.


Second layer of filtering after returning from FileSearchProviderNew's provideFileSearchResults(...)

Testing #226668
I suspect here that I am just not too well-versed in how these APIs work and this is as-expected, but thought i'd ask here anyway :)
For this example I have hardcoded a single file to always return from provideFileSearchResults(...)
class mySearchProvider implements vscode.FileSearchProviderNew {
	provideFileSearchResults(pattern: string, options: vscode.FileSearchProviderOptions, token: vscode.CancellationToken): vscode.ProviderResult<vscode.Uri[]> {
		return [
			vscode.Uri.parse('memfs:/josh.txt'),
		]
	}
}

As expected, when I search for any substring of josh I see it pop up in the quick open search window

As expected, i've made this utterly useless since it won't actually show me the files in my project.  But in this case, I still expected to see josh.txt since it was hardcoded (as shown above).

Again, likely a misunderstanding on my part of how the API works. I thought this API was the "source of truth" for providing search results, yet my hardcoding of the value is doing some filtering outside of my (apparent) control.

Yes, when you use the quick open, there is some post-processing that applies to the results. This happens at two points:

after getting the result from the provider, we re-apply the glob patterns for include/exclude because there may be some special syntax of the glob patterns itself that require special interpretation (sibling clauses, ie: https://github.com/microsoft/vscode/blob/2e4a043ef387856c67ac934c36ca67073f56624d/.vscode/settings.json#L11-L13). This will be present regardless of whether you use the picker or an API to find the files.
When using the picker, you get extra fuzzy filtering of the results. The file provider does not inherently provide any ordering or indication why it's a match, so it's sort of the picker's way of re-applying logic that the provider should have already done.

I can keep this issue open to track the documentation of this, though. It is confusing.


Create a more compact view on the search page

Decrease line spacing in list of search hits. Can we put them a little closer together, if only by some 20%, so that more items appear on the screen?
Same for the search panels above the results: they can well be 5 pixels apart, rather than the current 50(?)
Same for the search fields within a panel. The text boxes seem to dictate the height now. The font size in the text boxes should be more similar to that in the pull-down menus (10 instead of 12-14pt, it looks to me). After that, the spacing above and below the pull down menus and the text boxes can be reduced a bit.

Done:

I added the 'table-condensed' class to the search hits.
Same for the search options inside the panels morphology, semantics  and phonology. It looked ugly/crammed for the other search panels.
Some more more cleaning up to give the page a more clean look.
I put the panels closers together.

I don't fully understand what you say about font size. It's 14px on almost the whole page, all set by a single piece of code. I can see this because everything (including the text field and the pulldown menu) shrinks when I make the number smaller. Maybe you want the text boxes smaller?

More wishes from Onno:

Only 10px between general search and first panel
Space at the bottom of panels same size everywhere
'Phonology other' only 1 text field

@ocrasborn Your wishes came true!

Yes!


"IDX10500: Signature validation failed" when using Azure AD v2.0 JWT token

Hello,
I've a deployed Service Fabric cluster using Azure AD authentication and it works well.
I want to use the Azure AD authentication for calling the REST APIs. I use MSAL to negotiate then token, therefore the token is a v2.0 token (using the AzureAD 2.0 endpoints).
I encounter the following error :
IsAdminRole failed:
issuer=https://sts.windows.net/myTenant/
audience=myClientId
roleClaim=http://schemas.microsoft.com/ws/2008/06/identity/claims/role
cert=https://login.microsoftonline.com/myTenantId/federationmetadata/2007-06/federationmetadata.xml
error=System.IdentityModel.Tokens.SecurityTokenSignatureKeyNotFoundException: IDX10500: Signature validation failed. Unable to resolve SecurityKeyIdentifier: 'SecurityKeyIdentifier    (    IsReadOnly = False,    Count = 1,    Clause[0] = System.IdentityModel.Tokens.NamedKeySecurityKeyIdentifierClause    )

When I compare JWT headers between a v1.0 (issued for the Explorer for example) and my v2.0, I can notice that they are not the same (v2.0 lacks the x5t parameter) which, according to my educated guess, is used to locate the certificate at this url (https://login.microsoftonline.com/myTenantId/federationmetadata/2007-06/federationmetadata.xml)
Possible workaround : using ADAL instead to negotiate a v1.0 token instead but I've other constraints that makes me unavailable to do this right now.
Possible fixes :

Add x5t in the v2.0 token header (but that's more on the AzureAD team side)
Use the JWKS uri provided by the well-known openid configuration url when verifying JWT tokens, which I think is the most "standard" way of doing
Assume that the kid is the thumbprint (which may not be always the case)

v1.0 token header (Service Fabric Explorer):
{
  "typ": "JWT",
  "alg": "RS256",
  "x5t": "u4OfNFPHwEBosHjtrauObV84LnY",
  "kid": "u4OfNFPHwEBosHjtrauObV84LnY"
}

v2.0 token header (Negotiated by MSAL):
{
  "typ": "JWT",
  "alg": "RS256",
  "kid": "u4OfNFPHwEBosHjtrauObV84LnY"
}

For the last solution I suggest the following fix here
Become :
results.AddRange(certElements.Select(el =>
{
	var cert = new X509Certificate2(Convert.FromBase64String(el.Value));
	var kid = Base64UrlEncoder.Encode(cert.GetCertHash());
	return new X509SecurityKey(cert, kid);
}));

I can make a PR if need be :)


WinUI 3 AutoSuggestBox in NavigationView is not stretch

Describe the bug

AutoSuggestBox in NavigationView is not stretch
Steps to reproduce the bug

Steps to reproduce the behavior:
<NavigationView>
            <NavigationView.AutoSuggestBox>
                <AutoSuggestBox QueryIcon="Find" PlaceholderText="Search Artist"/>
            </NavigationView.AutoSuggestBox>
            <ScrollViewer>
                <Frame x:Name="ContentFrame" Padding="12,0,12,24" IsTabStop="True"/>
            </ScrollViewer>
        </NavigationView>

Expected behavior

autosuggestbox should be stretch
Screenshots

Version Info

WinUI 3.0
OS: 19043
NuGet package version:
Microsoft.ProjectReunion" Version="0.8.0
Microsoft.ProjectReunion.Foundation" Version="0.8.0
Microsoft.ProjectReunion.WinUI" Version="0.8.0

Windows app type:

UWP
Win32

Yes

Windows 10 version
Saw the problem?

Insider Build (xxxxx)

October 2020 Update (19042)
Yes

May 2020 Update (19041)

November 2019 Update (18363)

May 2019 Update (18362)

October 2018 Update (17763)

April 2018 Update (17134)

Fall Creators Update (16299)

Creators Update (15063)

Device form factor
Saw the problem?

Desktop
Yes

Xbox

Surface Hub

IoT

Additional context

@ghost1372 Thanks! does this issue still occur if you provide at least one NavigationViewItem in the NavigationView.MenuItems collection?

@StephenLPeters i dont know why, but i tested it again in a new project and everythings worked fine😕 mybe something else in my project is causing this problem. Anyway i close this issue and if i find source of problem i will open it.
Thank you for your response

@StephenLPeters i dont know why, but i tested it again in a new project and everythings worked fine😕 mybe something else in my project is causing this problem. Anyway i close this issue and if i find source of problem i will open it.
Thank you for your response


Fix docs mishap

The main issue is that under "Hello Milo" it's launching the non-RAG Milo which seems incorrect: https://github.com/ai-hero/course-intro-to-qa-systems-with-llms/pull/1/commits/cddf836b1415b1ea8531e807a56c04d89ccafbc0.
I took the liberty to Runme-ify the README.md. It lets you literally execute the instructions in your documentation. Runme is an open source project I've co-created. It helped me identify the issue since I literally ran it.

As discussed, @rparundekar, I fixed the README to run the RAG-less Milo first and the lab PoC one after.
Also, please note I kept the .vscode/extensions.json, which won't conflict when anybody's local settings.json. It's meant for the express purpose of recommending extensions as part of the git repo. Happy to remove it, just say the word.


MAINT: Remove numpy/npy_3kcompat.h from _superluobject.c

Reference issue

Continued work to remove all Python2 Code #11584
What does this implement/fix?

Removes use of numpy/npy_3kcompat.h in SuperLU module init.
The non-whitespace change is s/PyInt_Check/PyLong_Check/ and s/PyInt_AsLong/PyLong_AsLong, I'm happy to break out the retab into a seperate PR if that would aid clarity.
PyInt_Check also does overflow checking which PyLong_Check doesn't but in this case (were the values are options/enums this is probably fine.
Additional information

I'm happy to break out the retab into a seperate PR if that would aid clarity.

The diff goes from ~5 lines to ~200 lines changed with the whitespace included. Why do you think changing the whitespace is helpful at all? C isn't sensitive to whitespace, right? And there's only 1 C file modified here.

I'm happy to break out the retab into a seperate PR if that would aid clarity.

The diff goes from ~5 lines to ~200 lines changed with the whitespace included. Why do you think changing the whitespace is helpful at all? C isn't sensitive to whitespace, right? And there's only 1 C file modified here.

The tabs are used inconsistently so that the file is hard to read with both ts=4 and ts=8.
which lead to this in several places
    if (test)
    return val1
    else {
        val2 = val1 + 1;
        return val2;
    }

As I said I'm happy to break that out as a first change, not sure how maintainers feel about whitespace only changes.

I think I'm -0.5 on the whitespace changes either here or separately.

As I said I'm happy to break that out as a first change, not sure how maintainers feel about whitespace only changes.

Our rule of thumb has been that if you're working on some piece of code, it's fine to include cleanups to that piece of code. And we prefer no pure style cleanup PRs. In this case it's kind of borderline; including with this PR was definitely better than separate.
I agree that the indentation is weird here. The downside is that it makes git blame harder to use. I'd lean towards merging as is, but not do these kinds of large-scale re-indentings for future PRs.
I'll leave it open for a day or two in case there's objections.

Okay no further comments, so merged. Thanks @sethtroisi


Fix some metrics

@ymatsuda
Also change the punctuate function to use clock time, and add the client-Id for metrics prefix.

lgtm


Floor instead of round

I've tested this for map without tiled service (with bboxMax set) and it works much better...

Looks good, thanks for helping!

I thank you for your work!


Shared K/V Storage for Workflow Functions

Problem
Some use-cases requiring sharing information between functions in a graph. Ex, in a PDF processing workflow -
def parse_docment(file: File) -> Document:
   # file contains metadata such as file name, url ,owner, etc, which needs to be
  # written into databases but the output of this function only contains Pages
  # and the file metadata is not shared
   ...

def chunk(doc: Document) -> List[Chunk]:
  ...

def embed_and_Write(chunk: Chunk) -> None:
   # Need the file name here so that it can be written into the vector db along side the chunk and embeddings
   # for citations

In this example we want some information from File to be available in downstream functions. It's possible to add these in the output of the first function but that becomes cumbersome and often repetitive if the information has to be shared across all functions.
Solution -
Provide a shared Dictionary to be mutated and read from every function. A new dictionary is initialized for every Graph invocation and is persisted by Indexify
from indexify import Dict

@indexify_function()
def parse_document(file: File) -> Document:
   kv = Dict.for_current_invocation()
   kv["file_name"] = file.metadata["file_name"]
   kv["some_other_metadata"] = file.some_other_metadata
   .....

@indexify_function()
def chunk_and_embed(chunk: Chunk) -> None:
   file_name = Dict.for_current_invocation["file_name"]
   vector_db.write(embeddings, metadata={"file_name": file_name}

Any function can get a reference to the Dictionary, and read/write to it to share information across them. In the backend we will implement persistence storage for them transparently.

Should we call it KV cache or something along those lines. Also impose a size limit on the object?

@stangirala The storage is going to be persistent and not a volatile cache. Under the hood we are going to use blob store so there is no limit per se.

I like the feature!
Here are some thoughts about it. In the hope of providing possible improvements without muich bikeshedding.
1. Naming
I feel like the use of K/V or Dict is too generic. Especially if we introduced other SDKs.
Some possible alternatives:

graph invocation
graph invocation context <- My preference.
graph run context
graph invocation data
graph run data

2. Conflict resolution
In the case of parallel execution of graph nodes, I think we will need to define how to deal with conflicts. i.e: if Node2 puts A=1 and Node3 puts A=2 at the same graph execution step. Otherwise we risk introducing unpredictability.
3. Extending the idea
If we went with graph invocation context, we could also provide metadata about the current invocation:
class GraphInvocationContext(BaseModel):
    "id is the graph invocation id"
    id: str
    "data contains the user-managed graph specific data available to all of its functions."
    data: Dict[str, any] # or user_data
    # also :graph_version, invocation_number, started_at, image, image_version, ...

4. Python SDK API
It think it would be more natural to call a function on a graph or on the IndexifyFunction class.
Maybe:
Graph.current_context.id # return the invocation id
Graph.current_context.data # return the user managed data
# or when subclassing IndexifyFunction"
self.current_context.id
self.current_context.data

@seriousben Great points. Extending your idea here to some concrete APIs -
from indexify import get_graph_context

@indexify_function()
def my_func(input): Output:
  ctx: InvocationContext = get_graph_context()
  # ctx.invocation_id  - returns the current invocation id
  # ctx.graph_name - returns the graph name
  # ctx.set(key, value) -> Sets a Key where the last write wins
  # ctx.get(key) -> (Value, Version)
  # ctx.set(key, value, version) -> CAS based PUT to support writes under high concurrency

What do you think?

What do you think?
That is great.
We could make invocation_id and graph_name as readonly.

For Set, would it make sense to detect when a key gets updated by two parallel invocations and prevent it?
Even if we did CAS based PUT (or mutexes), the joining function would still get a value that is would not be deterministic. So different runs of the same graph could result in a different value for the same key.
With all that said, maybe implementing a single way to Set and a single way to Get is sufficient for now. As long as the possible race condition is documented. Maybe that allows us to first implement a simpler API like: ctx.user_data.key = value.

For Set, would it make sense to detect when a key gets updated by two parallel invocations and prevent it?

CAS does that. It's the standard across every K/V api out there. And the default path is making the last write win if the user doesn't pass the version of the object that it updated.

I really like this idea.
I like your name suggestion @seriousben, graph invocation context
My only suggestion would be to make the context exist within the decorator and be an optional parameter to be able to be used like this:
@indexify_function()
def my_function(graph_ctx, other_param):
    print("Inside the function:", graph_ctx.get('text'), other_param)

@indexify_function()
def my_other_function(other_param):
    print("Inside the other function:", other_param)

This way you would not have to import it, but I'm okay without having it like this


Considering iterable as proper return type declaration for generators

Inpsyde.CodeQuality.ReturnTypeDeclaration.NoGeneratorReturnType complains about the following:
public function listSomething(): iterable {
     yield 1;
     yield 2;
}

I'm not sure if iterable suggests a rewinding of the returned list because that wouldn't be possible. If not, this construct should be allowed IMO.

The error exists because when the rule was written iterable was not a valid return type. So yes, there should no error for this.
That said, I would not suggest to use iterable as return type for a Generator.
iterable means there's no guarantee the return value is an object, so the only way to iterate is to use foreach.
Which means there's no way to check if the iterable is consumed. Take as example the code:
function loopTheList(iterable $iterable): void
{
     // don't know if is an object, I can't call methods... can only use foreach
     foreach ($iterable as $item) {
        //
     }

     thenCallThis($iterable);
}

function thenCallThis(iterable $iterable): void
{
     // don't know if is an object, I can't call methods... can only use foreach
     foreach ($iterable as $item) {
        //
     }
}

loopTheList(listSomething());

I've used the functions according to their signature, but still a fatal error occurs.
So, unless we want to have a try / catch block everytime we use a foreach on something is not an array, this is not ideal.
So even if generators satisfy iterable type, I would suggest, when possible, to use at least Iterator, so that clients of the return value could use while ($it->isValid()) { $it->next(); } to iterate, and that is compatible with Generators. Still even Iterator is not ideal... because rewind() method could cause an exception, but using try / catch to wrap a rewind() is not the same to use it for every foreach.
Anyway, I'm going to fix this rule because is signaling an error that is not an error.

8b3abeb fixes this.

That said, I would not suggest to use iterable as return type for a Generator.

Good point

Included in 1.0.0-beta.7.
Closing. Thanks for reporting.


Lists of bugs I have encountered

The issues I have encountered so far (May vary for other users idk)
Major bugs

Songs fail to download
Ticked on options doesn't save/resets after closing
Reopens TOS at every open

Minor bug

Death counter not working (which is understandable considering it's WIP)

Thanks for reporting. It's likely that content.json isn't saving under the GDH folder due to rights permissions. Also, try downloading the music without loading the GDH mod. Also, provide more information about the not working death counter.

Thanks for reporting. It's likely that content.json isn't saving under the GDH folder due to rights permissions. Also, try downloading the music without loading the GDH mod. Also, provide more information about the not working death counter.

Tried. It seems that GDH v3 Is somehow causing issues with downloading songs. On the death counter however, not really much to say about it, the counter doesn't go up and just stays at 0.
But I feel like I should ask, would this be an easy fix? Are we expecting a GDH v3.1 soon?

https://github.com/TobyAdd/GDH/assets/66429886/54b22286-5b88-4767-b4fd-3519b56346fb
Death counter initially worked fine, can you show me how it works for you?

Record_2024_03_26_15_55_25_691.mp4
Death counter initially worked fine, can you show me how it works for you?

Death counter works now, my apologies. It turns out it was working, just not the way I expected. I thought it would keep count of the deaths in Normal mode without the use of Noclip.

Also, please add me as a friend on Discord, as I need more details to understand why autosave isn't working
@tobyadd


MSSQL Driver

Description
Hello, i have a problem with the sql driver in new version of dbeaver enterprise (23.0 – 2023-02-28 20:38:32)
Problem that didn’t exist before.
Thanks

DBeaver Version
Enterprise 23.0
Operating System
Windows 11
Database and driver
No response
Steps to reproduce
No response
Additional context
No response

Version 23.0 is not released yet (you probably use EA version). This problem will be fixed in the final release.
Thanks for the bug report.


MileStone1 Completed Awesome Book with  ES6

This is Awesome book ES6  project and in this project, all the functions are separated as a module.

Class for Book
Class for Menu
module for elements
luxon package through npm for displaying time in the project
Fix linters

@TedLivist  Thank you


Remove unused icons & add color customization

Issue
NA
Description

I removed unused icons from the sprite
I added currentColor property to each path and group inside SVG to allow the color customization

Additional context

Gravitee.io Automatic Deployment
A prerelease version of this package has been published! 🚀
To use it in your project run the following lines:
npm install<EMAIL_ADDRESS># or
yarn add<EMAIL_ADDRESS>

Gravitee.io Automatic Deployment
A prerelease version of this package has been published! 🚀
To use it in your project run the following lines:
npm install<EMAIL_ADDRESS># or
yarn add<EMAIL_ADDRESS>

Gravitee.io Automatic Deployment
A prerelease version of this package has been published! 🚀
To use it in your project run the following lines:
npm install<EMAIL_ADDRESS># or
yarn add<EMAIL_ADDRESS>

Gravitee.io Automatic Deployment
A prerelease version of this package has been published! 🚀
To use it in your project run the following lines:
npm install<EMAIL_ADDRESS># or
yarn add<EMAIL_ADDRESS>

:tada: This PR is included in version 2.6.1 :tada:
The release is available on:

npm package (@latest dist-tag)
npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

Gravitee.io Automatic Deployment
A prerelease version of this package has been published! 🚀
To use it in your project run the following lines:
npm install<EMAIL_ADDRESS># or
yarn add<EMAIL_ADDRESS>

Gravitee.io Automatic Deployment
A prerelease version of this package has been published! 🚀
To use it in your project run the following lines:
npm install<EMAIL_ADDRESS># or
yarn add<EMAIL_ADDRESS>


Add test and linting for notebooks

Similar to https://github.com/OpenSenseAction/poligrain/pull/11 we have to add linting and tests for notebooks.

I am a bit confused, but it seems that this was already done in #1 and there were some CI errors because of notebooks in the last PRs. Hence, I close this here.


Added S3 dep and some version updates

Description of what I changed
Fixes #1011
It also updates some deps/versions.

E2E test

TESTED:
Did a sample run with a S3 bucket for the output and verified the output files are created (note this needed AWS_REGION, AWS_SECRET_ACCESS_KEY and AWS_ACCESS_KEY_ID to be set):
java -cp ./pipelines/batch/target/batch-bundled.jar com.google.fhir.analytics.FhirEtl --sourceJsonFilePattern=[PATH]/synthea-hiv/768_patients/* --resourceList="Patient" --parallelism=30 --outputParquetPath=s3://[BUCKET]/parquet_from-json_768_flink --runner=FlinkRunner

Checklist: I completed these to help reviewers :)

[x] I have read and will follow the review process.

[x] I am familiar with Google Style Guides for the language I have coded in.
No? Please take some time and review Java and Python style guides.

[x] My IDE is configured to follow the Google code styles.
No? Unsure? -> configure your IDE.

[ ] I have added tests to cover my changes. (If you refactored existing code that was well tested you do not have to add tests)

[x] I ran mvn clean package right before creating this pull request and added all formatting changes to my commit.

[x] All new and existing tests passed.

[x] My pull request is based on the latest changes of the master branch.
No? Unsure? -> execute command git pull --rebase upstream master

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 50.60%. Comparing base (656f7b1) to head (8ff4b7b).

Additional details and impacted files
@@            Coverage Diff            @@
##             master    #1066   +/-   ##
=========================================
  Coverage     50.60%   50.60%
  Complexity      674      674
=========================================
  Files            91       91
  Lines          5511     5511
  Branches        707      707
=========================================
  Hits           2789     2789
  Misses         2461     2461
  Partials        261      261

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.