JupyterHub with username/password

Refs: #13973

[x] anyOS: @rebornix
[x] anyOS: @amunger
[x] web: @joyceerhl

Complexity: 5
Authors: @DonJayamanne
Create Issue

Pre-Requisites

Install VS Code insiders
Jupyter pre-relese extension
JupyterHub extension

Install and launch Jupyter Hub
https://jupyterhub.readthedocs.io/en/1.2.0/installation-guide-hard.html

Create a new folder
Create a file named jupyterhub_config.py and paste the below contents into that file

Custom config to make auth easier, else you need use your login creds, which I guess you don't want to use.

# Configuration file for jupyterhub.

c = get_config()  #noqa
c.JupyterHub.authenticator_class = 'jupyterhub.auth.DummyAuthenticator'
c.DummyAuthenticator.password = "pwd" # Feel free to change the default password
c.Spawner.args = ['--NotebookApp.allow_origin=*']
from jupyterhub.spawner import SimpleLocalProcessSpawner
c.JupyterHub.spawner_class = SimpleLocalProcessSpawner

Create a virtual env in this folder using Python extension
Install Jupyterhub using the CLI python -m pip install jupyterlab jupyterhub
Install the npm package configurable-http-proxy globally via the cli npm i -g configurable-http-proxy
Now start Jupyter Hub using the cli jupyterhub (ensuring the cwd in the terminal is the same folder in step 1 and your virtual env is in the same folder under .venv)
In the browser navigate to Jupyter Hub login page, genrally http://localhost:8000

Note:

There is no need to log into JupyterHub

Steps to test

Go into VS Code, open a notebook
From the kernel picker select Existing JupyterHub Server...
Enter the Jupyter Hub Url http://localhost:8000 (that shouldbe all)
[ ] Verify you are prompted for your user name and password (remember password is pwd)
Note: Remember to use the same user name (else it will not work, these are things to be ironed out later)
[ ] Verify you now get a list of Kernels in the kernel picker
[ ] Verify you can select a kernel and run code against this kernel

Remember to use the same user name
The same as what? My windows username does not work

Also tried adding c.DummyAuthenticator.username to the config without success

Looks like Jupyterhub doesn't work on windows,
Please could you try swapping with one of the  Python ext engineers or please try WSL or linux
I recall Joyce too running into issues with windows.

@amunger perhaps you can try codespaces, see Joyces comment here https://github.com/microsoft/vscode-jupyter/issues/14202#issuecomment-1698369706

I can get it working on macOS. The setting I use to launch jupyter hub is as below, so I was able to use user name dummy and password pwd to connect to the Hub.
c.JupyterHub.authenticator_class = "dummy"
c.DummyAuthenticator.password = "pwd" # Feel free to change the default password
c.Spawner.args = ['--NotebookApp.allow_origin=*']
c.Spawner.default_url = '/lab'
from jupyterhub.spawner import SimpleLocalProcessSpawner
c.JupyterHub.spawner_class = SimpleLocalProcessSpawner

WSL did not work, but I was able to use the same technique as Joyce.
Pretty sure I needed to log in to the browser first to get the username/password to work though, it sounds like Joyce did as well.

Pretty sure I needed to log in to the browser first to get the username/password to work though, it sounds like Joyce did as well.

Thanks for that comment @amunger , I found the reason why you'd have to do that, created an issue to try and address that at least in desktop (for vscode.dev there's nothing we can do about it)
https://github.com/microsoft/vscode-jupyter-hub/issues/29


fr_FR complete for community store 2.3.4

complete translation in french for community store 2.3.4

Great, thanks for this.
We actually don't manage the translations in github any more.
We've kept some translation files in so we don't lose them, but they aren't included in releases).
The translations are managed at https://translate.concretecms.org/translate/package/community_store
I can see this is now showing 100% for French, and it looks to have been updated today, so am I assuming you pushed the translation there?
I can still merge this in here, just making you aware.


added Coursera - Machine Learning Specialization course

Added the free course in main,js as well as README.md

resolve branch conflict

please delete the repo and fork again to do your changes

I have done the required changes and created a new pull request, please merge it.


Possible false-negative: Removing a manual trait implementation should be a breaking change

Is this about an existing lint, or proposing a new one?
Deleting the manual implementation of a trait for a type does not trigger a sember-checks error.
Known issues that might be causing this

[X] Is the item that should have been flagged originating from another crate, or from a re-export of such an item? (#638)
[X] Is the issue related to a change in the type of a field, function parameter, generic, or trait bound? (#149)
[X] If you're proposing a new lint, is it already part of our lint wishlist? (#5)

Steps to reproduce the bug with the above code
Going from:
pub trait MyTrait {
    fn method(&self);
}

pub struct MyStruct {}

impl MyTrait for MyStruct {
    fn method(&self) {}
}

to:
pub trait MyTrait {
    fn method(&self);
}

pub struct MyStruct {}

is not considered a breaking change by cargo-semver-checks right now. I think it should be?
Actual Behaviour
cargo-semver-checks accepts the removal as non-breaking change.
Expected Behaviour
cargo-semver-checks reporting a semver breaking change error.
Generated System Information
#### Software version

cargo-semver-checks 0.31.0

#### Operating system

macOS 14.7 (Darwin 23.6.0)

#### Command-line

```bash
/Users/nbigaouette/.cargo/bin/cargo-semver-checks semver-checks --bugreport

cargo version
> cargo -V
cargo 1.82.0 (8f40fc59f 2024-08-21)

Compile time information

Profile: release
Target triple: x86_64-apple-darwin
Family: unix
OS: macos
Architecture: x86_64
Pointer width: 64
Endian: little
CPU features: cmpxchg16b,fxsr,sse,sse2,sse3,sse4.1,ssse3
Host: x86_64-apple-darwin

### Build Configuration

_No response_

### Additional Context

_No response_

I searched for other lints that are supposed to check this but couldn't find any. I did start to add a new lint. Not sure how to build the .ron file though.

Thanks for opening this and looking into writing a new lint! This is definitely breaking, nice catch :+1:
I'm currently travelling and largely AFK until later this week, but I'd recommend two things:

Check out the CONTRIBUTING doc's section on adding new lints: https://github.com/obi1kenobi/cargo-semver-checks/blob/main/CONTRIBUTING.md
Join our Discord server where many other folks with lint-writing experience will be able to point you in the right direction.

It might also be a good idea to get used to lint-writing by first writing an easier lint that is very similar to another already-implemented lint. That way you can do a side-by-side comparison with an already-merged PR that adds a new lint, and can focus on just tweaking the lint logic and test cases to fit the new case. For example, #946 has one case already implemented and merged, and the remaining cases are very similar.
After you're familiarized with the lint-writing process that way, you could circle back to this lint and implement it more easily.

Possibly related to this, keeping the trait impl but tightening the bounds (so that it is no longer implemented for some types).
eg from
impl<T> From<T> for Foo {...}

to
impl<T: 'static> From<T> for Foo {...}

This caused a breaking change in https://github.com/async-graphql/async-graphql/issues/1634 (not my project) that I can't get to be flagged by cargo-semver-checks

Neat, thank you for the repro and for sharing a real-world case where it happened.
With the latest schema updates as of a week or two ago, I think it's possible to write a lint for "adding new lifetime bound to a generic parameter."
Might you be interested in trying your hand at lint-writing @tpoliaw? I'd be happy to point you in the right direction if so — the time commitment including onboarding time is ~1hr. You're also welcome to join our community Discord if you'd like: https://discord.gg/ywEqqAwq

I'm happy to have a look at it but probably won't be for a few days. Will join the discord.

Awesome! The CONTRIBUTING doc should have the steps to get started, and feel free to ask questions in the Discord -- lots of people who have already written lints are there and we'd all be happy to help 🙌


Add a conda installation option

Adding a conda installation option could be very helpful. I have started working on a PR (https://github.com/conda-forge/staged-recipes/pull/17244) already to add grad-cam from PyPI to conda-forge channel. Once the PR is merged, grad-cam could be installed as follows.
conda install -c conda-forge grad-cam

:bulb: I will open a PR here to update the install instructions, once grad-cam is available on conda-forge channel.

cc: @jacobgil

This is Awesome!!

@jacobgil Could you please take a look at bothe of the following two files and confirm that the list of packages under install_requires is the bare minimum required to install the library and the additional ones in requirements.txt are not necessary for installing it? If so, are the additional libraries optional?

Source: setup.py:install_requires vs. requirements.txt

Reference: Stackoverflow: setup.py:install_requires vs. requirements.txt

setup.py:install_requires vs. requirements.txt in grad-cam:

https://github.com/jacobgil/pytorch-grad-cam/blob/770f29027598a8bf3ef660e04d14c44770b4d03c/requirements.txt#L1-L8
https://github.com/jacobgil/pytorch-grad-cam/blob/770f29027598a8bf3ef660e04d14c44770b4d03c/setup.py#L25-L32

requirements.txt
setup.py:install_requires

Hi @jacobgil,
A question for you

when you pip install this library, which libraries are installed? The ones mentioned in setup.py:install_requires + their dependencies OR, the list of libraries in requirements.txt + their dependencies?

Good point, I think there is un-necessary duplication here.
We should remove the install_requires and use only requirements.txt.
I think we should modify setup.py to do
with open('requirements.txt') as f:
    required = f.read().splitlines()
...
install_requires = required

@jacobgil You might want to see the implementation here (but also add requirements.txt to MANIFEST.in if not done so already).

https://github.com/digital-science/dimcli/issues/74#issuecomment-997203674

https://github.com/digital-science/dimcli/blob/36382e2933ece95baa02220f119da31c03f455f9/setup.py#L36-L44

@jacobgil grad-cam is now available on conda-forge. :rocket:

Update: grad-cam was just rendered on conda-forge. You should be able able to install it with conda in 2-3 hours.

Thanks.
I also updated the master branch so it uses requirements.txt in setup.py.

How can we push new versions to conda-forge?

How can we push new versions to conda-forge?

Process to raise a PR for conda-forge package update

Step-1: Go to: https://github.com/conda-forge/grad-cam-feedstock
Step-2: Fork it. Create a new branch (for example: update_v1.2.3 to update some library to it's version 1.2.3).
Step-3: Update the recipe/meta.yaml.

[x] Update the jinja2 variable: version (same as PyPI)
[x] Update the field: sha256 (should be same as PyPI source, <package>.tar.gz file)
[x] If changing the version, DON'T UPDATE the build number.
[x] If making a change to the recipe, without any version update, increase the build number by 1.
[x] Update the dependencies under run-requirements (these are the ones you typically include in setup.py/ requirements.txt).

[x] add newer dependencies (they must exist on conda-forge channel, if not speak with me)
[x] update version specification for each dependency
[x] use the more classical >, =, < for defining version constraints instead of ^, ~.
[x] drop dependencies that are no longer included in your setup.py
[x] NOTE: optional dependencies should be dropped here, so users can install them only if they need them. Ideally, such optional dependencies should be made part of extras under setup.py.

Step-4: Submit a PR (follow the instructions while opening the PR).
Step-5: Review

[x] If all CI's have passed (pytorch is not available on conda-forge for windows, so, typically the windows CI run will fail, and that is okay), then we move to merging.
[x] I will review and once all looks good will merge it.

Step-6: Once merged, the new package will be available on the channel in 2-3 hours.

I also updated the master branch so it uses requirements.txt in setup.py.

So, once you make the next PyPI update, please let me know. The conda-forge recipe would need some changes to match the new setup.py:install_requires.

Thanks, The PyPI version was updated with the new changes.

Great. So, do you want to make the changes to the recipe file?
Btw, here is LinkedIn post I made on the availability of grad-cam on conda-forge.

What is the latest version? v1.3.5 or v1.3.6?

It's on PyPI now. The version is 1.3.6. Usually it shows the latest package immediately.

I will try making a PR for the recipe with the latest change, this will take me ~a few days to get to it.

This is great, thanks a lot for your contribution.
Going to see how to add a github readme download counter for conda as well :-)

@jacobgil I updated the recipe myself this time, since you are now reading in the setup.py:install_requires from requirements.txt. Please take a look at the PR in the feedstock repository, to give you an idea of what was done this time. If your dependencies don't change, in future releases, you would only have to update the version and the sha256 from PyPI.


escape all freeform text

Names, as well as page and site titles, can have & and ‘ as well as a few other reserved
characters. Escape them all for safety.

:+1:

I like the idea, but there are legitimate cases for HTML in the title. For one example:
Something — n. (some·thing)

First definition.
Second definition.

That looks a lot better in jekyll-bootstrap, by the way. http://groundh0g.github.io/fauxcabulary.org/terms/2015/01/08/consummate/


Remove bash try-catch from GermlineCNVCallerCaseMode

In GermlineCNVCase.wdl GermlineCNVCallerCaseMode implements a pseudo try-catch statement to overcome rare NaN errors. Development is ongoing to pull this retry into the GATK tool, and upon completion the existing task command block should be simplified.

The try-catch block (actually two {} command blocks separated by ||) should be removed.
The function run_gcnv_case() should be simply inlined as code to be executed.
The function get_seeded_random() should be removed.

This was addressed in GATK


Update to Latest Zig

There was a recent change that removed readIntLittle and other variants and instead swapped to allowing the caller to provide an endianness as the second param. This makes that change.
Thanks!

Thanks!


Potential bug with LabelModel prediction

Issue description
I am trying to use snorkel to derive training labels for a binary text classification problem from 15 weakly supervised labeling functions (LF).
I am noticing lots of cases where 9/15 lfs abstained and remaining 6 LFs gave a label 0 but snorkel's final label probability was quite high and the binarized label was 1 (see table below)

Below are the learned weights from the label model for each LF

Since all the 6 non-abstaining LFs gave a label 0, I expected the final label to be 0 as well and the probability values to be near 0.
Any clue what might be causing this behavior?
Code example/repro steps
Since this is real data, it will be hard to reproduce this with a small code snippet. I can share anonymized label matrix.
System info

How you installed Snorkel (conda, pip, source): conda
OS: Windows 10
Python version: 3.7.4
Snorkel version: 0.9.1

For the sake of debugging below are the values of self.mu and self.p after fitting the label model that are being used in the LabelModel.predict_proba() here
mu:
Parameter containing:
tensor([[3.0276e-01, 1.0000e-07],
        [4.7679e-02, 1.0000e-07],
        [1.9865e-01, 1.0000e-07],
        [7.5146e-03, 1.0000e-07],
        [1.6418e-01, 1.0000e-07],
        [1.0233e-03, 1.0000e-07],
        [7.3624e-01, 1.0000e-07],
        [3.6497e-03, 4.0087e-03],
        [7.1567e-01, 1.0000e-07],
        [1.6214e-03, 1.6699e-03],
        [6.5997e-01, 1.0000e-07],
        [5.6803e-04, 5.9173e-04],
        [7.3624e-01, 1.0000e-07],
        [3.6497e-03, 4.0087e-03],
        [7.1567e-01, 1.0000e-07],
        [1.6214e-03, 1.6699e-03],
        [6.5997e-01, 1.0000e-07],
        [5.6803e-04, 5.9173e-04],
        [4.1509e-01, 1.0000e+00],
        [6.8395e-04, 1.7432e-03],
        [4.0547e-01, 1.0000e+00],
        [2.1194e-04, 5.4538e-04],
        [3.8092e-01, 1.0000e+00],
        [4.2050e-05, 1.0374e-04],
        [4.1509e-01, 1.0000e+00],
        [6.8395e-04, 1.7432e-03],
        [4.0547e-01, 1.0000e+00],
        [2.1194e-04, 5.4538e-04],
        [3.8092e-01, 1.0000e+00],
        [4.2050e-05, 1.0374e-04]], requires_grad=True)
p:
[0.97259352 0.02740648]

Can you share a redacted version of the summary table after calling LFAnalysis on your labeled development dataset?

Below are all the values of all the variables in the predict_proba function for a sample L matrix resembling the aforementioned issue
L:
[[-1 -1 -1 -1 -1 -1 -1 -1 -1  0  0  0  0  0  0]
 [-1 -1 -1 -1 -1 -1 -1 -1 -1  0  0  0  0  0  0]]

L_aug:
[[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 1. 0. 1. 0.
  1. 0. 1. 0. 1. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 1. 0. 1. 0.
  1. 0. 1. 0. 1. 0.]]

jtm:
[[-1 -1 -1 -1 -1 -1 -1 -1 -1  0  0  0  0  0  0]
 [-1 -1 -1 -1 -1 -1 -1 -1 -1  0  0  0  0  0  0]]

np.log(mu):
[[-1.1948081e+00 -1.6118095e+01]
 [-3.0432580e+00 -1.6118095e+01]
 [-1.6162262e+00 -1.6118095e+01]
 [-4.8909011e+00 -1.6118095e+01]
 [-1.8067707e+00 -1.6118095e+01]
 [-6.8847365e+00 -1.6118095e+01]
 [-3.0620021e-01 -1.6118095e+01]
 [-5.6131086e+00 -5.5192933e+00]
 [-3.3453062e-01 -1.6118095e+01]
 [-6.4244943e+00 -6.3949699e+00]
 [-4.1555533e-01 -1.6118095e+01]
 [-7.4733391e+00 -7.4324613e+00]
 [-3.0620039e-01 -1.6118095e+01]
 [-5.6131086e+00 -5.5192933e+00]
 [-3.3453062e-01 -1.6118095e+01]
 [-6.4244943e+00 -6.3949699e+00]
 [-4.1555533e-01 -1.6118095e+01]
 [-7.4733391e+00 -7.4324613e+00]
 [-8.7926942e-01 -1.1920930e-07]
 [-7.2876229e+00 -6.3520508e+00]
 [-9.0269798e-01 -1.1920930e-07]
 [-8.4592047e+00 -7.5140243e+00]
 [-9.6516806e-01 -1.1920930e-07]
 [-1.0076643e+01 -9.1736116e+00]
 [-8.7926942e-01 -1.1920930e-07]
 [-7.2876229e+00 -6.3520508e+00]
 [-9.0269798e-01 -1.1920930e-07]
 [-8.4592047e+00 -7.5140243e+00]
 [-9.6516806e-01 -1.1920930e-07]
 [-1.0076643e+01 -9.1736116e+00]]

np.log(p):
[-0.02778904 -3.59697577]

X:
[[0.0039976  0.02740646]
 [0.0039976  0.02740646]]

Z:
[[0.03140407 0.03140407]
 [0.03140407 0.03140407]]

Y= X / Z:
[[0.12729576 0.87270424]
 [0.12729576 0.87270424]]

And below is the LF analysis output:

Polarity
Coverage
Overlaps
Conflicts
Correct
Incorrect
Emp. Acc.
Learned Weight

[0, 1]
0.315557
0.305014
0.046244
676207
194228
0.776861
0.933156

[0, 1]
0.170503
0.170503
0.007580
432872
37444
0.920385
1.000000

[0, 1]
0.131510
0.131510
0.001063
355573
7186
0.980191
1.000000

[0, 1]
0.676211
0.676211
0.045135
1791017
74247
0.960195
1.000000

[0, 1]
0.614154
0.614154
0.035245
1662048
32037
0.981089
1.000000

[0, 1]
0.545063
0.545063
0.026004
1492398
11107
0.992613
1.000000

[0, 1]
0.676211
0.676211
0.045135
1791017
74247
0.960195
1.000000

[0, 1]
0.614154
0.614154
0.035245
1662048
32037
0.981089
1.000000

[0, 1]
0.545063
0.545063
0.026004
1492398
11107
0.992613
1.000000

[0, 1]
0.461756
0.461756
0.010750
464969
808741
0.365051
0.874396

[0, 1]
0.439952
0.439952
0.008919
415178
798388
0.342114
0.896408

[0, 1]
0.412456
0.412456
0.007203
340714
797006
0.299471
0.898235

[0, 1]
0.461756
0.461756
0.010750
464969
808741
0.365051
0.874396

[0, 1]
0.439952
0.439952
0.008919
415178
798388
0.342114
0.896408

[0, 1]
0.412456
0.412456
0.007203
340714
797006
0.299471
0.89823

@dataframing Note that I dont have a dev set so I pass the predicted labels on training set to lf_summary() (see code snippet below)
cb_est = [0.97259352 0.02740648]
lm = snorkel.labeling.LabelModel()
lm.fit(L_train, class_balance=cb_est, lr=0.01, n_epochs=2000, log_freq=100, seed=0)
y_pred = lm.predict(L_train)
df_lf_summary = snorkel.labeling.LFAnalysis(L_train).lf_summary(Y = y_pred, est_weights=lm.get_weights())

@cdeepakroy A few observations:

From the original screenshot, it looks like your latter 6 labeling functions are all returning 0, whereas your first 9 are abstaining (-1).
The latter 6 labeling functions all exhibit significantly lower empirical accuracy/precision (~0.33?) compared to the initial 9 (~0.90?).
The learned weights are almost perfectly bi-modal and centered around either 0.87 or 1.0.

I suppose I would also expect the model to return a more strongly negative label. Have you tried using an alternative labeler, like snorkel.labeling.MajorityLabelVoter? It should almost certainly give you negative labels for those examples you pointed out.
Otherwise, I'd look into doing a deeper dive using pdb or some other debugger to probe and understand exactly what components within predict_proba are contributing to the more strongly positive label. I tend to hack a PDB middleware models like so:
import pdb

from snorkel.labeling import LabelModel
import numpy as np

class PDBLabelModel(LabelModel):

    def predict_proba(self, L: np.ndarray) -> np.ndarray:
        """Start PDB session, then step into superclass call."""
        pdb.set_trace()
        return super(LabelModel, self).predict_proba(L=L)

then proceed with your code as usual:
# Initialize and fit the core label model.
lm = PDBLabelModel()
lm.fit(...)

# Get ready for the debugger to fire.
y_pred_proba = lm.predict_proba(L_train)

Hope this helps!

Hi @cdeepakroy thanks for trying out Snorkel!  From inspecting the learned labeling function conditional probabilities (mu), your LabelModel is learning a strong correlation between your last six LFs outputting 0 and the true label actually being 1- in other words, it's learning that these labeling functions are most often wrong when outputting 0.
Why is the LabelModel learning such a weird model?  It could be that the model was improperly trained or tuned.  It could be that your labeling functions are strongly (conditionally) correlated in weird ways (a problem that we've tackled on the research side, most recently in an ICML'19 paper, and built code for in other repos).  It could be some other complexity of your data or LFs, such as heavily data-conditional accuracies.  We've handled many of these more complex settings before, using other variants of the LabelModel, but unfortunately it's very hard to say what's happening without knowing more about your problem setup, data, LFs, and hyperparameter tuning procedure; and unfortunately this kind of diagnosis is outside the scope of what we can handle in the Issues page.  Happy to chat separately though!
Either way: In part prompted by this issue, we're currently discussing whether to prevent the model from ever learning models where the LFs are estimated to be wrong more often than right, as happened here.  Baking assumptions like these into the LabelModel can reduce its capability to handle interesting settings, but would also prevent results such as these, and put it more "on rails" by default... stay tuned!

Thanks for responding, @dataframing @ajratner
@dataframing I narrowed down to the same observations you mentioned. For the erroneous cases that I mentioned above, indeed the majority vote label model would perform much better.
@ajratner To your point that the LabelModel may have been trained or tuned improperly, I am using lr=0.01 with a constant lr_schedule and n_epochs=2000. Below is the log of the loss after each epoch:
INFO:root:Computing O...
INFO:root:Estimating \mu...
INFO:root:[0 epochs]: TRAIN:[loss=15.680]
INFO:root:[100 epochs]: TRAIN:[loss=4.110]
INFO:root:[200 epochs]: TRAIN:[loss=3.829]
INFO:root:[300 epochs]: TRAIN:[loss=0.642]
INFO:root:[400 epochs]: TRAIN:[loss=0.085]
INFO:root:[500 epochs]: TRAIN:[loss=0.084]
INFO:root:[600 epochs]: TRAIN:[loss=0.084]
INFO:root:[700 epochs]: TRAIN:[loss=0.084]
INFO:root:[800 epochs]: TRAIN:[loss=0.084]
INFO:root:[900 epochs]: TRAIN:[loss=0.084]
INFO:root:[1000 epochs]: TRAIN:[loss=0.084]
INFO:root:[1100 epochs]: TRAIN:[loss=0.084]
INFO:root:[1200 epochs]: TRAIN:[loss=0.084]
INFO:root:[1300 epochs]: TRAIN:[loss=0.084]
INFO:root:[1400 epochs]: TRAIN:[loss=0.084]
INFO:root:[1500 epochs]: TRAIN:[loss=0.084]
INFO:root:[1600 epochs]: TRAIN:[loss=0.084]
INFO:root:[1700 epochs]: TRAIN:[loss=0.084]
INFO:root:[1800 epochs]: TRAIN:[loss=0.084]
INFO:root:[1900 epochs]: TRAIN:[loss=0.084]
INFO:root:Finished Training

The lowest loss after convergence is 0.084. Based on your experiments, Is the loss expected to be much lower than this or is this typical? I briefly experimented with other lr shceulers but could not get the loss to drop below this.
Could you point me these other repos (if they are open to public) that handle these complex settings.

@cdeepakroy I'm experiencing similar behavior. Have you gained any new insights for your use case?


Declare glfwGetOpenedFilename() for export

Currently Rack only builds when glfw is linked in statically. For NixOS (and likely other distributions) it would be desirable to link it dynamically though.
This patch exports glfwGetOpenedFilename() so that it is included when glfw is build dynamically.

This function was a super hack, so if anything, the function should be killed with fire. In fact, it's only used for Mac and can be removed in your case.

NixOS in principle also supports Macs as a platform, so I still would need to patch the function for now. In that case it might be OK though to include the patch in NixOS directly.
Also on Linux currently Rack fails to link dynamically when I don't patch glfw, so I guess it still is used somewhere. :/


Adding more flexibility to knob styling with shadow properties

as requested here

Thanks for this, I’ll look at it after work!

Looks great and thanks for updating the tests as well!

Available now in 3.1.0, thanks again!

Appreciate the quick turn around :)


fix(v2alpha1): fix can not update EMQX resources

Coverage increased (+1.3%) to 75.223% when pulling 8893d329ed077e68fdbeba97c2afb95982264aa3 on Rory-Z:fix/fix-can-not-update-emqx into cebcc517f3a98eb4c0dc89416c723e26e293da28 on emqx:main.


Can I forward a LAN Minecraft world with this?

Im not familiar with a minecraft server and what type of traffic it needs. Most likely it needs TCP forwarding, which doesn't work with localtunnel (we only do HTTP/HTTPS forwarding).  You might want to checkout ngrok.io instead.


Add per device support for key mappings

@tekezo I have merged my change with your latest change and resolved all the conflicts, please review and let me know.
the feature details can be found in this pull request: https://github.com/tekezo/Karabiner-Elements/pull/752

cancelled this one due to unused code not removed


handling cloudformation stack states

@xavileon actually we're not changing anything as the point that stack that failed to create stays in ROLLBACK_COMPLETE is a working as intended behaviour, not a bug in API.
You can check this comment: https://github.com/cfn-sphere/cfn-sphere/issues/28#issuecomment-165787885
Also here is state diagram for stack states: https://github.com/rvedotrc/aws-cloudformation-stack-states
And thus I think in context of CFN pipeline this is the correct way to handle this. I mean that other option is to throw an error and let user delete the stack manually. That is not quite convenient for example because user may not have permissions in target AWS account, while spinnaker role will do have 'em.

I understand and I see your rationale, but I have mixed feelings. AWS tags those failed states as non-updatable stacks for a reason.  Do you propose dealing with all of them the same way, removing and creating? why would the ROLLBACK_COMPLETE state be different?
(I'm just going one step ahead thinking what the community might say).

This is exactly my point. According to the graphs there are 2 types of non-updatables stacks.

Type is "broken" stacks that require manual intervention and probably contacting AWS support. And I handle them in group of cases #3.

"Valid" non updatable stack for which just initial stack creation failed. And you can change the graphs - only for such cases stack can be in "CREATE_FAILED" or "ROLLBACK_COMPLETE" states. And only for such cases I do remove the stack and try to re-create it.

Ok, I buy your argument. Just a nit to improve readability (remove switch statement by if/else).


Changed ErrorDecidePredicateUnknown into a WarnDecidePredicateUnknown

Fixes #3197
This PR changes the runtime error ErrorDecidePredicateUnknown into a runtime warning instead.
The added integration test confirms that the execution proceeds with the new warning instead of throwing an error. This is what the output of test/warn-decide-predicate-unknown returns on current master:
make: Entering directory '/build/kore/test/warn-decide-predicate-unknown'
>>> /build/kore/test/warn-decide-predicate-unknown kompile verification.k
rm -fr ./verification-kompiled
env -u KORE_EXEC_OPTS kompile --backend haskell --haskell-backend-command kore-exec -d . verification.k
[Warning] Compiler: Could not find main syntax module with name
VERIFICATION-SYNTAX in definition.  Use --syntax-module to specify one. Using
VERIFICATION as default.
make: Leaving directory '/build/kore/test/warn-decide-predicate-unknown'
make: Entering directory '/build/kore/test/warn-decide-predicate-unknown'
>>> /build/kore/test/warn-decide-predicate-unknown kprove lemmas-no-smt-spec.k
KORE_EXEC_OPTS = --no-bug-report --smt none
rm -f lemmas-no-smt-spec.k.out
kprove --haskell-backend-command kore-exec  lemmas-no-smt-spec.k >lemmas-no-smt-spec.k.out || true
kore-exec: [167366] Error (ErrorDecidePredicateUnknown):
    Failed to decide predicate:
        /* Sfa */
        \not{_}(
            /* Spa */
            \equals{SortBool{}, _}(
                /* Fl Fn D Sfa */ VarB:SortBool{},
                /* Fl Fn D Sfa Cl */ \dv{SortBool{}}("false")
            )
        )
    with side condition:
        /* D Sfa */ \top{_}()
[Error] Critical: Haskell Backend execution failed with code 1 and produced no
output.
diff -u lemmas-no-smt-spec.k.out.golden lemmas-no-smt-spec.k.out || ( mv lemmas-no-smt-spec.k.out lemmas-no-smt-spec.k.out.fail && false )
--- lemmas-no-smt-spec.k.out.golden     1970-01-01 00:00:01.000000000 +0000
+++ lemmas-no-smt-spec.k.out    2022-09-06 14:39:32.072299222 +0000
@@ -1,9 +0,0 @@
-  #Not ( {
-    B ==Bool true
-  #Equals
-    bool2Word ( B ) ==Int 1
-  } )
-#And
-  <k>
-    doneLemma ( bool2Word ( B ) ==Int 1 ) ~> _DotVar1 ~> .
-  </k>
make: *** [/build/kore/test/warn-decide-predicate-unknown/../include.mk:107: lemmas-no-smt-spec.k.out] Error 1
make: Leaving directory '/build/kore/test/warn-decide-predicate-unknown'

if the call doesn't come from a simplification rule attempt, do the same thing we did before these changes
So this code gets called in these instances:

https://github.com/runtimeverification/haskell-backend/blob/a1959233e210f960d49a91ebe7fcec76da14ebe3/kore/src/Kore/Rewrite/Rule/Simplify.hs#L120-L143
https://github.com/runtimeverification/haskell-backend/blob/a1959233e210f960d49a91ebe7fcec76da14ebe3/kore/src/Kore/Rewrite/Search.hs#L126-L167
https://github.com/runtimeverification/haskell-backend/blob/a1959233e210f960d49a91ebe7fcec76da14ebe3/kore/src/Kore/Equation/Application.hs#L316-L371
we want the warn behaviour only for the first and error for the rest?

Only in haskell-backend/kore/src/Kore/Equation/Application.hs
And only when the attempted equation has the simplification attribute.

This is the log message now:
kore-exec: [185473] Error (DecidePredicateUnknown):
    Failed to decide predicate:
        /* Sfc */
        \not{_}(
            /* Sfc */
            \equals{SortBool{}, _}(
                /* Fl Fn D Sfa */
                Lbl'UndsEqlsEqls'Bool'Unds'{}(
                    /* Fl Fn D Sfa */ VarB:SortBool{},
                    /* Fl Fn D Sfa Cl */ \dv{SortBool{}}("true")
                ),
                /* Fl Fn D Sfc */
                Lbl'UndsEqlsEqls'Int'Unds'{}(
                    /* Fl Fn D Sfc */
                    Lblbool2Word'LParUndsRParUnds'LEMMAS'Unds'Int'Unds'Bool{}(
                        /* Fl Fn D Sfa */ VarB:SortBool{}
                    ),
                    /* Fl Fn D Sfa Cl */ \dv{SortInt{}}("1")
                )
            )
        )
    SMT limit set at:
        0
Context:
    (InfoReachability) while checking the implication
        (DebugEvaluateCondition) while evaluating predicate
            (DecidePredicateUnknown) while applying equation
                                     in Kore.Rewrite.SMT.Evaluator.filterMultiOr


render/pod: Remove unused options and incorrect code

I have merged this since I am working in that area of the code.


Week One

[ ] Freecodecamp tutorial complete by Friday
[ ] Add collaboratory notebook to GitHub
[ ] Find articles on Neural Networks and just save links

how about week two

Some imposter syndrome kicked in. Now we do week two
On Thu, Oct 20, 2022 at 8:52 AM jlchen5 @.***> wrote:

how about week two
—
Reply to this email directly, view it on GitHub
https://github.com/BluestNerd/Tensorflow_learning/issues/1#issuecomment-1284976866,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AWCULWKZWMJX4MVGC7BP66LWEDM3DANCNFSM54BEU23Q
.
You are receiving this because you authored the thread.Message ID:
@.***>


Enable rbd-mirror daemon restart config automatically

Currently, the user has to set this value ceph config set global rbd_mirror_die_after_seconds 3600 via the toolbox,
and that is not a good way for the customer as they don't have toolbox access. So setting this value in the rook-config-override
configmap.
Note- it will work on fresh clusters not on the upgraded cluster as someone needs to restart rook pods after this configuration is applied
BZ Link-
https://bugzilla.redhat.com/show_bug.cgi?id=2093266
Signed-off-by: Malay Kumar Parida<EMAIL_ADDRESS>

/assign @jarrpa
/assign @agarwal-mudit

/cc @ShyamsundarR
/cc @idryomov

/approve
/retest

/cherry-pick release-4.10

/retest

/retest

/retest

/hold

/cc @idryomov

/retest

/hold cancel
We will have separate PR for the debugging related changes

/retest


Is there an updated readme file

Thanks for taking the time to create this software but I cannot get it installed.

Steps taken are below:

* Download the file
wget https://github.com/IzakMarais/reporter/archive/master.zip
* Uncompress the file
unzip master.zip
* Change directories
cd reporter-master
* Change the default port of 3000 to port **** and port 8686 to ****
vi cmd/grafana-reporter/main.go
var proto = flag.String("proto", "https://", "Grafana Protocol. Change to 'https://' if Grafana is using https. Reporter will still serve http.")
var ip = flag.String("ip", "mydomain.com:<port_number>", "Grafana IP and port")
var port = flag.String("port", ":<port_number>", "Port to serve on")
* Add ip to the iptables
sudo iptables -A INPUT -p tcp -m tcp --dport <port_number> -j ACCEPT
sudo semanage port -a -t http_port_t -p tcp <port_number>
sudo /sbin/service iptables save
# Set GOPATH in terminal
set GOPATH=T:/var/lib/grafana/plugins/reporter
vi util/docker-compose.yml
version: '3.2'
services:
grafana:
image: grafana/grafana:latest
environment:
GF_USERS_ALLOW_SIGN_UP: "false"
GF_AUTH_DISABLE_LOGIN_FORM: "false"
GF_AUTH_DISABLE_SIGNOUT_MENU: "false"
GF_AUTH_ANONYMOUS_ENABLED: "false"
GF_AUTH_ANONYMOUS_ORG_ROLE: "Viewer"
expose:
  - <port_number>
ports:
  - "<port_number>:<port_number> "

reporter:
image: izakmarais/grafana-reporter:${gr_version:-latest}
command: "-ip grafana:<port_number> "
ports:
- "<port_number> :<port_number>"
* Create google firewall rule for port
Name: grafana-reporter
Type: Ingress
Targets: https-server
Filters: IP ranges: <IP_ADDRESS>/0
Protocols / ports: tcp:<port_number>
Action: Allow
* change the permissions from 0777 to 0775 in report/report.go
report/report.go:172:   err = os.MkdirAll(rep.imgDirPath(), 0777)
report/report.go:197:   err := os.MkdirAll(rep.tmpDir, 0777)
vi report/report.go
Set GOPATH in terminal
set GOPATH=T:/var/lib/grafana/plugins/reporter
* Install golang
sudo yum install golang
mkdir /usr/lib/golang/src/cmd/grafana-reporter
cp * -R /usr/lib/golang/src/cmd/grafana-reporter
* Replace the lines below with the directory location because the files cannot be found at the url
vi grafana-reporter/main.go
vi grafana-reporter/handler.go
#"github.com/IzakMarais/reporter/grafana"
"/usr/lib/golang/src/cmd/grafana-reporter/grafana"
"github.com/IzakMarais/reporter/report"
"/usr/lib/golang/src/cmd/grafana-reporter/report"
"github.com/gorilla/mux"
"/usr/lib/golang/src/cmd/grafana-reporter/vendor/github.com/gorilla/mux"
go install -v
handler.go:30:2: import "/usr/lib/golang/src/cmd/grafana-reporter/grafana": cannot import absolute path
handler.go:31:2: import "/usr/lib/golang/src/cmd/grafana-reporter/report": cannot import absolute path
handler.go:32:2: must be imported as github.com/gorilla/mux

Sorry about the big fonts.

I was trying to download the files to my computer so I could change the settings but after many hours today and many hours a few months ago, I cannot get this to install.
I tried to move the code the the plugins directory because I do not want it installed in root's bin.
GOPATH="/var/lib/grafana/plugins/reporter/cmd/grafana-reporter"
vi /var/lib/grafana/plugins/reporter/cmd/grafana-reporter/main.go
vi /var/lib/grafana/plugins/reporter/cmd/grafana-reporter/handler.go
    "cmd/grafana-reporter"
    "cmd/grafana-reporter"
    "../vendor/github.com/gorilla/mux"

go install -v /var/lib/grafana/plugins/reporter/cmd/grafana-reporter/main.go
cmd/grafana-reporter/main.go:27:2: must be imported as github.com/gorilla/mux
cmd/grafana-reporter/main.go:25:2: cannot find package "cmd/grafana-reporter" in any of:
/usr/lib/golang/src/cmd/grafana-reporter (from $GOROOT)
/var/lib/grafana/plugins/reporter/cmd/grafana-reporter/src/cmd/grafana-reporter (from $GOPATH)
[root@pro reporter]# go install -v /var/lib/grafana/plugins/reporter/cmd/grafana-reporter/
can't load package: package /var/lib/grafana/plugins/reporter/cmd/grafana-reporter: import "/var/lib/grafana/plugins/reporter/cmd/grafana-reporter": cannot import absolute path

Sorry, but it is difficult to figure out exactly what you want to achieve based on these descriptions.
The steps in the readme should work, I have recently tested them again.  Have you managed to get it to compile before you start making any changes? Try to just follow the steps in the readme:

first set your GOPATH.
then use go get to fetch the code in stead of wget on the release zip file.
then install. That will give you a binary image that you can move to where-ever you want it.

Thanks.  I'll try to recall.  I use to be a software engineer where I developed software in C, Perl and Assembly, so I understand some terms and Makefiles but I have not used golang.  Maybe I should read about it.  I think the instructions want to put the files in root's bin but I wanted to place the code in my home directory, then compile the binaries to be placed in the grafana / plugins directory.
I wanted to edit the configuration files before compiling because some of the permissions are set to 0777, I use https, different ports, and I wanted to change login settings in util/docker-compose.yml
My notes above are hard to understand because of the big fonts and some text is not formatted nicely.  Sorry.
I appreciate your help.
Thanks

OK, thanks for explaining. Can you confirm that you can get the something running without any modifications?
Most of the things you want to modify seem to be configurable already. For you can use command line flags to change the the port numbers and use https for communicating with the Grafana server. The docker-compose.yml is not dependant on the golang source files directly, it assumes that docker images for grafana and grafana-reporter already exist. So once you have working docker images, you could easily create your own docker compose with the parameters you prefer.
However if you want to modify the source code, and have the code live live in your home directory, the simplest solution would be to set GOPATH to your home directory, then follow the readme instructions, which would output in the binary at $GOPATH/bin. Then you can simply copy the binary from there to where you want it as a post build step.

Any further feedback? Have you tried my suggestions?


fix(rpc): show data in when cast send result in custom error

Motivation

➜  foundry_test git:(master) ✗ cast send 0x5FbDB2315678afecb367f032d93F642f64180aa3  "customError()" --private-key $PK
Error:
server returned an error response: error code 3: execution reverted:

cast send result in execution revert with out reason(data) is hard to debug.
old version of cast send result would be like:
(code: 3, message: execution reverted: CustomError3333, data: Some(String("0x8d6ea8be0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000f437573746f6d4572726f72333333330000000000000000000000000000000000")))

it's good to make cast send print data like "0x8d6ea8be...".
Solution
add data to print in fmt

PR Checklist

[ ] Added Tests
[ ] Added Documentation
[ ] Breaking changes

see https://github.com/foundry-rs/foundry/issues/8606
see https://github.com/foundry-rs/foundry/issues/8603
see https://github.com/foundry-rs/foundry/pull/8607

cargo_test_workspace.log
cargo test --workspace

run successfully in local machine, please rerun the workflows.

needs cargo +nightly fmt and clippy

needs cargo +nightly fmt and clippy

done.


Add support for SCEP (WIP)

WIP

Currently in a really basic state. The basics seem to work with the micromdm/scep client implementation. I got an error using certnanny/sscep, though.
Had to setup the CA with RSA keys, similar to below:
step certificate create TestRoot root.crt root.key --profile=root-ca  --no-password --insecure --kty=RSA
step certificate create TestIntermedidate intermediate.crt intermediate.key --profile=intermediate-ca --ca=root.crt --ca-key=root.key --no-password --insecure --kty=RSA

And then had to ensure that step would use that by moving the keys and certificates to the step storage directory.
In the step CA configuration, a new SCEP provisioner should be added:
{
        "type": "SCEP",
        "name": "scep1",
}

go run cmd/step-ca/main.go /path/to/.step/config/ca.json
2021/02/12 12:02:53 Serving HTTP on :8080 ...

level=debug ts=2021-02-12T11:02:57.155466Z msg="decrypt pkiEnvelope" ca_certs=1

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@a98ea5f). Click here to learn what that means.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master       #1   +/-   ##
=========================================
  Coverage          ?   75.84%
=========================================
  Files             ?       95
  Lines             ?     9578
  Branches          ?        0
=========================================
  Hits              ?     7264
  Misses            ?     1906
  Partials          ?      408

Continue to review full report at Codecov.

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

Codecov Report

Merging #1 (65d43fe) into master (3b9eed0) will decrease coverage by 0.72%.
The diff coverage is 82.43%.

:exclamation: Current head 65d43fe differs from pull request most recent head 68d5f6d. Consider uploading reports for the commit 68d5f6d to get more accurate results

@@            Coverage Diff             @@
##           master       #1      +/-   ##
==========================================
- Coverage   76.66%   75.93%   -0.73%
==========================================
  Files          94      110      +16
  Lines        9446     9916     +470
==========================================
+ Hits         7242     7530     +288
- Misses       1804     1995     +191
+ Partials      400      391       -9

Impacted Files
Coverage Δ

acme/nonce.go
0.00% <0.00%> (-89.19%)
:arrow_down:

api/errors.go
31.25% <ø> (-2.09%)
:arrow_down:

authority/authority.go
50.98% <ø> (-7.31%)
:arrow_down:

authority/config.go
74.07% <ø> (-2.12%)
:arrow_down:

authority/provisioner/collection.go
76.14% <ø> (-1.43%)
:arrow_down:

authority/provisioner/method.go
5.00% <ø> (ø)

authority/provisioner/provisioner.go
44.94% <ø> (-1.04%)
:arrow_down:

authority/provisioner/scep.go
0.00% <ø> (ø)

authority/tls.go
84.67% <ø> (+1.06%)
:arrow_up:

ca/acmeClient.go
80.66% <ø> (ø)

... and 74 more

Continue to review full report at Codecov.

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


When will RSPrompter be merged into mmdetection

Can you provide an overview of the progress？
The paper's title is 'RSPrompter: Learning to Prompt for Remote Sensing Instance Segmentation based on Visual Foundation Model'

@uyzhang Thank you very much for your attention. The RSPrompteralgorithm is currently supported by the authors of the paper, so it is necessary to communicate with them regarding the current progress.


Some abbreviations not supported

Thanks for making this tool available.
While testing the omc tool I quickly found that it does not support all object types, for example no (abbreviation for nodes), ing (abbreviation for ingress) or crds:
$ oc get no
NAME                                            STATUS   ROLES    AGE     VERSION
ip-10-0-153-216.eu-central-1.compute.internal   Ready    worker   5h38m   v1.21
[..]
$ omc get no
Invalid object type: no

$ oc get ing
No resources found in default namespace.
$ omc get ing -A
Invalid object type: ing

$ oc get crds -A
NAME                                                              CREATED AT
alertmanagerconfigs.monitoring.coreos.com                         2022-02-07T08:37:29Z
[..]
$ omc get crds -A
Invalid object type: crds

Other abbreviations such as po (Pods) work as expected. oc api-resources shows the abbreviations for the CRDs used by a certain cluster, this may be helpful to complete the list of supported abbreviations.

@simonkrenger Are you able to provide me with a valid output for an ingress resource?
$ oc get ingress <resource>
$ oc get ingress <resource> -o wide
$ oc get ingress <resource> -o yaml | head -10

By the way, I have created this issue to track the request to support ingress resources and this issue to track the request to support crd resources, this issue (#33) will only be related to the support of the abbreviation no for the node resource

I updated #38 with the output requested above. Keeping this issue to track the no abbreviation issue.


Switching the style of binlog player RPC.

From channel based to interface/Recv method. This gets rid
of a couple go routines, and of the ErrFunc.
@enisoc @aaijazi @michael-berlin @guoliang100 @sougou
One question: I went from channel to interface with a single Recv() method. I could also just return the Recv function:
ServeUpdateStream(ctx context.Context, position string) (func recv()(*binlogdatapb.StreamEvent, error), err error)
instead. Then in the implementations, a closure can be used, and we don't define the temporary types. What do you guys think? Would it be better?
(Originally, I thought the interface was better, because I was hoping we could return the gRPC stream object directly. But usually we can't, as the steaming response structure has the object we're interested in as a sub-object, not as the main streamed object. In this case for instance, we stream binlogdata.StreamUpdateResponse, but the client wants binlogdatapb.StreamEvent, which is a sub-object of binlogdata.StreamUpdateResponse. Same when we use proto2.)

This change is

LGTM the interface looks fine to me. I think gRPC uses that pattern because they support bidirectional streaming. Keeping things consistent for unidirectional streaming makes sense.

gRPC also uses that pattern because the stream object also has an anonymous rpc.Stream in there, and you can get stream properties from there. But we don't need that.
However, I agree that the interface is more future-proof than the callback, so I'll keep doing this.

LGTM I like the interface :)


Fixed hv.help() for non-hv objects

hv.help() was meant to fall back to pydoc for anything it doesn't understand, but that has apparently been broken for some time (see below).  Looks like it was because pydoc was deleted from the module namespace, presumably to clean up our API.  To achieve the same thing while also working properly, did a local import of pydoc just where it was needed.

Thanks for the fix. Happy to merge when the tests pass (I restarted one, presumably failed due to a transient).


"Plăsoiu" is listed in the drop-down menu

Description:
"Plăsoiu" is listed in the drop-down menu alongside its corresponding county and commune, according to the law
Precondition:
The website is up an running.

Step 1
Type "Plăsoiu" in the search bar.

Expected results
The location is listed in the drop-down menu as "Plăsoiu, Brăila (Vișani)".


[rpc] remove usage of block_on on fullnodes

Description
While @patrickkuo is experimenting with the removal of spawn_blocking, this PR removes the usage of block_on, which is expected to cause deadlock when using on the current run time
Test Plan
Tested on explorer and wallet traffic

If your changes are not user-facing and not a breaking change, you can skip the following section. Otherwise, please indicate what changed, and then add to the Release Notes section as highlighted during the release process.
Type of Change (Check all that apply)

[ ] user-visible impact
[ ] breaking change for a client SDKs
[ ] breaking change for FNs (FN binary must upgrade)
[ ] breaking change for validators or node operators (must upgrade binaries)
[ ] breaking change for on-chain data layout
[ ] necessitate either a data wipe or data migration

Release notes

I see that we also add few block_on calls in this PR, are those expected not to run on the main runtime? Can you change to use tokio's version of block_on which will ensure they are not run on the runtime thread?

I see that we also add few block_on calls in this PR, are those expected not to run on the main runtime?

Right those are used by the indexer. Patrick will remove them as a separate PR


[WIP] Use manual managed memory in mem.lua

Attempt to fix #829. The issue states is not possible to retrieve large binding tables using config get, even if using RaptorJIT.
The main issue here is that even though RaptorJIT is aimed for Intel 64-bit architecture, it still have limitations on string size inherited from LuaJIT. It's not possible to manage strings bigger than 2GB.
When pulling a 10M binding-table config using config get the output string is larger than 2GB.
In this PR I modified lib/stream/mem.lua to back up on C's runtime memory management functions, however call_with_output_string converts the buffered string to a Lua string using FFI, so backing up on C's runtime memory functions does not solve the issue.
$ sudo ./snabb lwaftr run --cpu 11 --name lwaftr --conf lwaftr.conf --on-a-stick 82:00.0
string length overflow:<PHONE_NUMBER>

$ sudo ./snabb config get lwaftr /

2387430001 bytes is approximately 2.3GB.

Created new issue https://github.com/Igalia/snabb/issues/1177


Design complete process flow for Tasks

Currently, Task can be in 4 states

Created,
InProgress,
Completed,
Accepted,

Design all possible intermediate steps that a task can find itself. For example. We should be able to update a task once  it has been created

The Design for the process can be found here: https://github.com/UniversalDot/documents/blob/master/designs/architecture/ProcessDesign.drawio.png
Here are the updates in detail:

[ ] Created Task can be updated by the same owner who created it. After it is updated, the state remains Created.
[ ] After Task is completed, it can be Accepted or Rejected. When Accepted, the Task is closed and removed from storage. When Rejected, the Task is returned inProgress.

Other important additions;

[ ] When task is started InProgress, the budget funds are locked in escrow. Funds are released and transferred when the task is accepted.


How to migrate from .NetCore 2.2 to .NetCore 3

@MaziarSangi ,
I suggest you don't until Volkan has upgraded SF to .NetCore3 :-)
Or you are on your own...
With kind regards,
John

Yes i would wait :)

Any eta when you may upgrade?

Hello @volkanceylan, can I know when we can use StartSharp with .NetCore 3?

There is already an upgrade guide, closing.


Appstudio update mvp-test-component

Pipelines as Code configuration proposal

Pipelines as Code CI/mvp-test-component-on-pull-request has successfully validated your commit.

StatusDurationName

✅ Succeeded
9 seconds
init

✅ Succeeded
15 seconds
clone-repository

✅ Succeeded
1 minute
build-container

✅ Succeeded
23 seconds
sanity-inspect-image

✅ Succeeded
22 seconds
deprecated-base-image-check

✅ Succeeded
19 seconds
clair-scan

✅ Succeeded
59 seconds
clamav-scan

✅ Succeeded
12 seconds
sbom-json-check

✅ Succeeded
22 seconds
sanity-label-check

✅ Succeeded
22 seconds
sanity-optional-label-check

✅ Succeeded
6 seconds
show-summary


[WIP] Automatically (re)format code using "black" library

We've talked about this for a while now and it's time to finally make some concrete steps to consistent code style and automatic code formatting.
Background / Context
We, the developers, have various opinions on code styling which are by nature, subjective. Some of the more "objectively" defined style rules (defined in thing such as pep8, etc.) are already enforced in our code base using tools like pep8, flake8 and pylint, but those tools only go so far.
Besides that it's a bit of "wild west" - we all have our own preferences and those tend to end up in the code base one way or another.
This means inconsistent styling in the code which makes the code harder to follow, read and understand, etc. It also means unnecessary "arguing" about style choices.
To solve for that and have a single consistent style in the code (think gofmt), we should introduce a tool which automatically and deterministically formats the code so it follows a single consistent style,
After doing some research, I think the best tool for our use case probably is black - https://github.com/ambv/black.
There are other tools out there, but the good thing about black is that it's opinionated. If we select a tool which has 100 different options and flag to tweak styling to our linking (think yapf - https://github.com/google/yapf), then we will probably never all agree on how those options should be configured.
And personally, I'm also not a fan of some of the styling choices black makes, but at least it's consistent.
Once we agree on the approach and library to use, we should make the following changes:

[ ] Reformat all of the existing code - initial diff will be large, but there is no way around that
[ ] Document this in our developer documentation, contribution guidelines, etc.
[ ] Automatically enforce reformatting as part of:

[ ] Pre-commit hook
[ ] Travis CI build process - fail the build if code hasn't been formatted using black style
[ ] Document how people can integrate and do this automatically inside their editor / IDE

[ ] Eventually enforce the same styling rules on StackStorm-Exchange repos

Here is an example of the code base being reformatted using black - https://github.com/StackStorm/st2/compare/black_auto_code_format...black_auto_code_format_reformatted?expand=1.

And here is a short list of quick examples of things I don't like / things it's lacking:

I find this much less readable compared to the original version - https://github.com/StackStorm/st2/compare/black_auto_code_format...black_auto_code_format_reformatted?expand=1#diff-97d2525fd77b27fc5275d98eee8d36c1L57
It doesn't do anything about consistent import ordering and styles

This means other options like yapf might still be a valid choice.

Looking at the st2 reformatted example, it fixes some of the coding I would do. One of my biggest complaint about st2 styling are the imports. If black doesn't automatically take care of that, then we need to agree on a separate tool or agree on what those rules are.

I agree about imports, that's also one of the limitations I mentioned on Slack.
Those things are not mutually exclusive though and there are other tools we should look at. For example - https://github.com/PyCQA/flake8-import-order
And perhaps we should also start with import re-order since diff should be a bit smaller :)

Obsoleted by #5156. Please close.

Thanks, @cognifloyd for tracking this :+1:


lvm2: do not run 10-dm.rules in a container

Only the root name space can run the 10-dm.rules for udev.  If more
than one entity such as a privileged container invokes the dmsetup
routines to manipulate volumes automatically the root name space will
start unmounting volumes at runtime for the whole system.
This was found when using a special encrypted volume for the system
journal as a shared resource between the containers and the root name
space so as to make the logs all visible in the privileged container.
This type of manipulation is generally only done when the system is
started and it allows the containers to freely start and stop as well
as have the possibility of a r/w /sys.
Signed-off-by: Jason Wessel<EMAIL_ADDRESS>

the problem with this, is that it only works for our containers. All of my recent (non-master) changes have used heuristics and hooks to modify the containers to prevent things like this from happening.
That way we can run 3rd party containers and not blow up the system.
So for this, is there a lxc entry hook, or a place in ansible that we can tweak to take care of this ?

I am open to suggestions about an alternative.  As far as 3rd party container go, systemd has a rule internally where by it defeats udev when /sys is mounted read-only.   As long as we are doing that this will never be a problem.
The key issue here is that when /sys is read/write the full udev runs and there are some rules which have no idea there is a container or a notion of a root name space.   The device mapper has no sharing API what so ever which is the root cause behind the problem.
Another solution here could be to bind-mount an empty file.  There is really nothing in the 10-dm.rules that should run in the case of a container.  And that certainly is something that could be setup as a part of the container deploy.

Looks like the bind mount of an empty file
root@cube-essential:/var/lib/lxc/cube-gw# grep /dev/null fstab
/dev/null /var/lib/lxc/cube-gw/rootfs/lib/udev/rules.d/10-dm.rules none ro,bind,create=file
This approach should work fine, and can be implemented as part of the file system customizations.  For the purpose of the cube-ctl add for lxc (which is going away).  It seems we can have a condition to check the fs at config generation time and black it out with the rule above.

I like that approach, since it is something that we can port to the new container types without much trouble, and it protects us from 3rd party containers.
I'll close this pull request with the assumption that you'll re-submit.


Add apoc.path.expand that takes a map parameter

Something like this
CALL apoc.path.expand(node(s),
{
out: [rels],
in: [rels],
both: [rels],
include: [labels],
exclude: [labels],
min: 0
max: 3
...
})

@tkroman @kvegter WDYT?

Looks more readable to me.

Added it with https://github.com/neo4j-contrib/neo4j-apoc-procedures/commit/ca28272e707def77aa51db4a20158c89516206d2


provisioner should wait to create a PV - till iscsi target is initialized.

When openebs volume is first provisioned, it will have to download the openebs/jiva to the kubernetes node and it can take a few seconds to download. Meanwhile, provisioner is adding a PV with the iSCSI IP and portal details. Since the download is in progress, the PV attach fails and kubelet will log a warning / error before retrying.
On the next attempt or the subsequent one - as the download finishes, the PV is successfully mounted. (This is seen in the above diagram)
Provisioner should wait to return the PV till the iSCSI portal is up and running.

@AmitKumarDas  Does maya-apiserver provides any information on whether iSCSI target is initialized or not? If yes then which endpoint should openebs-provisioner consume to make sure this?

when we get list volume or volume/info -- maya-apiserver is contacting the kubernetes to get the controller and replica details. if all the controller and replicas are running -- then we should show "active" for the volume status, if one controller and replica are running -- may be degraded if the policy is to have more than one replica and so forth..

@kmova I have one question here, Confirming replicas & controller of volume through maya-apiserver is enough to confirm that iSCSI target initialization?

We have volume/info endpoint which returns empty Status (More here: https://github.com/openebs/mayaserver/blob/master/docs/maya_api_server_k8s.md#read-an-existing-vsm) .
It would be helpful if maya-apiserver returns the status of the volume:
Status : active     -->   If volume is created. Replicas & Controller are running.
Status : inactive  -->   If volume is not created.

@kmova @satyamz time to get the state diag into some implementation.

Maya Apiserver will be returning the following status as phase for PV:
        // VolumePending - used for Volumes that are not available
	VolumePending VolumePhase = "Pending"
	// VolumeAvailable - used for Volumes that are not yet bound
	VolumeAvailable VolumePhase = "Available"
	// VolumeBound is used for Volumes that are bound
	VolumeBound VolumePhase = "Bound"
	// VolumeReleased - used for Volumes where the bound PersistentVol:syntime onumeClaim was deleted
	// released volumes must be recycled before becoming available again
	// this phase is used by the volume claim binder to signal to another process to reclaim the resource
	VolumeReleased VolumePhase = "Released"
	// VolumeFailed - used for Volumes that failed to be correctly recycled or deleted after being released from a claim
	VolumeFailed VolumePhase = "Failed"

if we do curl https://<IP_ADDRESS>:5656/latest/volumes/info/<pv-name>
{
  "metadata": {
    "annotations": {
      "vsm.openebs.io/replica-count": "1",
      "vsm.openebs.io/targetportals": "<IP_ADDRESS>:3260",
      "vsm.openebs.io/volume-size": "2G",
      "vsm.openebs.io/controller-ips": "<IP_ADDRESS>",
      "vsm.openebs.io/controller-status": "Running",
      "vsm.openebs.io/replica-ips": "<IP_ADDRESS>",
      "vsm.openebs.io/replica-status": "Running",
      "vsm.openebs.io/cluster-ips": "<IP_ADDRESS>",
      "vsm.openebs.io/iqn": "iqn.2016-09.com.openebs.jiva:pvc-23837c6a-d036-11e7-97b8-3c970e82da1e"
    },
    "creationTimestamp": null,
    "labels": {},
    "name": "pvc-23837c6a-d036-11e7-97b8-3c970e82da1e"
  },
  "status": {
    "Message": "",
    "Phase": "Bound",
    "Reason": ""
  }
}

This issue will be mentioned in the release notes for 0.5 as the PR is still under - work-in-progress and has not cut it into this release.


Update manifests/a/Anaconda/Anaconda3/2023.03-1/Anaconda.Anaconda3.locale.en-US.yaml

Fixes an issue where this package has multiple different monikers
Microsoft Reviewers: Open in CodeFlow

[Policy] Reset Labels


Use the es256 verification program to verify that some invalid jwt-token results are passed

env:
os:Ubuntu 16.04.6 LTS
openssl version:OpenSSL 1.0.2g  1 Mar 2016
Programming language：c++
description:
I verified that jwt-token is illegal on this webpage https://jwt.io/, but the result obtained by using the jwt-cpp library to establish the es256 validator is passed.
And the jwt-token generated by jwt::create will also have invalid tokens.
1.generate jwt token code:
std::string jwt_token = jwt::create()
                                    .set_algorithm("ES256")
                                    .set_key_id(op.key_id())
                                    .set_issuer(op.team_id())
                                    .set_issued_at(std::chrono::system_clock::now())
                                    .set_expires_at(std::chrono::system_clock::now() +
                                                    std::chrono::seconds {TOKEN_EXPIRE})
                                    .set_audience(op.aud())
                                    .set_subject(op.apple_id())
                                    .sign(jwt::algorithm::es256 {"", pri_key, "", ""});

2.verify jwt token coce:
auto decoded_jwt = jwt::decode(token);
    auto verifier    = jwt::verify()
                        .allow_algorithm(jwt::algorithm::es256 {"", private_key, "", ""})
                        .with_issuer(iss)
                        .with_subject(sub);
    try {
        verifier.verify(decoded_jwt);
    } catch (std::exception& e) {
        LOG(DEBUG) << e.what() << ",error token:" << token;
        return false;
    }

question:
Is my usage correct? Or where is the problem? Thanks

With JWT.io, can you  share the test you had done? This will help us check to see if there's an issue
My only concern with your code is the verification. With asymmetric keys you should be using the private key to sign and the public key to verify.

Normally you would only pass the public key on verify but given that the private key contains a copy of the public parts it is fine as long as everything is serverside.
When creating a token you dont need to (and should not) set the algorithm name, as the library will do that automatically based on the algorithm passed to sign.
Can you share a token + public/private key that demonstrates you problem ?
Maybe generate a new private key if (for obvious reasons) you dont wanna share the exact one used.

Normally you would only pass the public key on verify but given that the private key contains a copy of the public parts it is fine as long as everything is serverside.
When creating a token you dont need to (and should not) set the algorithm name, as the library will do that automatically based on the algorithm passed to sign.
Can you share a token + public/private key that demonstrates you problem ?
Maybe generate a new private key if (for obvious reasons) you dont wanna share the exact one used.
But i dont use the lastest version to generate token. And i can’t tell you the private key because of the contract. The issue is that I use the v3.0.1 version to generate the wrong token, but it is correct through verifior (the latest version is also correct), but it is illegal on jwt.io. The invalid token like that
eyJhbGciOiJFUzI1NiIsImtpZCI6IjdHRlI3Njg3MzcifQ.eyJhdWQiOiJodHRwczpcL1wvYXBwbGVpZC5hcHBsZS5jb20iLCJleHAiOjE1OTY1NDIzNzAsImlhdCI6MTU5NjQ5OTE3MCwiaXNzIjoiOTJMWUZZMjhaQSIsInN1YiI6InNnLmJpZ28ubGl2ZSJ9.NhbuUNBD-GPPuh8yjs58OYzUSGWQ7aGJX577k2XHFE4III3FJw58eW8o36SgruzP5lDBbM40kWfzjVnckQSB
And the length of the signature part of the token is 2 bits less than that of the normal token

B.Generate invalid token:
std::string load_key(const std::string& key_path) {   std::ifstream input_stream(key_path, std::ios::in);   std::istreambuf_iterator<char> input_begin(input_stream), input_end;   std::string private_key(input_begin, input_end);   input_stream.close();   return private_key; } int main() { for(int i = 0 ; i <= 10000; i++){   std::string private_key = load_key("ecc-private-key.pem");   std::string token = jwt::create().set_algorithm("ES256")                                     .set_key_id("839Gk321ET")                                     .set_issuer("9Fku422irp")                                     .set_issued_at(std::chrono::system_clock::now())                                     .set_expires_at(std::chrono::system_clock::now() +                                                     std::chrono::seconds {3600})                                     .set_audience("https://appleid.apple.com")                                     .set_subject("test.jwt")                                     .sign(jwt::algorithm::es256 {"", private_key, "", ""});   //std::cout << token << std::endl;   auto decoded_jwt = jwt::decode(token);   auto verifier    = jwt::verify().allow_algorithm(jwt::algorithm::es256 {"", private_key, "", ""});  try {         verifier.verify(decoded_jwt);     } catch (std::exception& e) {    std::cout << token << std::endl;     std::cout << e.what() << std::endl;  }  }  return 0; }

Ahh now we are getting somewhere. There was a bug in the way we concatenated the signature in some older versions. You should upgrade.

Issue was previously report and fixed in master


Add MNC Filter

A MNC Filter (Filtering) would be very great.
I want to generate the database only with my provider or maybe allow more than one mnc.

I hadn't thought that was needed some phones will report adjacent cells from other carriers and the more towers one has to work with the better the location estimate.
But it would not be too difficult to add that filter, so look for it in the next week or so.

MNC filtering added.

Perfect, thank you.
Directly generate the new database. :-)

Real-world example of MNC filtering being very useful:
I'm on the island of Jersey. The MCC here is 234. However, that's not exclusive to the island, and seems to be used by various non-mainland British Isles (most of which are so far away as to make their cell sites undetectable from here).
To my knowledge, there are only 3 MNCs operating in Jersey:

50 (the incumbent telco, JT)
53 (branded as Sure, locally, but really just Cable & Wireless)
3 (probably Airtel-Vodafone)

Thus, filtering for only local cells yields a much smaller database. A few thousand entries, instead of closer to a million.

Another possibility is if one were a subscriber of a multi-national operator. Filtering for your MNC but not MCC (that is, matching any MCC) would yield a database which is useful while travelling (abroad).

The only problem I've encountered with this implementation is that the keyboard is numerical-only. That is, it lacks a comma key (or any means of inputting one) 😄.
This stumped me for a while. The only workaround I discovered was

copy a comma character to clipboard from elsewhere
when inputting MNCs, long-(tap|press) to get the context menu
select paste
continue entering the next MNC
repeat steps 2-5 as needed


I can't find out how to mock GoogleAnalyticsTracker

I am testing a module using jest and that module calls a function that in turn calls GoogleAnalyticsTracker from react-native-google-analytics-bridge. I've tried everything I can think of (the documentation is a bit sparse) to mock this function, but I always get the real module not the mocked module. Can you see which step I am getting wrong or missing?
jest.mock('react-native-google-analytics-bridge');
import {GoogleAnalyticsTracker} from 'react-native-google-analytics-bridge';

describe('testing mocking', () => {
  it ('should return undefined when mocked', () => {
    let tracker2 = new GoogleAnalyticsTracker(null);
    expect(tracker2).toBe(undefined);
  })
})

... but it always manages to find the unmocked module...
Expected value to be (using ===):
      undefined
    Received:
      {"allowIDFA": [Function allowIDFA], "setAnonymizeIp": [Function setAnonymizeIp], "setAppName": [Function setAppName], "setAppVersion": [Function setAppVersion], "setSamplingRate": [Function setSamplingRate], "setTrackUncaughtExceptions": [Function setTrackUncaughtExceptions], "setUser": [Function setUser], "trackEvent": [Function trackEvent], "trackEventWithCustomDimensionValues": [Function trackEventWithCustomDimensionValues], "trackException": [Function trackException], "trackMultiProductsPurchaseEvent": [Function trackMultiProductsPurchaseEvent], "trackMultiProductsPurchaseEventWithCustomDimensionValues": [Function trackMultiProductsPurchaseEventWithCustomDimensionValues], "trackPurchaseEvent": [Function trackPurchaseEvent], "trackScreenView": [Function trackScreenView], "trackScreenViewWithCustomDimensionValues": [Function trackScreenViewWithCustomDimensionValues], "trackSocialInteraction": [Function trackSocialInteraction], "trackTiming": [Function trackTiming], "transformCustomDimensionsFieldsToIndexes": [Function transformCustomDimensionsFieldsToIndexes]}

Sorry, I don't have much experience with jest @ayercm so I can't really answer the question.
More likely you will get better help if you ask on StackOverflow, this is not a question specific to our module.
As such I'll have to close this issue. If it turns out there is something about this module that makes it difficult to test, then a specific change request to that effect can be opened in its own issue.

Done: http://stackoverflow.com/questions/41001859/how-do-i-mock-react-native-google-analytics-bridge-when-using-jest-for-testing

I just had the required breakthrough and posted my own answer on Stack Overflow. I can now use jest to test the values that are going to be passed to GA without polluting my analytics data with test result data!


Safe for Teams v1.0.0 (Early Access)

v1.0.0

Travis automatic deployment:
https://pr195--safereact.review.gnosisdev.com
Storybook book automatic deployment:
https://pr195--safereactstorybook.review.gnosisdev.com


Expand CI Capacity With More Runners

Overview

Expand CI capacity by adding more runners to test suites with high runtimes.

Testing

Ensure average runtimes of runners is significantly reduced by this change.
Ensure queuing times waiting for runners to provision do not offset the speedup of more parallel runners.

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

Project coverage is 81.15%. Comparing base (6b8fb08) to head (432c90f).

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1256      +/-   ##
==========================================
- Coverage   81.26%   81.15%   -0.12%
==========================================
  Files         200      200
  Lines       21953    21953
  Branches     3479     3479
==========================================
- Hits        17841    17815      -26
- Misses       2965     2986      +21
- Partials     1147     1152       +5

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

🚨 Try these New Features:

Flaky Tests Detection - Detect and resolve failed and flaky tests


Use Async subprocess calls

Codelab used to use this a while ago. Not sure if this could improve performance, but it is worth it a try.

Since most processing is not I/O related, it is not worth using async calls.


Cannot solve environment on readme

hi, I wanted to test out sdc because I think it's a great project and I'm very interested. I tried following the readme but I could not create the conda environments as described. When trying the sdc step conda install sdc -c intel/label/beta -c intel -c defaults -c conda-forge --override-channels conda could not solve the enviroment. I managed to install sdc using mamba (which has a better solver) but that implied downgrading to pandas 0.25.3, is this a problem?
Once I knew pandas 0.25.3 would satisfy the constraints I was able to create an environment with the following commands
conda create -n sdc-env python=3.7
conda activate sdc-env
conda install pyarrow=0.17.0 pandas=0.25.3 -c conda-forge
conda install sdc -c intel/label/beta -c intel -c defaults -c conda-forge --override-channels

This is an example of the errors I got with the original instructions:
Package wheel conflicts for:
pip -> wheel
python=3.7 -> pip -> wheel

Package liblapack conflicts for:
arrow-cpp -> numpy[version='>=1.11,<2.0a0'] -> liblapack[version='>=3.8.0,<4.0.0a0|>=3.8.0,<4.0a0']
sdc -> numpy -> liblapack[version='>=3.8.0,<4.0.0a0|>=3.8.0,<4.0a0']
numpy -> liblapack[version='>=3.8.0,<4.0.0a0|>=3.8.0,<4.0a0']
pyarrow=0.17.0 -> numpy[version='>=1.16,<2.0a0'] -> liblapack[version='>=3.8.0,<4.0.0a0|>=3.8.0,<4.0a0']
numpy -> blas=[build=mkl] -> liblapack==3.8.0[build='4_mkl|9_mkl|10_mkl|13_mkl|14_mkl|20_mkl|19_mkl|18_mkl|16_mkl|15_mkl|12_mkl|11_mkl|8_mkl|7_mkl|6_mkl|5_mkl']

Package wincertstore conflicts for:
sdc -> setuptools -> wincertstore[version='>=0.2']
wheel -> setuptools -> wincertstore[version='>=0.2']
setuptools -> wincertstore[version='>=0.2']
pip -> setuptools -> wincertstore[version='>=0.2']

Package lz4 conflicts for:
zstd -> lz4
arrow-cpp -> zstd[version='>=1.3.7,<<IP_ADDRESS>a0'] -> lz4

Package tbb4py conflicts for:
numpy -> tbb4py
sdc -> tbb4py
arrow-cpp -> numpy[version='>=1.11,<2.0a0'] -> tbb4py

Package c-ares conflicts for:
pyarrow=0.17.0 -> arrow-cpp[version='>=0.17.0,<<IP_ADDRESS>a0'] -> c-ares
arrow-cpp -> c-ares[version='>=1.16.1,<2.0a0']
parquet-cpp -> arrow-cpp[version='>=0.13.0'] -> c-ares[version='>=1.16.1,<2.0a0']
grpc-cpp -> c-ares[version='>=1.16.1,<2.0a0']

Package krb5 conflicts for:
aws-sdk-cpp -> libcurl[version='>=7.71.1,<8.0a0'] -> krb5[version='>=1.16.1,<1.17.0a0|>=1.17.1,<1.18.0a0|>=1.18.2,<1.19.0a0|>=1.16.4,<1.17.0a0|>=1.16.3,<1.17.0a0']
curl -> krb5[version='1.14.*|>=1.14.6,<1.15.0a0|>=1.16.1,<1.17.0a0|>=1.17.1,<1.18.0a0|>=1.18.2,<1.19.0a0|>=1.16.4,<1.17.0a0|>=1.16.3,<1.17.0a0|>=1.16.2,<1.17.0a0']
libcurl -> krb5[version='>=1.16.1,<1.17.0a0|>=1.17.1,<1.18.0a0|>=1.18.2,<1.19.0a0|>=1.16.4,<1.17.0a0|>=1.16.3,<1.17.0a0|>=1.16.2,<1.17.0a0']

Package aws-c-event-stream conflicts for:
aws-sdk-cpp -> aws-c-event-stream[version='>=0.1.6,<<IP_ADDRESS>a0']
arrow-cpp -> aws-sdk-cpp[version='>=1.8.70,<<IP_ADDRESS>a0'] -> aws-c-event-stream[version='>=0.1.6,<<IP_ADDRESS>a0']

Package pytz conflicts for:
pyarrow=0.17.0 -> pandas -> pytz[version='>=2017.2']
sdc -> pandas==0.25.3 -> pytz[version='>=2017.2']

Package pyparsing conflicts for:
pip -> packaging -> pyparsing[version='>=2.0.2']
wheel -> packaging[version='>=20.2'] -> pyparsing[version='>=2.0.2']

Package curl conflicts for:
arrow-cpp -> aws-sdk-cpp[version='>=1.7.164,<<IP_ADDRESS>a0'] -> curl[version='>=7.64.1,<8.0a0|>=7.71.1,<8.0a0']
aws-sdk-cpp -> curl[version='>=7.64.1,<8.0a0|>=7.71.1,<8.0a0']

Package thrift-compiler conflicts for:
thrift-cpp -> thrift-compiler==0.13.0=h669e017_6
arrow-cpp -> thrift-cpp[version='>=0.13.0,<0.14.0a0'] -> thrift-compiler==0.13.0=h669e017_6

Package uriparser conflicts for:
parquet-cpp -> arrow-cpp[version='>=0.13.0'] -> uriparser
arrow-cpp -> uriparser

@luk-f-a Hi, thanks for the report! There was a problem with uploading recent sdc packages to intel/label/beta channel, which should now be resolved. That's what was causing it since old sdc=0.34 was based on pandas=0.25.3 and environment was created with pandas=1.0.5. You can probably retry and everything should work now.

I can confirm it's now working well


How to call event for autosave submit form?

I want to release custom component with http://jakiestfu.github.io/Medium.js/docs/
But I dont know, how to call event for autosave submit form.

I know: $element.change()


TCP server hangs

I've just started using this library and I wanted to benchmark it just to see how much it can handle. So I've written a simple server which just accepts connections and closes them immediately.
Then I've tested it with 300 parallel connections with iperf:
iperf -c localhost -p 10000 -P 300 -n 0 -y C -N
At the first run it usually handles all connections, though the daemon leaves out the last dozen ticks. But mostly the second run of iperf, third run at best, will hang.
Now, as I'm new to mio - and to rust, I might be doing something wrong in my code, however I thought it could be a good idea to turn this into an issue.
If there is something wrong with my code, what is it?
Regards
Flavius
extern crate mio;

use std::collections::HashMap;
use std::net::SocketAddr;
use mio::*;
use mio::tcp::*;

struct WebSocketServer {
    socket: TcpListener,
    clients: HashMap<Token, TcpStream>,
    token_counter: usize,
    ticks: usize,
}

impl WebSocketServer {
    fn new(socket: TcpListener) -> WebSocketServer {
        WebSocketServer {
            socket: socket,
            clients: HashMap::new(),
            token_counter: 1,
            ticks: 0,
        }
    }
}

const SERVER_TOKEN: Token = Token(0);

impl Handler for WebSocketServer {
    type Timeout = usize;
    type Message = ();

    fn ready(&mut self, event_loop: &mut EventLoop<WebSocketServer>, token: Token, events: EventSet) {
        match token {
            SERVER_TOKEN => {
                let client_socket = match self.socket.accept() {
                    Err(e) => {
                        println!("Accept error: {}", e);
                        return;
                    },
                    Ok(None) => unreachable!("Accept has returned 'None'"),
                    Ok(Some((sock, addr))) => sock
                };
                //println!("{:?}", client_socket);
                client_socket.shutdown(Shutdown::Both);
            },
            token => {
            }
        }
    }
    fn notify(&mut self, event_loop: &mut EventLoop<Self>, msg: Self::Message) {
        println!("notify");
    }
    fn timeout(&mut self, event_loop: &mut EventLoop<Self>, timeout: Self::Timeout) {
        println!("timeout");
    }
    fn interrupted(&mut self, event_loop: &mut EventLoop<Self>) {
        println!("interrupted");
    }
    fn tick(&mut self, event_loop: &mut EventLoop<Self>) {
        self.ticks += 1;
        println!("tick {}", self.ticks);
    }
}

fn main() {
    let mut event_loop_config = EventLoopConfig::default();
    //event_loop_config.messages_per_tick(1000)
                     //.timer_tick_ms(1000000)
        //;
    let mut event_loop = EventLoop::configured(event_loop_config).unwrap();
    let address = "<IP_ADDRESS>:10000".parse::<SocketAddr>().unwrap();
    let server_socket = TcpListener::bind(&address).unwrap();
    let mut handler = WebSocketServer::new(server_socket);

    event_loop.register(&handler.socket, SERVER_TOKEN, EventSet::readable(), PollOpt::edge()).unwrap();

    event_loop.run(&mut handler).unwrap();
}

I had exactly the same problem :)
My solution : https://github.com/szagi3891/miohttp-rs/blob/master/src/server.rs#L214
I use a loop to handle new connections.
Does it help?

@flavius I believe it because your ready function does not handle the case of more than one connection waiting to be accepted. There might be more than one connection waiting to be accepted per event loop tick. As @szagi3891 showed, you can use a loop when accepting new connections.

@szagi3891, @hjr3 Thanks guys, it worked. I'd like to keep this issue opened because I'll get back with a PR to show an example, within the next days. Is it fine if I add it to the documentation? As I said, I'm new to the rust ecosystem and I'm not accustomed to the idiomatic way of doing things in rust.

@flavius I think documentation would be great. This is more of an async IO issue instead of a mio issue, but education in general is always good.

@flavius  Mind if we close this?  We'd be happy to accept a test or docs demonstrating this feature in the future.

Is this still a point? I never read about looping for accepts in any blog or tutorial.
I added this to my project, and collected some stats, but the loop always runs only once.
If this is a thing, a hint in the documentation for the accept method would be great :)

Tracking this in the doc issue #380


Pull amazonlinux:2 from public.ecr.aws

Feature description
If I am building in AWS, for lambda, the default image is "amazonlinux:2". Great!
But if I try to build my image lots of times I will get denied pull access to Docker Hub. So I can instead pull the image from AWS's hub, public.ecr.aws. Sure, I can set this in my build.gradle.kts. But it would be just as easy to have it hardcoded to that value in the first place.
docker-plugin/src/main/java/io/micronaut/gradle/docker/NativeImageDockerfile:
        private String resolve() {
            String baseImage = getBaseImage().getOrNull();

            if (strategy == DockerBuildStrategy.LAMBDA && baseImage == null) {
                baseImage = "public.ecr.aws/amazonlinux/amazonlinux:2";
            } else if (baseImage == null) {
                baseImage = "frolvlad/alpine-glibc:alpine-" + DefaultVersions.ALPINE;
            }

            return baseImage;
        }

I will try to get to making a PR for this. Thanks.

There are also rate limits for unauthenticated ECR requests from outside of AWS infrastructure.
I found a blog post here which says:

Note that while pulls from ECR Public do work from outside AWS, they are rate limited if not authenticated with an Amazon account, and you should generally use the Docker Hub addresses if you are pulling from outside AWS. Please see the ECR Public quotas documentation for more about how limits work with ECR Public.

However the blog post is old, and likely to be skewed towards gaining docker signups ;-)
Also the Amazon ECR limit seems to be one pull per second (I guess per IP) for unauthenticated users
And the docker one is 100 pulls in 6 hours (again for unauthenticated users)
My gut feeling is to leave it pointing at dockerhub, and maybe adding explicit documentation around switching to public.ecr.aws if rate limits are hit...

About a day after creating this ticket I somehow got denied by AWS. I must
not have been logged in or something. So I'm ok with keeping it pointed to
Docker Hub.
Thanks.
On Thu, Aug 24, 2023, 6:11 AM Tim Yates @.***> wrote:

There are also rate limits for unauthenticated ECR requests from outside
of AWS infrastructure
https://docs.aws.amazon.com/AmazonECR/latest/public/public-service-quotas.html
.
I found a blog post here
https://www.docker.com/blog/news-from-aws-reinvent-docker-official-images-on-amazon-ecr-public/
which says:
Note that while pulls from ECR Public do work from outside AWS, they are
rate limited if not authenticated with an Amazon account, and you should
generally use the Docker Hub addresses if you are pulling from outside AWS.
Please see the ECR Public quotas documentation
https://docs.aws.amazon.com/AmazonECR/latest/public/public-service-quotas.html
for more about how limits work with ECR Public.
However the blog post is old, and likely to be skewed towards gaining
docker signups ;-)
Also the Amazon ECR limit seems to be one pull per second (I guess per IP)
for unauthenticated users
And the docker one is 100 pulls in 6 hours (again for unauthenticated
users)
My gut feeling is to leave it pointing at dockerhub, and maybe adding
explicit documentation around switching to public.ecr.aws if rate limits
are hit...
—
Reply to this email directly, view it on GitHub
https://github.com/micronaut-projects/micronaut-gradle-plugin/issues/799#issuecomment-1691399904,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAJPLI7ZMIYRUSUQKLT4563XW4SFZANCNFSM6AAAAAA3ITWVI4
.
You are receiving this because you authored the thread.Message ID:
@.***
com>

Thanks for raising this Charlie 👍

@timyates is it document it how to change it?

@sdelamo Doing that now


requirements.txt for langchain-community

I believe, given they're only up to version 0.0.15, langchain community should be 0.0.1 (requirements.txt has 0.1.0)

Thanks very much 👍

Changed to 0.0.1


Website is in Japanese

The website is in Japanese , doesn't matter where you login.

Getting the same thing.  Tried Firefox, Chrome, Edge and on a different device. Doesn't affect the generation of the files.

Issue has been resolved for me

For me, it's in Russian. Same bug different language, I guess! 😄

@caughtquick & @JonAnders can you please tell us if you are still experiencing the issue? We did some changes to Cloudflare recently in order to fix this, and we want to confirm if this worked.

Yes, it is back to English again now, thanks!

@caughtquick & @JonAnders can you please tell us if you are still experiencing the issue? We did some changes to Cloudflare recently in order to fix this, and we want to confirm if this worked.

Still not fixed for me, tried with and without vpn and cleared cache

Still not fixed for me, tried with and without vpn and cleared cache

@caughtquick Can you share with me the request your browser is making and also the response you are receving from the website? I'm trying to better understand under which conditions this happens.
Locales (the accept-language  header) influences our website's appearance.
@JonAnders glad to hear that. Thanks for the reply!

I had this happen to me yesterday but it seems to be fixed now my accept-language header only had this and it's still the same:

Thanks for the replies. Glad it got sorted.


rustfmt --version is confusing on stable release

:raised_hands: rustfmt is now available on stable release :raised_hands:
Today its verstion has a -nightly suffix (0.3.4-nightly (6714a44 2017-12-23)).
We should be able to change the suffix based on whether its on stable or nightly like rls does.
rls-preview 0.124.0-stable (299a6a9 2017-12-25)
rls-preview 0.125.0-nightly (dee42bd 2018-02-04)

I'll take this.


SLO request with POST method

Hello guys, trying to integrate onelogin WP SAML plugin to F5 APM IDP. Working fine except the SLO method used when logout from WP is a GET and our IDP expect a POST. Anyway to change it ?
thanks for your help
arnaud

SLO is supported by HTTP-Redirect binding. HTTP-Post not implemented.


Add auto storage of unknown line refs

If a report is received from a line ref not in bus_routes we should store it, tag it as other and possibly alert to enable addition of colour and categorisation

Added with default status of uncat


[1.12-rc2] docker stack tasks and docker stack rm silently ignore invalid stack names

In 1.12, I can create list the tasks of a stack with:
$ docker stack tasks STACK.

When passed an invalid stack name, the output gives no error message. It should say that the stack does not exist.
$ docker stack tasks WHATEVER_42
ID  NAME  SERVICE  IMAGE  LAST STATE  DESIRED STATE  NODE

Likewise, docker stack rm UNKNOWN_STACK succeeds without any error message.

Stack is a concept abstracted above service level in docker's service and swarmkit, currently it is only stored in service's labels things or something like that.
Still a bug docker engine should fix.

tasks is like ps, it doesn't error when there are no items to list. This is the correct behaviour.
I've made an argument for why I think this remove behaviour  is correct here:https://github.com/docker/docker/pull/24051#issuecomment-229199914
Maybe it makes sense to say "nothing was removed" for that case, but I don't think an error exit status code is correct.


Rectification of the word 'Grammarly'

The word 'Grammarly' is wrongly misspelt. I intend correcting it.

This PR: Pull:13 fixes this issue


Add TiDB doc

TiDB is a MySQL-compatible database that supports Hybrid Transactional and Analytical Processing (HTAP) workloads. It can be used as a replacement for MySQL (same protocol and syntax). We have already seen some TiDB users using TiDB with umami together. So it would be great that we can have TiDB in the supported databases list.
The following is my practice, I hope to help more people integrate TiDB and umami
Prerequisites

Docker
Docker Compose
An existing TiDB database

Get the docker-compose file
git clone https://github.com/mikecao/umami.git

docker-compose setting for TiDB
cd umami & edit docker-compose file:
version: '3'
services:
  umami:
    image: ghcr.io/mikecao/umami:mysql-latest
    ports:
      - "3000:3000"
    environment:
      DATABASE_URL: mysql://root:@db:4000/umami
      DATABASE_TYPE: mysql
      HASH_SALT: replace-me-with-a-random-string
    depends_on:
      - db
    restart: always
  db:
    image: hooopo/tidb-playground:v5.2.0
    environment:
      TIDB_VERSION: v5.2.0
    restart: always
    ports:
      - "4000:4000"
volumes:
  umami-db-data:

Create database
mysql --host <IP_ADDRESS> --port 4000 -u root -p -e 'create database umami'

Import database schema
mysql --comments --host <IP_ADDRESS> --port 4000 -u root -p umami < sql/schema.mysql.sql

Run umami
docker-compose up

Try out the umami dashboard
open http://localhost:3000
user: admin
password: umami

TiDB production deployment setup

see https://docs.pingcap.com/tidb/stable/production-deployment-using-tiup

There are many MySQL compatible databases out there. We can't list all of them. If you want to add a guide to the website, there is a repo for it, https://github.com/mikecao/umami.is


Converter for LogicalOr and LogicalAnd operations.

Implementation of the converters for LogicalOr and LogicalAnd operations.

Replacement for PR#55548

@bixia1 : I fixed it. In my previous check-in I was using
#if IS_TRT_VERSION_GE(8, 2, 0, 0)
    return ValidateImpl(....);
#else
    return errors::Unimplemented("Boolean op: ", params_->node_def.op(),
                                 " is not supported in TRT version < 8.2");
#endif

for the wrong class (ConvertBinary instead of ConvertBooleanBinary)


Latex printing from sympy shows \displaystyle and doesn't print using graphics

pipx install euporie
pipx inject euporie timg cairosvg mtable flatlatex ipython
euporie console

from sympy import init_sessions
x*x

\displaystylex²

Hi,
This appears to be because sympy uses the \displaystyle latex command in it's latex output, and flatlatex (the default latex renderer used in euporie) does not support this command.
I've made a few changes in the dev branch which hopefully help with this issue:

I configure flatlatex to strip various latex style commands from the output (added here)
I've added utftex as a terminal latex renderer - this produces much more advanced output than flatlatex:

Other terminal latex renderers will now take priority over flatlatex if installed (you can now install utftex or pylatexenc and they will be used instead.

Also, if your terminal supports terminal graphics, and you have a latex distribution with dvipng, or matplotlib, installed, then euporie will render and display latex graphically:

The changes I've mentioned will be included in the next releases - I hope this helps!

These changes have been in euporie since v2.8.3


Example read_dfs2: grid cell coordinates created as integer

In lines
x = saxis.X0 + saxis.Dx*(0.5+(0:(saxis.XCount-1)))';
y = saxis.Y0 + saxis.Dy*(0.5+(0:(saxis.YCount-1)))';
One solution may be
x = saxis.X0 + saxis.Dx*(0.5+double(0:(saxis.XCount-1)))';
y = saxis.Y0 + saxis.Dy*(0.5+double(0:(saxis.YCount-1)))';

Another potential issue in the same lines is starting at 0.5. By using a dfs2 and a point shape file in the same UTM projection, the dfs2 editor view suggest that 0.5 should be removed. If I am not mistaken, the lines should be modified to
x = saxis.X0 + saxis.Dx*(double(0:(saxis.XCount-1)))';
y = saxis.Y0 + saxis.Dy*(double(0:(saxis.YCount-1)))';

About the second issue of 0.5: The value in a dfs2 file belongs in the center of the grid cells, i.e. from i*dx to (i+1)*dx and similar for y, the value kind of fills out that entire cell. That is not the way a wireplot works in MATLAB: In a wireplot values belong on the grid line junctions.
By adding 0.5, this moves the grid in MATLAB to the center of the DFS2 grid cells, and makes a plot of the center of the cells.  Hence, the 0.5 needs to be there.


duplicated example

https://github.com/awslabs/serverless-application-model/tree/develop/examples/apps/algorithmia
https://github.com/awslabs/serverless-application-model/tree/develop/examples/apps/api-gateway-authorizer-python
It seems like the two examples have the same files

Thanks for calling this out. It's just that https://github.com/awslabs/serverless-application-model/tree/develop/examples/apps/api-gateway-authorizer-python should not include package.json or index.js. Want to send a PR?


R markdown table template

Typically a tibble or data frame is made in R markdown and is printed as console output.
Doesn't look great and usually truncates the table
Want two (or one elegant) function that is able to take a tibble or data.frame and output
a reasonable table to be output in html or pdf.
Due to the vast possibilities with tabular information the function should be very flexible,
probably through the use of the dots argument (...), to overwrite any chosen default options.

Related: Might design a custom css for use in a R markdown template which would affect table appearance in html.

Completed with rmd_table()
(2160b5ba379f48abf66658fb045634572e919a09)
Also added RMD template document with this idea used as an example section
(46a91c875975008326ad59a0beec9df9474b460d)


[Feature Request] Extract To File automatically create the directory if it does not exist.

Currently we aren't automatically saving the new file when extracted, could you check if saving the file with :w ++p works for your use case? If not, what would this feature look like for you?

Currently we aren't automatically saving the new file when extracted, could you check if saving the file with :w ++p works for your use case? If not, what would this feature look like for you?

Yeah, :w ++p can be used, but this requires manually inputting the full path.
And using Extract to File, it will complete the path of the current file.
e.g. file app/ui/page.jsx would by default have the path app/ui.

I'm not sure I'm understanding you. You can delete the default relative path provided and use any path to extract to file.

Yeah, :w ++p can be used, but this requires manually inputting the full path.

What would be an alternative workflow that won't require manually inputting the full path?


python3Packages.wikitextparser: 0.54.0 -> 0.55.5

Bring the package to the latest released version.
Description of changes

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[x] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[x] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 266242 at 4f64c5c8 run on aarch64-darwin 1

2 packages built successfully:

python310Packages.wikitextparser
python311Packages.wikitextparser


cudaimgproc

Many functions here won't allow 32-bit float images. That's why we won't support Canny, CLAHE and some other useful stuff.