xgboost.dask.DaskXGBClassifier not working with >1 dask distributed worker in case of large datasets

Hi XGBoost devs,
I am running the this code on an EC2 machine with 32 threads and 128 GB ram. The size of csv being loaded in 800MB.
class ColumnSelector(BaseEstimator, TransformerMixin):
    def __init__(self, columns=[]):
        self.columns = columns

    def fit(self, X, y=None):
        return self

    def transform(self, X):
        cols_missing = list(set(self.columns) - set(X.columns))
        print(cols_missing)
        for cols in cols_missing:
            X[cols] = np.nan
        return X[self.columns]

cluster = LocalCluster(n_workers=1)
client = Client(cluster)
client

lp3 = dd.read_csv('./collection_model/collection_train.csv')
lp3

pre_pipe = Pipeline([
('colsel', ColumnSelector(columns=['column1', 'column2', ......]],
  )),
('missna', CustomMissingImputer()),
])
post_pipe= Pipeline([
('pre_pipe', pre_pipe),
('impute', IterativeImputer(n_nearest_features=5, max_iter=100, random_state=0)),
('qt', QuantileTransformer(n_quantiles=10))])

pi= xgboost.dask.DaskXGBClassifier(tree_method='hist')
pi.client= client

param_grid = {
    'learning_rate': [0.1, 0.2],
    'n_estimators': [100],
    'reg_lambda': [0.7],
    }

kfold = 5
skf = model_selection.StratifiedKFold(
    n_splits = kfold, shuffle = True, random_state = 30
)

scoring_1=make_scorer(ks_scorer, greater_is_better = True, needs_proba = True)
scoring={'auc': 'roc_auc', 'ks_scorer': scoring_1}

clf=GridSearchCV(
        estimator = pi,
        param_grid = param_grid,
        verbose = 5,
        cv = skf,
        iid = True,
        return_train_score = True,
        scoring = 'neg_mean_squared_error',
        refit = False
    )

pp = post_pipe.fit_transform(lp3,lp3['target'])

label = da.from_array(np.array(lp3['target'].astype(int).compute()), chunks=200000)
clf.fit(da.from_array(pp, chunks=200000),label)
clf.cv_results_

It works if the model is trained using a subset of the features with worker=1.
Some cases where it fails :

Same subset of features and with workers > 1, It keeps on running in the notebook with no result. In terminal,
WARNING: /home/conda/feedstock_root/build_artifacts/xgboost_1584539733809/work/src/objective/regression_obj.cu:58: Label set is empty.

Using all features with worker=1, it gives memory warnings in the terminal

distributed.worker - WARNING - Memory use is high but worker has no data to store to disk.  Perhaps some other process is leaking memory?  Process memory: 118.65 GB -- Worker memory limit: 126.75 GB```
and after some time error in notebook
```KilledWorker: ("('from-delayed-pandas_read_text-read-block-assign-d8c832b8fa114d4e528a9953dd6402de', 0)", <Worker 'tcp://<IP_ADDRESS>:40365', name: 0, memory: 0, processing: 11>)

How can a 800MB csv file consume 118 GB memory ?
Also, there is not 'predict_proba' attribute in DaskXgbClassifier, so metrics like roc_auc gives error.
Currently, we are using xgboost with sklearn gridsearch(to distribute the fits). With large datasets, hyper-parameter tuning jobs with 4k-5k fits take days to complete on EC2 and sagemaker.
We are trying dask xgboost to reduce training time.

Hi thanks for rasing an issue.  Here are some questions:

How sparse is your dataset?
Also where's the gridsearch coming from? Skl or dask ml.
Did you encode your label to be discrete values?
Lastly are you pulling Xgboost from master branch?  If so which commit it's?

Thanks for the prompt reply.

shape of dataset is 850k x 244. sparsity(0s) = 65%.
I am using skl gridsearch.
yeah, the label only contains two classes 0 and 1
xgboost version '1.0.2'

import os
import pandas as pd
import numpy as np
from sklearn.pipeline import Pipeline, make_pipeline, FeatureUnion
from sklearn.base import TransformerMixin, BaseEstimator
from sklearn.pipeline import FeatureUnion, Parallel, delayed,    _fit_transform_one, _transform_one
from sklearn.model_selection import GridSearchCV
from sklearn import model_selection

import xgboost
import json

from sklearn.preprocessing import QuantileTransformer
from sklearn.metrics import accuracy_score,roc_curve,roc_auc_score
from sklearn.metrics import make_scorer
from sklearn.experimental import enable_iterative_imputer
from sklearn.datasets import make_classification
from sklearn.impute import IterativeImputer, MissingIndicator
import random

import dask.dataframe as dd
import dask.array as da
from dask.distributed import LocalCluster, Client

cluster = LocalCluster(n_workers=10)
client = Client(cluster)
client

X, y = make_classification(n_features=244, n_samples=815414, n_classes=2)

DX = da.from_array(X, chunks = 200000)
Dy = da.from_array(y, chunks = 200000)

post_pipe = Pipeline([
('impute', IterativeImputer(n_nearest_features = 5,max_iter = 100,random_state=0)),
('qt',QuantileTransformer(n_quantiles=10))])

pi = xgboost.dask.DaskXGBClassifier(tree_method='hist')
pi.client = client

param_grid ={
    'learning_rate':[0.1, 0.2],
    'n_estimators':[100],
    'reg_lambda': [0.7],
    }

kfold = 5
skf = model_selection.StratifiedKFold(
    n_splits=kfold, shuffle=True,random_state=30
)

clf = GridSearchCV(
        estimator=pi,
        param_grid=param_grid,
        verbose=5,
        cv=skf,
        iid=True,
        return_train_score=True,
        scoring='neg_mean_squared_error',
        refit=False
    )

pp = post_pipe.fit_transform(DX,Dy)

clf.fit(da.from_array(pp, chunks=200000), Dy)

I am trying the same on a sample dataset. It runs with worker=1 but with workers > 1, it is still giving the same 'Label set is empty' warning.

You may want to pull in the latest XGBoost, as we fixed a prediction bug recently.
I don't think the memory consumption comes from XGBoost, rather it's somewhere in your pipeline.  I checked XGBoost's own memory consumption by loading some datasets directly and it works fine.   XGBoost just force the lazy computation to materialize.  Sometimes others believes it's XGBoost's error.  Also sometimes Python libraries are not very memory efficient.  Quoting from https://wesmckinney.com/blog/apache-arrow-pandas-internals/

pandas rule of thumb: have 5 to 10 times as much RAM as the size of your dataset

and pandas is the default backend of dask.

The empty label warning is a sign that, your data is not well balanced among workers.  Some workers have empty dataset.

How to balance the data between workers ? I get the same warning on the sample dataset too. Can you please debug the sample dataset script and post the changes required to balance the data between workers ?

hi guys - we have the same issue.
@trivialfis if you can post a recommended script, it will be great and we will follow the same.

Em ..  Sometimes its the chunk size, sometimes its other problems.  XGBoost does not move data, it accepts whatever dask provides for each worker.  Let me take a look.

In the sample script above posted by @harshit-2115 , reducing the chunk size should balance the data enough to prevent starved workers:
from sklearn.pipeline import Pipeline
from sklearn.model_selection import GridSearchCV
from sklearn import model_selection

import xgboost

from sklearn.preprocessing import QuantileTransformer
from sklearn.datasets import make_classification

import dask.array as da
from dask.distributed import LocalCluster, Client

if __name__ == '__main__':
    cluster = LocalCluster(n_workers=10, memory_limit='8GB')
    print(cluster.dashboard_link)
    client = Client(cluster)

    X, y = make_classification(n_features=244, n_samples=815414, n_classes=2)

    chunk_size = 2000

    DX = da.from_array(X, chunks=chunk_size)
    Dy = da.from_array(y, chunks=chunk_size)

    post_pipe = Pipeline([('qt', QuantileTransformer(n_quantiles=10))])

    pi = xgboost.dask.DaskXGBClassifier(tree_method='hist')
    pi.client = client

    param_grid = {
        'learning_rate': [0.1, 0.2],
        'n_estimators': [100],
        'reg_lambda': [0.7],
    }

    kfold = 5
    skf = model_selection.StratifiedKFold(n_splits=kfold,
                                          shuffle=True,
                                          random_state=30)

    clf = GridSearchCV(estimator=pi,
                       param_grid=param_grid,
                       verbose=5,
                       cv=skf,
                       iid=True,
                       return_train_score=True,
                       scoring='neg_mean_squared_error',
                       refit=False)

    pp = post_pipe.fit_transform(DX, Dy)

    clf.fit(da.from_array(pp, chunks=chunk_size), Dy)

Some simple testing from above script: for using 1500 as chunk size, the data is distributed quite nicely:
rows  cols
81249 244
63380 244
63623 244
58846 244
62584 244
60052 244
60037 244
65877 244
53922 244
82761 244

Thank you for debugging the script @trivialfis

I ran your script with both dask xgboost and xgboost. Dask xgboost is taking longer than xgboost to train, maybe because of the overheads due to the large number of chunks.
skl gridsearch can parallelize xgboost fits on a multi-core machine, but in case of dask xgboost skl gridsearch gives error when n_jobs > 1.
Also, increasing the chunk_size lowers the training time, but if the chunk_size is increased above a certain threshold, we get the same 'Label set is empty' warning again.
Should we consider number of workers and chunk_size as hyperparameters which should be tuned to get the best performance ?

On a multi-core EC2 machine, which model xgboost(parallelized single-thread fits) or dask xgboost(single-fit distributed across workers) will give us more speed and performance ?

Dask xgboost is taking longer than xgboost to train

Not surprising.  Even within XGBoost, simply syncing gradients between workers has its overhead.  On the dask end there are even more operations.  There's always a trade off.

but in case of dask xgboost skl gridsearch gives error when n_jobs > 1

skl functions are designed to work on local data.  In our case, it operates on dask.Array/dask.DataFrame, which "looks like" a local data thanks to Python's duck typing.  But you can imagine if you slice the data for each thread, you are essentially bypassing the scheduler (for threads, workers and data distribution) in dask.

Also, increasing the chunk_size lowers the training time

Again.  Trade off.  That's something responsible for dask to handle in the future.  But https://docs.dask.org/en/latest/understanding-performance.html might help.

Should we consider number of workers and chunk_size as hyperparameters which should be tuned to get the best performance

Accuracy performance?  No.  Computation performance?  Probably.  See above link.  But I believe there's some low hanging fruits for computation perf.  Like switching the backend to something else than pandas.  I ( work for NVIDIA) use cudf most of the time.  But I believe there are other backends mentioned in dask's document.

On a multi-core EC2 machine, which model xgboost(parallelized single-thread fits) or dask xgboost(single-fit distributed across workers) will give us more speed and performance ?

Hard to say.  It really depends on your data.  For small data just use normal single node multi-thread training.  Your dataset 800MB csv is considered as small.   I believe you can train it with normal:
xgboost.train({'tree_method': 'hist'}, ...)

in no time.  I use gpu_hist for training on HIGGS (7.9GB dense) for 1000 rounds can finish within 100 seconds.

@trivialfis that's a very interesting comment. in general do you use gridsearchcv ever ? or do you not use it at all ?
Do you always do your training on one machine with CPU or do you do distributed - like the way Sagemaker recommends (even with xgboost)
how would you do cross-validation with a k-fold ?

@sandys Your questions are asking my personal opinion.  So the following answers are from personal perspective.

Do you always do your training on one BIG machine with GPU or do you do distributed (with many machines)

Both.  I'm a developer.

So the question becomes - is xgboost distributed training better on 100 machines ...even though there are overheads ?

Depends.  Is your data 100 machines worthy?  For example, one normally don't put iris into a cluster.  As commented, it's a trade off.  See the performance section in https://medium.com/rapids-ai/a-new-official-dask-api-for-xgboost-e8b10f3d1eb7 .  You can see the scaling status of training on HIGGS dataset with gpu_hist and dask.  There's a limit in terms of performance scaling, which is effected both by your data (sparsity, shape etc) and your network (nvlink? tcp? ucx?).  It's an area we are trying to improve.

in general do you use gridsearchcv ever

Yes. But right now only with single machine.  Rapidsai has a notebook for using dask-ml with single node XGBoost if you are interested.  Dask is still new here. (and I'm no expert).  Like we talked about in #5347 .  There are issues we need to address.  You can also try the Spark version of XGBoost, which has been here for a very long time (longer than me contributing to XGBoost ..)

The questions here are really more about dask instead of XGBoost.  I would recommend:
https://docs.dask.org/en/latest/best-practices.html
https://docs.dask.org/en/latest/dataframe-best-practices.html

Your dataset 800MB csv is considered as small. I believe you can train it with normal in no time.

True, single xgboost fit takes no time. But if I am using gridsearchcv for hyperparameter tuning with 5 fold cv, total number of fits increases exponentially. That is why we use multi-core machines to distribute the fits.

I trained my dataset using dask xgboost, 2000 chunksize with a single gridsearch candidate and 5 Fold cv. It took 28 mins for the first fit to complete, but the rest 4 fits took just 1-2 mins. I didn't get this. What do you think ?

multi-core machines to distribute the fits.

XGBoost is multi-threaded even in single node configuration.

it took 28 mins for the first fit to complete, but the rest 4 fits took just 1-2 mins. I didn't get this

Could you take a look into the web interface and see what's dask doing?

Could you take a look into the web interface and see what's dask doing?

So for the first fit, dask took extra time to read the csv into memory. For the subsequent fits, it just did the computation.

XGBoost is multi-threaded even in single node configuration.

Yeah, so do we need dask XGBoost only when we have a cluster of machines ? We can just use the n_jobs param of XGBoost on a single machine to use all cores, right ?

there is no 'predict_proba' attribute in DaskXgbClassifier, so metrics like roc_auc gives error.

What can we do about this ?

@trivialfis

Yeah, so do we need dask XGBoost only when we have a cluster of machines ? We can just use the n_jobs param of XGBoost on a single machine to use all cores, right ?

If you need distributed training, then you can use Dask or YARN/Spark which are much more mature.

We can just use the n_jobs param of XGBoost on a single machine to use all cores, right ?

Correct.

Thank you for clarifying.
Can we add 'predict_proba' attribute to dask xgboost ? @trivialfis @thvasilo

Yes, will come back to this after 1.1 release.

@harshit-2115 Can this issue be closed, now that predict_proba() has been implemented in xgboost.dask?

Can this issue be closed, now that predict_proba() has been implemented in xgboost.dask?

I believe so.  Feel free to reopen if there's objection.


add Extended-IOU loss implementation

Motivation
In paper: A Systematic IoU-Related Method: Beyond Simplified Regression for Better Localization of TIP2021, we propose a new Extended-IOU loss, which outperforms the commonly used GIOU and DIOU in object detection.
Modification
add implementation of the proposed Extended-IOU Loss (EIOU).

@Wwupup Can you also create a PR to the dev-3.x branch?

We updated the precommit version recently. You can rebase your branch to the latest dev branch to solve this problem.


Closes #1576 - Resolves ImportExportIT failures

I wasn't handling arguments to the import table command properly in TableOperationsImpl, and a comma-delimited string of directories was captured and passed to the FATE operation in a single element Set<String> instead of a proper Set of multiple directories. This lead to integration test failures on Jenkins.
This PR addresses that.

AuditMessageIT is also broken from #1576 . I have a fix ready and incoming momentarily.

AuditMessageIT fixed in b9cc232af9717a00aeb76839fc9d42e33c1c4a13


Pulling Image from URL not listed in Firewall exceptions

Azure HCI Resource Bridge - Extension for hci-vmoperator pulls images from gcr.io.  This needs to be included in firewall rules and/or Microsoft might consider hosting their own image.
Found in command:
az k8s-extension create --cluster-type appliances --cluster-name $resource_name --resource-group $resource_group --name hci-vmoperator --extension-type Microsoft.AZStackHCI.Operator --scope cluster --release-namespace helm-operator2 --configuration-settings Microsoft.CustomLocation.ServiceAccount=hci-vmoperator --configuration-protected-settings-file $csv_path\ResourceBridge\hci-config.json --configuration-settings HCIClusterID=$hciClusterId --auto-upgrade true
Events:
  Type     Reason     Age                From               Message
  ----     ------     ----               ----               -------
  Normal   Scheduled  67s                default-scheduler  Successfully assigned azstackhci-operator-system/azstackhci-operator-controller-manager-7c59c9857c-fl2sr to moc-lzv7k4far4v
  Normal   Pulled     66s                kubelet            Container image "hybridaks.azurecr.io/azstackhci-operator:2.0.6" already present on machine
  Normal   Created    66s                kubelet            Created container manager
  Normal   Started    65s                kubelet            Started container manager
  Warning  Failed     65s                kubelet            Failed to pull image "gcr.io/kubebuilder/kube-rbac-proxy:v0.5.0": rpc error: code = Unknown desc = failed to pull and unpack image "gcr.io/kubebuilder/kube-rbac-proxy:v0.5.0": failed to resolve reference "gcr.io/kubebuilder/kube-rbac-proxy:v0.5.0": failed to do request: Head "https://gcr.io/v2/kubebuilder/kube-rbac-proxy/manifests/v0.5.0": read tcp <IP_ADDRESS>:59642-><IP_ADDRESS>:443: read: connection reset by peer
  Warning  Failed     52s                kubelet            Failed to pull image "gcr.io/kubebuilder/kube-rbac-proxy:v0.5.0": rpc error: code = Unknown desc = failed to pull and unpack image "gcr.io/kubebuilder/kube-rbac-proxy:v0.5.0": failed to resolve reference "gcr.io/kubebuilder/kube-rbac-proxy:v0.5.0": failed to do request: Head "https://gcr.io/v2/kubebuilder/kube-rbac-proxy/manifests/v0.5.0": read tcp <IP_ADDRESS>:55786-><IP_ADDRESS>:443: read: connection reset by peer
  Normal   Pulling    27s (x3 over 65s)  kubelet            Pulling image "gcr.io/kubebuilder/kube-rbac-proxy:v0.5.0"
  Warning  Failed     27s (x3 over 65s)  kubelet            Error: ErrImagePull
  Warning  Failed     27s                kubelet            Failed to pull image "gcr.io/kubebuilder/kube-rbac-proxy:v0.5.0": rpc error: code = Unknown desc = failed to pull and unpack image "gcr.io/kubebuilder/kube-rbac-proxy:v0.5.0": failed to resolve reference "gcr.io/kubebuilder/kube-rbac-proxy:v0.5.0": failed to do request: Head "https://gcr.io/v2/kubebuilder/kube-rbac-proxy/manifests/v0.5.0": read tcp <IP_ADDRESS>:55864-><IP_ADDRESS>:443: read: connection reset by peer
  Normal   BackOff    2s (x5 over 65s)   kubelet            Back-off pulling image "gcr.io/kubebuilder/kube-rbac-proxy:v0.5.0"
  Warning  Failed     2s (x5 over 65s)   kubelet            Error: ImagePullBackOff
PS C:\temp>

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: b82e60f9-ebed-4011-41b7-3e11a60322ff
Version Independent ID: 61535b85-bea3-f0b5-f562-fdd08293ed65
Content: VM provisioning through Azure portal on Azure Stack HCI - Azure Stack HCI
Content Source: azure-stack/hci/manage/azure-arc-enabled-virtual-machines.md
Service: azure-stack
Sub-service: azure-stack-hci
GitHub Login: @ksurjan
Microsoft Alias: ksurjan

@TroyMiller
Thanks for your feedback! We will investigate and update as appropriate.

Hi @ksurjan could you please take a look at this. Thanks

@ZmanKyle - is gcr.io now in the updated firewall requirements?

gcr.io has been added to the doc under firewall requirements section. The change will be reflected soon.

gcr.io was replaced by hybridaks.azurecr.io.

Thanks @ZmanKyle, #please-close


Handle exception when failing to expand a deploy version

An uncaught exception is raised when we have DeployEvents for an app but the git repository is missing, because it was never onboarded or it was removed. This rescues the exception (so the updater doesn't blow up) and notifies Honeybadger until we have a better solution.
This was happening whenever snapshotting DeployEvents, which happens in a couple of Repositories.
@FundingCircle/black-bat please review -- this issue is currently present on staging and development (if you use staging data), and is bound to happen on production.

@FundingCircle/black-bat added one more commit to handle cases where version is longer than 40 chars.

LGTM


Add a default icon to dropdown widget

Just like a checkbox have default check icon, dropdown needs its default icon too.

this has been implemented :)


[WIP/RFC] ecp5: 'Fix' transparent DRAMs by putting register on address

I'm not convinced that this is the best way to solve the problem, but I'm working on getting liteeth working with Yosys on the ECP5.
Migen generates a lot of "write through" memories thus:
reg [41:0] storage_4[0:63];
reg [5:0] memadr_5;
reg [5:0] memadr_6;
always @(posedge eth_rx_clk) begin
	if (ethmac_rx_cdc_wrport_we)
		storage_4[ethmac_rx_cdc_wrport_adr] <= ethmac_rx_cdc_wrport_dat_w;
	memadr_5 <= ethmac_rx_cdc_wrport_adr;
end

always @(posedge sys_clk) begin
	memadr_6 <= ethmac_rx_cdc_rdport_adr;
end

assign ethmac_rx_cdc_wrport_dat_r = storage_4[memadr_5];
assign ethmac_rx_cdc_rdport_dat_r = storage_4[memadr_6];

This is mapped to DRAM because it is too shallow/wide to be economically mapped to BRAM.
The liteeth core fails to work with Yosys unless one of the following is carried out

The threshold is changed such BRAM is used instead
DRAM is disabled altogether and logic is used instead
memory_bram.cc is patched to not generate the transparent "bypass" logic even if a port is supposed to be transparent

Indeed this small case
outreg_transp.zip shows some synthesis/simulation mismatches without this patch.
master:

patched:

This patch creates a new bram type and techmap to deal with this specifically for the ECP5. I'm not sure if this should really be looked at in a more generic way, or whether I'm barking up the wrong tree altogether here.
Incidentally, this patch gives significantly improved Fmax - from 95MHz to 108MHz.

The PR lgtm but..

Indeed this small case outreg_transp.zip shows some synthesis/simulation mismatches without this patch.

without having looked at the test case, shouldn't it just be less efficient without this patch? Why do we get a syn/sim mismatch?

The circuit after mapping is:

Creating this trace:

There seem to be a few problems here:

The new rather than old read address (in terms of the read clock domain) is used, meaning the first collision (read data should go from 9 to E) is not detected
The collision is detected for one write clock cycle too many, causing the spurious "8" to be read
Once the collision is over, the read value reverts to the previously read data in the output data rather than the new data, giving the "2"

Ah, now I get it! There are two different clocks. Sorry, bit slow today. :man_facepalming:
So I think that's a bug in memory_bram. I think we should not infer that bypass logic unless all the memory ports are driven by the same clock. Does this sound right?

Yes, that makes sense.
It seems like in the case of both make_outreg and make_transp, putting the register on the address should always be safe and can be done generically in memory_bram too.

Yes. Do you think you can patch memory_bram accordingly? (I know, the pass is a mess.. ;)

Superseded by #896


ci: autofix Dependabot commits

Temporary workaround for https://github.com/dependabot/dependabot-core/issues/2030.
Example: https://github.com/KaTeX/KaTeX/pull/2391

Codecov Report

Merging #2394 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master    #2394   +/-   ##
=======================================
  Coverage   93.97%   93.97%
=======================================
  Files          84       84
  Lines        5444     5444
  Branches      961      961
=======================================
  Hits         5116     5116
  Misses        297      297
  Partials       31       31

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 801feb0...a84def4. Read the comment docs.

@kevinbarabash Thank you for the review!


Validity pre-check for variable names to be introduced

Validity pre-check for variable names need to be introduced.
validity check of variable names

shall be defined as regular expression.
shall be configurable by means of parameter in constructor
shall be preconfigured with naming convention as per python: ^[a-zA-Z_][a-zA-Z0-9_]*$
pre-check shall be made before any other activity with the parameter

Goal is to have early error messages if the parameter contains not allowed characters.
Error message should be e.g.
Parameter name xyz is invalid. Expected format: <current_regexp>.
Out of this description generated code fragment:

class VariableNameChecker:
    def __init__(self, regex=r'^[a-zA-Z_][a-zA-Z0-9_]*$'):
        self.regex = regex

    def check_variable_name(self, variable_name):
        if re.match(self.regex, variable_name):
            return True
        else:
            print(f"Error: Parameter name '{variable_name}' is invalid. Expected format: '{self.regex}'")
            return False

# Example usage:
checker = VariableNameChecker()

# Valid variable name
checker.check_variable_name("my_variable")

# Invalid variable name
checker.check_variable_name("2_variable")

allows any key names that are allowed by JSON

Hi Son,
as discussed.
The idea is that jsonpreprocessor validates key names by default against JSON specification.
If used by testsuites-management, then you need to hand-over a new regexp which validates key names against RobotFramework core specification for variable names.
Thank you,
Thomas

Hello Thomas,
I pushed the new commit 4dc80cfc2b6a to check key names of jsonp file, this validation is based on the key name rules of JSON.
This will check is there any control characters in key names of jsonp file.
Thank you,
Son

Please also consider:
https://github.com/test-fullautomation/python-jsonpreprocessor/issues/262

I am confused. In the JsonPreprocessor code I cannot find the class VariableNameChecker mentioned above. Also in TestsuitesManagement I cannot find the possibility to overwrite the default regular expression by a regular expression for parameter names, that is specific for the TestsuitesManagement.
What does this mean? Is this part of the concept not wanted any more? Or not required any more? Does this mean that there are no differences between JsonPreprocessor requirements and TestsuitesManagement requirements w.r.t. parameter names?

What is the status of this CRQ?
I can do this:
"------------" : 123,
"param" : {"------------" : 456}

And I get:
{'------------': 123, 'param': {'------------': 456}}
If such a name is allowed, it should be possible to use this on the right hand side of the colon - to get access to the value.
But
"param" : ${------------}
causes
Error: 'Expression '${------------}' cannot be evaluated. Reason: A pair of curly brackets is empty or contains not allowed characters.'!
The same in quotes:
"param" : "${------------}"
works:
{'------------': 123, 'param': '123'}
What does this mean now: Shall such characters like minus characters be allowed inside key names or not?

See also:
https://github.com/test-fullautomation/python-jsonpreprocessor/issues/278

Hi Son,
Task is still valid.
Implementation is expected in jsonpreprocessor. Ticket is also here located.
Testsuitesmanagement shall handover regexp requirement as per Robot Framework.
We need to talk again about the requirement. Seems to be some confusion here.
Don't change for 0.11.n anymore. Rest we do in 0.12.n
Thank you,
Thomas

Hello @test-fullautomation,
After having the discussion with Holger, I totally agreed with Holger that we should define a naming convention for JPP, because we have the mechanism to allow users overwrite and get a parameter value with format ${...}[..][...].
Note: Currently, JSON allows all special characters in key names
Thank you,
Son

Hello Holger and Thomas,
Based on the above comment, I would suggest the naming convention for key names in JsonPreprocessor below:
Purpose: To establish a consistent and readable naming convention for key names in the JsonPreprocessor, excluding the special characters: ! @ # $ % ^ & ( ) = [ ] { } | ; : ' , ? ~ / \"
General Rules:
• Alphanumeric Characters: Use letters (a-z, A-Z) and digits (0-9).
• Underscore _: Allowed as a separator between words.
• Operator characters: Key names can contain the operator characters: +, -, and *
• Special Characters are not allowed: The following special characters are not allowed: ! @ # $ % ^ & ( ) = [ ] { } | ; : ' , ? ` ~ /
Could you please help me review this key name convention of JPP?
Thank you,
Son

Hi Son,
I agree to above rules for the default regexp for the naming convention check.
Thank you,
Thomas

Ready for sprint 0.13.0 [09.08.24](jsonpreprocessor / tsm)

Hi @namsonx ,
current hard-coded implementation is O.K. for 0.13.1.
0.13.2 need to have configurable VariableNameChecker as proposed in the issue description.
Thank you,
Thomas

The JsonPreprocessor accepts the Euro symbol:
   "param€1" : "value",
   "param2"  : ${param€1}

But should not. Because the Euro symbol is not a letter, not a digit and not one of the explicitly allowed special characters.
The question is: How to detect letters within the entire range of Unicode characters?
In internet I found the following solution (that requires the installation of an additional Python module 'regex'):
import regex as re

text = "こ れ は テ ス ト で す a b c ä Ü ß 1 2 3 € 𠼭"
matches = re.findall(r'\p{L}+', text)
print(matches)

Result:
['こ', 'れ', 'は', 'テ', 'ス', 'ト', 'で', 'す', 'a', 'b', 'c', 'ä', 'Ü', 'ß', '𠼭']
Maybe this solution can be used in JsonPreprocessor code.
References:

https://github.com/test-fullautomation/python-jsonpreprocessor/issues/356#issuecomment-2441463813
https://github.com/test-fullautomation/python-jsonpreprocessor/issues/206#issuecomment-2244241216


Navbar design

Navbar updated from design.

Codecov Report

Merging #130 into development will not change coverage.
The diff coverage is n/a.

@@             Coverage Diff              @@
##           development     #130   +/-   ##
============================================
  Coverage        86.81%   86.81%
============================================
  Files               20       20
  Lines              508      508
============================================
  Hits               441      441
  Misses              67       67

Impacted Files
Coverage Δ

src/navbar/index.js
100% <ø> (ø)
:arrow_up:

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 593fc92...da605c8. Read the comment docs.

@prasanna1211
Commit d38d270 is latest on navbar_design branch which has the bug in responsiveness at playground.


Use .gitignore as default for lint ignores

Current Behavior
Right now if .js/.ts/etc files are generated by tooling, they are included in lint config. This makes it difficult to read the files if editors are configured to show lint errors. It also will mess up the lint command, and do unnecessary work when formatting.
Desired Behavior
.gitignored files should be ignored for linting and formatting. It probably also makes sense to use user-provided files as overrides when present.
Suggested Solution
.gitignore should be used as the default for .eslintignore/.prettierignore. I see little reason to include files that won't ever be checked in.
These can be configured in the underlying tools: eslint and prettier.
People using IDEs would have to update their configuration to reflect this. For example, in VSCode, you'd want to set
{
  "prettier.ignorePath": ".gitignore",
  "eslint.lintTask.options": ". --ignore-path .gitignore"
}

Who does this impact? Who is this for?
This change is for people who generate .js/.ts/etc files with various tooling.
Describe alternatives you've considered
It's also possible to accomplish this by symlinking the .gitignore file to .eslintignore and .prettierignore, but it is not obvious that the files would update together, and overriding the behavior is unclear. I'm also not sure how that would work on Windows.
Additional context
ESLint allows multiple files supplied to the command to ignore them all. Rather than the .gitignore default/override solution I've proposed, it might be nice to have a .gitignore base/augmentation solution where the files in .gitignore are always ignored, and the user provided files add to those. This would require changing prettier and the prettier IDE integrations though, so it would require more work and package maintainer buy-in.

While I think this proposal makes sense for a default case, ESLint decided against making this the default case: https://github.com/eslint/eslint/issues/5848.
As such, changing ESLint's underlying behavior could be quite unexpected.

ESLint allows multiple files supplied to the command to ignore them all.

Did you mean multiple --ignore-paths? I haven't tested it myself, but my interpretation of the API is that you can only pass one in, since it says it will override the default .eslintignore if you do.
If this were to be added to TSDX, it really should use both files, otherwise it'd be very unexpected for .eslintignore to not be used for some reason.

It's also possible to accomplish this by symlinking the .gitignore file to .eslintignore and .prettierignore, but it is not obvious that the files would update together, and overriding the behavior is unclear.

It's listed as a workaround in the ESLint issue. I don't see why this wouldn't work.
Some other things:

TSDX is meant to be 0-config (or as little as possible for basic usage), the IDE changes go against this. Would be cool if eslintrc allowed configuring this but it doesn't seem to :confused:

I also think this would preclude any custom augmentation, due to the various downsides you mentioned. (It's possible for TSDX to make its own IDE plugins, but that typically causes more problems rather than less)

gitignore can be nested at any level of the file hierarchy, not just at root.

I actually misinterpreted the ESLint API. It doesn't appear as though it allows multiple ignore files.
It's probably fine to use symlinks, but I'm still not sure how they work on Windows because I don't have any Windows computers. Do you think symlinking is a good enough solution to recommend as a general solution for people who want to keep their .gitignore file in sync with the other ignore files?

@chrbala you can use --ignore-path flag in the ESLint CLI to use .gitignore:
eslint --ignore-path .gitignore
https://eslint.org/docs/user-guide/command-line-interface#ignore-path


Dropdown component: option with null value not shown in input when selected

Reproduction
https://formkit.link/e6d2ea00d0aae1c7e3d4a3e0078e98fe
Describe the bug
The label of a dropdown option with the value null doesn't show up when selected, but the value is set as you can see in the reproduction link. The same happens when an empty string '' or undefined is used instead of null as a value.
Environment
• OS: Mac
• Browser: Arc
• Version: 1.3

@KoenCa Yes! Totally fair thing to point out; it should probably be mentioned in the documentation, as it seems reasonable that assigning the value null when you have an option with the value null would show that option.
Essentially, we are considering "", undefined, and null as empty values.
So let's take this example: https://formkit.link/414348842dac6dd79cbbec819749ca9f, where we have an autocomplete with the value "Hello World" assigned to it. In this example, there are no options assigned to the autocomplete with the value "Hello World" but we still want to reflect in the UI that the autocomplete has a non-empty value (which I think is important). However, if we were to assign the value null, we would not want to make this assumption, that the autocomplete has a value, so we wouldn't want to reflect the value null in the UI (nor empty string, or undefined).
Another example of why we are ignoring these empty values is in instances where the autocomplete is assigned an option loader: https://formkit.link/9173c5f6821b72c635a3f566de0b13c0. In this example, the autocomplete is assigned the value null, but because it falls in the category of an empty value, we do not want to call the option loader (you can see that the loadMovie function is not called).
You might be wondering, "Well shouldn't undefined always be the default, and assigning anything other than undefined should be considered a valid value", I would agree with that. However, we have found developers are opinionated in that respect, and for instance assign null as the default value of all their inputs.
That is my reasoning for why the autocomplete works the way it does, but I'm happy to hear your thoughts.
(I was using the autocomplete in my examples; the dropdown works the same way)

Ok, I understand it works that way for the autocomplete. For the dropdown I would think it worked more like the normal select input, because I noticed this when I transformed some select inputs to dropdowns. These inputs are used to filter some data via a API endpoint and when the filter is null we don't pass it to the API call. null or undefined seem the most logical values to "reset" a filter. So if we want to use the dropdown with these filters we now have to use another "artificial" empty value to get some text to be shown in the input? Something like 'empty'? Not a big fan of this to be honest.
Would it be possible that FormKit only uses one of null or undefined as an "empty" value? So that users have a way to "reset" something. For example: undefined becomes the only "empty" value, then users can use null to reset something.

@KoenCa Yeah, your issue makes sense. I agree, having to use an arbitrary string like empty isn't ideal. Perhaps you could just use false in place of null as false is not considered an empty value.
Otherwise, here's a playground example I put together as a workaround to accept null as a valid value by using an input hook: https://formkit.link/9e1a815bb586e241ed778a40323236b8.

The problem is we have dropdown filters with 3 options with the values: null, false and true, so we can't use false as empty value for those. That input hook works, but have no idea how that inputStd prop really works. Looks a bit like magic to me and how sure can we be that this doesn't change in the future with an update?

@KoenCa Ah, gotcha. As for the input hook, inputStd is just an internal prop we set for normalizing values between single and multiple dropdowns/autocompletes/taglist, etc, and is also used a way for filtering out values we don't want to consider, null, undefined, "". This prop is very unlikely to change, but I understand the concern.
Perhaps it would be worth marking this issue as an enhancement, and allowing users to provide a prop, say empty-values, where you could assign an array of values you don't want to be considered as valid option values. What do you think about that? Also open to feedback on the name of the prop, perhaps empty-values isn't the most clear.

Thinking a bit more on this im not sure if this is something we should "formally" support via a prop, vs informally with an adhoc plugin. The reason here is FormKit has a canonical concept of "empty":
https://github.com/formkit/formkit/blob/master/packages/utils/src/index.ts#L167-L184
This includes "null" as a non-value. Granted, in our specific case here this is wrapped in an array, but Im concerned that if we have official props that allow things like null as values then it would bloat the rest of the package where lots of code relies on knowing whether something is actually empty or not.
Perhaps @KoenCa we can work on making a better solution for your use case via plugin or some other kind of fix.

Ok, in that case I guess we will go with an empty value of our own like 'empty' and handle that in the logic. To me that is the most obvious and simple solution instead of a plugin that uses more internal logic that isn't really wel documented.


core: add SystemFee and NetworkFee to transaction

closes #831

6e781b9ba6a9bcdb81fb295256f3fb4b6b182120 certainly deserves more explanation, it's a juicy one.


translate 1 file into ko: unknown and never

Unknown and Never

리뷰 부탁드려요!
@dvlprsh @guyeol @Bumkeyy
ref #910

LGTM


Fix typo in changelog

Checklist

[ ] Language changes are updated in man/adoc/bpftrace.adoc
[ ] User-visible and non-trivial changes updated in CHANGELOG.md
[ ] The new behaviour is covered by tests

Backport to 22.x branch too?

@danobi https://github.com/bpftrace/bpftrace/pull/3667


Add journal commands to CLI

Add journal commands to CLI as part of https://github.com/Alluxio/alluxio/issues/17522

alluxio-bot, merge this please


Update des_moines.json

Updated the URL, as the source path changes monthly.

There's something wrong with their query endpoint.

Wait, what?  In pyesridump, it sometimes redirects to the HTML query page, sometimes it downloads all the data.  I'm confused.

Re-run this please

Re-run this please

Didn't seem to help...

If you want to trigger another attempt, use "Re-run this please" like I did above.

Re-run this please

Thanks for the tip but wow it is not obvious that it's an actual instruction and not a personal request :)

Ha!  I hadn't even considered that!  You must have been very confused.

No kidding I am :) This is only my third day on github and wow it is a steep learning curve! Appreciate the help, though.

No problem, glad to be of assistance!  Just to save you some potential future embarrassment, that shortcut is only useful on this repo.

Good to know. Thanks again!


Firebase cloud  messaging from Server in IOS 11, Swift 4?

We are implementing server side remote notifications for device to device in IOS 11. For that first we created IOS app on Firebase, and configured cloud messaging details. Everything is done there and then. Now from there legacy server key is used at our own server, where we wrote scripts for sending remote notifications to different devices according to their Firebase token.
Notifications generation and disposal is successful in both the cases either trying is from Postman, or through programmatically from IOS device. We have tried our server both locally and on cloud.
When we send normal messages from Firebase console, it also works fine and we did receive remote notifications from there.
Every time we send notifications via server to Firebase and then to device with the help of APNs, we couldn't receive that remote notification.
Our App delegate looks like this.
 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions:    [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
      // Override point for customization after application launch.
      print("Application did finish launching")
      FirebaseApp.configure()
          // [END set_messaging_delegate]
        // Register for remote notifications. This shows a permission dialog on first run, to
        // show the dialog at a more appropriate time move this registration accordingly.
       // [START register_for_notifications]

        if #available(iOS 10.0, *) {
        // For iOS 10 display notification (sent via APNS)
        UNUserNotificationCenter.current().delegate = self

        let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
        UNUserNotificationCenter.current().requestAuthorization(
            options: authOptions,
            completionHandler: {_, _ in })

        // [START set_messaging_delegate]
        Messaging.messaging().delegate = self

    } else {
        let settings: UIUserNotificationSettings =
            UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
        application.registerUserNotificationSettings(settings)
    }

    application.registerForRemoteNotifications()

    // [END register_for_notifications]

    return true
    }

Further, we have things like this:
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
    print("APNs token retrieved: \(deviceToken)")
    Messaging.messaging().apnsToken = deviceToken

    print("Token is here   \(String(describing: Messaging.messaging().fcmToken))")
    print("Token is here   \(String(describing: Messaging.messaging().apnsToken))")

    if UserDefaults.standard.object(forKey: "FCM_Token") == nil
    {
        UserDefaults.standard.set(Messaging.messaging().fcmToken, forKey: "FCM_Token")
    }
    else
    {
        let fcmSavedToken = UserDefaults.standard.value(forKey: "FCM_Token") as! String
        if fcmSavedToken == Messaging.messaging().fcmToken
        {

        }
        else
        {
            UserDefaults.standard.set(Messaging.messaging().fcmToken, forKey: "FCM_Token")
        }

    }

    // With swizzling disabled you must set the APNs token here.
    // Messaging.messaging().apnsToken = deviceToken
  }

Notifications and Firebase Messaging Delegate functions are here:
  // [START ios_10_message_handling]
   @available(iOS 10, *)
  extension AppDelegate : UNUserNotificationCenterDelegate {

// Receive displayed notifications for iOS 10 devices.
func userNotificationCenter(_ center: UNUserNotificationCenter,
                            willPresent notification: UNNotification,
                            withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
    let userInfo = notification.request.content.userInfo

    // With swizzling disabled you must let Messaging know about the message, for Analytics
    // Messaging.messaging().appDidReceiveMessage(userInfo)
    // Print message ID.
    if let messageID = userInfo[gcmMessageIDKey] {
        print("Message ID: \(messageID)")
    }

    // Print full message.
    print(userInfo)

    // Change this to your preferred presentation option
    completionHandler([.alert, .badge, .sound])
}

func userNotificationCenter(_ center: UNUserNotificationCenter,
                            didReceive response: UNNotificationResponse,
                            withCompletionHandler completionHandler: @escaping () -> Void) {
    let userInfo = response.notification.request.content.userInfo
    // Print message ID.
    if let messageID = userInfo[gcmMessageIDKey] {
        print("Message ID: \(messageID)")
    }

    // Print full message.
    print(userInfo)

    completionHandler()
}

   }
  // [END ios_10_message_handling]

extension AppDelegate : MessagingDelegate {
// [START refresh_token]
func messaging(_ messaging: Messaging, didRefreshRegistrationToken fcmToken: String) {
    print("Firebase registration token: \(fcmToken)")
    print("Received Remote Message: 1\nCheck Out:\n")

}
// [END refresh_token]
// [START ios_10_data_message]
// Receive data messages on iOS 10+ directly from FCM (bypassing APNs) when the app is in the foreground.
// To enable direct data messages, you can set Messaging.messaging().shouldEstablishDirectChannel to true.
func messaging(_ messaging: Messaging, didReceive remoteMessage: MessagingRemoteMessage) {
    print("Received data message: \(remoteMessage.appData)")
    print("Received Remote Message: 2\nCheck Out:\n")
}

// Receive data message on iOS 10 devices while app is in the foreground.
func application(received remoteMessage: MessagingRemoteMessage) {
    print("Received Remote Message: 3\nCheck In:\n")
    debugPrint(remoteMessage.appData)
    print("Received Remote Message: 3\nCheck Out:\n")

 }
   // [END ios_10_data_message]
}

Finally we also have implemented remote notifications method:
// Remote Notification
// [START receive_message]
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any]) {
    // If you are receiving a notification message while your app is in the background,
    // this callback will not be fired till the user taps on the notification launching the application.
    // TODO: Handle data of notification
    // With swizzling disabled you must let Messaging know about the message, for Analytics
    // Messaging.messaging().appDidReceiveMessage(userInfo)
    // Print message ID.
    if let messageID = userInfo[gcmMessageIDKey] {
        print("Message ID: \(messageID)")
    }

    // Print full message.
    print(userInfo)
}

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any],

    fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
    // If you are receiving a notification message while your app is in the background,
    // this callback will not be fired till the user taps on the notification launching the application.
    // TODO: Handle data of notification
    // With swizzling disabled you must let Messaging know about the message, for Analytics
    // Messaging.messaging().appDidReceiveMessage(userInfo)
    // Print message ID.
    if let messageID = userInfo[gcmMessageIDKey] {
        print("Message ID: \(messageID)")
    }

    // Print full message.
    print(userInfo)
    print("Received Remote Message: 4\nCheck Out:\n")
    print("Main Remote Message: 4\nCheck Out:\n")

    completionHandler(UIBackgroundFetchResult.newData)
}

// [END receive_message]
func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
    print("Unable to register for remote notifications: \(error.localizedDescription)")
}

FCM token is generated by Firebase and is also set to  Messaging.messaging().apnsToken, in order to communicate with APNS.
Further this token is provided to our server for sending remote notification from the server with this token. When this token is provided to Firebase Console, it really sends remote notification and did receive by our app, but when the same token is used to send from our targeted server, message is sent successfully from the server, but couldn't received by our app.

If you're receiving notifications through FCM console then your client code is likely not the issue. What's the server payload you're trying to send?

@morganchen12 Thanks for replying me. I was really feeling problem in depth.
Here is my server side code:
In the Config.php my code is
<?php
	define('DB_USERNAME','root');
	define('DB_PASSWORD','');
	define('DB_NAME','fcm');
	define('DB_HOST','localhost');

	//defined a new constant for firebase api key
	define('Firebase Legacy Server Key');

In the file Firebase.php my code is
<?php

class Firebase {

    public function send($registration_ids, $message) {
        $fields = array(
            'registration_ids' => $registration_ids,
            'data' => $message,
        );
        return $this->sendPushNotification($fields);
    }

    /*
    * This function will make the actuall curl request to firebase server
    * and then the message is sent
    */
    private function sendPushNotification($fields) {

        //importing the constant files
        require_once 'Config.php';

        //firebase server url to send the curl request
        $url = 'https://fcm.googleapis.com/fcm/send';

        //building headers for the request
        $headers = array(
            'Authorization: key=' . FIREBASE_API_KEY,
            'Content-Type: application/json'
        );

        //Initializing curl to open a connection
        $ch = curl_init();

        //Setting the curl url
        curl_setopt($ch, CURLOPT_URL, $url);

        //setting the method as post
        curl_setopt($ch, CURLOPT_POST, true);

        //adding headers
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

        //disabling ssl support
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

        //adding the fields in json format
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));

        //finally executing the curl request
        $result = curl_exec($ch);
        if ($result === FALSE) {
            die('Curl failed: ' . curl_error($ch));
        }

        //Now close the connection
        curl_close($ch);

        //and return the result
        return $result;
    }
}

In the file Push.php my code is
<?php

class Push {
    //notification title
    private $title;

    //notification message
    private $message;

    //notification image url
    private $image;

    //initializing values in this constructor
    function __construct($title, $message, $image) {
         $this->title = $title;
         $this->message = $message;
         $this->image = $image;
    }

    //getting the push notification
    public function getPush() {
        $res = array();
        $res['data']['title'] = $this->title;
        $res['data']['message'] = $this->message;
        $res['data']['image'] = $this->image;
        return $res;
    }

}

And finally I'm doing this to send push notification to a single user, in the file sendSinglePush.php
<?php
//importing required files
require_once 'DbOperation.php';
require_once 'Firebase.php';
require_once 'Push.php';

$db = new DbOperation();

$response = array();

if($_SERVER['REQUEST_METHOD']=='POST'){
	//hecking the required params
	if(isset($_POST['title']) and isset($_POST['message']) and isset($_POST['email'])){

		//creating a new push
		$push = null;
		//first check if the push has an image with it
		if(isset($_POST['image'])){
			$push = new Push(
					$_POST['title'],
					$_POST['message'],
					$_POST['image']
				);
		}else{
			//if the push don't have an image give null in place of image
			$push = new Push(
					$_POST['title'],
					$_POST['message'],
					null
				);
		}

		//getting the push from push object
		$mPushNotification = $push->getPush();

		//getting the token from database object
		$devicetoken = $db->getTokenByEmail($_POST['email']);

		//creating firebase class object
		$firebase = new Firebase();

		//sending push notification and displaying result
		echo $firebase->send($devicetoken, $mPushNotification);
	}else{
		$response['error']=true;
		$response['message']='Parameters missing';
	}
}else{
	$response['error']=true;
	$response['message']='Invalid request';
}

echo json_encode($response);

My server response comes the following way:
{
    "multicast_id":<PHONE_NUMBER>600150616,
    "success": 1,
    "failure": 0,
    "canonical_ids": 0,
    "results": [
        {
            "message_id": "0:1508391551307562%8929e6c1f9fd7ecd"
        }
    ]
}

In the legacy server key, when I give this from the console of an Android App, it works very fine, and the notifications appear on the device. But in case of putting legacy server key of an Firebase Console IOS app, it gives the response as above, which is indeed success, but couldn't show notification to my device.

What's the size of the images you're sending? APNs has a small limit on the size of messages that can be sent, so it's possible if you're sending somewhat large images your messages will not be delivered by APNs.

It's not the image, actually I am sending an image URL, that would be loaded on the client side. For Android, messages with and without URL, are successfully delivered.
In case of IOS I've only tried message with a title and message, but bot sending URL.
Like Message Title: "Asim's Message"
Message: "Check out my message."
What do you think of the Server Key: I'm putting Legacy server key.

I'm not putting Web API Key.

@puf I/ve seen your recommendations and featuring activities on stack overflow.
Please help me out here.

@iamasimkhan try sending directly through APNs. If it succeeds, then we can be sure that there's an issue in your FCM setup.
You should migrate to the new server key if you can, though the old one should continue to work.

closing due to inactivity, will reopen if there are more responses.

Have you tried sending directly through APNS?

Yes I tried directly form firebase console, and it works, but not form the server(BackEnd).
Here is a question I posted in Stack but din't get answer
https://stackoverflow.com/questions/50315330/firebase-notification-in-ios

@Prashanna7
Yes the same situation happened at time when I triggered this GitHub query. Then literally I got the solved by the time.
This happens
      function sendPushNotification($fields)
        {

        // //importing the constant files
        // require_once '../config/database.php';
        // $db = new Database();

        //firebase server url to send the curl request
        $url = 'https://fcm.googleapis.com/fcm/send';

        //building headers for the request
        $headers = array('Authorization: key=YOUR_KEY' , 'Content-Type: application/json');

        //Initializing curl to open a connection
        $ch = curl_init();
              //Setting the curl url
        curl_setopt($ch, CURLOPT_URL, $url);

        //setting the method as post
        curl_setopt($ch, CURLOPT_POST, true);

        //adding headers
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

        //disabling ssl support
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

        //adding the fields in json format

        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));

        //finally executing the curl request
        $result = curl_exec($ch);
        if ($result === FALSE)
        {
            require_once 'firebase-response-model/model.php';
            // Response From FCM
            $returnStatus = new Response();
            $returnStatus->multicast_id = "";
            $returnStatus->success = 0;
            $returnStatus->failure = 1;
            $returnStatus->canonical_ids = "";

            $results = new ResponseResult();
            $results->message_id = "There is no Successfull Message Sent.";
            $results->error = "Curl failed:  ". curl_error($ch);

            $returnStatus->results = $results;

            return json_encode($returnStatus);
        }

        //Now close the connection
        curl_close($ch);

        //and return the result
        return $result;
    }

Now you should provide the $fields value in the same manner as explained by Google Firebase in the official Documentation here.
https://firebase.google.com/docs/cloud-messaging/http-server-ref#notification-payload-support
Let us define a dummy structure for $fields.
   $fields = array(
            'to' => YOUR_DEVICE_TOKEN,
            'priority' => 'high',
            'notification' => $notification,
            'content_available'=> true,
            'data' => $message
        );

Where $message and $notification are as below.
$notification = array('title' =>'Title' , 'text' =>'Hello', 'sound' => 'default', 'badge' => '1');
$message = array();

// Completing Details :: Finally Making Array for sending
$message['id'] = '1';
$message['name'] =  'Ali';
$message['phone'] = '03344823832';
$message['address'] = 'Lahore, Pakistan.';


Add pre-sequence acquistion hook option

for changing hardware in between successive sequences

This actually isnt needed as it can be accomplished by pre and post hardware hooks


Students cannot get access and there is no clear instruction on what to do for them

When students attempt to join the Utrecht University organization, they get an "access denied" error. Is this intentional?

Indeed they cannot become a member. This is for this moment intentional because the scope of the project is Research, and we currently don't want to allow all students to become a member. We understand that in some cases it would be desirable to have students as member, but unfortunately this is not technically possible.
Students can however be invited as external collaborators to repositories:
https://github.com/UtrechtUniversity/getting-started#inviting-external-collaborators
The organization readme also mentions that students cannot become a member of the organization.
The error message is unfortunately rather unclear, but this is something we cannot do anything about.
Any ideas to communicate this more clearly are welcome!

While I understand the current position and reasons, I think in the long term we should search for ways to allow students to contribute under the Utrecht University banner that is more intuitive than considering them as external collaborators. Papers and thesis works of students equally much can have interesting code as other researchers, and maybe in some cases the code can be very useful for downstream applications for other researchers. Having it be discoverable under Utrecht University would be a nice long term goal.
I'd also be happy to hear about your ideas if you do not think that this is a good idea down the line :)


Freecam bug

Version channel
Stable (Default)
Loader version
251
What part of Adonis is this related to?
Command
What happened?
Freecam bug
Camera problems
If we try use :freecam thats not form but if we use Shift+P its work but your camera is so speed, or if you wanna exit with freecam you need press it 2x time and your fov have been change or if you use :res me thats not visible your cursour and chat have been invisible.
Game
I use R6 model with default camera mode but i have this error in 3 other games

Video: https://youtu.be/Svaxrm4QVa0
Relevant log output
RunService: UnbindFromRenderStep removed different functions with same reference name Freecam 3 times.
value of type nil cannot be converted to a number

Stack Begin
Script 'Players. zabujca0. PlayerGui. Freecam. FreecamScript', Line 397 - function Pop
Script 'Players. zabujca0. PlayerGui. Freecam. FreecamScript', Line 443 - function StopFreecam
Script 'Players. zabujca0. PlayerGui. Freecam. FreecamScript', Line 453 - function ToggleFreecam
Script 'Players. zabujca0. PlayerGui. Freecam. FreecamScript', Line 466 - function CheckMacro
Script 'Players. zabujca0. PlayerGui. Freecam. FreecamScript', Line 472 - function HandleActivationInput
Stack End
Unable to assign property CameraType. EnumItem, number, or string expected, got nil
Stack Begin
Script 'Players. zabujca0. PlayerGui. Freecam. FreecamScript', Line 400 - function Pop
Script 'Players. zabujca0. PlayerGui. Freecam. FreecamScript', Line 443 - function StopFreecam
Script 'Players. zabujca0. PlayerGui. Freecam. FreecamScript', Line 453 - function ToggleFreecam
Script 'Players. zabujca0. PlayerGui. Freecam. FreecamScript', Line 466 - function CheckMacro
Script 'Players. zabujca0. PlayerGui. Freecam. FreecamScript', Line 472 - function HandleActivationInput
Stack End

ContextActionService: Unexpected error while invoking callback: Unable to assign property CameraType. EnumItem, number, or string expected, got nil

roblox broke freecam

nothing we can do about it


need user feedback on downloading/uploading docs and videos

see https://github.com/vector-im/vector-ios/issues/588
depends on https://github.com/vector-im/vector-android/issues/478


ClickHouse database support

Thank you kindly for your cool tool
Could you add ClickHouse database support?
ClickHouse is blazing fast OLAP Columnar database,
look https://clickhouse.com/docs/en/development/integrating_rust_libraries for details

Hello @Slach thank you for the feature request.  I took a quick look at the clickhouse driver and they do not currently appear to support dynamic querying: https://github.com/ClickHouse/clickhouse-rs/issues/53 or execution: https://github.com/ClickHouse/clickhouse-rs/issues/74
If/when they update their driver to support this capability, it would be pretty easy to add support to rsql.


[Bug report] Line numbers do not match code

Bug report
Description

When using a code snippet in markdown, column with the line numbers on the left does not match the code block. This can be observed here: https://vuepress2.netlify.app/reference/default-theme/config.html#sidebar
Steps to reproduce

Use a code block, i.e.
// code here

Expected behavior
The line numbers are aligned with the code.
Screenshot

Environment info

Browser: Chrome and FF, but it's worse on Chrome

It looks good here.

Please provide more context, e.g. OS, Browser version, etc.

$ uname -a
Linux steffens-pc 4.19.0-16-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64 GNU/Linux
$ google-chrome --version
Google Chrome 90.0.4430.93
$ firefox --version
Mozilla Firefox 78.10.0esr

It works well on Android 10 (Chrome).

Could it be related to the fonts that are installed on the system?

That might be the reason.
Here's the related styles. We may need to provide a fallback for linux.
https://github.com/vuepress/vuepress-next/blob/e971d6aa216102befaa387e062d49b3632fe579c/packages/%40vuepress/theme-default/src/client/styles/code.scss#L156-L159
I don't hava a linux pc. Could you help for this?

@meteorlxy I opened the PR #125


[Open311ServiceRequest] 'service_name' should not be part of this datamodel

Datamodel Open311ServiceType represents a "service type" (a type of issue) and it has, amongs other, attributes "service_code" (a code that identifies a "service type", i.e. 1234) and a "service_name" with a string representation of that "service type"(i.e. "pothole on the street").
Open311ServiceRequest datamodel represents an issue (i.e 'my street has a big hole on the tar-mat '), which is from a specific "service type" (i.e.  1234 - "pothole on the street").
An entity of Open311ServiceRequest is linked to a Open311ServiceType, via  its attribute "service_type", but it has also a 'service_name'.
It doesn't make sense for Open311ServiceRequest to have this 'service_name', since this information is accessible via the linkage provided by the "service_code" to a Open311ServiceType.
In facto, according to the API documentation for open311'a GeoReport_v2,  when calling a "POST Service Request", 'service_name' is neither in the required parameters nor the optional ones.
So, i believe this should be removed.

Could you confirm version of the specification you are referring to? I assume you mean http://wiki.open311.org/GeoReport_v2
Given that the specification is a living document, it is entirely possible that the requirement for including service_name has been removed at some point. In which case the FIWARE model will need to re-align.

Thats correct.
I was specifically mentioning this[1].
One possible reason for the existence of the field in Open311ServiceRequest in the first place, is because the "Get Service Request" method[2] does include that field in the output.
But that doesn't mean it is included in its datamodel. As i previously mention, 'service_name' is neither in the required parameters nor the optional ones for the "POST Service Request", used to create the  Service Request.
If you're comfortable with this, i'll issue a pull request.
[1] http://wiki.open311.org/GeoReport_v2/#post-service-request
[2] http://wiki.open311.org/GeoReport_v2/#get-service-requests

@jaimeventura yes, please make a PR

move to this [repo][https://github.com/smart-data-models/dataModel.IssueTracking/tree/master)


[Docs] How-To/Develop is incomplete, confusing & not progressive

Doc issue
Describe the bug
Content/Order of conversation management in Docs/How-To/Develop is incomplete/ confusing/not progressive
Additional context
Many concepts in bots are new, so these concepts need to be introduced so each concept builds on prior concepts to help developers build a mental model.
Here is a link to doc being referred in the issue:
https://docs.microsoft.com/en-us/azure/bot-service/bot-builder-send-welcome-message?view=azure-bot-service-4.0&tabs=csharp%2Ccsharpmulti%2Ccsharpwelcomeback
[bug]

I'll be investigating this


Flink Batch Runner: optimize GBK translation for non-merging windows.

https://issues.apache.org/jira/browse/BEAM-8848
dependes on https://github.com/apache/beam/pull/11857

Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily:

[ ] Choose reviewer(s) and mention them in a comment (R: @username).
[ ] Format the pull request title like [BEAM-XXX] Fixes bug in ApproximateQuantiles, where you replace BEAM-XXX with the appropriate JIRA issue, if applicable. This will automatically link the pull request to the issue.
[ ] Update CHANGES.md with noteworthy changes.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

See the Contributor Guide for more tips on how to make review process smoother.

Run Flink ValidatesRunner

Run Flink ValidatesRunner


Doc note about interactivity with date fields.

Context
When setting interactivity on date columns, the grid.json doesn't return any value. It's a known bug and won't be fixed.
The workaround at CARTO.js level is to modify the SQL sentence to cast the data as in
"to_char(start_date, 'YYYY-MM-DD') as start_date"

Task
Reflect all this on the reference to aware the developers about this on advance.

@ivanmalagon Could you please document this? That's a pretty confusing behavior


Documentation mentions old name for dependency

Expected Behaviour
The docs say that you need to install Android Support Repository version 20 or higher. When I look in the Android SDK, I expect to find this dependency listed.
Actual Behaviour
This package no longer appears int he Android SDK.
Reproduce Scenario (including but not limited to)
Open your SDK Manager, refresh, and look for Android Support Repository under Extras. It's not there.
Steps to Reproduce
See above.
I'm only opening this issue so that I can link to it in my 1 line pull request. Thx!

@peteonrails thanks! I merged your PR then added a bit to refer to the old name as per @fredgalvao suggestion.

+1 Yes good idea @fredgalvao, I was just coming back to make that update per your suggestion and saw that it has already been taken care of. Many thanks to all!


[CARBONDATA-1769] Change alterTableCompaction to support transfer tabeInfo

Change alterTableCompaction to support transfer tabeInfo
Be sure to do all of the following checklist to help us incorporate
your contribution quickly and easily:

[ ] Any interfaces changed?
No
[ ] Any backward compatibility impacted?
No
[ ] Document update required?
No
[ ] Testing done
No
[ ] For large changes, please consider breaking it into sub-tasks under an umbrella JIRA.
MR119

Build Success with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/1285/

SDV Build Success , Please check CI http://<IP_ADDRESS>:8080/job/ApacheSDVTests/1757/

LGTM


VMSS Flexible instance protection parity gap closed

Updated the orchestration mode and instance protection files to reflect the closing of parity gap.

@ju-shim @fitzgeraldsteele - can one of you sign off if this is ready to merge?
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

#Sign-off
#signoff
I can never remember which one it is 🙂
Jerry
Steele
Microsoft
senior program manager
425.421.2566

From: Jak Koke @.>
Sent: Wednesday, January 17, 2024 2:23 PM
To: MicrosoftDocs/azure-docs @.>
Cc: Jerry Steele @.>; Mention @.>
Subject: Re: [MicrosoftDocs/azure-docs] VMSS Flexible instance protection parity gap closed (PR #118946)
@ju-shimhttps://github.com/ju-shim @fitzgeraldsteelehttps://github.com/fitzgeraldsteele - can one of you sign off if this is ready to merge?
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-teamhttps://github.com/orgs/MicrosoftDocs/teams/public-repo-pr-review-team
—
Reply to this email directly, view it on GitHubhttps://github.com/MicrosoftDocs/azure-docs/pull/118946#issuecomment-1897131038, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AABGQSE557V4FUT4LDHL25TYPBFPHAVCNFSM6AAAAABB67UWTSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQOJXGEZTCMBTHA.
You are receiving this because you were mentioned.Message ID: @.***>


upgrade ops man task failing on govc import.ova

govc import.ova is failing with below message
`Running` govc import.ova -options=opsman_settings.json -name=OpsManager-1.9.3-201702240222 -k=true -u=VCENTER -ds=DS -dc=DC -pool=POOL  -folder=FOLDER /tmp/build/39dbd1bf/pivnet-opsmgr/pcf-vsphere-1.9.3.ova
./govc/govc_linux_amd64: no file specified

I think it is just to many options or that something is conflicting. As when I remove all but these options deploy begins to work correctly.
Running govc import.ova -options=opsman_settings.json -name=OpsManager-1.9.3-201702240222 -k=true  -folder=FOLDER /tmp/build/39dbd1bf/pivnet-opsmgr/pcf-vsphere-1.9.3.ova

[24-02-17 02:56:48] Uploading pivotal-ops-manager-disk1.vmdk... (28%, 16.5MiB/s)

After modifing
pcf-pipelines/tasks/deploy-opsman-vm/task.sh
upgrade finishes successully.
I have do not have pull request access but have added the mods to my forked repo bhudlemeyer/pcf-pipelines
on the update-deploy-opsman-vm branch.

Created pull request [https://github.com/c0-ops/pcf-pipelines/pull/5] to resolve error.

Hi @bhudlemeyer,
The upgrade-opsman-vsphere pipeline is currently being worked on, so we probably won't get around to pulling in your PR. It's switching to using a new method for creating the new VM, and won't be using govc at all.
I'll leave it open for now and close it when we have the update ready.

Ok no worries. I will continue to use the forked update until code is updated with the new deploy method.

I created a story to track this issue: https://www.pivotaltracker.com/story/show/145167975
We stopped working on replacing govc with cliaas to work on other pipelines.

Closing this as per https://github.com/pivotal-cf/pcf-pipelines/pull/5.


Cpp2IL Failing under Wine, Steam Proton, and OSes older than Windows 8 or Server 2012

Cpp2IL currently fails to run when the Game is running under Wine or Steam Proton.
Temporary Workarounds:
• Built-in switch for using Il2CppDumper instead. (Implemented in https://github.com/LavaGang/MelonLoader/commit/5bf2aa604a34cd66cb7a029f1f41e9aeffca9d9a and https://github.com/LavaGang/MelonLoader/commit/2bf7ffba0ed0fe2ad252999b7606bfcb24a58ff4)
• For Wine or Steam Proton manually following the instructions posted by Samboy on Discord as seen below.
Image for Reference of Manual Workaround:

Wine/Proton should be fixed.
OSes older than Windows 8 or Server 2012 still need to be tested.


Show date of uploaded pictures

It would be nice if EVMap displayed the date of upload when viewing pictures of a charger.
Some of the pictures are old and the site changed since they were taken. Some are new, but are from bad cameras, so they look like they're old.
I don't know what the back ends allow you to show, but at least the date would be nice. A commercial app I use shows a line of text at the bottom of the picture: "By . X months ago."
Some apps display this on the pictures, but they have comments and the date is displayed there. Not an option in this case, I think, since #277 is still not implemented?

GoingElectric unfortunately does not provide this information through their API, the date is only visible when editing the charger through their website.
For OpenChargeMap we can add it.


Feature: Unified Reporter

This is my first time writing Go code, please be gentle and suggestions welcome :)
Adds a Unified reporter which is the same as the local reporter but outputs in unified format.
Use Case: I want to use reviewdog as part of https://github.com/marketplace/actions/super-duper-linter but I want to handle the linter run, I just want reviewdog to take my completed output and provide me back it's formatted result from the EFM or built-in formats in a standard parseable format so I can serialize the results back and do some processing before punting it back to reviewdog to publish comments/notes to the PR.

[ ] Updated Unreleased section in CHANGELOG or it's not notable changes.

@haya14busa  tests appear to be failing due to lack of permissions for remote pull requests. Do you want to recreate this as a local PR?

Thank you for the PR, @JustinGrote!
Question/Clarification
Before going into the detailed review, I'd like to make sure I understand your use cases. Are you planning to run reviewdog twice with super-duper-linter and the first one is only for getting the formatted message?
<each linter run> => <reviewdog (1)> => <unified error format>
<unified error formats from each linter> => <reviwedog (2)> => GitHub review comment or Check API

In that case, I'd suggest you to use https://github.com/reviewdog/errorformat instead of using reviewdog for the first one.

I just want reviewdog to take my completed output and provide me back it's formatted result from the EFM

erroformat seems to be just what you need.
testing
A test is failing not because of the permission issue. You don't need to re-create a branch.
=== RUN   TestRun_unified_nofilter
##[error]    TestRun_unified_nofilter: main_test.go:138: got:
##[error]        ../../../../../../../path/to/file:2:1: [test] message1
##[error]        ../../../../../../../path/to/file:14:1: [test] message3
         want
##[error]        /path/to/file:2:1: [test] message1
##[error]        /path/to/file:14:1: [test] message3
--- FAIL: TestRun_unified_nofilter (0.00s)

You are right, errorformat does what I need, I didn't realize there was a separate executable available.


Use alternate Bezier derivative algorithm

Hey, cool work on this repo. I like the idea of a line integrals package that could be pulled in when needed.
I was looking at the derivative function for Bézier curves, and I noticed that you could take advantage of a simpler trick. You construct a new Bézier curve, one degree lower, whose coefficients are the first differences of those from the original, all multiplied by the original degree. This means you ought to be able to get rid of the constraint on degree.
I did some quick benchmarking with @btime and noticed a ~10% performance boost w.r.t. computation time on the first unit_circle call to quadgk in the tests. I tried out that unit_circle example, as well as the code with 1000 vertices instead of 361, although in practice I don’t know if Bézier curves of such high degree are a good idea.
Cheers, Luke

Thanks for checking out the package and for the inputs! I'll test this out as soon as I can.

I just incorporated this commit locally for testing. I’m not sure just yet what’s going on, but for me it seems to choke on the unit circle example from the README file, which is admittedly very high order. Can you check that one on your side to see if the behavior replicates?

Hmm, no the time is still similar on my end. I'm testing:
using DynamicQuantities
using LineIntegrals
using Meshes
using QuadGK
using Unitful
using Test
using BenchmarkTools

####################
# Benchmark Bezier #
####################
unit_circle = BezierCurve(
    [Point(cos(t), sin(t), 0.0) for t in range(0, 2pi, length=361)]
)
f(::Point{Dim,T}) where {Dim,T} = 1.0
@test isapprox(quadgk(f, unit_circle)[1], 2pi; atol=0.15)
@btime quadgk(f, unit_circle)

Is this the function to be looking at? If not I may be looking at noise here.
I should note that the derivative function in this PR constructs a new Bezier polynomial which when evaluated at t returns the derivative there. So whichever interface that repeatedly queries for the derivative would be better off if derivative were to return this new Bezier polynomial, and evaluate it as necessary, instead of computing the same coefficients repeatedly.

This derivative function isn't currently utilized by the integral or quadgk methods, so those tests won't exercise this function. For a minimum working example I'm using the following in a temp environment with only the two packages added:
using LineIntegrals
using Meshes

unit_circle = BezierCurve(
    [Point(cos(t), sin(t), 0.0) for t in range(0, 2pi, length=361)]
)

derivative(unit_circle, 0.25)

I just created a new branch #derivative with this commit applied for testing. I haven't fully waited it out yet, but this MWE seems to completely hang and slowly accrue memory.
julia> versioninfo()
Julia Version 1.10.0
Commit 3120989f39 (2023-12-25 18:01 UTC)
Build Info:
  Official https://julialang.org/ release
Platform Info:
  OS: Windows (x86_64-w64-mingw32)
  CPU: 32 × AMD Ryzen 9 3950X 16-Core Processor
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-15.0.7 (ORCJIT, znver2)
  Threads: 23 on 32 virtual cores
Environment:
  JULIA_NUM_THREADS = 16

Hmm interesting. I don't understand why this would accrue memory like that, which maybe points to some garbage collecting issue with the Bezier curve function from Meshes?
Either way, I'll push a commit to my branch soon demoing the derivative function as one which returns the derivative of the curve as a curve itself, and then evaluates this single derivative curve for the requested points.

For the integral method on Bézier curves, I recently figured out that I was getting tons of allocations due to the default method for parametrizing curves. The default is to use DeCasteljau’s algorithm which recursively defines curves of order N-1 until you reach a curve of order 1: so for high-order curves you wind up needing a ton of allocations to handle this.
In this case, though, I’m not really sure what was going on because I wasn’t getting a return. I would be surprised if constructing a single curve and evaluating a parametric point on it would cause an issue like this.

I haven't absolutely ruled out that there's something unexpected going on in my test environment, so if you're able to test the MWE above and see if the issue duplicates, that's probably a good first step.

Just a heads-up: I just pushed a fairly major/breaking update bringing the package to v0.7.0 that expands the scope to include surface and volume integrals on Meshes types. This derivative function remains unchanged and still isn’t called by any of the integral solvers, so it shouldn’t directly impact this PR.


Fix RhTrex Parser Workflow

Seems this got put in the wrong spot @gurnben if you can approve again when you have the chance!
Signed-off-by: Erin Murphy<EMAIL_ADDRESS>

/lgtm
/approve

/ok-to-test


Vector<float, 4> does not have member-wise division operator.

This should be added to the vector_4.h:
inline Vector<float, 4> operator/(const Vector<float, 4>& v) const {
    return Vector<float, 4>(simd4f_div(data_.simd, v.data_.simd));
}

This was fixed a while ago in https://github.com/google/mathfu/commit/6b4159fbf2159e598eb27a1ee8834af7c7f50fb7

Oh wait, nope you're right we're still missing that operator.

Ok I have a fix pending


Remove 'no offset -> is an extension' check

We have a builtin way to check if a field is an extension. There's
no reason to rely on this hack (which is no longer even true).

Deleting this PR as it's in the scope of my next PR.


[api] Fix logit outputs

Patch Description
@tbmihailov pointed out that our logits differ from the openai's, in that we (previously) started our logprobs with the first generated token, rather than including a sentinel null logprob and including the first token.
This PR fixes that so we are more consistent with OpenAI
Testing steps
So much manual testing.

hello @stephenroller i have question about this,
when i using huggingface model, is it require to fix or not?
Thanks

If you're using HF Transformers, then it's their own generation code.


v1.7 RC Basic Auth KV and Web UI

Do you want to request a feature or report a bug?
Bug
What did you do?
The old format for KV Basic Auth was
traefik/frontends/frontend1/basicauth/0 'user:password'
The new value is
traefik/frontends/frontend1/auth/basic/users/0 'user:password'
When I remove the old format and replace it with the new I do not get prompted for a password.
Traefik Dashboard does not show either format in the frontend details tab.
What did you expect to see?
I expected to see a password for the frontend and a value displayed on the details tab
What did you see instead?
Nothing.

Using Consul on Ubuntu 16.04
################################################################
# Global configuration
################################################################

# Enable debug mode
debug = true
logLevel = "WARN"

# EntryPoints are the ports that are open for Træfik to respond to.
defaultEntryPoints = ["http", "https"]
[entryPoints]
  [entryPoints.api]
    address = ":8081"
  [entryPoints.http]
  address = ":80"
    [entryPoints.http.redirect]
      entryPoint = "https"
  [entryPoints.https]
  address = ":443"
    [entryPoints.https.tls]

# Acme setting are used for letsencrypt to get the wildcard cert.
[acme]
email =<EMAIL_ADDRESS>storage = "traefik/acme/account"
caServer = "https://acme-v02.api.letsencrypt.org/directory"
entryPoint = "https"
  [acme.dnsChallenge]
  provider = "digitalocean" # DNS Provider name (cloudflare, OVH, gandi...)
  delayBeforeCheck = 0
[[acme.domains]]
  main = "*.example.com"

# Consul entry point settings, where Træfik looks for the KV store.
[consul]
  endpoint = "<IP_ADDRESS>:8500"
  watch = true
  prefix = "traefik"

[traefikLog]
  filePath = "/var/log/traefik/traefik.log"
[accessLog]
  filePath = "/var/log/traefik/access.log"

[api]
  entrypoint = "api"

# New
SITE='php7a'
consul kv put traefik/frontends/$SITE/backend php7a
consul kv put traefik/frontends/$SITE/entrypoints http,https
consul kv put traefik/frontends/$SITE/routes/route0/rule Host:$SITE.example.com
consul kv put traefik/frontends/$SITE/priority 100
consul kv put traefik/frontends/$SITE/passhostheader true
consul kv put traefik/frontends/$SITE/auth/basic/users/0 'user:password'

# Old
SITE='php7a'
consul kv put traefik/frontends/$SITE/backend php7a
consul kv put traefik/frontends/$SITE/entrypoints http,https
consul kv put traefik/frontends/$SITE/routes/route0/rule Host:$SITE.example.com
consul kv put traefik/frontends/$SITE/priority 100
consul kv put traefik/frontends/$SITE/passhostheader true
consul kv put traefik/frontends/$SITE/basicauth/0 'user:password'

If applicable, please paste the log output in DEBUG level (--logLevel=DEBUG switch)
time="2018-07-12T12:57:37-05:00" level=warning msg="Deprecated configuration found: /basicauth. Please use /auth/basic/.

Edited to remove real domains

I might be reading this wrong...I do not know the value of rootPath in these checks.
It seems to me the function hasDeprecatedBasicAuth is checking the whole store, not just the active frontend.
If so then basicAuth.Users = p.getList(rootPath, pathFrontendAuthBasicUsers) is never called and all frontends would need to be updated to prevent this.
Does it make since to check for the new format first, then fall back to the deprecated configuration?

the function  hasDeprecatedBasicAuth use a variable name rootPath.
This rootPath is the path to one frontend not to all the store.

Closed by #3615.

Closed by #3628.


How to use EventSource in redux-saga

Here is my code
function subSSE(eventSrc) {
  return eventChannel(emitter => {
    eventSrc.addEventListener('message', (data) => {
       emitter(data);
    });
    return () => {
        eventSrc.close();
    }
  });
}
function* sseConnect() {
  const path = .......
  const eventSrc = new EventSource(path);
  const channel = yield call(subSSE, eventSrc);
  while (true) {
      const action = yield take(channel);
      yield put(action);
  }
}
export default [
  takeEvery(SSE_CONNECT, sseConnect),
];

I got the errors like these
"uncaught at "rootSaga","at rootsaga at takeEvery

How to use eventSource in redux-saga

@panda919  Did you got any success on it, i am also facing same issue. Do let me know if you have any workaround for it.
Thanks


Revert "Change caching of CloudFoundry client with spaceId and username"

This reverts commit 44041eebb0cb15e6aebd280d7cc357cbf5fd6063.

Not working on XSA - throws NPE


Create charainfo.js

acc mek

It work
On Sun, Aug 7, 2022, 14:43 Fokus ID @.***> wrote:

Sudah di tes?
—
Reply to this email directly, view it on GitHub
https://github.com/Fokusdotid/Family-MD/pull/34#issuecomment-1207350712,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ANC3RZPZTMQKOIFQFTLOWWLVX5SKDANCNFSM55Y7KJSA
.
You are receiving this because you authored the thread.Message ID:
@.***>


Use libproxy gain WPAD/PAC support for free

Currently requests does figuring out of whether a proxy should be used for a given URL. WPAD/PAC files describe those requirements, so if requests were to support WPAD proxy descriptions it would need to also parse it and figure what proxy to use for what URL.
On the other hand requests could delegate that task to libproxy and clean up a bunch of code (and issues) from the project.

By the way since I'm interested I could help implementing it.

So Requests cannot easily use libproxy because it is a binary dependency. We therefore cannot vendor it, and so cannot unconditionally rely on it being present. I would be open to a series of patches that add support, but libproxy is also not (as far as I can see) downloadable from PyPI either.
All of this together suggests that adding optional libproxy support would provide minimal benefit: an overwhelming majority of users do not have access to libproxy, and we have no way to distribute it to them.
My suggestion, then, is that someone (anyone who wants to be helpful) starts distributing binary wheels of libproxy on PyPI. At that point, once there is a reliable distribution method, we can discuss how reasonable it is to have Requests migrate to use it. However, until that time it's just not practical for Requests to add that dependency.
Sorry!

I think pypac (https://pypac.readthedocs.io/en/latest/) is offering this functionality, correct ?
Should it be integrated / merged in some way to requests ?
The could allow a proxies="pac" kind of functionality out of the box.

Yeah seems like it should work. I'll see if I can get it to function at work.


fix -q doesn't work when use with 'unbound-control stats_shm'

Signed-off-by: eaglegai<EMAIL_ADDRESS>

Thanks for this, LGTM!


Remove "INSTALL_NAME_DIR lib" target property

The INSTALL_NAME_DIR property of a target specifies how a dynamic library should
be found on OS X.  If INSTALL_NAME_DIR is not specified the loader will search
relative to the standard search paths.  If specified it should either be
an absolute path or relative path prefixed with either @executable_path,
@load_path, or @rpath.  Specifying "lib" does not make sense here and
causes linking error as documented here:
http://answers.opencv.org/question/4134/cmake-install_name_tool-absolute-path-for-library-on-mac-osx/
and here
http://stackoverflow.com/questions/26978806/dyld-library-not-loaded-lib-libopencv-core-3-0-dylib-reason-image-not-found
This patch removes INSTALL_NAME_DIR everywhere it is set to "lib".
An alternate solution would be to set an absolute path like
"${CMAKE_INSTALL_PREFIX}/lib" or relative path like
<EMAIL_ADDRESS> However, if there is not specific need for
specifying a path, it is probably best left unset.
Fixes #6005

Thanks for problem report!
I'm not sure that current fix works properly on MacOSX.
How to reproduce a problem:
$ cd <build_dir with usual cmake>
$ cmake -DCMAKE_INSTALL_PREFIX=`pwd`/install .
$ rm -rf ./install; make install -j5
$ cd install
$ ./bin/opencv_annotation
dyld: Library not loaded: libopencv_highgui.2.4.dylib
  Referenced from: /build/install/./bin/opencv_annotation
  Reason: image not found
Trace/BPT trap: 5
$ otool -L ./bin/opencv_annotation
./bin/opencv_annotation:
	libopencv_highgui.2.4.dylib (compatibility version 2.4.0, current version 2.4.12)
	libopencv_imgproc.2.4.dylib (compatibility version 2.4.0, current version 2.4.12)
	libopencv_core.2.4.dylib (compatibility version 2.4.0, current version 2.4.12)
	/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.1.0)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1)
# ... to run you need this approach ...
$ DYLD_LIBRARY_PATH=`pwd`/lib ./bin/opencv_annotation
Usage: ./bin/opencv_annotation
  -images <folder_location> [example - /data/testimages/]
  -annotations <ouput_file> [example - /data/annotations.txt]

# ... without this fix it works partially also ...
$ otool -L ./bin/opencv_annotation
./bin/opencv_annotation:
	lib/libopencv_highgui.2.4.dylib (compatibility version 2.4.0, current version 2.4.12)
	lib/libopencv_imgproc.2.4.dylib (compatibility version 2.4.0, current version 2.4.12)
	lib/libopencv_core.2.4.dylib (compatibility version 2.4.0, current version 2.4.12)
	/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.1.0)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1)
$ ./bin/opencv_annotation
Usage: ./bin/opencv_annotation
  -images <folder_location> [example - /data/testimages/]
  -annotations <ouput_file> [example - /data/annotations.txt]
$ (cd bin; ./opencv_annotation)
dyld: Library not loaded: lib/libopencv_highgui.2.4.dylib
  Referenced from: /build/install/bin/./opencv_annotation
  Reason: image not found

I will check Linux systems later and propose some changes.

Thanks for taking a look at this.
Changes to INSTALL_NAME_DIR should not affect other platforms like Linux.  This is specific to OS X.
It is expected behavior when not using INSTALL_NAME_DIR that if you install to a non-standard location then you will need to provide a library path by DYLIB_LIBRARY_PATH or a similar mechanism to load the libraries.  The exception is if your current working directory happens to be the where the libraries are located.  By setting INSTALL_NAME_DIR to lib you still need to use DYLIB_LIBRARY_PATH unless your current working directory happens to be the install root (parent directory of lib).  There is no reason to expect that users would want to use either of these working directories under normal use, so the lib prefix doesn't help anything.
Setting INSTALL_NAME_DIR to lib can cause additional problems because it is non-standard.  In particular, if you build a Mac OS X application bundle that links to OpenCV and you use CMake's fixup_bundle utility to pull the OpenCV libraries into the bundle it will fail because it does not know how to deal with that lib prefix.  This use case is what triggered me to track down this issue.
I would be interested to know if there is a valid use case for the lib prefix, I can't think of one and I've talked to some of the CMake developers (I work at Kitware) and they don't know why lib would be used as a prefix either.
As pointed out in the commit message, there are other solutions.  You can set the prefix to an absolute path.  Then it will work from anywhere.  The downside is that it is now not relocatable.  You can't move those installed libraries to a new location or copy them to a different machine with a different path.  You could also make them relative to @rpath, but then anyone building an executable that links to OpenCV would have to specify the rpath when building their program.  There is no perfect solution, but I think any of the more standard solutions is better than a lib prefix.

Thanks for update!
I agreed with fix, current values is very strange. :+1:
Moreover there is CMAKE_INSTALL_NAME_DIR variable which allows to control this behavior more flexible.

+1 on this, hopefully it gets merged soon!
I would further suggest to prepend @rpath to the install name, like the official binaries of other libraries (Qt5 and TBB ) do.  I think OpenCV would have to make set option MACOSX_RPATH to on https://cmake.org/cmake/help/v3.0/prop_tgt/MACOSX_RPATH.html.
For any cmake project using OpenCV's imported targets, cmake would actually add OpenCV's lib dir to the rpath of any executable. Right now because of the /lib prefix, I can't even run any executable produced this way unless the libraries are in the linker's search path.
As for the executables  in OpenCV's "bin" directory, I would be curious to see what is produced by CMake / make / make instal if @rpath is included in the install name of the libraries.
(1) if the install name is left as it is at the moment (lib/libopencv_xxx.dylib), then the libraries are not relocatable at all, and executables linked against them will only run if DYLD_LIBRARY_PATH includes opencv's base install dir (or if calling executables from a directory that contains /lib/opencv_xxx.dylib)
(2) If the install name is left as "libopencv_xxx.dylib", then this requires the libraries to be found b in DYLD_LIBRARY_PATH.  This is totally fine if the libraries are installed in /opt/local or /usr/local, but they're not relocatable beyond this.
For options (1) and (2), utilities like CMake's fixup_bundle or Qt's macdeployqt  may not even be able to find the libraries at all.
For the executable's in OpenCV"s <install_dir>/bin, the more ideal way would be:

Library install names should include @rpath (as is becoming common place)
Executables should contain this dependency
Executables should add @executable_path/../lib to their path.

This would make the executables relocatable (as long as the entire install dir structure is preserved), as well as the libraries (the power of @rpath ).
I'll do some tests and maybe I can make a pull request to fix up the ability to run all the executables in bin .


Agda Translation Relation and Decision Procedure for UPLC ForceDelay phase

Need to add some additional items as per Phil W.


Bugfix: Getting non direct attribute name

This PR fixes the bug on lighterhtml of matching the attribute name correctly when interpolated values are introduced.
Example of code that does not work before the fix:
html`<div class="block__element${hasModifier ? '--modifier' : ''}"></div>`;

Forced the correct order of the attributes array on all browsers.
Implementation is based on the fact that all "attributes" exist in the parent node, so "indexOf" will not return indices from other nodes (children for example).

@WebReflection, just noticed this should be on domtagger - my bad. Will recreate the PR there :(