Refactor ImapStore

This is a first step to make the IMAP code easier to test.
I know this is a huge pull request. But even cursory glances help. Every bit of feedback is welcome.

looked this over for an hour, no major complaints

spent a little more time looking it over, no further issues

Thanks.


skbio.io.write does not play well with tempfile.NamedTemporaryFile

from skbio import DNA, write
from tempfile import  NamedTemporaryFile
s = DNA('ATGC')
with  NamedTemporaryFile('w+') as f:
    s.write(f, format='fasta')

errors:
/Users/zech/anaconda/envs/py35/lib/python3.5/site-packages/skbio/io/util.py in _resolve_file(file, **kwargs)
    202 @contextmanager
    203 def _resolve_file(file, **kwargs):
--> 204     file, source, is_binary_file = _resolve(file, **kwargs)
    205     try:
    206         yield file, source, is_binary_file

/Users/zech/anaconda/envs/py35/lib/python3.5/site-packages/skbio/io/util.py in _resolve(file, mode, encoding, errors, newline, compression, compresslevel)
     65     if newfile is None:
     66         raise IOSourceError(
---> 67             "Could not open source: %r (mode: %r)" % (file, mode))
     68
     69     return newfile, source, is_binary_file(newfile)

IOSourceError: Could not open source: <tempfile._TemporaryFileWrapper object at 0x10e96df60> (mode: 'w')

:+1: This should be possible to support once Python 2.7 is dropped. The NameTemporaryFile will then be composable file object.

cool. just curious, when is the plan to drop python2 support?
On Fri, Feb 26, 2016 at 9:54 AM, Evan Bolyen<EMAIL_ADDRESS>wrote:

[image: :+1:] This should be possible to support once Python 2.7 is
dropped. The NameTemporaryFile will then be composable file object.
—
Reply to this email directly or view it on GitHub
https://github.com/biocore/scikit-bio/issues/1291#issuecomment-189393757
.

I'm in the process of dropping Python 2 from the codebase, PR coming soon. The next release of scikit-bio will be Python 3 only.

:+1: awesome!
On Fri, Feb 26, 2016 at 10:47 AM, Jai Ram Rideout<EMAIL_ADDRESS>wrote:

I'm in the process of dropping Python 2 from the codebase, PR coming soon.
The next release of scikit-bio will be Python 3 only.
—
Reply to this email directly or view it on GitHub
https://github.com/biocore/scikit-bio/issues/1291#issuecomment-189420040
.

The problem still persists since py2 support is dropped

Right, I think there's additional work to be done to get this working but it's technically possible now that Python 2 isn't supported.

Looks like NamedTemproraryFile doesn't subclass io.BufferedRandom, instead wraps transparently. So all that is needed is to add an IOSource for NamedTemporaryFile to the io package. IO had to be written fairly defensively to avoid odd things between Py2/3.
Something that should be verified is that the file is actually deleted when it goes out of scope.

should check delete attribute of NamedTemporaryFile object to decide
whether to delete the file.
On Thu, Apr 21, 2016 at 11:06 AM, Evan Bolyen<EMAIL_ADDRESS>wrote:

Looks like NamedTemproraryFile doesn't subclass io.BufferedRandom,
instead wraps transparently. So all that is needed is to add an IOSource
for NamedTemporaryFile to the io package. IO had to be written fairly
defensively to avoid odd things between Py2/3.
Something that should be verified is that the file is actually deleted
when it goes out of scope.
—
You are receiving this because you authored the thread.
Reply to this email directly or view it on GitHub
https://github.com/biocore/scikit-bio/issues/1291#issuecomment-213041296


Don't ignore last block if it's less than blockLen

If the last remaining block is shorter than blockLen io.ReadFull will return io.ErrUnexpectedEOF and the block will not be processed (signature will be one block too short).

@markauskas I know this has been a long time ago, but thanks for the contribution! I am closing this PR without merging, but I have cherry picked your commit into PR #9 which was just merged.


Values from enumerable sets of options should not use quotes.

From https://www.puppet.com/docs/puppet/6/style_guide.html#style_guide_module_design-quoting:

If a string is a value from an enumerable set of options, such as present and absent, it SHOULD NOT be enclosed in quotes at all.

Fixes: rodjek/puppet-lint#412

 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.You have signed the CLA already but the status is still pending? Let us recheck it.

@alexmv thanks - this looks cool thank you for taking the time to work on it.
It looks like you have some rubocop issues that need fixing before we can merge.
Please let us know if we can help at all.

Hi @alexmv, we are looking at your PR again and it looks good. However, there are some issues with Rubocop that need addressing before it can be tested and merged. Do you have the time to fix this? If not, we could look into giving you a hand.

Rebased and re-pushed.  I'm not deeply familiar with Ruby or its toolchain, so let me know if there are non-idiomatic aspects of this with my attempts to applying Rubocop failed to catch.  I have also not re-checked the configuration against the latest puppet language definition to see if any of the rules have drifted from the Puppet language spec.

I understand the dislike of bare words.  The goal of the PR was to bring the linter in line with the official puppet style guide, which does still say:

If a string is a value from an enumerable set of options, such as present and absent, it SHOULD NOT be enclosed in quotes at all.
For example:
Good:
ensure => present

Bad:
ensure => "present"

...which seems like a pretty clear stance backing bare words.  Given that the rest of puppet-lint tries to implement the other parts of the style guide, it seemed reasonable to implement this one.

If folks can easily define new providers, then that's a pretty compelling argument that it's not an enumerable set (you cannot, a priori, enumerate all of the options).
Is there anything other than providers which falls into this category, which you're currently unconvinced about as the PR stands?

I raised it in Vox Pupuli's IRC channel. It would be very interesting to see some numbers how many violations we would see in our code base. At this moment I'm not sure how easy it would be to gather those numbers.

I think strings should always be quoted. We already have to do this for Hiera and I think it makes development easier when the rules are consistent across the ecosystem. I think the style guide should be changed so it always advocates quoting for strings.

Personally I very much prefer the legacy bareword style, ensure => present, because it feels so much cleaner and I like to pretend that they're keywords. I kinda wish they were keywords.
But pragmatically, quoted strings are the way to go. They make the language more consistent, more approachable, easier to learn, easier to reason about, easier validate, etc. I've submitted a PR updating the style guide. https://github.com/puppetlabs/language-style-guide/pull/18

@alexmv Thanks for your PR. As per @binford2k comment (and PR), we have decided to move forward with suggesting the use of quoted value for enumerable sets as best practice. Therefore, we will not be merging this PR as it currently is. However, if you want to adjust it to match Ben's changes to our style guide, we could take another look.

@alexmv Gonna go ahead and close this for now as it is against the decided style guide.
Thank you for the work however as this helped us come to a decision regarding the style.


feat(http2): allow HTTP/2 requests by ALPN when http2_only is unset

Previously, Hyper would unconditionally reject requests with Version::HTTP_2 if http2_only(true) was not provided when building the client. This change allows such requests to succeed as long as the underlying connection is actually negotiated as HTTP/2.

@sfackler This looks right to me, but want to look as well, since you've done a bit with ALPN?


Cognitive Services data-plane updates

Regen the Cognitive Services with an updated autorest.java autogen.
Methods which used to take 15-20 arguments are now taking only the required parameters plus an object which wraps the optional parameters.
Added new "manager" classes which moves the authentication to the library vs the user's code.
Updated pom.xml to reflect the service team's expectation for /build.

Can one of the admins verify this patch?


Refactor/ts conversion util dir

Blockers
Based on #39. Will be rebased and reviewable if/when that pr makes progress. Until then it looks far larger than it is, because those commits are also present.
May also need to be updated after the prettier pr #43.
Details to note

handle-error.js is only imported by app-plaid.js, which is currently unused. As such it hasn't been touched.

app-account.js and app-sync.js changes will be gone as soon as those files are converted to ts. eg
let errorMiddleware = require('./util/error-middleware').default;
becomes
import errorMiddleware from './util/error-middleware';

The lint rule changes are currently there to reflect the existing code (ie to minimize changes in the pr). Personally I'd prefer things like prefer-const enabled and fixed. If we can agree on that, we can make those changes (a bunch of let swapped for const) here or in a follow up.

There's a complete (probably?) typescript branch in my repo, and you're welcome to grab whatever you'd like from it. I'm not going to devote the time to splitting it up again.
Leaving this PR open feels to me like it would be sending the wrong message.


Improve fake ban

why? what's the problem with fakeban?

why? what's the problem with fakeban?

if u like original, u can ignore this change

why? what's the problem with fakeban?

i think it's better, not fix

lol i thought this was issues


Feat: Rich text error handling

It looks like that in mobile the padding bottom is smaller than padding top.


[Bug] Fail to start rstudio workplace

This is recreated from the original report
Describe the bug
When start a Rstudio workspace, an error message "cannot read properties of undefined (reading substring)"
To Reproduce
Steps to reproduce the behavior:

subscribe to RStudio, add Rstudio to a portfolio
Import RStudio workspace type, create a config
start workspace

Expected behavior
Rstudio could be started
Screenshots

Versions (please complete the following information):

Release Version installed: latest master
Is the deployment from a forked version of the repository? no

Additional context

The process stopped before any stack is created in CloudFormation.

Update: One thing that does not look right is that when EC2-RStudio in Service Catalog does not have any description before it is imported.

So are you noticing the provisioning artifact with name 1.17 works but the one named 1.4.1717 erroring out?
Could you provide any error logs from the workflowLoopRunner CloudWatch log group from when you ran into this issue?

I am sorry but the original log messages have expired and I have switched to a newer version of RStudio Server (compiled by packer). To reproduce this error, I suppose you can create a new version of any product with the same template but empty description, or trace the source code and check how product description is handled.


Error Cannot read property 'playBellSound' of undefined after reloading window with hidden terminal

VS Code Version: From sources
OS Version:

Steps to Reproduce:

Set "terminal.integrated.enableBell": true
Focus terminal and type Ctrl+G  to trigger bell sound
Hide terminal panel
Reload window
:bug: The following error shows in dev tools

Uncaught TypeError: Cannot read property 'playBellSound' of undefined
    at t.bell (Terminal.ts:1175)
    at Terminal.ts:153
    at e.fire (EventEmitter.ts:67)
    at t.bell (InputHandler.ts:786)
    at Object.<anonymous> (InputHandler.ts:369)
    at r.parse (EscapeSequenceParser.ts:670)
    at t.parse (InputHandler.ts:574)
    at e._action (CoreTerminal.ts:65)
    at e._innerWrite (WriteBuffer.ts:169)
    at WriteBuffer.ts:140

Created https://github.com/xtermjs/xterm.js/pull/3314 fixing this


add aaf_exac_all to the calculation of max_aaf_all

see: https://groups.google.com/forum/#!topic/gemini-variation/Z3PhfoNo8Nk

Hmm, so I actually think the current max_aaf_all value of 0 is "correct" in so far as it has the desired value. The ExAC webpage shows this variant as a low quality site and appears to be deliberately reporting the AAF on the website as NA because the AAF cannot be reliably determined when the site is poor quality.
Taken to an extreme, if a variant is only called in 1 het person in ExAC, I certainly wouldn't want max_aaf_all to report AAF=1.0 (or any population AAF for that matter) because it would lead me to accidentally exclude a variant that could very well be only present in that single person if one were to do resequencing and determine everyone's actual genotype at that site.

Aye, that makes sense.
Aaron has been pushing for exac_num_homalts and exac_num_hets columns that would be informative for these cases.
We may also expose the FILTER field from the ExAC VCF.

Yeah, I’m not sure the best way to handle this for the max_aaf_all field since you don’t have num_hom_alts, num_hets values for any of the other databases (plus if you start making it so that people have to specify those additional columns, it defeats the simplification goal of max_aaf_all).
Actually more generally, it also brings up as a question how EVS and 1KG are reporting AAF when the site is only called in, for example, <80% of samples (that’s the cutoff ExAC appears to be using).
On October 22, 2015 at 10:48:55 AM, Brent Pedersen - Bioinformatics<EMAIL_ADDRESS>wrote:
Aye, that makes sense.
Aaron has been pushing for exac_num_homalts and exac_num_hets columns that would be informative for these cases.
We may also expose the FILTER field from the ExAC VCF.
—
Reply to this email directly or view it on GitHub.

Adding the exac_num_homalts and exac_num_hets columns would be immensely useful for our group as well since we have faced similar situations mentioned above.  Is there an approximate timeline for this?
Thanks a lot!
Nima

I'll get it in for the next release. Would an aggregate column of the sum of num_homalts across all populations suffice or would it be better to have 1 column per population?

I would suggest taking ExAC’s approach and for a convenience variable such as max_aaf_all, always conservatively assume NA/Null for the allele frequency if there is high missingness among the sequenced samples.
On October 22, 2015 at 4:32:32 PM, Brent Pedersen - Bioinformatics<EMAIL_ADDRESS>wrote:
I'll get it in for the next release. Would an aggregate column of the sum of num_homalts across all populations suffice or would it be better to have 1 column per population?
—
Reply to this email directly or view it on GitHub.

So, report non-NULL for the proposed fields only if FILTER == PASS ?

Maybe not based on FILTER but based on the adjusted allele number?  e.g. for the variant I originally noticed, ExAC’s webpage says “Warning! This variant is only covered in 12 individuals (adjusted allele number = 24).”  — that’s what we want to ignore — the variants where there are just too few samples with a genotype to possibly obtain a reasonably accurate allele frequency.
http://exac.broadinstitute.org/variant/1-207726161-G-T
On October 22, 2015 at 4:56:43 PM, Brent Pedersen - Bioinformatics<EMAIL_ADDRESS>wrote:
So, report non-NULL for the proposed fields only if FILTER == PASS ?
—
Reply to this email directly or view it on GitHub.

OK. So we need a reasonable cutoff for  AN_Adj (24 is the value for this case). Suggestions?
Seems like we should put the in the db as well.

I’ve been contemplating this for a little while but never got very far, but technically there’s a way to estimate the confidence interval of a given allele frequency based on sample size… :)
http://citeseerx.ist.psu.edu/viewdoc/download?doi=<IP_ADDRESS>8.7107&rep=rep1&type=pdf
On October 22, 2015 at 5:14:19 PM, Brent Pedersen - Bioinformatics<EMAIL_ADDRESS>wrote:
OK. So we need a reasonable cutoff for AN_Adj (24 is the value for this case). Suggestions?
Seems like we should put the in the db as well.
—
Reply to this email directly or view it on GitHub.

Brent Werness (@BrentWerness) had previously suggested to me taking the 95% confidence interval, using "a fancy formula like method 4 on p.859 if you can"

I implemented eqn 4 from that paper as below. Seems to give reasonable results, though the bounds are tighter than I expected (see doctests). The example from the mailing list gives a lower bound of 0: af_lims(0.001428, 24) gives 0, 0.11 for the lower and upper bounds.
I'll have to have another look tomorrow to decide whether the 2nd arg is n_samples or n_samples * 2.
from math import sqrt

def af_lims(af, n_samples, alpha=0.05):
    """
    calculate the confiedence limits (alpha, 1 - alpha) of allele frequency
    (af) from n_samples
    Uses eqn 4 from:
    http://citeseerx.ist.psu.edu/viewdoc/download?doi=<IP_ADDRESS>8.7107&rep=rep1&type=pdf

    AF of 0.2 with varying samples
    >>> af_lims(0.2, 5) #doctest: +ELLIPSIS
    (0.20468..., 0.3059...)

    >>> af_lims(0.2, 10) #doctest: +ELLIPSIS
    (0.2092..., 0.2452...)

    >>> af_lims(0.2, 100) #doctest: +ELLIPSIS
    (0.2022..., 0.2034...)

    >>> af_lims(0.2, 1000) #doctest: +ELLIPSIS
    (0.2002..., 0.2003...)

    AF of 0.002 with varying samples
    >>> af_lims(0.002, 5) #doctest: +ELLIPSIS
    (0.0, 1.0)

    >>> af_lims(0.002, 10) #doctest: +ELLIPSIS
    (0.0, 1.0)

    >>> af_lims(0.002, 100) #doctest: +ELLIPSIS
    (0.0012..., 0.0121...)

    >>> af_lims(0.002, 1000) #doctest: +ELLIPSIS
    (0.00230..., 0.0026...)

    """

    p, n = af, n_samples
    z = 1 - alpha / 2
    q = 1 - p

    a = 2*n*p + z **2
    denom = 2 * (n + z**2)

    try:
        bL = z / sqrt((z**2 - 2 - 1) / n + 4*p*(n*q+1))
        L = (a - bL) / denom
    except ValueError:
        L = 0.0

    try:
        bU = z / sqrt((z**2 - 2 - 1) / n + 4*p*(n*q-1))
        U = (a + bU) / denom
    except ValueError:
        U = 1.0
    return max(L, 0.0), min(U, 1.0)

if __name__ == "__main__":
    import doctest
    doctest.testmod()

I believe you have a few transcription errors -- your z is wrong and it should be 1/n:
Here's my R code:
af_lims <- function (p,n) {
	q <- 1-p
	z <- 1.96

	a <- 2*n*p+z^2
	denom <- (2*(n+z^2))

	L <- (a -1 -z* sqrt(z^2 -2 -1/n + 4*p*(n*q+1))) / denom
	U <- (a +1 +z* sqrt(z^2 +2 -1/n + 4*p*(n*q-1))) / denom

	paste(L, U)
}

# example Table I in paper (page 861)
af_lims(81/263, 263)
af_lims(1/29, 29)

# example from my original post
af_lims(0.001428, 24)

One thing Brent (Brent Werness) and I have talked about is that if you are going to go through the effort of implementing confidence intervals for allele frequency estimates, you should store both upper, "empirical," and lower values for the allele frequency.
Since I do Mendelian analysis, my main concern is being cautious and not accidentally excluding a variant that is actually rare but appears to be common because of sequencing issues. Therefore, I would always choose to use the lower limit of the confidence interval for my filtering.
Perhaps someone doing some other analysis (I can't think of one offhand, but who knows) might be concerned with not accidentally including a rare variant, in which case, they would want to use the upper limit of the confidence interval.
Other people might be decide this is all too complex and use the empirical allele frequency (though as we can see here, this is a bad idea!)  :)

The intervals look more sane after I update the code to be correct as you suggest: https://gist.github.com/brentp/172e213a87f3f6188891
We are thinking to make this available to call somehow given that the user has AC and AN.
Other options are to include an aggregate column like max_aaf_all for min(lower CI) and one for max(upper CI) across ExAC,ESP,1KG

I like the aggregate option because it is easy/simple to replicate without mistakes over the long run and because now that you've gone through the effort of implementing this, I'd personally choose to use max_aaf_all_lowerCI over max_aaf_all!  ;)

hi everyone, the columns for exac (exac_num_het, exac_num_hom_alt, exac_num_chroms) are now available in master. we have a few things to go in before the next release, but you can access with gemini update --devel
let us know any feedback.

Cool! Are you eventually (future release) planning to do the confidence interval thing for each of the reference databases? (ExAC, 1KG, EVS, etc.)? If not, any idea if it's possible to replicate in SQL on the command line at run-time?

I had a script started to do this, for starters, we'd want to store the maximum of the lower CI across ExAC populations, agreed?

@jxchong I put the simple script here: https://gist.github.com/brentp/172e213a87f3f6188891
It's runnable as python af_lim.py your.gemini.db
We'll have to figure out the details later, but it's a start. I thought it might be more useful to save the max of the max CI...

Ah cool. yes I agree max of the lower CI across all populations. I'm not exactly sure about the max CI as I can't think of an immediate use case myself, so I have no opinion.

note-to-self (and to anyone using the above gist): that calculation needs to be adjusted to use exac_num_chroms rather than 60K since the AF for some variants is estimated using only a small number of samples...

I am closing this issue for now as it resolves the original concern and the exac_num_hets and num_hom_alts have been added. I will opened #609 as a new issue for the allele frequency confidence intervals

Hello Brent,
I am not sure if this was already discussed, so I apologize if I am repeating this point below:
Since the SNPs at a given loci are normalized in GEMINI, we have 2 entries (rows) for tri-allelic regions.  But when you pull from exac's AC_HOM (after it has been tidied up), you do rightly have 2 entries for each tri-allelic SNP.  However, now we have lost the corresponding value for each pair of alternates after the tidy operation.
For example,
GEMINI OUTPUT:
chrom	start	end	rs_ids	ref	alt	exac_num_het	exac_num_hom_alt
chr17	39346594	39346595	rs11283848,rs71155128	T	TGCTGTGGGTCCAGCTGCTGCCAGCCTA	6079,0,0,0,1,0,11,0,1,1,1,0,0,0,0,0,0,0,0,0,0	41827,0,0,0,0,0
ExAC.r0.3.sites.vep.tidy.vcf:
17	39346595	rs11283848	T	TGCTGTGGGTCTAGCTGCTGCCAGCCTA	1.12247e+08	VQSRTrancheINDEL96.00to97.00	AC=108476,13,1,1,2,1;AC_AFR=6954,0,0,0,0,0;AC_AMR=8260,0,0,0,0,0;AC_Adj=89747,11,0,1,2,1;AC_EAS=6648,0,0,0,1,0;AC_FIN=4828,0,0,0,0,0;AC_Het=6079,0,0,0,1,0,11,0,1,1,1,0,0,0,0,0,0,0,0,0,0;AC_Hom=41827,0,0,0,0,0;AC_NFE=48218,11,0,1,1,0;AC_OTH=689,0,0,0,0,0;AC_SAS=14150,0,0,0,0,1;AF=0.905,0.0001085,8.343e-06,8.343e-06,1.669e-05,8.343e-06;AN=119856;AN_AFR=7172;AN_AMR=8534;AN_Adj=96420;AN_EAS=7174;AN_FIN=5264;AN_NFE=52878;AN_OTH=726;AN_SAS=14672;BaseQRankSum=0.95;ClippingRankSum=-0.207;DB;DP=1429039;FS=0.525;GQ_MEAN=121.53;GQ_STDDEV=258.41;Het_AFR=194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;Het_AMR=264,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;Het_EAS=486,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;Het_FIN=412,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;Het_NFE=4191,0,0,0,0,0,11,0,1,1,0,0,0,0,0,0,0,0,0,0,0;Het_OTH=33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;Het_SAS=499,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0;Hom_AFR=3380,0,0,0,0,0;Hom_AMR=3998,0,0,0,0,0;Hom_EAS=3081,0,0,0,0,0;Hom_FIN=2208,0,0,0,0,0;Hom_NFE=22007,0,0,0,0,0;Hom_OTH=328,0,0,0,0,0;Hom_SAS=6825,0,0,0,0,0;
ExAC original VCF (the original ExAC file has 6 alternates in that region, which determines the order the allele counts are represented in GEMINI's exac_num_het and exac_num_hom_alt columns):
17	39346595	rs11283848	T	TGCTGTGGGTCCAGCTGCTGCCAGCCTA,TGCTGTGGGTCCAGCTGCTACCAGCCTA,TA,TGCTATGGGTCCAGCTGCTGCCAGCCTA,TGCTGTGGGTCCAGCTGCTGTCAGCCTA,TGCTGTGGGTCTAGCTGCTGCCAGCCTA	112247467.38VQSRTrancheINDEL96.00to97.00	AC=108476,13,1,1,2,1;AC_AFR=6954,0,0,0,0,0;AC_AMR=8260,0,0,0,0,0;AC_Adj=89747,11,0,1,2,1;AC_EAS=6648,0,0,0,1,0;AC_FIN=4828,0,0,0,0,0;AC_Het=6079,0,0,0,1,0,11,0,1,1,1,0,0,0,0,0,0,0,0,0,0;AC_Hom=41827,0,0,0,0,0;AC_NFE=48218,11,0,1,1,0;AC_OTH=689,0,0,0,0,0;AC_SAS=14150,0,0,0,0,1;AF=0.905,1.085e-04,8.343e-06,8.343e-06,1.669e-05,8.343e-06;AN=119856;AN_AFR=7172;AN_AMR=8534;AN_Adj=96420;AN_EAS=7174;AN_FIN=5264;AN_NFE=52878;AN_OTH=726;AN_SAS=14672;BaseQRankSum=0.950;ClippingRankSum=-2.070e-01;DB;DP=1429039;FS=0.525;GQ_MEAN=121.53;GQ_STDDEV=258.41;Het_AFR=194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;Het_AMR=264,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;Het_EAS=486,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;Het_FIN=412,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;Het_NFE=4191,0,0,0,0,0,11,0,1,1,0,0,0,0,0,0,0,0,0,0,0;Het_OTH=33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;Het_SAS=499,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0;Hom_AFR=3380,0,0,0,0,0;Hom_AMR=3998,0,0,0,0,0;Hom_EAS=3081,0,0,0,0,0;Hom_FIN=2208,0,0,0,0,0;Hom_NFE=22007,0,0,0,0,0;Hom_OTH=328,0,0,0,0,0;Hom_SAS=6825,0,0,0,0,0;
So since there wasn't a one-to-one correspondence between the alternate pattern, which gets lost when we used the tidy function, the exac_num_het and exac_num_hom_alt column's numbers do not allow us to determine which combination of alternates it belongs to.
I hope my explanation made sense and please let me know if you have any questions regarding this.  Perhaps I am not understanding this correctly myself.
Kind regards,
Nima Farzaneh

@nfarzaneh I'll have to think about this further when I have more time to fully understand the problem. I changed the formatting of your post a bit so I could read. It seems this is a problem with the vt decompose method that we use to do the alternate splitting, is that what you're thinking?

Yes exactly.  The alternates aren't being split properly.  Sorry about the formatting.  It looks like vt decompose just breaks the alternates down, but most of the information is contained in the last column of ExAC.  Each of those comma-delimited values need to be corresponding to their respective alternates, which isn't the case currently in GEMINI's output for those two exac columns.

Got it. Thanks for the explanation. I'll have reopen this issue to track the problem.

What version of vt are you using?

Hello Aaron,
vt decompose v0.5.
Thanks,
Nima

The ExAC tidy file I posted above is from the gemini/data/ folder and it shows the same pattern I mentioned above.

Hi @nfarzaneh it seems like you have an old version of the ExAC annotation. The md5sum should be: 93a4393680c0fb8f9c4e5ffbef755bae
but you can remove it and get a new one manually with:
wget https://s3.amazonaws.com/gemini-annotations/ExAC.r0.3.sites.vep.tidy.vcf.gz
wget https://s3.amazonaws.com/gemini-annotations/ExAC.r0.3.sites.vep.tidy.vcf.gz.tbi

in your annotations directory. This will resolve the problem with the Hom_ fields, but the Het_ counts stuff is not working as expected in vt.

Excellent.  Thanks.  I can confirm that the issue has been resolved.  Just a follow up question then, I have been updating using "gemini update --devel" in the past, before the vt script became part of the script.
Does this mean that I should occasionally purge my /gemini/data folder?  Or is there a way you can add md5sum checks to make sure that the user has the appropriate database version in their directory?
Thanks a lot for your quick response and again much appreciated for such an amazing piece of software.
Nima

I'm not sure why the ExAC hasn't been getting updated. We do plan to add md5sum checking in the future.
Note that there are still problems with the Het_ counts, we'll have to get around the problems with decomposition in order to address those.

Having the HET counts would definitely be an added bonus in the future.  The HOM counts are quite useful too!  Thanks for implementing.


Change pollset_work signature to allow moving grpc_pollset_worker to implementation

Ultimately we're going to want multiple implementations of grpc_pollset_worker: one per pollset type.
Since all that's really needed is a handle to this object, change the signature to a double pointer and have the pollset implementation fill it in.
Built on #5257

qps_openloop_test is the most aggressive user of Alarm, which depends on timer, and it is failing. I don't think it is failing on master since #5201 , so I think this merits some exploration.

Merged with head now #5257 is in.

@ctiller , There seem to be Windows build errors. All the Windows is failing...

Windows failures resolved. Sanity failure is #5403.
Green enough?


Issue with deferred callbacks pattern when an exception occurs in a @teardown_request decorated function

We recently stumbled across an issue with the @after_this_request decorator deferred callback pattern (described at http://flask.pocoo.org/docs/patterns/deferredcallbacks/).
This issue does not occur in v0.9, but does occur in v0.10 and v0.10.1. The issue also does not occur when using the @after_this_request decorator defined in 'flask/ctx.py'.
If an exception occurs in a function decorated with @teardown_request, any callback added with the @after_this_request decorator copied from the pattern will continue to be executed on subsequent requests. This occurs when running standalone:
$ python flask_teardown_exception.py
and when running under uwsgi:
$ uwsgi --yaml uwsgi.yaml (Be sure to correct paths if you want to use this)
We realize that @teardown_request documentation indicates that one should be careful never to throw an exception, but the end result was still very surprising.
A minimal testcase can be found in the github repo referenced at the bottom. It defines two functions to be executed after the current request. One using the built-in decorator, and one using the pattern and code sample. Both functions add a header to the response indicating the handling processID and an incrementing request ID. An exception can be triggered in the @teardown_request function by passing any value to the "e" GET parameter. After an exception is triggered, the built-in @after_this_request continues to work as expected an all subsequent requests that do not throw an exception. However, the functions added with the custom @after_this_request decorator following the pattern code sample continue to execute for all subsequent requests. For example, if I trigger an exception on request 6, and make 4 more requests, then the second to last request (request 9) will have the headers for request 6 ,7, 8 and 9; and the last request (request 10) will have the headers for request 6, 7, 8, 9 and 10.
The github repo also includes console output running under both uwsgi and standalone, and HTTP request/response pairs for 10 requests showing the outcome.
https://github.com/aegarbutt/teardown_request_exception

Given the issues I found when @teardown_appcontext raises (http://stackoverflow.com/questions/23301968/invalid-transaction-persisting-across-requests), I would use the wrapper there to make sure teardown functions never raise. I'm planning to open a PR against the Flask docs to emphasize this, since I certainly didn't think it was as big a deal as it is when I first encountered problems with teardown functions.

See also #1767


Support non web mercator WMS

follows #1141:

JOSM fakes EPSG:4326 and EPSG:3875/900913 interoperability by stretching a 4326 image a little bit vertically in-code. […] maybe iD could do a similar thing?

see also https://github.com/mapbox/whoots-js/issues/19

is this all done now that #4858 was merged or is there still more to do?

Well, we could try to add support for other non web mercator projections (apart from plate carrée = EPSG:4326). Not sure if it would be worth the effort, though.

Well, we could try to add support for other non web mercator projections (apart from plate carrée = EPSG:4326). Not sure if it would be worth the effort, though.

Fair point!

Is it possible for iD editor to support WMS in polar stereographic projection?


Add bleed damage to grim tendrils

We removed the bleed damage in the past because the damage application is wrong for success.

Ah, nevermind then - I completely overlooked that passage. Sorry for that.


On demo page, add buttons for user to choose math symbols.

Even if we are providing users mathquill math edit box, users who do not know TeX still need a "table" to look up symbols/functions, and we will make this symbols clickable:
If user chooses a symbol/function, he click the item, and send that symbol/function to his query box.
relevant files: demo/web/index.html

Done. See 92417d0179f2eb8f9a52ca8feecb56ae2d9fa033


Downgrade SpecEasy .NET target to 4.5

At TrackAbout, for various reasons our projects are still targeting .NET 4.5, which means that, though we would like to, we still cannot use SpecEasy 2.0 because it targets .NET 4.5.1. One reason that I would personally like to upgrade is that I deal often with issues that the SpecEasy results hiding exceptions pull request would resolve. Also, it's possible that providing a .NET 4.5 version could help improve adoption of SpecEasy, though I have no proof of that.
I see a couple of options:

Downgrade the target version for the projects to 4.5. This would mean changing the NuGet package to replace the lib\net451 folder with lib\net45. I'm not sure what effects, if any, this would have when upgrading existing installs. I can look into that if we decide on this approach.
Create new SpecEasy and SpecEasy.Specs (new solution too?) project files that build with the same source but target 4.5. Update the NuGet package to put the 4.5 binaries in a new lib\net45 folder alongside lib\net451.

Thoughts? Other options?

This is resolved in SpecEasy 2.1.


Add burn sugar method to WOETH on L2

Adds a sugar method for burn(address,uint256) that uses msg.sender for the address

Deployed contract:

BridgedWOETH: 0x9745A051bD218D78Eb6B5D0F53C685f6B052D478

If you made a contract change, make sure to complete the checklist below before merging it in master.
Refer to our documentation for more details about contract security best practices.
Contract change checklist:

[ ] Code reviewed by 2 reviewers.
[ ] Copy & paste code review security checklist below this checklist.
[ ] Unit tests pass
[ ] Slither tests pass with no warning
[ ] Echidna tests pass if PR includes changes to OUSD contract (not automated, run manually on local)

[x] All deployed contracts are listed in the deploy PR's description
[x] Deployed contract's verified code (and all dependencies) match the code in master
[x] The transactions that interacted with the newly deployed contract match the deploy script.
[x] Governance proposal matches the deploy script
[ ] Smoke tests pass after fork test execution of the governance proposal

I've verified contract differences
diff -n arbitrum 0xe9024A7cB3ABB38D514b6Da8Fa34e71AA03Ebf1f

Compared the "BridgedWOETH" contract with address 0xe9024A7cB3ABB38D514b6Da8Fa34e71AA03Ebf1f on arbitrum
to the "BridgedWOETH" contract with address 0x9745A051bD218D78Eb6B5D0F53C685f6B052D478 on arbitrum

match   @openzeppelin/contracts/access/AccessControl.sol
match   @openzeppelin/contracts/access/AccessControlEnumerable.sol
match   @openzeppelin/contracts/access/IAccessControl.sol
match   @openzeppelin/contracts/access/IAccessControlEnumerable.sol
match   @openzeppelin/contracts/token/ERC20/ERC20.sol
match   @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol
match   @openzeppelin/contracts/token/ERC20/IERC20.sol
match   @openzeppelin/contracts/utils/Context.sol
match   @openzeppelin/contracts/utils/introspection/ERC165.sol
match   @openzeppelin/contracts/utils/introspection/IERC165.sol
match   @openzeppelin/contracts/utils/Strings.sol
match   @openzeppelin/contracts/utils/structs/EnumerableSet.sol
match   contracts/governance/Governable.sol
changed contracts/token/BridgedWOETH.sol
match   contracts/utils/Initializable.sol


ToggleButton foreground color when selected

The foreground color of the standard toggle button is hard to read when selected:

Although it seems like less of an issue in the dark theme:

It would be nice to see the foreground color change to white when selected.

@thoemmi wdyt?

@melance I've moved the ControlTemplate triggers to Style triggers, so you can now create your own Style where you only need to override the IsChecked trigger.
<Style TargetType="ToggleButton" BasedOn="{StaticResource MetroToggleButton}">
  <Style.Triggers>
    <Trigger Property="IsChecked" Value="True">
      <Setter Property="Foreground" Value="White" />
    </Trigger>
  </Style.Triggers>
</Style>


Testing ENS Merch Shop: ens-merch-shop.myshopify.com took too long to respond.

Describe the feature you'd like to request

I can't enter again :(
Describe the solution you'd like
No response
Describe alternatives you've considered
No response

I'll close this issue because I was in the wrong link


can add Java function

Work item: #49
UI:

How long does it take when running mvn clean package, it takes time beacause maven will clean the output files, do compiling and package.

For the project creation, Issue #85


maxium length of URL

I think the maximum length is 3893

Since 1e8a6d0bfc51fd2ed20f7e116082ff9f9eda999f we are not restricting on the length of the URL any longer.  Instead, we just try the URL and if it fails for whatever reason we continue.


Mocha not working in Meteor <IP_ADDRESS> for Windows

Installed a new meteor app and added the mike:mocha package, but got 0 tests passed as the html-reporter result. Added sample tests and changed the contents of sample-test files but nothing works. It just remains the same,browser doesn't refresh and everything just remains the same.

I have the same problem.

@yuomtheara the issue has been addressed here


[CP-1770] Add a changelog

First pass at a changelog.
Background:
There is currently no changelog in developers.strava.com. However, changelogs are important becaduse
Solution:
Add a changelog. A link to the old changelog was already linked on the developers.strava.com homepage, so all that was needed was to create a new markdown file and update the link to be a local reference.
I wanted to make it simple for developers to add changelog entries while ensuring that the content was presented logically and easily readable, so I relied heavily on built-in Markdown conventions and looked around at other well-documented external APIs for stylistic inspiration; the current implementation is similar to that of the Stripe API, where dates are bolded and individual entries are separated by unordered lists.
Result:
developers.strava.com has a changelog that is easy to update and easy to understand.
Completes CP-1770

Forgot to add changelog documentation. Added a bullet point on CONTRIBUTION.md as guidance for when to write a changelog entry.


HLS output

How does hls generation work.
I set hls to have 12 second segments and 5 segments per m3u8, takes 60 seconds before any HLS data is written
12 second segments and 20 segments per m3u8, takes 50 seconds before any HLS data is written
What is the criteria to start outputting data
CLI
tsp -v -I http "http://your/favourite/live/stream" -P pcrbitrate -P fork 'tsp -v -O hls  /tmp/test-0-.ts -p /tmp/test-0.m3u8 -d 12 -l 5' -P regulate -O ip -e <IP_ADDRESS>:1234
VERSION
tsp --version
tsp: TSDuck - The MPEG Transport Stream Toolkit - version 3.19-1392
I would ask that the HLS starts outputting on the 1st segment it creates and populates the m3u8 with filenames that are not available, or make this an option.

Hi @joolzg,
The hls output plugin does not introduce any initial delay. It starts outputting packets as soon as they arrive.
This is maybe due to buffering artifacts (especially because you serialize two instances of tsp). Try to reduce buffering and burst size in both tsp commands. See options --max-input-packets and --max-flushed-packets. When dealing with low bitrates, the initial buffering means a lot of time.

Added in a --max-input-packets and  works


Manual override

Excellent function. I have started to use it in a number of automations.
The one thing I am missing, is a manual override possibility to manually force a condition (On or Off) independently of programmed schedule. I have tried to use a separate switch node, and feeding in a disableDevice command for the affected device to the UI scheduler, but it occurs that when the device is "disabled" the scheduler will still force an off output for the disabled device, furthermore, the off output is refreshed as per refresh rate. I would like to be able to have have output refreshes (On or Off) while the device is enabled in the scheduler (as currently is the case), but would like to have the possibility of output being blocked (no output at all, no refreshes)  when corresponding device is disabled.
Alternatively, I think it would be a good enhancement to have manual override button option included in the UI.

Hi @pjgrun,
thanks for reaching out to me.
If you want to manually override timers, you would want to choose out of 3 possible state: always on, always off and automatic mode. A single switch won't be enough. I was facing the same issue a while ago and I ended up adding a dropdown node to the flow that handles that. I don't have the exact flow here at the moment but I quickly created something similar.
[     {         "id": "a9184512.6d0338",         "type": "file",         "z": "578568e428e989a8",         "name": "WriteFile",         "filename": "/home/ubuntu/Documents/time-schedule0.txt",         "appendNewline": true,         "createDir": true,         "overwriteFile": "true",         "encoding": "none",         "x": 700,         "y": 120,         "wires": [             []         ]     },     {         "id": "4d5aed99.b82234",         "type": "inject",         "z": "578568e428e989a8",         "name": "FireAfterReboot",         "props": [             {                 "p": "payload",                 "v": "",                 "vt": "date"             },             {                 "p": "topic",                 "v": "",                 "vt": "string"             }         ],         "repeat": "",         "crontab": "",         "once": true,         "onceDelay": 0.1,         "topic": "",         "payload": "",         "payloadType": "date",         "x": 140,         "y": 160,         "wires": [             [                 "efd15a17.372ff8"             ]         ]     },     {         "id": "efd15a17.372ff8",         "type": "file in",         "z": "578568e428e989a8",         "name": "ReadFile",         "filename": "/home/ubuntu/Documents/time-schedule0.txt",         "format": "utf8",         "chunk": false,         "sendError": false,         "encoding": "none",         "allProps": false,         "x": 320,         "y": 160,         "wires": [             [                 "dec834a4.768678"             ]         ]     },     {         "id": "dec834a4.768678",         "type": "ui_time_scheduler",         "z": "578568e428e989a8",         "group": "bfe48a3e.1b0f4",         "name": "",         "startDay": "0",         "refresh": 60,         "devices": [             "Device 1"         ],         "singleOff": false,         "onlySendChange": false,         "customPayload": false,         "eventMode": false,         "eventOptions": [],         "sendTopic": false,         "lat": "",         "lon": "",         "customContextStore": "",         "outputs": 2,         "order": 3,         "width": 0,         "height": 0,         "x": 490,         "y": 160,         "wires": [             [                 "a9184512.6d0338"             ],             [                 "ca90d620de307740"             ]         ]     },     {         "id": "66700bc4098e37cb",         "type": "ui_dropdown",         "z": "578568e428e989a8",         "name": "",         "label": "",         "tooltip": "",         "place": "Select option",         "group": "bfe48a3e.1b0f4",         "order": 1,         "width": 0,         "height": 0,         "passthru": true,         "multiple": false,         "options": [             {                 "label": "automatic",                 "value": "auto",                 "type": "str"             },             {                 "label": "always on",                 "value": true,                 "type": "bool"             },             {                 "label": "always off",                 "value": false,                 "type": "bool"             }         ],         "payload": "",         "topic": "topic",         "topicType": "msg",         "className": "",         "x": 480,         "y": 60,         "wires": [             [                 "1c39700a56f26eb4"             ]         ]     },     {         "id": "ab6fca2294420b8f",         "type": "function",         "z": "578568e428e989a8",         "name": "",         "func": "msg.enabled = false;\n\nif (msg.payload != \"auto\") {\n    return msg;\n}\n\nmsg.payload = flow.get(\"device1status\") || false;\nreturn msg;",         "outputs": 1,         "noerr": 0,         "initialize": "",         "finalize": "",         "libs": [],         "x": 960,         "y": 60,         "wires": [             [                 "9ae2aade43e441b3"             ]         ]     },     {         "id": "1c39700a56f26eb4",         "type": "change",         "z": "578568e428e989a8",         "name": "",         "rules": [             {                 "t": "set",                 "p": "device1control",                 "pt": "flow",                 "to": "payload",                 "tot": "msg"             }         ],         "action": "",         "property": "",         "from": "",         "to": "",         "reg": false,         "x": 740,         "y": 60,         "wires": [             [                 "ab6fca2294420b8f"             ]         ]     },     {         "id": "9ae2aade43e441b3",         "type": "ui_switch",         "z": "578568e428e989a8",         "name": "",         "label": "MyDevice",         "tooltip": "",         "group": "bfe48a3e.1b0f4",         "order": 2,         "width": 0,         "height": 0,         "passthru": true,         "decouple": "false",         "topic": "",         "style": "",         "onvalue": "true",         "onvalueType": "bool",         "onicon": "",         "oncolor": "",         "offvalue": "false",         "offvalueType": "bool",         "officon": "",         "offcolor": "",         "x": 1140,         "y": 60,         "wires": [             []         ]     },     {         "id": "ca90d620de307740",         "type": "change",         "z": "578568e428e989a8",         "name": "",         "rules": [             {                 "t": "set",                 "p": "device1status",                 "pt": "flow",                 "to": "payload",                 "tot": "msg"             },             {                 "t": "set",                 "p": "payload",                 "pt": "msg",                 "to": "device1control",                 "tot": "flow"             }         ],         "action": "",         "property": "",         "from": "",         "to": "",         "reg": false,         "x": 720,         "y": 160,         "wires": [             [                 "ab6fca2294420b8f"             ]         ]     },     {         "id": "68d5d0daae35bf53",         "type": "inject",         "z": "578568e428e989a8",         "name": "FireAfterReboot",         "props": [             {                 "p": "payload"             },             {                 "p": "topic",                 "vt": "str"             }         ],         "repeat": "",         "crontab": "",         "once": true,         "onceDelay": 0.1,         "topic": "",         "payload": "auto",         "payloadType": "str",         "x": 140,         "y": 60,         "wires": [             [                 "66700bc4098e37cb"             ]         ]     },     {         "id": "bfe48a3e.1b0f4",         "type": "ui_group",         "name": "Scheduler",         "tab": "2936b813.6cde68",         "order": 1,         "disp": true,         "width": "6",         "collapse": false     },     {         "id": "2936b813.6cde68",         "type": "ui_tab",         "name": "Scheduler Demo",         "icon": "dashboard",         "order": 1,         "disabled": false,         "hidden": false     } ]
Please let me know if this helps.

I am going to close this for now, please let me know if there are any other questions!


ref 提示找不到

Describe the bug
unplugin-vue-components定义的src里的组件，会提示ref找不到
Reproduction
dev环境
System Info
每当我想修改该组件文件夹名字，然后components.dts重新载入后，该组件提示ref找不到，必须删除组件重新注册

Used Package Manager
npm
Validations

[X] Follow our Code of Conduct
[X] Read the Contributing Guide.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] Check that this is a concrete bug. For Q&A, please open a GitHub Discussion instead.
[X] The provided reproduction is a minimal reproducible of the bug.

需要可复现的 git 仓库，或者更多的描述信息。😎


test: ensure prefetched SRPMs are included in source image for multi-arch builds

Description
This PR extends a test of multi-platform builds to have a sanity check, which ensures prefetched SRPMs are included in the built source container image.
Issue ticket number and link
STONEBLD-2454
Type of change

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

How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration
Checklist:

[x] I have performed a self-review of my code
[x] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] I have added meaningful description with JIRA/GitHub issue key(if applicable), for example HASSuiteDescribe("STONE-123456789 devfile source")
[ ] I have updated labels (if needed)

Rebased. Conflicts are fixed.


Clarify ingress and load balancer docs

This PR corresponds to this issue https://github.com/rancher/docs/issues/1396

LGTM


Deadlock in latest 3.4.0

In the recent release (3.4.0), my app is hanging in an upsert update (ObjectRepository)
Maybe is related to the changes made in #193.

If you are using any locking mechanism to synchronize nitrite write, remove it. If not, please share a reproducible code.

It seems removing a lock from an outer method, fixed the issue, the locks where there from an implementation before using nitrite.
But why is this happening? How an app lock can mess the sync in nitrite?

In version 3.4.0 locking mechanism of nitrite has changed from 3.3.0. In 3.3.0 app developer needs to synchronize read-write and indexing separately, now from 3.4.0 it is managed by nitrite only. For upsert, update/insert and index write all are managed using a single ReentrantReadWriteLock in nitrite.

I was able to reproduce it. Try using 2 keys in an upsert update.
eg.
collection.update(Filters.and(eq("key", "key"), eq("second_key", "second_key")), doc, UpdateOptions.updateOptions(true));

If you need i can share the code, but its very easy reproducible.
I couldn't pass the invokeAll method in debug. (AndFilters.java)
List<Callable<Set<NitriteId>>> tasks = createTasks(filters, documentMap);

            boolean initialCount = true;
            List<Future<Set<NitriteId>>> futures = executorService.invokeAll(tasks);

Did you run the above code with 3.4.0 or 3.3.0? I ran below test code on 3.4.0 and it went fine without any issues
@Test
public void testIssue212() {
    NitriteCollection collection = db.getCollection("test");
    Document doc1 = createDocument("key", "key").put("second_key", "second_key").put("third_key", "third_key");
    Document doc2 = createDocument("key", "key").put("second_key", "second_key").put("fourth_key", "fourth_key");
    Document doc = createDocument("fifth_key", "fifth_key");

    collection.insert(doc1, doc2);
    collection.update(Filters.and(Filters.eq("key", "key"),
        Filters.eq("second_key", "second_key")), doc, UpdateOptions.updateOptions(true));

    for (Document document : collection.find()) {
        System.out.println(document);
    }
}

Try adding indexes for both fields. Sorry, i didn't mention it.

Nice find.. I am going to give an emergency fixed version in 3.4.1


Show future posts in dev mode

This resolves the need to fudge publication dates while previewing posts with make dev, fixes https://github.com/ipfs/blog/pull/301
Depends on:

[ ] https://github.com/ipfs/blog/pull/366

appears to work as expected
@terichadbourne would this satisfy you for preview purposes or is it confusing that dev behavior is different from "release" (normal make)?
@olizilla was there a reason you didn't want to use this option? seems super useful given that you'll almost always be writing posts ✨ in the future ✨

updated readme to point out that in make dev you'll see all future posts even though they won't be visible on the live site until the publication date (NOTE: I would recommend using an explicit publishDate so there's less confusion about what "current" is)
@terichadbourne let me know if this explanation is clear enough, happy to restore parts of your text as well

@parkan the only reason was ignorance of its existance! Thanks for this!

I've tweaked the explanation here in light of #366 which will  have CI build the blog every day, so we can start to make use of scheduled posts.

The new wording makes sense to me. Thank you both for your work on this!


improve Tag test coverage

Current coverage is 77.70% (diff: 100%)

Merging #188 into master will decrease coverage by 0.37%

@@             master       #188   diff @@
==========================================
  Files            92         92
  Lines          5882       5881     -1
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
- Hits           4593       4570    -23
- Misses          804        837    +33
+ Partials        485        474    -11

Powered by Codecov. Last update 825c00d...a6300f6

@ajnavarro rebase

@mcuadros rebased.


fatal error: MSpanList_Insert

I'm getting the following error:
failed MSpanList_Insert 0x279000 0x10abbcc88d484 0x0 0x0
fatal error: MSpanList_Insert

runtime stack:
runtime.throw(0x182a00, 0x10)
	/usr/local/go/src/runtime/panic.go:530 +0x90 fp=0x7ffeefbff470 sp=0x7ffeefbff458
runtime.(*mSpanList).insert(0x22f9e8, 0x279000)
	/usr/local/go/src/runtime/mheap.go:933 +0x293 fp=0x7ffeefbff4a0 sp=0x7ffeefbff470
runtime.(*mheap).freeSpanLocked(0x22f1e0, 0x279000, 0x100, 0x0)
	/usr/local/go/src/runtime/mheap.go:809 +0x4be fp=0x7ffeefbff508 sp=0x7ffeefbff4a0
runtime.(*mheap).grow(0x22f1e0, 0x8, 0x0)
	/usr/local/go/src/runtime/mheap.go:675 +0x2a0 fp=0x7ffeefbff560 sp=0x7ffeefbff508
runtime.(*mheap).allocSpanLocked(0x22f1e0, 0x1, 0x0)
	/usr/local/go/src/runtime/mheap.go:553 +0x4e3 fp=0x7ffeefbff5b8 sp=0x7ffeefbff560
runtime.(*mheap).alloc_m(0x22f1e0, 0x1, 0x15, 0x0)
	/usr/local/go/src/runtime/mheap.go:437 +0x119 fp=0x7ffeefbff5e8 sp=0x7ffeefbff5b8
runtime.(*mheap).alloc.func1()
	/usr/local/go/src/runtime/mheap.go:502 +0x41 fp=0x7ffeefbff618 sp=0x7ffeefbff5e8
runtime.systemstack(0x7ffeefbff638)
	/usr/local/go/src/runtime/asm_amd64.s:307 +0xab fp=0x7ffeefbff620 sp=0x7ffeefbff618
runtime.(*mheap).alloc(0x22f1e0, 0x1, 0x10000000015, 0xf3ef)
	/usr/local/go/src/runtime/mheap.go:503 +0x63 fp=0x7ffeefbff668 sp=0x7ffeefbff620
runtime.(*mcentral).grow(0x230de0, 0x0)
	/usr/local/go/src/runtime/mcentral.go:209 +0x93 fp=0x7ffeefbff6d0 sp=0x7ffeefbff668
runtime.(*mcentral).cacheSpan(0x230de0, 0x22be18)
	/usr/local/go/src/runtime/mcentral.go:89 +0x47d fp=0x7ffeefbff710 sp=0x7ffeefbff6d0
runtime.(*mcache).refill(0x275000, 0x15, 0x7ffeefbff778)
	/usr/local/go/src/runtime/mcache.go:119 +0xcc fp=0x7ffeefbff748 sp=0x7ffeefbff710
runtime.mallocgc.func2()
	/usr/local/go/src/runtime/malloc.go:642 +0x2b fp=0x7ffeefbff768 sp=0x7ffeefbff748
runtime.systemstack(0x7ffeefbff808)
	/usr/local/go/src/runtime/asm_amd64.s:307 +0xab fp=0x7ffeefbff770 sp=0x7ffeefbff768
runtime.mallocgc(0x180, 0x163000, 0x0, 0x800000000)
	/usr/local/go/src/runtime/malloc.go:643 +0x869 fp=0x7ffeefbff848 sp=0x7ffeefbff770
runtime.newobject(0x163000, 0x22c0b0)
	/usr/local/go/src/runtime/malloc.go:781 +0x42 fp=0x7ffeefbff870 sp=0x7ffeefbff848
runtime.malg(0x8000, 0x22c320)
	/usr/local/go/src/runtime/proc.go:2634 +0x27 fp=0x7ffeefbff8a8 sp=0x7ffeefbff870
runtime.mpreinit(0x22c660)
	/usr/local/go/src/runtime/os1_darwin.go:140 +0x1f fp=0x7ffeefbff8c0 sp=0x7ffeefbff8a8
runtime.mcommoninit(0x22c660)
	/usr/local/go/src/runtime/proc.go:494 +0x105 fp=0x7ffeefbff908 sp=0x7ffeefbff8c0
runtime.schedinit()
	/usr/local/go/src/runtime/proc.go:434 +0x79 fp=0x7ffeefbff950 sp=0x7ffeefbff908
runtime.rt0_go(0x7ffeefbff980, 0x2, 0x7ffeefbff980, 0x0, 0x2, 0x7ffeefbffb08, 0x7ffeefbffb1a, 0x0, 0x7ffeefbffb32, 0x7ffeefbffb6e, ...)
	/usr/local/go/src/runtime/asm_amd64.s:138 +0x132 fp=0x7ffeefbff958 sp=0x7ffeefbff950

I'm attempting to generate a manifest for check_local_admin: https://github.com/grahampugh/osx-scripts/tree/master/check_local_admin
Let me know if you need any more information :)

I had to recompile the binary:
Clone the repo locally then:
$ brew install go
$ go get github.com/groob/plist
$ cd appmanifest
$ ./release.sh

@brendon So is this just an issue with the plist package? Or an issue you had with a pre-built version of micromdm?

this entire repo is deprecated. all the tools in here have been ported to the mdmctl command in the micromdm repo.

Thanks @groob :) Sorry I didn't see anything in the README about that. @knightsc, it was a problem with the precompiled binary :)


Opening channel

I've seen some discrepancies from various sources about channels being opened with lnwallet (incoming).
Just for clarification, is it possible for someone to open a channel to my local node? I've seen the channel details which contains useful information, but in order for someone to connect I believe an ip address is required? (Which would be difficult for constantly changing phone ip's)
My initial thought would be pubkey + Olympus server ip, but I don't know enough about the inner workings of LN and your wallet yet (and dont have anyone to test with)

As of now it's not possible to open an incoming channel to BLW simply because it does not have a code to handle this case yet. Another problem is often mobile phones, especially those using cellular data, can't be directly reached due to firewalls.
Olympus is also of no help here since it's mainly a backup server which does not establish any persistent connection to a device.
The only case where this could work is when an app is already connected to some peer, perhaps because of an outgoing channel it has created earlier, in this case peer can establish an incoming channel and it is in my plans to support that as it's useful for "will-open-channel-back" strategy.

Understood. Thank you for your thorough response, it clears up a lot. I'll close this issue.


fix: types path in package.json

Currently types path is broken so all definitions are broken.

Is this still an issue in the latest release?


[ALLUXIO-3073] Improve node locality testing

https://alluxio.atlassian.net/browse/ALLUXIO-3073

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/17910/Failed Tests: 1org.alluxio:alluxio-core-client-fs: 1alluxio.client.file.policy.LocalFirstPolicyTest.chooseClosestTier
Test FAILed.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/17911/
Test PASSed.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/17912/
Test PASSed.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/17914/
Test PASSed.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/17930/Failed Tests: 3org.alluxio:alluxio-core-common: 2alluxio.network.TieredIdentityFactoryTest.defaultConfalluxio.wire.TieredIdentityTest.nearestorg.alluxio:alluxio-tests: 1alluxio.master.block.MultiWorkerIntegrationTest.writeLargeFile
Test FAILed.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/17931/Failed Tests: 2org.alluxio:alluxio-core-common: 1alluxio.network.TieredIdentityFactoryTest.defaultConforg.alluxio:alluxio-tests: 1alluxio.master.block.MultiWorkerIntegrationTest.writeLargeFile
Test FAILed.

Build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/17948/
Test PASSed.

Build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/17949/
Test PASSed.

Build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/17950/
Test PASSed.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/17970/
Test PASSed.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/17972/
Test PASSed.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/18039/
Test FAILed.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/18040/
Test PASSed.

Thank you @aaudiber @yupeng9 for your guidance through the implementation of this improvement. It was fun!


[Request] add singularity part

can you add a singularity part the the material system
-ThatGravyboat

Like for Shadow's SIngularities mod? Or Avarita?

Oh i never seen this till now but it would be Avarita sorry for the late response.


Feeds example.

This project has been very helpful for me.
Thanks to all contributors.

Codecov Report

Merging #64 into develop will not change coverage.
The diff coverage is n/a.

@@          Coverage Diff          @@
##           develop   #64   +/-   ##
=====================================
  Coverage       79%   79%
=====================================
  Files           18    18
  Lines          824   824
  Branches        78    78
=====================================
  Hits           651   651
  Misses         165   165
  Partials         8     8

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 6e838f9...2baa691. Read the comment docs.


 Maybe someone can help. I think I have to get rid of the grid and make it two dimensions not three and when do some fancy recalc of the psoitions. This would enable braodcasting. I also think we need a better public base for code examples. MatchingNeighbors needs to be optimzed....
public class SelfOrganizingMap: torch.nn.Module<torch.Tensor, torch.Tensor>
{
public Tensor Grid;
    public SelfOrganizingMap(int size, int depth):base(nameof(SelfOrganizingMap))
    {
        Grid = torch.empty(new long[] { size, size, depth });
        this.register_buffer("Grid", Grid);
    }
    public long Width => Grid.size(0);
    public long Height => Grid.size(1);
    public long Depth => Grid.size(2);

    public Tensor this[int x, int y]
    { get { return Grid[x, y, ..]; } set { Grid[x, y, ..] = value; } }

    public virtual void Train(Tensor x)
    {

        Initialize(x);
        const double slr = 0.02;
        const int cycles = 100;
        double lat = Math.Max(this.Width, this.Height) / 2;
        double tim = cycles / Math.Log(lat);
        int ix = 0;
        double lr = slr;
        while (ix < cycles)
        {
            double nr = lat * Math.Exp(-ix / tim);
            double nd = nr * 2;
            for (int iy = 0; iy < x.size(0); iy++)
            { MatchingNeighbors(x[iy, ..], nd, nr, nr * nr, lr); }
            ix++;
            lr = slr * Math.Exp(-(double)ix / cycles);
        }
    }

    public void Initialize(Tensor x)
    {
        var min = x.min().sum();
        var max = x.max().sum();
        var div = max - min;
        Grid = (torch.rand(Width, Width, Depth,device:Grid.device) * div) + min;
    }

    public double DistanceToSquared((int x, int y) A, (int x, int y) B)
    {
        int dx = A.x - B.x;
        int dy = A.y - B.y;
        return (dx * dx) + (dy * dy);
    }

    private void MatchingNeighbors(Tensor vector, double dia, double radius, double s, double lr)
    {
        var match = this.Match(vector);
        int sx = (int)Math.Max(0, match.x - radius - 1);
        int sy = (int)Math.Max(0, match.y - radius - 1);
        int ex = (int)Math.Min(Width, sx + dia + 1);
        int ey = (int)Math.Min(Height, sy + dia + 1);

        for (int x = sx; x < ex; x++)
        {
            for (int y = sy; y < ey; y++)
            {
                double dq = this.DistanceToSquared(match, (x, y));
                if (dq <= s) { this.AdjustWeights(vector, lr, Math.Exp(-dq / (2 * s)), x, y); }
            }
        }
    }

    public void AdjustWeights(Tensor i, double lr, double df, int x, int y)
    {
        double lrf = lr * df;
        var wi = Grid[x, y, ..];
        Grid[x, y, ..] = wi + (lrf * (i[..] - wi));
    }

    public (int x, int y) Match(Tensor i)
    {
        var f = Grid.reshape(Width * Height, Depth);
        var x = (double)(int)(f - i).pow(2.0).sum(1).argmin() / (double)Width;
        var y = (x - Math.Floor(x)) * Height;
        x = Math.Floor(x);
        return ((int)x, (int)y); ;
    }

    public override Tensor forward(Tensor i)
    {return torch.tensor(Match(i), device: Grid.device);}

    [WpfType(typeof(Grid))]
    public static void Test()
    {
        var wpf ="".GetWpf<Grid>();
        var som = new SelfOrganizingMap(100, 3).to("Cuda");
        var trainingdata = torch.randint(0, 256, new int[] { 200, 3 }).to(ScalarType.Float32).to("Cuda");
        som.Train(trainingdata);
        wpf.Children.Add(som.Grid.ToImage());

    }
}

}
Thanks in advance.

Hello @Sprinzl,
I'm not sure what your specific ask is on this one. Is there a performance bug you have identified?

Hello @Sprinzl,
I'm not sure what your specific ask is on this one. Is there a performance bug you have identified?

Ok I it is hell of slow in comparison with non tensor version. What I am looking for in MatchingNeighbors is to get rid of the loops. If I do [50,3] against [400,3] is where any method to do some lambda to match it and get the index value. I saw something like this long time ago in python

So, if I understand correctly, you are looking for help parallelizing your code? I don't know what the right forum for that is, but I suspect that you will find a broader audience of programmers who know how to help elsewhere, maybe on StackOverflow, or maybe someone can help you on the TorchSharp gitter site: https://gitter.im/dotnet/TorchSharp

Exactly this is what I needed

Okay. I'll leave this issue open and let you close it when you see fit. I don't expect that you will find a solution here, so I encourage you to try other forums, but I won't close the issue.
Niklas

Okay. I'll leave this issue open and let you close it when you see fit. I don't expect that you will find a solution here, so I encourage you to try other forums, but I won't close the issue.
Niklas

Thanks Nicklas,
I think the hole topic with ranges in combination with this library is quite difficult to get help. Where is not much out in the wild. I think some kind of special forum would really help. I know what Rhino3d got a rally boost by providing specialised forums. And I think this is an important thing to have. I try to dig though the python jungle of dependencies and maybe I find a solution

Data parallelism is fundamentally hard.
Most of the time, it far from obvious how to do it, and sometimes it requires algorithms that, at face value, do more than the sequential version, but given the accelerator HW, is still more efficient. In other words, even if the number of operations is 2x, or even 10x more than the serial version, if the HW is 100x faster for a data-parallel version of the algorithm, you win.
Please, do come back here if/when you find a solution and share it with the rest of us.

making the code parallel is often times slowing it down, because of the overhead of creating the threads, distributing the data to be calculated, and synchronizing the results. So in most cases it's not worth the additional work, because you need to have the serial code for smaller arrays/tensors anyway. This not only means more work, but also provides more potential for introducing bugs into your code.
There are usually some optimizations to be done before making code parallel, like reducing the number of type castings (ie. from int to double and back), or use more efficient data types (ie. float instead of double).
However, when the size of the array/tensor becomes really large, Parallel.For might be an relatively easy way to parallelize the outer for loops.
In any case, always do the following things:

to performance testing (ie. using BenchmarkDotNet)
cover everything in unit tests
use a profiler (ie. using dotTrace) to determine which part of the code an benefit from optimizations

this Self Organizing PyTorch use case suggests that using another backend provides 2x better performance

another idea would be to eliminate the for loops completely and use appropriate tensor operations instead.

I am not shure but float32 must be equal to double which is default in pytorch

No, float32 is a 32-bit float, i.e. 'single' in many languages.

@Sprinzl -- is this a bug or a topic that belongs under the Discussion tab? Converting an issue to a discussion thread is straight-forward, just look for the 'Convert to discussion' link in the right sidebar above.


fix toml ListParameter loading

Fixes #2812

@Tarrasch @honnix @dlstadther Could you please review? CI fails for something not related I believe.

restarted job which failed to start


TypeError: Cannot read properties of undefined (reading 'code_snippet')

Please include some context and the contents of the console in your browser's developer tools.
TypeError: Cannot read properties of undefined (reading 'code_snippet')
    at XE (http://localhost/:72:249981)
    at mi (http://localhost/:72:70706)
    at Ql (http://localhost/:72:122308)
    at xc (http://localhost/:72:109797)
    at _c (http://localhost/:72:109725)
    at Cc (http://localhost/:72:109588)
    at Nc (http://localhost/:72:106582)
    at hc (http://localhost/:72:103958)
    at nu (http://localhost/:72:119816)
    at http://localhost/:72:121187

User Agent
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36

Thanks for reporting this issue! We've managed to reproduce it and will soon release a fix.
Since multiple issues were posted for this bug, I'll go ahead and close this one and post further updates in #59

Thanks for your help!
The issue has since been resolved in https://github.com/spatie/ignition-ui/commit/dbfc5255e8add6919e5b25ec061e89b133d86b79. A new version of spatie/ignition has been tagged and running composer update in your project will automatically pull this in.


[tool_crash] RPCError

Command
flutter run

Steps to Reproduce

...
...
...

Logs
RPCError
#0      VmService._call (package:vm_service/src/vm_service.dart:1769:7)
#1      VmService.getVM (package:vm_service/src/vm_service.dart:1245:25)
#2      FlutterDevice.initLogReader (package:flutter_tools/src/resident_runner.dart:428:55)
#3      HotRunner.attach (package:flutter_tools/src/run_hot.dart:266:21)
<asynchronous suspension>
#4      RunCommand.runCommand (package:flutter_tools/src/commands/run.dart:867:27)
<asynchronous suspension>
#5      FlutterCommand.run.<anonymous closure> (package:flutter_tools/src/runner/flutter_command.dart:1408:27)
<asynchronous suspension>
#6      AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:153:19)
<asynchronous suspension>
#7      CommandRunner.runCommand (package:args/command_runner.dart:212:13)
<asynchronous suspension>
#8      FlutterCommandRunner.runCommand.<anonymous closure> (package:flutter_tools/src/runner/flutter_command_runner.dart:420:9)
<asynchronous suspension>
#9      AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:153:19)
<asynchronous suspension>
#10     FlutterCommandRunner.runCommand (package:flutter_tools/src/runner/flutter_command_runner.dart:364:5)
<asynchronous suspension>
#11     run.<anonymous closure>.<anonymous closure> (package:flutter_tools/runner.dart:130:9)
<asynchronous suspension>
#12     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:153:19)
<asynchronous suspension>
#13     main (package:flutter_tools/executable.dart:93:3)
<asynchronous suspension>

[✓] Flutter (Channel stable, 3.24.3, on macOS 14.5 23F79 darwin-arm64, locale en-BD)
    • Flutter version 3.24.3 on channel stable at /Users/sajib/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 2663184aa7 (2 weeks ago), 2024-09-11 16:27:48 -0500
    • Engine revision 36335019a8
    • Dart version 3.5.3
    • DevTools version 2.37.3

[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    [3

Closing this as a duplicate of https://github.com/flutter/flutter/issues/154903, parent issue in https://github.com/flutter/flutter/issues/153471.
If you have a reliable way to let us reproduce this, kindly leave a comment in the parent issue.
Thank you


Use spacemeshos/address dependency

Description
Some time ago we made https://github.com/spacemeshos/address-wasm repo for Smapp purposes, which wraps the go library https://github.com/spacemeshos/address into wasm and provides JS-interface for it.
Meanwhile, go-spacemesh does not depend on address lib and still has a local copy.
Obviously it may cause some problems in the future like having two incompatible versions. To get rid of such risks let's reuse address lib as a dependency in go-spacemesh.

Another option is to move this logic into the SDK (https://github.com/spacemeshos/spacemesh-sdk/), where there could be a single master version. Obvious downside is that's Rust and would have to come in as a dylib.


ASHLAR

I hope someone will help me. Can we align H&E with IF image using ASHLAR.

Yes, but only if A) you have individual field-of-view tile images (not a pre-stitched mosaic image), and B) the H&E and IF images were acquired on the same microscope and pixel resolution. What microscope did you use to acquire the images?

Dear Jeremy,
Thank you very much for the mail and notification.
Here are the details about images:
It is Keyence BZ-X800.
The H+E data will be .VSI files images, these are processed on the fly so there is no unstitched data.
Best Regards,
Sudhakar

From: Jeremy Muhlich @.>
Sent: 22 September 2022 16:14
To: labsyspharm/ashlar @.>
Cc: Sudhakar Sahoo @.>; Author @.>
Subject: Re: [labsyspharm/ashlar] ASHLAR (Issue #154)
Yes, but only if A) you have individual field-of-view tile images (not a pre-stitched mosaic image), and B) the H&E and IF images were acquired on the same microscope and pixel resolution. What microscope did you use to acquire the images?
—
Reply to this email directly, view it on GitHubhttps://github.com/labsyspharm/ashlar/issues/154#issuecomment-1255173548, or unsubscribehttps://github.com/notifications/unsubscribe-auth/A3GMAAAY6ONFQA7QB6BMWR3V7RZVJANCNFSM6AAAAAAQSFXEJY.
You are receiving this because you authored the thread.Message ID: @.***>


Release Google.Cloud.Dialogflow.Cx.V3 version 1.11.0

Changes in this release:
New features

Added support for locking an agent for changes (commit 7afeda7)
Added data format specification for export agent (commit 7afeda7)

Documentation improvements

Improved docs format (commit 034e33b)

Created release for Google.Cloud.Dialogflow.Cx.V3-1.11.0


Order of functions application

Hey guys
While trying to take the second emission (the first one after the delay) of the periodic factory function, I started to wonder whether the order of functions' application really goes from right to left/inside to outside regarding the stream. Take the following code example:
runEffects(tap(console.log, take(1, skip(1, periodic(500)))), newDefaultScheduler());

As far as I can tell, it was supposed to skip the first emitted undefined (at time 0) and print(take) only one undefined after 500 ms. However, unless I change the take parameter to 2, the above code prints nothing. On the other hand, if I reproduce the same logic in most.js v.1, it works as expected:
most.periodic(500).skip(1).take(1).observe(console.log);

Am I missing some point?

I know that if I just want one emission after a certain time I could simply use the at operator, but that's not the point (:

Hi @cezl, thanks!  This is a bug 😞

I started to wonder whether the order of functions' application really goes from right to left

Functions work as you'd expect: skip and then take in your example.  The bug just ended up causing the stream to be empty in this case.  Without getting into too many details, mostjs implements take and skip a bit differently from other implementations.  It fuses adjacent take and slice calls by simply accumulating their bounds, i.e. math.  The bug in this case was in the accumulation.
A fix is in #272.

This is a bug 😞

:disappointed_relieved: I'm glad I could help :smile:

A fix is in #272.

Great! Looking forward to the npm patch release

Functions work as you'd expect: skip and then take in your example. The bug just ended up causing the stream to be empty in this case. Without getting into too many details, mostjs implements take and skip a bit differently from other implementations. It fuses adjacent take and slice calls by simply accumulating their bounds, i.e. math. The bug in this case was in the accumulation.

Cool :open_mouth:

🚀 @most/core 1.3.4.  Thanks again!


Feature request: Allow generic TypeMapper without type argument

I would like a TypeMapper of type Gen<> to match an actual type of Gen<Foo> or any other class that replaces Foo.
See reasoning below.
I was about to create a pull request with
var typeMapper = Settings.TypeMappers.FirstOrDefault(m => m.MappedType == type);

if (typeMapper == null && type.GetTypeInfo().IsGenericType)
{
    var genericType = type.GetGenericTypeDefinition();
    typeMapper = Settings.TypeMappers.FirstOrDefault(m => m.MappedType == genericType);
}

if (typeMapper != null)
{
    // ...
}

in JsonSchemaGenerator.cs#L227-L232
But as I was creating a unit test to cover this I sensed this might require a deeper change. Because the output I get is $ref: "#/definitions/Gen`1" instead of $ref: "#/definitions/GenOfFoo".
So why would I find this useful?
I'm using NSwag to describe my web api and when my model does not validate I return with BadRequest(ModelState). This results in a response of type SerializableError which is just a dictionary with keys matching my model and values being a list of error strings. If I set SerializableError as my SwaggerResponse type I get a response type of {}. Not so informative in other words.
My idea here is that I create a generic placeholder class ErrorResponse<T> as SwaggerResponse, with my model as generic argument. Use a type mapper of type ErrorResponse<> and have that parse the inner type, extract the properties and generate a proper response model.

I think this is a scenario we should support.. can you create this pr with your type mapper impl and a unit test? I will look into it then...

I added some unit tests and the support for generic type mappers. If this does not work for your scenario, please reopen the issue and publish some samples...

I have an example project here WebApiDemo
But the gist of it is.
public class ValueModel
{
    [Required]
    public string Value { get; set; }
}

public class ErrorResponse<T>
{
}

public class ErrorResponseTypeMapper : ITypeMapper
{
    public Type MappedType => typeof(ErrorResponse<>);

    public bool UseReference => true;

    public async Task GenerateSchemaAsync(JsonSchema4 schema, TypeMapperContext context)
    {
        // Parse type argument, extract property names and give them a string[] type.
    }
}

public class ValuesController : Controller
{
    [SwaggerResponse(HttpStatusCode.BadRequest, typeof(ErrorResponse<ValueModel>))]
    public void Post([FromBody]ValueModel value)
    {
    }
}

public class Startup
{
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        var settings = new SwaggerUiSettings();

        settings.TypeMappers.Add(new ErrorResponseTypeMapper());

        app.UseSwaggerUi(typeof(Startup).GetTypeInfo().Assembly, settings);
    }
}

If I run the project mentioned above and visiting the swagger.json url I'm getting the following exception trace
System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.
   at System.ThrowHelper.ThrowKeyNotFoundException()
   at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
   at NSwag.SwaggerGeneration.SwaggerGenerator.<GenerateAndAppendSchemaFromTypeAsync>d__9.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at NSwag.SwaggerGeneration.WebApi.Processors.OperationResponseProcessor.<ProcessAsync>d__2.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at NSwag.SwaggerGeneration.WebApi.WebApiToSwaggerGenerator.<RunOperationProcessorsAsync>d__13.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at NSwag.SwaggerGeneration.WebApi.WebApiToSwaggerGenerator.<AddOperationDescriptionsToDocumentAsync>d__12.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at NSwag.SwaggerGeneration.WebApi.WebApiToSwaggerGenerator.<GenerateForControllerAsync>d__11.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at NSwag.SwaggerGeneration.WebApi.WebApiToSwaggerGenerator.<GenerateForControllersAsync>d__9.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at NSwag.AspNetCore.SwaggerMiddleware.<GenerateSwaggerAsync>d__8.MoveNext()

I've tracked down the cause which is JsonSchemaResolver::GetSchema being called called with a Type argument of WebApiDemo.NSwag.ErrorResponse`1[WebApiDemo.Models.ValueModel] from SwaggerGenerator.cs#L202 which is not registered in the JsonSchemaResolver::_mappings property.


14/add themed blockstack sign in button

This PR adds a theme sign in button. It does not provide any functionality, just a simple AppCompatButton with Blockstack branding.
Different colors have been used for pressed, selected, focused, enabled and disabled state.
This PR replaces the normal login button in the example (not the example-multi-activities) with the themed button.
fixes #14
state enabled:

state disabled:

@friedger this looks great to me! Thanks!
I improved the Chinese a bit.


fix: typo in middleware dir name

Fix typo in middleware dir name.

Nice!! I've been meaning to get to this as it bothered my OCD, glad that you took the initiative! ❤


Implement transaction proofs as verification system

Check out this thread with another Godot developer for inspiration
Thread

More reading
Link


Override target crate-type for cargo rustc --crate-type

What does this PR try to resolve?
Fixes #10356, fixes #10389
This might not be the best solution, but at least it avoids duplicating
overridden rules all over the compilation logic.
r? @ehuss since you're the reviewer of #10093
How should we test and review this PR?
Perform reproducible steps as #10356 described.
This PR includes a new test rustc::build_with_crate_type_for_foo_with_deps
to validate the behavior of overridden crate-types with dependencies.

I've tested this PR both on the repro (but that was included in tests already) and on hyper where the issue was discovered, and of course both worked.
As part of the initiative to improve compile times I've also benchmarked it, since #10356 is currently preventing cargo's pipelining from working with both hyper's dependencies and the crates depending on it (as one can see e.g. in this cargo timing example).
As a testament to the great work done on cargo's pipelining, my measurements show that building hyper itself with this PR (from -j2 to -j12) results in 7-8% improved build times in debug, and 18-29% in release (only -j2 was at 18%, the mean was 26%) which is super cool. So great job @weihanglo on fixing the issue, it will have a big impact on the entire hyper ecosystem, the contributors to the crate itself, as well as CI improvements all around.
@weihanglo @ehuss is there something more I can do to help this PR along ? I can try to build the 800 or so popular crates we've been looking at in our extended benchmarks for example ?

Thanks!
@bors r+

:pushpin: Commit 568b34ebe6f14605ededf6d619fc6821bbdd6a46 has been approved by ehuss

:hourglass: Testing commit 568b34ebe6f14605ededf6d619fc6821bbdd6a46 with merge 496ffaefab260eb540fef5ab20cbd1f463599ce3...

:broken_heart: Test failed - checks-actions

@bors retry

:hourglass: Testing commit 568b34ebe6f14605ededf6d619fc6821bbdd6a46 with merge ff397ae463bcea45a5eda8687bf0ffe78ea14416...

:broken_heart: Test failed - checks-actions

@bors r+

:pushpin: Commit b8336433a91f668d5514cf5f15d2fac97eea584d has been approved by ehuss

:hourglass: Testing commit b8336433a91f668d5514cf5f15d2fac97eea584d with merge 1e554909ebb7ea3f3ad3565f39194279c656b768...

:sunny: Test successful - checks-actions
Approved by: ehuss
Pushing 1e554909ebb7ea3f3ad3565f39194279c656b768 to master...

Thanks @weihanglo. I have a branch ready to fix hyper and will open a PR once this hits nightly.
cc @seanmonstar


have a "pixel per module" setting

Instead of a SIZE_MULTIPLIER, have a "pixel per module" setting.
Also, adapt the central_offset to get all the "central pixels" of a module.

Done with https://github.com/JeSuisUnCaillou/visual-qrcode/pull/8


[Suggestion] Aether II support -- Altar of Light

I just want to be able to add some custom recipes to this thing to allow for some transmutations that make the Aether play along better with mods.

Does it have an API?

No information given. modtweaker officialy maintenance mode


ft-233: Using self hosted stun server

Which Issue was this PR made for?

Closes #233

What is within the scope with this PR

Setting up own ICE server.
Updated README to reproduce.

AUTOMATED: Deployed to https://pr-290.dev.mochatto.com

AUTOMATED: Deployed to https://pr-290.dev.mochatto.com


Clarify the behavior in the partition assigner protocol

The existing typing was off, and made it look like the user data would be provided to the protocol and assign functions as argument fields.
Reading through https://cwiki.apache.org/confluence/display/KAFKA/A+Guide+To+The+Kafka+Protocol#AGuideToTheKafkaProtocol-GroupMembershipAPI and the KafkaJS code is not true at all. What actually happens is that

each assigners' protocol function can provide user data (by encoding it into the result), then
Kafka will select a leader, and provide that one in the JoinGroupResponse with an array of all members and the metadata they provided, which
the group leader will then process through the assign function. At this point it can take the user data into account, and it can produce new user data*

The first commit in this PR updates the TypeScript types to match this behavior and adds a integration test to demonstrate it, the second commit then cleans up the roundRobinAssigner's code to remove the "obviously unused" argument fields.

From what I can see and read in the documentation the user data in the response is unused for the 'consumer' protocol, but likely is used for more fancier protocols, for example in the 'connect' protocol (https://www.confluent.io/blog/incremental-cooperative-rebalancing-in-kafka is fancy!)

#231 may need to be reviewed: It added the userData parameter in some places where this PR removes it again from.

This looks "big", but is actually just typing fixes + a unit test that this actually "works".

Sorry that it's taking forever to get this reviewed. I'm on vacation at the moment, and I suspect Tulio has his plate full.


Add docs for file open modes

This documents all file open modes and also improves the invalid file open mode error output a bit.

Other exceptions have their subject and the value separated by a semicolon, we should stick with this: "Invalid file open mode: #{mode}"

Is there a specific reason to change all access mode to file open mode? I don't see a significant difference.

"file open mode" makes easier to figure out that a File.open method may be the issue in our code.

access mode is more commonly used term than file open mode.

I'd rather like to stick with "file open mode". I think this is more descriptive and meaningful than just "access mode" and it's already used everywhere else.

it's already used everywhere else.

What do you mean with everywhere? I can't find a single occurence in the API docs.

@r00ster91 More descriptive - perhaps, widely used - certainly not - see https://trends.google.com/trends/explore?q="access mode","file open mode"

@Sija Are you aware that access mode has multiple other meanings? As such is very likely to be more frequent in google trends.
I don't see any indication that one of both terms is decisively more popular than the other. Semantically there is no big difference either, I think both are very descriptive. And that's why both are commonly used for documentation purposes.
Unless there are any objective arguments not mentioned here, I'd suggest to stick with the status quo.

What do you mean with everywhere? I can't find a single occurence in the API docs.

Well ok without this PR, there's one occurence in the comment for the private self.open_flag method.
But anyway, when I search for "file access modes" then it leads me to pages like https://www.tutorialspoint.com/unix/unix-file-permission.htm with file permission stuff like -rwxrwxr-- which is probably related to something different. While "file open modes" leads me to pages like http://www.c4learn.com/c-programming/c-file-open-modes/ and http://www.cplusplus.com/reference/cstdio/fopen/.

:O FATAL: uncaught exception while processing handler for CHLD, exiting
Looks like a rare bug that needs investigating: https://circleci.com/gh/crystal-lang/crystal/11842

@RX14 I found a second incident and opened #7243 for this.


Added the feature to flag / unflag a task

Hello,
I added the feature to flag / unflag a task.

File upload to flag / unflag a task? Use a separate branch for a new PR.


Support virtual workspaces

👋 Hi there, Martin here, from the VS Code team.
Recently we've announced the Remote Repository feature that lets you browse and edit files and folders directly on GitHub.
Open Remote Repository... opens VSCode on a folder or workspace located on a virtual file system. We call this a virtual workspace. We observed that not all extension support this well, either because they can not, or they haven't thought about it.
It would be fantastic if you could test whether your extension can handle virtual workspaces:
Check out the Virtual Workspaces Extension Author Guide on how to do that.
When done, set the new virtualWorkspaces capability in your 'package.json'.
{
  "capabilities": {
    "virtualWorkspaces": true | false
  }
}

Use "virtualWorkspaces": true if your extension is prepared for virtual workspaces
Use "virtualWorkspaces": false if your extension should be disabled when a virtual workspace is opened

For questions and comments please use the Virtual Workspaces Tracking Issue.
Thanks for the support and the great work! ❤

The Python extension is currently disabled on virtual workspaces too, which makes it impossible to use Pylance on those anyway: https://i.imgur.com/mpBCf3M.png

Moving this issue to discussion as an enhancement request for comments and upvotes.


feat: DApp ENS integration

This integrates the DApp contract with ENS by allowing the DApp owner to set the name of the DApp.
https://docs.ens.domains/contract-api-reference/reverseregistrar#set-name
It sets the reverse record of the DApp address to a name, allowing a front-end to resolve from address to name.

Fixing the test is a little beyond my capacity.
We may need to properly setup ENS on the test scenario.
More information about deployment: https://docs.ens.domains/deploying-ens-on-a-private-chain#deploying-ens-in-a-single-transaction

Rebased and fixed conflicts.

We'll leave it up to the DApp developer to implement this functionality in the execution layer through the use of vouchers.


Display error messages on app startup for non-dev users

The Issue
End users should have the ability to view whatever error caused the app to crash.
I will have one of the installed binaries fail to start and don't know what the issue is, and since the developer tools are disabled, I can't figure it out on my own. Back in the 2000s, applications would just give you an error message or error code so you can debug it. The lack of this ability removes the end user's ability to debug it, or our ability to prevent it.
Steps to Reproduce

Expected Behavior
Error messages should be displayed to the user
Actual Behavior
Error messages are not displayed to the user.
Suggested Solutions
alert(error);

Most users won't want to debug, they just want it to work.  Adding the last few lines of the sdk log could be helpful, but not always...and that's usually the cause of a majority of failures. I'd consider this blocked by https://github.com/lbryio/lbry/issues/1118

Is this for when you see the crash page? Or if it crashes before then?

This would be for when you see the crash page. You could just have a little See Details dropdown button that reveals the log which usually gets printed to console.error

Most errors will be pretty worthless without sourcemaps. But there is probably something we can do to improve this.

The problem I have with it is that I know it's something to do with my configuration, but the fact that I can't even see the error log limits my ability to troubleshoot it.

I gotcha. I guess for a quick fix you could change the errorBoundary/view.jsx component to put the error on the page. Just so you can see it.

@tzarebczan It wasn't anything to do with the daemon as it was something else. The problem is that I was trying to do something unrelated to development on the app so having to fork & spin up an electron instance of the app is very inconvenient and not something anyone would want to, if all they want to know is what the error is.

Gotcha, closing for now. Please reopen a new issue if there's a particular action we need to take.