net/http: make http1 Server always in a Read, like http2

Changing the net/http Server to always be in a read (like http2) will simplify CloseNotify and make the per-request context cancelation nicely. I'd like the Request's context's Done channel to close when either the ServeHTTP method returns (easy) or when the connection closes.

Oh right, I remembered why this is tricky or impossible (I tried to do this previous cycles): we can't proactively be in a read because the next HTTP request might use http.Hijacker and want the unperturbed TCPConn. We can't give them back a different concrete type, and we can't read their bytes for them. (Perhaps we could, because we give back a *bufio.Reader where they should expect to find any over-read bytes, but it would be a big enough behavior change to probably violate the Go 1 API contract in practice)
What I really need in the net/http package is a way to do WaitRead on the *net.TCPConn, waiting to find out when either the connection is readable or closed (anything that would wake up epoll_wait and friends).
Basically I need guts of the net package exposed.
@ianlancetaylor, would you be open to an API addition to the net package, either publicly or via some hacky internal mechanism? (I'd feel a little gross having net/http cheat and do things others couldn't, but not that gross, if we consider it a learning experience before either making it public or removing it in 1.8)

It's not that easy.  We use edge-triggered polling.  That means that we don't check for whether there is data available.  Instead, we arm a trigger, do a non-blocking read, and if that fails, put the goroutine to sleep waiting for the trigger to fire.  We don't currently have a mechanism for detecting whether there is data to read without actually reading it.

Looking at net/fd_unix.go,
func (fd *netFD) Read(p []byte) (n int, err error) {
        if err := fd.readLock(); err != nil {
                return 0, err
        }
        defer fd.readUnlock()
        if err := fd.pd.prepareRead(); err != nil {
                return 0, err
        }
        for {
                n, err = syscall.Read(fd.sysfd, p)
                if err != nil {
                        n = 0
                        if err == syscall.EAGAIN {
                                if err = fd.pd.waitRead(); err == nil {
                                        continue
                                }
                        }
                }
                err = fd.eofError(n, err)
                break
        }
        if _, ok := err.(syscall.Errno); ok {
                err = os.NewSyscallError("read", err)
        }
        return
}

Perhaps we could guarantee the behavior of a net.TCPConn.Read(nil), and lock in the behavior that it goes all the way to a syscall.Read and no fast path does a len(p) == 0 check?
Then the question is what the various kernels do with a zero byte read system call on a TCP socket do. Maybe they return something useful?

On at least some systems the read system call with a length of 0 simply returns 0 without looking at the file descriptor at all.

At least on Unix systems we can find out whether there is data available to read by using SIOCINQ or FIONREAD.  But I don't know how we can reliably find out whether the socket has been closed without reading from it.

New plan!
Instead of waiting for readability, I'll just always be in a Read. I forgot that a blocked Read can be interrupted by another goroutine messing with the conn's ReadDeadline. So in the case of a Hijack, I can just SetReadDeadline to zero, wait for the Read to finish, and then proceed with the Hijack, giving the user a net.Conn which won't cause a data race from concurrent Read calls.

(Then I can fix #15927)

Wow, that's interesting. I didn't know a SetReadDeadline
will affect existing blocked Read calls because the docs for
SetReadDeadline says: "SetReadDeadline sets the deadline
for future Read calls." If this is a capability to be relied upon,
should we update the docs for net.Conn?
https://golang.org/pkg/net/#Conn

IIRC, we have a bunch of tests locking in that behavior, and I think I even fixed some plan9 bugs to make them pass there (or maybe I didn't? @0intro might remember). So maybe we just need to update the docs. I'll file a separate bug for that.

@bradfitz did you file a separate bug for updating the docs? (I can't find one). I'd like to contribute a comment to that change.


long read + RNAseq

Hi all,
I would like to use both long read (isoseq) data and paired-end RNA-seq (Illumina) data to produce gene assemblies. what would be the recommended way to do this? I am thinking of doing something like this:

Align isoseq with minimap2
Run stringTie with the -L option to get initial gene models
Index the genome with STAR using the primary LongRead GTF file from the previous step
map the RNAseq reads with STAR 2-pass mode with output compatible with Cufflinks/StringTie
Run Stringtie with the new RNAseq alignments and the primary GTF as guide.

Would the new GTF be more complete/reliable than the Isoseq GTF alone?
I look forward to hearing back from you with any suggestions/opinions.
Regards,
Juan D.

I have the same question

Very well timed bump of this topic! The current release of StringTie has a new --mix option which is a new feature allowing StringTie to process both BAM files at once (short read alignments and long read alignments).  So both BAM files can be given as input with that option, while the -G option should simply point to a reference annotation as "guides" for the assembly of such mixed alignment data.
Please give the --mix option a try and let us know how it works for you.

Thank you so much for a quick response. I will try that. Thanks.

Sorry it may seem like a trivial question but what exactly do these options -L and --mix do and how are they different ? Sorry

They both allow using long read alignments as input for transcript assembly, but -L allows only long read alignments to be assembled (a single type of input - just long read alignments), while the --mix option allows both short reads alignments (e.g. Illumina reads aligned with HISAT2 or STAR2) and long read alignments (PacBio or Nanopore RNA-Seq reads aligned with minimap2) to be assembled at the same time.
Before --mix option was added, StringTie could only assemble either short read alignments (default mode of operation), or just long read alignments input if -L option was used.
-L option is not needed when --mix is specified, but --mix expects 2 input alignment files in a specific order (short reads first, long reads second). Example command line:
stringtie -G annotation.gtf --mix short_alns.bam long_alns.bam -o mix_assembly.gtf

okay thank you. Sorry I have more to ask, kind of related to previous. From what I understand, stringtie2 corrects alignment for splice sites and implements a pruning algorithm for long reads. So I guess I was trying to ask if these -L and --mix flags are implemented in this context.
Also I have other question. If you don't provide reference genome what doe it use by default? I see it works without that. Not sure if that is the correct way.
Thank you and sorry to ask too many questions.

Oh I did not realize you were asking about the underlying implementation. Yes, in both cases long read alignments are processed that way. Obviously the presence of short read alignments (i.e. in case of --mix) makes the splice site correction more accurate.
As for your second question, I am unclear about what you meant by not providing the "reference genome"? The reads were aligned to a reference genome, of course..  But perhaps you meant without reference annotation (-G) ?  StringTie  uses the junctions and "exons" as discovered from the alignment data and proposes transcript structures solely based on that, though -G can help with "guiding" the assembly process somewhat and to tag the output transcript assemblies that match the reference transcripts etc.. Not sure I understood the meaning of the question.

yes I meant reference annotation. Sorry. okay thank you.

Hi @bbhatt1789, I'm in the same boat as you right now with long- and short-read data. I was wondering what you used downstream of stringtie? I'm having a really hard time deciding, and could use the advice of someone who's done this before.
Thanks!


Fixing Only Issue in GitHub issues

I only added 5 lines of code for this
https://github.com/MikeDev101/cloudlink/issues/23

Usernames can only be set once per connection, this code doesn't take that into account.

Usernames can only be set once per connection, this code doesn't take that into account.

Hmmm, maybe use a Python dict with hashed IPs as the key and use time.time() as the data, then use that as the if statement, although I don't know how to get it with python, and u take the IP In other functions. (only when the client sets the username)

Usernames can only be set once per connection, this code doesn't take that into account.

Hmmm, maybe use a Python dict with hashed IPs as the key and use time.time() as the data, then use that as the if statement, although I don't know how to get it with python, and u take the IP In other functions. (only when the client sets the username)

found the IP finder

no actively, here , i added code to this pull request

Hello? I updated the code.

After watching a server catch fire, yer is broken, mate.

did you do a typo? time.Time doesnt exist in python.

Typo

fixed typo in my fork


Support tiled vector data and Mapbox vector tiles

This pull request adds support for rendering tiled vector data. The key elements to achieve this are

ol.layer.VectorTile. A simple layer to hint renderers that a tiled renderer is to be used, instead of a viewport renderer like for ol.layer.Vector.
ol.source.VectorTile and ol.VectorTile. Features are handled by the tile, not the source. Like image tiles, vector tiles can be cached. The existing ol.source.TileVector is removed, and its functionality is integrated into ol.source.VectorTile. To improve the inheritance chain, ol.source.UrlTile was added. Both ol.source.ImageTile and ol.source.VectorTile inherit common functionality related to url loading from that new class.
ol.renderer.canvas.VectorTileLayer. This renderer gets tiles from ol.source.VectorTile, creates a replay group for each tile, and stores the replay group on the tile for rendering. Tiles are clipped at the tile boundary, so stroked polygons won't have a stroke at the tile boundary when a buffer is used on the server that creates the vector tiles.

Support for Mapbox vector tiles is provided by the new ol.format.MVT format, which relies on https://www.npmjs.com/package/pbf to read the protobuffers and https://www.npmjs.com/package/vector-tile to parse layers and features. To support pixel relative coordinates,ol.proj.Units.TILE_PIXELS was introduced. For efficient feature and geometry creation, a lightweight, read-only ol.render.Feature was added, which does not register any event listeners. Another performance improvement was achieved by skipping lineTo/moveTo calls for repeated coordinates when replaying vector batches at a lower resolution than it was created for.

Awesome work. Very impressive!

I just moved the huge style function for the new examples into a gist, so this pull request is now smaller and should be easier to review.

I have reworked the whole commit history to allow for sensible commit-by-commit reviewing. Thanks for any review.

great! I just want to work on mapbox mvt tile on openlayers!

when this can be merged to the master branch? thanks!

@topwood This pull request needs to be reviewed by another core developer before it can be merged.

Thumbs up on this. Nice work

i have tried this branch, and when i have a mapbox mvt mbtiles file, I need a new style function for this file.right?

@topwood Right. There is no support yet for the Mapbox GL style spec, so for now you have to translate the styles to an OpenLayers style function manually, like I did for the examples.

@ahocevar  thank you for your answering.

hey @ahocevar I'm done with my review, impressive work. Any chance of adding a rendering test case for this?

Not a code review, but I'm using this branch rebased against master right now and it's working beautifully with my non-MapBox VectorTile PBF server source. Thanks for the amazing work! :beers:

@bartvde I have addressed all your comments and answered your questions. Thanks for this great review!

Will coordiate transform work?
I was loading geosjon vector tiles before with the following hack to support a map projection of epsg25832 but the vector tiles was generated using mapbox tools that always use 3857.
Would be nice If I could start using your implementation for the same usecase.
//VectorTiles Loader
                    var vt = new ol.source.TileVector({
                        projection: epsg25832, //This is not used for TileVector
                        tileGrid: tg,
                        tileUrlFunction: (tileCoord: number[], ratio, proj) => {
                            return tileCoord.join(",");
                        },
                        tileLoadFunction: (urlParamsStr: string, loaded) => {
                            //Consider if a mapbox rendere is better, currently we fetch tiles, convert coordinates and then visualize in canvas.
                            //Data is optimized to be rended on a per tile case.
                            var tileCoord = urlParamsStr.split(",").map((s) => parseInt(s));
                            var extent = getTileCoordExtent(tg, tileCoord, epsg25832, "EPSG:3857");
                            var resolution = tg.getResolution(tileCoord[0]);
                            var newZ = linearFindNearest(tilegrid.getResolutions(), resolution, 1);
                            var newTileRange = getTileRangeForExtentAndResolution(tilegrid, extent, tilegrid.getResolution(newZ));
                            var defers = 0;
                            var features = [];
                            var localCache = {};

                            var tileLoader = ((tz, tx, ty) => {
                                setTimeout(() => {
                                    var key = "" + tz + tx + ty;

                                    if (!tileCache[key]) {
                                        tileCache[key] = [];
                                        localCache[key] = true;
                                        client.getData(this.options.document.workSet, this.options.document.name + "/vt/" + tz + "/" + tx + "/" + ty + ".geojson")
                                            .done(result => {
                                                //If data is returned as string make sure its json.
                                                var data: any[] = typeof (result) === "string" ? JSON.parse(result) : result;

                                                for (var i = 0; i < data.length; i++) {
                                                    var obj = data[i].tags;

                                                    obj.geometry = new ol.geom.LineString(data[i].geometry[0].map((coord: number[]) => {
                                                        //Convert from vector tiles local tile coordinates (mercator)
                                                        var xpx = (coord[0] / 4096 + (tx)) / (1 << (tz));
                                                        var ypx = (coord[1] / 4096 + (ty)) / (1 << (tz));
                                                        var p = [((xpx - 0.5) * 2) * 6378137 * Math.PI, -((ypx - 0.5) * 2) * 6378137 * Math.PI];
                                                        //Convert to local coordinate system.
                                                        var p1 = ol.proj.transform(p, "EPSG:3857", epsg25832).concat(coord.splice(2));
                                                        return p1;
                                                    }));
                                                    var feature = new ol.Feature(obj);
                                                    feature.setId(obj.id); //Set the ID, not used yet, but need to look into if features with same id that are split across tiles can/should be combined.
                                                    feature.set("tile_sources", []);
                                                    features.push(feature);
                                                    if (this.tracksVectorSource.getFeatureById(obj.id)) {
                                                        var oldFeature = this.tracksVectorSource.getFeatureById(obj.id);
                                                        oldFeature.get("tile_sources").push([tz, tx, ty]);
                                                        var geom = oldFeature.getGeometry<ol.geom.LineString>();
                                                        var newPoints = feature.getGeometry<ol.geom.LineString>().getCoordinates();
                                                        var oldPoints = geom.getCoordinates();

                                                        var updatedlist = [];
                                                        var ai = oldPoints[0][2] === newPoints[0][2] ? 0:1; var bi = 0;

                                                        var aiend = newPoints.length - ( oldPoints[oldPoints.length - 1][2] === newPoints[newPoints.length - 1][2] ? 0:1);
                                                        while (ai < aiend || bi < oldPoints.length) {
                                                            if (ai === aiend) {
                                                                updatedlist.push(oldPoints[bi]); bi++;
                                                            } else if (bi === oldPoints.length) {
                                                                updatedlist.push(newPoints[ai]); ai++;
                                                            } else if (oldPoints[bi][2] === newPoints[ai][2]) {

                                                                if (oldPoints[bi][0] !== newPoints[ai][0]) {
                                                                    console.log([bi,ai,oldPoints[bi], newPoints[ai]]);
                                                                }

                                                                updatedlist.push(newPoints[ai]); bi++; ai++;

                                                            } else if (oldPoints[bi][2] < newPoints[ai][2]) {
                                                                updatedlist.push(oldPoints[bi]); bi++;
                                                            } else {
                                                                updatedlist.push(newPoints[ai]); ai++;
                                                            }
                                                        }

                                                        geom.setCoordinates(updatedlist, 'XYM');
                                                    } else {
                                                        this.tracksVectorSource.addFeature(feature);
                                                    }// Have to add it to get support for getFeaturesInExtent
                                                    tileCache[key].push(feature);
                                                }

                                            }).always(() => {
                                                if (--defers === 0) {
                                                    loaded(features);
                                                }
                                            });
                                    } else {

                                        if (!localCache[key]) {
                                            localCache[key] = true;
                                            features.push.apply(features, tileCache[key]);
                                            if (--defers === 0) {
                                                loaded(features);
                                            }
                                        } else {
                                            if (--defers === 0) {
                                                loaded(features);
                                            }
                                        }
                                    }
                                });
                            });

                            for (var ix = newTileRange[0]; ix <= newTileRange[1]; ++ix) {
                                for (var iy = newTileRange[2]; iy <= newTileRange[3]; ++iy) {
                                    defers++;

                                    tileLoader(newZ, ix, -iy - 1);
                                }

                            }

                        }
                    });

@s093294:

Will coordiate transform work?

It will be possible to make them work for ol.source.VectorTile, but it is not implemented yet. With raster reprojection in place now, a logic to find the correct tiles at the correct resolution, like you have in your hack, is already in the library. What's missing is the reprojection of features in ol.VectorTile and the tile boundary clip lines.

Cool. One more question that has been bothering me - not sure if its a good question though. But as in my hack I am merging features that has the same ID. Do this make sense - will your implementation support similar.
The reason why I did it was to push all the combined features to private tracksVectorSource = new ol.source.Vector({}); such i could query for the features.

@s093294:

in my hack I am merging features that has the same ID. Do this make sense - will your implementation support similar. The reason why I did it was to push all the combined features to private tracksVectorSource = new ol.source.Vector({}); such i could query for the features.

No. Vector tiles are for rendering, not for working querying features like you do with features you get e.g. from a WFS. If you want to do that, you should be using ol.layer.Vector and ol.source.Vector.

@bartvde I think I have addressed all remaining comments. Please take another look to make sure.

LGTM @ahocevar please merge once Travis gives the final okay

Thanks @bartvde for this thorough review - the code is much simpler, cleaner and smaller now.

Some metrics regarding build size. Configuration used:
  "exports": [
    "ol.Map", "ol.Map#*",
    "ol.View", "ol.View#*",
    "ol.layer.Vector", "ol.layer.Vector#*",
    "ol.source.Vector", "ol.source.Vector#*",
    "ol.format.GeoJSON",
    "ol.style.*"
  ],
  "compile": {
    "define": [
      "ol.ENABLE_VECTOR_TILE=false",
    ]
  }
}

So no vector tiles in this configuration.
Before:
uncompressed: 194232 bytes
  compressed: 63595 bytes

After:
uncompressed: 195050 bytes
  compressed: 63998 bytes

The increase of 818 bytes in code size comes mostly from performance optimisations in the canvas replay, and the support for array buffers in vector formats.

Nice work!
Did you notice the gap between tiles in FF ?

Sounds like a rounding issue.

@tonio I saw it only on Linux. Did you observe this on other platforms as well?

How do you guys feel about the performance of http://openlayers.org/en/master/examples/mapbox-vector-tiles-advanced.html?q=vectortile using the canvas renderer? On my machine its suboptimale compared to the mapbox GL render.
Dont get me wrong - its really amazing work.

Right I observed the same performance "issue", especially on pan.

@ahocevar @tonio I see it in FF on OSX as well, hadn't opened up the example in FF as yet to be honest

@s093294 @bartvde In the process of working on this pull request, I spent a long time profiling and optimizing. The bottleneck is now in the renderer code itself. The majority of the time is spent applying strokes and fills. If the canvas renderer did a better job combining geometries and stroking/filling them at once, performance would be better. But that's a separate issue, as it affects all canvas rendering in OpenLayers. The goal is to reduce the number of stroke and fill instructions.

@ahocevar should we at least open up a new issue for this? So we don't loose your valuable information here?

@bartvde Please do so.

@ahocevar yep, I reproduce on win 7 & 10, too (browserstack).

@tonio Please create a ticket for that.

@ahocevar see #4329

Thanks @tonio.

@ahocevar is it possible to read tiles from a local folder and not from over the web e.g for offline use?

Hi @NathanW2 I don't think this is possible as there are security issues with accessing files using AJAX, see http://stackoverflow.com/a/18137280

@NathanW2 You can define a custom tileLoadFunction on your ol.source.VectorTile if you want to use something else than AJAX to load your tile data.

Hello, Can anyone help me with how to create simple vector tile and how to add layers in it, how to add structures in it.


[FEATURE] Add configuration option for operator override level

Describe the solution you'd like
There should be an option to set the necessary operator level in order to override the grave protection.
Perhaps a value of -1 should turn off the override entirely?

Commit cd290cc resolves this:

Players can now choose what OP level is needed to override grave
protection:
1-4 = valid operator levels
0 = every player can (just enable grave robbing lol)
-1 = disabled (no one can)

Closing this issue.


⚠ Bofrost.lu has degraded performance

In 94f1d29, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 1636 ms

Resolved: Bofrost.lu performance has improved in e1623ed after 13 minutes.


InterruptedExceptions should never be ignored in the code.

@leventov I've resolved conflicts. We've accepted that this issue was blocked by #7121 and it has been merged. Is there anything left to improve this PR?

@kamaci please add a Checkstyle check a-la https://github.com/apache/incubator-druid/pull/6943#issuecomment-458534551. It may be also possible to catch such patterns more effectively with Structural Search, but I didn't experiment with that.

@kamaci please add a Checkstyle check a-la #6943 (comment). It may be also possible to catch such patterns more effectively with Structural Search, but I didn't experiment with that.

@leventov I've added the checkstyle rule as a warning since it may not be a violation not to obey it.

@kamaci in which case this is not a violation? Could you please point to an example?

@kamaci in which case this is not a violation? Could you please point to an example?

@leventov  I've removed that style from being warning. On the other hand, I've edited checkstyle regex for not to fail on QueryInterruptedException. I've also fixed test classes about not to ignore InterruptedException.

@leventov @jihoonson I've resolved the conflicts and all checks have passed.

@kamaci could you please complete this?

@kamaci could you please complete this?

Sure, I will.


Continue  #158

A clone of #158 but reverted the deletion of package-lock.json.

Was going to mention after i PR-ed, that i wont deleting the repo and branch.
At least, until we found some pending one? It's cool to show it. It won't be problem for me to not deleting it.

@tunnckoCore Seems this one (micromatch/micromatch/gh-pages) is always pending

Oh, yea probably is not found ;d;d

is always pending.

haha, strange, but it's not guaranteed, IMO. Hm.. how we can make pending status? That's what we should learn :D THen we can add such branch here ;p

The states looks a bit weird, sometimes it shows check status (success, error), sometime it looks like merging status (pending).
But anyway, let's merge this.


the modify of the text convertor of chakra for the astra-sim

Summary
the modify of the text convertor of chakra version for the astra-sim,then it can be used for transforming the text file to et file

@changhai0109  should we close this PR?

@srinivas212 Yes, because I believe the changes in this PR is already covered by the newer commit here 385565bc507c8cd8597240faf112e46d9d7454d6, and it is already in merged into main branch weeks ago.

Closing PR. Check Changhai's comment above.


Misc doc changes

List of changes:

Set html doc as main html page
Fix typos
Update license year
Add changelog link to hex info page
Set html doc as main html page
Badges and more badges!
Add license section

Hey, @kianmeng
Thanks for the PR!
Just needs to fix Bugsnag.Payload, as it was taking the URL from the mix github link.
Can you update it?
  @notifier_info %{
    name: "Bugsnag Elixir",
    version: Bugsnag.Mixfile.project()[:version],
    url: Bugsnag.Mixfile.project()[:package][:links][:github]
  }

Hey, @kianmeng
Thanks for the PR!
Just needs to fix Bugsnag.Payload, as it was taking the URL from the mix github link.
Can you update it?
  @notifier_info %{
    name: "Bugsnag Elixir",
    version: Bugsnag.Mixfile.project()[:version],
    url: Bugsnag.Mixfile.project()[:package][:links][:github]
  }

Done. Thanks for the pointer. :smile:


Controller jitter fix

I commented the lines that pass the acceleration data to OpenVR. In the SteamVR home the pointer is more precise (still a bit jittery but that's inevitable with latency) and on The Lab throwing is detected exactly as before.

Does this fix the jitter introduced in Alpha 5 (when the controllers suddenly stop it will freak out)

No, if you move the controllers fast and then suddenly stop the virtual controllers will still "overshoot", but to a lesser extent than Alpha 5. If you want to completely remove the jitter then you have to introduce latency, it's a tradeoff.


IFC export settings differs between Revit versions

The IFCExportConfiguration class must switch certain settings in different Revit versions.

This has been added with the revit version factory.


[WHLSL] Consider removing the "restricted" keyword

Migrated from https://bugs.webkit.org/show_bug.cgi?id=189882:
At 2018-09-22T09:07:50Z<EMAIL_ADDRESS>wrote:
I'm not sure it's necessary after our removal of generics

Duplicate of https://github.com/gpuweb/WHLSL/issues/53


Shortcuts do not work on macOS

Describe the bug
When you are on macOS: shortcuts to copy, cut, paste, mark, etc. text in input fields do not work.
To Reproduce
Steps to reproduce the behavior:

Go to login screen
Try to paste, copy, cut, mark, etc. text to / from any field

Expected behavior
Past, copy, cut, mark shortcuts should work properly.
Screenshots
Please complete the following information:

Version: 1.0.0
Commit: 50912ab669d7e1e6056ecdb7233d03d42ebfa591
Date: 2021-06-12T16:06:48.000Z (0 days ago)
Electron: 12.0.9
Chrome: 89.0.4389.128
Node.js: 14.16.0
V8: <IP_ADDRESS>-electron.0
OS: Darwin x64 20.5.0

Additional context

I have no mac, but this looks promising. https://pracucci.com/atom-electron-enable-copy-and-paste.html

We tried to fix it in this commit. @zikowang, could you test if it works now, please?

I've tested it. Looks good!

This is now fixed in the latest version whit this commit: 7fb2edfbe2370e92dd884b357ed48f8804b8ed4b


Adding support for MIN_TLS_VERSION & Https2.0 for web apps

Fixes #5646
This checklist is used to make sure that common guidelines for a pull request are followed.

[ ] The PR has modified HISTORY.rst describing any customer-facing, functional changes. Note that this does not include changes only to help content. (see Modifying change log).

[ ] I adhere to the Command Guidelines.

View a preview at https://prompt.ws/r/Azure/azure-cli/5905
This is an experimental preview for @microsoft users.

@yugangw-msft  can you please review this? i have updated the tests.


4.3 Release

[x] update deps

[x] close old issues / tag new issues

[x] test in latest Sketch

[x] merge / close open PRs

[x] update readme (remove Brainly refs)

[x] shadow.html - text shadow doesn't work

[x] shadow-dom.html - shadow content doesn't work

[x] images.html - breaks

https://github.com/html-sketchapp/html-sketchapp/releases/tag/v4.3.0 🚀


Remove #'s from element id strings in all uses of getElementById methods - preventing HTML from being grabbed

Will fix 14/11/23 AM


Added Node name and paths to errors

Description
This PR adds NodePaths to the error messages to make it easier to find the node throwing the error
Addressed issues

Fixes #20

Screenshots

Checklist

[x] changes performed compatible with Godot 3.x
[ ] changes performed compatible with Godot 4.x (raised in a separate PR against the 2.x branch in case the change is not compatible with Godot 3.x like specific syntax)
[ ] Unit tests (Godot 4 only after https://github.com/bitbrain/beehave/issues/2 is done)

On second thought, I think the NodePaths should be moved to the end so the error message doesn't gets truncated. Like so
Beehave Error: Message Body (NodePath: /root/node/path)

@Nemesis-AS since there aren't any tests existing yet, did you test these changes with the latest Godot 3 version?

@Nemesis-AS since there aren't any tests existing yet, did you test these changes with the latest Godot 3 version?

I did test the errors in the starter project from your tutorial, but let me just spin up a new project quickly and see if it works

Works on a new Empty Project with Godot 3.5

Good job! I'll cherry-pick this onto the godot-4.x branch for you!


Color mode(light, dark) doesn't change immediately, using StorageManager

Describe the bug
Color mode doesn't update immediately when changing, using AsyncStorage and StorageManager(same as the example)
To Reproduce
I used the example in the docs: persisting-the-color-mode
this is my code:
import type { ColorMode, StorageManager } from 'native-base';
import AsyncStorage from '@react-native-async-storage/async-storage';

export const colorModeManager: StorageManager = {
  get: async () => {
    try {
      let val = await AsyncStorage.getItem('@color-mode');
      return val === 'dark' ? 'dark' : 'light';
    } catch (e) {
      return 'light';
    }
  },
  set: async (value: ColorMode) => {
    try {
      await AsyncStorage.setItem('@color-mode', value);
    } catch (e) {
      console.log(e);
    }
  },
};

// App.js
 <Provider store={store}>
      <NativeBaseProvider theme={theme} colorModeManager={colorModeManager} >
        <RootNavigator />
      </NativeBaseProvider>
    </Provider>

// the button the changes the mode.
<Button
        onPress={async () => {
          const theme = await colorModeManager.get();
          let mode: ColorMode = theme === "light" ? 'dark': 'light'
          await colorModeManager.set(mode);
          console.log(mode);
        }}
      >
        ChangeTheme
      </Button>

Expected behaviour
I expected that when I use the StorageManager to handle the colorModeManager(to manage color mode, dark or light)
it will change automatically, instead, it doesn't change until I refresh the app.
Screenshots
video to showcase the problem:
https://youtu.be/KZH75PylVeg
Platform

latest native-base
android studio
"@react-native-async-storage/async-storage": "~1.15.0",
"@react-navigation/native": "^6.0.2",
"@react-navigation/native-stack": "^6.1.0",
"@react-navigation/stack": "^6.0.7"
"react-redux": "^7.2.5",
"redux": "^4.1.1",

Additional information
Maybe Im doing it wrong? I suppose to update the color mode somewhere?
the example make it seems for me that the colorModeManager handles the update.

@Amitkahlon Modify change code with the below snippet. The Color mode manager is to get the initial color mode and storing the changed color mode (It's handled internally, you can just interact with the useColorMode hook). Check this out for more detail: https://docs.nativebase.io/next/use-color-mode
// the button the changes the mode.
function Test() {
  const colorMode = useColorMode();
return <Button onPress={colorMode.toggleColorMode}>
        ChangeTheme
      </Button>
}

Let us know if you have any doubts.

Thank you very much, I saw this hook doc but I probably thought you need to use the asyncStorage.


Job Failure commit data exposed via the mount

Reported via @dwhitena
He has a pipeline he's running and the compile16 step is marked as failure:
dwhitena@dirac:gofordatascience$ pachctl list-job
ID                                 OUTPUT                                       STARTED             DURATION            STATE
6ae3c275a6e957ac7bc972be34d6ec6a   compile16/e4949b2057a343fd896dd5c1d59f0621   29 minutes ago      6 minutes           failure
735ea3b47af3ea7aa3d73f78da6493c3   filter/af8fe4c650564006a57bad449a80ddd4      30 minutes ago      24 seconds          success

You can see the e4949b2057a343fd896dd5c1d59f0621 commit when listing the commits for compile16 w the all flag set (and not otherwise). So the commit is definitely flagged as a cancelled commit.
However, the data is exposed via the mount:
dwhitena@dirac:gofordatascience$ ls /tmp/pfs/compile16/e4949b2057a343fd896dd5c1d59f0621/*
/tmp/pfs/compile16/e4949b2057a343fd896dd5c1d59f0621/0
/tmp/pfs/compile16/e4949b2057a343fd896dd5c1d59f0621/1
/tmp/pfs/compile16/e4949b2057a343fd896dd5c1d59f0621/10
/tmp/pfs/compile16/e4949b2057a343fd896dd5c1d59f0621/11
/tmp/pfs/compile16/e4949b2057a343fd896dd5c1d59f0621/12
/tmp/pfs/compile16/e4949b2057a343fd896dd5c1d59f0621/13
...

This is true even after unmounting and remounting.
While we've discussed exposing cancelled commit data via the mount (and perhaps by default), I don't think this is the expected behavior of the current code ... (the fuse FS never calls list commit w anything but false for the all argument)

Possible fixes I could see for this:

show cancelled commits by default, this is the easiest solution the downside is that users may not realize the commit is cancelled
mark the commits as cancelled somehow (maybe by prepending cancelled_ to the front
add a flag to mount, maybe mount -a which would include the cancelled commits

Of these I think I like 1 the best since it's simplest and users have other ways to know that the commit was cancelled. In most cases we've seen people seem to be mounting to view a specific commit that they already know about from list-commit so they'll know it was cancelled.


Fix braced initalization and binary zero optimizations

Previously, when mutating expressions such as char test {24}, the braced initialization expression {24} would also get mutated (as noted in #225). This lead to compilation errors. This is resolved by avoiding the mutation of InitListExpr.
Also, the optimization checks for the case when both arguments to a binary expression were zero was previously wrong (as noted in #222). This is resolved.
Fixes: #222, #225.

This appears to only be failing because of the CI as noted in #227.


Unable to setup ArgoCDExport for Azure

I'm trying to setup ArgoCDExport to make an export to Azure.
I followed your docs to setup ArgoCDExport for Azure.
I created a self-signed certificate and added it to the Azure SPN.
The azure.service.cert is in the following format.
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----

The export container shows the following logs. Do you have any idea what could cause this issue?
exporting argo-cd
creating argo-cd backup
encrypting argo-cd backup
pushing argo-cd backup to azure
The command failed with an unexpected error. Here is the traceback:

[('PEM routines', 'get_name', 'no start line')]
Traceback (most recent call last):
  File "/opt/az/lib/python3.6/site-packages/knack/cli.py", line 215, in invoke
    cmd_result = self.invocation.execute(args)
  File "/opt/az/lib/python3.6/site-packages/azure/cli/core/commands/__init__.py", line 654, in execute
    raise ex
  File "/opt/az/lib/python3.6/site-packages/azure/cli/core/commands/__init__.py", line 718, in _run_jobs_serially
    results.append(self._run_job(expanded_arg, cmd_copy))
  File "/opt/az/lib/python3.6/site-packages/azure/cli/core/commands/__init__.py", line 711, in _run_job
    six.reraise(*sys.exc_info())
  File "/opt/az/lib/python3.6/site-packages/six.py", line 703, in reraise
    raise value
  File "/opt/az/lib/python3.6/site-packages/azure/cli/core/commands/__init__.py", line 688, in _run_job
    result = cmd_copy(params)
  File "/opt/az/lib/python3.6/site-packages/azure/cli/core/commands/__init__.py", line 325, in __call__
    return self.handler(*args, **kwargs)
  File "/opt/az/lib/python3.6/site-packages/azure/cli/core/__init__.py", line 776, in default_command_handler
    return op(**command_args)
  File "/opt/az/lib/python3.6/site-packages/azure/cli/command_modules/profile/custom.py", line 159, in login
    use_cert_sn_issuer=use_cert_sn_issuer)
  File "/opt/az/lib/python3.6/site-packages/azure/cli/core/_profile.py", line 207, in find_subscriptions_on_login
    sp_auth = ServicePrincipalAuth(password, use_cert_sn_issuer)
  File "/opt/az/lib/python3.6/site-packages/azure/cli/core/_profile.py", line 1145, in __init__
    cert = load_certificate(FILETYPE_PEM, self.cert_file_string)
  File "/opt/az/lib/python3.6/site-packages/OpenSSL/crypto.py", line 1837, in load_certificate
    _raise_current_error()
  File "/opt/az/lib/python3.6/site-packages/OpenSSL/_util.py", line 54, in exception_from_error_queue
    raise exception_type(errors)
OpenSSL.crypto.Error: [('PEM routines', 'get_name', 'no start line')]

To open an issue, please run: 'az feedback'

Hi @wouter2397 thank you for the report. I will have a look at this.

Hello @jmckind,
We found the issue regarding this problem.
Within the azure.service.cert you need to specify both the private key and the certificate.
After you do this the export works as expected.
I would suggest to add this to the documentation so its clear for others


housekeeping: add flags for making visual studio preview and maui optional

What kind of change does this PR introduce?
CI change
closes #797
What is the current behavior?
Always opt for running vs2022 preview and maui check
What is the new behavior?
allows moving to stable\preview versions of both (once maui in vs properly)
What might this PR break?
n/a
Please check if the PR fulfills these requirements

[ ] Tests for the changes have been added (for bug fixes / features)
[ ] Docs have been added / updated (for bug fixes / features)

Other information:

We could possibly just add a global "secret" as a environment variable, and make more consistent use of our github actions.
Also might be worth adopting this at some point https://docs.github.com/en/actions/learn-github-actions/reusing-workflows

Guess we need another flag for install preview now as well.

will look at reusable. could then put it in https://github.com/reactiveui/.github to share between the repos that need it? get it working first :)
as for flags as you like

status check doesn't seem to like the change to a workflow. is it a simple tweak in the settings? if so and happy to proceed based on the ci yml i'll do the release yml

Seems the status name has been changed. To build build build.

I've created https://github.com/reactiveui/actions-common
You have access to that repo
Might be a better location for this script

https://docs.github.com/en/actions/learn-github-actions/reusing-workflows#creating-a-reusable-workflow suggests it needs to be in .github/workflows
will try tagging to main

the question of names in each of the bits "build build build"
ci (in the splat yml) common build (in the workflow)

Yeah I can change it to reference build / build / build, I guess that's a valid workaround although a bit ugly.

Once that is done I'll get some help updating all the other repos to use this script where practical.
RxUI will likely be the tricky one due to multiple sln, might need to move those additional sln into different folder just to make our lives easier.


Demeter chain support for fluent interface

Hello folks!
I've been using kahlan a lot and love it, however there's one missing feature for me - mocking fluent interfaces similar to http://docs.mockery.io/en/latest/reference/demeter_chains.html
Would love to discuss pros and cons and ideally get it in the framework.
Cheers j

That's an interesting subject and it would also be interesting to see some use cases because my point of view is based on my experience. And from my experience testing how the code runs instead of the code behavior lead to fragile tests. By fragile I mean tests which have a higher probability to break on code refactoring.
So if it's fine to have some fragile tests it's imo better to test code behavior instead when possible.
Example:
$mock = \Mockery::mock('CaptainsConsole');
$mock->shouldReceive('foo->bar->zebra->alpha->selfDestruct')->andReturn('Ten!');

In the example above the expected andReturn seems  inappropriate. Expecting a return behavior inside another class method is imo not the correct way to expecting something. You should instead do:
describe("CaptainsConsole", function() {
    describe("->selfDestruct()", function() {
        it("returns `'Ten!'` in a specific context", function() {
            $captainConsole = new CaptainsConsole();
            expect($captainConsole->foo()->bar()->zebra()->alpha()->selfDestruct())->toBe('Ten!');
        });
    });
});

That's why I didn't added any `andReturn()` feature in Kahlan. I thought it'll lead to a better organization of specs.

for the `shouldReceive('foo->bar->zebra->alpha->selfDestruct')` as a proof of concept I created [the following custom matcher](https://gist.github.com/jails/8ae6cce100a0151a48acd42e541db09e) however I wonder if this kind of shortcut make sense since you can't really define the passed parameters for each messages.

The Kahlan's way is to use `toReceive()` followed by some `toReceiveNext()` for additionnal calls. It's indeed more verbose but it can also deal with passed parameters for each method call.

@jarektkaczyk do you have a use case in mind where it should make sense ?

@jails sorry, missed this one!
My use-case is a pretty narrow, but still might become more popular - I work with Laravel a lot and fluent interface is all over the place in its codebase for builder-like objects, so here's example of mockery's functionality:
$relationQuery->shouldReceive('getQuery->newQuery->from')->once()->andReturn($newPivotStatement = m::mock('Illuminate\Database\Query\Builder'));

// instead of:

$relation->getQuery()->shouldReceive('getQuery')->andReturn($mockQueryBuilder = m::mock('StdClass'));
$mockQueryBuilder->shouldReceive('newQuery')->once()->andReturn($query);
$query->shouldReceive('from')->once()->with('table')->andReturn($newPivotStatement = m::mock('Illuminate\Database\Query\Builder'));

this chain here is a deep implementation detail that we don't care about in this particular unit test.

Ok I see so the short syntax define at the same time a stub and a "called methods check" at the same time.
I took a look at the Rspec documentation to check how they are dealing with fluent interface.
Their conclusions are:

Chains can be arbitrarily long, which makes it quite painless to violate the Law of Demeter
in violent ways, so you should consider any use of receive_message_chain a code smell.
Even though not all code smells indicate real problems (think fluent interfaces)

So what about to leave "called methods checks" aside and only dealing with the stub part through something like ?
Stub::on($relationQuery)->chain('getQuery->newQuery->from')->andReturn($something)

Would that be of any use ?

Ok I see so the short syntax define at the same time a stub and a "called methods check" at the same time.
I took a look at the Rspec documentation to check how they are dealing with fluent interface.
Their conclusions are:

Chains can be arbitrarily long, which makes it quite painless to violate the Law of Demeter
in violent ways, so you should consider any use of receive_message_chain a code smell.
Even though not all code smells indicate real problems (think fluent interfaces)

So what about to leave "called methods checks" aside and only dealing with the stub part through something like ?
Stub::on($relationQuery)->chain('getQuery->newQuery->from')->andReturn($something)

Would that be of any use @jarektkaczyk ?

@jarektkaczyk implemented through https://github.com/crysalead/kahlan/pull/155 feel free to test it though the dev branch.

Available in master through the new allow() API.


dash does connect server

config

obs: other servers such as login is working

im change
version requirements
requirements.txt


fix j dim datatype for llc grids

This makes sure we have integer indices for llc grids.

Codecov Report

Merging #43 into master will not change coverage.
The diff coverage is 100%.

@@           Coverage Diff           @@
##           master      #43   +/-   ##
=======================================
  Coverage   91.94%   91.94%
=======================================
  Files           4        4
  Lines         608      608
  Branches      134      134
=======================================
  Hits          559      559
  Misses         32       32
  Partials       17       17

Impacted Files
Coverage Δ

xmitgcm/mds_store.py
92.02% <100%> (ø)
:arrow_up:

Continue to review full report at Codecov.

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


Implementation of lint rules

I would like to make suggestions to introduce some new eslint rules to make parts of the code more consistent.

Rule: eslint[arrow-body-style]
Reference: app/components/SocialAuth.tsx, app/components/icons/*
Lines: 9-17

  return (
    <div className="flex flex-col w-full gap-4 my-8">
      <LinkButton icon={Google} title="Continue with Google" href={google} />

      <LinkButton icon={Microsoft} title="Continue with Microsoft" href={microsoft} />
    </div>
  );
};

Rule: unnecessary assertion (sonarlint(typescript:S4325))
Reference: app/components/common/dropdown/index.test.tsx
Lines: 37

const dropdownValue = screen.getByTestId('dropdown-value') as HTMLButtonElement;

Fixed code:
const dropdownValue: HTMLButtonElement = screen.getByTestId('dropdown-value');

Rule: duplicated import (sonarlint(css:S1128))
Reference: app/components/common/eventModal/styles.css
Lines: 3

@import<EMAIL_ADDRESS>

@isVivek99 I would like to participate in fixing these and possibly future findings.

hi @Martijn0405 , thanks for creating this elaborate issue, I think we can implement some of them, before that , are you a part of the discord community of Real dev squad ?

Hi @isVivek99, I am working on a project for our University about software evolution and we would like to contribute to this project by fixing a number of issues. We would like to join your discord. Could you please provide a way to join? I already signed up to the RealDevSquad website with GitHub too, if that helps.

I think you can contact @ankushdharkar on twitter if you would like to join RDS. you can contact him on twitter he will help you with this https://twitter.com/ankushdharkar


Testing script that can run tests on the built artifacts

Is your feature request related to a problem? Please describe.
Currently, the tests are done manually after publishing the built artifacts on staging. The artifacts are downloaded, tested and then there is a go ahead for the release. This manual process is cumbersome and error prone.
Describe the solution you'd like

Create a testing script which can run the tests on the built artifacts
Create a testing stage in the data-prepper jenkins job (job-link) to call the script to test the artifacts before signing

Acceptance Criteria

[ ] When I call the run-tests.sh script, it runs all the tests on the build artifacts
[ ] When I trigger the data-prepper jenkins job  (job-link), a testing stage is run that runs all the tests before signing the artifacts

Describe alternatives you've considered (Optional)
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.

This Issue was created before we redesigned the release process. Per our new design we will:

Create an alteration of our existing smoke tests to test against tar.gz archive files.
Update the GitHub Actions release process to run the smoke tests against our artifacts. This will verify the artifacts before running the promotion jobs.

@abhinavGupta16 , Should we also run the smoke tests on the Jenkins promotion jobs after they sign the artifacts and upload them to the final production page?


Add pnpm support

I just want to use pnpm with this cli.
And as a pnpm user, I'd recommend you to use pnpm because it is very efficient on disk space.
Read this.
You may request me to migrate from Yarn to pnpm.

Sapphire currently isn't supported by pnpm because with how it resolves transient dependencies and specifically how @sapphire/pieces isn't put into node_modules/@sapphire/pieces when installing @sapphire/framework.
This is not something to be resolved on our end but if it can be resolved / configured on pnpm's end then it has to be added to this CLI similar to how for yarn v3 we configure the nodeLinker as node-modules.

@favna sorry for late comment but pnpm can also hoist all dependencies (when requested)
One way to do this is by telling pnpm to (--)shamefully-hoist node_modules in the .npmrc file:
# pnpm only
shamefully-hoist=true

I still don't know if npm and/or Yarn wouldn't mind about this.
You may want to see the documentation on this.
Although we could also tell pnpm users to remember to put --shamefully-hoist in their pnpm install/pnpm add commands,
humans can make mistakes, so maybe not that way.

I'll create a new PR since I deleted my fork last time

See #191.


Angular 10 gives optimization bailout issue due to CommonJS/AMD module

C:\Users\shofol\Desktop\e-kyc\node_modules\ng5-slider_ivy_ngcc_\esm2015\ng5-slider.js depends on 'rxjs/operators'. CommonJS or AMD dependencies can cause optimization bailouts.
For more info see: https://angular.io/guide/build#configuring-commonjs-dependencies
I think we need a ES6 module for ng5-slider to get optimized results. Is there a module?

This has been merged with PR #216, will release as soon as possible.

Released in v1.2.5. Closing.


H613G not currently supported

{"device":"59:67:D4:AD:FC:AA:64:0B","deviceName":"RGB Strip Lights","model":"H613G","httpInfo":{"groupId":0,"device":"59:67:D4:AD:FC:AA:64:0B","sku":"H613G","spec":"","versionHard":"2.01.02","versionSoft":"2.04.15","deviceName":"RGB Strip Lights","deviceExt":{"deviceSettings":"{"address":"D4:AD:FC:AA:64:0B","bleName":"GBK_H613G_640B","topic":"GD/f4a766e7c6b70dc12021fce817c7134c","pactType":10,"pactCode":1,"wifiSoftVersion":"","wifiHardVersion":"","ic":0,"boilWaterCompletedNotiOnOff":1,"completionNotiOnOff":1,"autoShutDownOnOff":1,"sku":"H613G","device":"59:67:D4:AD:FC:AA:64:0B","deviceName":"RGB Strip Lights","versionHard":"2.01.02","versionSoft":"2.04.15","playState":false}","lastDeviceData":"{"online":false}","extResources":"{"skuUrl":"https://d1f2504ijhdyjw.cloudfront.net/sku-img/9cdbf848901741d22374107341677e80-add_list_type_device_613g.png\",\"headOnImg\":\"https://d1f2504ijhdyjw.cloudfront.net/sku-img/7497e9e37fb1d7461581173195ffcf3e-new_light_title_home_on.png\",\"headOnImgNew\":\"https://d1f2504ijhdyjw.cloudfront.net/sku-img/7c284a4b86e0c969e7da21b3612b434a-light_pics_strip_rgb_on.png\",\"headOffImg\":\"https://d1f2504ijhdyjw.cloudfront.net/sku-img/871d58cc47b99af39dead92abd2acd01-new_light_title_home_off.png\",\"headOffImgNew\":\"https://d1f2504ijhdyjw.cloudfront.net/sku-img/389fefbde9b746458ecaea1520c2dcd1-light_pics_strip_rgb_off.png\",\"ext\":\"\",\"ic\":0}"},"pactType":10,"pactCode":1,"share":0,"deviceId":20333059,"gidConfirmed":false,"goodsType":2,"attributesId":2,"supportScene":1}}
LED Strip Lights
Bluetooth
Thanks for looking at this.

Hi @aardods i have published a beta version of the plugin with this model included in the bluetooth-only lights supported list

Thank you!


1.16.x: 4.1 - Mob spawning

Implement all mob spawning related features for 1.16.x (biome mob spawn settings, BO3/BO4 Entity() and Spawner() resources).

Implement /otg biome -m.

included for v0.0.1, need to test if all the old and new mob names work. Will add /otg biome -m to console commands issue.


Introduce Futex for backpressure on Wards

@disruptek the tward test seems to cork it; afaict this shouldnt be related to loony. Can you have a gander at it?

i'll do destroy procs and a ward test suite that doesn't trigger arc undefined behaviour and then merge it

Welp still haven't done the ward test suite but I have added and tested the destroy proc. I think a lot of it is unnecessary since the destroy proc also goes through the effort of decref'in any refs still in there but might as well.


[Question] Are the jits around pmaps intended?

https://github.com/google/evojax/blob/f41a6e01cbfb9ace1bd967e86460132dd210e5d1/evojax/sim_mgr.py#L189
The docs seem to say that jits around pmaps are unnecessary: https://jax.readthedocs.io/en/latest/jax-101/06-parallelism.html#pmap-and-jit
While running experiments, I also often get this warning which seems to say that it might be problematic:
UserWarning: The jitted function <unnamed function> includes a pmap. Using jit-of-pmap can lead to inefficient data movement, as the outer jit does not preserve sharded data representations and instead collects input and output arrays onto a single device. Consider removing the outer jit unless you know what you're doing. See [https://github.com/google/jax/issues/2926].
If the behaviour is intended please discard.

Hi, thanks for raising this.
I'm aware of this warning and it is indeed intended.
If you run experiments on multiple devices (e.g. this, which by defaults uses colab TPUs), you will notice the difference with and without this outer jit.


fix : perf issue with Class.forName with Kotlinx Datetime

Hi,
Since kmongo 4.7.2, performance has been degraded by Class.forName with kotlinx datetime during our requests to DB.
We not using kotlinx datetime lib, so Class.forName is call each time.
By using AsyncProfiler on wall mode, we can see it :

For an hotfix for us, we added kotlinx datetime to fix issue in our side, waiting a fix on KMongo.
I have added a fix on this PR, by loading Class.forName only on first time.
Could you check it, please 🙏 ?
Sincerely,
Fabien

Thank you for the PR.


Add dependabot periodic dependency updates

wasm-tools and wit-bindgen are both quite active projects, and it's not easy to update them after long periods. This commit adds a dependabot configuration file to periodically update the dependencies to align with the latest toolchain.

Yeah this sounds like a sensible approach, thanks.


Arcs go way beyond the map

While developing something that looks like an airline routes map with Leaflet.Arc plugin (that wraps arc.js), I noticed that certain arcs (e.g. Seattle - Abu Dhabi) seriously overflow the edges of the map. This makes perfect sense in a 3D Context where that line would go near the North Pole and would be geometrically correct. However, in a 2D context, I'd imagine it would make sense for arcs to stay within latitude bounds. Is that something worth considering?

I don't see what the problem here is, surely this library is to calculate the shortest distance on the Great Circles in a 3D context, the 2D context is depends only on your projection and would produce a longer line along the earths surface in situations like this.
It doesn't really go beyond the "edges of the map" except that the line takes it outside the maximum latitude of this projection, rather that the points near the edge are close together, and if you had a projection that went all the way to 90, and a line that went exactly through the pole, they would represent the same point.

lines overflowing the boundaries of the mercator projection is definitely something that is 'as designed'.
i'll close this one out, but i'm happy to keep discussing if anyone has further questions.


how to repeat the last trial?

I am collecting responses from users. If they press the wrong button I want them to be able to correct their response and press the backspace button. How can I implement this?
I think I somehow need to make a copy of the current trial and the trial before that I want to repeat and inject it in the timeline?
After answering with the corrected response the experiment should then resume with the next trial and repeat the copies of "current trial" and the "to be corrected trial" at the end of the stimulus block.

I think I somehow need to make a copy of the current trial and the trial before that I want to repeat and inject it in the timeline?

One way to do this is to use a looping timeline. You can put the trials on loop, and only proceed when the user answers correctly.

After answering with the corrected response the experiment should then resume with the next trial and repeat the copies of "current trial" and the "to be corrected trial" at the end of the stimulus block.

This is a little trickier. There is a function to add another trial to the end of the timeline, but that may not be ideal if your sequence is in the middle of the experiment.
Another option is to use a looping timeline with dynamic parameters and control the set of parameters outside of jsPsych. I recently recorded a video tutorial that does something kind of similar, but in a very different context. It might help you see how to do this sort of thing though.


CFFL

CFFL

Linter check found the following problems:
The following problems have been found:
ERROR: /tmp/abs_78gyaoel0s/clone/recipe/meta.yaml:15: pip_install_args: pip install should be run with --no-deps.
ERROR: /tmp/abs_78gyaoel0s/clone/recipe/meta.yaml:20: missing_wheel: For pypi packages, wheel should be present in the host section
ERROR: /tmp/abs_78gyaoel0s/clone/recipe/meta.yaml:32: missing_pip_check: For pypi packages, pip check should be present in the test commands
WARNING: /tmp/abs_78gyaoel0s/clone/recipe/meta.yaml:40: missing_description: The recipe is missing a description
ERROR: /tmp/abs_78gyaoel0s/clone/recipe/meta.yaml:40: missing_dev_url: The recipe is missing a dev_url
ERROR: /tmp/abs_78gyaoel0s/clone/recipe/meta.yaml:40: missing_documentation: The recipe is missing a doc_url or doc_source_url
Errors were found

Linter check found the following problems:
The following problems have been found:
ERROR: /tmp/abs_8dzz4uoeqf/clone/recipe/meta.yaml:15: pip_install_args: pip install should be run with --no-deps.
ERROR: /tmp/abs_8dzz4uoeqf/clone/recipe/meta.yaml:20: missing_wheel: For pypi packages, wheel should be present in the host section
ERROR: /tmp/abs_8dzz4uoeqf/clone/recipe/meta.yaml:32: missing_pip_check: For pypi packages, pip check should be present in the test commands
ERROR: /tmp/abs_8dzz4uoeqf/clone/recipe/meta.yaml:40: missing_dev_url: The recipe is missing a dev_url
WARNING: /tmp/abs_8dzz4uoeqf/clone/recipe/meta.yaml:40: missing_description: The recipe is missing a description
ERROR: /tmp/abs_8dzz4uoeqf/clone/recipe/meta.yaml:40: missing_documentation: The recipe is missing a doc_url or doc_source_url
Errors were found


Python: async context.read block to infinite after some times

What version of gRPC and what language are you using?
Python 3.8
grpcio 1.45.0
grpcio-tools 1.45.0
What operating system (Linux, Windows,...) and version?
Debian - Docker: python:3.8-slim-buster
What runtime / compiler are you using (e.g. python version or version of gcc)
Python 3.8
What did you do?
I use gRPC in one of my µService as an event protocol. So I have a client that send a message a server receiving it and sending back to other clients listening to this event.
Everything is working fine except that after some delay (inactivity mostly but not absolutely sure after 2-3 days) the connection is lost without any error or log. It happen often in our development cluster and rarely in our production cluster
Inside my server I do something like:
...
while True:
    event_storage = rooms_storage.get_events_queue_for_client(request.service_id)
    logger.info(
        f"INVESTIGATION:4 - Status of the context for {request.service_id}: is done ? {context.done()}"
    )
    ....
    message = ...
    await context.write(message)
    await asyncio.sleep(5)

Inside the clients:
while True:
    #   INFO 10/14/21: wait 0.1 sec between each event we do it to make sure event handling not overload this service
    print("before sleep")
    await asyncio.sleep(0.1)

    print("before read")
    response = await event_stream.read()

    logger.info(
        f"*** RECEIVED EVENT {response.service_id}-{response.aggregate}-{response.event_type}-{response.event_id} ***"
    )
    # PROCESS EVENT
    ...
    print("after process event")

What did you expect to see?
An error or the log info RECEIVED EVENT after sending a new event
What did you see instead?
the client last log: print("before read") without any more.
The server log f"INVESTIGATION:4 - Status of the context for {request.service_id}: is done ? {context.done()}" does not display anymore.
Sometime I got the log: E0501 04:32:57.218940230      12 http_server_filter.cc:218]  GET request without QUERY
But it do not block the stream. It's mostly related to the istio proxy for using grpc web where the issue is µService to µService.
Make sure you include information that can help us debug (full error message, exception listing, stack trace, logs).
See TROUBLESHOOTING.md for how to diagnose problems better.
Anything else we should know about your project / environment?
I am going to put GRPC_VERBOSITY to debug to have more information about this the next time it happen. But maybe it's a "normal" behavior so I prefere to open an issue to track this for the next one.
The code is running on a kubernetes cluster with an istio sidecar.

The bug happen again at 2am UTC between on monday morning.
The log are way too verbose. I pushed a new trace with:
GRPC_TRACE: api,call_error,channel,tcp,http,http2_stream_state,http1,http_keepalive,op_failure,flowctl,server_channel,tcp,polling,polling_api,chttp2_refcount,stream_refcount,error_refcount,queue_refcount"

instead of all. If you some better to advice me do not hesitate.
The last successfull read message log (between too before read print): https://pastebin.com/jcNZAUQH
First 1100 line after the last before read message: https://pastebin.com/f9pq6KFR
Only the first 16 line are interesting particulary 13 to 16:
I0508 02:00:24.292641162       1 channel_stack.cc:249]       OP[connected:0x5632434dbc38]:  RECV_MESSAGE
I0508 02:00:24.292645955       1 chttp2_transport.cc:1601]   perform_stream_op[s=0x5632434dc760]:  RECV_MESSAGE
I0508 02:00:24.292662596       1 chttp2_transport.cc:1356]   perform_stream_op_locked:  RECV_MESSAGE; on_complete = (nil)
D0508 02:00:24.292671133       1 flow_control.cc:117]        0x7fda80005320[3][cli] | app st recv | trw:                     268433946, tlw:                       4194308, taw:                       4193488, srw:                     268435333, slw:

After that there is only:
I0508 02:00:24.554075597      10 timer_generic.cc:689]       TIMER CHECK BEGIN: now=300853616 next=9223372036854775807 tls_min=300853452 glob_min=300853616
I0508 02:00:24.554082749      10 timer_generic.cc:595]         .. shard[4]->min_deadline = 300853616
I0508 02:00:24.554086759      10 timer_generic.cc:517]         .. shard[4]: heap_empty=true
I0508 02:00:24.554090277      10 timer_generic.cc:492]         .. shard[4]->queue_deadline_cap --> 300854616
I0508 02:00:24.554094128      10 timer_generic.cc:558]         .. shard[4] popped 0
I0508 02:00:24.554097568      10 timer_generic.cc:613]         .. result --> 1, shard[4]->min_deadline 300853616 --> 300854617, now=300853616
I0508 02:00:24.554101154      10 timer_generic.cc:517]         .. shard[2]: heap_empty=true
I0508 02:00:24.554105636      10 timer_generic.cc:492]         .. shard[2]->queue_deadline_cap --> 300854616
I0508 02:00:24.554108750      10 timer_generic.cc:558]         .. shard[2] popped 0
I0508 02:00:24.554111894      10 timer_generic.cc:613]         .. result --> 1, shard[2]->min_deadline 300853616 --> 300854617, now=300853616
I0508 02:00:24.554115220      10 timer_generic.cc:711]       TIMER CHECK END: r=1; next=300853850
I0508 02:00:24.554118300      10 timer_manager.cc:188]       sleep for a 234 milliseconds
I0508 02:00:24.788026523      10 timer_manager.cc:204]       wait ended: was_timed:1 kicked:0

that repeat itself in loop

We restarted our development pods this week end for a maintenance action so the bug didn't happen. I will provide more information next time it happen. Next monday with luck.

Happen again between two day ago and now.
Here is the log with the new trace (12,8MB)
https://we.tl/t-HekvUMMp1V
When I send new stream 0 logs are printed so the stream is closed but I do not know where to look in this logs to see when or why the stream close.
I just had the go to disable the listing service of the µservice that use the stream to avoid polluting log with tester request instead of stream. Hope will have better readable log on monday.
Still time to ask me to enable some particular trace logs to see better.

I have a repetitive behavior. The last working read is at 2 am on the morning. I am going to follow what happen at this time.
I also have some error log that are more present after this last read (the Failed call creation: part)
I looked in old log and it seem to be the root issue:
I0520 23:18:38.177827637      11 call.cc:1353]               ops[0]: RECV_INITIAL_METADATA ptr=0x7f9b0c065eb8
I0520 23:18:38.177833875      11 parsing.cc:522]             parsing initial_metadata
I0520 23:18:38.177851617      11 tcp_posix.cc:548]           TCP:0x7f9b0c04f570 notify_on_read
I0520 23:18:38.177860620      11 call.cc:609]                OP[server:0x7f9b0c065d60]:  RECV_INITIAL_METADATA
I0520 23:18:38.177864288      11 channel_stack.cc:249]       OP[message_size:0x7f9b0c065d78]:  RECV_INITIAL_METADATA
I0520 23:18:38.177868134      11 channel_stack.cc:249]       OP[deadline:0x7f9b0c065d90]:  RECV_INITIAL_METADATA
I0520 23:18:38.177871588      11 channel_stack.cc:249]       OP[http-server:0x7f9b0c065da8]:  RECV_INITIAL_METADATA
I0520 23:18:38.177874620      11 channel_stack.cc:249]       OP[message_decompress:0x7f9b0c065dc0]:  RECV_INITIAL_METADATA
I0520 23:18:38.177877641      11 channel_stack.cc:249]       OP[message_compress:0x7f9b0c065dd8]:  RECV_INITIAL_METADATA
I0520 23:18:38.177880860      11 channel_stack.cc:249]       OP[connected:0x7f9b0c065df0]:  RECV_INITIAL_METADATA
I0520 23:18:38.177884441      11 chttp2_transport.cc:1601]   perform_stream_op[s=0x7f9b0c066ae0]:  RECV_INITIAL_METADATA
I0520 23:18:38.177888728      11 chttp2_transport.cc:1356]   perform_stream_op_locked:  RECV_INITIAL_METADATA; on_complete = (nil)
E0520 23:18:38.177895957      11 http_server_filter.cc:218]  GET request without QUERY
D0520 23:18:38.177929956      11 server.cc:1345]             Failed call creation: {"created":"@1653088718.177907913","description":"Missing :authority or :path","file":"src/core/lib/surface/server.cc","file_line":1394,"referenced_errors":[{"created":"@1653088718.177895100","description":"Failed processing incoming headers","file":"src/core/ext/filters/http/server/http_server_filter.cc","file_line":111,"referenced_errors":[{"created":"@1653088718.177893818","description":"Missing header","file":"src/core/ext/filters/http/server/http_server_filter.cc","file_line":160,"key":"te"}]}]}
I0520 23:18:38.177943468      11 call.cc:609]                OP[server:0x7f9b0c065d60]:  CANCEL:{"created":"@1653088718.177907913","description":"Missing :authority or :path","file":"src/core/lib/surface/server.cc","file_line":1394,"referenced_errors":[{"created":"@1653088718.177895100","description":"Failed processing incoming headers","file":"src/core/ext/filters/http/server/http_server_filter.cc","file_line":111,"referenced_errors":[{"created":"@1653088718.177893818","description":"Missing header","file":"src/core/ext/filters/http/server/http_server_filter.cc","file_line":160,"key":"te"}]}]}
I0520 23:18:38.177948250      11 channel_stack.cc:249]       OP[message_size:0x7f9b0c065d78]:  CANCEL:{"created":"@1653088718.177907913","description":"Missing :authority or :path","file":"src/core/lib/surface/server.cc","file_line":1394,"referenced_errors":[{"created":"@1653088718.177895100","description":"Failed processing incoming headers","file":"src/core/ext/filters/http/server/http_server_filter.cc","file_line":111,"referenced_errors":[{"created":"@1653088718.177893818","description":"Missing header","file":"src/core/ext/filters/http/server/http_server_filter.cc","file_line":160,"key":"te"}]}]}
I0520 23:18:38.177952856      11 channel_stack.cc:249]       OP[deadline:0x7f9b0c065d90]:  CANCEL:{"created":"@1653088718.177907913","description":"Missing :authority or :path","file":"src/core/lib/surface/server.cc","file_line":1394,"referenced_errors":[{"created":"@1653088718.177895100","description":"Failed processing incoming headers","file":"src/core/ext/filters/http/server/http_server_filter.cc","file_line":111,"referenced_errors":[{"created":"@1653088718.177893818","description":"Missing header","file":"src/core/ext/filters/http/server/http_server_filter.cc","file_line":160,"key":"te"}]}]}
I0520 23:18:38.177956780      11 channel_stack.cc:249]       OP[http-server:0x7f9b0c065da8]:  CANCEL:{"created":"@1653088718.177907913","description":"Missing :authority or :path","file":"src/core/lib/surface/server.cc","file_line":1394,"referenced_errors":[{"created":"@1653088718.177895100","description":"Failed processing incoming headers","file":"src/core/ext/filters/http/server/http_server_filter.cc","file_line":111,"referenced_errors":[{"created":"@1653088718.177893818","description":"Missing header","file":"src/core/ext/filters/http/server/http_server_filter.cc","file_line":160,"key":"te"}]}]}
I0520 23:18:38.177960576      11 channel_stack.cc:249]       OP[message_decompress:0x7f9b0c065dc0]:  CANCEL:{"created":"@1653088718.177907913","description":"Missing :authority or :path","file":"src/core/lib/surface/server.cc","file_line":1394,"referenced_errors":[{"created":"@1653088718.177895100","description":"Failed processing incoming headers","file":"src/core/ext/filters/http/server/http_server_filter.cc","file_line":111,"referenced_errors":[{"created":"@1653088718.177893818","description":"Missing header","file":"src/core/ext/filters/http/server/http_server_filter.cc","file_line":160,"key":"te"}]}]}
I0520 23:18:38.177964176      11 channel_stack.cc:249]       OP[message_compress:0x7f9b0c065dd8]:  CANCEL:{"created":"@1653088718.177907913","description":"Missing :authority or :path","file":"src/core/lib/surface/server.cc","file_line":1394,"referenced_errors":[{"created":"@1653088718.177895100","description":"Failed processing incoming headers","file":"src/core/ext/filters/http/server/http_server_filter.cc","file_line":111,"referenced_errors":[{"created":"@1653088718.177893818","description":"Missing header","file":"src/core/ext/filters/http/server/http_server_filter.cc","file_line":160,"key":"te"}]}]}
I0520 23:18:38.177967489      11 channel_stack.cc:249]       OP[connected:0x7f9b0c065df0]:  CANCEL:{"created":"@1653088718.177907913","description":"Missing :authority or :path","file":"src/core/lib/surface/server.cc","file_line":1394,"referenced_errors":[{"created":"@1653088718.177895100","description":"Failed processing incoming headers","file":"src/core/ext/filters/http/server/http_server_filter.cc","file_line":111,"referenced_errors":[{"created":"@1653088718.177893818","description":"Missing header","file":"src/core/ext/filters/http/server/http_server_filter.cc","file_line":160,"key":"te"}]}]}
I0520 23:18:38.177970896      11 chttp2_transport.cc:1601]   perform_stream_op[s=0x7f9b0c066ae0]:  CANCEL:{"created":"@1653088718.177907913","description":"Missing :authority or :path","file":"src/core/lib/surface/server.cc","file_line":1394,"referenced_errors":[{"created":"@1653088718.177895100","description":"Failed processing incoming headers","file":"src/core/ext/filters/http/server/http_server_filter.cc","file_line":111,"referenced_errors":[{"created":"@1653088718.177893818","description":"Missing header","file":"src/core/ext/filters/http/server/http_server_filter.cc","file_line":160,"key":"te"}]}]}
I0520 23:18:38.177974537      11 call.cc:558]                grpc_call_unref(c=0x7f9b0c065170)
I0520 23:18:38.177979883      11 chttp2_transport.cc:1356]   perform_stream_op_locked:  CANCEL:{"created":"@1653088718.177907913","description":"Missing :authority or :path","file":"src/core/lib/surface/server.cc","file_line":1394,"referenced_errors":[{"created":"@1653088718.177895100","description":"Failed processing incoming headers","file":"src/core/ext/filters/http/server/http_server_filter.cc","file_line":111,"referenced_errors":[{"created":"@1653088718.177893818","description":"Missing header","file":"src/core/ext/filters/http/server/http_server_filter.cc","file_line":160,"key":"te"}]}]}; on_complete = 0x7f9b0c01abe0
I0520 23:18:38.177984760      11 chttp2_transport.cc:774]    W:0x7f9b0c044b80 SERVER [ipv4:<IP_ADDRESS>:51878] state IDLE -> WRITING [RST_STREAM]
I0520 23:18:38.177993538      11 chttp2_transport.cc:1186]   complete_closure_step: t=0x7f9b0c044b80 0x7f9b0c01abe0 refs=0 flags=0x0000 desc=op->on_complete err="OK" write_state=WRITING
I0520 23:18:38.177999005      11 metadata_array.cc:34]       grpc_metadata_array_destroy(array=0x7f9b0c065eb8)
D0520 23:18:38.178008913      11 flow_control.cc:117]        0x7f9b0c046d10[0][svr] | t updt sent | trw:                     268429500, tlw:                       4194313, taw:                       4194313, srw:                              , slw:                              , saw:
I0520 23:18:38.178017872      11 chttp2_transport.cc:774]    W:0x7f9b0c044b80 SERVER [ipv4:<IP_ADDRESS>:51878] state WRITING -> WRITING [begin write in current thread]
I0520 23:18:38.178021093      11 tcp_posix.cc:1549]          WRITE 0x7f9b0c04f570 (peer=ipv4:<IP_ADDRESS>:51878)
D0520 23:18:38.178024510      11 tcp_posix.cc:1553]          DATA: 00 00 04 03 00 00 00 00 15 00 00 00 02 '.............'
I0520 23:18:38.178057268      11 tcp_posix.cc:1598]          write: "OK"
I0520 23:18:38.178066254      11 chttp2_transport.cc:774]    W:0x7f9b0c044b80 SERVER [ipv4:<IP_ADDRESS>:51878] state WRITING -> IDLE [finish writing]
I0521 00:18:38.182872540      11 tcp_posix.cc:863]           TCP:0x7f9b0c04f570 got_read: "OK"
I0521 00:18:38.182920584      11 tcp_posix.cc:855]           TCP:0x7f9b0c04f570 do_read
I0521 00:18:38.182943099      11 tcp_posix.cc:667]           TCP:0x7f9b0c04f570 call_cb 0x7f9b0c044ce8 0x7f9b24ef67a0:0x7f9b0c044b80
I0521 00:18:38.182976791      11 tcp_posix.cc:669]           READ 0x7f9b0c04f570 (peer=ipv4:<IP_ADDRESS>:51878) error={"created":"@1653092318.182939211","description":"Socket closed","fd":19,"file":"src/core/lib/iomgr/tcp_posix.cc","file_line":769,"grpc_status":14,"target_address":"ipv4:<IP_ADDRESS>:51878"}
I0521 00:18:38.182985904      11 chttp2_transport.cc:2798]   transport 0x7f9b0c044b80 set connectivity_state=4
I0521 00:18:38.183025193      11 server.cc:1156]             Disconnected client

I was able to reproduce this bug. I will work on it next week. Great chance it's a deadlock issue. Will Close this issue after I validated it has nothing to do with grpc itself.

Actually I thought I was reproducing the bug but in fact not. I slow down the rate of sending message in development to have better visibility on what was going on but this action messed up with my script that check is the stream is awake.
So my stream was not dead just slow to send the message because the queue was not empty.
Another message next week or before maybe.

Sorry for late reply, is the issue still exist with latest release? We'll take a look If it still happens and looks related to gRPC.


Gas Site	"Bountiful Frontier Reservoir" is missing

As title says, the "Bountiful Frontier Reservoir" is missing from the list of gas sites meaning that gas sites that are that remain as "Unknown" when you add their sigs in.
Example signature: UXE-448	Cosmic Signature	Gas Site	Bountiful Frontier Reservoir	100.0%	8.20 AU

Its there now, apparently... Dunno whats up with that.


Are discrepancies between old m3gnet repo expected?

I'm comparing results between the pretrained m3gnet in this repo and in the original m3gnet repo, and for some of my structures I am finding pretty large discrepancies. Is this expected? For example, for this structure:

Full Formula (Ti2 Nb3)
Reduced Formula: Ti2Nb3
abc   :   2.862214   2.862214  11.801210
angles:  85.362850  94.637150  70.528779
pbc   :       True       True       True
Sites (5)
#  SP      a    b    c
---  ----  ---  ---  ---
0  Ti    0    0    0
1  Ti    0.6  0.4  0.2
2  Nb    0.2  0.8  0.4
3  Nb    0.8  0.2  0.6
4  Nb    0.4  0.6  0.8

I get a difference of 40 meV/atom in expected energy, and different atomic positions as well.

How different are the atomic positions? While we adopted mostly the same training protocols, the pre-trained M3GNet in this repo is not an exact replica of the previous M3GNet-TF. I would expect the differences in atomic positions to not be large. Energy errors within the MAE of the potentials (30-40 meV/atom) are not surprising.

I should add that there is no easy way to port model weights directly over from TF to DGL/Pytorch. So that's why we had to retrain. In any case, this is a baseline model (just to make sure we are reproducing the broad error characteristics of the TF version) and we will provide improved models as we go along.

How different are the atomic positions?
Not significantly different in the structures I've tested, but enough that I could tell it wasn't just noise. The energy is the more noteworthy difference imo

Yeah for the atomic positions, we usually get to within 1% of the DFT. So I would expect the deviation in atomic positions to be less significant (but not merely noise level). There are definite uncertainties in the energies. Better for some systems (e.g., oxides) but worse for others.

I have redone the cubic crystal test (see examples) with the new matgl implementation. The error characteristics are largely similar to the old m3gnet. We did discover some minor data issues and the new M3gnet is fitted with further filtered data (e.g., some problematic structures with very large forces were removed). So again, not an exact replica of the TF M3GNet but basically similar performance-wise. I will close this issue but feel free to reopen if you discover any serious issues with the new implementation.

Do I understand correctly that the new architecture of the model is also slightly different (the number of parameters seems to be different). Can any details be given about this? It might be relevant.


GraphQL says Tier.interval is deprecated, however Tier.frequency is always null

Describe the bug
The GraphQL docs specify that Tier.interval is deprecated, and that we should use Tier.frequency instead. However Tier.frequency always returns null for me.
To Reproduce

Issue the following (or similar) GraphQL query:

query {
  collective(slug: "celery") {
    tiers {
      nodes {
        id
        name
        interval
        frequency
        amount {
          valueInCents
          currency
        }
      }
    }
  }
}

You'll get a response similar to this (shortened for brevity):

{
  "data": {
    "collective": {
      "tiers": {
        "nodes": [
          {
            "id": "bvrgbk35-7l4x96e9-bjqomewa-0jdyzn83",
            "name": "backer",
            "interval": "month",
            "frequency": null,
            "amount": {
              "valueInCents": 1000,
              "currency": "USD"
            }
          },
          {
            "id": "8a47byg9-nxozdp87-59qmjlv0-3rek5w8k",
            "name": "silver-backer",
            "interval": "month",
            "frequency": null,
            "amount": {
              "valueInCents": 2000,
              "currency": "USD"
            }
          },
          ....
          }
        ]
      }
    }
  }
}

Expected behavior
I expected frequency to be MONTHLY (one of the valid ContributionFrequency values), however it seems like it's always null.

Triage Template (core team only)
This template is for members of the team to triage for prioritisation. For more guidance see https://www.loom.com/share/369ab467fbc64dec848085d38ff57ca0:
P1 high frequency, high impact
P2 low frequency, high impact
P3 high frequency, low impact
P4 low frequency, low impact
Examples of high impact - a problem affects users during an essential process (expenses and payments > onboarding and registration > contributing) with no workaround.
High frequency - >10% of users affected (measured as a proportion of total potential users for this case).

Thanks for taking the time here again to document the issue. It seems that we did not transition our frontend to this new field yet, which explains why we haven't noticed it before. Working on a fix in priority for this one.

@Betree I worked on this there https://github.com/opencollective/opencollective-api/pull/7528 Is it looking good to you?


picode网络的训练细节

Describe the feature
我也在复现picodet的网络，但是loss在训练集快速降到很小，但是验证集上的loss却比较大，map很低，由于是从paddlepaddle中抽取的部分代码，可能在训练上存在问题，也可能代码还有细节没注意到，希望博主能分享下训练的具体过程。
顺便提一下，预训练模型能在百度云上也放一个不？感谢
Motivation
A clear and concise description of the motivation of the feature.
Ex1. It is inconvenient when [....].
Ex2. There is a recent paper [....], which is very helpful for [....].
Related resources
If there is an official code release or third-party implementations, please also provide the information here, which would be very helpful.
Additional context
Add any other context or screenshots about the feature request here.
If you would like to implement the feature and create a PR, please leave a comment here and that would be much appreciated.

您好，我现在自己复现的精度暂时还差一些，只有30.1，权重我后面会上传一下


To Do - User story Sprint #3 - Deadline: Saturday 27 April

To Do:
User Stories Sprint #3
Before:
Saturday 27 April
Who:
Everyone does User Stories relevant to their respective tasks

Task finished


Firefox password prompt info not stored

Detailed description of the problem
When signing in into the admin interface, Firefox does not offer to store username and password.
It works fine in Chrome, though.
Maybe there is some meta data missing that would let Firefox know that this form contains username and password, so that the browser can store this data in its password manager.
Output of the diagnostics (Settings => Diagnostics)
Diagnostics
-----------
Warning: Dropbox import not working. No property for dropboxKey.
No critical problems found. Lychee should work without problems!

System Information
------------------
Lychee Version:  3.1.2
DB Version:      030102
System:          Linux
PHP Version:     5.5
MySQL Version:   50630
Imagick:         1
Imagick Active:  1
Imagick Version: 1655
GD Version:      bundled (2.1.0 compatible)
Plugins:

Browser and system
Firefox 47.0.1 on Win 10 x64 on the client side that visits the website.

Thanks for the report. The issue has been discussed already, but we are still not sure what's causing it. Let us know in issue #456 when you find more details.


Add a macro to apply a parser 1..n or 0..n times

In many cases you need to apply a parser multiple times - either 0..n or 1..n times. It would be handy to have a standard macro for this, rather than having to chain opt!() calls repeatedly.

many0!(), many1!()?

@nelsonjchen that will apply 0..infinite or 1..infinite if I'm reading the docs correctly. In many situations you need a fixed maximum number of times.

Oh! I see.

I implemented the many_m_n! combinator in cb62afb. You will be able to choose exactly how many parser applications you need.
This will be part of the 1.1 release

Nice, thanks!

On 30 Dec 2015, at 16:32, Geoffroy Couprie<EMAIL_ADDRESS>wrote:
I implemented the many_m_n! combinator in cb62afb https://github.com/Geal/nom/commit/cb62afb85bfba0408faab1e38fbb5afbb2429680. You will be able to choose exactly how many parser applications you need.
This will be part of the 1.1 release
—
Reply to this email directly or view it on GitHub https://github.com/Geal/nom/issues/124#issuecomment-168029258.


small fixes

fixed docblocks;
changed method Jsonq::find (added $object param so now you can get data both as arrays and as stdClass);
fixed getting scalar values (previously only string values were returned correctly)

:+1:

thank you @lo00l


fix: Ensure watch rethrows error

Otherwise one will see another confusing error following the initial one in
the output:
TypeError: Cannot read property 'toString' of undefined

Thanks a lot for this PR @sebn 👍
Actually, we did just log these erros to avoid crashing the watching mode. Maybe I could just use a return after that or check if stats is defined before logging it? It could fix your issue if I understand correctly.

For all cases I added a check on stats in #495

My bad, since the 2nd error was stopping the watching, I didn't think it was useful to prevent throwing.
But returning immediately in case of an error definitely sounds like a good idea to me.
Even better than checking for stats, since code below (including successCallback) doesn't really make sense on failure.
Closing my PR so you can handle it as you wish.

:ok_hand: thanks for the feedback anyway, and sorry for the noise :smiley:


MLDB-1212 csv import long quoted lines

Fixes issues with parsing quoted CSV fields longer than 4096 bytes.
@mailletf FYI

Confirmed fix; thanks! +1