⚠ Bofrost.de has degraded performance

In eef0d56, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 1237 ms

Resolved: Bofrost.de performance has improved in 287c5fc after 36 minutes.


Deprecated Ollama Embeddings Work (path "@langchain/community/embeddings/ollama") , but the "@langchain/ollama" import don't Work

Checked other resources

[X] I added a very descriptive title to this issue.
[X] I searched the LangChain.js documentation with the integrated search.
[X] I used the GitHub search to find a similar question and didn't find it.
[X] I am sure that this is a bug in LangChain.js rather than my code.
[X] The bug is not resolved by updating to the latest stable version of LangChain (or the specific integration package).

Example Code
I was testing the embeddings for a future project that i need to create, and i have found out that the newer version of the class "OllamaEmbeddings" don't quite work.
The following code:

import { OllamaEmbeddings } from "@langchain/ollama";

(async () => {

  const model = new OllamaEmbeddings({
   model: "nomic-embed-text",
   onFailedAttempt: (err: any) => {
    console.log("[Error]: ", err);
   }
  });

  const embededText = await model.embedQuery("test");

  console.log(embededText);

})();

This Returns an Not Found error, it tries to connect to the Ollama API but it says it don't find.
The error:
ResponseError: 404 page not found
    at checkOk (/Users/user/Documents/projetos/testProject/node_modules/ollama/dist/shared/ollama.384eb0a9.cjs:72:9)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async post (/Users/user/Documents/projetos/testProject/node_modules/ollama/dist/shared/ollama.384eb0a9.cjs:119:3)
    at async Ollama.embed (/Users/user/Documents/projetos/testProject/node_modules/ollama/dist/shared/ollama.384eb0a9.cjs:392:22)
    at async RetryOperation._fn (/Users/user/Documents/projetos/testProject/node_modules/p-retry/index.js:50:12) {
  error: '404 page not found',
  status_code: 404,
  attemptNumber: 7,
  retriesLeft: 0
}

But when i use axios or the older version, everthing works just fine.
Same code, but using the older version (the code that works Ok):

import { OllamaEmbeddings } from "@langchain/community/embeddings/ollama";

(async () => {

  const model = new OllamaEmbeddings({
   model: "nomic-embed-text",
   onFailedAttempt: (err: any) => {
    console.log("[Error]: ", err);
   }
  });

  const embededText = await model.embedQuery("test");

  console.log(embededText);

})();

The test that i have made with "axios" works, and it ends up being a simple test:
import axios from "axios";
import { OllamaEmbeddings } from "@langchain/ollama";

(async () => {

  const res = await axios.post('http://localhost:11434/api/embeddings', {
   "model": "nomic-embed-text",
   "prompt": "testing"
  }, {
   validateStatus: () => true // Don't want axios to throw errors
  });

  if (res.status !== 200 && res.status !== 201) {

   console.log('[ERROR]: ', res.data);
   return;
  }

  console.log(res.data);

})();

Error Message and Stack Trace (if applicable)
No response
Description
It says in the docs and in the code that the version of "@langchain/community/embeddings/ollama" is deprecated, but that version is working and the other version is not actually working.
System Info
node version v22.6.0
npm version 10.8.2
Mac
Package.json file:
{
  "name": "test",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
    "dev": "ts-node src/index.ts"
  },
  "devDependencies": {
    "typescript": "^5.5.4"
  },
  "dependencies": {
    "@langchain/community": "^0.2.28",
    "@langchain/core": "^0.2.27",
    "@langchain/ollama": "^0.0.4",
    "@langchain/openai": "^0.2.7",
    "@types/node": "^22.4.0",
    "axios": "^1.7.4",
    "cheerio": "^1.0.0",
    "langchain": "^0.2.16"
  }
}

Apologies for missing this, this should now be present!

I still have this exact same issue with 0.1.0.

@chaostracker what version of ollama do you have installed? You can check via:
ollama -v

I have version 0.3.11 installed, and it's working properly.

It was ollama version 0.2.1.
I upgraded to 0.3.11 and now it works as expected, so thanks.


Release version doesn't match version installed

I've installed v1.1.1 from https://github.com/Microsoft/WinAppDriver/releases/tag/v1.1.1 and it gets installed as <IP_ADDRESS>. Seeing this on Windows 10.

Also noticed it in version 1.1 that installed as <IP_ADDRESS>.

We've had some internal builds, hence why the release version deviated.
This should be resolved with v1.2.


Prepend instance name when running with concurrent-instances > 1

Would be great to prepend the stdout/stderr from a skeema push to include the instance name, as right now it all goes to stdout in sequence, makes it hard to see what the progress is. An example from a run on multiple schemas with pt-osc:
Copying `db`.`table`:  58% 02:05 remain
Copying `db`.`table`:  40% 03:39 remain
Copying `db`.`table`:  54% 02:33 remain
Copying `db`.`table`:   2% 18:08 remain
Copying `db`.`table`:  68% 01:36 remain
Copying `db`.`table`:  48% 03:13 remain

So it would be great if the instance could be shown before each line of stdout, maybe a feature if you specify concurrent-instances > 1 in the .skeema file?
-- instance: my.db1.com:3306 - Copying `db`.`table`:  58% 02:05 remain
-- instance: my.db2.com:3306 - Copying `db`.`table`:  40% 03:39 remain

and so on.

Thank you for the feature request! Totally agree that the output is jumbled when combining ddl-wrapper with concurrent-instances -- I've lazily had a TODO comment about this topic for an embarrassingly long time :)
I like your suggestion of prepending the instance to each line, that's nice and readable.


telegram bot remains inactive on node-red

I am having an issue on which i am using a telegram bot but remains inactive on node-red.
I have configured this node and filled all the details correctly and created the webhook on telegram and exposed my localhost using ngrok.
Any suggestions ?

Hi Shiva node-red integration was a bit of an experiment and unfortunately they don't play very well. I'm going to close this, but feel free to participate in the node red repo for botmaster.


Fill device_matrix_data

This PR allows to fill the entries of a device_matrix_data with a specified value. The main use case is in combination with sum_duplicates and remove_zeros to simplify the assembly setup.

This would also mean to change the constructor (which is more important to me). The alternative would be to introduce an enum for the two different initialization modes (i.e. fill_mode::uninitialized, fill_mode::zero), which would be fine with me. The only downside is that it would be longer, fill_mode::zero vs {0, 0, 0}.

For me the constructor is more important than the fill method. Users usually know when they create the device matrix data if it's going to be used in an assembly setting or not. For the assembly, I assume that they almost always want to zero out the data, because otherwise sum_duplicates and remove_zeros doesn't work. So we can make it easier for users by allowing them to fill the data during the constructor.

Why does it need to be done in a single step? Can't it be two steps? Can you describe a matrix assembly scenario where the number of values to be written isn't known beforehand? And if not, wouldn't it be more efficient anyways to compute the storage requirements beforehand and leave no gaps?

@upsj @yhmtsai it is pretty common in FEM applications to not use the total number of DOFs, but instead use num_elements * num_dofs_per_element. This is an overestimation, but usually not too excessive. This makes the assembly a lot easier, since you can then assemble each element in parallel, and then have only a post-processing step to create the correct connectivity pattern. AFAIK, this is also the idea behind the sum_duplicates functionality.
If you would use a structure with just size of num_total_dofs, then you would need atomic updates to handle DOFs that are shared by multiple elements, which are nearly all DOFs in FEM with continuous elements. From that perspective, the approach of overallocating and reducing at the end seems more efficient to me for a single matrix assembly. Of course, if you have transient problems, we might want to provide a better way to repeatedly assemble a matrix with the same sparsity structure. But IMO that is out of the scope for this PR.

@upsj doing it in one step is syntactic sugar. But so is setting the dimension. The one step is more convenient, so it might be easier for the user, both in terms of slightly less code, and discoverbility. Right now, do our users know that they will get uninitialized memory? I would not count on it.
Besides, I think how the memory is initialized is a natural property of the constructor, so it makes sense to specify it there.

I know the common approach of assembling elements independently (which is what I built sum_duplicates for), but what I'm not familiar with is the case where part of the preallocated storage is left unused. Is that related to boundary conditions? It should be straightforward for users to fix this in their own assembly routines (just set the values to 0), but I'm not opposed fundamentally to it, just want to make it an explicit operation.
On the syntactic sugar side, I slightly disagree: There are unchangeable properties of the device_matrix_data (size, nnz) and there are changeable properties (actual values), and I think it is unacceptable to leave unchangeable properties uninitialized, but the changeable ones are fine. We do the same thing across almost all data structures in Ginkgo (only structures with row_ptr semantics like Csr and Sellp get initialized partially, because otherwise an empty matrix would already crash many algorithms), which is why I at least want to think twice before introducing some initialization semantics. If we do want to add them, I would probably consider adding them to other matrix types as well in the long term.

Used storage can appear in FVM or FDM on the boundary. From the user perspective, it should not matter if they explicitly set those to zero or just skip them. In some cases, setting the values might seem a bit odd, because it would involve invalid non-zero coordinates.
If you think for example of a 3pt stencil, the idiomatic way to assemble it would be
if(i > 0) add(i, i - 1, -1);
add(i, i, 2);
if(i < n - 1) add(i, i + 1, -1);

where add(0, -1, 0) would seem a bit odd (and might even lead to invalid memory access). Similar things could happen on the FVM side with the boundary handling.

The question there is: Is the resulting row/column then zero itself? Because that would make the matrix singular, and maybe bring us back to #842 if we want to use it in solvers. Do we need some post-processing functionality for that use case as well?

Not in my example, since i only iterates over the interior points. But I think that gets a bit off-topic. Point is, users might not expect the memory to be uninitialized and just assume that it is zeroed out.

I see, that makes sense. But that would not work in a more generic grid, where the indexing isn't as simple. But yes, let's not get too much off track.
What I'm saying is: All of our matrix data structures do not initialize their arrays, so that is an expectation that would already be formed in other parts of the code. But again, I am not opposed to it, I just want to suggest that we do it everywhere, if we do it. In that case, fill_mode should be defined somewhere more central, and array, matrix types and device_matrix_data should all use them (of course not in this PR)

I agree that if we accept this PR, it should be added throughout Ginkgo. But IMO, this should be done in subsequent PRs, to keep the changes in each one short. I would also leave fill_mode where it is for now, since moving it to array.hpp for example but not adding it to gko::array seems quite incomplete to me.
I would also suggest changing the enum name to init_mode, since that might be a bit clearer.

The take-away from the discussion in today's meeting:

The safety of pre-initialized data should outweigh the performance advantage of not initializing data, so the default case should be initializing it to zero, with the option to leave it uninitialized with a special constructor/create function.
Move forward with some kind of initialized constructor, either using an enum to mark initialization status or with a separate function (create_)uninitialized with the same parameters as the constructor. My personal preference would be on different functions, among other things since the enum would imply a runtime choice rather than a static choice in the source code.
Make all matrix types initialized to zero by default, with a create_uninitialized copy of the original create function
Arrays should remain uninitialized, since they don't have a canonical default value.

I changed this PR to only add the fill_zero method. Initializing the data with zeros, will be handled in a different PR, since it will be handled in a more general fashion.


Initialize NUMBA_DEFAULT_NUM_THREADS with a batch scheduler aware value

Feature request
As it is numba initializes NUMBA_DEFAULT_NUM_THREADS with the number of cores of the machine with multiprocessing.cpu_count().
When running a job through a batch scheduler (e.g., SLURM), not all cores might be useable (when the job request does not use an entire compute node).
In this case, using a scheduler aware number of cores sounds a better default, so one does not need to configure the number of threads to use when having requested only part of a machine.
multiprocessing.cpu_count's doc suggests to use len(os.sched_getaffinity(0)) (os.sched_getaffinity) when available.

Thanks for the suggestion. IIRC this code hasn't been updated since both Python 2 and 3 had to be supported. Binding threads to accessible cores by default seems like a good option now it's available, os.sched_getaffinity is Python 3.3+ https://docs.python.org/3.3/library/os.html#interface-to-the-scheduler.

OK, I propose a PR then.

I believe I am experiencing a related issue when executing processes via SLURM. I often encounter this error message:
OMP: Error #179: Function Can't open SHM failed:
OMP: System error #0 Sucess

This error message leads the process to be aborted and results in a core dump.
Based on what has been mentioned here, would it be sensible to set NUMBA_DEFAULT_NUM_THREADS to the number of cpus requested via SLURM? Similarly to what @t20100 said, I am not using all the available resources of the node. I am just requesting part of the cpus (via --cpus-per-task).

The purpose of PR #7088 which fixes this issue was to set NUMBA_DEFAULT_NUM_THREADS to the number of available cores to the Python process (retreived with os.sched_getaffinity), and this should take into account the resources allocated by SLURM.
Anyway having more threads than cores should not crash the process but degrades performances.

Thanks for the feedback, @t20100. If you have the time, could you suggest any best practices I should follow to address this error? Or is it possible that the error may not be related to this issue?

I'm not sure that this error is to do with threads, it looks like a call to shm_open is probably failing somewhere in the OpenMP runtime. Looking at the source code for it in e.g. LLVM's OpenMP implementation (in the LLVM project, look in openmp/runtime/src/kmp_runtime.cpp around the start of function __kmp_register_library_startup). It seems like the runtime startup tries to create a new shared memory object, and if that fails then it tries to use an existing open one, and it's when that fails the error message Can't open SHM failed appears. Are there perhaps two OpenMP runtimes being used in the same process?

Thank you for your help and for looking into the LLVM code, @stuartarchibald.
I am very new to OpenMP, but could this error be caused by a conflict between the OpenMP implementations used by Numba (v. 0.56.4) and Numpy (v. 1.23.5)?
On the other hand, since I am currently using these libraries in a conda environment, I believe their implementation should be independent of how SLURM uses OpenMP. However, if this can add more context, this is how I initialize each process via SBATCH:

 sbatch script
#!/bin/bash

#SBATCH -N 1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=6
#SBATCH --mem=100G
#SBATCH --gres=gpu:1

srun \
--container-mounts=/path1/:/path2 \
--container-workdir=/path2 \
--container-image=nvcr.io#nvidia/cuda:10.2-devel-ubuntu18.04 \
--output=log.out \
bash /path_to_file/file.sh

And this is the (simplified a bit) file.sh that is being called:

`file.sh`
#!/bin/bash
set -e

# opencv.
apt-get update && apt-get install libgl1 -y

export CONDA_DIR=/path_to_conda/miniconda
export PATH=$CONDA_DIR/bin:$PATH
conda init bash
. ~/.bashrc
. $CONDA_DIR/etc/profile.d/conda.sh

conda activate myenv

bars=(1.0 2.0 3.0)
foos=(1.0 2.0 3.0)

for bar in "${bars[@]}"; do
    for foo in "${foos[@]}"; do

        python module1.py  --bar "$bar"  --foo "$foo"
        python module2.py
        python module3.py --bar "$bar"  --foo "$foo"

    done
done

The current behavior is that, it does one inner-loop iteration, but at the second inner-loop iteration, the error mentioned above is raised:
OMP: Error #179: Function Can't open SHM failed:
OMP: System error #0 Sucess

After thinking more about @stuartarchibald's feedback, I think the error may be caused by the use of set -e command at the top of the script. This command causes the script to immediately exit  if a command exits with a non-zero status.
Therefore even though the second part of the error message indicates OMP: System error #0 Sucess (which I believe means that the previous error was resolved), the script still results in a core dump because of the non-zero status from the previous error (OMP: Error #179: Function Can't open SHM failed:).
While I need to confirm this by testing the script with set -e removed, I believe this could be a plausible solution.
Thank you again for your help @stuartarchibald @t20100. I apologize that my issue ultimately does not appear to be directly related to Numba.

@javierttgg no problem, am glad you have some things to test out to try and find the cause of the problem. If the problem persists, perhaps open a new issue, if possible with a minimal working reproducer (SLURM is just running bash scripts so it should be possible to mock this by running multiple processes from a shell?), many thanks.


Define available callbacks for events used as directives

Hi, thanks for this amazing template engine. Here is a suggestion.
I currently use events with this kind of code:
<input type="text" :onchange="{{ ctrl.changeText }}">

import Template from './Template.monk';
let state = {
  someStateVariable: 'abc',
  ctrl: {
    changeText: e => { /* ... */ }
  }
}
view = Monkberry.render(Template, el, {
  directives: { /* ... */ }
})
view.update(state)

I would like to configure available callbacks the same way as for directives:
import Template from './Template.monk';
let state = {
  someStateVariable: 'abc'
}
view = Monkberry.render(Template, el, {
  directives: { /* ... */},
  callacks: {
    changeText: e => { /* ... */ }
  }
})
view.update(state)

I prefer to not extend the template class. I just need to define available callbacks, like methods in Vue.

NB: Personally, I would prefer to use the delegating way. But I can't, because the selector is applied after the rendering of directives. I have sub-components included by directives. The following code interferes with DOM nodes of the sub-components:
view.on('click', 'div', (event) => { ... });

IMO the selector should be applied before to render the directives.

So you proposing to add methods? Like this:
Monkberry.render(Template, el, {methods:
  callback: () => {...}
});

Yes, but I'm unsure that "methods" is the right term. A method is in the context of the OOP. But it is precisely in order to avoid OOP that I need this feature. Maybe "functions"? Or "procedures"?
Or perhaps we can consider it is a way to provide methods of the template (the template is like an instance), but IMO it's not the proper term.

callbacks?

It is my first proposition. A callback.

In computer programming, a callback is a piece of executable code that is passed as an argument to other code, which is expected to call back (execute) the argument at some convenient time.

We can consider that we pass a list of callbacks as arguments to the code of the template, which we expect that they will be call back at some convenient time. It seems OK.
It depends on which is the syntax in the template. For example, we want to define a callback named onChangeText. In the template, which syntax have we to use?
<input type="text" :onchange="{{ onChangeText }}">

or with a prefix?
<input type="text" :onchange="{{ controller.onChangeText }}">

Without a prefix, a callbacks option seems a good term.
However, if we use a prefix (here controller), then I think it would be better to use the same prefix in options:
Monkberry.render(Template, el, {
  controller: {
    onChangeText: () => {...}
  }
});

Maybe allow to use or not prefixes?
Monkberry.render(Template, el, {
  callbacks: {
    controller: {
       onChangeText: (event) => {...}
    }
  }
});

I'd like that!

Will try to implement it in next release.

Hello, is there a date scheduled for the release of this feature?

Hi,
I haven't time for scheduled work on this project any more. But I have plans on releasing new major version v5, but again – I don't know when.
If you, or somebody else wants to become a maintainer – your're welcome.


Fix typo in module name

Fixes #15
Duplicate of #16 (Opened due to urgency)

@suyograo any chance of merging this and publishing new version? Obviously this is a critical bug.

@shaharmor Thank you.

@shaharmor thanks! 1.0.2 has been published

@suyograo thank you very much! i've added another PR (#20) with the changelog updated to reflect the change

Done. Apologies hitting this :(


Server example does not run

When I run the server example using node test_server.js I get the following error traces
guhar@HG-01881061-LM8:~/src/node_modules/mathjax-server$ node test_server.js
Server listening on port 8003
Server listening on port 8003
Server listening on port 8003
Server listening on port 8003
Server listening on port 8003
Server listening on port 8003
Server listening on port 8003
Server listening on port 8003
Error: TypeError: Cannot read property 'replace' of undefined
    at Object.MathJax.Extension.tex2jax.patternQuote (file:///Users/guhar/src/node_modules/mathjax/unpacked/extensions/tex2jax.js?rev=2.6.1:121:39)
    at Object.MathJax.Extension.tex2jax.endPattern (file:///Users/guhar/src/node_modules/mathjax/unpacked/extensions/tex2jax.js?rev=2.6.1:124:28)
    at Object.MathJax.Extension.tex2jax.createPatterns (file:///Users/guhar/src/node_modules/mathjax/unpacked/extensions/tex2jax.js?rev=2.6.1:96:23)
    at Object.MathJax.Extension.tex2jax.PreProcess (file:///Users/guhar/src/node_modules/mathjax/unpacked/extensions/tex2jax.js?rev=2.6.1:85:14)
    at Function.CALLBACK.execute (file:///Users/guhar/src/node_modules/mathjax/unpacked/MathJax.js:236:26)
    at cb (file:///Users/guhar/src/node_modules/mathjax/unpacked/MathJax.js:218:59)
    at MathJax.Object.Subclass.Execute (file:///Users/guhar/src/node_modules/mathjax/unpacked/MathJax.js:419:36)
    at Function.CALLBACK.execute (file:///Users/guhar/src/node_modules/mathjax/unpacked/MathJax.js:236:26)
    at cb (file:///Users/guhar/src/node_modules/mathjax/unpacked/MathJax.js:218:59)
    at BASE.Object.Subclass.Process (file:///Users/guhar/src/node_modules/mathjax/unpacked/MathJax.js:488:38)
Error: TypeError: Cannot read property 'replace' of undefined
    at Object.MathJax.Extension.tex2jax.patternQuote (file:///Users/guhar/src/node_modules/mathjax/unpacked/extensions/tex2jax.js?rev=2.6.1:121:39)
    at Object.MathJax.Extension.tex2jax.endPattern (file:///Users/guhar/src/node_modules/mathjax/unpacked/extensions/tex2jax.js?rev=2.6.1:124:28)
    at Object.MathJax.Extension.tex2jax.createPatterns (file:///Users/guhar/src/node_modules/mathjax/unpacked/extensions/tex2jax.js?rev=2.6.1:96:23)
    at Object.MathJax.Extension.tex2jax.PreProcess (file:///Users/guhar/src/node_modules/mathjax/unpacked/extensions/tex2jax.js?rev=2.6.1:85:14)
    at Function.CALLBACK.execute (file:///Users/guhar/src/node_modules/mathjax/unpacked/MathJax.js:236:26)
    at cb (file:///Users/guhar/src/node_modules/mathjax/unpacked/MathJax.js:218:59)
    at MathJax.Object.Subclass.Execute (file:///Users/guhar/src/node_modules/mathjax/unpacked/MathJax.js:419:36)
    at Function.CALLBACK.execute (file:///Users/guhar/src/node_modules/mathjax/unpacked/MathJax.js:236:26)
    at cb (file:///Users/guhar/src/node_modules/mathjax/unpacked/MathJax.js:218:59)
    at BASE.Object.Subclass.Process (file:///Users/guhar/src/node_modules/mathjax/unpacked/MathJax.js:488:38)

I'm running node v5.6.0 and npm 3.6.0

Thanks for the trace. Does that happen when you start the server only or does it happen when you send a request to the server. If the latter, can you show the data you're posting? Thanks.

It happens as soon as I start the server

I cannot reproduce the problem. Here is what I did (first creating a new empty directory to work in):
1. downloaded the zip file for mathjax-server
2. unzipped the master zip file
3. changed to 'mathjax-server-master'
4. npm install
5. node test-server.js
6. In a new window, go the same directory and give 'node test-client.js'

I get back the SVG output expected. I'm using node v0.12.0 and npm 2.5.1 on FreeBSD.
Here is what npm installs
<EMAIL_ADDRESS>node_modules/mathjax-node
├──<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>├──<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>├──<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>└──<EMAIL_ADDRESS>

having troubles on Mac with the same commands, reopening.

I upgraded to node 5.6.0 and npm 3.6.0 and got the same results shown in the issue. I removed the configuration for inline delimiters and it works again. This should have no affect on the server since you pass the math strings in without delimiters anyway.
Let me know if this latest fix resolves your issue. Thanks.

Thanks - I forgot to indicate I was on OS X.
The server now runs with no error and the client also runs fine. However the output from the client is
<svg xmlns:xlink="http://www.w3.org/1999/xlink" width="0ex" height="0ex" style="vertical-align: 0ex; margin-bottom: 1px; margin-top: 1px;" viewBox="0 -13.9 0 27.9" xmlns="http://www.w3.org/2000/svg" role="math" aria-labelledby="MathJax-SVG-1-Title MathJax-SVG-1-Desc">
<title id="MathJax-SVG-1-Title">Equation</title>
<desc id="MathJax-SVG-1-Desc"></desc>
<defs aria-hidden="true"></defs>
<g stroke="currentColor" fill="currentColor" stroke-width="0" transform="matrix(1 0 0 -1 0 0)" aria-hidden="true"></g>
</svg>

As far as I can see there is no representation of the equation in there

you're right, I was just looking to see that svg was created. But the svg was blank. Now I've taken out the displaymath delimiter setup which again should have no effect on the server itself. Now I get a nice svg from the client.

Works perfectly now. Many thanks!


[BUG] Godot 3.3 export in android

Hi,
Describe the bug
_admob_singleton is found but get signal initialization_complete status NOT_READY [0].
so, not load_interstitial my ad  👎🏻
To Reproduce
Steps to reproduce the behavior:
https://github.com/Poing-Studios/Godot-AdMob-Android-iOS#android-v322
also same issues in example
:: https://github.com/Poing-Studios/Godot-AdMob-Android-iOS/tree/master/example
how can i figure out!!

Also i check in ios,
It's same issues in ios 14 [not show test ad] but ios 12 working fine [show test ad].

Thanks for open this issue, i will check it out soon.

Have you did this?

What's the Godot Version you are trying to use this Plugin? 3.3 or 3.3.1?

Yes use custom build check mark and also plugin admob check mark.
Godot version 3.3 and android-standard-template-v3.3 both are same.

Hey, sorry for delay, what phone and Android Version you are trying to use the Plugin?

Phone: OPPO F3, android version : 6.0

@ATOshailesh , Maybe the Android Versions is the cause of problem, we are using the newest Google Mobile Ads SDK: 20.1.0, i don't know if they stop to work on this version, do you have other phone to test?
Can you please test with an Android Simulator as well? I'm testing on Android 10 and it's working normally, sorry for delay i'm very busy these days.

Also i am try to other android tablet but not success.
_on_AdMob_initialization_complete status get not_ready.
using : https://github.com/Shin-NiL/Godot-Android-Admob-Plugin
it's work in android device but not in ios :<

@ATOshailesh , i made a .APK with 3.3 version to you test, on my Android 10 is working normally.
https://www.mediafire.com/file/9le5357o24uwzb8/AdMob33standard.apk/file

@ATOshailesh please see this video tutorial that i made (maybe is not good because is the very first video tutorial i made 🤣 )
https://www.youtube.com/watch?v=5J_RP2sCf7Y

Hey @ATOshailesh , any news?

sorry for delay,
Nice one to creating a video,
i follow same as in video but get status 0 in initialization_complete
mark : new upload android-standard-template-v3.3.zip -- you forgot AdMob.gdap file so, i used before download file like inside dependencies Google Mobile Ads SDK: 20.1.0

Hey @ATOshailesh do you have Discord? Please join here for a fast conversation: https://discord.gg/FAMNVzBJ
I saw here the .gdap is missing, I will fix that, thank you for telling me.

@ATOshailesh please test it now

Sorry I haven't Discord.
i test too many time but not getting to ready status in initialization_complete.

Hi @ATOshailesh  have you tested this .APK?
https://www.mediafire.com/file/9le5357o24uwzb8/AdMob33standard.apk/file

Hey @gumaciel , this apk test it's fantastic working in my android device.

Hey @gumaciel , this apk test it's fantastic working in my android device.

Well, if this APK is working, then theres nothing wrong with the Plugin, i guess.
I think you are doing something wrong, or your computer is not properly configured to export with Android Plugins.
Please try to join in our Discord, then i can share with you my screen, so you will be able to make the Plugin works for you as well.
https://discord.gg/FAMNVzBJ

Hi @gumaciel Very thankful you support me.
Finally i create my won plugin because this one also fail in ios 14.
https://github.com/ShaileshDhaduk/Godot-Admob-android-ios

Hi @ShaileshDhaduk , congratulations, but as you can see on this video it works on iOS 14: https://m.youtube.com/watch?v=pkTUVArtG7Y&t=980

wow @gumaciel  it's working in ios 14.
remove old plugins/bin/ file and again download to add.
Thank you so much.

Hi @ATOshailesh any update?


Missing output when encountering error trying to run external merge utility

No error visible in output when trying to use the external merge tool. When trying to run it form GitSavvy I get the following in the output pane and console:
GitSavvy.core.exceptions.GitSavvyError: `/usr/bin/git config merge.tool` failed with following output:

The actual message is missing.

/usr/bin/git config merge.tool returns exit code 1 without stderr output if it cannot find the config. Therefore you were not seeing any output here.

You are right. Thanks.

Anyway, #762 is address this. Thanks for the report.

Thanks for addressing this. It makes sense.


AudioKit-Swift.h - why some extensions listed and others not, ie. AKAudioFile's exportAsynchronously?

Hopefully this is a simple question with a simple answer -
I've noticed that the iOS framework's AudioKit-Swift.h bridging header (which can be viewed here for convenience: https://cdn.filestackcontent.com/HHYq68t9TWMBIQ9k5uJl?v=0) contains only a subset of functions, for example, AKAudioFile's extensions like exportAsynchronously is not made available in this bridging header. I'd like to use and expose those to ObjC and curious if there's an easy way I could do that from a fork with a custom build of the iOS framework and/or if it would be worth making those changes on master here?
Any help or pointers here would be greatly appreciated!
This is the best framework - just tremendous work - I marvel at the engineering often.
Curiously I notice the AudioKit-Swift.h header file that's generated ends up with 3 blank SWIFT_EXTENSION interfaces for AKAudioFile:
@interface AKAudioFile (SWIFT_EXTENSION(AudioKit))
@end

@interface AKAudioFile (SWIFT_EXTENSION(AudioKit))
@end

@interface AKAudioFile (SWIFT_EXTENSION(AudioKit))
@end

I'm guessing that's where some of the extensions like perhaps those from AKAudioFile+ProcessingAsynchronously.swift might end up but appears a good portion of those extensions are not exposed to ObjC.

My guess from having that kind of issue with other parts of AudioKit in Objective-C projects is that some types don't always translate to Obj-C at all, and this cascades to excluding some of the APIs using these types. In this case, I would think that the embedded enums used in these APIs is the cause (for example, ExportFormat is a complex enum inside the class extension).
Personally I'd be in favor of making AudioKit more open to legacy Objective-C but that comes at the cost of making the project less like a native Swift library - which has its own trade-offs.

Thank you for the insight @megastep - I may try simplifying the enum in a fork and rebuild the frameworks and see if that helps.

I'm not sure how I would even begin to act on this issue.  I think its probably easier to mix and match obj-c in a project than try to get all of AK working with Obj-c.  Sorry.

Totally understand @aure - would be too large an undertaking for such an elegant Swift codebase at moment. In meantime, I was able to expose the methods I need to ObjC by flattening the complex enum's, ie:
@objc public enum ExportFormat: Int {
        /// Waveform Audio File Format (WAVE, or more commonly known as WAV due to its filename extension)
        case wav

        /// Audio Interchange File Format
        case aif

        /// MPEG-4 Part 14 Compression
        case mp4

        /// MPEG 4 Audio
        case m4a

        /// Core Audio Format
        case caf

    }

    // MARK: - AKAudioFile public interface with private AKAudioFile ProcessFactory singleton

    // Returns a Uniform Type identifier for each audio file format
    static public func stringUTI(type: ExportFormat) -> CFString {
        switch type {
        case .wav:
            return AVFileTypeWAVE as CFString
        case .aif:
            return AVFileTypeAIFF as CFString
        case .mp4:
            return AVFileTypeAppleM4A as CFString
        case .m4a:
            return AVFileTypeAppleM4A as CFString
        case .caf:
            return AVFileTypeCoreAudioFormat as CFString
        }
    }

    // Available Export Formats
    static public var supportedFileExtensions: [String] {
        return ["wav", "aif", "mp4", "m4a", "caf"]
    }

Then adjusting the usage throughout and that opened all those extensions up to ObjC.


Add support for additional Jupyter Notebook tools

There are two we should consider:

[ ] Jupyter nbviewer can sometimes render Jupyter Notebook files that GitHub fails to render.
[ ] MyBinder allows users to run the notebook on the cloud and to modify it as needed.

Jupyter nbviewer badge added in 3e427e47415ab1b, will be merged in PR #1.


[Bug][MySql] Job restart failed from savepoint When set 'scan.startup.mode' = 'timestamp'

Search before asking

[X] I searched in the issues and found nothing similar.

Flink version
1.3.5
Flink CDC version
2.3,master
Database and its version
8.0
Minimal reproduce step

start job from specific timestamp.
pause the job and store the savepoint.
continue the job from the savepoint.

Caused by: java.lang.IllegalStateException: The connector is trying to read binlog starting at Struct{version=1.6.4.Final,connector=mysql,name=mysql_binlog_source,ts_ms=1687340016430,db=,server_id=0,file=,pos=7638,row=0}, but this is no longer available on the server. Reconfigure the connector to use a snapshot when needed.
	at com.ververica.cdc.connectors.mysql.debezium.task.context.StatefulTaskContext.loadStartingOffsetState(StatefulTaskContext.java:194) ~[classes/:?]
	at com.ververica.cdc.connectors.mysql.debezium.task.context.StatefulTaskContext.configure(StatefulTaskContext.java:117) ~[classes/:?]
	at com.ververica.cdc.connectors.mysql.debezium.reader.BinlogSplitReader.submitSplit(BinlogSplitReader.java:103) ~[classes/:?]
	at com.ververica.cdc.connectors.mysql.debezium.reader.BinlogSplitReader.submitSplit(BinlogSplitReader.java:71) ~[classes/:?]
	at com.ververica.cdc.connectors.mysql.source.reader.MySqlSplitReader.checkSplitOrStartNext(MySqlSplitReader.java:159) ~[classes/:?]
	at com.ververica.cdc.connectors.mysql.source.reader.MySqlSplitReader.fetch(MySqlSplitReader.java:71) ~[classes/:?]
	at org.apache.flink.connector.base.source.reader.fetcher.FetchTask.run(FetchTask.java:58) ~[flink-connector-base-1.17.0.jar:1.17.0]
	at org.apache.flink.connector.base.source.reader.fetcher.SplitFetcher.runOnce(SplitFetcher.java:162) ~[flink-connector-base-1.17.0.jar:1.17.0]
	at org.apache.flink.connector.base.source.reader.fetcher.SplitFetcher.run(SplitFetcher.java:114) ~[flink-connector-base-1.17.0.jar:1.17.0]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_302]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_302]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[?:1.8.0_302]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[?:1.8.0_302]
	... 1 more

What did you expect to see?
Successfully restoring tasks from savepoint
What did you see instead?
none
Anything else?
No response
Are you willing to submit a PR?

[X] I'm willing to submit a PR!

It has fixed in https://github.com/ververica/flink-cdc-connectors/pull/2220.


Add ThumbnailControl

Hi guys!
First of all: thanks for this awesome plugin! 😀
I would like to know if you have some ideas (and if is possible) to change the indicator of the CarouselView, to achieve the same thumbnail style as Syncfusion Rotator control:

Thanks in advance

Hi @stealthcold
Very good question.
Yes, you can achieve it yourself
But perhaps it can be great enhancement
So, i think, we can create ThumbnailControl
Is it urgent for you? You can try to do it yourself (Add horizontal listView or scrollView with the same ItemsSource etc.)

Hi @AndreiMisiukevich ,
Would be a nice feature!
Right now I'm trying to combine inside a StackLayout the CarouselView with a CoverFlowView right below.
My app needs such thing, but I can release without it by now.
Thanks,

Hey @AndreiMisiukevich,
I had no success with my Stack + Carousel + CoverFlowView idea. ☹
The CoverFlowView  doesn't have an "ItemTapped" event for me to link with the selectedIndex change of de Carousel. And don't know why, the CoverFlowView got some weird behavior when showing the images from the ItemSource (not scolling correctly and flickering).
Do you plan implement the thumbnails? I'll wait for it.
As I said before, I can release my app without it now.
Thanks,

@stealthcold hi, sorry for delay
Just tried to implement it with ListView -- no luck
I think, you can achieve it with HorizontalScrollView. Just put several items(images) with tapGesture to ScrollView.
I guess it's OK for you, if you don't have 10+ items in carousel.
As for virtualization...hm, i think CollectionView can help.
@Phenek sorry for disturbing :)
Are you still interested in supporting this repo (RE: CoverFlowView)

@AndreiMisiukevich
Thanks for the suggestions! I'll take a look!
Thanks,


Use ${env:ENV} style syntax when getting environment variables

The OpenTelemetry Collector supports both the legacy ${ENV} syntax as well as the new ${env:ENV} syntax (enabled by default since v0.62.0, see open-telemetry/opentelemetry-collector@b15179e4da112b8ce2b56c6cd336072f7307c87a, fully working for the use case of this Helm chart since v0.71.0, see open-telemetry/opentelemetry-collector@202c03010605012f00b01c45ff90b1a0afd46c01). The latter is preferred and we have updated examples in the OpenTelemetry Collector repository to use it (see open-telemetry/opentelemetry-collector-contrib/issues/17299).
The Helm chart uses the legacy syntax since #603, see https://github.com/open-telemetry/opentelemetry-helm-charts/blob/7252934f33a67697fd04558da3ce750fc70f25eb/charts/opentelemetry-collector/values.yaml#L82-L96
We should use the new ${env:ENV} style syntax here instead. Note that this would break users of the Collector < v0.71.0 (not sure how this is handled in the Helm chart, but we may want to wait a bit).

I'd like to update this, pls assign it to me :-P


Inventory Management System Using Industry 4.0

sir please merge my pull request and give hacktoberfest accepted label

@kamitabh24 Please make the whole project into one folder
Don't put files in the root directory


Exception using db.KeyDump(key) ("ERR unknown command")

Describe the bug
I have a simple C# program that do a db.KeyDump(key), but I get an exception when connected to a Garnet server (instead of a Redis server). The exception message is "ERR unknown command".
Steps to reproduce the bug
Example of code:
Console.WriteLine("Connecting to \"{0}\" using port \"{1}\"...", _redisHost, _redisPort);

ConnectionMultiplexer connection = ConnectionMultiplexer.Connect(_redisHost + ":" + _redisPort);
IDatabase db = connection.GetDatabase();

SortedSet<string> allKeys = new SortedSet<string>();
int scanCursor = 0;
do
{
    RedisResult[] result = (RedisResult[])db.Execute("SCAN", new object[] { scanCursor.ToString() });
    scanCursor = Int32.Parse(result[0].ToString());
    foreach (string key in (string[])result[1])
    {
        allKeys.Add(key);
    }
} while (scanCursor != 0);

foreach (string key in allKeys)
{
    _keyValueDict[key] = db.KeyDump(key);
}

Expected behavior
KeyDump() working.
Screenshots
No response
Release version
v1.0.27
IDE
No response
OS version
No response
Additional context
No response

https://microsoft.github.io/garnet/docs/commands/api-compatibility#command
DUMP is not implemented in Garnet.

Because  replication is not supported, this is must need function for move data from redis/keydb/dragonfly to garnet


Switch to the new OncoKB API URL

This PR also updates the cbioportal packages to latest versions

@leexgh we need to publish the new react-variant-view, and also update the node & yarn versions for signal.


增加ServerList与Nacos共存，优先读取配置文件

Describe what this PR does / why we need it
Nacos 在本地调试时使用不太方便，需要完整的微服务环境，期待自动发现和配置共存
Does this pull request fix one issue?
https://github.com/alibaba/spring-cloud-alibaba/issues/1263
Nacos 与 配置文件中  xxx.ribbon.listOfServers=http://<IP_ADDRESS>:8000
Describe how you did it
NacosServerList 中先读取配置中的listOfServers，如果不存在在读取nacos中的server
Describe how to verify it
listOfServers 有无时都可以正常使用

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.daigong seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.

try spring.cloud.nacos.discovery.enabled=false ?


Sidebar to appear on left side in Mobile

How can we change the sidebar to appear on the left side rather than on the right side when the screen size reduces?

Is there a solution?

sidebar-on-left added to  doesn't make this work on iOS devices

Hello @rtucker-scs,
Thank you for using our products, please let us know what version are you using (free or pro).
Best,
Stefan

pro version
On Tue, Feb 18, 2020 at 3:51 AM Stefan<EMAIL_ADDRESS>wrote:

Hello @rtucker-scs https://github.com/rtucker-scs,
Thank you for using our products, please let us know what version are you
using (free or pro).
Best,
Stefan
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/creativetimofficial/light-bootstrap-dashboard/issues/24?email_source=notifications&email_token=AEHN2UCNA7H2F3AQFBYACSTRDOOQTA5CNFSM4DT6EHA2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEMBDLCY#issuecomment-587347339,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AEHN2UAWKA42UAUJFY2LCDLRDOOQTANCNFSM4DT6EHAQ
.

--
Rob Tucker
<EMAIL_ADDRESS>(216) 570-2746


Code Or Idea For Structural Decomposition

As you mentioned in Sec6 More Applications::Structural Decomposition, we can detect the dimenional changes and segment different parts of a point cloud. Can you offer the code about this part? Or can you give some detailed insights? I speculate that dimensional change means line -> triangle but I don't understand what non-manifold branch means

Sorry to trouble you again.. How did you extract point cloud from original shapeNet data(you say virtual scanner in the paper, I speculate your practice is sth like uniform sampling)? I tried to sample 2k points uniformly from original mesh and compare with yours. I found that scale and global orientation of the point cloud are generally different. So I am wondering is there any pre-processing step in your pipeline? Should it be OK to use simple uniform sampling if I want to train on my custom dataset? Thanks!

Sorry to trouble you again.. How did you extract point cloud from original shapeNet data(you say virtual scanner in the paper, I speculate your practice is sth like uniform sampling)? I tried to sample 2k points uniformly from original mesh and compare with yours. I found that scale and global orientation of the point cloud are generally different. So I am wondering is there any pre-processing step in your pipeline? Should it be OK to use simple uniform sampling if I want to train on my custom dataset? Thanks!

Of course, you can directly sample on the meshes of shapenet. The reason we use a virtual scanner is that it can generate consistent normals. (Note we don't need normal vectors, but the competitive methods rely on them.)
The scale and orientation are not an issue; you just need to confirm that all your training data are normalized to the same distribution. For ours, I remember we normalize the coordinates of each shape to [-1, 1].

Thanks! It worked for me. @clinplayer


[GraphQL] Add streams

This PR adds a function that takes a query that returns a page, and returns a stream of elements. It generalizes over any kind of query that returns a Page<T>. It does work, but I am not sure if the implementation is as efficient as it could be.
Every item from the page is cloned and then returned.
Example usage code
    let owner = "0x89aae72d63270f55368a7c1d4d44d1bd1226ae1470afd546d2b25d88c23e09a7"
        .parse()
        .unwrap();
    let coin_type = None;

    let mut stream = stream_paginated_query(|cursor| {
        println!("Query called with cursor: {:?}", cursor);
        let pagination_filter = PaginationFilter {
            cursor: cursor.clone(),
            ..Default::default()
        };
        client.coins(owner, coin_type, pagination_filter.clone())
    });
    // // Process the stream
    while let Some(result) = stream.next().await {
        match result {
            Ok(coin) => println!("Got coin: {:?}", coin),
            Err(e) => eprintln!("Error: {}", e),
        }
    }

Result
Query called with cursor: None
Got coin: Coin { coin_type: Struct(StructTag { address: Address("0x0000000000000000000000000000000000000000000000000000000000000002"), module: Identifier("sui"), name: Identifier("SUI"), type_params: [] }), id: ObjectId(Address("0x03dd5286b9de24a2a777ea90f18a47e020b24074e78ecf075390122b08486445")), balance:<PHONE_NUMBER>00 }
Got coin: Coin { coin_type: Struct(StructTag { address: Address("0x0000000000000000000000000000000000000000000000000000000000000002"), module: Identifier("sui"), name: Identifier("SUI"), type_params: [] }), id: ObjectId(Address("0x0bd19f3143aff0e22cefe74e812f615c070198415cd2a9c14b20a58f693f93d0")), balance:<PHONE_NUMBER>00 }
Got coin: Coin { coin_type: Struct(StructTag { address: Address("0x0000000000000000000000000000000000000000000000000000000000000002"), module: Identifier("sui"), name: Identifier("SUI"), type_params: [] }), id: ObjectId(Address("0x1315d52091ff52bd2cc7cfea2378d24996983c8dd56bc7a7e8ac29f697e3a784")), balance:<PHONE_NUMBER>00 }
Got coin: Coin { coin_type: Struct(StructTag { address: Address("0x0000000000000000000000000000000000000000000000000000000000000002"), module: Identifier("sui"), name: Identifier("SUI"), type_params: [] }), id: ObjectId(Address("0x15ed0b5e126d2a34dc4403b9a2eb487aa50d3767bbc74917db5a7b8e0a8b876a")), balance:<PHONE_NUMBER>00 }
Got coin: Coin { coin_type: Struct(StructTag { address: Address("0x0000000000000000000000000000000000000000000000000000000000000002"), module: Identifier("sui"), name: Identifier("SUI"), type_params: [] }), id: ObjectId(Address("0x2220f8334fbd2b7e3a948dc4637b3c4816f8a781f07e620caa82399f846260e6")), balance:<PHONE_NUMBER>00 }
Got coin: Coin { coin_type: Struct(StructTag { address: Address("0x0000000000000000000000000000000000000000000000000000000000000002"), module: Identifier("sui"), name: Identifier("SUI"), type_params: [] }), id: ObjectId(Address("0x23b99a85ee7d84bb5fdf9c0dbcd1aef92b0db6b3f0cd333c0d2ad24f46a7eae1")), balance:<PHONE_NUMBER>00 }
Got coin: Coin { coin_type: Struct(StructTag { address: Address("0x0000000000000000000000000000000000000000000000000000000000000002"), module: Identifier("sui"), name: Identifier("SUI"), type_params: [] }), id: ObjectId(Address("0x3882a25626cbdcb061dd1efbc455b286ad14611804e25e6787e36515bbef4ad7")), balance:<PHONE_NUMBER>00 }
Got coin: Coin { coin_type: Struct(StructTag { address: Address("0x0000000000000000000000000000000000000000000000000000000000000002"), module: Identifier("sui"), name: Identifier("SUI"), type_params: [] }), id: ObjectId(Address("0x4741337d5732d94e988cb68c6fc39ab7c2005ebd6636ba305a00a22212458ffb")), balance:<PHONE_NUMBER>00 }
Got coin: Coin { coin_type: Struct(StructTag { address: Address("0x0000000000000000000000000000000000000000000000000000000000000002"), module: Identifier("sui"), name: Identifier("SUI"), type_params: [] }), id: ObjectId(Address("0x48316653df79748614214b81dba48f9c9512f2fa9d5b9fc6fbde7c77a4d9f8d4")), balance:<PHONE_NUMBER>00 }
Got coin: Coin { coin_type: Struct(StructTag { address: Address("0x0000000000000000000000000000000000000000000000000000000000000002"), module: Identifier("sui"), name: Identifier("SUI"), type_params: [] }), id: ObjectId(Address("0x48be02cfd602b2cbab5a2dc877d5f0453fc5e1d132c42d8716fd3adf9c1ffa27")), balance:<PHONE_NUMBER>00 }
Got coin: Coin { coin_type: Struct(StructTag { address: Address("0x0000000000000000000000000000000000000000000000000000000000000002"), module: Identifier("sui"), name: Identifier("SUI"), type_params: [] }), id: ObjectId(Address("0x4e7368d5fa3fcc85da79ce21d6403313cb3aae14a0608d2aeca33ef8d534151d")), balance:<PHONE_NUMBER>00 }
Got coin: Coin { coin_type: Struct(StructTag { address: Address("0x0000000000000000000000000000000000000000000000000000000000000002"), module: Identifier("sui"), name: Identifier("SUI"), type_params: [] }), id: ObjectId(Address("0x50566ddac1f1c22b38193aea33395eacdc141fc59aeae0d1d2b656fe6c46b77f")), balance:<PHONE_NUMBER>00 }
Got coin: Coin { coin_type: Struct(StructTag { address: Address("0x0000000000000000000000000000000000000000000000000000000000000002"), module: Identifier("sui"), name: Identifier("SUI"), type_params: [] }), id: ObjectId(Address("0x66a65a0f034dfa82e90c7acdeb8510cc6cba276a8a13550752c9fc83aba3393d")), balance:<PHONE_NUMBER>00 }
Got coin: Coin { coin_type: Struct(StructTag { address: Address("0x0000000000000000000000000000000000000000000000000000000000000002"), module: Identifier("sui"), name: Identifier("SUI"), type_params: [] }), id: ObjectId(Address("0x7a109e096237316a5c4dad263fcbd830d2936972ec07023677e30d1ad97a34cd")), balance:<PHONE_NUMBER>00 }
Got coin: Coin { coin_type: Struct(StructTag { address: Address("0x0000000000000000000000000000000000000000000000000000000000000002"), module: Identifier("sui"), name: Identifier("SUI"), type_params: [] }), id: ObjectId(Address("0x837386ef653fca2422acbbac312423b3d9c07e5033156aa7046131f8bdc13bb3")), balance:<PHONE_NUMBER>00 }
Got coin: Coin { coin_type: Struct(StructTag { address: Address("0x0000000000000000000000000000000000000000000000000000000000000002"), module: Identifier("sui"), name: Identifier("SUI"), type_params: [] }), id: ObjectId(Address("0x8f2ebb9db82b3d1c7c673d3d2d2ffe8ea70089ca083bd938d5e135ce8b10247b")), balance:<PHONE_NUMBER>00 }
Got coin: Coin { coin_type: Struct(StructTag { address: Address("0x0000000000000000000000000000000000000000000000000000000000000002"), module: Identifier("sui"), name: Identifier("SUI"), type_params: [] }), id: ObjectId(Address("0x96b29252d7fad90fc5c16f99d2068a6efcf2cf0218d9ed383b59bfc167e9a5a4")), balance:<PHONE_NUMBER>00 }
Got coin: Coin { coin_type: Struct(StructTag { address: Address("0x0000000000000000000000000000000000000000000000000000000000000002"), module: Identifier("sui"), name: Identifier("SUI"), type_params: [] }), id: ObjectId(Address("0x9ef82d37e2068f1ac9d5f3a8ba5274f2a4e04bc375851f47100a0ac48ec0e033")), balance:<PHONE_NUMBER>00 }
Got coin: Coin { coin_type: Struct(StructTag { address: Address("0x0000000000000000000000000000000000000000000000000000000000000002"), module: Identifier("sui"), name: Identifier("SUI"), type_params: [] }), id: ObjectId(Address("0xae0f9843a316de0d0e29927a2dde70ed31f5712ed816cb13da003233eab9c4c1")), balance:<PHONE_NUMBER>00 }
Got coin: Coin { coin_type: Struct(StructTag { address: Address("0x0000000000000000000000000000000000000000000000000000000000000002"), module: Identifier("sui"), name: Identifier("SUI"), type_params: [] }), id: ObjectId(Address("0xb298c11c0792685a902daee9671aa4686f90e03b12e81526fc47a09a31d4e3b4")), balance:<PHONE_NUMBER>00 }
Query called with cursor: Some("ILKYwRwHkmhakC2u6WcapGhvkOA7EugVJvxHoJox1OO0MBkAAAAAAAA=")
Got coin: Coin { coin_type: Struct(StructTag { address: Address("0x0000000000000000000000000000000000000000000000000000000000000002"), module: Identifier("sui"), name: Identifier("SUI"), type_params: [] }), id: ObjectId(Address("0xba0280194387c6b27889e7afcef27fa4fa3783c71a003dffa3da51d98f761213")), balance:<PHONE_NUMBER>00 }
Got coin: Coin { coin_type: Struct(StructTag { address: Address("0x0000000000000000000000000000000000000000000000000000000000000002"), module: Identifier("sui"), name: Identifier("SUI"), type_params: [] }), id: ObjectId(Address("0xc19050b1207badc9da28a4e7a6ce9927b7c4442df41e6b096e38a53a08cc0fd4")), balance:<PHONE_NUMBER>00 }
Got coin: Coin { coin_type: Struct(StructTag { address: Address("0x0000000000000000000000000000000000000000000000000000000000000002"), module: Identifier("sui"), name: Identifier("SUI"), type_params: [] }), id: ObjectId(Address("0xcbd91e64c7ca7e5dc01e573afcd35738c3d362de7b741d4c53b5dbf864171fee")), balance:<PHONE_NUMBER>00 }
Got coin: Coin { coin_type: Struct(StructTag { address: Address("0x0000000000000000000000000000000000000000000000000000000000000002"), module: Identifier("sui"), name: Identifier("SUI"), type_params: [] }), id: ObjectId(Address("0xcd2b7416decc9ebfea60580be0fe476915a824159c5a877ca08f9be20cad2e6f")), balance:<PHONE_NUMBER>00 }
Got coin: Coin { coin_type: Struct(StructTag { address: Address("0x0000000000000000000000000000000000000000000000000000000000000002"), module: Identifier("sui"), name: Identifier("SUI"), type_params: [] }), id: ObjectId(Address("0xd08cbd96bdefb75b426c018c830a5819f3ce4ca0ab29619114673d5688ca65da")), balance:<PHONE_NUMBER>00 }
Got coin: Coin { coin_type: Struct(StructTag { address: Address("0x0000000000000000000000000000000000000000000000000000000000000002"), module: Identifier("sui"), name: Identifier("SUI"), type_params: [] }), id: ObjectId(Address("0xd1564924188f7c833448773bd4bf9346e66fe0483307ad52bc2749ef92e6c1f5")), balance:<PHONE_NUMBER>00 }
Got coin: Coin { coin_type: Struct(StructTag { address: Address("0x0000000000000000000000000000000000000000000000000000000000000002"), module: Identifier("sui"), name: Identifier("SUI"), type_params: [] }), id: ObjectId(Address("0xdea9dd518a4b1e752171711edb7c7d3fec1bf5b61b6fe28349a54739387fa229")), balance:<PHONE_NUMBER>00 }
Got coin: Coin { coin_type: Struct(StructTag { address: Address("0x0000000000000000000000000000000000000000000000000000000000000002"), module: Identifier("sui"), name: Identifier("SUI"), type_params: [] }), id: ObjectId(Address("0xdeed9597adfecca5c336db1f863d14627ed498ed27d71070d2b40413ac74d38b")), balance:<PHONE_NUMBER>00 }
Got coin: Coin { coin_type: Struct(StructTag { address: Address("0x0000000000000000000000000000000000000000000000000000000000000002"), module: Identifier("sui"), name: Identifier("SUI"), type_params: [] }), id: ObjectId(Address("0xe31ff0358dd2b7808a9e6319a88a1c572a7614618153543ebb584e520caac289")), balance:<PHONE_NUMBER>00 }
Got coin: Coin { coin_type: Struct(StructTag { address: Address("0x0000000000000000000000000000000000000000000000000000000000000002"), module: Identifier("sui"), name: Identifier("SUI"), type_params: [] }), id: ObjectId(Address("0xe573e547fc4e52eb6f8306daa8604d9dcd163f07f0d6a5bf05583a947c4fa070")), balance:<PHONE_NUMBER>00 }

Pushed a commit to make it a bit more efficient, generally looks good. only issue is it probably needs to be adapted to handle going backwards as well as forwards.

@bmwill
That's cool, thanks for having a look. I massacred again the PR by adding bi-directional option for streaming, and found also a bug in the pagination_filter function. When going backward, we need to specify a vale for the last parameter and it was passed None. This will also now correctly get the max page size that the service allows for maximum efficiency, and correctly sets the limit for forward and backward pagination.


Fix Vic bank selection

Looks like #43 broke some things. VicBankSelect region is wrong and there's unnecessary derives that bitflags! adds by default.

Thanks! I also ping @ssuukk from #43


Some custom block inputs are "invisible"

Expected Behavior
All inputs in calls of the custom block look ordinary, i.e. white and can be typed in.
Actual Behavior
There are a lot of weird issues with calls of this custom block.
Here is what they look like when you open the project:

Here is what they look like when you drag out the "pick random" block from the "velocity" input:

Note that, during the development of the project that used this custom block, I added new inputs to the "Spawn in a Circle" custom block multiple times. I know I originally created the custom block with just the first input, "behavior:". Later I created the "velocity" and "spacing" inputs, but I'm not sure what order. I think I may have created "spacing" first, but I'm 90% not sure.
Steps to Reproduce
Download this project and open it in the Scratch 3.0 GUI, and observe the ensuing weirdness as described in "actual behavior": untitled-project-8_17_2018-11_38_37 AM.zip
Operating System and Browser
Firefox 62.0b17, Debian.

Are there any errors in the console?

@rachel-fenichel No, no errors when loading the project nor when removing or putting back the "pick random" blocks.

/cc @kchadha

I haven't looked into the attached project yet, but I wonder if this issue is related to LLK/scratch-vm#1091


kdp install failed

root@k8s-127-master:~# ./kdp install
[INFO] - Ready to install KDP infrastructure, this may take a few minutes...
[INFO] - Ready to install vela
[INFO] - Find existing vela-core deployment, skip vela-core installation
[INFO] - Handling addon now -> [name: fluxcd] [path: /root/.kdp/src/infra/fluxcd] [parameters: (helmURL=oci://registry-cr.linktimecloud.com/linktimecloud/ registry=registry-cr.linktimecloud.com)]
[INFO] - Checking if addon fluxcd has already been installed
enabling addon by local dir: /root/.kdp/src/infra/fluxcd
Error: Internal error occurred: failed calling webhook "validating.core.oam.dev.v1beta1.applications": failed to call webhook: Post "https://vela-core-webhook.vela-system.svc:443/validating-core-oam-dev-v1beta1-applications?timeout=10s": context deadline exceeded
[ERROR] - Error installing KDP vela addons: error installing addon fluxcd: failed to wait command: exit status 1

@ninejy128 could you please:

enter kind control plane container by docker exec -it kdp-e2e-control-plane bash
check whether vela pods are abnormal by kubectll get po -A


Rounding coverage values down

How do you guys handle small (<1%) fluctuations of coverage values?
I propose to enable an option to round the threshold values down in order to avoid errors thrown on minor test coverage decrements
utils.js
const takeMaxValues = R.reduce(
  (result, [key, val]) =>
    R.merge(result, { [key]: R.max(result[key] || 0, Math.floor(val)) }),
  {}
)

I've patched my own local version of this package to include this functionality, I'd like to make a PR to upstream it into this package but I just want to be sure before I do that you will be up for merging it, @Koleok?

@benadamstyles Sure thing 👍

Hi @Koleok as @benadamstyles hasn't done the PR, would you mind to incorporate the change @Firellon proposed?
Thank you!


updateQueries with null previousQueryResult

I get this error when I do a mutation insert that would be the first result of the query.
Uncaught Error: Can't find field _id on result object $ROOT_QUERY.allTaskList({"userId":"q32a73EhE2SGWMHR4"}).
I believe it is due to previousQueryResult being null or empty, meaning when the query was performed it returned nothing or a blank result. So the mutation is the very first insert, so when it goes to updateQueries the mutated result can't find the new _id to perform the update.
When my previousQueryResult has some actual results the error doesn't happen.
This is my query:
  query allTaskList($userId: String!) {
    allTaskList(userId: $userId) {
      _id
      taskDescription
    }
  }

This is my mutation:
  mutation insertTask($taskOwner: String!) {
    insertTask(taskOwner: $taskOwner) {
      _id
      taskDescription
    }
  }

This is my udateQueries on the mutation:
        updateQueries: {
          allTaskList: (previousQueryResult, { mutationResult, queryVariables }) => {
            if (queryVariables.userId !== ownProps.params.userId) {
              return previousQueryResult;
            }
            const originalList = previousQueryResult.allTaskList;
            const mutatedList = [];
            mutatedList.push(mutationResult.data.insertTask);
            return {
              allTaskList: merge(originalList, mutatedList)
            };
          }

Is this a bug, or is there a way I should be updating when my original query result is null?

Curious for more info - how is the query result null? Is it when your fetch isn't done yet and you do a mutation? Or you are creating a query that isn't meant to be fetched?

Sorry for the bother, looks like it was a mistake on my part, coding in circles. Originally it comes in as this.props.data.allTaskList: Array[0]
My testing senario was adding and removing tasks with only one in the list.
In my removeTask mutation I have an updateQueries, I mistakenly set mutatedList to null instead of [] as in this snippet
            const originalList = previousQueryResult.allTaskList;
            let mutatedList = originalList.filter(function(item) {
                                return item._id !== mutationResult.data.removeTask._id;
                              });
            mutatedList = mutatedList.length === 0 ? null : mutatedList;
            return {
              allTaskList: mutatedList
            };

I had to check if the mutatedList was empty after the filter. I changed the null to [] and it looks to be working correctly now.
Thanks for the inquisition!
It brings a question to mind, is there a better way I should be comparing the objects here? The _id could possibly be in the middle of the list. I know if the list gets long the filter could take some time.

That's pretty much how I would do it.

mutatedList = mutatedList.length === 0 ? [] : mutatedList;

Isn't this exactly the same as mutatedList = mutatedList? Not sure why the conditional is necessary here.

I know if the list gets long the filter could take some time.

I feel like if you're at the point where iterating over a list takes too long, you are probably loading too much data for the client anyway. Iterating is pretty fast.

Very insightful! I appreciate your help 💯

No problem!


proto files not included in java jars

As best I can tell, this is where com.google.api.grpc:proto-google-common-protos from.  If not, please redirect me.  I also opened an issue over at grpc-java here https://github.com/grpc/grpc-java/issues/3873 as well.  It appears between version 0.1.6 of 0.1.9(and since then) the proto files are no longer published in the jar published to maven central.  This means that proto files expecting to import these files and have them be present when using the gradle protobuf plugin are unable to find the files.  Is there an alternative dependency I should be targeting if I want the proto files in a jar for further import and use?

This has been released - version 1.0.5.


Documentation displays wrong version number

http://autobahn.ws/python/index.html shows "Latest release: v0.13.0", which is completely outdated.
The wrong version number is not anywhere in the documentation source.

The Autobahn web site content hasn't been deployed for ages .. the AB Py docs are at http://autobahn-python.readthedocs.io/en/latest/ - and these are automatically updated on each release.
IMO we should discuss what to do with autobahn.ws site .. what content should be there ..

http://autobahn.ws/python should be redirected (S3) to http://autobahn.readthedocs.io/en/latest/
Similar for all others .. only question is the AB testsuite ..


Cannot find module 'pokemongo-protobuf'

When i try launch coffee script i have an error but i had install protobuf
ScreenShot of terminal Whats the problem?

seems like you missed running npm install first?

Oh really, now its work. Would you help me one more. Where this certificate location on my mac and how put it to iphone

Please read the README, the path is given there - just send the file to yourself via email and open it. Cheers!


Understanding which reads contribute to contigs

Hi Xiaowen,
I am wondering if it is possible to obtain a list of reads that contribute to each contig in the assembly?
This seems like it would be highly valuable for metagenomics, as it can identify all reads associated with specific bacterial genomes. In addition, it would be extremely valuable for a more specific use-case I describe below.
I am working on a problem where I am trying to assemble an endosymbiont bacteria from a larger HiFi dataset focused on the host organism. The assembly of the full dataset with hifiasm did not produce a complete bacteria contig, it was present as several smaller contigs. I attempted to re-assemble and improve the quality of these results. To accomplish this, I have:

Mapped contigs from a hifiasm assembly of the full dataset to a reference of the target bacteria, to identify and extract relevant bacteria contigs.
Mapped reads to those putative bacteria contigs to identify reads that are most likely target bacteria, and extract them.
Performed assembly with this subset of putative bacteria reads using hifiasm-meta.

This resulted in a complete, circular genome for the target bacteria, along with a few small tangled contigs, suggesting the approach worked pretty well. The small contigs in the new assembly are likely some combination of host reads and perhaps strain variation.
The genome has a few frameshifts and I would like to try polishing it using only the reads that were used to build the complete bacteria contig. I have used minimap2 to align the subset of reads to this contig, and there are several short regions in which some proportion of reads map poorly (alignments are <1000 bp and they are being hard clipped >3000 bp on each side). I think these are potentially host reads. I can filter these out using samclip, but it would be helpful to know whether or not they were used to construct this contig, and therefore deserve to be excluded.
Given metagenomic assemblies often result in several complete genomes, I think the same topic will come up. Polishing would also be desirable, but problematic read alignments would be more prevalent due to more species, shared repeats, etc. Having the ability to assign reads to particular contigs would be a tremendous help here too.
Any advice would be greatly appreciated!
Thanks,
Dan

Hi Dan, I'm not sure if this is helpful as I haven't tried to re-assemble or polish. Please correct me if i've misunderstood your question:
In the ideal scenario, i.e. moderate coverage & no read containment, all reads involved in a contig are described the 'A' lines in the gfa file. However, none of two requirements hold true for metagenome datasets.
For containment reads: the shorter read of a containment pair is discard before transitive reduction in hifiasm(-meta), but they are available along with other types of overlaps in the paf dump by specifying --write-paf (to only write paf and do nothing else, use --write-paf -e -o input_name). Currently hifiasm-meta writes two paf files, one contains overlaps between the same haplotype or phasing unknown, the other contains overlaps between haplotypes; you probably would want to only use the former one to start with. Basically, get the list of reads from 'A' lines, generate paf dump, and fish the containments from the paf dump.
For high coverage scenario: hifiasm(-meta) caps the total number of targets for a read before heading to the graph part. It drops the shorter overlaps first if has to. This cap can be specified by switch -N (INT, default: 100). Hifiasm-meta is aware of this cap but does not dump the discarded overlaps. For now you might have to either set -N higher, or enable the debug lines at https://github.com/xfengnefx/hifiasm-meta/blob/meta/anchor.cpp#L249 to get the info. I think the later route is only an alternative to alignment if input coverage is moderate, since most discarded reads aren't used in the read/unitig/contig graph at all, and the shorter overlaps could be no better than what you can get from read to contig alignment. Maybe changing -N when needed is sufficient.
I think this way you should be able to retrieve most of the relevant reads, but in practice the outcome depends on how you define "contribute".
By the way, this repo is still under development and we are actively seeking more datasets for dev purpose. Every dataset we got was vastly different. If you happen to have a shareable dataset and is happy to do so, we sincerely appreciate it :)

Hi Dan, I'm not sure if this is helpful as I haven't tried to re-assemble or polish. Please correct me if i've misunderstood your question:
In the ideal scenario, i.e. moderate coverage & no read containment, all reads involved in a contig are described the 'A' lines in the gfa file. However, none of two requirements hold true for metagenome datasets.
For containment reads: the shorter read of a containment pair is discard before transitive reduction in hifiasm(-meta), but they are available along with other types of overlaps in the paf dump by specifying --write-paf (to only write paf and do nothing else, use --write-paf -e -o input_name). Currently hifiasm-meta writes two paf files, one contains overlaps between the same haplotype or phasing unknown, the other contains overlaps between haplotypes; you probably would want to only use the former one to start with. Basically, get the list of reads from 'A' lines, generate paf dump, and fish the containments from the paf dump.
For high coverage scenario: hifiasm(-meta) caps the total number of targets for a read before heading to the graph part. It drops the shorter overlaps first if has to. This cap can be specified by switch -N (INT, default: 100). Hifiasm-meta is aware of this cap but does not dump the discarded overlaps. For now you might have to either set -N higher, or enable the debug lines at https://github.com/xfengnefx/hifiasm-meta/blob/meta/anchor.cpp#L249 to get the info. I think the later route is only an alternative to alignment if input coverage is moderate, since most discarded reads aren't used in the read/unitig/contig graph at all, and the shorter overlaps could be no better than what you can get from read to contig alignment. Maybe changing -N when needed is sufficient.
I think this way you should be able to retrieve most of the relevant reads, but in practice the outcome depends on how you define "contribute".
By the way, this repo is still under development and we are actively seeking more datasets for dev purpose. Every dataset we got was vastly different. If you happen to have a shareable dataset and is happy to do so, we sincerely appreciate it :)

Hi Xiaowen,
Thanks for your detailed response. It sounds like the paf dump would provide the information I am interested in. I will go ahead and try this out and let you know if I have other questions.
We are working on getting sequence data for two empirical samples which will be made publicly available. As soon as they are ready, I will let you know!

@dportik Great, paf files should contain most of the relevant info. I've implemented the dump for the high coverage scenario case. I happen to have other small bug fixes alongside, so they will be committed together soon. Will let you know in this thread when it's pushed.
Looking forward to the data release, thank you!

@dportik I have pushed r030, which introduced --dump-all-ovlp. It is effectively https://github.com/xfengnefx/hifiasm-meta/blob/meta/anchor.cpp#L249 reformatted, please refer to the https://github.com/xfengnefx/hifiasm-meta/blob/meta/anchor.cpp#L260 block.
This switch will write all overlaps ever calculated during the final overlapping to a tab delimited file named "output_name.all_ovlp_pairs". You need a custom script and a p_ctg contig graph to fish out the relevant ones. It's a last resort to paf dump and alignment, i'm not sure if it's actually helpful in your case.
Note: 1) the switch has no effect if bin files exist (i.e. you've done an assembly run in the folder or the folder specified by -B under the same name specified by -o), since this info is only available during the final overlapping. 2) if read selection is enabled and takes effect, this dump will only contain overlaps between the kept reads.


Link website to github project

It took me a while to notice that this repository had a book :sweat:. Would it be possible to link the website to the project in GitHub on the sidebar?

Where? 😳

https://huggingface.github.io/candle/ It's work in progress.


Horizon API protocol doc

Created this doc to find out and start tracking which SDK version fully supports given Horizon API version. This should help us update SDKs to support all the endpoints.
Human readable version

I second @tomerweller 's comment, a bit hard to parse through with +/-
Would Y/N work?

Done.


Set length of a Shape to fill the space

Describe the solution you'd like
I would love a feature which fills the empty space between two shapes. Means: First Shape gets stretched to a selected direction but only until it reaches the first border of the second selected shape.
Before

After

Describe alternatives you've considered
This feature almost does what I want. If I use it it stretches to the furthest side away.

Before

After (clicking on Stretch shapes to right)

Hi @SCHOUTER, nice suggestion! Will look into this. Currently bit limited time to work on it, but hope to do some updates in dec/jan.


Add Web UI Consumer Office Hours Links

Signed-off-by: Rose Sakach<EMAIL_ADDRESS>Signed-off-by: Rose Sakach<EMAIL_ADDRESS>

@balhar-jakub ; @MarkAckert @Joe-Winchester Can someone help ensure the Web UI office hours link / PPT gets posted?  Can one of you review and approve this request?  I'm not sure I've updated this correctly....


(fix) Remove used gateway docker functions from client

Before submitting this PR, please make sure:

[X] Your code builds clean without any errors or warnings
[x] You are using approved title ("feat/", "fix/", "docs/", "refactor/")

A description of the changes proposed in the pull request:

Removed extraneous Gateway Docker related code from codebase
Fixes https://github.com/hummingbot/hummingbot/issues/6083

Hi @fengtality the Notice: Hummingbot is unable to communicate with Docker. If you need gateway for DeFi.. is still showing on docker client build.

When we tried to look where this line is located it pointed us here ../6141/hummingbot/core/gateway/__init__.py possible it can help the fix

Steps to reproduce:

Setup docker build by running ./installation/docker-commands/create.sh
Start docker client using start.sh
Observed that upon opening the client, there is a notice about Hummingbot is unable to communicate with Docker


[ENG-2157] [Refix] Allow rx.download to resolve rx.get_upload_url

Update the special case in a way that works with the new Var system and its unstoppable determination to concatenate strings instead of using template string
This has been broken since 0.6.0, so a regression test was added to avoid future inadvertant breakage.
Fix #2812 (again)

actually i just realized we can't merge this as is; since it's maybe creating a security problem for users that take whatever filename is given in the upload and potentially introduce script injection

actually, maybe it's okay... @adhami3310 any idea about the script injection with this?
i tried the following
return rx.download(rx.get_upload_url('`${window.alert("foo")}`'))

return rx.download(rx.get_upload_url('"; window.alert("foo"); "'))

and both of those had proper escapes around the danger characters


Issue connecting to T8020 and T8400 devices.

I've newly set up this add on but it will not show the videos from either of my devices.
2022-11-03 14:36:27.854  INFO  Eufy Security server listening on host <IP_ADDRESS>, port 3000
2022-11-03 14:36:38.226  INFO  Push notification connection successfully established
2022-11-03 14:36:53.063  ERROR P2PClientProtocol.lookup(): station: T8020xxxxxxxxxxx - All address lookup tentatives failed.
2022-11-03 14:36:53.070  INFO  Timeout connecting to station T8020xxxxxxxxxxx
2022-11-03 14:36:53.564  ERROR P2PClientProtocol.lookup(): station: T8400xxxxxxxxxxx - All address lookup tentatives failed.
2022-11-03 14:36:53.565  INFO  Timeout connecting to station T8400xxxxxxxxxxx

I don't see 8020 as supported but 8400 should be working.
In any case, you have to reach out @bropat over here. https://github.com/bropat/eufy-security-ws/

@fuatakgun
The errors listed above are fixed with the latest version.
Please do not send me people until you have brought the integration to the latest version of eufy-security-ws. Thank you for your understanding!

You are right, i meant for 8020, it was not listed under known devices, right?

I am mainly checking here (https://bropat.github.io/eufy-security-client/#/supported_devices) and if devices are listed there, I usually ask them to wait till I do my part.


Tolerate missing reason phrases

Examples:

https://github.com/scrapy/scrapy/issues/345#issuecomment-281756036
https://github.com/seanmonstar/httparse/issues/29

'kay, I'm going to merge this and then pretend it never happened.