Gracefully Crash on missing dependencies

Because mbed-cli will wrap so many other tools there should be a system in place so when a user invokes a command and the pre-requisites are missing the tool can gracefully exit and give the user a message with suggested fixes.
Example: git not installed
In this example git cannot be found in the users path. The tool prompts the user to install it as it is outside the scope of our duty to install this for the user. Alternatively we could provide a mbed-cli.exe pckage like previously that wraps all these tools together.
$ mbed clone myawesomeproject
. . . .
[Error : `git` not found]
Suggested fix: If git is installed on your system make sure it is linked in the global PATH. If git is not installed try installing it using one of the methods below. Or checkout this youtube video on the error (Link to video)
Windows - install the git toolbelt (Link goes here), make sure to select a global install / modify env path
Mac - install git toolbel (link goes here)
Linux (Ubuntu) - run `sudo apt-get install git`
Linux (Arch) - run `sudo pacman -Ss git`

Example : greentea not installed
In this example greentea is not installed on the system, thus preventing tests from being run, the tool tells the user it cannot find greentea and asks if the CLI should install it. If the user says yes then mbed-cli will run pip install -U greentea in the background.
$ mbed test
. . . . .
[Error : greentea not found]
Would you like to install greentea now? (Y/N) $ |

Is already implemented as mbed-os tools auto-installation of dependencies @theotherjimmy


Memory management

The interpreter is now garbage collected and does not leak memory during evaluation. To accomplish this, a more correct lambda/closure system was implemented as well as limited stack tracing and more informative/expanded (though still limited) testing. Additionally, the Linux readline library was added as a dependency allowing for an interactive prompt with editing, history, matching parentheses highlighting, etc... Finally, a small set of math primitives was added to the default environment which not only helped debug closure behavior but also is an important feature of the interpreter.

🔥🔥🔥


Removed support for UIWebView

Removed support for UIWebView so new Apps submitted to Apple which use this library won't get rejected - https://developer.apple.com/documentation/uikit/uiwebview
Updated project settings to include new compiler warning options
Migrated development language
Upversioned podspec for new breaking changes

Just noticed there's a PR open for this already 🤦♂


dllexport stuff

I have built the code and it works fine with static linkage but there's a problem
with dynamic linkage: with clang/gcc the modern standard is -fvisibility=hidden,
and then decorate symbols to be exported with a macro that sets the visibility
to default. On Windows dll_export must be used when compiling the library,
and dll_import when using it. My system builds both static and dynamic
libraries on Linux, Osx and Windows, so exported symbol must be decorated.
Its a real pain. I hacked as solution for clang/gcc on OSX/LInux since in this
library one probably wants to export everything anyhow. But there is no
alternative for Windows, and its the right way on Unix platforms to do it as well.
Its a pity the C++ standard doesn't address dynamic linkage.

Feel free to make a pull request with the changes.

FYI: in principle the "three header" solution (which is not what I am using for my stuff) is probably correct. The reason is that a library exports some definitions in a header, but when building the library additional or even different definitions my be required. Some things may be left out of the public interface that the library needs internally, and some things might be changed. For example a pointer to a type T in the library may need T to be defined, but the user is not supposed to see the definition and should get a pointer to an incomplete type instead (so they can't instantiate the T value except through the API). This case is for enforcing invariants.
I would say this model is essential for large library systems, however unit256_t is a very small library with no dependencies.

FYI I'm looking at the C++ modules TS to see if, when available, it provides the right structure for a solution to this problem. In particular it provides
export decl ...
to export a symbol from a module. It splits module implementations from interfaces which is what is required for shared libs. We will still need macro hackery for C++11 but it would seem using a related structure to Modules TS would be good.

Please have a look at the fork:
https://github.com/felix-lang/uint256_t
I have NO IDEA how to test it :-)

OK, I submitted a PR. I have checked only that it compiles with clang, gcc, and MSVC, and one test case works. I have not run the google/unit test stuff because I have no idea how.

Finally it passes all tests. The README needs to be fixed.
Sorry what  happened is that I tested on C++14 but your tests use C++11. Because I renamed files when I'd finished and merged your changes in it seems they were lost because git couldn't track them.

I merged #15 and incorporated the changes into uin128_t


[FEATURE REQ] Update Commands

What & why
Many Users will also need help with update commands for each of the installed applications
the addition of wget and tar commands for install of new version and removal of old version will be helpful and educational for many users

Hello guys!!
Thank you for your interest in the MiniBolt project and for contributing to the improvements
This is an amazing suggestion. I think I thought about it once. Directly to the roadmap, thanks @regiregi22 for the reference and @ostermayer for the suggestion! MiniBolt to the moon!! :rocket:


@JuliaRegistrator register v0.1.1

@JuliaRegistrator register
v0.1.1
Release notes:
Now using Dedicated Types for solver's parameters instead of Strings #5

Refactoring of several datatypes and variable names to be more compliant with Julia style guide
Improving README.md, adding tags and deleted unwanted branches "master"
Applying JuliaFormatter.jl
Deleting some useless files

All tests passing

Error while trying to register: Version 0.1.0 already exists

Error while trying to register: Version 0.1.0 already exists
@JuliaRegistrator register
v0.1.1
Release notes:
Now using Dedicated Types for solver's parameters instead of Strings #5

Refactoring of several datatypes and variable names to be more compliant with Julia style guide
Improving README.md, adding tags and deleted unwanted branches "master"
Applying JuliaFormatter.jl
Deleting some useless files

All tests passing

Registration pull request created: JuliaRegistries/General/111055
Tagging
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v0.1.1 -m "<description of version>" c1ddb96653a3fcd9c9f0926de7fad0eb9999f0f3
git push origin v0.1.1

@JuliaRegistrator register
v0.1.2 Release notes:
Now using Dedicated Types for solver's parameters instead of Strings #5
A big high five to @nsajko for suggesting it!
Other release improvements

Refactoring of several datatypes and variable names to be more compliant with Julia style guide
Improving README.md, adding tags and deleted unwanted branches "master"
Applying JuliaFormatter.jl
Deleting some useless files
Compatibily issues fixed
Create ] test for UnitTest and solutionchecker
Removing uncessary files and folders (debug)

Plan for upcomming in v0.2.0

Documenter.jl deployed and extensive documentations for the solver
Add a All contributors page
Pass all disambiguity tests from Aqua.jl, currently 37 disambiguities (1 Broken if ambiguities = (exclude = [], broken = true))

Registration pull request created: JuliaRegistries/General/111064
Tagging
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v0.1.2 -m "<description of version>" ecccd4abf967eb008fc1e5e2e051dc94c11a8ead
git push origin v0.1.2


fix: let induction handle parameters

The induction principle used by induction may have explicit parameters that are
not motive, target or “real” alternatives (that have the motive as
conclusion), e.g. restrictions on the motive or other parameters.
Previously, induction would treat them as normal alternatives, and try
to re-introduce the automatically reverted hypotheses. But this only
works when the motive is actually the conclusion in the type of that
alternative.
We now pay attention to that, thread that information through, and only
revert when needed.
Fixes #3212.

I’m fairly confident, but will wait merging for a day or two if someone wants to have a second look.


Incorrect CoAP POST request response status code

we are using 0.12.1 version/release.
In this release, CoAP adapter is returning 2.05 status code while publishing the message.
instead, it should return 2.01
This issue was fixed in CoAP adapter latest version. We need this fix to be in 0.12.1 version
related issue: https://github.com/mainflux/mainflux/issues/1787
this is super urgent and critical for us, because we are not receiving messages on production.

Super urgent and critical issues should be dealt in professional manner, though direct contact with the Abstract Machines company, who took over professional support of the Mainflux project: https://abstractmachines.fr/
Please reach us at<EMAIL_ADDRESS>On the GitHub we can only offer best-effort support, which is usually not very suitable for critical issues.

@Giorgi-Totladze The bug is fixed. However, we can't alter the release to include this fix. I understand that you are using an older version of the Mainflux and you can't replace it with the latest one due to some compatibility issues. We can provide you a quick workaround by building a docker image from CoAP adapter v0.12.1 that does include this patch.

@dborovcanin Thx for quick response. Your help in providing a quick workaround by building a docker image from CoAP adapter v0.12.1 that does include this patch will be great.
when can we have that?

Hello,
Thank you for such a quick resolution. it works.
On Tue, Oct 10, 2023 at 7:51 PM Dušan Borovčanin @.***>
wrote:

You can try with mainflux/coap:0.12.1-fix-response-code image I pushed to
DockerHub.
—
Reply to this email directly, view it on GitHub
https://github.com/mainflux/mainflux/issues/1921#issuecomment-1755732959,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A7XU5X6O4O5LSXZJQL26H6TX6VVJPAVCNFSM6AAAAAA52LSESOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTONJVG4ZTEOJVHE
.
You are receiving this because you were mentioned.Message ID:
@.***>

--
syniotec TechHub | 12 Givi Kartozia St | 0177 Tbilisi
Germany:
syniotec GmbH | Am Wall 146 | 28195 Bremen https://g.page/sharemac?share
@.*** @.***>
www.syniotec.com
http://www.syniotec.com
________________________
Commercial register:
Amtsgericht Bremen, HRB 33 169
Management: Manuel Kimanov & Rezi
Chikviladze
WEEE-Reg.-No.: DE 20237892 | BattG: DE 96447589

Closing - the workaround resolved the issue for the version 0.12.1.


[WIP] Introduce RPC subsystem.

@Almost1990

Overall looks good. I would add an example how to use it into the comments.
Sure.


No support for stratified split in dask_ml.model_selection.train_test_split

scikit-learn implementation of train test split (sklearn.model_selection.train_test_split) supports splitting data according to class labels (stratified split) by using the argument stratify. This is especially useful when datasets have high class imbalance. It would be really helpful to have this feature in dask_ml as well.

Agreed. Are you interested in working on this?
On Fri, Aug 9, 2019 at 3:18 PM Karanraj Chauhan<EMAIL_ADDRESS>wrote:

scikit-learn implementation of train test split
(sklearn.model_selection.train_test_split) supports splitting data
according to class labels (stratified split) by using the argument
stratify. This is especially useful when datasets have high class
imbalance. It would be really helpful to have this feature in dask_ml as
well.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/dask/dask-ml/issues/535?email_source=notifications&email_token=AAKAOITYSEXRW4TUOTW6OFDQDXGIXA5CNFSM4IKXCDHKYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HEPIOUQ,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAKAOIQTYGEUZ6B7ABDQK4TQDXGIXANCNFSM4IKXCDHA
.

Tempted to say yes, but I don't know the codebase/internals very well (specifically, I'm not sure how we can get a stratified split with blockwise=False not implemented for the ShuffleSplit class).
So it'd be faster if someone more knowledgeable could volunteer. If not then I'd be happy to give it a shot, but it might take some time.

That's great if you're willing to try. Let us know if you get stuck.
On Sun, Aug 11, 2019 at 6:40 PM Karanraj Chauhan<EMAIL_ADDRESS>wrote:

Tempted to say yes, but I don't know the codebase/internals very well
(specifically, I'm not sure how we can get a stratified split with
blockwise=False not implemented for the ShuffleSplit class).
So it'd be faster if someone more knowledgeable could volunteer. If not
then I'd be happy to give it a shot, but it might take some time.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/dask/dask-ml/issues/535?email_source=notifications&email_token=AAKAOISB25FYPBPYRR4KOFTQECPN5A5CNFSM4IKXCDHKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD4BLGTI#issuecomment-520270669,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAKAOIQVJEDB5XD7VSQZO4TQECPN5ANCNFSM4IKXCDHA
.

Hey, Tom, I'm thinking of picking this up. My doubt is:
Say we have a big csv file with 2 categories and two partitions of the data.
So file_0 has only category 0 and 1, file_1 has only category 1.
My first thought was to just use the stratify parameter of scikit-learn, but in this case that wouldn't work. Another idea would be to compute all the categories beforehand and pass those to the stratify parameter, but seems overly complicated and prone to a ton of edge cases.
I'd be glad to pick this up, as it would help in some research I'm doing.

@tiagofassoni great! dask-ml's OneHotEncoder may be helpful here. It will use the Categorical dtype for pandas dataframes. Otherwise you can (or maybe need?) to pass the categories manually as a list / array. Does that make sense?
In other places that just work with arrays, like Incremental, we require that the classes (groups in this case) be specified ahead of time.

is there any luck with this feature request? in the case of huge imbalanced dataset, the stratify argument in train_test_split is useful

I’m not aware of any progress. Perhaps Tiago can share a status update.

On Feb 21, 2020, at 7:37 AM, Tim Huang<EMAIL_ADDRESS>wrote:

is there any luck with this feature request? in the case of huge imbalanced dataset, the stratify argument in train_test_split is useful
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.

Hello, @TomAugspurger, @jerrytim. Got to try my hand on this just last week and... gotta say, I have no idea on how to make it. I don't know why OneHotEncoder would be helpful, if at all.
I was thinking of using something like Pandas' value_counts for the series results and then trying to make a shuffle, but I don't know if such an approach is feasible.

@TomAugspurger I agree with @tiagofassoni - I'm not sure how OneHotEncoder can be used. But I also don't understand how value_counts can be used - @tiagofassoni could you please elaborate?
There's two things I wanted to bring into discussion that might help us better decide how to implement. IIUC splitting is handled differently for da.Array and dd.Series/dd.DataFrame, correct?

For dd.Series/dd.DataFrame, heavy lifting is done by random_split but I couldn't find its source code. So I'm not 100% sure how to deal with that case.
For da.Array, heavy lifting is done by ShuffleSplit and _blockwise_slice. Could we get parts of the input array of that belong to a particular class, compute chunks of this subarray, apply the same ShuffleSplit+_blockwise_slice strategy for this subarray, repeat for all classes, and finally concatenate the results? This would be kind of along the same lines as @tiagofassoni's comment:

Another idea would be to compute all the categories beforehand and pass those to the stratify parameter, but seems overly complicated and prone to a ton of edge cases.

random_split but I couldn't find its source code. So I'm not 100% sure how to deal with that case.

That's in dask.dataframe.DataFrame.random_split

compute all the categories beforehand and pass those to the stratify parameter, but seems overly complicated and prone to a ton of edge cases.

In these cases we typically require the user to provide the set of classes up front. But in this case, do we need to make a pass over the data to determine the frequency of each class? Or can that be done lazily?

That's in dask.dataframe.DataFrame.random_split

Gotcha, thanks! I'll take a look :)

In these cases we typically require the user to provide the set of classes up front. But in this case, do we need to make a pass over the data to determine the frequency of each class? Or can that be done lazily?

Yeah, I agree - having the classes up front would be ideal. We could still compute the classes (da.unique on stratify array) but I don't think that can be done lazily and thus wouldn't be ideal.
Maybe I'm missing something here, but do we really need the frequencies? This might be a little far from optimal, but could we do something along these lines:
train_test_pairs = []
for arr in arrays:

    # create subarrays for each class, apply split on subarrays individually
    arr_train_test_pairs = [[], []]
    for ci in classes:
        ci_arr = arr[_stratify==ci]
        ci_arr.compute_chunk_sizes()
        train_idx, test_idx = next(splitter.split(ci_arr))
        arr_train_test_pairs[0].append(_blockwise_slice(ci_arr, train_idx))
        arr_train_test_pairs[1].append(_blockwise_slice(ci_arr, test_idx))

    # concat all train subarr as 1 train arr, all test subarr as 1 test arr
    arr_train_test_pairs[0] = da.concatenate(arr_train_test_pairs[0])
    arr_train_test_pairs[1] = da.concatenate(arr_train_test_pairs[1])
    train_test_pairs.append(arr_train_test_pairs)

return list(itertools.chain.from_iterable(train_test_pairs))

@chauhankaranraj does that split the class subarrays evenly? So it's a stratified train/test with 0.5 test and 0.5 train?
Note: I'm a data scientist, not a developer...

train_test_pairs = []
for arr in arrays:

    # create subarrays for each class, apply split on subarrays individually
    arr_train_test_pairs = [[], []]
    for ci in classes:
        ci_arr = arr[_stratify==ci]
        ci_arr.compute_chunk_sizes()
        train_idx, test_idx = next(splitter.split(ci_arr))
        arr_train_test_pairs[0].append(_blockwise_slice(ci_arr, train_idx))
        arr_train_test_pairs[1].append(_blockwise_slice(ci_arr, test_idx))

    # concat all train subarr as 1 train arr, all test subarr as 1 test arr
    arr_train_test_pairs[0] = da.concatenate(arr_train_test_pairs[0])
    arr_train_test_pairs[1] = da.concatenate(arr_train_test_pairs[1])
    train_test_pairs.append(arr_train_test_pairs)

return list(itertools.chain.from_iterable(train_test_pairs))

Sklearn uses np.bincount in class StratifiedShuffleSplit in sklearn.model_selection._split to get frequencies and split accordingly.

@chauhankaranraj does that split the class subarrays evenly? So it's a stratified train/test with 0.5 test and 0.5 train?

@ericbassett It should split it in whatever train/test ratio is provided as input. The splitter used here is the instance of ShuffleSplit that gets created here. IIUC it takes care of splitting by ratios provided.
I'll submit a WIP PR soon so this discuss becomes more concrete :)

Very nice, makes sense.

Hey folks,
I made an attempt to implement the stratified split here. I could do it lazily for dask Series and DataFrames, but not completely lazily for dask Array (calling compute_chunk_sizes()).
Does anyone have ideas to get around this? Would it be possible to "enforce" chunk size instead of computing it? [e.g. if chunk size for the whole array is (x, 10) then chunk size for the part of the array that belongs to a class with weight 15% should be (0.15x, 10)]
Any feedback in general would be highly appreciated :pray:
Also, if you feel this discussion should be moved to a WIP PR, I can open that too.

May be easiest to move to a PR. We might be able to do things lazily for dask array, we'll just probably end up with unknown chunk sizes.

@TomAugspurger Sure thing. Opened this WIP PR yesterday

Any Progress on this task ? :)

I need the stratify feature in tran_split_test as well for my imbalanced dataset. Any updates?

Hey folks, sorry but I haven't had the chance to continue working on this. I did open a WIP PR (#635) so if anyone would like to fork off of it or just start from scratch, feel free to do so! Let me know if you'd like anything from me in doing so.

Temporary methods:
import pandas as pd
import dask.dataframe as dd

df = pd.DataFrame({
    'user': ['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'],
    'value': [1, 2, 3, 4, 5, 6, 7, 8, 9]
})

ddf = dd.from_pandas(df, npartitions=2)

def random_sample(group, frac):
    sampled = group.sample(frac=frac, random_state=42)
    return sampled

sampled_ddf = ddf.groupby('user').apply(random_sample, frac=0.5, meta=df.head(1))

sampled_df = sampled_ddf.compute()

sampled_df_index = sampled_df.index.levels[1].to_list()

not_sampled_df = df[~df.index.isin(sampled_df_index)]

print("Sampled data：")
print(sampled_df.reset_index(drop=True))

print("\nUnsampled data：")
print(not_sampled_df)


Incorrect DEFAULT_ACTIONS_URL in act_runner

Description
In gitea/act_runner:0.2.0, the DEFAULT_ACTIONS_URL configured in app.ini does not take effect
But it is right at gitea/act_runner:0.1.8
Gitea Version
gitea/gitea:1.19.3
Can you reproduce the bug on the Gitea demo site?
No
Log Gist
No response
Screenshots
gitea/act_runner:0.2.0

app.ini

gitea/act_runner:0.1.8

Git Version
No response
Operating System
No response
How are you running Gitea?
kubernetes
Database
None

Could you please download the latest build and try again?


MQTT connection fails on ESP32 and SARA-R422S

Hello everyone,
I was trying to use the MQTT stack of the u-blox SARA-R422S with the esp32 runner. After configuring the network mask and establishing a decent connection (I'm using a SIM card from "Emnify") I tried both the code for the HTTP and the MQTT connection. The first one (HTTP) works but fails the test:
Running exampleHttpClient...
I (8896) uart: queue free spaces: 20
U_CELL: initialising with enable power pin not connected, PWR_ON pin 37 (0x25) (and is toggled from 1 to 0) and VInt pin not connected.
I (8916) gpio: GPIO[37]| InputEn: 0| OutputEn: 1| OpenDrain: 1| Pullup: 1| Pulldown: 0| Intr:0
AT
AT

OK
U_CELL_PWR: powering on, module is already on.
ATE0
ATE0

OK
AT+CMEE=2

OK
AT+UDCONF=1,0

OK
ATI9

00.12,A00.00

OK
AT&C1

OK
AT&D0

OK
AT+UCGED=2

OK
AT&K3

OK
AT+UPSV=4

OK
AT+UPSMR=1

OK
AT+CPSMS?

+CPSMS:0,,,"01100000","00000000"

OK
AT+CEDRXS?

+CEDRXS:

OK
AT+UMNOPROF?

+UMNOPROF: 100

OK
AT+CFUN=4

OK
Opened device with return code 0.
Bringing up the network...
U_CELL_NET: preparing to register/connect...
AT+CREG=2

OK
AT+CGREG=2

OK
AT+CEREG=4

OK
AT+CIMI

295050903238853

OK
U_CELL_NET: user-specified APN is "em".
AT+CGDCONT=1,"IP","em"

OK
U_CELL_NET: setting automatic network selection mode...
AT+COPS?

+COPS: 0

OK
AT+CFUN=1

OK
AT+CREG?

+CREG: 2,0

OK
0: NReg
AT+CGREG?

+CGREG: 2,4

OK
0: OoC
AT+CEREG?

+CEREG: 4,0

OK
0: NReg
AT+CREG?

+CREG: 2,0

OK
0: NReg
AT+CGREG?

+CGREG: 2,4

OK
0: OoC
AT+CEREG?

+CEREG: 4,0

OK
0: NReg

+CREG: 2

+CEREG: 2,,,,,,,,
-1: Search
-1: Search

+CREG: 5,"4E76","00006BE6",3

3: RegR
AT+CREG?

+CREG: 2,5,"4E76","00006BE6",3

OK
3: RegR
AT+CGREG?

+CGREG: 2,2

OK
3: Search
AT+CEREG?

+CEREG: 4,4

OK
3: OoC
AT+CREG?

+CREG: 2,5,"4E76","00006BE6",3

OK
3: RegR
AT+CGREG?

+CGREG: 2,2

OK
3: Search
AT+CEREG?

+CEREG: 4,4

OK
3: OoC
AT+CREG?

+CREG: 2,5,"4E76","00006BE6",3

OK
3: RegR
AT+CGREG?

+CGREG: 2,2

OK
3: Search
AT+CEREG?

+CEREG: 4,4

OK
3: OoC
AT+CREG?

+CREG: 2,5,"4E76","00006BE6",3

OK
3: RegR
AT+CGREG?

+CGREG: 2,2

OK
3: Search
AT+CEREG?

+CEREG: 4,4

OK
3: OoC
AT+CREG?

+CREG: 2,5,"4E76","00006BE6",3

OK
3: RegR
AT+CGREG?

+CGREG: 2,2

OK
3: Search
AT+CEREG?

+CEREG: 4,4

OK
3: OoC

+CGREG: 5,"4E76","00006BE6",3,"46"
3: RegR
AT+COPS=3,0

OK
AT+COPS?

+COPS: 0,0,"vodafone IT",3

OK
AT+CGATT?

+CGATT: 1

OK
AT+CGACT?

+CGACT: 1,1

OK
AT+UPSD=0,0,0

OK
AT+UPSD=0,100,1

OK
U_CELL_NET: connected after 9 second(s).
AT+CGSN

355439111291770

OK
U_CELL_INFO: IMEI is<PHONE_NUMBER>91770.
AT+USECPRF=0

OK
AT+USECPRF=0,0,0

OK
AT+UHTTP=0,1,"cat-fact.herokuapp.com"

OK
AT+UHTTP=0,5,443

OK
AT+UHTTP=0,4,0

OK
AT+UHTTP=0,7,30

OK
AT+UHTTP=0,6,1,0

OK
AT+UHTTPC=0,1,"/facts","ubxlibhttp_0"

OK

+UUHTTPCR: 0,1,1
GET the data: it was "[{"status":{"verified":true,"sentCount":1},"_id":"58e008800aac31001185ed07","user":"58e007480aac31001185ecef","text":"Wikipedia has a recording of a cat meowing, because why not?","__v":0,"source":"user","updatedAt":"2020-08-23T20:20:01.611Z","type":"cat","createdAt":"2018-03-06T21:20:03.505Z","deleted":false,"used":false},{"status":{"verified":true,"sentCount":1},"_id":"58e008630aac31001185ed01","user":"58e007480aac31001185ecef","text":"When cats grimace, they are usually \"taste-scenting.\" They have an extra organ that, with some breathing control, allows the cats to taste-sense the air.","__v":0,"source":"user","updatedAt":"2020-08-23T20:20:01.611Z","type":"cat","createdAt":"2018-02-07T21:20:02.903Z","deleted":false,"used":false},{"status":{"verified":true,"sentCount":1},"_id":"58e00a090aac31001185ed16","user":"58e007480aac31001185ecef","text":"Cats make more than 100 different sounds whereas dogs make around 10.","__v":0,"source":"user","updatedAt":"2020-08-23T20:20:01.611Z","type":"cat","createdAt":"2018-02-11T21:20:03.745Z","deleted":false,"used":false},{"status":{"verified":true,"sentCount":1},"_id":"58e009390aac31001185ed10","user":"58e007480aac31001185ecef","text":"Most cats are lactose intolerant, and milk can cause painful stomach cramps and diarrhea. It's best to forego the milk and just give your cat the standard: clean, cool drinking water.","__v":0,"source":"user","updatedAt":"2020-08-23T20:20:01.611Z","type":"cat","createdAt":"2018-03-04T21:20:02.979Z","deleted":false,"used":false},{"status":{"verified":true,"sentCount":1},"_id":"58e008780aac31001185ed05","user":"58e007480aac31001185ecef","text":"Owning a cat can reduce the risk of stroke and heart attack by a third.","__v":0,"source":"user","updatedAt":"2020-08-23T20:20:01.611Z","type":"cat","createdAt":"2018-03-29T20:20:03.844Z","deleted":false,"used":false}]" (1859 byte(s)).
AT+ULSTFILE=0

+ULSTFILE: "ubxlibhttp_0"

OK
AT+UDELFILE="ubxlibhttp_0"

OK
Taking down network...
AT+COPS?

+COPS: 0,0,"vodafone IT",3

OK
AT+CFUN=4

OK

+CREG: 0

+CGREG: 0
-1: NReg
-1: NReg
AT+CREG?

+CREG: 2,0

OK
-1: NReg
AT+CGREG?

+CGREG: 2,0

OK
-1: NReg
AT+CEREG?

+CEREG: 4,4

OK
-1: OoC
AT+CGATT?

+CGATT: 0

OK
-1: NReg
U_CELL_NET: disconnected.
Done.
/home/tom/ubxlib/example/http_client/http_main.c:295:exampleHttpClient:FAIL:Function [example].  Expression Evaluated To FALSE
Test ran in 3602ms

-----------------------
1 Tests 1 Failures 0 Ignored
FAIL

The MQTT example, on the other hand fails with a Network Error:
Running exampleMqttClient...
I (228366) uart: queue free spaces: 20
U_CELL: initialising with enable power pin not connected, PWR_ON pin 37 (0x25) (and is toggled from 1 to 0) and VInt pin not connected.
I (228386) gpio: GPIO[37]| InputEn: 0| OutputEn: 1| OpenDrain: 1| Pullup: 1| Pulldown: 0| Intr:0
AT

OK
U_CELL_PWR: powering on, module is already on.
ATE0

OK
AT+CMEE=2

OK
AT+UDCONF=1,0

OK
ATI9

00.12,A00.00

OK
AT&C1

OK
AT&D0

OK
AT+UCGED=2

OK
AT&K3

OK
AT+UPSV=4

OK
AT+UPSMR=1

OK
AT+CPSMS?

+CPSMS:0,"01100000","00000000",,"00000000"

OK
AT+CEDRXS?

+CEDRXS:

OK
AT+UMNOPROF?

+UMNOPROF: 100

OK
AT+CFUN=4

OK
Opened device with return code 0.
Bringing up the network...
U_CELL_NET: preparing to register/connect...
AT+CREG=2

OK
AT+CGREG=2

OK
AT+CEREG=4

OK
AT+CIMI

295050903238853

OK
U_CELL_NET: user-specified APN is "em".
AT+CGDCONT=1,"IP","em"

OK
U_CELL_NET: setting automatic network selection mode...
AT+COPS?

+COPS: 0

OK
AT+CFUN=1

OK
AT+CREG?

+CREG: 2,0

OK
0: NReg
AT+CGREG?

+CGREG: 2,0

OK
0: NReg
AT+CEREG?

+CEREG: 4,4

OK
0: OoC
AT+CREG?

+CREG: 2,0

OK
0: NReg
AT+CGREG?

+CGREG: 2,0

OK
0: NReg

+CREG: 2

+CGREG: 2
-1: Search
-1: Search

+CREG: 5,"4E76","00006BE6",3

3: RegR
AT+CEREG?

+CEREG: 4,4

OK
0: OoC
AT+CREG?

+CREG: 2,5,"4E76","00006BE6",3

OK
3: RegR
AT+CGREG?

+CGREG: 2,2

OK
3: Search
AT+CEREG?

+CEREG: 4,4

OK
3: OoC
AT+CREG?

+CREG: 2,5,"4E76","00006BE6",3

OK
3: RegR
AT+CGREG?

+CGREG: 2,2

OK
3: Search
AT+CEREG?

+CEREG: 4,4

OK
3: OoC
AT+CREG?

+CREG: 2,5,"4E76","00006BE6",3

OK
3: RegR
AT+CGREG?

+CGREG: 2,2

OK
3: Search
AT+CEREG?

+CEREG: 4,4

OK
3: OoC
AT+CREG?

+CREG: 2,5,"4E76","00006BE6",3

OK
3: RegR
AT+CGREG?

+CGREG: 2,2

OK
3: Search
AT+CEREG?

+CEREG: 4,4

OK
3: OoC
AT+CREG?

+CREG: 2,5,"4E76","00006BE6",3

OK
3: RegR
AT+CGREG?

+CGREG: 5,"4E76","00006BE6",3,"46"

+CGREG: 2,5,"4E76","00006BE6",3,"46"

OK
3: RegR
AT+COPS=3,0

OK
AT+COPS?

+COPS: 0,0,"vodafone IT",3

OK
AT+CGATT?

+CGATT: 1

OK
AT+CGACT?

+CGACT: 1,0

OK
AT+CGACT=1,1

OK
AT+CGACT?

+CGACT: 1,1

OK
AT+UPSD=0,0,0

OK
AT+UPSD=0,100,1

OK
U_CELL_NET: connected after 11 second(s).
Connecting to MQTT broker "ubxlib.it-sgn.u-blox.com"...
AT+UMQTT=2,"ubxlib.it-sgn.u-blox.com"

OK
AT+CGSN

355439111291770

OK
AT+UMQTT=0,"355439111291770"

OK
U_CELL_MQTT: trying to connect...
AT+UMQTTC=1

OK
U_CELL_MQTT: waiting for response for up to 30 second(s)...
AT
AT

OK
AT+UMQTTER

+UMQTTER: 13,0

OK
U_CELL_MQTT: error codes 13, 0.
AT+UMQTTER

+UMQTTER: 13,0

OK
AT+UMQTTER

+UMQTTER: 13,0

OK
U_CELL_MQTT: error codes 13, 0.
Unable to connect to MQTT broker "ubxlib.it-sgn.u-blox.com"!
Taking down network...
AT+COPS?

+COPS: 0,0,"vodafone IT",3

OK
AT+CFUN=4

OK

+UUMQTTC: 1,0

+CREG: 0

+CGREG: 0
-1: NReg
-1: NReg
AT+CREG?

+CREG: 2,0

OK
-1: NReg
AT+CGREG?

+CGREG: 2,0

OK
-1: NReg
AT+CEREG?

+CEREG: 4,4

OK
-1: OoC
AT+CGATT?

+CGATT: 0

OK
-1: NReg
U_CELL_NET: disconnected.
Done.
/home/tom/ubxlib/example/mqtt_client/mqtt_main.c:376:exampleMqttClient:FAIL:Function [example].  Expression Evaluated To FALSE
Test ran in 24470ms

-----------------------
1 Tests 1 Failures 0 Ignored
FAIL

Running exampleMqttClient...
I (386866) uart: queue free spaces: 20
U_CELL: initialising with enable power pin not connected, PWR_ON pin 37 (0x25) (and is toggled from 1 to 0) and VInt pin not connected.
I (386886) gpio: GPIO[37]| InputEn: 0| OutputEn: 1| OpenDrain: 1| Pullup: 1| Pulldown: 0| Intr:0
AT
AT

OK
U_CELL_PWR: powering on, module is already on.
ATE0

OK
AT+CMEE=2

OK
AT+UDCONF=1,0

OK
ATI9

00.12,A00.00

OK
AT&C1

OK
AT&D0

OK
AT+UCGED=2

OK
AT&K3

OK
AT+UPSV=4

OK
AT+UPSMR=1

OK
AT+CPSMS?

+CPSMS:0,"01100000","00000000",,"00000000"

OK
AT+CEDRXS?

+CEDRXS:

OK
AT+UMNOPROF?

+UMNOPROF: 100

OK
AT+CFUN=4

OK
Opened device with return code 0.
Bringing up the network...
U_CELL_NET: preparing to register/connect...
AT+CREG=2

OK
AT+CGREG=2

OK
AT+CEREG=4

OK
AT+CIMI

295050903238853

OK
U_CELL_NET: user-specified APN is "em".
AT+CGDCONT=1,"IP","em"

OK
U_CELL_NET: setting automatic network selection mode...
AT+COPS?

+COPS: 0

OK
AT+CFUN=1

OK
AT+CREG?

+CREG: 2,0

OK
0: NReg
AT+CGREG?

+CGREG: 2,0

OK
0: NReg
AT+CEREG?

+CEREG: 4,4

OK
0: OoC
AT+CREG?

+CREG: 2,0

OK
0: NReg
AT+CGREG?

+CGREG: 2,0

OK
0: NReg
AT+CEREG?

+CEREG: 4,4

OK
0: OoC
AT+CREG?

+CREG: 2,0

OK
0: NReg

+CREG: 2

+CGREG: 2
-1: Search
-1: Search

+CREG: 5,"4E76","00006BE6",3

3: RegR
AT+CGREG?

+CGREG: 2,2

OK
0: Search
AT+CEREG?

+CEREG: 4,4

OK
0: OoC
AT+CREG?

+CREG: 2,5,"4E76","00006BE6",3

OK
3: RegR
AT+CGREG?

+CGREG: 2,2

OK
3: Search
AT+CEREG?

+CEREG: 4,4

OK
3: OoC
AT+CREG?

+CREG: 2,5,"4E76","00006BE6",3

OK
3: RegR
AT+CGREG?

+CGREG: 2,2

OK
3: Search
AT+CEREG?

+CEREG: 4,4

OK
3: OoC
AT+CREG?

+CREG: 2,5,"4E76","00006BE6",3

OK
3: RegR
AT+CGREG?

+CGREG: 2,2

OK
3: Search
AT+CEREG?

+CEREG: 4,4

OK
3: OoC
AT+CREG?

+CREG: 2,5,"4E76","00006BE6",3

OK
3: RegR
AT+CGREG?

+CGREG: 2,2

OK
3: Search
AT+CEREG?

+CEREG: 4,4

OK
3: OoC
AT+CREG?

+CREG: 2,5,"4E76","00006BE6",3

OK
3: RegR
AT+CGREG?

+CGREG: 2,2

OK
3: Search
AT+CEREG?

+CEREG: 4,4

OK
3: OoC

+CGREG: 5,"4E76","00006BE6",3,"46"
3: RegR
AT+COPS=3,0

OK
AT+COPS?

+COPS: 0,0,"vodafone IT",3

OK
AT+CGATT?

+CGATT: 1

OK
AT+CGACT?

+CGACT: 1,1

OK
AT+UPSD=0,0,0

OK
AT+UPSD=0,100,1

OK
U_CELL_NET: connected after 10 second(s).
Connecting to MQTT broker "ubxlib.it-sgn.u-blox.com"...
AT+UMQTT=2,"ubxlib.it-sgn.u-blox.com"

OK
AT+CGSN

355439111291770

OK
AT+UMQTT=0,"355439111291770"

OK
U_CELL_MQTT: trying to connect...
AT+UMQTTC=1

OK
U_CELL_MQTT: waiting for response for up to 30 second(s)...
AT
AT

OK
AT+UMQTTER

+UMQTTER: 13,34

OK
U_CELL_MQTT: error codes 13, 34.
AT+UMQTTER

+UMQTTER: 13,34

OK
AT+UMQTTC=1

+CME ERROR: Operation not allowed

AT+UMQTTER

+UMQTTER: 13,34

OK
AT+UMQTTC=1

+CME ERROR: Operation not allowed

AT+UMQTTER

+UMQTTER: 13,34

OK
U_CELL_MQTT: error codes 13, 34.
Unable to connect to MQTT broker "ubxlib.it-sgn.u-blox.com"!
Taking down network...
AT+COPS?

+COPS: 0,0,"vodafone IT",3

OK
AT+CFUN=4

OK

+UUMQTTC: 1,0

+CREG: 0

+CGREG: 0
-1: NReg
-1: NReg
AT+CREG?

+CREG: 2,0

OK
-1: NReg
AT+CGREG?

+CGREG: 2,0

OK
-1: NReg
AT+CEREG?

+CEREG: 4,4

OK
-1: OoC
AT+CGATT?

+CGATT: 0

OK
-1: NReg
U_CELL_NET: disconnected.
Done.
/home/tom/ubxlib/example/mqtt_client/mqtt_main.c:376:exampleMqttClient:FAIL:Function [example].  Expression Evaluated To FALSE
Test ran in 23804ms

-----------------------
1 Tests 1 Failures 0 Ignored
FAIL

The two error codes are: +UMQTTER: 13,0 and +UMQTTER: 13,34
They both come from the connect function at u_cell_mqtt.c but I don't get the problem.
Thanks in advance

Hi there, and thanks for posting.
The HTTP example will fail the test at the end because it is designed to PUT a string to known file (made up of the module's IMEI for uniqueness) on our HTTP test server (ubxlib.redirectme.net); a GET then returns the same string and the compare at the end checks that everything worked as expected.  It looks as though you've modified the test to get some cat facts from the web :-), hence the string comparison at the end will fail: cat facts are not what the simple example was expecting to get back!
On the MQTT runs, the code you are using seems to be connecting to ubxlib.it-sgn.u-blox.com: this used to be our test server until about October last year, after which we moved to ubxlib.redirectme.net (and we will be moving again in a few months to ubxlib.com).  ubxlib.it-sgn.u-blox.com has been switched off for about 6 months now, hence why it is failing to connect; best either (a) move to head revision of master, or (b) at least move to our release 1.2, both of which will point their examples/tests at ubxlib.redirectme.net, the server we currently use for testing.
Give that a try and let us know how things go.

Hi Rob, thanks for the answer! The new broker worked, although my goal is to make the example work with a different broker and that was just the first step. I want to use the following one "mqtt://cssiot01.eurac.edu:1883", it has no TLS but fails to connect. Is there any problem with the port 1883? It's not mentioned anywhere.
`` Running exampleMqttClient...
I (83956) uart: queue free spaces: 20
U_CELL: initialising with enable power pin not connected, PWR_ON pin 37 (0x25) (and is toggled from 1 to 0) and VInt pin not connected.
I (83976) gpio: GPIO[37]| InputEn: 0| OutputEn: 1| OpenDrain: 1| Pullup: 1| Pulldown: 0| Intr:0
AT

OK
U_CELL_PWR: powering on, module is already on.
ATE0

OK
AT+CMEE=2

OK
AT+UDCONF=1,0

OK
ATI9

00.12,A00.00

OK
AT&C1

OK
AT&D0

OK
AT+UCGED=2

OK
AT&K3

OK
AT+UPSV=4

OK
AT+UPSMR=1

OK
AT+CPSMS?

+CPSMS:0,,,"01100000","00000000"

OK
AT+CEDRXS?

+CEDRXS:

OK
AT+UMNOPROF?

+UMNOPROF: 100

OK
AT+CFUN=4

OK
Opened device with return code 0.
Bringing up the network...
U_CELL_NET: preparing to register/connect...
AT+CREG=2

OK
AT+CGREG=2

OK
AT+CEREG=4

OK
AT+CIMI

295050903238853

OK
U_CELL_NET: user-specified APN is "em".
AT+CGDCONT=1,"IP","em"

OK
U_CELL_NET: setting automatic network selection mode...
AT+COPS?

+COPS: 0

OK
AT+CFUN=1

OK
AT+CREG?

+CREG: 2,0

OK
0: NReg
AT+CGREG?

+CGREG: 2,4

OK
0: OoC
AT+CEREG?

+CEREG: 4,0

OK
0: NReg
AT+CREG?

+CREG: 2,0

OK
0: NReg
AT+CGREG?

+CGREG: 2,4

OK
0: OoC
AT+CEREG?

+CEREG: 4,0

OK
0: NReg
AT+CREG?

+CREG: 2,0

OK
0: NReg
AT+CGREG?

+CGREG: 2,4

OK
0: OoC
AT+CEREG?

+CEREG: 4,0

OK
0: NReg
AT+CREG?

+CREG: 2,0

OK
0: NReg

+CREG: 2
-1: Search

+CEREG: 2,,,,,,,,
-1: Search
AT+CGREG?

+CGREG: 2,4

OK
0: OoC
AT+CEREG?

+CEREG: 4,2

OK
0: Search
AT+CREG?

+CREG: 2,2

OK
0: Search
AT+CGREG?

+CGREG: 2,4

OK
0: OoC
AT+CEREG?

+CEREG: 4,2

OK
0: Search

+CREG: 5,"55FA","009C300D",7

+CEREG: 5,"55FA","9C300D",7,,,,
7: RegR
7: RegR
AT+COPS=3,0

OK
AT+COPS?

+COPS: 0,0,"vodafone IT",7

OK
AT+CGATT?

+CGATT: 1

OK
AT+CGACT?

+CGACT: 1,1

OK
AT+UPSD=0,0,0

OK
AT+UPSD=0,100,1

OK
U_CELL_NET: connected after 7 second(s).
Connecting to MQTT broker "mqtt://cssiot01.eurac.edu:1883"...
AT+UMQTT=2,"mqtt://cssiot01.eurac.edu:1883"

OK
AT+CGSN

355439111292281

OK
AT+UMQTT=0,"355439111292281"

OK
U_CELL_MQTT: trying to connect...
AT+UMQTTC=1

OK
U_CELL_MQTT: waiting for response for up to 30 second(s)...

+UUMQTTC: 1,0
AT+UMQTTER

+UMQTTER: 13,34

OK
U_CELL_MQTT: error codes 13, 34.
AT+UMQTTER

+UMQTTER: 13,34

OK
AT+UMQTTC=1

OK
U_CELL_MQTT: waiting for response for up to 30 second(s)...

+UUMQTTC: 1,0
AT+UMQTTER

+UMQTTER: 13,34

OK
U_CELL_MQTT: error codes 13, 34.
AT+UMQTTER

+UMQTTER: 13,34

OK
AT+UMQTTC=1

OK
U_CELL_MQTT: waiting for response for up to 30 second(s)...

+UUMQTTC: 1,0
AT+UMQTTER

+UMQTTER: 13,34

OK
U_CELL_MQTT: error codes 13, 34.
AT+UMQTTER

+UMQTTER: 13,34

OK
U_CELL_MQTT: error codes 13, 34.
Unable to connect to MQTT broker "mqtt://cssiot01.eurac.edu:1883"!
Taking down network...
AT+COPS?

+COPS: 0,0,"vodafone IT",7

OK
AT+CFUN=4

OK

+CREG: 0

+CEREG: 0,,,,,,,,
-1: NReg
-1: NReg
AT+CREG?

+CREG: 2,0

OK
-1: NReg
AT+CGREG?

+CGREG: 2,4

OK
-1: OoC
AT+CEREG?

+CEREG: 4,0

OK
-1: NReg
AT+CGATT?

+CGATT: 0

OK
-1: NReg
U_CELL_NET: disconnected.
Done.
/home/tom/ubxlib/example/mqtt_client/mqtt_main.c:376:exampleMqttClient:FAIL:Function [example].  Expression Evaluated To FALSE
Test ran in 17071ms

-----------------------
1 Tests 1 Failures 0 Ignored
FAIL``

Try changing mqtt://cssiot01.eurac.edu:1883 to be just cssiot01.eurac.edu:1883, i.e. leave off the prefix, and see if that makes things any better.

Thanks for the support, I apologize if I wrote in here but there's lack of support outside!

No problem at all, it's what we're here for.


Add 1.7.1 serving manifests and revert the changes regarding revision-timeout-seconds

I am not fully sure on the revert. I have zero context, and the PR description has also no information, @houshengbo

@matzew The value used to be 200. Then, it caught a serving issue. After the serving resolved it and released 1.7.1, this pr loads all the latest serving manifests and reverts the value to 200.


client certificate post app install

Hi there, I have a situation where my app works  with locally installed servers of my clients. This means that the certificate generated will not be known to me. Is it possible to make this plugin work with dynamic certificates ? I can't install a cert in www/ as I won't know of it. My app users will do this.

Understood your needs. I will take that into consideration for the next ver.
Regards,Zibib
Sent via the Samsung Galaxy S® 6, an AT&T 4G LTE smartphone
-------- Original message --------From: Pliable Pixels<EMAIL_ADDRESS>Date: 6/21/16  2:44 PM  (GMT-05:00) To: zxyang/cordova-plugin-clientcertificate<EMAIL_ADDRESS>Subject: [zxyang/cordova-plugin-clientcertificate] client certificate post app
install (#2)
Hi there, I have a situation where my app works  with locally installed servers of my clients. This means that the certificate generated will not be known to me. Is it possible to make this plugin work with dynamic certificates ? I can't install a cert in www/ as I won't know of it. My app users will do this.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.

Awesome, thank you! One option that was suggested by another user of my app was to implement a way to retrieve a list of all known certificates from the device and register them all. That way a person can install the cert post app install. Not sure what you feel about this approach.
I'd love to know when you plan to release the next iteration :-)

@pliablepixels for dyn cert : https://github.com/agenceaddictic/cordova-plugin-client-certificate-addictic :)

@agenceaddictic excellent! Is it possible to let the user select the installed certificate dynamically? When we install certs they automatically get stored in the keystore (iOS) or cert store (android). Is it possible to prompt the user with a list to select the appropriate cert ? This is for the case that the user has already installed the certificate in his phone before running the app and its store in the system certificate list. (Something like this http://stackoverflow.com/questions/4458046/listing-all-installed-certificates-on-android)

This plugin is not made for that. It's a helper which will register the certificate for the next transaction.
But you can with a JS dev ! We can easily imagine a scan of the cert folder with de plugin file of cordova, display all the cert, and retrieve the full path of the selected certificate


Added support to authentication for modifying dialogs

This PR adds support for authentication in dialog modification (hold, unhold, or any other sdp body). Also includes an integration test to validate that the described case is covered.
fixes #133

Thanks!


set no colors windows

it was buggy on windows, so let's just disable it :
tested as working with wine:

Changes

Submitter Checklist

[ ] ♽  Run make test lint before submitting a PR (ie: with pre-commit, no need to waste CPU cycle on CI
[ ] 📖 If you are adding a user facing feature or make a change of the behavior, please verify that you have documented it
[ ] 🧪 100% coverage is not a target but most of the time we would rather have a unit test if you make a code change.
[ ] 🎁 If that's something that is possible to do please ensure to check if we can add a e2e test.
[ ] 🔎 If there is a flakiness in the CI tests then don't necessary ignore it, better get the flakyness fixed before merging or if that's not possible there is a good reason to bypass it. (token rate limitation may be a good reason to skip).

/retest


fastclick does not work in ipad due to touchend stopPropagation

in mobile-angular-ui.gestures.js in line 490 comment event.stopPropagation();

Hi @hamedmohammadi in #131 you said

this issue as i mentioned as an issue is because of stopPropagation of touchend that cause fastClick dont work properly . issue number #257
sry for lack of fixed code because i dont know all aspect of this project for send merge request .may be bugy

Can you please explain what stopPropagation of touchend refers to? Where do you notice it to happens?
Thank you very much.


discuss phenotype querying over has_output

We should find out if users would expect to retrieve "increased RNA level"
on a search for "increased gene expression".
108 | increased gene expression (FYPO:0006548) [single locus haploid genotypes] | ...
409 | increased RNA level (FYPO:0001890) [single locus haploid genotypes]
and if so how the querying should handle this:
increased transcription is_a increased gene expression
increased transcription has_output increased RNA level

(I thought we already did some inferences over has_output for querying, but not  for this case?)
(Low priority)

(I thought we already did some inferences over has_output for querying, but not for this case?)

We use output_of but not has_output.
I'm going to assign this to you because I don't know what the next step is.

me neither but I'm sure we will figure it out when necessary!


ROX-16876: roxctl declarative-config create notifier * commands

Description
generic and splunk subcommands to the declarative-config create notifier command.
Checklist

[x] Investigated and inspected CI test results
[x] Unit test and regression tests added
[ ] Evaluated and added CHANGELOG entry if required
[ ] Determined and documented upgrade steps
[ ] Documented user facing changes (create PR based on openshift/openshift-docs and merge into rhacs-docs)

If any of these don't apply, please comment below.
Testing Performed
Unit tests, manual CLI tests.

Current dependencies on/for this PR:

master

PR #6176   👈

This comment was auto-generated by Graphite.

/test shell-unit-tests


Fix PIN button not visible when menu expands (#859)

Summary of the pull request
Fixed the PIN button not visible issue
References and relevant issues
#859
Detailed description of the pull request / Additional comments
Validation steps performed
PR checklist

[x] Closes #859
[ ] Tests added/passed
[ ] Documentation updated

Closed and reopened to trigger new PR validation.

@ssccinng Please include before/after screenshots.

Closing, since this was superseded by the larger #1033


Consider configuring registry mirrors for quick-install

Making use of registry mirrors might complement a missing (optional) piece for production deployments.

In cluster service name: trow:3000 → obtaining TLS through k8s cert authority or SPIFFE

External service name myregistry.mylocaldomain.example.com → managed via hostctl + mkcert + ingress controller for TLS termination

Splitting the demo installation at this line, it would also make crystal clear the double ended nature of TLS termination (within the cluster, external for pushing). In production, they might merit separate consideration, too.

At least for containerd there is a ticket for hot reloading registry mirrors (to avoid the need for cluster restarts), so this is something you might be interested in: https://github.com/containerd/containerd/issues/4478

The containerd issue is really annoying and makes it hard for us to support containerd in the quick install. Ideally supporting new registries wouldn't require editing config at all, just adding the cert to a directory.
At the moment we only support docker based k8s distros because of this issue.
I'm not really sure what you're suggesting as a solution. In managed k8s clusters it may be possible to edit the containerd config, but restarting all the daemons is somewhere between tricky & unwanted -> impossible. Hot reloading would probably help, but it's not going to land in distros for a while :(

@amouat I would suggest you expose your novel use-case levering the weight and importance of the project you represent on this upstream issue. Since k3d is also very interested, I'd predict once implemented, they would rather adopt it sooner than later. So at least k3s would be a timely option for quick-install and probably minikube and kind follow suite quickly.

So basically I've worked my way to the problem of teaching the cert bundles to the cluster node. The current only solution which I see without requiring service interruption would be to distribute the CA on cluster creation.

→ regsitries.yaml — k3s
→ loading at cluster startup — k3s

Thanks. We will be reaching out distros and containerd when we get further with development.
I'm not sure what this issue is tracking now - is it ok if I close it?

There is one thing about configuring cluster mirrows, I have to check though on my PoC branch if containerd really is covered by k8s' internal dns and could access something likw trow-svc.
I'll reporr back here once I find it out, but am closing for now.


Sorting with row selection

When selecting a row via the checkbox or the click on row (if activated), we loose the current active sort on columns.
It seems to revert to the default sorting.

@jfougere, ok I'll check this out. Thanks :)

@jfougere, could you please show your steps for reproducing this issues?  I sort a column and then select a row, but everything is fine.

OK in fact I pinned down the issue to my provided onSelect method.
I do a setState in it and this seems to refresh the table which loose its active sort.
Any ideas ?

what's state you changed?

I'm setting the state of one property of the datatable's wrapper component.

I'll test it based on your situation.

@jfougere, I thinks you need to show your code for me to reproduce this issue. Thanks :)

Ok so I checked and it seems to be related to how i push the data to the table component.
[Warning] I am a react beginner, so my way of doing thing may be completely wrong ;)
So my parent component has a method loading data through ajax and store the result in the parent state.
Then the table data attribute is defined like this:
data={this.state.packages}
Finally, I have onSelect, onSelectAll methods defined which call setState on the parent component but not changing the loaded data state at all.
I assume that calling setState on the parent, also re-render the table child component. I hoped that setting a property which is not linked to the child component display would not have the child re-rendered. But this does not seems to work like that :).
Maybe you have a suggestion for me.

@jfougere, ok there's something I need to make sure firstly,

You create a React component which wrap the <BootstrapTable> directly and also fetch data from server?

setState will call a render for all the child component, if you want some child component do not re-render, you can implement shouldComponentUpdate to tell react whether re-render it or not.

Hope these can help you :)
BTW, I've wrote a test bese on your case, I also call setState in onSelect, but I dont change the source data, just change a unimportant state. But I didn't see any problem or error.
However, maybe you can tell me your UI flow or scenario, maybe I can help you.

yes
I was thinking about that, but it would mean that I need to create a child component just to wrap the <BootstrapTable> and implement the shouldComponentUpdate in it.

I think the difference between my case and yours is just that in your test case the data prop of your table is static and not in the wrapping component state.
I tried an empty setState call and result is the same. So my conclusion is that putting state data as value for the data prop make the <BootstrapTable> rerender and so loose active sort.

Exactly

I think the difference between my case and yours is just that in your test case the data prop of your table is static and not in the wrapping component state.

I'm not sure, need to check my test after my work.

I tried an empty setState call and result is the same. So my conclusion is that putting state data as value for the data prop make the  rerender and so loose active sort.

maybe it's a bug, I'll confirm it today. Thanks !

Ok I think I found where that happens.
In BootstrapTable in method componentWillReceiveProps , we have the following code:
const sortInfo = this.store.getSortInfo();
const sortField = options.sortName || (sortInfo ? sortInfo.sortField : undefined);
const sortOrder = options.sortOrder || (sortInfo ? sortInfo.order : undefined);
if (sortField && sortOrder) this.store.sort(sortOrder, sortField);

The problem here is that default order options have precedence against the one already set in the store.
I think that options.sortName & options.sortOrder should take precedence only if changed otherwise we should keep the one defined in the store if any.
@AllenFang what do u think ?

@jfougere, I think there's some mistake, could you please use defaultSortName and defaultSortOrder instead?
Actually, you find a bug on default sort, because I change the default sort options from v2.1.3 but I forgot to modify the code in componentWillReceiveProps. I'll fix it

EDIT:
sorry, I make a wrong explantation, that's say,
sortName and sortOrder is used on external sorting management, check this example
defaultSortName and defaultSortOrder is used on default sorting, just work on first rendered.
so I thinks you use defaultSortName and defaultSortOrder will solve your problem.

That's it ! Thanks. I was using sortName instead of defaultSortName. Now my only issue is that sorting result still could change a bit because I can have several lines with same value in some sortable columns. And so the sort result does not seems to be constant in such case.

@jfougere, any scenario could give me to reproduce this consistency issues?

My scenario is the following:

one bootstrap table with a few sortable column
those sortable columns does not contain unique values
some of the sortable columns have custom sortFunc but not all of them (I don't think it is really relevant here)
selection of rows activated and a setState call in the onSelect

Results:
When doing the first row selection, the sort is kept now ( thanks @AllenFang to point my mistake), but the sort result is changed a little between rows with same sorted value.
When doing a second or more row selection, the sort result don't change anymore.

Another thing I just remarked, is that I loose also the current pageSize selection when the table got refreshed after the row is selected.

For the sizePerPage, I assume it is in componentWillReceiveProps that it get reverted to the one I configured in the options. (I confirm that not adding sizePerPage make the current page size selection kept, when the table got rendered again).
For the currPage which is reverted to 1, I did not check yet.

@jfougere, for the sorting problem, I'll test it. and could you show me youroptions settings?

Below the table definition:
<BootstrapTable ref='datatable' data={this.state.packages}
                                            striped={true} hover={true}
                                            condensed={true} pagination={true} search={true}
                                            multiColumnSearch={true}
                                            searchPlaceholder="Search packages"
                                            exportCSV={true}
                                            csvFileName={this.state.selectValue != null ? this.state.selectValue.value+'.csv' : 'release.csv'}
                                            options={{
                                                    noDataText:'No packages',
                                                    clearSearch: true,
                                                    sizePerPageList: [10, 20, 50, 100],
                                                    sizePerPage: 20,
                                                    defaultSortName: 'name',
                                                    defaultSortOrder:'asc'
                                                    }}
                                            selectRow={{
                                                    mode: "checkbox",
                                                    clickToSelect: true,
                                                    bgColor: "#e7e7e7",
                                                    onSelect: this.onSelect.bind(this),
                                                    onSelectAll: this.onSelectAll.bind(this)
                                            }}>

@jfougere, thanks. I'll check this out

For the sizePerPage, I assume it is in componentWillReceiveProps that it get reverted to the one I configured in the options. (I confirm that not adding sizePerPage make the current page size selection kept, when the table got rendered again).
For the currPage which is reverted to 1, I did not check yet.

@jfougere, sorry, could you show you scenario for this again, I can't reproduce it.
And about the sorting problem, there's a little bug that I'll fix it. But about the same field data sorting,
there's sill be a little change on it. It's hard to solve it... because the order of the source data has been change every time. In next version, you can try it again

@AllenFang, for the sizePerPage and currPage normally it can be reproduce that way:

BootstrapTable with option sizePerPage set to a value different from the default one
BootstrapTable wrapped in a parent component calling setState() so the table is rendered again
Then when the table is displayed, select a different sizePerPage value than the default / select another page than the first one
When the table is render again due to the parent setState call you should loose the current sizePerPage selection (which should be back to the sizePerPage option value), and you should be back to page 1

For the sizePerPage for me to me it is due to this line in componentWillReceiveProps methods:
const sizePerPage = options.sizePerPage || this.state.sizePerPage;

If an option has been provided it will overrides the current settings. I think we should check first if the sizePerPage option has been changed in the new props. If yes apply the option, otherwise apply the current settings.
For the currPage it may be linked to the sizePerPage issue since its computed value is linked in my case (no options.page defined).
Thanks for your help!

@jfougere, ok, I'll review it tomorrow, I'm going to sleep. BTW, you can check the newest version. But there may still a problem in there if the column with same value. I just solve some bug.  I'll describe it in tomorrow.  Thanks 👍

Thanks @AllenFang. Tested with new version. Still same results. (Thanks for #484 )

@jfougere, the sorting problem is hard to solve, because a compare to b is always return 0 if they are the same value. so will cause a little change between desc and asc switching.

@AllenFang I understand no problem.
The only thing strange is that the order change a little bit only the first time a row gets selected and the table re-rendered. The next times, the order don't change anymore.
So I believe that the source data the first time and the times after are not the same, otherwise the result would be the same.
I'll try to have a look at your code, maybe I can find something to help.

@jfougere, thanks so much, BTW, I've another question, sorry for my poor english....

Then when the table is displayed, select a different sizePerPage value than the default / select another page than the first one
I'm not sure what you said, I just know i need to select another sizePerPage value.. but there's no any error or unexpection happened..

anything I miss?
because I cant reproduce it and english is bad. so.. uh, that's why I need a simple demo or repo :)
sorry ;(

@jfougere, oh I figure out!!

@jfougere, about the currPage and  sizePerPage problems, I've fixed on v2.3.5.

Hi @AllenFang, thanks a lot.
I tested this morning in v2.3.5. sizePerPage is now fine, but I still have an issue with currPage.
Since v2.3.5, currPage is kept when selecting a row, but not if the selected page is the last one.
Thanks for your help.

@jfougere, I'll check this out. Thanks your feedback.

@jfougere, I'm not sure your problem that you encounter after upgrade to v2.3.5. But I found if select a row which is in the last page and then setState will cause jumping to first page.

Yes that's the problem I described! 😀

@jfougere, great, thanks you :)

@jfougere, check v2.3.6, sorry for lately fixing

@AllenFang no problem. Thank so much for the fixes. I'll try v2.3.6 today.
About the remaining issue of the sort being change a bit in case of several line with same sorted values. Any news ?
I was thinking that maybe you could sort first by the sort filter and then by the key. This way the result would always be deterministic regardless of the current array state.

Tested v2.3.6, problem with the last page is gone ! Thank you ;)

Hi! I'm getting this behavior on 4.0.2, same setup as above's only without CSV export. Whenever I select a row the sorting status gets reset, the column header does not reflect this change, though. I'm using defaultSortName and defaultSortOrder.
In my onSelect and onSelectAll I set a couple state properties which I use to externally track selected rows. I don't change the data at all. However when I disable my custom onSelect and onSelectAll the sorting does not get reset. I'm trying to implement an approach based on a ref to the table and selectedRowKeys in the mean time.
Looking at the code, it seems like componentWillReceiveProps always set the store data to a new copy of data even if it has not changed. Could this be the source of this behavior and be optimized?
I have a remote = { search: true } setting as well that I see could affect this.
I tried using sortName and sortOrder in options as well based on this part of componentWillReceiveProps but the behavior was the same.

Just to add that any update to the state will reset the sorting on the table. So I have some additional state linked to modal status in custom buttons in the toolbar and every time those are toggled the sorting status is lost. Hence I think that even if I use the selectedRowKeys approach to avoid having custom onSelect* I'll still have the same issue.

Hello @sebasmagri a quick example to reproduce this issue will be good for me, but please keep it simple and minimal, thanks

Hi @AllenFang, I think I'm seeing the same issue, so I've created a small repo to reproduce this issue: https://github.com/mrijke/react-bootstrap-table-repro
What happens is after sorting the table and selecting an element by clicking the row, the onRowClick handler does a setState call, after which the rows are moving around and the row you clicked might not be under the cursor any more. The interesting part is that this only happens the first time a row is selected, other times after that work fine and the rows are not shuffled any more.

@mrijke I will spend some time to investigate this issue, thanks

@sebasmagri sorry for lately reply, your issue has been fixed and @mrijke your issue is some different with @sebasmagri , I'm still checking, thanks
please check on v4.1.1


Implement remote.NetworkServiceServer/Client in nsmd

In order to enable nsmd's on different Nodes to communicate to set up remote.Connection between them, we will need nsmd to implement both a
remote.NetworkServiceServer
and a
remote.NetworkServiceClient
based on the remote/networkservice/networkservice.proto

== Changes to controlplane/pkg/nsmd/network_service_server.go NSE lookup ==
controlplane/pkg/nsmd/network_service_server.go currently only handles NSEs that are local to and managed by that nsmd.
The simplest (and most immediate) fix for this is to replace the:
endpoints := srv.model.GetNetworkServiceEndpoints(request.GetConnection().GetNetworkService()) call with a call the registryFindNetworkService.

remote.NetworkService.Request from remote nsmd
Handling non-local NSEs would go here.
First you would want to call remote.NetworkService.Request.
The remote.Connection should be partially specified.
Partially specified in this case means:

No Connection.Id.  The remote nsmd should fill in the Connection.Id
If using something like a VXLAN Mechanism, src_ip would be specified, but not dst_ip or vni. (see #342 )

Please note: remote.Connection once fully completed by the remote nsmd and returned to the local nsmd will match in both nsmds.  It will have the same remote.Connection.Id and content.
You can then use the Connection returned from the remote nsmd to program the CrossConnect for the Dataplane.
I would suggest doing this initially as a simple standalone PR, though doubtless it will need to be revisited when the server side is complete.

I recommend these end up in a new project board in github.
https://github.com/ligato/networkservicemesh/projects

@fkautz https://github.com/ligato/networkservicemesh/projects/2

@haiodo You had asked about the server implementation for registry.FindNSE()...
its in the nsmd-k8s.
You can reach it the same way we do for registering NSEs in the nsmd
It might be worth simply doing a DiscoveryClient() func similar to RegistryClient().

Ok, It seems I've found all stuff I need.

Just one question left:
https://github.com/ligato/networkservicemesh/blob/e7755545a47f8c6aefce97536a85fdf98d799089/controlplane/pkg/nsmd/workspace.go#L82
Register NetworkServiceManager and URI is always same, nsmUrl := "<IP_ADDRESS>:5000" it is set at https://github.com/ligato/networkservicemesh/blob/e7755545a47f8c6aefce97536a85fdf98d799089/controlplane/cmd/nsmd/nsmd.go#L16
Any idea how to make it a proper one? Thanks.

Ah... good catch.
So the nsmdpapi should only listen on "<IP_ADDRESS>:5000" and the nsmUrl should involve the IP address of the Pod.

I suspect you will find yourself wanting to store Connection state... when you get to that point, you should consider simply using remote.MonitorConnectionServer to do so.  It handles the Connection store nicely, and gives you a MonitorService for it for free :)
Somewhat similar to what I've done for the local case here

Since PR is merged, this one could be closed.

Closed in #522


Support adding/removing the metadata keywords property

Description
As a governance, risk and compliance author, I want to add/remove the keywords property in regard to metadata.
Acceptance Criteria

The props[keywords] field can be added
The props[keywords] field can be removed
REST API support exist for these new routes

Proposed Solution
If no keywords exist, a button appears in its place with text like "+ Keyworks" or "Add Keywords".
Additional Notes
No response
Implementation

[ ] I can (or plan to) submit a pull request to implement this
[ ] Implementing this may result in a breaking change

Depends on #738


Lack of both steps and uses isn't flagged as an error

Describe the bug
A clear and concise description of what the bug is.
To Reproduce
Steps to reproduce the behavior:

With this workflow csharp-qltest.yml:

name: "C#: Run QL Tests"

on:
  push:
    paths:
      - "csharp/**"
      - "shared/**"
      - .github/actions/fetch-codeql/action.yml
      - codeql-workspace.yml
    branches:
      - main
      - "rc/*"
  pull_request:
    paths:
      - "csharp/**"
      - "shared/**"
      - .github/workflows/csharp-qltest.yml
      - .github/actions/fetch-codeql/action.yml
      - codeql-workspace.yml
    branches:
      - main
      - "rc/*"

defaults:
  run:
    working-directory: csharp

jobs:
  qlupgrade:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: ./.github/actions/fetch-codeql
      - name: Check DB upgrade scripts
        run: |
          echo >empty.trap
          codeql dataset import -S ql/lib/upgrades/initial/semmlecode.csharp.dbscheme testdb empty.trap
          codeql dataset upgrade testdb --additional-packs ql/lib
          diff -q testdb/semmlecode.csharp.dbscheme ql/lib/semmlecode.csharp.dbscheme
      - name: Check DB downgrade scripts
        run: |
          echo >empty.trap
          rm -rf testdb; codeql dataset import -S ql/lib/semmlecode.csharp.dbscheme testdb empty.trap
          codeql resolve upgrades --format=lines --allow-downgrades --additional-packs downgrades \
           --dbscheme=ql/lib/semmlecode.csharp.dbscheme --target-dbscheme=downgrades/initial/semmlecode.csharp.dbscheme |
           xargs codeql execute upgrades testdb
          diff -q testdb/semmlecode.csharp.dbscheme downgrades/initial/semmlecode.csharp.dbscheme

  choose-runner:
    runs-on: ubuntu-latest
    outputs:
      mac-12: ${{ vars.use-large-mac-runners-for-speed && 'mac-12-xl' || 'mac-12' }}
      ubuntu-latest: ${{ vars.use-large-linux-runners-for-speed && 'ubuntu-latest-xl' || 'ubuntu-latest' }}
      windows-latest: ${{ vars.use-large-win-runners-for-speed && 'windows-latest-xl' || 'windows-latest' }}

  qltest:
    needs: choose-runner
    runs-on: ${{ needs.choose-runner.outputs.ubuntu-latest }}
    strategy:
      fail-fast: false
      matrix:
        slice: ["1/2", "2/2"]
    steps:
      - uses: actions/checkout@v4
      - uses: ./csharp/actions/create-extractor-pack
      - name: Cache compilation cache
        id: query-cache
        uses: ./.github/actions/cache-query-compilation
        with:
          key: csharp-qltest-${{ matrix.slice }}
      - name: Run QL tests
        run: |
          codeql test run --threads=0 --ram 50000 --slice ${{ matrix.slice }} --search-path extractor-pack --check-databases --check-undefined-labels --check-repeated-labels --check-redefined-labels --consistency-queries ql/consistency-queries ql/test --compilation-cache "${{ steps.query-cache.outputs.cache-dir }}"
        env:
          GITHUB_TOKEN: ${{ github.token }}
  unit-tests:
    strategy:
      matrix:
        os: [ubuntu-latest, windows-2019]
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v4
      - name: Setup dotnet
        uses: actions/setup-dotnet@v4
        with:
          dotnet-version: 8.0.100
      - name: Extractor unit tests
        run: |
          dotnet test -p:RuntimeFrameworkVersion=8.0.0 extractor/Semmle.Util.Tests
          dotnet test -p:RuntimeFrameworkVersion=8.0.0 extractor/Semmle.Extraction.Tests
          dotnet test -p:RuntimeFrameworkVersion=8.0.0 autobuilder/Semmle.Autobuild.CSharp.Tests
          dotnet test -p:RuntimeFrameworkVersion=8.0.0 "${{ github.workspace }}/cpp/autobuilder/Semmle.Autobuild.Cpp.Tests"
        shell: bash
  stubgentest:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: ./csharp/actions/create-extractor-pack
      - name: Run stub generator tests
        run: |
          # Generate (Asp)NetCore stubs
          STUBS_PATH=stubs_output
          python3 scripts/stubs/make_stubs_nuget.py webapp Swashbuckle.AspNetCore.Swagger 6.5.0 "$STUBS_PATH"
          rm -rf ql/test/resources/stubs/_frameworks
          # Update existing stubs in the repo with the freshly generated ones
          mv "$STUBS_PATH/output/stubs/_frameworks" ql/test/resources/stubs/
          git status
          codeql test run --threads=0 --search-path extractor-pack --check-databases --check-undefined-labels --check-repeated-labels --check-redefined-labels --consistency-queries ql/consistency-queries -- ql/test/library-tests/dataflow/flowsources/aspremote
        env:
          GITHUB_TOKEN: ${{ github.token }}

Look at the choose-runner job

Expected behavior
According to GitHub, this job isn't valid:
https://github.com/jsoref/codeql/actions/runs/7712430252

Invalid workflow file: .github/workflows/csharp-qltest.yml#L1
No steps defined in steps and no workflow called in uses for the following jobs: choose-runner

Generally if a workflow isn't valid, this extension will complain, e.g. if I add just steps::

Screenshots
Invalid workflow file: .github/workflows/csharp-qltest.yml#L1
No steps defined in steps and no workflow called in uses for the following jobs: choose-runner
Extension Version
v0.26.2
Additional context

actionlint (https://github.com/rhysd/actionlint) does a good job in detecting empty steps, see here.
There's also a VScode extension for actionlint (I didn't use it myself):
https://marketplace.visualstudio.com/items?itemName=arahata.linter-actionlint.

I was looking for a bug I'm encountering and I came across this issue, this actually isn't a bug, because you can call a reusable workflow from a job and omit steps: an example of this is described here: https://docs.github.com/en/actions/sharing-automations/reusing-workflows#using-a-matrix-strategy-with-a-reusable-workflow
This means that there are situations where steps can be omitted, but this checker probably needs to be smarter and only allow omission if uses has a value.

It's a bug that the specific workflow isn't flagged as in error-- you're right that the initial summary wasn't strict enough about the conditions, although the body of the issue should have been sufficient for any engineer working on it. I've updated the summary.

I proposed a fix, see https://github.com/actions/languageservices/pull/98.


New Error (Enter Date Of Birth)

Anyone knoww how to fix it?
http://prntscr.com/skoet7

https://gist.github.com/tcmaps/17f2caaafb223fb9fc513e4433e58411
this gives you 50 seconds to enter some date and click continue


Kapacitor Run module

This PR contains the following:

Include run-kapacitor script to update the config and start up the Kapacitor service
Update install-kapacitor script to install run-kapacitor script in /opt/kapacitor/bin
Update install-kapacitor script to disable Kapacitor service so it doesn't start up on first instance boot

Merging so I can write up a quick demo local docker test


feature[dashboard] Display version and gitCommitId in one column

What changes were proposed in this pull request?
Display version and gitCommitId in one column
Why are the changes needed?
Fix: #2205
Does this PR introduce any user-facing change?
Yes.
How was this patch tested?
Locally

Ping @jerqi @zuston @zhengchenyu

LGTM. Could you correct your title like [#issue_id] feat(dashboard)?

Fixed.

LGTM. Could you correct your title like [#issue_id] feat(dashboard)?

Fixed.

Could you use () instead of []?

LGTM. Could you correct your title like [#issue_id] feat(dashboard)?

Fixed.

Could you use () instead of []?

Fixed.


Minor changes in vtk reference guide

Some changes in the reference guide of the VTK panel when using native vtk object

remove reference to altair

In the same time height of the panel is not respected on the web site

whereas it is on my live notebook

Also while you're at it, could you change the sizing_mode='stretch_both to stretch_width.

Ha, good timing, I'm hoping that stretch_width will fix the website sizing issue.

Thanks looks great, I'll start a doc build as soon as this is merged.


Electron v8.3.3 build from source failed

I tried to build from the source for electron v8.3.3 but failed with the following error, similar to #612. I also tried electron-rebuild and electron-builder install-app-deps, both of which gave the same errors.
# npm rebuild sqlite3 --target=8.3.3 --runtime=electron --dist-url=https://atom.io/download/electron --update-binary --abi=76 --unsafe-perm

><EMAIL_ADDRESS>install /root/restructured-notes/node_modules/sqlite3
> node-pre-gyp install --fallback-to-build

node-pre-gyp WARN Using request for node-pre-gyp https download
node-pre-gyp WARN Tried to download(403): https://mapbox-node-binary.s3.amazonaws.com/sqlite3/v4.2.0/electron-v8.3-linux-x64.tar.gz
node-pre-gyp WARN Pre-built binaries not found for<EMAIL_ADDRESS>and<EMAIL_ADDRESS>(electron-v8.3 ABI, glibc) (falling back to source compile with node-gyp)
make: Entering directory '/root/restructured-notes/node_modules/sqlite3/build'
make: *** No rule to make target '../deps/sqlite-autoconf-3310100.tar.gz', needed by 'Release/obj/gen/sqlite-autoconf-3310100/sqlite3.c'.   System Linux 4.15.0-88-generic
gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "build" "--fallback-to-build" "--module=/root/restructured-notes/node_modules/sqlite3/lib/binding/electron-v8.3-linux-x64/node_sqlite3.node" "--module_name=node_sqlite3" "--module_path=/root/restructured-notes/node_modules/sqlite3/lib/binding/electron-v8.3-linux-x64" "--napi_version=6" "--node_abi_napi=napi" "--napi_build_version=0" "--node_napi_label=electron-v8.3"
gyp ERR! cwd /root/restructured-notes/node_modules/sqlite3
gyp ERR! node -v v12.18.1
gyp ERR! node-gyp -v v5.1.0
gyp ERR! not ok
node-pre-gyp ERR! build error
node-pre-gyp ERR! stack Error: Failed to execute '/usr/bin/node /usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --module=/root/restructured-notes/node_modules/sqlite3/lib/binding/electron-v8.3-linux-x64/node_sqlite3.node --module_name=node_sqlite3 --module_path=/root/restructured-notes/node_modules/sqlite3/lib/binding/electron-v8.3-linux-x64 --napi_version=6 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=electron-v8.3' (1)
node-pre-gyp ERR! stack     at ChildProcess.<anonymous> (/root/restructured-notes/node_modules/node-pre-gyp/lib/util/compile.js:83:29)
node-pre-gyp ERR! stack     at ChildProcess.emit (events.js:315:20)
node-pre-gyp ERR! stack     at maybeClose (internal/child_process.js:1021:16)
node-pre-gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5)
node-pre-gyp ERR! System Linux 4.15.0-88-generic
node-pre-gyp ERR! command "/usr/bin/node" "/root/restructured-notes/node_modules/sqlite3/node_modules/.bin/node-pre-gyp" "install" "--fallback-to-build"
node-pre-gyp ERR! cwd /root/restructured-notes/node_modules/sqlite3
node-pre-gyp ERR! node -v v12.18.1
node-pre-gyp ERR! node-pre-gyp -v v0.11.0
node-pre-gyp ERR! not ok
Failed to execute '/usr/bin/node /usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --module=/root/restructured-notes/node_modules/sqlite3/lib/binding/electron-v8.3-linux-x64/node_sqlite3.node --module_name=node_sqlite3 --module_path=/root/restructured-notes/node_modules/sqlite3/lib/binding/electron-v8.3-linux-x64 --napi_version=6 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=electron-v8.3' (1)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR<EMAIL_ADDRESS>install: `node-pre-gyp install --fallback-to-build`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

I have tried to upgrade to the latest version via npm install --global npm@latest but it didn't work. Tried on both Ubuntu 18.04 with gcc v7.5.0 and macOS 10.14.6 with clang 11.0.0. I'm using sqlite3 4.2.0.

A temporary solution I found was setting the target to be 8.2.0, since there was a pre-built binary and that, according to node abi registry, the entire electron v8 shares the same API. Then I copied node_modules/sqlite3/lib/binding/electron-v8.2-darwin-x64/node_sqlite3.node into node_modules/sqlite3/lib/binding/electron-v8.3-darwin-x64/node_sqlite3.node, which made it work on my computer...for now. I think a better solution would be, if we can't compile it, at least have some pre-built binaries for electron v8.3. In theory it should be the same as the ones for 8.2.x, but I don't really know how to work with node-pre-gyp to submit it.

Try v5.0.0

Try v5.0.0

Same error.

So far I have been using this shell script to install sqlite3 for my project
rebuild_sqlite3() {
  npm rebuild sqlite3 --target=8.2.3 --runtime=electron --dist-url='https://atom.io/download/electron' --update-binary
  if [ $? -ne 0 ]; then
    errorMessage 'cannot rebuild sqlite3'
    exit 1
  fi
  platform=$(uname)
  oldPath="node_modules/sqlite3/lib/binding/electron-v8.2-$(echo $platform | awk '{print tolower($0)}')-x64/node_sqlite3.node"
  newPath="node_modules/sqlite3/lib/binding/electron-v8.3-$(echo $platform | awk '{print tolower($0)}')-x64/node_sqlite3.node"
  mkdir -p "node_modules/sqlite3/lib/binding/electron-v8.3-$(echo $platform | awk '{print tolower($0)}')-x64/"
  cp "$oldPath" "$newPath"
}

It's a bit hackish but at least it works.

upgrading to sqlite3 v5.0.0 worked for me... thanks
https://stackoverflow.com/a/50112270/4722811

Would you be able to try with v5.0.3? 🙂


Fine-ite

Ensure that floats are finite or else encode as null. This means there's no way to distinguish null/NaN/Inf/-Inf in the response data. It's impossible for me to know if this affects the UI or research code using the API in a negative way though, but it could be a partial fix for #44

Looks ok. I do not know of anything that can be badly effected.


Updated time not set for note

We should also set update time when update notes, so that Evernote client feature 'Sort notes by Updated' can work properly.

close as fixed


WinXP DLL import regression on 1.14.6

Originally posted by @edtubbs in https://github.com/dogecoin/dogecoin/issues/3222#issuecomment-1587898348
Running test_dogecoin.exe from dogecoin-1.14.7-win32.zip generates this error on Windows XP Pro (Version 2002, Service Pack 3) with a Pentium 4 @ 2.80 GHz: "The procedure entry point if_nametoindex could not be located in the dynamic link library IPHLPAPI.DLL."
According to this discussion (https://github.com/libevent/libevent/pull/1111), if_nametoindex function is only supported from Windows Vista onwards.  We can probably remove this dependency to make core compatible with XP. I can dig deeper if needed.

This regression towards WinXP compatibility has likely been introduced with the libevent update done for 1.14.6. The above referenced pull could be a potential workaround (i.e. via depends/patches in lieu of an upstream fix) to deal with it.
It was not caught when building the new lief-based symbol check scripts, because 1.14.6 was used as the base for that, so any prior regressions have not been caught.

Running test_dogecoin.exe from dogecoin-1.14.6-win32.zip passes with *** No errors detected on Windows 7 Ultimate (Service Pack 1) with a Atom N270 @ 1.60 GHz

Implemented documentation with #3417.


Added a build with lipsync support

Fixes #10 (most likely)
Now, after the build, two packages with and without LipSync will be available.
To disable the build with or without LipSync, you can simply remove yes or no from these lines: lipsync: [yes, no] (only the necessary packages should be created automatically).
In the last commit, you deleted the .gdextension file. It is necessary for libraries to work and it must be in the repository.
I have these builds in some configurations (arm32, arm64, debug, release and also on Windows) sometimes crash at startup.

And you have a very tall window at startup

@goatchurchprime oh and forgot to mention that I moved the example to a separate folder

@goatchurchprime can you check this PR?

Just spotted this since I was doing some dev just now.
The reason for the tall window is it's designed for an Android phone, which is about a 1x2 portrait ratio like that.  This is just the demo/debug project for testing the advanced features without any dependence on the Godot networking system.  (The MQTT networking is a hacky gimmick for demo purposes.)  The intended application for this module is https://github.com/goatchurchprime/godot_multiplayer_networking_workbench
I deleted addons/twovoip/.gdextension file because it clashed with the download of twovoip from the AssetLib.  However, I can adjust the instructions so that people delete this stub directory after they've cloned the repo.


hard to converage without pretrain model on arcface

hi, thanks for your nice work
When I train a face recongnition model , use EfficientNet-B0 as feature extractor, I find it's hard to convergence without pretrained model, and use pretrained model it's look like all right .  I just wander why?

Training EfficientNets is generally very finicky, sorry to hear you're having trouble with arcface.


Response.WriteHeader actually sets status code only

The code here https://github.com/fermyon/spin/blob/a4079e321f69227632b82963cc2a5279a1cfa3ad/sdk/go/http/response.go#L33-L35 looks as follows:
func (r *response) WriteHeader(statusCode int) {
	r.status = statusCode
}

It looks confusing.

Hi @smsohan, this is a standard function that golang expects in a ResponseWriter [interface] (https://cs.opensource.google/go/go/+/refs/tags/go1.20.1:src/net/http/server.go;l=95) implementation.

Closing as answered - please reopen if more info or action is needed!

Hi @smsohan , I understand but unfortunately golang enforces us to use that name for this interface, and therefore we cannot use a different name for this function. Happy to chat more about it, if that helps

@smsohan For what it's worth, I agree with you that the method is confusingly named.  But as Rajat notes, the ResponseWriter type is defined by the Go standard library, and the confusingly named method is defined there (https://pkg.go.dev/net/http#ResponseWriter).  It's not in our power to use the better name you suggest - at least not without building an entirely custom response type that would run against the stdlib types that Go devs expect.
As this is a Go stdlib issue, you'd need to raise this to the dev team and community for Go itself.  Sorry we can't be more helpful.


Inter-annotator agreement

A huge issue in our methods paper was reviewer perceptions on how good the system is compared to humans.
We need a way to communicate how hard this task is. One way is to run some official inter-annotator agreement experiments. This could potentially compare experts and non-experts. It would require UI work. (E.g., see #24, #22). Next step would be to plan the analysis, then UI elements needed.

We might do this at some point but it's outside the scope of this UI for now


Washer signup

Description
Create a unique sign-up route for the Washer user.
To include a:
Washer ID
Email
Password
Phone Number
Billing Address
Stripe UUID
Fixes # (issue)
Type of change
Please delete options that are not relevant.

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

Change Status

[ ] Complete, tested, ready to review and merge
[ ] Complete, but not tested (may need new tests)
[ ] Incomplete/work-in-progress, PR is for discussion/feedback

How Has This Been Tested?

[ ] Test A
[ ] Test B

Checklist

[ ] My code follows the style guidelines of this project
[ ] I have performed a self-review of my own code
[ ] My code has been reviewed by at least one peer
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] New and existing unit tests pass locally with my changes
[ ] There are no merge conflicts

 Front-End: Multi-functional Login Route

 Front-End: Unique Washer Sign-Up


interactivity in epochs.plot_topo_image requires plt.ion()

It appears that the "click to magnify this channel" interactivity only works if the user has already imported pyplot and called plt.ion(). Try this in a fresh ipython session:
import os
import mne
sample_data_folder = mne.datasets.sample.data_path()
sample_data_raw_file = os.path.join(sample_data_folder, 'MEG', 'sample',
                                    'sample_audvis_raw.fif')
raw = mne.io.read_raw_fif(sample_data_raw_file, verbose=False)
events = mne.find_events(raw, stim_channel='STI 014')
epochs = mne.Epochs(raw, events)
epochs.plot_topo_image()
# now click on any channel's imagemap, nothing happens
# now close the plot window, and...
import matplotlib.pyplot as plt
plt.show()  # only now does the enlarged image appear

Of course, if the last two steps aren't performed, then those orphaned figures hang around and only show up when the next MNE-Python plotting call is executed.  Would it work to use matplotlib.is_interactive() to get the ion/ioff state before the plot call, and if necessary turn it on for the duration of the plot, and then turn it back off again?

Would it work to use matplotlib.is_interactive() to get the ion/ioff state before the plot call, and if necessary turn it on for the duration of the plot, and then turn it back off again?

It's probably not safe to mess with the ion / ioff state, it means that users can unexpectedly have code execute that they did not want to.
There is probably a way to get the newly spawned figures to appear. It's possible we need to call plt.show() after creating any new figures. It seems like something like that should work.
In a worst case, if we can't find a way to get the new ones to show up without messing with interactive state, we can emit a warning when the user clicks that the figure cannot be shown due to ioff().

right, of course. calling plt.show() is a cleaner solution.

Turns out this problem is worse with raw.plot_psd_topo():
(mnedev) [~] $ ipython
In [1]: import os
   ...: import mne
   ...: sample_data_folder = mne.datasets.sample.data_path()
   ...: sample_data_raw_file = os.path.join(sample_data_folder, 'MEG', 'sample',
   ...:                                     'sample_audvis_raw.fif')
   ...: raw = mne.io.read_raw_fif(sample_data_raw_file, verbose=False)
   ...: raw.plot_psd_topo()
Effective window size : 3.410 (s)
Out[1]: <Figure size 640x480 with 1 Axes>
can only concatenate list (not "NoneType") to list
Traceback (most recent call last):
  File "/opt/miniconda3/envs/mnedev/lib/python3.6/site-packages/matplotlib/cbook/__init__.py", line 215, in process
    func(*args, **kwargs)
  File "/opt/mne-python/mne/viz/topo.py", line 259, in _plot_topo_onpick
    show_func(ax, ch_idx)
  File "/opt/mne-python/mne/viz/topo.py", line 420, in _plot_timeseries
    _setup_ax_spines(ax, vline, tmin, tmax)
  File "/opt/mne-python/mne/viz/utils.py", line 2335, in _setup_ax_spines
    xticks = sorted(list(set([x for x in axes.get_xticks()] + vlines)))
TypeError: can only concatenate list (not "NoneType") to list
In [2]: # closed window at this point, then:
In [3]: import matplotlib.pyplot as plt
In [4]: plt.show()
Traceback (most recent call last):
  File "/opt/miniconda3/envs/mnedev/lib/python3.6/site-packages/matplotlib/cbook/__init__.py", line 215, in process
    func(*args, **kwargs)
  File "/opt/miniconda3/envs/mnedev/lib/python3.6/site-packages/matplotlib/backend_bases.py", line 2679, in mouse_move
    s = event.inaxes.format_coord(event.xdata, event.ydata)
  File "/opt/mne-python/mne/viz/topo.py", line 389, in <lambda>
    ax.format_coord = lambda x, y: _format_coord(x, y, labels=labels, ax=ax)
  File "/opt/mne-python/mne/viz/topo.py", line 369, in _format_coord
    nearby_data = [(data[n], labels[n], times[n]) for n in nearby]
  File "/opt/mne-python/mne/viz/topo.py", line 369, in <listcomp>
    nearby_data = [(data[n], labels[n], times[n]) for n in nearby]
TypeError: 'NoneType' object is not subscriptable
Traceback (most recent call last):
  File "/opt/miniconda3/envs/mnedev/lib/python3.6/site-packages/matplotlib/cbook/__init__.py", line 215, in process
    func(*args, **kwargs)
  File "/opt/miniconda3/envs/mnedev/lib/python3.6/site-packages/matplotlib/backend_bases.py", line 2679, in mouse_move
    s = event.inaxes.format_coord(event.xdata, event.ydata)
  File "/opt/mne-python/mne/viz/topo.py", line 389, in <lambda>
    ax.format_coord = lambda x, y: _format_coord(x, y, labels=labels, ax=ax)
  File "/opt/mne-python/mne/viz/topo.py", line 369, in _format_coord
    nearby_data = [(data[n], labels[n], times[n]) for n in nearby]
  File "/opt/mne-python/mne/viz/topo.py", line 369, in <listcomp>
    nearby_data = [(data[n], labels[n], times[n]) for n in nearby]
TypeError: 'NoneType' object is not subscriptable
Traceback (most recent call last):
  File "/opt/miniconda3/envs/mnedev/lib/python3.6/site-packages/matplotlib/cbook/__init__.py", line 215, in process
    func(*args, **kwargs)
  File "/opt/miniconda3/envs/mnedev/lib/python3.6/site-packages/matplotlib/backend_bases.py", line 2679, in mouse_move
    s = event.inaxes.format_coord(event.xdata, event.ydata)
  File "/opt/mne-python/mne/viz/topo.py", line 389, in <lambda>
    ax.format_coord = lambda x, y: _format_coord(x, y, labels=labels, ax=ax)
  File "/opt/mne-python/mne/viz/topo.py", line 369, in _format_coord
    nearby_data = [(data[n], labels[n], times[n]) for n in nearby]
  File "/opt/mne-python/mne/viz/topo.py", line 369, in <listcomp>
    nearby_data = [(data[n], labels[n], times[n]) for n in nearby]
TypeError: 'NoneType' object is not subscriptable
Traceback (most recent call last):
  File "/opt/miniconda3/envs/mnedev/lib/python3.6/site-packages/matplotlib/cbook/__init__.py", line 215, in process
    func(*args, **kwargs)
  File "/opt/miniconda3/envs/mnedev/lib/python3.6/site-packages/matplotlib/backend_bases.py", line 2679, in mouse_move
    s = event.inaxes.format_coord(event.xdata, event.ydata)
  File "/opt/mne-python/mne/viz/topo.py", line 389, in <lambda>
    ax.format_coord = lambda x, y: _format_coord(x, y, labels=labels, ax=ax)
  File "/opt/mne-python/mne/viz/topo.py", line 369, in _format_coord
    nearby_data = [(data[n], labels[n], times[n]) for n in nearby]
  File "/opt/mne-python/mne/viz/topo.py", line 369, in <listcomp>
    nearby_data = [(data[n], labels[n], times[n]) for n in nearby]
TypeError: 'NoneType' object is not subscriptable
Traceback (most recent call last):
  File "/opt/miniconda3/envs/mnedev/lib/python3.6/site-packages/matplotlib/cbook/__init__.py", line 215, in process
    func(*args, **kwargs)
  File "/opt/miniconda3/envs/mnedev/lib/python3.6/site-packages/matplotlib/backend_bases.py", line 2679, in mouse_move
    s = event.inaxes.format_coord(event.xdata, event.ydata)
  File "/opt/mne-python/mne/viz/topo.py", line 389, in <lambda>
    ax.format_coord = lambda x, y: _format_coord(x, y, labels=labels, ax=ax)
  File "/opt/mne-python/mne/viz/topo.py", line 369, in _format_coord
    nearby_data = [(data[n], labels[n], times[n]) for n in nearby]
  File "/opt/mne-python/mne/viz/topo.py", line 369, in <listcomp>
    nearby_data = [(data[n], labels[n], times[n]) for n in nearby]
TypeError: 'NoneType' object is not subscriptable
Traceback (most recent call last):
  File "/opt/miniconda3/envs/mnedev/lib/python3.6/site-packages/matplotlib/cbook/__init__.py", line 215, in process
    func(*args, **kwargs)
  File "/opt/miniconda3/envs/mnedev/lib/python3.6/site-packages/matplotlib/backend_bases.py", line 2679, in mouse_move
    s = event.inaxes.format_coord(event.xdata, event.ydata)
  File "/opt/mne-python/mne/viz/topo.py", line 389, in <lambda>
    ax.format_coord = lambda x, y: _format_coord(x, y, labels=labels, ax=ax)
  File "/opt/mne-python/mne/viz/topo.py", line 369, in _format_coord
    nearby_data = [(data[n], labels[n], times[n]) for n in nearby]
  File "/opt/mne-python/mne/viz/topo.py", line 369, in <listcomp>
    nearby_data = [(data[n], labels[n], times[n]) for n in nearby]
TypeError: 'NoneType' object is not subscriptable
Traceback (most recent call last):
  File "/opt/miniconda3/envs/mnedev/lib/python3.6/site-packages/matplotlib/cbook/__init__.py", line 215, in process
    func(*args, **kwargs)
  File "/opt/miniconda3/envs/mnedev/lib/python3.6/site-packages/matplotlib/backend_bases.py", line 2679, in mouse_move
    s = event.inaxes.format_coord(event.xdata, event.ydata)
  File "/opt/mne-python/mne/viz/topo.py", line 389, in <lambda>
    ax.format_coord = lambda x, y: _format_coord(x, y, labels=labels, ax=ax)
  File "/opt/mne-python/mne/viz/topo.py", line 369, in _format_coord
    nearby_data = [(data[n], labels[n], times[n]) for n in nearby]
  File "/opt/mne-python/mne/viz/topo.py", line 369, in <listcomp>
    nearby_data = [(data[n], labels[n], times[n]) for n in nearby]
TypeError: 'NoneType' object is not subscriptable
Traceback (most recent call last):
  File "/opt/miniconda3/envs/mnedev/lib/python3.6/site-packages/matplotlib/cbook/__init__.py", line 215, in process
    func(*args, **kwargs)
  File "/opt/miniconda3/envs/mnedev/lib/python3.6/site-packages/matplotlib/backend_bases.py", line 2679, in mouse_move
    s = event.inaxes.format_coord(event.xdata, event.ydata)
  File "/opt/mne-python/mne/viz/topo.py", line 389, in <lambda>
    ax.format_coord = lambda x, y: _format_coord(x, y, labels=labels, ax=ax)
  File "/opt/mne-python/mne/viz/topo.py", line 369, in _format_coord
    nearby_data = [(data[n], labels[n], times[n]) for n in nearby]
  File "/opt/mne-python/mne/viz/topo.py", line 369, in <listcomp>
    nearby_data = [(data[n], labels[n], times[n]) for n in nearby]
TypeError: 'NoneType' object is not subscriptable
Traceback (most recent call last):
  File "/opt/miniconda3/envs/mnedev/lib/python3.6/site-packages/matplotlib/cbook/__init__.py", line 215, in process
    func(*args, **kwargs)
  File "/opt/miniconda3/envs/mnedev/lib/python3.6/site-packages/matplotlib/backend_bases.py", line 2679, in mouse_move
    s = event.inaxes.format_coord(event.xdata, event.ydata)
  File "/opt/mne-python/mne/viz/topo.py", line 389, in <lambda>
    ax.format_coord = lambda x, y: _format_coord(x, y, labels=labels, ax=ax)
  File "/opt/mne-python/mne/viz/topo.py", line 369, in _format_coord
    nearby_data = [(data[n], labels[n], times[n]) for n in nearby]
  File "/opt/mne-python/mne/viz/topo.py", line 369, in <listcomp>
    nearby_data = [(data[n], labels[n], times[n]) for n in nearby]
TypeError: 'NoneType' object is not subscriptable
Traceback (most recent call last):
  File "/opt/miniconda3/envs/mnedev/lib/python3.6/site-packages/matplotlib/cbook/__init__.py", line 215, in process
    func(*args, **kwargs)
  File "/opt/miniconda3/envs/mnedev/lib/python3.6/site-packages/matplotlib/backend_bases.py", line 2679, in mouse_move
    s = event.inaxes.format_coord(event.xdata, event.ydata)
  File "/opt/mne-python/mne/viz/topo.py", line 389, in <lambda>
    ax.format_coord = lambda x, y: _format_coord(x, y, labels=labels, ax=ax)
  File "/opt/mne-python/mne/viz/topo.py", line 369, in _format_coord
    nearby_data = [(data[n], labels[n], times[n]) for n in nearby]
  File "/opt/mne-python/mne/viz/topo.py", line 369, in <listcomp>
    nearby_data = [(data[n], labels[n], times[n]) for n in nearby]
TypeError: 'NoneType' object is not subscriptable
Traceback (most recent call last):
  File "/opt/miniconda3/envs/mnedev/lib/python3.6/site-packages/matplotlib/cbook/__init__.py", line 215, in process
    func(*args, **kwargs)
  File "/opt/miniconda3/envs/mnedev/lib/python3.6/site-packages/matplotlib/backend_bases.py", line 2679, in mouse_move
    s = event.inaxes.format_coord(event.xdata, event.ydata)
  File "/opt/mne-python/mne/viz/topo.py", line 389, in <lambda>
    ax.format_coord = lambda x, y: _format_coord(x, y, labels=labels, ax=ax)
  File "/opt/mne-python/mne/viz/topo.py", line 369, in _format_coord
    nearby_data = [(data[n], labels[n], times[n]) for n in nearby]
  File "/opt/mne-python/mne/viz/topo.py", line 369, in <listcomp>
    nearby_data = [(data[n], labels[n], times[n]) for n in nearby]
TypeError: 'NoneType' object is not subscriptable
In [5]: # this second traceback vomit was simply from mousing over the plot area,
In [6]: # and appears to be a separate issue; it happens even if plt.ion() is called
In [7]: # before the call to raw.plot_psd_topo()

Looks like there are indeed a few bugs, can you see if the fix isn't too bad? Or let me know if you'd rather have me look

You can assign it to me, I'll look on Monday.
On March 29, 2019 8:05:20 PM AKDT, Eric Larson<EMAIL_ADDRESS>wrote:

Looks like there are indeed a few bugs, can you see if the fix isn't
too bad? Or let me know if you'd rather have me look