[BUG]:

Describe the bug
I am currently unable to reproduce the top-k SMILES metric MPN model results from the MolPAL paper using the code in this github repo.
Tables S1-S3 list the following %s: 59.6 +/- 2.3 (10k library), 68.8 +/- 1.0 (50k) library. My current runs repeatedly yield worse metrics: ~44 +/- 3.7 (10k library), and 64.8 +/- 1.7 (50k library). I haven't been able to run the HTS library yet, due to excessive compute time. However, these metrics differ noticeably from the manuscript.
I have confirmed that the molpal library/my conda environment reproduce the reported RF and NN results. This makes me suspect there could be something new to the current molpal MPN code driving the issue.
Example(s)
I have created shell scripts to run molpal using the MPN model over five runs, as performed in the paper. An example is shown below for the 10k library. An analogous script launches the runs using the 50k library.
rm -r ./molpal_10k/
rm -r ./our_runs/
mkdir our_runs

python run.py --config examples/config/Enamine10k_retrain.ini --metric greedy --init-size 0.01 --batch-sizes 0.01 --model mpn
mv molpal_10k/ our_runs/run1/

rm -r ./molpal_10k/
python run.py --config examples/config/Enamine10k_retrain.ini --metric greedy --init-size 0.01 --batch-sizes 0.01 --model mpn
mv molpal_10k/ our_runs/run2/

rm -r ./molpal_10k/
python run.py --config examples/config/Enamine10k_retrain.ini --metric greedy --init-size 0.01 --batch-sizes 0.01 --model mpn
mv molpal_10k/ our_runs/run3/

rm -r ./molpal_10k/
python run.py --config examples/config/Enamine10k_retrain.ini --metric greedy --init-size 0.01 --batch-sizes 0.01 --model mpn
mv molpal_10k/ our_runs/run4/

rm -r ./molpal_10k/
python run.py --config examples/config/Enamine10k_retrain.ini --metric greedy --init-size 0.01 --batch-sizes 0.01 --model mpn
mv molpal_10k/ our_runs/run5/

I am currently parsing the results using the fraction of top-k SMILES identified metric. Below is the script I am using to parse results.
import pandas as pd
import numpy as np

def compare(df1, df2):
    s1, s2 = list(df1.smiles), list(df2.smiles)[:100]
    dups = list( set(s1) & set(s2) )
    print('number of top scoring compounds found:', len(dups) )
    print('total number of ligands explored:', len(s1), len(set(list(s1) )) )
    print('number of unique ligands recorded in top:', len( list(set(s2))))
    print(' ')
    print(' ')
    return len(dups)

dfm = pd.read_csv('./data/Enamine10k_scores.csv.gz',index_col=None, compression='gzip')

files = ['./our_runs/run2/data/top_636_explored_iter_5.csv',\
         './our_runs/run3/data/top_636_explored_iter_5.csv', \
         './our_runs/run4/data/top_636_explored_iter_5.csv', \
         './our_runs/run5/data/top_636_explored_iter_5.csv',\
         './our_runs/run6/data/top_636_explored_iter_5.csv']

num=[]
for ff in files:
    df1 = pd.read_csv(ff,index_col=None)
    num+= [compare(df1, dfm)/100.]

num = np.array(num)
print("statistics:", np.mean(num), np.std(num) )

Here are some example outputs I have obtained
number of top scoring compounds found: 39
total number of ligands explored: 636 636
number of unique ligands recorded in top: 100

number of top scoring compounds found: 45
total number of ligands explored: 636 636
number of unique ligands recorded in top: 100

number of top scoring compounds found: 43
total number of ligands explored: 636 636
number of unique ligands recorded in top: 100

number of top scoring compounds found: 50
total number of ligands explored: 636 636
number of unique ligands recorded in top: 100

number of top scoring compounds found: 45
total number of ligands explored: 636 636
number of unique ligands recorded in top: 100

statistics: 0.44400000000000006 0.035552777669262355

I see a similar drop in performance for the 50k library, although closer to the reported stats in the paper.
number of top scoring compounds found: 334
total number of ligands explored: 3018 3018
number of unique ligands recorded in top: 500

number of top scoring compounds found: 323
total number of ligands explored: 3018 3018
number of unique ligands recorded in top: 500

number of top scoring compounds found: 325
total number of ligands explored: 3018 3018
number of unique ligands recorded in top: 500

number of top scoring compounds found: 309
total number of ligands explored: 3018 3018
number of unique ligands recorded in top: 500

number of top scoring compounds found: 328
total number of ligands explored: 3018 3018
number of unique ligands recorded in top: 500

statistics: 0.6476 0.016560193235587575

As mentioned, the code currently reproduces the RF and NN results. For example, I show the output from the 50k library when using the NN model.
number of top scoring compounds found: 347
total number of ligands explored: 3018 3018
number of unique ligands recorded in top: 500

number of top scoring compounds found: 341
total number of ligands explored: 3018 3018
number of unique ligands recorded in top: 500

number of top scoring compounds found: 346
total number of ligands explored: 3018 3018
number of unique ligands recorded in top: 500

number of top scoring compounds found: 361
total number of ligands explored: 3018 3018
number of unique ligands recorded in top: 500

number of top scoring compounds found: 352
total number of ligands explored: 3018 3018
number of unique ligands recorded in top: 500

statistics: 0.6988 0.01354104870384859

This matches the 70% reported in the paper almost exactly, whereas the MPN model is off by a statistically significant amount.
Expected behavior
My current understanding of the Molpal library is that the MPN runs should reproduce the statistics reported in tables S1-S3 of the paper.
Screenshots
If applicable, add screenshots to help explain your problem.
Environment

python version - python 3.8.13
package versions:

Package                      Version
---------------------------- ---------
absl-py                      1.1.0
aiohttp                      3.8.1
aiohttp-cors                 0.7.0
aiosignal                    1.2.0
astunparse                   1.6.3
async-timeout                4.0.2
attrs                        21.4.0
blessed                      1.19.1
cachetools                   5.2.0
certifi                      2022.6.15
charset-normalizer           2.0.12
click                        8.0.4
colorama                     0.4.4
colorful                     0.5.4
ConfigArgParse               1.5.3
cycler                       0.11.0
distlib                      0.3.4
filelock                     3.7.1
flatbuffers                  1.12
fonttools                    4.33.3
frozenlist                   1.3.0
fsspec                       2022.5.0
gast                         0.4.0
google-api-core              2.8.1
google-auth                  2.7.0
google-auth-oauthlib         0.4.6
google-pasta                 0.2.0
googleapis-common-protos     1.56.2
gpustat                      1.0.0b1
greenlet                     1.1.2
grpcio                       1.43.0
h5py                         3.7.0
idna                         3.3
importlib-metadata           4.11.4
importlib-resources          5.7.1
joblib                       1.1.0
jsonschema                   4.6.0
keras                        2.9.0
Keras-Preprocessing          1.1.2
kiwisolver                   1.4.2
libclang                     14.0.1
Markdown                     3.3.7
matplotlib                   3.5.2
msgpack                      1.0.4
multidict                    6.0.2
munkres                      1.1.4
numpy                        1.22.4
nvidia-ml-py3                7.352.0
oauthlib                     3.2.0
opencensus                   0.9.0
opencensus-context           0.1.2
OpenMM                       7.7.0
opt-einsum                   3.3.0
packaging                    21.3
pandas                       1.4.2
pdbfixer                     1.8.1
Pillow                       9.1.1
pip                          22.1.2
platformdirs                 2.5.2
prometheus-client            0.13.1
protobuf                     3.19.4
psutil                       5.9.1
py-spy                       0.3.12
pyasn1                       0.4.8
pyasn1-modules               0.2.8
pycairo                      1.21.0
pyDeprecate                  0.3.2
pyparsing                    3.0.9
pyrsistent                   0.18.1
pyscreener                   1.2.2
python-dateutil              2.8.2
pytorch-lightning            1.6.4
pytz                         2022.1
PyYAML                       6.0
ray                          1.13.0
reportlab                    3.5.68
requests                     2.28.0
requests-oauthlib            1.3.1
rsa                          4.8
scikit-learn                 1.1.1
scipy                        1.8.1
setuptools                   62.3.3
six                          1.16.0
smart-open                   6.0.0
SQLAlchemy                   1.4.37
tabulate                     0.8.9
tensorboard                  2.9.1
tensorboard-data-server      0.6.1
tensorboard-plugin-wit       1.8.1
tensorboardX                 2.5.1
tensorflow                   2.9.1
tensorflow-addons            0.17.1
tensorflow-estimator         2.9.0
tensorflow-io-gcs-filesystem 0.26.0
termcolor                    1.1.0
threadpoolctl                3.1.0
torch                        1.11.0
torchmetrics                 0.9.1
tqdm                         4.64.0
typeguard                    2.13.3
typing_extensions            4.2.0
unicodedata2                 14.0.0
urllib3                      1.26.9
virtualenv                   20.14.1
wcwidth                      0.2.5
Werkzeug                     2.1.2
wheel                        0.37.1
wrapt                        1.14.1
yarl                         1.7.2
zipp                         3.8.0

OS - linux

Checklist

[ ] all dependencies are satisifed: conda list shows the packages listed in the README
I believe so.
[ ] the unit tests are working: pytest -v reports no errors
I do see some errors here, but they don't appear relevant. I can import rdkit without an issue.

_____________________________________________________________________________________________________________ ERROR collecting tests/test_acquirer.py ______________________________________________________________________________________________________________
ImportError while importing test module '/EBS/MOLPAL_TESTS/molpal_ffn_50k/tests/test_acquirer.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/home/ubuntu/anaconda3/lib/python3.7/importlib/__init__.py:127: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
tests/test_acquirer.py:8: in <module>
    from molpal.acquirer import Acquirer
molpal/__init__.py:1: in <module>
    from .explorer import Explorer
molpal/explorer.py:13: in <module>
    from molpal import acquirer, featurizer, models, objectives, pools
molpal/featurizer.py:10: in <module>
    import rdkit.Chem.rdMolDescriptors as rdmd
E   ModuleNotFoundError: No module named 'rdkit'
____________________________________________________________________________________________________________ ERROR collecting tests/test_featurizer.py _____________________________________________________________________________________________________________
ImportError while importing test module '/EBS/MOLPAL_TESTS/molpal_ffn_50k/tests/test_featurizer.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/home/ubuntu/anaconda3/lib/python3.7/importlib/__init__.py:127: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
tests/test_featurizer.py:6: in <module>
    from rdkit import Chem
E   ModuleNotFoundError: No module named 'rdkit'
______________________________________________________________________________________________________________ ERROR collecting tests/test_lookup.py _______________________________________________________________________________________________________________
ImportError while importing test module '/EBS/MOLPAL_TESTS/molpal_ffn_50k/tests/test_lookup.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/home/ubuntu/anaconda3/lib/python3.7/importlib/__init__.py:127: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
tests/test_lookup.py:10: in <module>
    from molpal.objectives.lookup import LookupObjective
molpal/__init__.py:1: in <module>
    from .explorer import Explorer
molpal/explorer.py:13: in <module>
    from molpal import acquirer, featurizer, models, objectives, pools
molpal/featurizer.py:10: in <module>
    import rdkit.Chem.rdMolDescriptors as rdmd
E   ModuleNotFoundError: No module named 'rdkit'
_______________________________________________________________________________________________________________ ERROR collecting tests/test_pool.py ________________________________________________________________________________________________________________
ImportError while importing test module '/EBS/MOLPAL_TESTS/molpal_ffn_50k/tests/test_pool.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/home/ubuntu/anaconda3/lib/python3.7/importlib/__init__.py:127: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
tests/test_pool.py:4: in <module>
    from molpal.pools.base import MoleculePool
molpal/__init__.py:1: in <module>
    from .explorer import Explorer
molpal/explorer.py:13: in <module>
    from molpal import acquirer, featurizer, models, objectives, pools
molpal/featurizer.py:10: in <module>
    import rdkit.Chem.rdMolDescriptors as rdmd
E   ModuleNotFoundError: No module named 'rdkit'

Additional context
Add any other context about the problem here.

Thanks for the detailed problem description! I believe your issue is in your compare function. Specifically, you only take the first 100 SMILES of the true dataframe, but that CSV of the true scores isn’t sorted so those first 100 SMILES aren’t actually the top-100. Can you confirm this to be the case?

Thank you for the fast response, David. I believe the issue is more subtle than that. Interestingly, the library isn't ranked as you mentioned, but is pretty close. As my RF and NN results were pretty close to the paper, despite not having sorted the library, I checked the kendalltau.
import pandas as pd
import os
import numpy as np
from scipy.stats import kendalltau

dfm = pd.read_csv('./data/Enamine10k_scores.csv.gz',index_col=None, compression='gzip')
dfm['index1'] = dfm.index

#====sort library by score. scores are negative, so ascending is OK.
dfm.sort_values(by=['score'],inplace=True, ignore_index=True)
dfm['index2'] = dfm.index
scores1 = np.array(list(dfm.index1))
scores2 = np.array(list(dfm.index2))

print('how well is the originall library ranked:', kendalltau(scores1,scores2))

how well is the original library ranked: KendalltauResult(correlation=0.9525646115743105, pvalue=0.0)

I have been doing some digging into the mpnmodel.py code, and have noticed two things of potential relevance: (1) the training dataloader is not being shuffled, and (2) model checkpointing is not being used. I think (2) could be highly relevant for the smaller 10k/50k datasets. Here, the initial training dataset sizes are very small. I suspect training could be highly volatile - it is quite likely the best epoch could be early on in training, but the model is currently using the epoch 50 weights, regardless if the loss is shooting up.  I believe the molpal paper reports having used model checkpointing to produce its results, but this isn't implemented in the current code.
I tested the MPN molpal implementation as follows.

As is. I cloned the github repo, installed the conda environment, and performed the following

rm -r ./molpal_10k/
rm -r ./our_runs/
mkdir our_runs

python run.py --config examples/config/Enamine10k_retrain.ini --metric greedy --init-size 0.01 --batch-sizes 0.01 --model mpn
mv molpal_10k/ our_runs/run1/

rm -r ./molpal_10k/
python run.py --config examples/config/Enamine10k_retrain.ini --metric greedy --init-size 0.01 --batch-sizes 0.01 --model mpn
mv molpal_10k/ our_runs/run2/

rm -r ./molpal_10k/
python run.py --config examples/config/Enamine10k_retrain.ini --metric greedy --init-size 0.01 --batch-sizes 0.01 --model mpn
mv molpal_10k/ our_runs/run3/

rm -r ./molpal_10k/
python run.py --config examples/config/Enamine10k_retrain.ini --metric greedy --init-size 0.01 --batch-sizes 0.01 --model mpn
mv molpal_10k/ our_runs/run4/

rm -r ./molpal_10k/
python run.py --config examples/config/Enamine10k_retrain.ini --metric greedy --init-size 0.01 --batch-sizes 0.01 --model mpn
mv molpal_10k/ our_runs/run5/

I then post-processed the results with the following code.
import pandas as pd
import os
import numpy as np

def compare(df1, df2):
    s1, s2 = list(df1.smiles), list(df2.smiles)[:100]
    dups = list( set(s1) & set(s2) )
    print('number of top scoring compounds found:', len(dups) )
    print('total number of ligands explored:', len(s1), len(set(list(s1) )) )
    print('number of unique ligands recorded in top:', len( list(set(s2))))
    print(' ')
    print(' ')
    return len(dups)

dfm = pd.read_csv('./data/Enamine10k_scores.csv.gz',index_col=None, compression='gzip')
dfm.sort_values(by=['score'],inplace=True)

files = ['./our_runs/run1/data/top_636_explored_iter_5.csv',\
         './our_runs/run2/data/top_636_explored_iter_5.csv', \
         './our_runs/run3/data/top_636_explored_iter_5.csv', \
         './our_runs/run4/data/top_636_explored_iter_5.csv',\
         './our_runs/run5/data/top_636_explored_iter_5.csv']

num=[]
for ff in files:
    df1 = pd.read_csv(ff,index_col=None)
    num+= [compare(df1, dfm)/100.]

num = np.array(num)
print("statistics:", np.mean(num), np.std(num) )

This yields the following result which is significantly below the 59% reported in the paper.
number of top scoring compounds found: 51
total number of ligands explored: 636 636
number of unique ligands recorded in top: 100

number of top scoring compounds found: 40
total number of ligands explored: 636 636
number of unique ligands recorded in top: 100

number of top scoring compounds found: 45
total number of ligands explored: 636 636
number of unique ligands recorded in top: 100

number of top scoring compounds found: 41
total number of ligands explored: 636 636
number of unique ligands recorded in top: 100

number of top scoring compounds found: 50
total number of ligands explored: 636 636
number of unique ligands recorded in top: 100

statistics: 0.454 0.04498888751680797

with shuffling and checkpointing implemented. To test if shuffling and model checkpointing could be impacting the results, I needed to modify code in a couple of different places to get the folder name to the correct class, but the most important lines are here, and are implemented in the train function of the MPNN class in mpnmodel.py

      train_dataloader = MoleculeDataLoader(
            train_data, self.batch_size, self.ncpu, **shuffle=True**, pin_memory=False
        )

        callbacks = [
            EarlyStopping("val_loss", patience=10, mode="min"),mpnn.ptl.EpochAndStepProgressBar(),**ModelCheckpoint( monitor='val_loss',dirpath = self.p2_chkpt,filename='best_model')**  ]

        trainer = PlTrainer(
            logger=False,
            max_epochs=self.epochs,
            callbacks=callbacks,
            gpus=1 if self.use_gpu else 0,
            precision=self.precision,
            enable_model_summary=False,
            **enable_checkpointing=True**,
        )

I then reran the original experiment (running molpal five times, and gathering stats). This produces the following results.
number of top scoring compounds found: 56
total number of ligands explored: 636 636
number of unique ligands recorded in top: 100

number of top scoring compounds found: 53
total number of ligands explored: 636 636
number of unique ligands recorded in top: 100

number of top scoring compounds found: 59
total number of ligands explored: 636 636
number of unique ligands recorded in top: 100

number of top scoring compounds found: 52
total number of ligands explored: 636 636
number of unique ligands recorded in top: 100

number of top scoring compounds found: 48
total number of ligands explored: 636 636
number of unique ligands recorded in top: 100

statistics: 0.536 0.03720215047547655

To be double sure, I reran the experiment, except this time running molpal with shuffling/checkpointing ten times. This produced the following results.
number of top scoring compounds found: 54
total number of ligands explored: 636 636
number of unique ligands recorded in top: 100

number of top scoring compounds found: 57
total number of ligands explored: 636 636
number of unique ligands recorded in top: 100

number of top scoring compounds found: 55
total number of ligands explored: 636 636
number of unique ligands recorded in top: 100

number of top scoring compounds found: 58
total number of ligands explored: 636 636
number of unique ligands recorded in top: 100

number of top scoring compounds found: 48
total number of ligands explored: 636 636
number of unique ligands recorded in top: 100

number of top scoring compounds found: 55
total number of ligands explored: 636 636
number of unique ligands recorded in top: 100

number of top scoring compounds found: 50
total number of ligands explored: 636 636
number of unique ligands recorded in top: 100

number of top scoring compounds found: 56
total number of ligands explored: 636 636
number of unique ligands recorded in top: 100

number of top scoring compounds found: 52
total number of ligands explored: 636 636
number of unique ligands recorded in top: 100

statistics: 0.5388888888888889 0.031071403231354582

These results appear to improve upon the current version of molpal. However, they are still a bit below the numbers reported in the paper for the 10k screen. There could be other issues lurking as well.
David, would you be up for cloning the current molpal repo, running the mpn model as is against the 10k library, and letting me know if you get the same stats as I reported here (~0.45)?

What's are the results when you use the "scores" metric? There could be a bug, but one of the instabilities of the SMILES metric is that it's sensitive to data sorting. The 82nd through 114th scores in the true 10k dataset are all -9.5, meaning that there are nCr(33, 18) ways to get 100% performance on this metric. Of course, at analysis time, you can only evaluate one of these, and you might very well pick a set of 100 SMILES strings that don't line up with what you've acquired in a given run. I can't comment on how the pandas sorting is working relative to the original analysis scripts, but your analysis pipeline could very well cause a scenario that makes these numbers an apples-to-oranges comparison. That's why we went with the somewhat unexplainable "scores" metric for our results. Similarly, there are nCr(33, 18) ways to get 100% performance, but the analysis is invariant to which specific set MolPAL identifies at runtime

Thank you for your response, David. I hadn't considered the variations in the sort.
I have confirmed that this does not seem to be driving the issue. I did a fresh run over the weekend using the MPN model and the 10k, 50k, and HTS dataset. The smaller datasets seem to have issues, with the larger set agreeing well with the paper. This is the same trend I observed previously.
I put together the following script to parse the results using the paper method, as you suggested. Analogous scripts were used for the 50k and HTS dataset.
from pathlib import Path
import sys

from matplotlib import pyplot as plt, ticker
from matplotlib.axes import Axes
import numpy as np
from scripts.experiment import Experiment
from scripts.utils import build_true_dict, extract_smis

SIZE = 2.1e6
k = 100

d_smi_score = build_true_dict("./data/Enamine10k_scores.csv.gz")
smis = extract_smis("./libraries/Enamine10k.csv.gz")
y_true = np.array([d_smi_score.get(smi) for smi in smis], float)
hts_top_k = sorted(d_smi_score.items(), key=lambda kv: kv[1], reverse=True)[:k]

HTS_SB_DIR = Path( "/EBS/MOLPAL_repro/molpal_mpn_10k/10K_AL_ROOT/0.01")
rs = []
for e in (HTS_SB_DIR).iterdir():
    e = Experiment(e)
    r = [e.calculate_reward(i, hts_top_k)[2] for i in range(e.num_iters)][-1]
    rs.append(r)

R = np.array(rs)
print("SCORES METRIC:", np.mean(R), np.std(R) )

HTS_SB_DIR = Path( "/EBS/MOLPAL_repro/molpal_mpn_10k/10K_AL_ROOT/0.01")
rs = []
for e in (HTS_SB_DIR).iterdir():
    e = Experiment(e)
    r = [e.calculate_reward(i, hts_top_k)[1] for i in range(e.num_iters)][-1]
    rs.append(r)

R = np.array(rs)
print("SMILES METRIC:", np.mean(R), np.std(R) )

Here are the results as a function of the dataset using the current github repo code as is:
10K dataset
SCORES METRIC: 0.542 0.0406939798987516
SMILES METRIC: 0.45599999999999996 0.026532998322843202

50K dataset
SCORES METRIC: 0.7023999999999999 0.005276362383309172
SMILES METRIC: 0.6612 0.004995998398718723

HTS dataset (averaged over two runs - others runs in progress)
SCORES METRIC: 0.9744999999999999 0.0005000000000000004
SMILES METRIC: 0.947 0.0

In general, the statistics match results in the paper better as the size of the dataset increases. For the 10k/50k datasets, the metrics consistently underperform.
I will report back with the RF and NN analysis. My prior runs suggest those numbers reproduce the paper well.


Add support for deleting any model to mockDelete

holy kamole .. you added actual tests .. your trying to make me cry 👍  ..
this is superb .. thanks Matt

Thanks for providing guidance, much appreciated!


JSON Writer shouldn't reference MARC specific stuff

[via @erikhatcher on IRC]
https://github.com/traject-project/traject/blob/master/lib/traject/solr_json_writer.rb#L169-L176
...is too tied to the idea that the only type of source record will be a MARC record.
This will fail in too many ways if the source record happens to not be MARC. We should probably eliminate the attempt to get an id out of the source record altogether, or else configure it with
a passed lambda that takes a record and returns an ID, so people can use it with non-MARC sources.
I'd like to approach this by

first just pulling out the stuff that deals with marc_id and put up a patch release
check to see if source_record #respond_to?(:id) and use that if available.
Figure out what we want to do about MARC.

One option is to have a settings entry like `provide "logger.get_id_from_record", ->(r) {r["001].value}' that could be injected into the settings when you require a marc reader.
Alternately, we could just monkey-patch MARC::Record to implement an #id when you require a MARC reader.
And finally, we could just not worry about it and make people stick the damn id in the context if they want useful id-based error reporting.

I think it's important to keep focusing on our primary use case: MARC.
But yes, we should make it work with non-MARC too.
The idea that I had was that MARC stuff should always be protected by respond_to and such. I thought we had done that, but since it's not tested there are probably omissions. That is exactly what context.source_record && context.source_record['001'] && context.source_record['001'].value does.
I don't like the idea of having to configure to get proper debugging and error reporting stuff  -- I definitely do not like the idea of having to make people stick the id in the context themselves -- someitmes an error occurs before that would have happened, of course.
Are we only talking about error reporting here, anything else?  Error reporting is not a performance issue -- I don't see the problem with MARC-specific error reporting behind a respond_to or other guard. We should have a test for a non-MARC input case, to make sure we've done this appropriately.
What is the problem with this approach?
I am not sure I see a problem with the current approach -- protected by more guards. If there is one, I'd like an actual example, not just a theoretical concern that there should never be any code in there that references MARC.
When imagining future non-MARC input, I had imagined we'd likely have sub-classes of the Indexer (and/or different mix-ins) that overrode certain things like error reporting.  I still think that's likely, but I'm not saying that's the solution or should be required. If it's actually needed now though, we could provide a MARC-specific sub-class of or mix-in to Indexer with the MARC specific stuff in it, with a base class without it.  We could provide configuration for what Indexer sub-class is used. However, the MARC-specific sub-class should be the default for now, since that is our current use case.

Since you're talking about a patch release right away, does that mean @erikhatcher actually has a problem that the current code is preventing him from doing? If so, could he be persuaded to file an issue with an explanation and ideally a reproduction?  I want to actually pave the cowpaths, not go off into abstraction for imagined futures.

Also your Solr unique id is not always "id", I don't want to require this for useful error reporting either. Useful error reporting is hugely important to me, having been an actual barrier with my SolrMarc use. I think source-specific identification is the way to go and important, but fully agree we need to make this possible with non-MARC too. For now, if it gets erikhatcher going, we could even guard that error method with a kind_of?(Marc::Record). (Error reporting in indexing code is not a performance-critical area, it happens rarely and ideally never in a large-scale production run) We can pave the cowpaths better later when we have actual use cases and use. For now we should do the simplest thing that keeps the code simple -- and still providing the best error messages we can by default for our primary MARC use case.

I think it's important to keep focusing on our primary use case: MARC.

I knew you were going to say that. :-)
First off, we clearly need to guard this (with either a begin/end block or an is_a? guard on the source record type), because as it stands now, it'll just plain error our on non-MARC records. I'll do that nowish.
But we should also provide a mechanism for people to be able to report out useful record information on error regardless of the data type.

But we should also provide a mechanism for people to be able to report out useful record information on error regardless of the data type.

Agreed. But I'd wait until we had an example or two of what people want to do with what types, so our solution is based on actual use cases.


Make key-navigation work outside the slick-slider

This adds an event-listener to the window instead of the list itself.

If you want this functionality on your implementation, with one slider on the page, bind $('.your-slider').slickNext or slickPrev() to your window key events.

I'm trying to get exactly that functionality. But even my starting point gets overridden by slicks' keyhandler:
$( window ).keypress(function( event ) {
	console.log( event.keyCode );
});

So how do I do it.


Get the args & flags

I'm getting an array with the flags and another with the arguments.
In this moment, I'm obtaining the flag when is ONLY one flag (!cfe iot -S adjudicado), I have problems to get another flag (!cfe electronica -S adjudicado -S cancelado).

[x] Correct when there are more than one flag
[x] What to do with that flags
[x] Define which will be the flag for 'Estado' (-S, -s, --status, --estado,...)

Don't forget add a new documentation of the use / steps for the new command

Example of show the data searchind 'iot' with a status 'desierto':

If it doesn't receive any filter, it ignore that flag:


self is not restored after exiting Calls

When a function calls raise, it uses Crystal's native exception handling to implement the rescue/ensure behavior and to pop up the callstack.
The problem with this is that the value of self is not restored to the proper state when a rescue is encountered.
For example, in the Spec library, run looks like this:
def run(&block)
  block()
  IO.puts(".")
rescue failure
  IO.puts(failure)
  exit(1)
end

Here, block can be any arbitrary function, and can manipulate the self stack. Something like this, for example:
run do
  [1, 2, 3].each do |e|
    raise "woops"
  end
end

Here, the block given to run is pushing the List [1, 2, 3] onto the self stack, but then the block for each is calling raise.
So, the self stack has the main module and the List on it. When raise happens, execution immediately starts panicking up the (native) callstack until the rescue in visit(ExceptionHandler) is found. If a rescue clause from the ExceptionHandler matches the exception, panicking stops and execution is allowed to continue like normal from that point.
The issue is that in the panicking up the callstack, the entries from the self stack weren't removed. So, in the above example, execution is continuing in the rescue block in run, but the List that was on the self stack is still there. Call lookup then continues like normal, but the IO module will fail to be looked up, because the interpreter will be looking on the List instance scope, rather than the main module, where it is actually defined.
In practice, this error ends up being exposed as, which is hard to understand:
Uncaught Exception: No variable or method `IO` for SingleSpec
  from `IO` at /Users/jon/Sites/myst-lang/myst/stdlib/spec/single_spec.mt:14:7
  from `==` at /Users/jon/Sites/myst-lang/myst/spec/myst/enumerable_spec.mt:25:22
  from `assert` at /Users/jon/Sites/myst-lang/myst/spec/myst/enumerable_spec.mt:25:5
  from `block` at /Users/jon/Sites/myst-lang/myst/stdlib/spec.mt:28:15
  from `block` at /Users/jon/Sites/myst-lang/myst/stdlib/spec/single_spec.mt:11:7
  from `run` at /Users/jon/Sites/myst-lang/myst/stdlib/spec.mt:28:10
  from `it` at /Users/jon/Sites/myst-lang/myst/spec/myst/enumerable_spec.mt:24:3
  from `block` at /Users/jon/Sites/myst-lang/myst/stdlib/spec.mt:41:5
  from `describe` at /Users/jon/Sites/myst-lang/myst/spec/myst/enumerable_spec.mt:19:1

I don't entirely know what the solution for this will look like. But I imagine it will involve saving the value of self at the beginning of visit(ExceptionHandler), then popping from the self stack until that value is on top again when an error is rescued.
Thanks @atuley and @zkayser for listening to me ramble and helping find the cause of this :)

It seems like this issue affects more than just raise. AFAICT, any Call with a receiver has the potential to mess up the selfstack.
Looking through the specs, it doesn't look like there are any around this issue, so they should definitely be added.


feat: add TypeScript declaration for vx/responsive

:rocket: Enhancements
Add typescript declaration for @vx/responsive.
We have several typescript projects that use this library and ended up writing ad-hoc declaration files, so having this included in the package will be much better. I have read through all the jsx code and added types for all items in this package.
cc: @williaster @conglei

going to close this for now and hope we can re-use the definitions in the Typescript Project


Build appears to hang in "deploy" phase

App ID: dxk3ongyqntym
Region: eu-west-1
I am trying to build and deploy a gridsome site with tens of thousands of files. Provision and build steps complete in the console without problems but the Deploy stage appears to hang. I have tried a couple of times and each time the log stops showing output after approx 16,400 lines (files copied) and it appears the process never completes.

Hi there, please see the more recent comments on #115 for more information on this issue and a technical explanation, this is currently our top priority and we are providing updates in that thread as testing progresses this month, closing this as a duplicate.

Sorry - but are you sure this is a duplicate of #115 ? The comments on that thread seem to be about total files in the repo. My issue is with total files generated by the Build stage not the contents of the repo...

Positive :) #115 revolves around the total number of built and deployed (hosted) files in an app, which doesn't necessarily corelate (but can, depending on your framework) to the number of files in your repo. This issue will be resolved w/ the release of #115 , follow that thread for updates, thx!


Load-balancing redirects not working on subscriber

Describe the bug
Using version: 10.3.3 (Umbraco 10.8.3)
When used in an Umbraco load-balanced configuration (1x admin/scheduler web app, 1x subscriber web app with 3x instances) UrlTracker works as expected on the scheduler web app, but the subscriber web app does not get the updated redirects until the server is restarted.
Is load-balancing supported?
To Reproduce

Make a redirect change on a scheduler web app
Test the redirect on a subscriber web app

Expected behavior
Redirect should happen on both the scheduler and the subscriber web apps without a restart.

Hi @karltynan ! Thank you for reaching out!
It appears that the memory cache on the subscribers doesn't get purged upon changes to the redirects. This is a known issue that I wish to resolve, but have not had the capacity and means to fix myself. That is to say: I'm looking for a community contribution to help me implement it.
If you're in need of a quick workaround, you can disable the memory cache using the appsettings. You can read more about this in the readme. This will come at a small performance cost.
If you're willing, we'd be very grateful to receive a contribution to support cache purging across multiple instances. I've described how this should be done in another issue here.
Looking forward to hear from you!

Thanks for the response!
Unfortunately, I do not have enough knowledge to even attempt contribution on this, but I will look into it and reach out to others and see if they can assist where possible :) Also happy to help testing if someone else does provide a solution.
Should I set EnableInterceptCaching to false in the short-term? What kind of "small" performance hit do you expect that would be?
Many thanks.

Hi @karltynan ! I overlooked your additional question. Answer is: "it depends". For each incoming request, the URL Tracker would make 2 or 3 database queries. These queries are usually decently quick if you have a proper SQL Server database. In my experience, a page without caching on the URL Tracker takes about 100 to 200ms to load.
That being said: I'm working on this as we speak, together with a new "active" cache that will eliminate all database traffic. I hope to have this finished before the end of next week. I'll give another signal when I have a beta.

Wow, an "active" cache sounds really exciting too! Let me know if you'd like us to beta test anything for you.

Hi again. It is that time: Version 10.4.0-beta0001 should be released on NuGet any minute now with a fix for your issue. I would love it if you could try it out and see if this version fixes your issue!
Since you're interested in the new active cache feature, I would highly appreciate it if you could give that a try as well. The active cache is disabled by default, but you can enable it by adding this config to your appsettings.json file:
{
    "UrlTracker": {
        "Caching": {
            "Memory": {
                "EnableActiveCache": true
            }
        }
    }
}

What I'm mainly interested in is:

Do you notice a performance difference?
Do you notice a big difference in memory consumption on short and long term?
Do you notice a performance difference while renaming, moving or otherwise editing content in the backoffice?

However, any feedback you have is very welcome :blush:

This issue has been solved in versions 10.4.0 and 13.1.0 for Umbraco 10 and 13 respectively. Since Umbraco 11 and 12 are STS and a higher LTS version is available, these versions won't receive an update anymore.
I'm closing this issue.


What's the password

user name : user
password   : passwd

https://github.com/nkpro2000sr/Chrome-VNC/blob/092fc0e8506fd53c2ff6fc4414595c7c861b0f21/Dockerfile#L12

user added in sudoers file

https://github.com/nkpro2000sr/Chrome-VNC/blob/092fc0e8506fd53c2ff6fc4414595c7c861b0f21/Dockerfile#L13

VNC password : passwd

https://github.com/nkpro2000sr/Chrome-VNC/blob/092fc0e8506fd53c2ff6fc4414595c7c861b0f21/Dockerfile#L16


Remove DuckDB Parquet Reader implementation

Remove DuckDB Parquet Reader
Merge DuckDB tests with Native Parquet Reader tests.
Co-authored-by: Ivan Sadikov<EMAIL_ADDRESS>

@karteekmurthys, @pramodsatya can you verify that the duckdb tests ParquetReaderTest.cpp, ParquetTableScanTest.cpp have been correctly ported to the native reader tests?
The test names have been renamed.

ParquetTpchTestBase uses DuckDB to write Parquet. We need to remove this use as well. I will try using the Velox Parquet Writer.

Super awesome. Thanks @majetideepak!

Btw, this PR changes the API with Prestissimo, so it it will take me another minute to merge it and reconcile it.

@pedroerp I am curious to know what this API on the Prestissimo side is. I recently moved the Parquet Reader registration to Velox as well.

Yeah, just noticed that. Could you point me to the Presto PR where this was changed (the one that changed PrestoServer.cpp)?

@pedroerp this is the one https://github.com/prestodb/presto/pull/20321/

Nice, let me look into it. Thanks


Use Lolex as implementation for fake timers

Do you want to request a feature or report a bug?
Feature, I suppose.
What is the current behavior?
We currently implement fake timers ourselves. See docs and implementation.
If the current behavior is a bug, please provide the steps to reproduce and
either a repl.it demo through https://repl.it/languages/jest or a minimal
repository on GitHub that we can yarn install and yarn test.
N/A
What is the expected behavior?
Our current implementation has a couple of holes (see #3465 and #5147) both of which are covered by Lolex.
I think we would benefit from basically proxying Lolex through Jest's API to keep the "batteries included" feature.
I hit one issue when I spent some minutes looking into if it was feasible while still keeping Jest's API mostly the same, https://github.com/sinonjs/lolex/issues/146. Might be other issues, I haven't dug too deeply into it.
Please provide your exact Jest configuration and mention your Jest, node,
yarn/npm version and operating system.
N/A

Looked a tiny bit more (still no code written).

We also currently have a runWithRealTimers method which is not really possible with Lolex' API, but it's not documented, so not a big deal.
Lolex exposes no way to clear timers. Probably worth an issue, but we can reset the properties manually.
No way of running micro tasks (nextTick, setImmediate) from macro tasks (timers) separately, but I'm not sure if there's an issue in practice? Beyond the breaking change

@SimenB

lolex can expose runWithRealTimers if you make a compelling use case (I can see why I'd want that, especially for Node with microticks. It shouldn't be too hard to do with lolex - although it kind of breaks the abstraction.
lolex exposes .uninstall that clears timers, .runAll to run all timers (although we've found that in practice setInterval can break this because it will keep running unless cleared).
We can expose a way to run microtasks (setImmediate is a macrotask by the way) in lolex, lolex doesn't run microtasks (nextTick) by default though - you have to tell it to fake nextTick (just an API choice since people found it confusing with promises).

In any case, we can help from the lolex side :)

I'm not sure about use cases - I've never used it. An entirely unscientific GitHub search shows just type definitions and forks of jest, no actual usage. @cpojer is this used in FB?
Ah, of course. It also resets the mocks back to their original implementation, but calling uninstall followed by install should work fine.
Great!

setImmediate is a macrotask by the way

You learn something every day :D (it's correct in Jest's docs, I just skimmed it a bit too quick when trying to wrap my head around how we mock timers).

I’d love this, especially since it will also allow mocking for Date, which isn’t currently possible yet

This sounds exciting. I can provide data about FB in about 10 days but not earlier.
It’s important we retain all useful functionality. FakeTimers also exposes some legacy globals which I’d be happy to kill completely and codemod internally at FB.
At FB, we overwrite native Promise with the promise npm module, which uses asap, which uses setImmediate. This allows us to drive Promises using fake timers, which we used to do in the days before awesome async support in Jest. We need to make sure that a new fake timers implementation will retain the possibility to do this as we are unable to codemod all these calls automatically and probably have a couple hundred test suites depend on this behavior.
Shall we move forward with a PR to see how far we can get and what kind of changes would be required to lolex? The most important invariants are that it doesn’t regress performance at all and that the size of dependencies/modules stays mostly the same.

Shall we move forward with a PR to see how far we can get and what kind of changes would be required to lolex?

I have some done locally that I can push, but "from all of us to all of you" started on the tv, so I got distracted :D

Hey, thanks @cpojer for weighing in:

At FB, we overwrite native Promise with the promise npm module, which uses asap, which uses setImmediate.

FWIW, you can overwrite native Promise with bluebird, which exposes setScheduler directly and would let you decide when promises resolve regardless. Note that this is tricky (what about async functions`?)
We might be able to add support for such scheduling in core (Node.js) - it sounds like a pretty compelling use case (controlling the order of things firing) which might be a better long term solution for async/await.

My branch with a single WIP commit https://github.com/SimenB/jest/tree/lolex

Another difference is in how runOnlyPendingTimers and runToLast work. In Jest we only run scheduled timers ignoring new ones added when doing so, while Lolex runs all new timers scheduled if they occur within the timeframe of the original pending timers.
I think I prefer Lolex' behavior, as it more closely simulates what happens in a real environment, but it's a difference nonetheless.

Opened up a PR with my branch, as I've pushed some more, and commenting on a branch is pretty weird: #5171. Not sure if it makes sense to keep this issue open or move the discussion to that PR.

@cpojer

At FB, we overwrite native Promise with the promise npm module, which uses asap, which uses setImmediate.

You can alternatively overwrite native Promise with Bluebird and call setScheduler directly to make schedulers work as you please.
asap may decide not to use setImmediate in a patch version at any time in the future and break all your tests - there is no guarantee for this behavior.

What is blocking this PR currently?

@mgol making sure it does not break FB's test suite 🙂

2.5 years later... 🙌

@SimenB thank you! I was waiting for this for quite a while now!
Quick question (as the docs are a bit new and I can't find this information anywhere): I know that sinon fake timers offers you the chance to choose what you want to mock (for example, mocking just Date, but not setTimeout).
This was very useful as some third party libraries like express have some internal calls to methods like setImmediate or something on those lines, and it's quite hard to know when you manually have to advance time or not in your tests. So if I explicitly want to mock just the Date object to force the timestamps in my snapshots to always match, I would do something like sinon.useFakeTimers(now, 'Date');
Would something like that be possible with jest fake timers?

@Tinadim there's no official way provided by Jest, but you can still use the API directly for advanced use cases I'd think https://github.com/sinonjs/fake-timers/tree/cb4c2f6e2eaddfd2c1be49f14e7f6d51f6633280#var-clock--faketimersinstallconfig


Expose the activityID in the headers

When working with support-team for cosmosDB they always request the activityID from the query. As this currently isn't exposed in the node-sdk we have to modify the sdk to get a hold of it. Would be super nice if this id was returned by default.

You can get it from the headers using headers["x-ms-activity-id"]


Changing the email font

closes https://github.com/covid19risk/permission-portal/issues/271
Tested on my personal firebase infrastructure / email account, appears to be working properly.

Unfortunately, it didn't work in Gmail

Unfortunately, it didn't work in Gmail

Huh, worked for me. You sure it was deployed properly when the email was sent?

Unfortunately, it didn't work in Gmail

Huh, worked for me. You sure it was deployed properly when the email was sent?

Just tried again on both gmail and gsuite, appears to be working for both. I'm going to assume it just wasn't deployed to dev (I believe I originally developed this feature on a personal dev infrastructure instance):


Refactor Convert Namespace Dialog

This is part of the overall dialog refactoring #959

remove hardcoded convert-namespace dialog in favor of reusable dialogs
implement new dialog in a way that it is configured through the client

Test-file: activitiCamunda Kopie.xml.txt

Closed via #994


update Explorer sample story display of metadata

clicking the More Info button highlights the row and shows the metadata


I can send down data through the API.How do I use API interfaces to see the payload of the node's uplink data?Are we missing something? Please let us know what are we missing.

Is this a bug or a feature request?
What did you expect?
What happened?
What version are your using?
How can your issue be reproduced?
Could you share your log output?

There is no API method for uplink data. Please see: https://docs.loraserver.io/lora-app-server/integrate/data/

very thanks！

API -> Node  ->

get information :   " "phyPayloadJSON": "{"mhdr":{"mType":"ConfirmedDataDown","major":"LoRaWANR1"},"macPayload":{"fhdr":{"devAddr":"07d1dbda","fCtrl":{"adr":false,"adrAckReq":false,"ack":true,"fPending":false},"fCnt":6,"fOpts":null},"fPort":44,"frmPayload":[{"bytes":"nsRouyuy"}]},"mic":"936437a8"}"”
"nsRouyuy" What's the data?


Typo in pipeline.json included with Raidionics-MRI_GBM_multiclass-ONNX-v12.zip

Hi @dbouget,
In step 5 of pipeline.json included with Raidionics-MRI_GBM_multiclass-ONNX-v12.zip, the description suggests registration from T1w (T0) to T1CE (T0) but the current version of the json includes two instances of "T1-w" for both moving and fixed sequences. Changing the fixed to "T1-CE" allows the pipeline to run smoothly. Hope this is fixed with the next release!

Hi @ft-zhang,
Thanks for pointing it out! I've updated the json files for the three "multiclass" models in the current release.


I ran into a bug about kube-prometheus not automatically adding nodes when scaledobject resource objects are used with keda

Report
This bug is about ScaledObject not being able to trigger automatic node additions based on Prometheus query results.
Expected Behavior
Solve this problem and help see why.
Actual Behavior

This seems normal, and I tested an autoscaling feature using hey -m GET -n 20000 http://<IP_ADDRESS>.
[root@master01 keda]# kubectl get svc
NAME                TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
kubernetes          ClusterIP   <IP_ADDRESS>       <none>        443/TCP   293d
metrics-flask-app   ClusterIP   <IP_ADDRESS>   <none>        80/TCP    89m

[root@master01 keda]# cat scaled-object.yaml
apiVersion: keda.sh/v1alpha1
# Custom CRD provisioned by the Keda operator
kind: ScaledObject
metadata:
  name: prometheus-scaledobject
spec:
  scaleTargetRef:
    # target our deployment
    name: metrics-flask-app
  # Interval to when to query Prometheus
  pollingInterval: 15
  # The period to wait after the last trigger reported active
  # before scaling the deployment back to 1
  cooldownPeriod: 30
  # min replicas keda will scale to
  # if you have an app that has an dependency on pubsub
  # this would be a good use case to set it to zero
  # why keep your app running if your topic has no messages?
  minReplicaCount: 1
  # max replicas keda will scale to
  maxReplicaCount: 20
  advanced:
    # HPA config
    # Read about it here: https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/
    horizontalPodAutoscalerConfig:
      behavior:
        scaleDown:
          stabilizationWindowSeconds: 30
          policies:
            - type: Percent
              value: 50
              periodSeconds: 30
        scaleUp:
          stabilizationWindowSeconds: 0
          policies:
            - type: Percent
              value: 50
              periodSeconds: 10
  triggers:
    - type: prometheus
      metadata:
        # address where keda can reach our prometheus on
        serverAddress: http://<IP_ADDRESS>:30090
        # metric on what we want to scale
        metricName: request_count_total
        # if treshold is reached then Keda will scale our deployment
        threshold: "0.01"
        query: sum(rate(request_count_total[1m]))

[root@master01 keda]# kubectl get svc
NAME                TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
kubernetes          ClusterIP   <IP_ADDRESS>       <none>        443/TCP   293d
metrics-flask-app   ClusterIP   <IP_ADDRESS>   <none>        80/TCP    91m

[root@master01 keda]# cat /opt/k
k8s_prom/       keda/           kubernetes_dev/

[root@master01 keda]# cat /opt/k
k8s_prom/       keda/           kubernetes_dev/

[root@master01 keda]# cat /opt/k8s_prom/metrics-app/
Dockerfile              main.py                 metrics-flask-app.yaml

[root@master01 keda]# cat /opt/k8s_prom/metrics-app/
Dockerfile              main.py                 metrics-flask-app.yaml

[root@master01 keda]# cat /opt/k8s_prom/metrics-app/metrics-flask-app.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: metrics-flask-app
spec:
  selector:
    matchLabels:
      app: flask-app
  template:
    metadata:
      labels:
        app: flask-app
      # 声明Prometheus采集
      annotations:
        prometheus.io/scrape: "true"
        prometheus.io/port: "80"
        prometheus.io/path: "/metrics"
    spec:
      containers:
      - image: registry.cn-shenzhen.aliyuncs.com/lvdoubing/flask-app:v1
        imagePullPolicy: IfNotPresent
        name: web
---
apiVersion: v1
kind: Service
metadata:
  name: metrics-flask-app
  labels:
    run: metrics-flask-app
spec:
  ports:
  - port: 80
    name: web
    protocol: TCP
    targetPort: 80
  selector:
    app: flask-app
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: flask-app
  labels:
    app: flask-app
spec:
  selector:
    matchLabels:
      run: metrics-flask-app
  endpoints:
  - port: web
`

Prometheus has also obtained relevant indicators.
Steps to Reproduce the Problem

deploy kube-prometheus
2.deploy a test app

`apiVersion: apps/v1
kind: Deployment
metadata:
  name: metrics-flask-app
spec:
  selector:
    matchLabels:
      app: flask-app
  template:
    metadata:
      labels:
        app: flask-app
      # 声明Prometheus采集
      annotations:
        prometheus.io/scrape: "true"
        prometheus.io/port: "80"
        prometheus.io/path: "/metrics"
    spec:
      containers:
      - image: registry.cn-shenzhen.aliyuncs.com/lvdoubing/flask-app:v1
        imagePullPolicy: IfNotPresent
        name: web
---
apiVersion: v1
kind: Service
metadata:
  name: metrics-flask-app
  labels:
    run: metrics-flask-app
spec:
  ports:
  - port: 80
    name: web
    protocol: TCP
    targetPort: 80
  selector:
    app: flask-app
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: flask-app
  labels:
    app: flask-app
spec:
  selector:
    matchLabels:
      run: metrics-flask-app
  endpoints:
  - port: web
`

deploy the keda:2.10.1 and deploy scaledobject

`[root@master01 keda]# cat scaled-object.yaml
apiVersion: keda.sh/v1alpha1
# Custom CRD provisioned by the Keda operator
kind: ScaledObject
metadata:
  name: prometheus-scaledobject
spec:
  scaleTargetRef:
    # target our deployment
    name: metrics-flask-app
  # Interval to when to query Prometheus
  pollingInterval: 15
  # The period to wait after the last trigger reported active
  # before scaling the deployment back to 1
  cooldownPeriod: 30
  # min replicas keda will scale to
  # if you have an app that has an dependency on pubsub
  # this would be a good use case to set it to zero
  # why keep your app running if your topic has no messages?
  minReplicaCount: 1
  # max replicas keda will scale to
  maxReplicaCount: 20
  advanced:
    # HPA config
    # Read about it here: https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/
    horizontalPodAutoscalerConfig:
      behavior:
        scaleDown:
          stabilizationWindowSeconds: 30
          policies:
            - type: Percent
              value: 50
              periodSeconds: 30
        scaleUp:
          stabilizationWindowSeconds: 0
          policies:
            - type: Percent
              value: 50
              periodSeconds: 10
  triggers:
    - type: prometheus
      metadata:
        # address where keda can reach our prometheus on
        serverAddress: http://<IP_ADDRESS>:30090
        # metric on what we want to scale
        metricName: request_count_total
        # if treshold is reached then Keda will scale our deployment
        threshold: "0.01"
        query: sum(rate(request_count_total[1m]))
`

Logs from KEDA operator
example

KEDA Version
2.10.1
Kubernetes Version
1.24
Platform
Other
Scaler Details
Prometheus
Anything else?
No response

This bug is about ScaledObject not being able to trigger automatic node additions based on Prometheus query results.

What do you mean? KEDA doesn't autoscale the cluster, only the workloads. KEDA will scale workload changing the pod count but if your nodes are busy, KEDA won't scale them. For autoscaling the nodes, you need Cluster Autoscaler or karpenter.
As far as I can see, the ScaledObject is ready and active, which means that KEDA is executing the query against Prometheus, and it returns > 0, so I guess that KEDA itself is working.
Could you explain the issue you are facing with?

I guess "node" here means pods but let's verify.


Expose Cilium MTU configuration to customers

It should be possible for a customer to configure Cilium's MTU so that, if the customer does not want to rely on the automatic detection performed by Cilium, they are free to specify a custom value.
The requirements are, hence:

that the value is exposed in the cilium-app so that a custom userConfig can override it
that the value can be "declaratively" specified in a Cluster CR (e.g. via an annotation)

As discussed in Phoenix and i hope @Rotfuks is fine with this:

Turtles will expose the value in the cilium-app
Phoenix will make sure the value is configurable for providers, the CAPI and Vintage - also to keep in mind that the MTU can be specified before upgrading to v19 so it kicks in with Cilium right away

Removing from Phoenix board as i believe it will be picked up by Cabbage only

moving this to cabbage as cilium is a cabbage topic

we need to check cilium configuration in general is these often default to null

Yes, our app values clearly need to be polished up before we can take on this task. Can you take the topic to cabbage?
On Jan 23, 2024 at 10:54 +0100, Lucas Weatherhog @.***>, wrote:

we need to check cilium configuration in general is these often default to null
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: @.***>

I know nothing of where this is coming from, but knowing that:

Cilium autodiscovers the MTU of the iface
XDP acceleration mode needs the underlying iface to have a smaller MTU

I wonder if what is really needed here isn't to be able to modify the iface MTU of the node directly.

@LolloneS is this ticket still relevant? Is the option to configure cilium on capa enough?

I chatted with Dani. Let's close it. If the problem with TGW's MTUs arises again, we will see whether this config solves it or we need to change the MTU in some other places. For now, having it in cluster-aws is already great and GitOps friendly. Thanks a lot and sorry for the delayed answer


public build logs

External site search results are polluted by documents like https://docs.perl6.org/build-log/build-2018-12-15T20:30+00:00.log. This is relevant to the sysadmin, but not the documentation consuming end user. Exclude them from search indexing, or from the public Web altogether.

What kind of search results in that page?
I'll see what I can do anyway.

What kind of search results in that page?

I searched the text !ww and external site search found ww in the log.

6c8f2a5

You wrote build_log, but URI path segment is build-log.

Right. Sorry.


model.save() Error: object has no attribute '_compile_metrics'

With python3 model saving stopped to work.
After switching from python2 to python3 I started to get for my not compiled model the following error:
Error: 'Model' object has no attribute '_compile_metrics'
Later I switched to TF 2 - right now running with 2.0.1 - but nothing has changed.
System information

Ubuntu, Debian
TensorFlow installed from binary
TensorFlow version from 1.x -> 2.0.1
Python version: 3.5.2
CUDA/cuDNN version: 8 -> 10.1  based on TF needs
GPU model and memory: Various.

@dodiak, Tried replicating the reported issue but getting different error. Please take a look at gist and confirm. Thanks!

ok, copy/paste error. I pasted at gist one more times the full code and it
give the same error as I see here.
thanks
On Mon, Feb 3, 2020 at 7:30 AM gadagashwini<EMAIL_ADDRESS>wrote:

@dodiak https://github.com/dodiak, Tried replicating the reported issue
but getting different error. Please take a look at gist
https://colab.research.google.com/gist/gadagashwini/51289f56f062db7ca715e11ce5964596/untitled370.ipynb
and confirm. Thanks!
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/tensorflow/tensorflow/issues/36135?email_source=notifications&email_token=AAIZB6AEXJ2INTLG6PKOLWTRA62ZHA5CNFSM4KKH7VLKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEKSVDJY#issuecomment-581259687,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAIZB6DO7UDN4KSPO4OUL5LRA62ZHANCNFSM4KKH7VLA
.

@dodiak, I don't see the gist in the comment. Can you include the gist in comment box. Thanks!

Sorry, first time using gist, wo one more times:
https://colab.research.google.com/gist/dodiak/cf98f0eb5c0ecf7daad735ac05102f4d/untitled370.ipynb
On Thu, Feb 6, 2020 at 7:28 AM gadagashwini<EMAIL_ADDRESS>wrote:

@dodiak https://github.com/dodiak, I don't see the gist in the comment.
Can you include the gist in comment box. Thanks!
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/tensorflow/tensorflow/issues/36135?email_source=notifications&email_token=AAIZB6H2XCKR32PGFF4L3LTRBOUZRA5CNFSM4KKH7VLKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEK6CZJQ#issuecomment-582757542,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAIZB6EI46GKFRU6J6KJGLLRBOUZRANCNFSM4KKH7VLA
.

@dodiak I have ran your code using tf-nightly and I am not running into any errors. Please find my gist here. Thanks!

Great, thanks a lot. I can confirm that with:
tf-nightly             2.2.0.dev20200218
tf-nightly-gpu         2.2.0.dev20200227
the simple example works. Give me a few more days please to test with a full version.

Sure. I am closing this issue now. If you have any more questions please open a new issue. Thanks!

So I can confirm that it runs as we expected. Thanks a lot.


Add the missing steps in the autotune_installation

This PR fixes the issue https://github.com/kruize/autotune/issues/807
Added the missing installation steps of kubectl and minikube

LGTM


Feature: Modify Nbt Data

Give access to the /data command with Minescript ergonomics

Use a syntax like
storage::path.to.data
@s::Inventory[0]

This will have to override some other tasks and behavior. The following rules should exist:

[ ] going from nbt to nbt with data
[ ] going from nbt to score with execute store ... data
[ ] going from xp to score with execute store ... xp query
[ ] going from score to nbt with either data or execute store ... scoreboard get


Application could not be started

When I try to start the programm I get this error message:

I installed the Windows App SDK 1.2 from the website and rebooted. Is there another requirement or is this the wrong version?
I use Windows Server 2019.

Might be similar to #29, try a similar workaround from there and see how it goes.

I tried to install the older version and then the newer version but I still get the same message :(

I went and grabbed a Windows Server 2019 iso and was able to get it working...
Looks like you may need to enable sideloading because the DDLM component fails to install by default

Try this first, then if necessary install the redist from the zip link below:

Settings
Search "Developer settings"
Enable "Developer mode"
If necessary, you can try https://aka.ms/windowsappsdk/1.2/1.2.221209.1/Microsoft.WindowsAppRuntime.Redist.1.2.zip

Then I was able to run without issue:

While testing this tool I ran into the exact same issue.
Adding this line under propertygroup: "WindowsAppSDKSelfContained>true</WindowsAppSDKSelfContained" to the .csproj file resolved the issue for me.


[regiotv] Fix broken extractor (closes #15348)

Before submitting a pull request make sure you have:

[x] At least skimmed through adding new extractor tutorial and youtube-dl coding conventions sections
[x] Searched the bugtracker for similar pull requests
[x] Checked the code with flake8

In order to be accepted and merged into youtube-dl each piece of code must be in public domain or released under Unlicense. Check one of the following options:

[x] I am the original author of this code and I am willing to release it under Unlicense
[ ] I am not the original author of this code but it is in public domain or released under Unlicense (provide reliable evidence)

What is the purpose of your pull request?

[x] Bug fix
[ ] Improvement
[ ] New extractor
[ ] New feature

Description of your pull request and other information
[regiotv] has changed its URL format and probably also the way the video is delivered. This PR makes it work again.

See peertube extractor on how to implement embed detection in generic extractor in URL agnostic way.

The proposed solution is done in this PR: https://github.com/rg3/youtube-dl/pull/18497


docs(api): runtime parameters in Python API 2.18

Overview
Full documentation for setting up and using runtime parameters in Python protocols.
Closes RTC-416, RTC-428, RTC-429, RTC-430, RTC-451
Test Plan

Check content and formatting of all pages in the sandbox
Simulate all code from use case pages.

Changelog

New landing page for Runtime Parameters
6 new subpages
Unhide ProtocolContext.params in API Reference. ~Note, this still needs a docstring, either here or in a separate PR.~ Added docstring.

Review requests
Read some or all of it, try the code, tell me what can be better.
Risk assessment
None

Just the above comments from me. Everything else looks great! Doesn't have to be in this PR but I'm wondering if it would be useful to have screenshots of the app flow to help understand the significance of all the parameters' arguments (display name/ description/ choices, etc).

Thanks for the comments!
I've deliberately kept the UI out of the Python docs (here and elsewhere). Although I hope that we'll have a video or some other visual resource that I can link to from one of these pages, either in time for release or shortly after.


[#30] configurable minMag

Might as well since we're happy-ish with the targetMFDs again

@voj I'll let you merge this


Question about symmetric loss

I have a question about symmetric loss:
https://github.com/j96w/DenseFusion/blob/584efd68810c4d2f818207f2719a6ae886aac825/lib/loss.py#L44
when KNN returns the inds, they are mostly duplicated (for instance, I have a symmetric object with 500 object points. Using symmetric loss these 500 points get compared with only 30 selected points in the target tensor. In other words, we only have 30 unique indices in inds tensor). Is this something you expect?
Thanks

Hi, does your case happen at the beginning of the training or in the end? I guess it's during the beginning when the 3D IoU between your prediction and GT is too large to match with most points on the model.


[BUG] Updated Profile Information doesn't get reflected right away after saving

Description:
When updating the user profile contents and saving the changes, the changes take a while to get reflected on the Edit Profile page
Expected Results:
The updated contents of the profile appear on the page right away after navigating to other pages and back to the user profile
Actual Results:
The updated contents of the profile don't appear on the page right away after navigating to other pages and back to the user profile
Steps to Reproduce:
Assuming that:

The user has created a Dev Hunt account
The user is logged in to their Dev Hunt Account

Click on the user icon
Click on "Edit Profile"
Update the information in the user profile (e.g. change username, add a headline, add a website URL, edit the contents of the About page
Click the Save button. Notice that there is no feedback that the changes are saved.
Click on the user icon
Click on "Profile"
Click on the user icon
Click on "Edit Profile". Notice that the changes do not appear right away. --> [PROBLEM]

Workaround:
I repeated steps 5-8 and waited for the changes to be reflected
Additional Notes:
I checked the network logs and it seems that the information is saved, just not displayed on the page

@digracesion Hey, thank you for taking time to report this, I've checked it and edited my profile and saved it and reloaded the page, and worked very well for me in one try, not sure why this issue appears to you.

I was using Windows 11 OS and Brave Browser if that's relevant

I can still reproduce this same issue on Mac OS using Brave Browser.
Please take note that this happens when you navigate away from the Edit Profile page and back, not with page reload

@digracesion Hey there, can I kindly ask if you still getting this issue?


Add extra information to Choice

This adds Choice.instruction.

Supports all prompts that use Choice.
I've only added support for Alternative Syntax, but am open to adding support for Classic syntax if you'd like.
Closes #55.

@kazhala hate to be a bother, but would you mind giving this PR a look when you get a chance?

@Gracecr this is a nice add.
While testing it out it seems that instruction is a required attribute despite it being marked optional?
i.e. if instruction isn't defined then you end up with a lengthy stack trace error ending in: TypeError: can only concatenate str (not "NoneType") to str
e.g. removing instruction attribute from the below example results the mentioned error.
from InquirerPy import inquirer
from InquirerPy.base.control import Choice

region = inquirer.select(
        message="Select regions:",
        choices=[
            Choice("ap-southeast-2", name="Sydney", instruction="Region in Australia"),
            Choice("ap-southeast-1", name="Singapore", instruction="Region in Southeast Asia"),
        ],
    ).execute()

Might be worth looking into?

Strange, I'm not getting the same error. I'm able to run your example code (minus the instruction's) without error:
from InquirerPy import inquirer
from InquirerPy.base.control import Choice

region = inquirer.select(
    message="Select regions:",
    choices=[
        Choice("ap-southeast-2", name="Sydney"),
        Choice("ap-southeast-1", name="Singapore"),
    ],
).execute()

I just tested with py3.7 and py3.10 on windows in CMD. If you don't mind posting your stack trace, perhaps that will help me resolve the issue.

@kazhala any chance you could take a look into this? I find it really helpful


Remove no-non-null-assertion exceptions in gateway relating to TS bug 33752 once it is fixed

Fixed in #4930


CPE: initiate default settings

AS AN Architect
I WANT Ruuter default settings to be initiated by Ruuter's Core Process Engine
SO THAT I could be sure that they are in use even if they haven't been initiated on DSLs of particular services

@turnerrainer - currently, when starting ruuter, all properties/settings are already initiated by default. This task should therefore be unnecessary


Inform that this command is not supported for Azure Devops Server 2019/2020 On Prem environment

We should clarify in this documentation that this command is not supported for Azure Devops Server 2019/2020 On Prem environment

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

ID: 2a8d339f-11e6-7474-b24f-6f5b6866d75a
Version Independent ID: 00679a6a-3c45-afd8-cb70-33198412cee5
Content: Publish and download universal packages - Azure Artifacts
Content Source: docs/artifacts/quickstarts/universal-packages.md
Product: devops
Technology: devops-artifacts
GitHub Login: @ramiMSFT
Microsoft Alias: rabououn

@mmj78 Which command are you referring to? Can you provide more info

More information is needed. Issue inactive


added mass matrix regularziation in TSID joint dynamic task

C.C. @LoreMoretti @Gio-DS

@GiulioRomualdi  is still a WIP, I wanted to check the CI, I will ping you when actually ready!

@GiulioRomualdi is still a WIP, I wanted to check the CI, I will ping you when actually ready!

You can mark it as draft :wink:

@GiulioRomualdi is still a WIP, I wanted to check the CI, I will ping you when actually ready!

You can mark it as draft 😉

Thanks done ! I was not sure the CI would be triggered by a draft but I think it is the case!

should be ready now :)

Can you remove the whitespaces in:
 The following lines contain trailing whitespace:

src/TSID/include/BipedalLocomotion/TSID/JointDynamicsTask.h:49:    bool m_useMassMatrixRegularizationTerm{false}; /**< True if the mass matrix regularization is used*/
src/TSID/include/BipedalLocomotion/TSID/JointDynamicsTask.h:111:
src/TSID/src/JointDynamicsTask.cpp:246:


Feature Request: redeploying to interactive nixos tests

Issue description
When developing NixOS tests, it is usually slow and tedious to re-run the test every time one makes a change. For this reason, I usually use driverInteractive, which allows me to muck around on the machines and see what happens in real time, re-run parts of tests that have failed, etc.
However, it often happens that I want to modify the NixOS configuration for one or more machines and redeploy. In this case I am back to re-running the driver every time I make a change.
I would like a way to modify the configuration and re-deploy, as I would with nixos-rebuild switch normally.
proposed solution
I developed a solution that I've been using privately #281331. It adds a command to the output of driverInteractive that can be used to push that configuration to the actively running test.
alternate solutions
we can just continue re-running the driver and restarting the machines every time we make a change to the configuration.

this is slow and annoying

getting the configuration somehow into /etc/nixos/configuration.nix. This way people could modify the configuration on the machine and run nixos-rebuild switch.

you have to generate a configuration.nix, and it's not clear which options to include and which not. It will end up in a different form than people are editing it in their test.
the changes are ephemeral until you also make them on the test itself. which is easy to forget to do.

iterating on your tests in a separate environment (e.g. nixos-shell)

requires copying changes over to the test, which is error-prone
requires you to be familiar with two frameworks for spinning up nixos vms
other systems for spinning up vms (such as nixos-rebuild) are often less convenient for spinning up several vms that all have access to each other
the two systems for spinning up vms might have differences that affect the running of the tests.

I've updated the PR to reflect a new solution. In retrospect I'm not sure it was useful to have a separate issue but here we are.


No CSS?!?!?

Why would you not include a default CSS to import? Something like this:
import "bootstrap/dist/css/bootstrap.min.css";
Just add it into the report with the most basic styling so that it doesn't load list bullets, etc.

Duplicate of https://github.com/Jacobs63/vue3-tabs-component/issues/32


Scale still not working for single animal

It seems that no readings of weights have been logged for in AEON3 nor AEON4. This made me thing there might still be a bug in the scale workflow logic for single animal. There was already an issue on this in the past that has been closed. Was the fix tested?

Closing this as seems working now


fix for issue 1011 - set PDO type int for double vars

set 'double' => PDO::PARAM_INT to prevent from the value quoting in generator().

have the same problem

I'm having the same issue, if it's a simpe change i wander why the author does not include it. @axelhahn, does your solution works well with decimal numbers?

@jxcodes  Huuuh, it was a while ago hat I went ito that trap.
If I have a look to https://www.php.net/manual/en/pdo.constants.php - it says:
    Represents the SQL INTEGER data type.

... so: the answer is NO - it doesn't handle float values - it is an integer.
https://www.w3schools.com/sql/sql_datatypes.asp
Database type INT: A medium integer. Signed range is from -2147483648 to<PHONE_NUMBER>. Unsigned range is from 0 to<PHONE_NUMBER>.
Maybe my issue is, that my integer value was detected as "double" instead of "integer".
If you need to handle a real float value handled as a double - this I didn't tested. Maybe the solution goes into the direction to use the current mappting to PDO::PARAM_STR but to add an if condition in https://github.com/catfan/Medoo/blob/master/src/Medoo.php#L756 that removes the quote chars from a string.

The double data should be PDO::PARAM_STR for database binding, and PDO::PARAM_INT is incorrect.
For generate(), I still think it should handle it as a string with quote(), because it indeed does that for binding.


Alt+Space doesn't prompt window menu

When in cmd.exe, or any other window, Alt+Space prompts the window menu which allows you to navigate settings and other alternatives without using the mouse. It also enables visual cues (what letter to type for each alternative). But upon entering the bash shell, Ctrl+Space this gets blocked. Just like Ctrl+A, Ctrl+F, etc.
Upon opening it by Alt+Space, the menu is browseable withy visible shortcuts present

Upon opening it by mouse click, the menu is still browseable but the visual cues are missing

Microsoft Windows [Version 10.0.16299.248]

this is the default windows behavior and has nothing to do with WSL.

Then why does it stop working as soon as you enter bash?

because then you're in unix world - the keyboard keycodes alt+space might have a different meaning (as do quite a few other keycodes, btw)

@csholmq This is an interop area of improvement for the Windows Console team. For future issues regarding the Windows Console, which WSL uses, file it here: https://github.com/Microsoft/Console
The Console team has done alot of work to improve this area but you'll find the best improvements in Skip-Ahead builds. Since you're on FCU, you'll need to wait until official release of SCU before being able to sign up for Skip-Ahead.

Thank you for your answers. Makes sense.


Stubbing mocked suspend function returns null

fun testHandleCallSuccess() {

    val call = mock<suspend () -> Result<Int>>()
    val callback = Mockito.mock(Callback::class.java) as Callback<Int>
    runBlocking {
        whenever(call.invoke()).thenReturn(Result.success(0))
        baseViewModel.handleCall(call, callback)
    }
    verify(callback).success(0)
}

whenever(call.invoke()).thenReturn(Result.success(0)) will return  null!
Is this an issue of Mockito or this lib?
SO link: https://stackoverflow.com/q/61097992/8258130

I can confirm the issue on functional interfaces.
interface Supply : suspend (Input) -> Output

In tests the stub whenever(supply(input)).thenReturn(output) will return null instead of the specified output.
The issue does not appear when the functional interface is declared manually:
interface Supply {
    suspend operator fun invoke(input: Input): Output
}


Add badges to README

Add circle.yml, with coverage.
Add coverage badge.
Remove the npm badge? (looks too different from the others)

@machadoit npm badge must be present. I'll try to find a more similar badge


🐛 Format the content of an in-memory editor in VS Code without configuration

From https://github.com/biomejs/biome-vscode/issues/25#issuecomment-1872604874 — @ematipico asked me to create this here
Environment information
output of biome rage --daemon-logs
CLI:
  Version:                      1.4.1
  Color support:                true

Platform:
  CPU Architecture:             aarch64
  OS:                           macos

Environment:
  BIOME_LOG_DIR:                unset
  NO_COLOR:                     unset
  TERM:                         "xterm-256color"
  JS_RUNTIME_VERSION:           unset
  JS_RUNTIME_NAME:              unset
  NODE_PACKAGE_MANAGER:         unset

Biome Configuration:
  Status:                       unset

Workspace:
  Open Documents:               0

Discovering running Biome servers...

Server:
  Status:                       stopped

What happened?
It would be useful for Biome to be able to format the content of an editor which has never been saved (one which has no corresponding FS file). Here's an example:

Close all VS Code windows and quit the app. Open a fresh instance of VS Code with a blank window and no workspace. (Note that this step doesn't seem to alter the outcome.)
Open a new editor tab and paste in some copied source code text (e.g. TypeScript)
Verify that the language mode of the editor is correct for the pasted content (e.g. TypeScript) — in the case that it wasn't correctly auto-detected
Use the VS Code command "Format Document" from the command palette

Performing these steps results in an error modal with the following message:

Extension 'Biome' is configured as formatter but it cannot format 'TypeScript'-files

Expected result
However, it could accomplish this by treating the content the same way it does stdin and use the editor's current language mode to determine language.
In pseudo-code, the CLI operation that represents what I'm describing would be:
# FILE_EXT=<derived from editor language mode>
# e.g. ".ts"

# TEXT=<text content of editor>
# e.g. "function double(n: number): number { return n * 2 } const n = 5; double(5)"

printf $TEXT | biome format --stdin-file-path="file$FILE_EXT"

Which would result in:
function double(n: number): number {
	return n * 2;
}
const n = 5;
double(5);

Code of Conduct

[X] I agree to follow Biome's Code of Conduct

I think I see the problem here. I think the Biome extension didn't start because you didn't trigger any of the events that start the extension.
That's why you couldn't see any logs
Try to open a JavaScript/JSX/TypeScript/JSON file, and then create a new file.

Hi @ematipico:
Maybe this requires changing the strategic logic for extension activation? 🤷

Try to open a JavaScript/JSX/TypeScript/JSON file, and then create a new file.

I tried this approach in workspace with a biome.json configuration file at the root of the workspace and the result was no different. (Formatting works as expected for other text editors in the same workspace whose documents have filesystem representations.)
At this point it seems like there might be additional debugging in order — but first I want to clarify the expectations that prompted my initial comment:
When I set any VS Code extension as the default formatter for a language, I expect that it will be able to operate on the document content of any text editor that is in that language mode — whether that's associated with a workspace or not — whether or not there are any filesystem artifacts (like a config file), etc. The formatter functionality of such an extension should be independent of any of those variables and should be completely self-contained: it downloads any required binaries, allows default configuration via the VS Code extension settings, etc. If an extension supports custom behavior based on things like resolving configuration via files relative to a local (filesystem) workspace — those should be optional features, but not dependencies for operation.
I tried to illustrate this concept with the stdin example, but hopefully that description helps clarify where I'm coming from.

Aside: I've only been experimenting with Biome for a few days so far and haven't researched the roadmap, etc. — but it seems like this could be important in other scenarios, too — e.g. if Biome ever plans to offer a web extension.

Biome ever plans to offer a web extension.

That's something I always wanted to have, and with WebAssembly we should achieve it. Hopefully someone will help us :)


New FenderStrings

this change is not done yet it still needs to have some methods implemented for strings that were previously only implemented for lists, and there are a number of times where toString is called to use the rust std string functions but these methods can be implemented for the FenderString to eliminate those toString calls

its not letting me comment on it but @Redempt said

Since this is such a large changeset, could you try to summarize some of what you did? Some things in here seem unrelated to fender strings.

Can you give an example? I went through quickly and didn't see anything that wasn't just updating stuff to work with the new strings or the creation of the new strings themselves. I did see a macro for writing the out of bounds errors because there was just a lot of duplication and wanted to make sure they were all the same, but even that was because I was adjusting methods for the new strings.

Okay, I left that comment a while ago so I don't know what I was talking about specifically anymore.


Test the addition of a numbered object from another problem

Description
Fix bug when with copying numbered objects from one MCNP_Problem to another when the new number in the new problem is already in use in the old problem.
Fixes #466
Checklist

[x] I have performed a self-review of my own code
[x] I have added tests that prove my fix is effective or that my feature works
[x] I have updated the changelog

#466 MWE needs to be complete prior to merge so we can actually make sure the test makes sense.


Deprecation warning for<EMAIL_ADDRESS>when installing

Installing latest version (0.15.2), getting this:
npm WARN deprecated<EMAIL_ADDRESS>this package has been deprecated
npm WARN deprecated<EMAIL_ADDRESS>this package has been deprecated
npm WARN deprecated<EMAIL_ADDRESS>this package has been deprecated
npm WARN deprecated<EMAIL_ADDRESS>this package has been deprecated
npm WARN deprecated<EMAIL_ADDRESS>this package has been deprecated
npm WARN deprecated<EMAIL_ADDRESS>this package has been deprecated
npm WARN deprecated<EMAIL_ADDRESS>this package has been deprecated
npm WARN deprecated<EMAIL_ADDRESS>this package has been deprecated
npm WARN deprecated<EMAIL_ADDRESS>this package has been deprecated
npm WARN deprecated<EMAIL_ADDRESS>this package has been deprecated
npm WARN deprecated<EMAIL_ADDRESS>this package has been deprecated
npm WARN deprecated<EMAIL_ADDRESS>this package has been deprecated
npm WARN deprecated<EMAIL_ADDRESS>this package has been deprecated
npm WARN deprecated<EMAIL_ADDRESS>this package has been deprecated
npm WARN deprecated<EMAIL_ADDRESS>this package has been deprecated
npm WARN deprecated<EMAIL_ADDRESS>this package has been deprecated

Couldn't find any info on the deprecation, but workbox-* packages version 6.6.1 are all marked as deprecated on npm. Guess they just released it by mistake. Should we fallback to 6.6.0 instead?

@arusak it seems we've new version 7 (??, no release in the repo): https://github.com/GoogleChrome/workbox
I'll check changes to releasea new version here, thx

upps, wrong button


Can someone share the VOCA data？

can someone share the file : data_verts.npy, raw_audio_fixed.pkl, templates.pkl and subj_seq_to_idx.pkl, download is too slow.

the same problem, have u been resolved？

https://voca.is.tue.mpg.de/download.php Training Data (8 GB)


Update temperate-plateau.json

Why?

Top decrease the frequency of a structure that I can't see on GitHub mobile preview

no, this is just making flowers minimal.
@RaydenKonig  Whai u doing this


Switch from Changelog.md to GitHub releases

We'd like to publish release more often, and part of that is making the release process more streamlined so that the maintainers don't dread the busywork of cutting a release.
Part of that is automating creating PR's that bump the version... but there's a race condition because we don't keep the changelog routinely updated with every PR... so if the version bump PR is opened, and then another PR is merged, that other PR won't be mentioning in the release notes.
The easiest way to sidestep that is to switch to managing the release notes via GitHub releases and stop using a Changelog text file.
We've had this discussion of "flat file vs git tags / GitHub releases" on a number of open source projects that I help maintain, and the pros/cons typically boil down to GitHub releases are more convenient, but they are more difficult to grep offline and less portable for projects that are concerned about lock-in to GitHub.
:dependabot: is already tightly connected to GitHub so I don't think that's a concern. :joy:
And :dependabot: is built around the concept of internet access, so I don't foresee much need to be grep'ing the changelog while offline... Searching for a release right from the releases page (example) will generally be good enough, and advanced use cases can still grep the git tags content.
There's more streamlining to come, but this is a good incremental step to move us forward.
Related:

https://github.com/dependabot/dependabot-core/issues/7132

Good point... I'll try to consider that when automating it.
I personally prefer automation to only create a draft release instead of a real release because that way the human can edit the changelog before publishing... and yes, we can do so after publishing, but it's cleaner to do so before hand.
But we could pre-generate the gh command to use including the correct version in the GitHub Action workflow summary...
I wonder if the URL for creating a new release can deep-link to having the tag included as a HTTP query param? I'll look into it.


Assertion Failure When Closing Database

What steps will reproduce the problem?
1.open array of dbs, "db[n]"
2.close db using "delete db[n]"

What is the expected output? What do you see instead?
Expect db to close. Instead, see assertion failure:
main: db/version_set.cc:715: leveldb::VersionSet::~VersionSet(): Assertion
'dummy_versions_.next_ == &dummy_versions_' failed.

What version of the product are you using? On what operating system?
1.6.0 on Ubuntu Linux kernel 3.2.1, x86_64

Please provide any additional information below.

Original issue reported on code.google.com by<EMAIL_ADDRESS>on 3 Jan 2013 at 7:33

Fix here: https://github.com/google/leveldb/pull/3

Original comment by<EMAIL_ADDRESS>on 29 Aug 2014 at 3:59

n.b. you'll also get this error if you try to free a database object when there
are iterator objects still live. Make sure you free them first (via
leveldb_iter_destroy if you're using the C api).

Original comment by<EMAIL_ADDRESS>on 29 Aug 2014 at 7:24


NuGet exceptions when using multiple NuGet sources

Exception when creating the Test Project & installing MSTest.Framework. Fails when checking a NuGet source that doesn't contain the package - despite othe sources being available that do contain it
Workaround:

Generate tests.
Empty Test project created.
Manually install dependencies on newly created project.
Generate Tests.
Success

Thanks for the (hopefully!) useful extension, by the way.

To be honest the 'generate test project' bit has never really worked very well. I might just remove it as it causes more pain than it solves...

Project generation removed in https://github.com/mattwhitfield/unittestgenerator - a new version should be out in a couple of weeks - but it will have to be a different item in the marketplace as I no longer work for SentryOne 👍

https://marketplace.visualstudio.com/items?itemName=MattWhitfield.Unitverse is released now - it doesn't contain a 'fix' for this issue per-se - it removes project generation.


Document supported functions

I've added some "cheatsheet" explanations to the provided expressions from a combination of these sources for use as a quick reference:
https://www.gnu.org/software/bash/manual/html_node/Pattern-Matching.html
https://wiki.bash-hackers.org/syntax/pe#case_modification

renamed substring to pattern since pattern matching (*, ?, [^a-z]) work in envsubst
renamed position to n 🤷

Hey @mkatychev thanks for the PR, I took your changes and made some amendments in #31 which is merged.


[BugFix] fix str_to_map function in MV

Why I'm doing:

str_to_map is converted to str_to_map(split(..)) in parser, which is not acceptable when parsing the generated SQL
In FE, the function signature is str_to_map(string, string, string), but in BE the signature is str_to_map(array<string>, string), in which the input 1st string is converted to array<string> via array<string> split(string, string) function

What I'm doing:
Fixes #40862
What type of PR is this:

[x] BugFix
[ ] Feature
[ ] Enhancement
[ ] Refactor
[ ] UT
[ ] Doc
[ ] Tool

Does this PR entail a change in behavior?

[ ] Yes, this PR will result in a change in behavior.
[x] No, this PR will not result in a change in behavior.

If yes, please specify the type of change:

[ ] Interface/UI changes: syntax, type conversion, expression evaluation, display information
[ ] Parameter changes: default values, similar parameters but with different default values
[ ] Policy changes: use new policy to replace old one, functionality automatically enabled
[ ] Feature removed
[ ] Miscellaneous: upgrade & downgrade compatibility, etc.

Checklist:

[ ] I have added test cases for my bug fix or my new feature
[ ] This pr needs user documentation (for new or modified features or behaviors)

[ ] I have added documentation for my new feature or new function

[ ] This is a backport pr

Bugfix cherry-pick branch check:

[x] I have checked the version labels which the pr will be auto-backported to the target branch

[x] 3.2
[x] 3.1
[ ] 3.0
[ ] 2.5

@Mergify rebase


CI: fuzzing CI seems to not cache the corpus

It seems that even with the recent refactoring and improvements to the CI's caching behavior the fuzzing CI jobs still do not properly store and re-store their fuzzing corpuses and thus our fuzzing CI is practically useless.
Without the corpus in the cache the fuzzing CI has no memory of the past fuzzing artifacts and thus cannot built on-top of past successes and findings.

@gtrepta @Scott-Guest Just to be sure: has this been fixed in https://github.com/wasmi-labs/wasmi/pull/1234 ?

No, that PR didn't totally fix it. I think two issues here are that each job is sharing the same cache, and the corpus folder isn't considered when deciding to update the cache.
Given how much smaller the corpus is compared to the rust cache, I think it can be put into a separate caching step. Something like this:
- name: Fuzz corpus caching
  uses: actions/cache@v4
  with:
    path: ${{ github.workspace }}/hfuzz_workspace
    key: fuzz-${{ matrix.fuzz_target }}-${{ github.run_id }}
    restore-keys: |
      fuzz-${{ matrix.fuzz_target }}


NTLM authentication seems to be also supported

Is your feature request related to a problem? Please describe.
We have to test some Sharepoint pages, that require NTLM authentication. The keyword "New Context" has the parameter httpCredentials for Basic authentication: "Contexts do also support http credentials to be set, so that basic authentication can also be tested."
I tried this keyword for our pages and it seems to work also for NTLM auth out of the box.
Describe the solution you'd like
Could you please verify this and update the documentation, it's a huge plus point of your library and definitely worth mentioning.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
https://github.com/microsoft/playwright/issues/2662:
You can set http credentials for direct browser auth popups (basic auth, digest auth) on context level:
Our example of success:
[robot@mon-002 ~]$ curl -I https://xxx/organisation/alle
HTTP/1.1 401 Unauthorized
Content-Length: 16
Content-Type: text/plain; charset=utf-8
Server: Microsoft-IIS/10.0
SPRequestDuration: 3
SPIisLatency: 0
WWW-Authenticate: NTLM
X-Powered-By: ASP.NET
MicrosoftSharePointTeamServices: <IP_ADDRESS>69
X-Content-Type-Options: nosniff
X-MS-InvokeApp: 1; RequireReadOnly
Date: Thu, 18 Mar 2021 09:18:21 GMT
*** Settings ***
Library   Browser
** Test Cases ***
Example Test
New Browser    firefox
New Context    httpCredentials={'username': 'xxx', 'password': 'xxx'}
New Page   https://xxx/organisation/alle
Click     text=Sprache
Take Screenshot

Thanks for the heads-up! Will be investigating with upstream if this is intended and documenting it.

@all-contributors please add olga-zm for documentation

@all-contributors please add olga-zm for bugs


Feedback for "Enterprise Accounts"

In the page https://help.sap.com/docs/btp/sap-business-technology-platform/enterprise-accounts
https://www.sap.com/partners/partner-program/partneredge-build.html
This link is broken.

Thank you for your feedback! We’ll look into it and come back to you if we have any questions.

Thanks a lot for spotting this - the link will be updated to https://www.sap.com/partners/partner-program/build.html with the next release on SAP Help Portal.
Kind regards, Anna