missing config for esm_foldseek_model.py

1)for some reason esm_foldseek_model.py badly formatted.
2) I can't find config file which correspond to esm_foldseek_model.py
3) I can't find training data for this model on google drive.
4)I really interested to check strategy provided below.
from your publication:
"In Strategy 1, there is a requirement for simultaneous prediction of both residue and Foldseek tokens.
Intuitively, if the accuracy of Foldseek or AF2 structures is insufficient, predicting them simultane-
ously may result in suboptimal outcomes. On the other hand, Strategy 2 intentionally discloses
structure token information during the input phase, allowing the model to primarily concentrate on
predicting residue types. Overall, the performance disparity between the two masking strategies is
not considerable, with Strategy 2 usually exhibiting some improvements"
I would say results are almost identical.
I can suggest Strategy 3 without masking,
input  : EsmFold predictions in SA format, output :AF2 predictions in SA format.
as second choice can be taken ProstT5 predictions
what  need to be done is training set : it is requires some preprocessing of large amount of data.
compare  EsmAtlas data (600M proteins) with AF2 data(200M proteins)
find proteins with identical sequences and convert them into SA (EsmFold and Alphafold2)
my expectation :number of such identical sequences will be large enough.
I don't think we need run training from scratch it can be implemented as fine-tuning procedure.

Hi, thank you for your kind suggestions!
For question 1) and 2), the file 'esm_foldseek_model.py' was used in previous tests and now we don't need it anymore, so we just removed it.
For question 3), as detalied in README, we are preparing the pre-training data and will release it once our paper is published.

For the training strategy, that is interesting! But we are a bit confused about why we should do it. If we want to predict the structure tokens, why don't we mask them directly but use the tokens generated by EsmFold?  Further, if we continuously fine-tune the SaProt with EsmFold data, what kind of inputs should we use for downstream tasks, i.e. AF2 structures or EsmFold structures?

if we are talking in terms of masking,
difference is what to mask.
I suggest take  pairs of 3d-predictions(in : esmf,out :af2)
for the same protein sequence and
mask 3di residues in esmf  which are different from  af2 prediction.

What do we expect the model to learn through this strategy? As illustrated in paper, we only mask residues (i.e. accurate label) to force model to recover them with the aid of structure information. But what can our model learn from revising the wrong EsmFold tokens and how can it serve the downstream tasks?

yes,
technically it should work without any addition training if in your small example you will output the most probable SA.
"outputs = model(**inputs)
print(outputs.logits.shape)
['Md', 'Ev', 'Vp', 'Qp', 'Lr', 'Vy', 'Qd', 'Ya', 'Kv']
torch.Size([1, 11, 446])
I  just suggest fine tune your model on specifically masked 3Di (difference between EsmFold and AF2)

you mean compare AS esmfold prediction with af2 prediction in 10 downstream tasks.
yes, it will be interesting

Yes, I'll do the experiment later and show you the result. Thank you for your suggestions!

it is  really intriguing question which you can answer : what is better for downstream practical tasks af2,esmfold (or prostT5)?

Actually we expect that AF2 structures improve model's performance most because both EsmFold and ProstT5 use AF2 structures as training set.

However, I ran into a problem when downloading EsmFold structures. I cannot retrieve necessary proteins given their UniProt IDs (EsmFold database doesn't support this).

It is exactly why I suggested my help:
EsmFold use different set of accessions.
you have two options

using AF2 protein sequences try to find corresponding  EsmAtlas accessions (protein sequences need to be identical)
it can be done directly or using precalculated foldseek AF2 and EsmAtlas databases
another way is straightforward, just refold using EsmFold tools all AF2 sequences which you are using in downstream tasks, I don’t think it is very large number.
Can you find out number of proteins in your 10 tasks?
for short proteins 300-500aa esmfold is  fast.

as I understand current limit for your modrl is 1024aa.

Actually we tried both these two options. For directly folding sequences using EsmFold, it took about 30s to generate 1 pdb file, but there are 7000 samples in Thermostablity dataset. So I don't think this is an efficient way to construct EsmFold dataset.
However, as EsmAtlas use MGnify ID as index, we have no idea how we can convert all UniProt IDs to corresponding MGnify IDs.

no direct way convert mgnifyid to uniprotid
only  mapping by sequence hash.
or
7000*0.5/2=1750minutes
~ 30 hours , I can do it ,if you provide protein fasta.
technically, I  can take protein sequences from LMDB Thermostability database and create database with new Esmfold SA.
if you are interested ,let me know, I can start processing tomorrow morning(ET)

Thank you for your kindness! You can find the protein sequences in LMDB dataset (e.g. Thermostability). We provide the protein UniPort ID, protein sequence and fitness in such dataset. By just replacing the original SA sequence with EsmFold SA sequence, I can evaluate the performance once you give the LMDB dataset!

I have started folding
I take protein fasta from “normal” test train valid directories
for me much easier provide you results in pdb format which you convert in LMDB yourself,
or you can send me python scripts which you use for LMDB creation.
I see  difference between af2 and esmfold output;
latter do not provide pLDDT in separated file and  scores can be retrieved only from pdb file.

PDB files are OK as we have a script to process them. You can send me a zip file containing all structures.

I have mapped AF2 accessions to EsmAtlas accessions using crc64 from metadata, intersection is close to 0.
7344183 sequences have identical crc64.
now we have only one way run comparisons, refold all corresponding sequences from datasets.
I think, Thermostability dataset will be ready tomorrow,
only problem , on my V100 I can't fold proteins >840aa .
251 - test
116 - valid
976 - train
if you need full set you need fold them using A100.
a

That's ok, thanks to your help! I'll refold all long sequences by A100 and run comparisons once you provide the information.

https://ftp.ncbi.nlm.nih.gov/genomes/Viruses/Thermostability.fold/

We'll report the results as soon as possible!

Hi! I have finished training with AF2 structures and EsmFold structures on Thermostability task.
The spearman's ρ for AF2 structure is 0.720 and for EsmFold is 0.717, which shows that using AF2 structure is more advantageous than EsmFold structure.
despite that, using EsmFold structure as additional input than sequence only can improve the performance so we indeed can use EsmFold structure as an alternative when AF2 structure is not available.

interesting  to compare  all others downstream tasks.
0.72 vs 0.717 - looks like very small difference.
can you mask all Letters which are different between Esmfold an Af2 and rerun inference step?

We expect that AF2 structures outperform EsmFold structures on all other tasks with small or big margin.
I can mask the mismatching structure tokens between AF2 and EsmFold structures and test the performance again. We anticipate the result to be worse than using EsmFold structures.

if margins always small -no interest to improve esmfold using saprot.
experiment with masking difference between esmfold and af2  :   how useful are positions which are different beetwen af2 and esmfold for downstream tasksa

I have started ProstT5 predictions on the same Thermostability  protein set.
It  will be interesting to compare.
output will be  AA+3Di , no pdb files.
What do you think  about it?

As ProstT5 leveraged AF2 structures for pre-training, it aims to convert AA to 3Di following AF2 pattern. Besides, it doesn't provide pLDDT scores for masking inaccurate regions. So I guess using structure tokens generated by ProstT5 will result in better performance than ESM models but worse than EsmFold or AF2.
If you use ProstT5 to predict structure tokens, you can give me the complete dataset as the "normal" dataset, so I can directly use it for evaluation.

For experiment with masking difference between esmfold and af2, one problem to solve is how we deal with the low pLDDT regions. AF2 and EsmFold structure have different scores so we cannot directly mask all tokens below a certain threshold.

ProstT5 results  will be ready in couple days
I think, idea with masking difference between af2 and esmfold is not very fruitful.
it was inspired by
https://proceedings.neurips.cc/paper/2018/file/d54e99a6c03704e95e6965532dec148b-Paper.pdf

Maybe we just need to test the performance of using structure tokens produced by ProstT5.

yes,please wait

hello, prostT5 results are ready, same directory *.SA files.
same issue, I can;t predict 3Di on my gpu for very long proteins
it looks like ProstT5 is very unstable ,  many proteins have  just vvvv or dddd...
s1.py script which I use for 3Di prediction

I also dicovered that ProstT5 always prints a long list of 'd' in the structure tokens. Anyway, I will complete the ProstT5 dataset and evaluate its accuracy.

We have tested SaProt's performance on Thermostability using structure tokens generated by ProstT5, unfortunately the spearman's ρ is only 0.705, which is worse than 0.717 by EsmFold and 0.720 by AF2. This suggests that using ProstT5 to generate foldseek tokens may not be beneficial.

difference is not very big, I would say , results are comparable.
Only question for now :
Do you want to try   predict AF2 SA using as input ProstT5 or EsmFold SA.

Actually I think it's not so much neccessary to additionally train a model to  revise SA tokens. ProstT5 did the same thing to generate SA tokens based on AF2 ground truth. Maybe it's not much beneficial.

I would say, ProstT5 results are not convincing.
it can be done better,
smaller model,longer sequence,faster inference,higher SA quality
have you seen
https://pytorch.org/blog/flash-decoding/

We did additional experiments on all downstream tasks for EsmFold and ProstT5 as below:

ProstT5 exhibits potential but for now it is not as accurate as AF2 structures. I don't know whether we should focus more on the accuracy improvement of ProstT5 prediction.

yes, you can try directly  predict Foldseek token from protein FASTA without ProstT5 or EsmFold predictions.
I just try  suggest  third strategy for training,how to choose masked tokens :
compare AF2 and ProstT5/EsmFold predictions and mask  difference instead random.
is it better strategy ?
I don’t know,only experiments can confirm.
I have enough data for training,
8M  EsmAtlas/AF2  folded pairs with identical protein sequences (for now only accessions)
I have checked your model provided as example in readme  on some folded proteins converted to AA+3Di
using  max(expit(…logit))
without any masked residues  it  can replace in output some  AA or 3Di  tokens ,1-2 tokens per protein.

I don't know whether I understand you correctly. Do you mean that we adopt third masking strategy for pre-training SaProt, or you want to train a foldseek token predictor instead of using AF2 structures when you use SaProt?

just third strategy for SaProt pretraining.
I just thinking how difference between EsmFold and AF2 predictions can be used

separated task for SaProt: directly predict foldseek tokens from protein fasta ,better than ProstT5

For pre-training strategy, we expect model to grasp co-evolutionary information through flexible masking. If we just mask the difference between EsmFold and AF2, there may not have enough tokens for prediction and model may not learn well by predicting residues on fixed positions.

If we just input residue sequences and output foldseek tokens like ProstT5, how can we ensure SaProt to perform better than ProstT5? Maybe ProstT5 is good enough and it's not neccessary to mask much effort for less improvement?

I just compared one out of 8M  esmfold/AF2 identical  pairs.
SA merged - 1 token from AF, 1 token from EsmFold,etc
ProstT5 has clearly visible problems with stretches of v and d at the ends in comparison with AF2
if you can fix it , it will be good step forward.

Sounds good if we can fix the problem.
I have a question that as we only have EsmFold-AF2 pairs, how can we refine ProstT5? Maybe we could just train a foldseek optimizer to make structure tokens generated by EsmFold more similar to AF2?

In my opinion,
nobody analyze difference between esmfold and af2 on  global scale.
using SA  this difference can be exposed
for af2/esmfold  we have 8M training set.
If you need I can give you list of accessions pairs.
about ProstT5 : try to contact with authors,
may be if interested they can provide data for training.
ProstT5 is bidirectional - aa to 3di and 3di to aa
it can be interesting try to train saprot in both directions : af2 to esmfold and esmfold to af2
and so on.

I think maybe TMscore or other metrics like LDDT is more reliable for comparison between AF2 and EsmFold, so using SA is a more indirect way?
It's interesting to train saprot in such way, but I guess we are limited to do such experiments due to high computational cost.

it can be implemented as finetuning with LORA.
probably,it is enough to see if some progress in prediction will be achieved.

it will be interesting run just inference part :
take 8M esm/af2  foldseek sequences  ,mask difference in input ,
run model ,take max(expit(…logit))  and  calculate statistics : which  input sequences  closer to saprot prediction.
I understand saprot trained on af2, but it doesn’t automatically mean that prediction  will be closer  to af2 as well.

it will be interesting run just inference part : take 8M esm/af2 foldseek sequences ,mask difference in input , run model ,take max(expit(…logit)) and calculate statistics : which input sequences closer to saprot prediction. I understand saprot trained on af2, but it doesn’t automatically mean that prediction will be closer to af2 as well.

Can you give an example about how to mask and predict the difference in input?

It's worth noting that SaProt is not pre-trained to predict structure tokens but only predict masked residues. That's why it will predict the same # when the structure token is #. SaPort views structure tokens as additional spatial information during pre-training for better residue prediction. For detailed description, we refer to our paper Section 3.3.2.

you said in your publication , you  have tried both strategies,and strategy mask AA  ) just slightly better.
we started whole thread from this assumption, SaProt can Predict 3di tokens.

SaProt can predict 3di tokens if trained based on this objective. You said you want to see "which input sequences closer to saprot prediction." Do you mean that we only mask all different structure tokens, keeping other structure tokens and all residues visible. Then we input the sequence into SaProt and let it predict the masked postions, anticipating it to recover the structure tokens rather than predicting #?

yes.

It's interesting but I think SaProt will predict # if it sees # at the position because it is not traiend to recover structure during training. Even if it outputs tokens that are different than input, I don't know what does this mean.

I see … (in publication, marked blue), you just missed this opportunity
when you  provide pretraining source code (after publication?) I will try to finetune  your model using identical 8M esm/af2 training set

Actually we provide pre-training source code (see model/esm/esm_lm_model.py and dataset/esm/esm_foldseek_dataset.py). The pre-training dataset will be released after our paper published. We are sorry that we may not be able to do this experiment but we'd like to provide any help if needed.

uh-oh
1)you don’t have training set which I want to use for fine-tuning,I am going prepare it myself
2) I don’t see config file which I need to use

We just uploaded pre-training config. You could check it on config/pretrain/saprot.yaml.
For your version of dataset, it is right if you want to train a model to recover the difference between AF2 and EsmFold.

Hello,
I just curious , have you ever tried to replace whole your model which you pretrained  using masking strategies
with trivial “one hot” with 441 letters alphabet?
and compare results on downstream tasks?

Hi,
I'm sorry but I don't get what is trivial one-hot input? In our model, tokens are at first transfered into token ids (maybe here is what you mean by "one-hot") and then fed into torch.nn.Embeddings to be mapped into high-dimentinal embeddings. Could you please explain more?

let' take example from your readme:
input
['Md', 'Ev', 'Vp', 'Qp', 'Lr', 'Vy', 'Qd', 'Ya', 'Kv']
outputs = model(**inputs)
output
torch.Size([1, 11, 446])
as I understand you fed this tensor to downstream tasks as input , right?
model has 35M or 650M parameters.
my "one-hot" idea:
directly convert input to output without model,
just set "1"  to one out of 446 cells using tokenId as index
(all others set "0")

one hot is first trivial recommended embedding

Actually this output with shape [1, 11, 446] is the logits for predicting tokens at all positions. You can consider it to be a combination of SaProt backbone and a language model head (to convert representations into logits). If we want to use SaProt for various downstream tasks, we typically keep the backbone and add a fully connected network on top of it to do classification or regression task.
I'm not sure why we should use "one-hot" and could you please explain a bit more about your idea?

my idea ,for downstream tasks completely exclude SaProt backbone and use only fully connected part.
as input will be use SA tokens :
Ab Cd Ef… converted to tokenids

We have not compared SaProt to the "one-hot" idea yet because this seems to be contradictory with our motivation, i.e. to pre-train a large language model for general purpose. nevertheless, it's interested to see how simple "one-hot" network works in various downstream tasks.

I can’t say anything about 650M
but 35M model from my   perspective
is close to  Identity Matrix.
if I  train   backbone model  with LORA
on  non masked AF to  AF
or ESM to ESM I  very fast receive loss close to 0
but if I train Esm to AF or AF to Esm,
model is not trainable,loss between 0.5-1.0
I have tried  two  variants :
labeled   only difference
between Af and Esm
or labeled all residues.
I really curious  which loss you had at the end of pretraining?

the loss between 0.5-1.0 seems to be weird. Maybe you should try pre-training the full model, not with LORA?
This is the loss trend of SaProt 35M pre-training:

on your graph final loss >2?

Yes, and I think it would be the same for ESM-2 pre-trained 35M.

I would say,final loss =2 is very high
just try to pretrain “identity”
do not mask anything,but labels provide the same way.
very soon you will see loss =0
I have checked it with lora,
without lora I am expecting the same result
p.s.
r:32
alpha:64

To my knowledge, pre-training means you have to tune the full model without lora. Further, If you don't mask anything but you want the model to predict the label (i.e. amino acids), there is no doubt that you will see the loss to be 0 very soon as the information is leaked to the model.

I don’t say that “identity”pretraining is really useful,
it is  just estimation  how low loss can be.
from my perspective ,in your case ,
perfect  loss is about 0.05 ,2 is very high
on some  esm-af data which I used for pretraining with lora I have achieved 0.8 , it also very high.
I have stopped pretraining and start analyzing
why af and esm produced  very different 3di on almost identical, according tmscore,  structures (~15%)
difference looks very random,and reflect instability
in foldseek algorithm.
Right now I try to improve it. problem description you can see  : (read full thread)
https://github.com/steineggerlab/foldseek/issues/209


GitLab Markdown Preview Plugin

Hello, I would like to contribute the following plugin. It renders Markdown through the GitLab API, similarly got ghmarkdown.lua.
I hope this PR follows your requirements.
I am happy to take any kind of improvements and suggestions.

I wonder if the plugins should be merged, considering how similar they are. What do you think?

@notvanessa You could add a configuration option to ghmarkdown to switch from Github's API to Gitlab's API.

I would like to keep it separated it is just cleaner this way, but I don't use the plugin anymore so feel free to close the PR


Extension Agent doesn't update if type wrong url

Component:
Extension Agent
Reproduce steps:

Type a URL that takes a long time to response

If now you type a correct URL, it can get correct agent information. This value will be replaced by the wrong value after step1 timeout

What I did is add a forward port to virtural box. (host 9099 to vm 9099)

Browser agent was deprecated


tour: [Dark mode on website]

Context: https://tour.golang.org/basics/10
It's not about code that I want an issue to talk, it's about the website of "A Tour of Go". It could be great you can add an option on the Menu button that turns the site to dark mode, there so much brightness on the website. I hope you could improve that! Thanks :)

Thanks for the request. This is a dup of #409, so I'm closing here in favour of the older thread.


After introducing quicklist (recent Redis unstable), Jedis unit test is failing

What change makes unit test failing?

quicklist, proposed from https://github.com/antirez/redis/pull/2143, merged by https://github.com/antirez/redis/commit/05ba119fbb9b0e05b7cca83bee8b01041e8877f2

Build output (short ver.)

Results :

Failed tests:
  ObjectCommandsTest.objectEncoding:28->Assert.assertEquals:144->Assert.assertEquals:115 expected:<[zip]list> but was:<[quick]list>

Seems like we can just change expected value and everything would be okay.

We can also remove that test, or just compare it with *list.
@xetorthio @marcosnils Which one is proper way for you?

@HeartSaVioR as Jedis tests should always be run against unstable Redis branch I guess we can change the assertion value to quicklist and we should be ok.

@marcosnils already fixed it in #846. Can we close this?

@marcosnils Thanks for following up!


Clarify audit defaults for M365 Business

It says "Audit logging is turned on by default for Microsoft 365 and Office 365 enterprise organizations"
Does this means orgs with M365 Business Basic/Standard/Premium don't have it enabled by default?

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

ID: f6aa9c0c-c1ba-a464-3724-2060b61df19b
Version Independent ID: 1d2e74f1-d2b8-6cdf-a9ea-e5d9f67a35b0
Content: Turn auditing on or off - Microsoft Purview (compliance)
Content Source: microsoft-365/compliance/audit-log-enable-disable.md
Service: o365-seccomp
GitHub Login: @robmazz
Microsoft Alias: robmazz

It should also be clarified on https://learn.microsoft.com/en-us/microsoft-365/compliance/audit-standard-setup?view=o365-worldwide where it says "Audit (Standard) is enabled by default for most Microsoft 365 and Office 365 organizations"

@JMCA2 Thank you for your feedback. We have made changes to the document via PR#https://github.com/MicrosoftDocs/microsoft-365-docs/pull/11642
It is enabled by default for all organizations.
Once the author approves, the changes will be live.
Thanks
Sri

@JMCA2 Thanks for your feedback! New issues and pull requests for this content are closed while we update this content to support upcoming feature improvements.


Feature-Request: Multiple floors, floors selectable by checkboxes

Is your feature request related to a problem? Please describe.
It would be cool if one card supports multiple floors selectable by checkboxes.
Describe the solution you'd like
Add Multiple floors, floors selectable by checkboxes
Describe alternatives you've considered
Creating own card for every floor
Additional context
Add any other context or screenshots about the feature request here.

The Three.js library does not support this feature, what I can propose is to add the possibility to split the model I export using the plugin (https://github.com/adizanni/ExportToHASS) into one zip file for each floor giving you the possibility to have only one model but 1 card for each floor. Even then this would take a significant amount of time.


Will this project useful in Cyberpunk 1.2.1

nope. updated cameras are on my patreon. https://patreon.com/Otis_Inf


Externalize localization strings

🙋 Feature Request
I was exploring using useComboBox and noticed it says internationalization is handled. After exploring I realized that the localization strings for every language are literally included in the build for @react-aria/combobox. I was disappointed by this because it means that there are translations in there for languages I need to support as well as potentially missing other languages that I do want to support.
In addition, it means that we're sending the localization strings to clients that don't need them. That adds up.
I'd like to invert control on localization strings so I can import a build of react-aria packages that does not include the localization strings and instead I provide them myself.
🤔 Expected Behavior
In my mind it could be a part of the API contract of useComboBox:
useComboBox({
  ...props,
  localization: {
    'en-US': {
      "focusAnnouncement": (args, formatter)=>`${formatter.select({
              true: ()=>`Entered group ${args.groupTitle}, with ${formatter.plural(args.groupCount, {
                      one: ()=>`${formatter.number(args.groupCount)} option`
                      ,
                      other: ()=>`${formatter.number(args.groupCount)} options`
                  })}. `
              ,
              other: ``
          }, args.isGroupChange)}${args.optionText}${formatter.select({
              true: `, selected`,
              other: ``
          }, args.isSelected)}`
      ,
      "countAnnouncement": (args, formatter)=>`${formatter.plural(args.optionCount, {
              one: ()=>`${formatter.number(args.optionCount)} option`
              ,
              other: ()=>`${formatter.number(args.optionCount)} options`
          })} available.`
      ,
      "selectedAnnouncement": (args)=>`${args.optionText}, selected`
      ,
      "buttonLabel": `Show suggestions`,
      "listboxLabel": `Suggestions`
    }
  }
})

Of course, these could be imported from react-aria to make it easier for most folks:
import {useComboBox} from 'react-aria/unlocalized'
import {enUS} from '@react-aria/combobox/localization'

useComboBox({
  ...props,
  localization: {
    'en-US': enUS
  }
})

Also, it may be good to specify a fallback (in the event a translation isn't available:
import {useComboBox} from 'react-aria/unlocalized'
import {enUS} from '@react-aria/combobox/localization'
import {enES} from 'my-own/localization'

useComboBox({
  ...props,
  localizationFallback: 'en-US',
  localization: {
    'en-US': enUS,
    'es-ES': enES
  }
})

😯 Current Behavior
Right now all the localization strings are included and most are unused for all clients.
💁 Possible Solution
This would naturally be a major breaking change to implement on top of existing components. So I suggest a separate build for all packages that excludes the internationalization files (hence my imports are react-aria/unlocalized as an example). There would also need to be some kind of build to generate the localization files.
🔦 Context
I'm building an app that I do want localized, but I don't want my Spanish-speaking users to pay the cost of 33 other languages for every react-aria hook that comes with baked-in localization for all the other languages.
💻 Examples
N/A
🧢 Your Company/Team
Not Adobe. I'm building course material for https://EpicWeb.dev and considering using React Aria in that material.
🎁 Tracking Ticket (optional)
N/A

Definitely something we want to do. I wrote up something similar in https://github.com/adobe/react-spectrum/discussions/2999#discussioncomment-2697600 as well. The separate unlocalized build is an interesting idea to solve the breaking change problem.

I don't want my Spanish-speaking users to pay the cost of 33 other languages

Ideally, they'd only load Spanish, and not the whole set of languages that your app supports (even if that's less than 33). But not sure how to do that without incurring lots of extra HTTP requests for each component, or doing something fancy with a specific bundler/SSR setup. Listed some options in my comment linked above. Do you have any thoughts on how the correct language pack could be loaded for an individual user?

doing something fancy with a specific bundler/SSR setup.

I think by inverting control you do have to force people to do some setup themselves. In every company I've been at that did localization we had to do something fancy with localization strings and everywhere had a different approach. I don't think a library can really solve this problem generically. But you definitely will want to have guides for suggestions on how to do this.
The SSR story is the one that applies to me and I'm yet to try localization with Remix, but my impression is that I will treat my localization strings as data and load it in my loader. Once I dive deeper into that I'll probably have a more useful example to share.
For the non-SSR case, I think people could generate the localization strings they want included and have those available at build-time.


Configure Azure Pipelines

This pipeline configuration builds the application and produces a build for the Release configuration.

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.:x: RenatoCAGuimaraes sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.


Westeros tutorial: Addon technologies

This PR adds a new tutorial for explaining how to add "addon" technologies.
How to review
Run tutorial
Read through tutorials and see if the explanantions are understandable
PR checklist
~ - [ ] Tests added. Tutorial added~

[x] Documentation added.

[x] Release notes updated.
<!-- Add a single line at the top of the “Next release” section of
     RELEASE_NOTES.rst, where '999' is the GitHub pull request number:
<ul>
:pull:999: Title or single-sentence description from above.
-->

@OFR-IIASA , thanks for this. I suggested some typo corrections. Also, it will be useful to see the technology name in RES presented as "heating", more closely related to the technology name in the code (currently dh_house). I suggest changing the dh_house to hs_house and the label in RES to "heating system". What do you think?

@Thanks Oliver for the corrections. @khaeru this PR is ready to be merged. I checked it for the content and ran it. It also passed all the checks. If you don't have any concerns, I can merge it.

@khaeru this PR is ready to be merged. I checked it for the content and ran it. It also passed all the checks. If you don't have any concerns, I can merge it.

Thanks for the review, tag, and info! The conflict is due to changes (simplifications) I made in #463 (sorry!) so it's on me to clean up. I'll then merge.

Many thanks @OFR-IIASA for the new tutorial! 🎉


fix libdef for navigator.mediaDevices.getUserMedia

fixes #8160

Awesome!  Thanks!

Thanks for the PR!
Can you change the tests to be in tests/ (and in that format) instead of newtests/?
Unless they need some special functionality of newtests/, it's easier for us to test and update tests/

I can add new tests if you like.  Is that what you're asking?  I only touched one file and didn't touch the tests.
On Tuesday, November 19, 2019, 3:56:57 PM GMT+9, George Zahariev<EMAIL_ADDRESS>wrote:

Thanks for the PR!
Can you change the tests to be in tests/ (and in that format) instead of newtests/?
Unless they need some special functionality of newtests/, it's easier for us to test and update tests/
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.

Sorry.  I confused this with a different thread.  I see now that I'm only Cc-ed for having raised the issue.  Sorry for the confusion.
On Tuesday, November 19, 2019, 6:18:19 PM GMT+9, Douglas Mennella<EMAIL_ADDRESS>wrote:
I can add new tests if you like.  Is that what you're asking?  I only touched one file and didn't touch the tests.
On Tuesday, November 19, 2019, 3:56:57 PM GMT+9, George Zahariev<EMAIL_ADDRESS>wrote:

Thanks for the PR!
Can you change the tests to be in tests/ (and in that format) instead of newtests/?
Unless they need some special functionality of newtests/, it's easier for us to test and update tests/
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.

@gkz done!


server/shadow: Fix incorrect bitmap fragment update.

Legacy bitmap update might fail with 'fast path update size (xxxxx) exceeds the client's maximum request size (xxxxx)'
Original code might update last fragment with exceeded fragment size incorrectly. Fix the logic to prevent it.

@freerdp-bot test


Desc

#108   updated description  .

Please write a meaningful PR title and comment describing the changes done. Also, squash your commits before you send a PR, so many commits for a single PR are not acceptable.

@gpsuhas20 please be active and update your pull request as suggested by @PragatiVerma18

There have been no updates since 15 days @gpsuhas20 I will have to close this PR in case there is no activity. Please be active and do changes as requested.


Inbuilt groups for permissions

Inbuilt groups for permissions, allow us to be quicker with group lookups, and create custom groups easier for specific permissions.
This creates group + group_member tables, + adds some plumbing on the ProjectPermissions table.
Would require the pulumi bot to connect to metamist to update group members, probably not a hard task tbh.

When adding tests, I realised the method names and implementations are a bit over the place, so I pulled them apart, renamed a bunch and added cleaner implementations in some places.

Codecov Report
Attention: 399 lines in your changes are missing coverage. Please review.

Comparison is base (d5e9e84) 72.05% compared to head (f4028e4) 71.20%.
Report is 194 commits behind head on dev.

Additional details and impacted files
@@            Coverage Diff             @@
##              dev     #568      +/-   ##
==========================================
- Coverage   72.05%   71.20%   -0.86%
==========================================
  Files          90      116      +26
  Lines        7747     9254    +1507
==========================================
+ Hits         5582     6589    +1007
- Misses       2165     2665     +500

Files
Coverage Δ

api/routes/__init__.py
100.00% <100.00%> (ø)

api/routes/sequencing_groups.py
65.38% <100.00%> (ø)

api/settings.py
76.74% <100.00%> (+2.38%)
:arrow_up:

api/utils/openapi.py
42.85% <100.00%> (ø)

db/python/enum_tables/enums.py
91.66% <100.00%> (+11.11%)
:arrow_up:

db/python/layers/participant.py
68.34% <100.00%> (+2.37%)
:arrow_up:

db/python/layers/search.py
89.36% <100.00%> (ø)

db/python/layers/sequencing_group.py
57.03% <100.00%> (-0.86%)
:arrow_down:

db/python/layers/web.py
88.70% <100.00%> (ø)

db/python/tables/participant.py
55.38% <ø> (+3.84%)
:arrow_up:

... and 56 more

... and 12 files with indirect coverage changes

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


Travis CI: Add Python 3.8

https://devguide.python.org/#status-of-python-branches
https://devguide.python.org/devcycle/#end-of-life-branches # Python 3.5 EOLs in one month.
Also, duplicate keys are not allowed so only one will be used...

Thanks, @cclauss!
Do version numbers need quotes now?

Yes they do for allow_failures to work.  Much has been written about the problems of floating point numbers in yaml files.  Like the fact that 3.10 == 3.1 which is will soon be a problem now that Python 3.9fc1 has been released.

Thanks, @cclauss!
PR #208 supersedes this.


Check checksum.

Currently we ignore the incoming checksum, this should be checked and the packet dropped accordingly.

Ip done in: 4c9ad1be800da4b4e966e4b3e0fe70228bb77a45

There's an interface for checking transport-layer checksums in tcpip now which would be useful here: https://github.com/mirage/mirage-tcpip/pull/277 .

AFAICT this was fixed in https://github.com/mirage/charrua-core/commit/e1ef2ed492a57e0adfdaac45e0d7e86970b54797 !?

AFAICT you're right, thanks @hannesm !

Not really, only udp checksum is being checked, we’re still missing ip IRC.
On Tue 31. Oct 2017 at 17:45, Mindy Preston<EMAIL_ADDRESS>wrote:

Closed #10 https://github.com/mirage/charrua-core/issues/10.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/mirage/charrua-core/issues/10#event-1319183333, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAMdEMeNvXzjw36al-19Z6PbuZwXc-PBks5sx066gaJpZM4F7T4H
.


Game of Life example does not compile

Is there an existing issue for this?

[X] I have searched the existing issues.

Is this issue related to iced?

[X] My hardware is compatible and my graphics drivers are up-to-date.

What happened?
I don't think this is an issue with the example, but rather it's dependency, but since it doesn't seem to have GitHub repo, I'm not sure what else to do.
I wanted to run the Game of Life example using cargo run --package game_of_life. Looked promising, but after some time I got:
   Compiling tracing-attributes v0.1.26
error[E0659]: `palette` is ambiguous
 --> style\src\theme.rs:4:9
  |
4 | pub use palette::Palette;
  |         ^^^^^^^ ambiguous name
  |
  = note: ambiguous because of multiple potential import sources
  = note: `palette` could refer to a crate passed with `--extern`
  = help: use `::palette` to refer to this crate unambiguously
note: `palette` could also refer to the module defined here
 --> style\src\theme.rs:2:1
  |
2 | pub mod palette;
  | ^^^^^^^^^^^^^^^^
  = help: use `self::palette` to refer to this module unambiguously

For more information about this error, try `rustc --explain E0659`.
error: could not compile `iced_style` (lib) due to previous error
warning: build failed, waiting for other jobs to finish...
PS iced>

What is the expected behavior?
I would expect the example to compile, perhaps even run.
Version
master
Operating System
Windows
Do you have any log output?
No response

Update your Rust toolchain!

I just want to add that this single line (pub use palette::Palette;) is the only thing preventing iced from compiling under rust 1.70.0, which is the latest version available in Debian right now. I no other breaking change is going to be introduced, could this one be reverted for the sake of Debian users?


⚠ Bofrost.be has degraded performance

In 48b188c, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 948 ms

Resolved: Bofrost.be performance has improved in 0106dbe after 9 minutes.


Integrate Rails 7

Hello man! How can i integrate ngrok-go in my Rails 7 App ? Maiby use case link...

This is a Go library, not Ruby. We may at some point build a Ruby integration on top of the ngrok-rs crate which may have some rails integration, but that work hasn't been planned yet.


Invoking REST API on one or more machines in cluster

NOTE: GitHub issues are reserved for bug reports only.
Please read the CONTRIBUTING.md guidelines to learn on which channels you can
seek for help and ask general questions:
https://github.com/Kong/kong/blob/master/CONTRIBUTING.md#where-to-seek-for-help
Summary
The documentation is not entirely clear (so perhaps this is a documentation bug).
We have N nodes clustered insofar as they all point to the same database.  We do have custom plug-in scripts and of course we deploy those to each node as well.
We have curl scripts to configure APIs and Plug-Ins using the admin REST interface.  Ideally we would only run those curl scripts on one node.  The other nodes would update after polling database changes.
Can you clarify whether this one-node approach is correct? Otherwise, what are the ramifications of running them in parallel against all of the nodes, given that any given node could be polling the database for changes simultaneously.
Steps To Reproduce

Additional Details & Logs

Kong version ($ kong version)
Kong debug-level startup logs ($ kong start --vv)
Kong error logs (<KONG_PREFIX>/logs/error.log)
Kong configuration (registered APIs/Plugins & configuration file)
Operating System

The whole concept of a single db and a Kong cluster is indeed to run it against one node and let the other nodes pick up those changes via DB polling. No need for simultaneous parallel creation calls or that weirdness.


⚠ Homepage (omg.lol) has degraded performance

In 7031693, Homepage (omg.lol) (https://8bit.lol/) experienced degraded performance:

HTTP code: 503
Response time: 856 ms

Resolved: Homepage (omg.lol) performance has improved in 4af8c41 after 24 minutes.


Reload to get slide number

Just testing and had to save and reload to get slide numbers correctly.

Do you have latest version of the plugin installed and running? I had same issue when I had older version, and installing newer did not replace that. Unistalling both first with Windows "add/remove programs" seems to help

Jumping in here...also experienced this as well with a single presentation open. Current builds of both as of today. FWIW, I was using the Web Buttons in the browser...not on the Stream Deck.

@mntechnogeek Thanks for the feedback. A couple of questions here:

When you had this issue, did slide number feedback just stop completely, or did it just pause for one slide and then restart?
Did you have multiple Presentations open at the time?
If possible, could you send me a copy of the add-in logs for this machine? You can access these from the OSCPoint ribbon menu

I think the add-in might be getting confused about slideshow mode/edit mode and hence stopping slide number updating, but logs will help me confirm this.


New version: FixedEffects v0.6.0

Registering package: FixedEffects
Repository: https://github.com/matthieugomez/FixedEffects.jl
Created by: @matthieugomez
Version: v0.6.0
Commit: c00fef6d6eb290280e330b294847018a91da21ef
Reviewed by: @matthieugomez
Reference: https://github.com/matthieugomez/FixedEffects.jl/commit/c00fef6d6eb290280e330b294847018a91da21ef#commitcomment-35681932

Your new version pull request met all of the guidelines for automatic merging.
I will automatically merge this pull request during the next cron job.
If you want to prevent this pull request from being auto-merged, simply leave a comment.
(If you want to post a comment without blocking auto-merging, you must include the text [noblock] in your comment.)

On a separate note, I see that you are registering a release with a version number of the form v0.X.Y.
Does your package have a stable public API? If so, then it's time for you to register version v1.0.0 of your package. (This is not a requirement. It's just a recommendation.)
If your package does not yet have a stable public API, then of course you are not yet ready to release version v1.0.0.

[noblock]


Extra margin over maximum limit reached error on login page

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Action Performed:

Open the app
Open settings
Open profile
Open contact methods
Click on Add
Add new contact method
Reopen and keep on clicking resend magic code until you see 'maximum limit reached' error
Sign out from the app
Login again with same user and observe margin above 'Maximum limit reached' error
Write any phone number without country code to trigger insert country code error and observe margin above that error

Expected Result:
App should keep consistent margin above all the errors displayed on login page
Actual Result:
App has 20px more margin on top for 'Maximum limit reached' error then any other errors on login page
Workaround:
Can the user still use Expensify without this being fixed? Have you informed them of the workaround?
Platforms:

Which of our officially supported platforms is this issue occurring on?

[x] Android / native
[x] Android / Chrome
[x] iOS / native
[x] iOS / Safari
[x] MacOS / Chrome / Safari
[x] MacOS / Desktop

Version Number: <IP_ADDRESS>
Reproducible in staging?: y
Reproducible in production?: y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://github.com/Expensify/App/assets/43996225/15e2299d-16e9-4f94-8e01-14b8aac982f2
https://github.com/Expensify/App/assets/43996225/c5267e99-eeef-433f-ba64-85e9d7632940
Expensify/Expensify Issue URL:
Issue reported by: @dhanashree-sawant
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1685719639488529
View all open jobs on GitHub

I can reproduce this. This is a pretty minor issue, but the padding is different here. @shawnborton curious for your take here. We should standardize on less padding here, right? (So using the padding of the phone number error in the bottom of the two videos in OP)?

Sounds good. Closing!


add TwoPCContractDeployment

Codecov Report

Merging #103 into release-rc4 will decrease coverage by 0.83%.
The diff coverage is 0.00%.

Continue to review full report at Codecov.

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


Mark the semver check optional in the ci workflow

Hmm, seems like this marks the semver check as successful even if it wasn’t. That’s not quite what we want


Unbounded sequence limited to 100 elements

When using fastrtpsgen to create a message from the included IDL, the sequence elements are limited to 100 elements. To my understanding they should be unbounded.
module sensor_msgs{
    struct Time{
        long sec;
        unsigned long nanosec;
    };

    struct Header{
        Time stamp;
        string frame_id;
    };

    struct LaserScan{
        Header header;
        float angle_min;
        float angle_max;
        float angle_increment;
        float time_increment;
        float scan_time;
        float range_min;
        float range_max;

        sequence<float> ranges;
        sequence<float> intensities;
    };
};

results in the following serialize method
void sensor_msgs::LaserScan::serialize(eprosima::fastcdr::Cdr &scdr) const
{
    scdr << m_header;

    scdr << m_angle_min;

    scdr << m_angle_max;

    scdr << m_angle_increment;

    scdr << m_time_increment;

    scdr << m_scan_time;

    scdr << m_range_min;

    scdr << m_range_max;

    if(m_ranges.size() <= 100)
    scdr << m_ranges;
    else
        throw eprosima::fastcdr::exception::BadParamException("ranges field exceeds the maximum length");
    if(m_intensities.size() <= 100)
    scdr << m_intensities;
    else
        throw eprosima::fastcdr::exception::BadParamException("intensities field exceeds the maximum length");
}

Originally Fast RTPS used a preallocated memory policy. Buffers were allocated at the beginning with a fixed size. For this reason data types had a maximum serialized size known at the beginning of the execution.
IDL supports variable data types as sequence. A default maximum serialized size had to be set. In case of sequence was 100. fastrtpsgen generates code with these preconditions. There are currently two ways to solve this:

Increase the maximum of the sequencein the IDL file: sequence<float, 1000> ranges
Currently Fast RTPS supports three memory polices: PREALLOCATED_MEMORY_MODE, PREALLOCATED_WITH_REALLOC_MEMORY_MODE and DYNAMIC_RESERVE_MEMORY_MODE. The last two ones don't need a maximum serialized size. You can use them configuring SubscriberAttributes and PublisherAttributes. But fastrtpsgen generates code with the restrictions. Till we change the generator to support dynamic allocation,  you have to remove the conditions in the generated code.

eProsima/Fast-CDR@affa48d511a36351ef24d40029db1e8217be86b1 removes the limitation. I will close this issue


[ffigen] Support more MACROS

We have support for macros that are direct constants:

https://github.com/dart-lang/native/issues/534

But maybe we can do better and try to support more expressions and macros referring to macros.

https://github.com/dart-lang/native/issues/1057#issuecomment-2031601888

// minwindef.h

#define MAKEWORD(a, b)      ((WORD)(((BYTE)(((DWORD_PTR)(a)) & 0xff)) | ((WORD)((BYTE)(((DWORD_PTR)(b)) & 0xff))) << 8))
#define MAKELONG(a, b)      ((LONG)(((WORD)(((DWORD_PTR)(a)) & 0xffff)) | ((DWORD)((WORD)(((DWORD_PTR)(b)) & 0xffff))) << 16))
#define LOWORD(l)           ((WORD)(((DWORD_PTR)(l)) & 0xffff))
#define HIWORD(l)           ((WORD)((((DWORD_PTR)(l)) >> 16) & 0xffff))
#define LOBYTE(w)           ((BYTE)(((DWORD_PTR)(w)) & 0xff))
#define HIBYTE(w)           ((BYTE)((((DWORD_PTR)(w)) >> 8) & 0xff))

Maybe @mannprerak2 can give some insight on what would or would not be possible.
We're happy to receive contributions if anyone wants to take a stab at this. Relevant code:

pkgs/ffigen/lib/src/header_parser/sub_parsers/macro_parser.dart

I think we are already able to parse all non functional macros. Since we create a new cpp file and create variables for each macro and let libclang handle parsing and simply fetch that variable's value.
Any functional macros would require us to parse the underlying tokens directly.

This is really awesome! Would be amazing if possible to transform macros into enums.
e.g. FFmpeg has 28 AVERROR_.* codes that map to various integers that just get generated as Dart constants (imagine writing a case switch manually and keeping it up to date):
const int AVERROR_BUFFER_TOO_SMALL = -1397118274;
const int AVERROR_DECODER_NOT_FOUND = -1128613112;
const int AVERROR_DEMUXER_NOT_FOUND = -1296385272;

(I'm new to FFI and not terribly experienced in C projects; how common are these macros when enums really should have been used?)
Don't know if I know enough to take a stab at it, or how difficult it would be, but would be really nice to be able to have a config option to generate this instead:
enum AVError {
  AVERROR_BUFFER_TOO_SMALL(-1397118274),
  AVERROR_DECODER_NOT_FOUND(-1128613112),
  // ...
  AVERROR_EOF(-541478725),
  // ...

  static AVError fromValue(int value) => switch (value) {
        -1397118274 => AVERROR_BUFFER_TOO_SMALL,
        -1128613112 => AVERROR_DECODER_NOT_FOUND,
        // ...
        -541478725 => AVERROR_EOF,
        // ...
        _ => throw ArgumentError("Unknown value for AVError: $value"),
      };
}```


middleware & gorm.DB

Hi. Tell me how to add the gorm.DB in middleware?
a basic example would not hurt, I did not find it in the documentation
P.S. I'm sorry for my English))

You can check the doc here:
Create the middleware that injects the *gorm.DB, for example:
package middleware

import (
    "github.com/ankorstore/yokai/httpserver"
    "github.com/ankorstore/yokai/log"
    "github.com/labstack/echo/v4"
    "go.uber.org/fx"
    "gorm.io/gorm"
)

type ExampleMiddleware struct {
    db *gorm.DB
}

func NewExampleMiddleware( db *gorm.DB) *ExampleMiddleware {
    return &ExampleMiddleware{
        db: db,
    }
}

func (m *ExampleMiddleware) Handle() echo.MiddlewareFunc {
    return func(next echo.HandlerFunc) echo.HandlerFunc {
        return func(c echo.Context) error {
            // you can use m.db here

            return next(c)
        }
    }
}

Then, register you middleware in internal/router.go:
...
fxhttpserver.AsMiddleware(middleware.NewExampleMiddleware, fxhttpserver.GlobalUse),
...

Using fxhttpserver.AsMiddleware() will autowire your middleware constructor, and therefore inject the *gorm.DB.

Yes, thanks, the example in the documentation works. My question is how to use for certain endpoints
fxhttpserver.AsHandlersGroup(
			"/api/auth",
			[]*fxhttpserver.HandlerRegistration{
				fxhttpserver.NewHandlerRegistration("POST", "/register", handler.NewRegisterHandler),
				fxhttpserver.NewHandlerRegistration("POST", "/login", handler.NewAuthLoginHandler, middleware.CustomAuthMIddleware), // here

Sorry if the question is stupid, unfortunately, I don't quite understand how to solve it yet)

There is 3 ways to register middlewares:

globally with fxhttpserver.AsMiddleware() => will apply for all handlers
for a specific handler with fxhttpserver.AsHandler() where you can pass several middlewares => will apply for only for this handler
for a specific handler group with fxhttpserver.AsHandlersGroup() where you can pass several middlewares => will apply for only for the handlers of this group

See usage.

Thank you so much for the feedback, now it's clear. I wish the project good development and success in all its endeavors


ng test runs multiple instances of the browser

Which @angular/* package(s) are the source of the bug?
Don't known / other
Is this a regression?
No
Description
When running the testing command, the browser is running multiple instances and falsifying the tests feedbacks.
Here is my console for running a single test (I did nothing else than running ng test, and stopping it) :
MYPC > MYNAME @ ~/projects/ng-snippets (master) $ : npx ng test --project snippets
✔ Browser application bundle generation complete.
16 08 2024 10:52:55.843:WARN [karma]: No captured browser, open http://localhost:9876/
16 08 2024 10:52:55.850:INFO [karma-server]: Karma v6.4.4 server started at http://localhost:9876/
16 08 2024 10:52:55.850:INFO [launcher]: Launching browsers ChromeHeadless with concurrency unlimited
16 08 2024 10:52:55.854:INFO [launcher]: Starting browser ChromeHeadless
16 08 2024 10:52:56.555:INFO [Chrome Headless 126.0.6478.127 (Windows 10)]: Connected on socket FXRY_GAkj6XIKlvTAAAB with id 82731947

START:
  Datepicker component
    ✔ Works

Finished in 0.001 secs / 0.044 secs @ 10:52:56 GMT+0200 (Central European Summer Time)

SUMMARY:
✔ 1 test completed
✔ Browser application bundle generation complete.
16 08 2024 10:53:04.861:INFO [Chrome Headless 126.0.6478.127 (Windows 10)]: Connected on socket Ac_kKIY6t8eKUkMAAAAD with id 63963824

===============================================================================================================================================================================================================================================================

START:
  Datepicker component
    ✔ Works
    ✔ Works

Finished in 0.061 secs / 0.031 secs @ 10:53:04 GMT+0200 (Central European Summer Time)

SUMMARY:
✔ 2 tests completed
16 08 2024 10:53:13.001:INFO [Chrome Headless 126.0.6478.127 (Windows 10)]: Connected on socket Ojm6SLRk_uCyhnxGAAAF with id 55152395

===============================================================================================================================================================================================================================================================

START:
  Datepicker component
    ✔ Works
    ✔ Works
    ✔ Works

Finished in 0.066 secs / 0.044 secs @ 10:53:13 GMT+0200 (Central European Summer Time)

SUMMARY:
✔ 3 tests completed
16 08 2024 10:53:14.883:INFO [Chrome Headless 126.0.6478.127 (Windows 10)]: Connected on socket TqvaqEoqyRlOe7iGAAAH with id 5424256

===============================================================================================================================================================================================================================================================

START:
  Datepicker component
    ✔ Works
    ✔ Works
    ✔ Works
    ✔ Works

Finished in 0.165 secs / 0.06 secs @ 10:53:15 GMT+0200 (Central European Summer Time)

SUMMARY:
✔ 4 tests completed
^C16 08 2024 10:53:17.625:WARN [Chrome Headless 126.0.6478.127 (Windows 10)]: Disconnected (0 times) Client disconnected from CONNECTED state (server shutting down)
Chrome Headless 126.0.6478.127 (Windows 10) ERROR
  Disconnected Client disconnected from CONNECTED state (server shutting down)
16 08 2024 10:53:17.626:WARN [Chrome Headless 126.0.6478.127 (Windows 10)]: Disconnected (0 times) Client disconnected from CONNECTED state (server shutting down)
Chrome Headless 126.0.6478.127 (Windows 10) ERROR
  Disconnected Client disconnected from CONNECTED state (server shutting down)
16 08 2024 10:53:17.626:WARN [Chrome Headless 126.0.6478.127 (Windows 10)]: Disconnected (0 times) Client disconnected from CONNECTED state (server shutting down)
Chrome Headless 126.0.6478.127 (Windows 10) ERROR
  Disconnected Client disconnected from CONNECTED state (server shutting down)
16 08 2024 10:53:17.626:WARN [Chrome Headless 126.0.6478.127 (Windows 10)]: Disconnected (0 times) Client disconnected from CONNECTED state (server shutting down)
Chrome Headless 126.0.6478.127 (Windows 10) ERROR
  Disconnected Client disconnected from CONNECTED state (server shutting down)

Please provide a link to a minimal reproduction of the bug
https://github.com/Maryannah/ng-snippets/tree/bug-tests
Please provide the exception or error you saw
No response
Please provide the environment you discovered this bug in (run ng version)
_                      _                 ____ _     ___
    / \   _ __   __ _ _   _| | __ _ _ __     / ___| |   |_ _|
   / △ \ | '_ \ / _` | | | | |/ _` | '__|   | |   | |    | |
  / ___ \| | | | (_| | |_| | | (_| | |      | |___| |___ | |
 /_/   \_\_| |_|\__, |\__,_|_|\__,_|_|       \____|_____|___|
                |___/

Angular CLI: 18.1.3
Node: 20.10.0
Package Manager: npm 10.2.3
OS: linux x64

Angular: 18.1.3
... animations, cli, common, compiler, compiler-cli, core, forms
... platform-browser, platform-browser-dynamic, router

Package                         Version
---------------------------------------------------------
@angular-devkit/architect       0.1801.3
@angular-devkit/build-angular   18.1.3
@angular-devkit/core            18.1.3
@angular-devkit/schematics      18.1.3
@schematics/angular             18.1.3
ng-packagr                      18.1.0
rxjs                            7.8.1
typescript                      5.5.4
zone.js                         0.14.8

Anything else?
OS (Windows + WSL) :

Microsoft Windows 11 Family, 10.0.22631 Build 22631
Linux version <IP_ADDRESS>-microsoft-standard-WSL2 (root@941d701f84f1) (gcc (GCC) 11.2.0, GNU ld (GNU Binutils) 2.37) # 1 SMP Fri Mar 29 23:14:13 UTC 2024

angular.json

{
  "$schema"<EMAIL_ADDRESS>  "version": 1,
  "newProjectRoot": "projects",
  "schematics": {
    "@schematics/angular:component": { "style": "scss", "changeDetection": "OnPush", "displayBlock": true },
    "@schematics/angular:class": {},
    "@schematics/angular:directive": {},
    "@schematics/angular:guard": { "functional": true },
    "@schematics/angular:interceptor": { "functional": true },
    "@schematics/angular:pipe": {},
    "@schematics/angular:resolver": { "functional": true },
    "@schematics/angular:service": {}
  },
  "projects": {
    "ng-snippets": {
      "projectType": "application",
      "root": "",
      "sourceRoot": "src",
      "prefix": "snip",
      "architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:application",
          "options": {
            "outputPath": "dist/ng-snippets",
            "index": "src/index.html",
            "browser": "src/main.ts",
            "tsConfig": "tsconfig.app.json",
            "inlineStyleLanguage": "scss",
            "assets": [{ "glob": "**/*", "input": "public" }],
            "styles": ["src/styles.scss"],
            "scripts": []
          },
          "configurations": {
            "production": { "budgets": [], "outputHashing": "all" },
            "development": { "optimization": false, "extractLicenses": false, "sourceMap": true }
          },
          "defaultConfiguration": "production"
        },
        "serve": {
          "builder": "@angular-devkit/build-angular:dev-server",
          "configurations": {
            "production": { "buildTarget": "ng-snippets:build:production" },
            "development": { "buildTarget": "ng-snippets:build:development" }
          },
          "defaultConfiguration": "development"
        },
        "extract-i18n": { "builder": "@angular-devkit/build-angular:extract-i18n" },
        "test": {
          "builder": "@angular-devkit/build-angular:karma",
          "options": {
            "tsConfig": "tsconfig.spec.json",
            "inlineStyleLanguage": "scss",
            "assets": [{ "glob": "**/*", "input": "public" }],
            "styles": ["src/styles.scss"],
            "scripts": [],
            "karmaConfig": "karma.conf.js"
          }
        }
      }
    },
    "snippets": {
      "projectType": "library",
      "root": "projects/snippets",
      "sourceRoot": "projects/snippets/src",
      "prefix": "ui",
      "architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:ng-packagr",
          "options": { "project": "projects/snippets/ng-package.json" },
          "configurations": {
            "production": { "tsConfig": "projects/snippets/tsconfig.lib.prod.json" },
            "development": { "tsConfig": "projects/snippets/tsconfig.lib.json" }
          },
          "defaultConfiguration": "production"
        },
        "test": {
          "builder": "@angular-devkit/build-angular:karma",
          "options": {
            "tsConfig": "projects/snippets/tsconfig.spec.json",
            "karmaConfig": "karma.conf.js"
          }
        },
        "storybook": {
          "builder": "@storybook/angular:start-storybook",
          "options": {
            "open": false,
            "compodoc": false,
            "configDir": "projects/snippets/.storybook",
            "browserTarget": "snippets:build",
            "compodocArgs": ["-e", "json", "-d", "projects/snippets"],
            "port": 6006,
            "styles": ["src/styles.scss", "projects/snippets/.storybook/styles.scss"]
          }
        },
        "build-storybook": {
          "builder": "@storybook/angular:build-storybook",
          "options": {
            "configDir": "projects/snippets/.storybook",
            "browserTarget": "snippets:build",
            "compodoc": true,
            "compodocArgs": ["-e", "json", "-d", "projects/snippets"],
            "outputDir": "dist/storybook/snippets",
            "styles": ["src/styles.scss", "projects/snippets/.storybook/styles.scss"]
          }
        }
      }
    }
  }
}

karma.conf.js

// Karma configuration file, see link for more information
// https://karma-runner.github.io/1.0/config/configuration-file.html

module.exports = function (config) {
  config.set({
    basePath: '',
    frameworks: ['jasmine', 'mocha', '@angular-devkit/build-angular'],
    plugins: [
      require('karma-mocha'),
      require('karma-mocha-reporter'),
      require('karma-jasmine'),
      require('karma-chrome-launcher'),
      require('karma-jasmine-html-reporter'),
      require('karma-coverage'),
      require('@angular-devkit/build-angular/plugins/karma'),
    ],
    client: {
      mocha: {
        reporter: 'html',
      },
      jasmine: {
        // you can add configuration options for Jasmine here
        // the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html
        // for example, you can disable the random execution with `random: false`
        // or set a specific seed with `seed: 4321`
      },
      clearContext: false, // leave Jasmine Spec Runner output visible in browser
    },
    jasmineHtmlReporter: {
      suppressAll: true, // removes the duplicated traces
    },
    coverageReporter: {
      dir: require('path').join(__dirname, './coverage/ng-snippets'),
      subdir: '.',
      reporters: [{ type: 'html' }, { type: 'text-summary' }],
    },
    reporters: ['mocha'],
    browsers: ['ChromeHeadless'],
    restartOnFileChange: true,
  });
};

package.json

{
  "name": "ng-snippets",
  "version": "0.0.0",
  "scripts": {
    "start:server": "json-server --watch db.json",
    "storybook": "ng run snippets:storybook",
    "test": "ng test"
  },
  "private": true,
  "dependencies": {
    "@angular/animations": "^18.1.0",
    "@angular/common": "^18.1.0",
    "@angular/compiler": "^18.1.0",
    "@angular/core": "^18.1.0",
    "@angular/forms": "^18.1.0",
    "@angular/platform-browser": "^18.1.0",
    "@angular/platform-browser-dynamic": "^18.1.0",
    "@angular/router": "^18.1.0",
    "rxjs": "~7.8.0",
    "tslib": "^2.3.0",
    "zone.js": "~0.14.3"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "^18.1.3",
    "@angular/cli": "^18.1.3",
    "@angular/compiler-cli": "^18.1.0",
    "@chromatic-com/storybook": "^1.6.1",
    "@compodoc/compodoc": "^1.1.25",
    "@storybook/addon-docs": "^8.2.9",
    "@storybook/addon-essentials": "^8.2.9",
    "@storybook/addon-interactions": "^8.2.9",
    "@storybook/addon-links": "^8.2.9",
    "@storybook/angular": "^8.2.9",
    "@storybook/blocks": "^8.2.9",
    "@storybook/test": "^8.2.9",
    "@types/jasmine": "~5.1.0",
    "autoprefixer": "^10.4.20",
    "jasmine-core": "~5.1.0",
    "json-server": "^1.0.0-beta.1",
    "karma": "~6.4.0",
    "karma-chrome-launcher": "~3.2.0",
    "karma-coverage": "~2.2.0",
    "karma-jasmine": "~5.1.0",
    "karma-jasmine-html-reporter": "~2.1.0",
    "karma-mocha": "^2.0.1",
    "karma-mocha-reporter": "^2.2.5",
    "mocha": "^10.7.3",
    "ng-packagr": "^18.1.0",
    "postcss": "^8.4.40",
    "prettier": "^3.3.3",
    "storybook": "^8.2.9",
    "tailwindcss": "^3.4.7",
    "typescript": "~5.5.2"
  }
}

Hi @Maryannah, I am not able to replicate what you are experiencing with the steps provided.
npx ng test --project snippets
✔ Browser application bundle generation complete.
16 08 2024 09:48:49.054:WARN [karma]: No captured browser, open http://localhost:9876/
16 08 2024 09:48:49.086:INFO [karma-server]: Karma v6.4.4 server started at http://localhost:9876/
16 08 2024 09:48:49.087:INFO [launcher]: Launching browsers ChromeHeadless with concurrency unlimited
16 08 2024 09:48:49.093:INFO [launcher]: Starting browser ChromeHeadless
16 08 2024 09:48:49.509:INFO [Chrome Headless 127.0.6533.119 (Linux x86_64)]: Connected on socket eupgm4PR1WtR8hMUAAAB with id 92834468

START:

Finished in 0.002 secs / 0 secs @ 09:48:49 GMT+0000 (Coordinated Universal Time)

SUMMARY:
✔ 0 tests completed
✔ Browser application bundle generation complete.
^C16 08 2024 09:49:29.358:WARN [Chrome Headless 127.0.6533.119 (Linux x86_64)]: Disconnected (0 times) Client disconnected from CONNECTED state (transport close)
Chrome Headless 127.0.6533.119 (Linux x86_64) ERROR
  Disconnected Client disconnected from CONNECTED state (transport close)

@alan-agius4 are you using WSL too ?

No, but I doubt this is a issues caused by WSL.

Well if you don't have the issue and I have it, it could be ...
By the way, I have updated the issue to give a specific branch with my own modifications to be able to test it

@alan-agius4 upon further investigation (which is the nice way of saying I'm a dumbass who didn't restart its computer), it seems to work without any issues. It was indeed related to my own computer and not the framework. I am sorry for wasting your time, I will quickly close this issue, no actions are required !


Bug in options from strings

I don't know if this documented, but "width" can be not only int but float (this is required to draw fitted svg barcodes). But since it works using options it should work using jsbarcode-width attribute, but it don't.
This is due to bug in src/help/optionsFromStrings.js
parseInt should be replaced with parseFloat for "jsbarcode-width" option.

Hi. I'm not sure that float values is a good idea for width param.

If you don't like it, just don't touch it! I have nothing against it, for me this is good idea.
Nobody uses barcodes for images, barcodes are used for printing.


Fix data race when closing amqp connection

When using conn.NotifyClose, this later append to a list of channels
me.closes, while conn.shutdown() range over this list, so when a
connection is closed, conn.NotifyClose() may detect the connection closing
in the same time as the conn.shutdown() call, this is done in two
goroutine, which end up in data race where one appending to me.closes
and the other looping over it.
The fix is to move setting noNotify to True to the top of
conn.shutdown(), this way conn.NotifyClose() will not append to the
list anymore.

In case tests are needed please let me know.

Tests are never a bad idea and force closing connections is something that other client test suites often do, either via rabbitmqctl or HTTP API (part of the management plugin).

@mouadino how different would be that be from #196 ?
I wonder if that passes the tests I wrote too.

@imkira your PR looks more complete than this one. Any chance we can get your PR merged?

@mouadino I hope so. I am waiting for @streadway but he seems to be busy lately.

As mentioned before https://github.com/streadway/amqp/pull/196 will take care of fixing the issue, closing.


Feat/lesq 1108/canonical share page [LESQ-1108]

Description
Music year: {owa_music_year}

Create canonical share page
Update lesson share query to accomodate canonical pages
Refactor helper functions to be shared
Fix fallback icon on canonical lesson pages when subject can't be determined (eg Combined Science/Biology)

Issue(s)
Fixes #
Share links from canonical pages with multiple conflating programme factors 404ing
How to test

Go to https://deploy-preview-2880--oak-web-application.netlify.thenational.academy/teachers/lessons/cells
Click on Share activities with pupils
You should be directed to the Share page
Check the non-canonical pages are still working properly
Check optionality lesson pages are still working properly
Check downloads pages are still working properly

Screenshots
How it used to look (delete if n/a):

How it should now look:
{screenshots}

Checklist

[ ] Lesson share links for KS4 science and maths subjects direct you to the canonical share page
[ ] Non-canonical share pages still work
[ ] Fallback icon is 'books' and not 'error' on canonical pages

@rightsaidjames I'm not 100% sure why some pages were redirecting to the non canonical share page, but I noticed it happens with download as well so enforced that both should direct to the canonical versions of those pages

@rightsaidjames aha we were incorrectly pulling in the null unit variant slug from the data when building out the pathways, good catch! fixed that so I think that should be everything canonicalised now, breadcrumbs should remain on the canonical lesson navigating back and forth and will go back into a valid unit from lesson/share/download pages 🤞

:tada: This PR is included in version 1.600.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Update E2E amis for presubmits

Issue #, if available:
Description of changes:
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

/approve


🐛 [Bug]: First step after install

Bug Description
Invalid token, after installation and authorization in the admin.
Expected Behavior
Invalid token
litecart Version
v0.1.0
Checklist:

[X] I agree to follow litecart's Code of Conduct.
[X] I have checked for existing issues that describe my problem prior to opening this one.
[X] I understand that improperly formatted bug reports may be closed without explanation.

After the initial setup, you need to restart Litecart for it to recognize the generated JWT secret.


New Configuration File (Classpath Files...) Mechanism from WebTester 2

WebTester v2 introduced a new classification system for our default properties file adapters in:
https://github.com/testIT-WebTester/webtester2-core/commit/bfe83ce704ee7b3cba4e99388682bf2e3e057478
This should also be applied to WebTester v1.

done with #76


Json pointer

These modifications allow the iterator to use json pointers (https://tools.ietf.org/html/rfc6901) trough the function move_to(). It solves issue #175.
It has not been tested for performances.

+1
To be reviewed. Soon.

Ping @croteaucarine

@ioioioio Looks good. I made some minor changes and added a utility so that one can play with the new functionality.

Ok. Let us merge this.


drop_duplicates after pd.concat not working as expected

System information

OS Platform and Distribution (e.g., Linux Ubuntu 16.04): MacOS 12.3.1
Modin version (modin.__version__): 0.14.1
Python version: Python 3.9.12
Code we can use to reproduce:

import pandas as pd
import modin.pandas as mpd
import numpy as np

# Pandas
np.random.seed(0)
df1 = pd.DataFrame(np.random.randint(0, 1000, size=1000), columns=["A"])
np.random.seed(1)
df2 = pd.DataFrame(np.random.randint(0, 1000, size=1000), columns=["A"])

df = pd.concat([df1, df2])
print(len(df))  # 2000
print(len(df.drop_duplicates()))  # 874

# Modin
np.random.seed(0)
df1 = mpd.DataFrame(np.random.randint(0, 1000, size=1000), columns=["A"])
np.random.seed(1)
df2 = mpd.DataFrame(np.random.randint(0, 1000, size=1000), columns=["A"])

df = mpd.concat([df1, df2])
print(len(df))  # 2000
print(len(df.drop_duplicates()))  # 322 ?!?

# Issue caused by index? Use ignore_index=True to fix
df = mpd.concat([df1, df2], ignore_index=True)
print(len(df))  # 2000
print(len(df.drop_duplicates()))  # 874

Describe the problem
After combining DataFrames using mpd.concat(), dropping duplicate values removes WAY too many items. I believe this is related to the indexing of the combined DataFrames, as using ignore_index=True in the concat() call seems to fix the issue.
In regular pandas, the result is the same whether or not ignore_index=True is used.
The above example is a toy one. I noticed this when combining large CSV files. Happy to share those, but this takes much less time to run!

Tested with both Ray and Dask as the engine. Both give the same results.

Think I found the issue in BasePandasDataset class in base.py
    def drop_duplicates(
        self, keep="first", inplace=False, **kwargs
    ):  # noqa: PR01, RT01, D200
        """
        Return `BasePandasDataset` with duplicate rows removed.
        """
        inplace = validate_bool_kwarg(inplace, "inplace")
        subset = kwargs.get("subset", None)
        if subset is not None:
            if is_list_like(subset):
                if not isinstance(subset, list):
                    subset = list(subset)
            else:
                subset = [subset]
            duplicates = self.duplicated(keep=keep, subset=subset)
        else:
            duplicates = self.duplicated(keep=keep)
        indices = duplicates.values.nonzero()[0]
        return self.drop(index=self.index[indices], inplace=inplace)

The return statement is using the index values, but the indices are duplicated after the concat.
My solution may be overly simplistic, but instead of this:
        indices = duplicates.values.nonzero()[0]
        return self.drop(index=self.index[indices], inplace=inplace)

could you do something like what Pandas does (shown below)?
        result = self[-duplicated]
        if ignore_index:
            result.index = default_index(len(result))

        if inplace:
            self._update_inplace(result)
            return None
        else:
            return result

(sorry if this isn't useful -- I'm much better at breaking things than fixing them!)

@jrsacher thank you for reporting this bug! I was able to reproduce it at commit cf0eb393daa41abdd8cdf32b52ceee938cdcbe1a. If I see a quick fix, I'll assign the issue to myself and make a PR.

@jrsacher I'm sorry, but I missed your last message. I think you've diagnosed the bug correctly. I think making the Modin implementation more like the pandas implementation as you suggested should work.
Would you be interested in contributing this fix yourself? Members of @modin-project/modin-contributors, including me, can help you make the fix and get it merged. You could follow the guide here to get set up for Modin development.

@mvashishtha Thanks for the push to tackle this myself. I gave it a shot. Looking forward to getting feedback!


2014mttd_teams.csv is empty

Bug with the export. Probably has has to do with the nonexistent teams.
On Sun, Jan 4, 2015, 10:13 PM Kunal Mehta<EMAIL_ADDRESS>wrote:

—
Reply to this email directly or view it on GitHub
https://github.com/the-blue-alliance/the-blue-alliance-data/issues/8.


Provide TaskAssignmentResult to FitnessGoodEnoughFunction

I'd like the "good enough" calculation to vary with the urgency of the task.  For example, imagine that a Task should be scheduled within 30 seconds.  When first scheduled, the fitness bar should be held high, then be gradually lowered as the task request gets older; at the 30 second mark, "anything will do".
I suggest that the FitnessGoodEnoughFunction accept the TaskAssignmentResult to convey the TaskRequest along with the fitness measurement.

A possible workaround may be to dynamically adjust the fitness calculation, to 'improve' the fitness as the task grows older or more urgent. It's a hack that I'd rather avoid.

This thought of making fitness good enough evaluation dynamic existed since the beginning. But, it hasn't manifested itself in the implementation yet. For this to work effectively, I believe there are two pieces needed:

Make evaluation of fitness being good enough dynamic based on additional factors, including task level SLAs like start or finish time deadlines, for example.

Enhance scheduler to not use the best available assignment if the good enough function says it is not good enough. Specifically, currently the good enough function evaluation is used only to stop iterating over additional VMs for assignments, after finding one that is good enough.

Your suggestion of the function accepting the task assignment result can address the first piece above. However, the 2nd piece is required as well for this to work. Also, a question to answer is whether or not a scale up evaluation must trigger a scale up if the task remains pending with this new way of "failing assignment". It can likely be argued both ways. Further thought is needed to decide on it.
Additional thoughts welcome.
Specifically to talk about your workaround, an alternate workaround for you would be to make it a constraint instead. The constraint could return 0.0 if it doesn't find a good enough fitness (just use the same fitness function inside it that you set on Fenzo) and the task is still in it's 30s mark for finding a better fit. However, this can also trigger a scale up action, if you are using cluster autoscaling feature with shortfall analyzer. This workaround may be easier because you have the information you need within the constraint implementation, and it can work on a per task basis.

@EronWright I feel that looking at the current load on the cluster would also be beneficial. One can look at the possible load on the cluster to decide whether one would need to go with the fitness good-enough function or just stick with the regular fitness calculation.
A simple way to determine whether the cluster is loaded or not (assuming you're running a single framework on mesos) would be to check the frequency, and the resource values (how much CPU, how much MEM etc.) of mesos resource offers.
The higher the load on a machine, the lesser the number of resource offers that one would receive from that machine. So, in such a scenario, one might want to switch to using a fitness good-enough calculation to increase the likelihood that this task is assigned by Fenzo's task scheduler.
@spodila I'd like to hear your thoughts on this.


This issue was closed, but it shouldn't be:
https://github.com/briancherne/jquery-hoverIntent/issues/46
The bug still exists.  A jfiddle was already set up to demonstrate this
http://jsfiddle.net/9x1cnteh/2/

click the alpha button
click in the input field
*autocomplete dialog appears.  go to select something
the mouseleave (or mouseout) is triggered, the box closes, and you can't select the autocomplete.

The correct behavior is that the google chrome auto complete doesn't triggered the mouse leave.
Google Chrome: Version 76.0.3809.100 (Official Build) (64-bit)
Mac Mojave: 10.14.6

Hi, thanks for opening the issue, though it appears your fiddle doesn't use hoverIntent (it points to an old URL for the plugin, which is no longer valid), so the behavior you're seeing is just jQuery's .hover() in the end.
Can you please update the fiddle or create a new one? Thanks!

It's a problem with Chrome actually.  I'd just close it out.  I logged it with them.  Sorry for alerting you.

I have the same issue on Firefox, with the select button.  If you go to https://peakshops.fuelthemes.net/peakshops-furniture/ and then hover over search:

Text Input does not turn off the dropdown.
Select Button does turn off the dropdown.


[Embeddingapi] TC dev for XWalkView.removeJavascriptInterface

BUG=https://crosswalk-project.org/jira/browse/CTS-1564

Impacted tests(approved): new 6, update 0, delete 0
Unit test platform: Crosswalk Project for Android 20.50.532.0
Unit test result summary: pass 6, fail 0, block 0

LGTM


[feature request] SHOW TAG VALUES should respect time boundaries

Following issue 3040
In influx db 0.9.2
First I insert some values
> insert foo,key1=val0 value=0
> insert foo,key1=val1 value=1
> insert foo,key1=val2 value=2

> select * from foo;
name: foo
tags: key1=val0
time                value
----                -----
2015-09-07T16:44:03.366Z    0

name: foo
tags: key1=val1
time            value
----            -----
2015-09-07T16:45:04.02Z     1

name: foo
tags: key1=val2
time                value
----                -----
2015-09-07T16:46:04.167Z    2

values are correctly inserted.
Now I try to get tag values filtered by time boundaries
> show tag values from foo with key=key1 where time<='2015-09-07T16:43:00.000Z'
name: key1TagValues
-------------------
key1
val0
val1
val2

-> it should return empty according to the where time clause

You can accomplish the same thing with SELECT * FROM foo WHERE time <= '2015-09-07T16:43:00.000Z' and then just throw away the fields in the result. The tag keys and values are indexed, but the time range in which they appear is not. Implementing it as a stand-alone query won't make it any more performant.

Curious if this is still on the roadmap?  I realize you can select * and filter the results (when you have control), but for applications like Grafana this would be the ticket to more powerful template variables.  Or is there some alternate way to have show tag values exclude values that no longer have any associated data?  Thanks..

Yes... this is still on our roadmap.  It is in our backlog.  The solution for this is really not straightforward -- in order to remain performant.


Inclusion in scikit-mine ?

Hi again,
We recently shared the project roadmap from scikit-mine.
One of the algorithms we wanted to investigate is DiffNorm, but I guess the discovery part of RuleList can solve a similar task (characterize multiple transaction sets at the same time).
This would be the first use case, although RuleList offers more (predictions)
From a technical point of view, including RuleList into skmine would require a few refactors. I tried to identify a couple of them, here is the short list I came up with :

separate classes for different tasks (one for task=discovery and one for task=prediction), or expose the discovery part via calls discover() like defined in skmine's API
separate data ingestion, your current data ingestion is tied up with the model side. One could opt for a class in the preprocessing module, to be called before applying a RuleList Classifier. This is not very clear in my mind though...
use roaring bitmaps, for efficiency

Mutual maintenance for RuleList would mean:

maintaining compatibility with the rest of the ecosystem
documentation

These are all suggestions, I remain open :)

Hi Rémi,
I think those are all good suggestions.
Indeed, DiffNorm and RuleList share many things, especially the encoding
and how they partition the data. Nonetheless, the way they generate
patterns, pattern vs rule, their greedy objective, and some more
miscellaneous are different.
It would be interesting to hear your suggestions in more detail to
understand clearly what you mean by such change so that I can see if they
are feasible and make a timeline for them.
Best, Hugo
On Tue, 11 May 2021 at 09:14, Rémi Adon @.***> wrote:

Hi again,
We recently shared the project roadmap
https://github.com/scikit-mine/scikit-mine/discussions/115 from
scikit-mine.
One of the algorithms we wanted to investigate is DiffNorm, but I guess
the discovery part of DiffNorm can solve a similar task (characterize
multiple transaction sets at the same time).
This would the first use case, although RuleList offers more (predictions)
From technical point of view, including RuleList into skmine would require
a few refactors. I tried to identify a couple of them, here is the short
list I came up with :

separate classes for different tasks (one for task=discovery and one
for task=prediction), or expose the discovery part via calls discover()
like defined in skmine's API
separate data ingestion, your current data ingestion
https://github.com/HMProenca/RuleList/blob/6f7a144195e075d6b4fa9cc6f3370f57b1259a69/rulelist/datastructure/data.py#L20
is tied up with the model side. One could opt for a class in the
preprocessing module, to be called before applying a RuleList
Classifier. This is not very clear in my mind though...
use roaring bitmaps, for efficiency

Mutual maintenance for RuleList would mean:

maintaining compatibility with the rest of the ecosystem
documentation

These are all suggestions, I remain open :)
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/HMProenca/RuleList/issues/6, or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACXVXQBWYBGJ4J2DOZB3ZKLTNDRPDANCNFSM44UWG5VQ
.

@HMProenca thanks for you response,
I will try to be a bit more precise.
Your RuleList class currently wraps 2 models, defined by the target_model attribute, see here. I think these could be separated into 2 classes, a GaussianRuleList class and a CategoricalRuleList. As this is already implemented, I evaluate this as a "minor" refactor.
The logic behind task==discover should be exposed via a discover method if possible, so that the user just fits a model and chooses to either make predictions or get an overview on the discovered patterns, interactively. This seems a bit more tricky, and will require your input.
Concerning the preprocessing, for now RuleList only supports "static" apriori disretization, see here. so it may be a good idea to explicitly call this preprocessing step from the user side, so that other methods can benefit from it.
Here is an example of the resulting syntax
import pandas as pd
from skmine import GaussianRuleList  # skmine namespace ?? maybe skmine.rulelist ...
from skmine.preprocessing import StaticDicretizer # maybe already implemented in sklearn ?
from sklearn import datasets

data = datasets.load_breast_cancer()
Y = pd.Series(data.target)
X = pd.DataFrame(data.data)

model = GaussianRuleList(min_support=.2, beam_width=20)
X_preproc = StaticDiscretizer().fit_transform(X)

model.fit(X_preproc, y)

model.discover()  # expose self.antecedent_description and self.consequent_description via a pandas.DataFrame for exploratory data analysis

model.predict(X[:5])  # make predictions

Last but not least, your bitset operations can be performed via skmine.bitmaps. I can take care of it.

Hi Rémi Adon,
I agree. Some of the changes are easier than others. Some are actually very
straightforward. Would you be up to make a video call for us to discuss
some of the points in more detail?
On Mon, 17 May 2021 at 11:52, Rémi Adon @.***> wrote:

@HMProenca https://github.com/HMProenca thanks for you response,
I will try to be a bit more precise.
Your RuleList class currently wraps 2 models, defined by the target_model
attribute, see here
https://github.com/HMProenca/RuleList/blob/6f7a144195e075d6b4fa9cc6f3370f57b1259a69/rulelist/search/iterative_rule_search.py#L26.
I think these could be separated into 2 classes, a GaussianRuleList class
and a CategoricalRuleList. As this is already implemented, I evaluate
this as a "minor" refactor.
The logic behind task==discover should be exposed via a discover method
if possible, so that the user just fits a model and chooses to either make
predictions or get an overview on the discovered patterns, interactively.
This seems a bit more tricky, and will require your input.
Concerning the preprocessing, for now RuleList only supports "static"
apriori disretization, see here
https://github.com/HMProenca/RuleList/blob/6f7a144195e075d6b4fa9cc6f3370f57b1259a69/rulelist/rulelist.py#L107.
so it may be a good idea to explicitly call this preprocessing step from
the user side, so that other methods can benefit from it.
Here is an example of the resulting syntax
import pandas as pdfrom skmine import GaussianRuleList  # skmine namespace ?? maybe skmine.rulelist ...from skmine.preprocessing import StaticDicretizer # maybe already implemented in sklearn ?from sklearn import datasets
data = datasets.load_breast_cancer()Y = pd.Series(data.target)X = pd.DataFrame(data.data)
model = GaussianRuleList(min_support=.2, beam_width=20)X_preproc = StaticDiscretizer().fit_transform(X)
model.fit(X_preproc, y)
model.discover()  # expose self.antecedent_description and self.consequent_description via a pandas.DataFrame for exploratory data analysis
model.predict(X[:5])  # make predictions
Last but not least, your bitset operations
https://github.com/HMProenca/RuleList/blob/6f7a144195e075d6b4fa9cc6f3370f57b1259a69/rulelist/util/bitset_operations.py#L22
can be performed via skmine.bitmaps. I can take care of it.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/HMProenca/RuleList/issues/6#issuecomment-842224377,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACXVXQABMPD34R74TPAPL63TODYQPANCNFSM44UWG5VQ
.


unable to install wget

Hi,
I am having issues trying to install the package using pip. Specifically, I get this error:

Building wheels for collected packages: wget
Building wheel for wget (setup.py) ... error
error: subprocess-exited-with-error
× python setup.py bdist_wheel did not run successfully.
│ exit code: 1
╰─> [47 lines of output]
running bdist_wheel
Traceback (most recent call last):
File "", line 2, in
File "", line 34, in
File "/tmp/pip-install-uwcyvnup/wget_210f444a1f0847f7b37d04912ee382bb/setup.py", line 15, in
setup(
File "/usr/lib/python3.10/distutils/core.py", line 148, in setup
dist.run_commands()
File "/usr/lib/python3.10/distutils/dist.py", line 966, in run_commands
self.run_command(cmd)
File "/usr/local/lib/python3.10/dist-packages/setuptools/dist.py", line 963, in run_command
super().run_command(command)
File "/usr/lib/python3.10/distutils/dist.py", line 985, in run_command
cmd_obj.run()
File "/usr/local/lib/python3.10/dist-packages/wheel/bdist_wheel.py", line 360, in run
build_ext = self.reinitialize_command("build_ext")
File "/usr/local/lib/python3.10/dist-packages/setuptools/init.py", line 216, in reinitialize_command
cmd = _Command.reinitialize_command(self, command, reinit_subcommands)
File "/usr/lib/python3.10/distutils/cmd.py", line 305, in reinitialize_command
return self.distribution.reinitialize_command(command,
File "/usr/lib/python3.10/distutils/dist.py", line 938, in reinitialize_command
command = self.get_command_obj(command_name)
File "/usr/lib/python3.10/distutils/dist.py", line 857, in get_command_obj
klass = self.get_command_class(command)
File "/usr/local/lib/python3.10/dist-packages/setuptools/dist.py", line 710, in get_command_class
self.cmdclass[command] = cmdclass = ep.load()
File "/usr/lib/python3.10/importlib/metadata/init.py", line 171, in load
module = import_module(match.group('module'))
File "/usr/lib/python3.10/importlib/init.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "", line 1050, in _gcd_import
File "", line 1027, in _find_and_load
File "", line 1006, in _find_and_load_unlocked
File "", line 688, in _load_unlocked
File "", line 883, in exec_module
File "", line 241, in _call_with_frames_removed
File "/usr/local/lib/python3.10/dist-packages/setuptools/command/build_ext.py", line 23, in
import('Cython.Compiler.Main')
File "/usr/local/lib/python3.10/dist-packages/Cython/Compiler/Main.py", line 28, in
from .Scanning import PyrexScanner, FileSourceDescriptor
File "Cython/Compiler/Scanning.py", line 1, in init Cython.Compiler.Scanning
File "/usr/local/lib/python3.10/dist-packages/Cython/Plex/init.py", line 36, in
from .Lexicons import Lexicon, State
File "/usr/local/lib/python3.10/dist-packages/Cython/Plex/Lexicons.py", line 14, in
from . import DFA
File "Cython/Plex/DFA.py", line 1, in init Cython.Plex.DFA
AttributeError: module 'Cython.Plex.Actions' has no attribute 'Method'
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for wget
Running setup.py clean for wget
Failed to build wget
ERROR: Could not build wheels for wget, which is required to install pyproject.toml-based projects

I have tried installing the wget package using pip install wget, but the same error occurs. I have also updated pip to the latest version and the setuptools package as well, but to no avail. Is there a way to fix it?
Edit: I have tried with the pywget library which is an alternative to wget and I could install it, so it may be worth upgrading from wget to pywget.
Thank you very much.

Hello again, I could resolve the issue by upgrading Cython using pip install cython -U. I hope this helps others with the same issue.
Best regards.


Problems are caused by non-breaking spaces in the OrigQuote field

v1.1.0
csv at: https://app.zenhub.com/files/191973535/2e81a815-00c7-49fb-a8f4-28f27a4b6968/download
The validator reports unexpected non-breaking spaces in the OrigQuote field and unable to find original language quote, but the user is not able to see what is causing the problem or any easy way to fix it. The specified OrigQuote is highlighted in the scripture pane, and the OrigQuote field appears as would be expected.

@RobH123 do non-breaking spaces in the OrigL quote break anything?

From what I've been able to determine, there's NO GOOD REASON to have non-break spaces in any of our materials, and certainly not in snippets when it's NOT in the original text.
Does it break any of our software @birchamp? Maybe not if defensive code has been written to try to fix it under the surface? (For me, I'd still recommend fixing the source of the problem which is 1/ why allow a NB-space in there, and then back a step to 2/ what (bad/wrong) workflow causes/allows that to happen?

@jag377 I've seen a number of languages that require NB-spaces between words. The terms should be separated by a space but not wrap to be on separate lines.  For some reason I thought we used NB-Spaces in Hebrew as well.


Archive channel when closing dedicate case channel

This PR archives the dedicated case channel on close, and unarchives it in the situation when the case is re-opened.

thank you for adding this 🙉 ❤


Option to skip downloading if the file already exists

Great idea

I think such feature might just work better implemented on your own. A simple way would be to use fs.existsSync( path + filename) to check if the file already exists presuming your name has the version of the file in question.

Sorry hon, I still have no idea what you are talking about?
On Sat., 17 Apr. 2021, 06:20 Edim, @.***> wrote:

I think such feature might just work better implemented on your own. A
simple way would be to use fs.existsSync( path + filename) to check if the
file already exists presuming your name has the version of the file in
question.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/kevva/download/issues/211#issuecomment-821539182, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/APMWEOCCAZJUFU6UU2W4IQLTJCL2NANCNFSM4UR7KCVA
.

Ideally, I want an option that optionally can accept a function used for version checking.
Default:
download(url, destination, { skipReDownload: true})

With a function
download(url, destination, { skipReDownload: versionCheckFunction})

function versionCheckFunction(path_to_file) {
	// do any version control that you want to do here and return a boolean
	//
	return true // skip redownload
	return false // the file is old -> redownload
}

You may aswell be talking Double Dutch to me. Not a developer. 🙄🙄🤔🤪
On Sat., 17 Apr. 2021, 17:12 Amin Yahyaabadi, @.***>
wrote:

Ideally, I want an option that optionally can accept a function used for
version checking.
Default:
download(url, destination, { skipReDownload: true})
With a function
download(url, destination, { skipReDownload: versionCheckFunction})
function versionCheckFunction(path_to_file) {
// do any version control that you want to do here and return a boolean
//
return true // skip redownload
return false // the file is old -> redownload}
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/kevva/download/issues/211#issuecomment-821780404, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/APMWEOCPDRYZCTNGQV5AFFDTJEYHJANCNFSM4UR7KCVA
.

Ideally, I want an option that optionally can accept a function used for version checking.
Passing a boolean:
download(url, destination, { skipReDownload: true})

Passing a function that returns a boolean:
download(url, destination, { skipReDownload: versionCheckFunction})

function versionCheckFunction(path_to_file: string) {
	// do any version check that you want to do here and return a boolean

	return true // skip redownload
	return false // the file is old -> redownload
}

Yeah that was my point, if you were to create your own version check function what stops you from doing an if statement and checking for the status of the custom function, and then decide if you are going to run the download or not?

The version check is optional and only for those who need extra flexibility (which you should always consider when designing an interface). For my personal use, I am happy to just pass true to skipReDownload.