Export randomly fails on vanilla environments with "Scan thread aborted"

Godot version
3.5-rc8
System information
Ubuntu Latest (Ubuntu 22.04 LTS) in Docker
Issue description
I'm exporting a project for Windows & Linux in a Github Action. When exporting a project in Github Actions environment, builds randomly fail (around 20% of the time) which makes it look like there's an internal race condition happening. Also the binary exits with code 0 for some reason, even though the export has failed.
Sometimes both exports fail (Win & Linux), sometimes one of them, and sometimes both succeed.
Here's the log of a failed build (notice the Scan thread aborted... warning):
ERROR: Failed loading resource: res://.import/icon.png-dff180777d78a0c53a9d6180af049eb9.stex. Make sure resources have been imported by opening the project in the editor at least once.
   at: _load (core/io/resource_loader.cpp:270)
ERROR: Expected Image data size of 256x256x2 (without mipmaps) = 131072 bytes, got 174762 bytes instead.

WARNING: Scan thread aborted...           <<--------------------------------------------
     at: _notification (editor/editor_file_system.cpp:1087)
ERROR: Condition "_first != nullptr" is true.
   at: ~List (./core/self_list.h:108)
ERROR: Condition "_first != nullptr" is true.
   at: ~List (./core/self_list.h:108)
WARNING: ObjectDB instances leaked at exit (run with --verbose for details).
     at: cleanup (core/object.cpp:2070)
ERROR: Resources still in use at exit (run with --verbose for details).
[exited with code 0]

At other times, instead of this error, I can see the following output as the build is successfully produced:
ERROR: Failed loading resource: res://.import/icon.png-dff180777d78a0c53a9d6180af049eb9.stex. Make sure resources have been imported by opening the project in the editor at least once.
   at: _load (core/io/resource_loader.cpp:270)
ERROR: Expected Image data size of 256x256x2 (without mipmaps) = 131072 bytes, got 174762 bytes instead.

ERROR: Cannot open file 'res://.import/elevator_music.ogg-66aa0f24942f3f489366fde592260f38.oggstr'.
   at: get_dependencies (core/io/resource_format_binary.cpp:984)
ERROR: Cannot open file 'res://.import/elevator_music_clear.ogg-07f2daa3449daf1116e0201ed5e734b4.oggstr'.
   at: get_dependencies (core/io/resource_format_binary.cpp:984)
ERROR: Cannot open file 'res://.import/senseless2.ogg-07d0bfb31807ffe7bee731719e8a3f2a.oggstr'.
   at: get_dependencies (core/io/resource_format_binary.cpp:984)
ERROR: Cannot open file 'res://.import/senseless3.ogg-29b41185e2b47b1887b97edb51fd486d.oggstr'.
   at: get_dependencies (core/io/resource_format_binary.cpp:984)
ERROR: Cannot open file 'res://.import/senseless4.ogg-cf591cd6a12c32b447a74982292190ea.oggstr'.
   at: get_dependencies (core/io/resource_format_binary.cpp:984)
ERROR: Cannot open file 'res://.import/senseless.ogg-79ba819268f76f9e39e5b09183435f2a.oggstr'.
   at: get_dependencies (core/io/resource_format_binary.cpp:984)
[...]
Godot Engine v3.5.rc8.official.516d6b6ba - https://godotengine.org/
reimport: begin: (Re)Importing Assets steps: 341
[...]
# build proceeds normally at this point
[exited with code 0]

Possibly related to #42923.
Nothing is cached except of the export templates and the Godot binary (since GHA environment is vanilla on every build).
I can provide access to GHA logs if necessary.
Steps to reproduce

Export project with a headless binary in a new Docker container:  $(GODOT_BIN) --no-window --export "Linux/X11" -q
Export will fail with a ~20% chance

Minimal reproduction project
No response

@and3rson Please upload a minimal reproduction project to make this easier to troubleshoot. There's unfortunately no way we can fix this without a minimal reproduction project.

@Calinou I think I've managed to consistently reproduce this issue. It happens when there are a lot of files to be imported. Here's a demo:
test.zip
To test: docker build -t test .
For me it fails with:
WARNING: Scan thread aborted...
     at: _notification (editor/editor_file_system.cpp:1087)
Godot Engine v3.5.rc6.official.f05cecdc4 - https://godotengine.org

Also reproducible with 3.5-stable:
Uploading test-3.5-stable.zip…


Rustup

@bors r+

:pushpin: Commit 631325bf184499ef649b4ebc9b5b1e919f69c741 has been approved by RalfJung
It is now in the queue for this repository.

:hourglass: Testing commit 631325bf184499ef649b4ebc9b5b1e919f69c741 with merge 7ec03299be6eb987c8caba14ec6229442a9936f2...

:sunny: Test successful - checks-actions
Approved by: RalfJung
Pushing 7ec03299be6eb987c8caba14ec6229442a9936f2 to master...


adding coverage report for node cluster & cluster.fork()

I've managed to add coverage to child processes by using

function spawnChild(execPath, args) {
    /*jshint camelcase: false */
    var isIstanbul = process.env.running_under_istanbul;

    if (isIstanbul) {
        var fileName = args[0];
        var rest = args.slice(1);
        args = [
            'node_modules/.bin/istanbul',
            'cover',
            fileName,
            '--report',
            'none',
            '--dir',
            './coverage/' + path.basename(fileName, '.js'),
            '--'
        ].concat(rest);
    }

    return spawn(execPath, args);
}

This works great for getting code coverage for the master process of the Application i'm spawning for my integration tests.
However my application spawns workers with cluster.fork()
I'm not sure how to get instanbul to add coverage to worker processes.
Any suggestions ?

@Raynos please have a look at https://github.com/raszi/node-tmp and the way we handle gathering test coverage from multiple processes. While we are not doing this in "parallel" right now, the implemented mechanisms should suffice.
@gotwarlost basically a usage issue. Perhaps an FAQ would be required?
@gotwarlost is this by any chance a duplicate of #148

There's another tool that instruments child processes for tests ( https://github.com/istanbuljs/nyc )


[SwipeArea] Add SwipeAreaProps

This is my first PR, so please don't judge :)
https://github.com/mui-org/material-ui/issues/13361
@oliviertassinari  Can you please give me the start point? Similar component or something else

[x] I have followed (at least) the PR section of the contributing guide.

@mbrookes can you please check? Thank you


Move to generic RIDs

In .NET Core 2.0, generic RID's should be used to enable broadest reach for the resulting published app. This change just moves all the scripts/projects to use that instead.

Uhh - does that mean with one build we could run (at least the .NET Core part) on any Windows Version that supports .NET Core 2.0? e.g. I build it on a Windows 10 machine, but the target platform is Windows 8.1 - that will work, right?

That's right. One .net core app runs on Win7+. I don't know enough about electron to know if the same is true there.

Thats awesome! The docs should point this more out! Thanks!

Agreed, I'll probably make some PR's to the docs.


关于程序更新的目录变更

更新后程序位置都去了c盘，应该是winget的问题。顺便问问有啥解决办法。 不能保持原目录的话，是个大问题

and please, try posting in English

I used wingetui yesterday, updated some of my programs, and found that the updated program directory was changed to another disk. Inconsistent with the previous program directory. Is this a known issue and is there any fix

Did you change the installation path throught he installer or you manually moved the binaries folder?

no

Which was the original paht and which is the new path?


More detailed error messages required

I was importing prices using price-importer through sphere-node-cli
I got an error: Duplicate price scope: (currency: EUR, country: AT, validFrom: 2015-06-30T22:00:00.000Z, validUntil: 2099-12-30T23:00:00.000Z)
This does not help me much in finding the source of error. Would be good to have more detailed message with details about the product or variant sku.

You just have to print error.body. What you see is error.message. Also not an issue of the sdk.

can u please suggest where this change needs to be made? in the sphere-importer or in the node-cli?

@panshul007
Try it here https://github.com/sphereio/sphere-product-import/blob/master/lib/product-import.coffee#L43
@_processBatches(chunk).then -> cb()
.catch (err) -> cb(err.body)


[theme/styles] Unable to override MuiTableCell padding

demo: https://codesandbox.io/s/vyj481zp05
versions: see demo
I'm doing
const theme = createMuiTheme({
  overrides: {
    MuiTableCell: {
      root: {
        padding: '40px 24px 40px 16px',
        backgroundColor: 'lightblue'
      }
    }
  }
});

but it's injected before other MuiTableCell styles, so it doesn't override

.MuiTableCell-root-37 {
  padding: 40px 24px 40px 16px;
  text-align: left;
  border-bottom: 1px solid
    rgba(235, 235, 235, 1);
  background-color: lightblue;
}
//...
.MuiTableCell-paddingDefault-40 {
  padding: 4px 56px 4px 24px;
}

I am seeing a similar issue but with MuiCardActions-root
overrides: {
    MuiCardActions: {
      root: {
        display: 'flex',
        justifyContent: 'flex-end',
        padding: 0
      },
    }
  },

flex-end and flex are getting applied, but padding is not

For anyone that ends up here trying to override the default padding of a TableCell:
It looks like the CSS class paddingDefault was removed, so you now need to override the padding in the root class of MuiTableCell as @caub  does at the top of this issue.

How does one accomplish this in 2023? Don't see anything in the documentation regarding customizing padding.
Here's my StackOverflow question: https://stackoverflow.com/questions/76986570/in-material-react-table-how-do-i-reduce-the-padding-in-the-table-cells


Added disable state

The component cannot be modified if state is disabled.
Add opacity to 0.6 in case state is disabled

Closed here #4


Could not find package bmartus/laravel-shippo at any version for your minimum-stability (stable). Check the package spelling or your    minimum-stability

I get this when I try to use your package on a real env.
Locally works great

You need to require "shippo/shippo-php": "1.3.0".
Version 1.3.1 has a bug that brakes it.

The issue with 1.3.1 would not cause this. Can you post your composer.json file?


Change type to allow docs_url, redoc_url and openapi_url to be null

According to the docs (and the code) these options should null to disable them:
Path for swagger docs, null: disabled, undefined: /docs

However in the type null is not allowd, causing VScode to complain when setting to null to disable.

Thanks @marceloverdijk


ngx_pagespeed <IP_ADDRESS>-4448 Unable to start scheduler thread

Dear all,
This issue looks alike https://github.com/pagespeed/ngx_pagespeed/issues/824, however, in my case happens when I want to build nginx 1.7.8 / 1.7.9 and ngx_pagespeed in Centos 6.6
Nginx starts as long as there is no "pagespeed" mention in server.conf (or server blocks).
 Unable to start scheduler thread
nginx: master process /usr/local/sbin/nginx -c /etc/nginx/nginx.conf() [0x5064cd]
In audit log:
auid=0 uid=496 gid=495 ses=4 pid=24661 comm="nginx" reason="memory violation" sig=6
Reading various (but still fewer) posts, I understood that the previous versions <IP_ADDRESS> was not working with nginx 1.7.9 so, I tried it with 1.7.8, but the outcome is the same.
nginx version: nginx/1.7.8
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC)
TLS SNI support enabled
configure arguments: --add-module=/usr/local/nginx-1.7.9/ngx_pagespeed-release-<IP_ADDRESS>-beta --prefix=/usr/local/nginx --sbin-path=/usr/local/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/run/nginx.pid --lock-path=/run/lock/subsys/nginx --user=nginx --group=nginx --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-ipv6 --with-http_ssl_module --with-http_realip_module --with-http_sub_module --with-http_dav_module --with-http_gzip_static_module --with-http_stub_status_module --with-file-aio --with-http_spdy_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_perl_module --with-mail --with-mail_ssl_module --with-pcre --with-google_perftools_module --with-debug
I would greatly appreciate a hand of help with this...
Thank you!
Helen

Sorry for this "new issue", I am tired and "jumpy"  (I jumped on this board and asked for help...!)
Ok, my bad... After thinking twice WHY this may happen (aside from any code issues) I have found that grsec denied RWX mmap ... !
Thank you for taking your time and read this!
Helen


namespacesRequired in serverSideTranslations is not type-safe anymore

💥 Regression Report
namespacesRequired type in serverSideTranslations is not constrained by the Namespace anymore. Type-safety achieved by overriding CustomTypeOptions in i18next.d.ts is lost and any string is accepted now.
The change was introduced in this commit.
Note: Don't know the typescript error that the commit fixed, but shouldn't the ElementArrayOrSelf have the following type
type ArrayElementOrSelf<T> =
  T extends Array<infer U>
    ? U[]
    : T; // <-- Not T[] because it's not an identity of T

Last working version
Worked up to version: 13.3.0
Stopped working in version: 14.0.0
Expected behavior
serverSideTranslations.namespacesRequired accepts namespaces only. If no namespace is defined, any string is valid.

Would you like to provide A PR to address this?

Can you try with v14.0.2 ?

Thank you for the quick response. Unfortunately, it still didn't work. I have provided a PR that fixes it.


StabsParser

Hopefully nobody stabs me over this...
With that out of the way I've created a parser for the STABS debug format strings. This will only parse the strings and create the datatypes from the information. An analyzer would be responsible for providing the strings along with the rest of the STABS debug information from the binary formats implementation.
The documentation used while writing this is available here. There were somethings that were not clearly documented but gdb's stabsread.c is well commented so I was able to figure it out.
This still needs more tests and the file path string detection in the parser needs improvement. Unfortunately with my final semester starting tomorrow my time will quickly become limited.
The StabsFullCppTest might not pass without #1448

This looks like a good PR, we need to finish the code review on it.  Apologize it hasn't made it in yet, but we are a bit short staffed.
I'll schedule it to 9.3, since 9.2 is imminent and in internal testing.

This looks like a good PR, we need to finish the code review on it.  Apologize it hasn't made it in yet, but we are a bit short staffed.
I'll schedule it to 9.3, since 9.2 is imminent and in internal testing.

That's perfectly fine. Unfortunately this does fail often. There is an issue with parsing the stabs for classes where methods and members are not properly separated.
The regex is also really gross but I don't know of any good alternative. I did this in 2 weeks over winter break and haven't really touched it since.

Would definitely need someone knowledgable in stabs to review, and if it fails often.  As long as it fails gracefully and keeps what information it can glean from the format.

Would definitely need someone knowledgable in stabs to review, and if it fails often.  As long as it fails gracefully and keeps what information it can glean from the format.

The parser throws a checked exception and types are added to the data type manager as it parses so they are kept. Once it encounters a problem it currently gives up where the problem occurred. It technically could continue as long as the problematic type isn't referenced.

What's the plan for this? This was removed from 9.3 milestone and it's still a draft PR?

What's the plan for this? This was removed from 9.3 milestone and it's still a draft PR?

I will stay as a draft indefinitely. It is in an incomplete state and there are a multitude of bugs and poor design choices. I'm leaving whether or not it is workable up to the devs and if it is not then at least it is here as a reference (even if that reference is for how not to write a stabs parser.)

I will stay as a draft indefinitely. It is in an incomplete state and there are a multitude of bugs and poor design choices.

That's unfortunate. Could it be split into an extension so people can file issues and send PRs to it more easily?
I'd like a short-term solution where this is easily usable (also with Ghidra 10.x) - I'm fine with bugs and don't care too much about design for that.

whether or not it is workable up to the devs

Considering this has been here for more than a year I think it's unlikely that we'll see updates from the Ghidra maintainers.
If this was a separate extension we could potentially benefit from more volunteers doing smaller cleanup until some form of mainline inclusion.

I will stay as a draft indefinitely. It is in an incomplete state and there are a multitude of bugs and poor design choices.

That's unfortunate. Could it be split into an extension so people can file issues and send PRs to it more easily?
I'd like a short-term solution where this is easily usable (also with Ghidra 10.x) - I'm fine with bugs and don't care too much about design for that.

whether or not it is workable up to the devs

Considering this has been here for more than a year I think it's unlikely that we'll see updates from the Ghidra maintainers.
If this was a separate extension we could potentially benefit from more volunteers doing smaller cleanup until some form of mainline inclusion.

@emteere would there be any issue with doing this? I'm not sure if having a separate plugin would hinder merging in the future or anything of that nature.

I think a separate extension might be a good idea. It could be more manageable that way.

I think a separate extension might be a good idea. It could be more manageable that way.

That implies that it is manageable to begin with. STABS is such a horrible format and my use of regex to handle it did not help the situation.

I agree it's a tricky one to handle (in fact, I am not sure it is even possible to interpret correctly in all cases). Yet, objdump can create a quite acceptable C dump of types and function defs. ghidra can parse C header files. Maybe we can combine those two, to avoid extensive regex?
As @emteere said, as long as we can extract some information and ignore the rest, that's already a win.

I agree it's a tricky one to handle (in fact, I am not sure it is even possible to interpret correctly in all cases). Yet, objdump can create a quite acceptable C dump of types and function defs. ghidra can parse C header files. Maybe we can combine those two, to avoid extensive regex?
As @emteere said, as long as we can extract some information and ignore the rest, that's already a win.

It is STABS from old compilers (gccv2) that seems to cause problems.
I had actually been contemplating mentioning the possibility of getting this information from gdb or something now that Ghidra has some debugger support. @d-millar any thoughts on that possibility?


IE mode automation issue

For additional info: The public facing BMV sites seem to work ok with Edge/Chrome, Safari, etc.
The internal sites (the ones that folks are using when you show up at a BMV branch to renew your plates/license, etc. are the problem.  They use specific javascript/etc popups and animations. that rely on IE.  While they run ok in Edge in IE mode from a manual perspective, they do not necessarily behave as expected from an automation perspective.  To automate Edge requires the Edge webdriver, while Edge in IE mode requires the IE (4.x) webdriver.  BMV is looking to eliminate the use of the standalone verion for all manual testing.  I am tasked with emulating the manual experience as closely as possible.  The latest IE webdriver, which is required in order to use Edge in IE mode seems to have some issues with non-standard dropdown menus and text boxes.
I can make most (probably 90%) of the scripts run in straight Edge (or other browsers) but operating in IE mode in Edge requires some additional finessing (I'm maintaining/executing 300+ scripts on a regular basis.  However, the manual testers, and the actual users are operating in Edge/IE mode which means my tests are not that closely resembling actual user interactions.
Note: this is not a Python vs. Java issue.  It appears to be a Selenium issue.
I find that I've been having trouble summarizing the issue(s) but I will try.  In a nutshell, Edge would work for most of the test cases.  However, at least 10 percent of them would require Edge/IE mode.  Edge in IE/mode breaks many of our scripts.  To complicate things, the manual testers and end users are running Edge/IE mode which means that if I'm testing in straight Edge, then I'm not really emulating the user experience, validations, etc.
I can re-work the scripts to run in Edge/IE mode until the developers of the BMV product migrate away from the IE requirements, but it looks like that is not going to happen soon.  I can make it all work, but I am not aware of the original proposed scope or scale of this project.
I'll look forward to input and discussions about this issue.
I’d finally, add some a couple of screenshots that I haven’t shared with the client yet, but thought they may be pertinent and perhaps add to the discussion about running in IE mode in automation vs. manual testing.
The client has indicated that they will be removing IE from their end users’ machines by sometime next week.

https://docs.microsoft.com/en-us/microsoft-edge/webdriver-chromium/ie-mode

Thank you for reaching out and apologies for the delay replying. We recently created a new GitHub repository specifically for reporting automation issues with Edge/IE, sharing feedback, and asking questions: https://github.com/MicrosoftEdge/EdgeWebDriver
Could you please create an issue on that repository instead? We use this one here for documentation changes only.
Thanks! And sorry about the inconvenience.


how to get 256 colors as output?

i am using colorz with pywal. i want to know is it possible and if yes then how to get 256 ANSI colors as output from colorz?

ANSI colors are not supported, since colorz was not expressly built for ANSI. However, you can get 256 colors with -n 256.


Update remote config 5.x,  firebase core 4.x

Because fake_firebase_remote_config <1.0.2 depends on firebase_remote_config >=0.9.0-dev.0 <2.0.0 and fake_firebase_remote_config >=1.0.2 <1.0.3 depends on firebase_remote_config >=0.9.0-dev.0 <3.0.0, fake_firebase_remote_config <1.0.3 requires firebase_remote_config >=0.9.0-dev.0 <3.0.0.
And because fake_firebase_remote_config >=1.0.3 depends on firebase_core >=0.0.1 <3.0.0 and insight_app depends on firebase_core ^3.0.0, every version of fake_firebase_remote_config requires firebase_remote_config >=0.9.0-dev.0 <3.0.0.
So, because insight_app depends on both firebase_remote_config ^5.0.0 and fake_firebase_remote_config any, version solving failed.
exit code 1

In our production project we didn't run into the issue yet, but when we eventually do, I'll fix this immediately! Thanks for the heads up!

@ciriousjoker - Any update on bumping the remote config min version to v5.x? We are restricted with updating our remote config package due to this. 🙈

@Dario-Maselli @dfdgsdfg Sorry for taking so long and thanks for the patience & the reminder. This is now live as of v2.1.0


License summary table

Summary of changes
Created a Statistics popup window with a statistics table that can be opened from File -> Project Statistics. It displays the number of licenses for each source, and totals for each license and source.
How can the changes be tested
You can open the window with an opossum input file.
Tests have been written in src\Frontend\Components\ProjectStatisticsPopup\__tests__\ProjectStatisticsPopup.test.tsx.

A picture of the new popup window.


Preference page for color settings

In order to customize editor,
As a user,
I want to have an preference page
So that i could define my own color settings or select one of the predefined theme.

Fixed in master branch
Available on next christmas 2011 release: 1.0.4


Update KEP

Fix some spelling and typos
Add section on the different types
of client sinks.
Signed-off-by: astoycos<EMAIL_ADDRESS>

merge plz thx stoycos !


User ID when alarm status is changed

Hi again :)
Is there any way that I can get some info about user that changed status of the alarm?
Like on the mobile app?
I do not see any clue that I could use to identify a user.

Hi
the node outputs the full decoded message sent by your alarm system, as a JSON object. You could see in this ibject, if there's the infos you need. If you coudn't find the user, you cannot get it in other ways, sorry.

Hi the node outputs the full decoded message sent by your alarm system, as a JSON object. You could see in this ibject, if there's the infos you need. If you coudn't find the user, you cannot get it in other ways, sorry.

Tnx I will investigate more!
By the way we had some situation so with your system and our DIY sensors we improved situation a little bit.
Someone left alarm disarmed and doors opened and there is no way that we can detect that situation with alarm.
So we created DIY device that is now sending messages if there is no one in space and if alarm is not ON it notify group on telegram ;)
For now it is working flawlessly, but without your system it would not be possible...

Thank you for your feedback and for explaining your job. Much clearer for me now. Thanks!


Upgrade  arrowutils.SortRecord

Followup to #628
This commit enhances arrowutils.SortRecord to support

Multi column sort
Column direction (ascending, descending)
NullFirst (for both ascending and descending)

Also optimizes arrowutils.ReorderRecord to support dictionary columns.

@metalmatze @asubiotto thanks for the feedback, PTAL. I addressed all the comments.
Ignore fix lint commits, the linter action was generating partial recommendations, I had to fight for my life to make it happy.

@asubiotto I addressed your comments PTAL.
NOTE . I have left *OptInt32Builder api comments because changing api or api expectation is sensitive and they will need more context and input from @metalmatze . I can handle whatever feedback in followup PR.  I have also decided to leave benchmark out.

@asubiotto  thanks for the review. I addressed all comments PTAL.
Hopeful we put this into a practical use. Areas I think it will have impact

logictest : we can now build records directly and skip parquet rows construction

in parca

https://github.com/parca-dev/parca/blob/4f536249850d27a79b365d3d796ca8ff692896d5/pkg/parcacol/ingest.go#L63-L107
Now we have a generic builder that constructs arrow records directly, sorting was the only missing piece.

Fantastic work! :100:


Allow to flush without recomputing changeset

For some large transaction I have, I show a human readable summary before flushing the context, so user can manually review and accept changes about to be commited.
for this, I have a makeHumanReadableTextSummary that itself need to computeChangeSets()
sadly, right after human confirmation, em.flush() recompute the changeset despite no modification having taken place.

Describe the solution you'd like
can we have a em.flushWithoutRecomputingChangesets() or em.flush({computeChangeSets: false})
Describe alternatives you've considered
a possible way to do this would be to copy-past the whole code in UnitOfWork.commit and UnitOfWork.doCommit, comment out the single line this.computeChangeSets();, and call that function binding it to my unit of work.
it seems like a very bad idea that will not survive well across releases

Why dont you use a onFlush event instead?

@B4nan I didn't think about it to be honest x)
This being said, it doesn't feel very practical the way I use it.
I use those human readable summaries in different code branches
sometimes several times before actually commiting the transaction,
sometimes in situation where I already know  beforehand that the changes won't be commited.
if I just take the case where a I want to interractively request several human summaries with various focuses may be done in the onFlush, but it would feel a little brittle I think 🤔
it would force to split other scripts in several pieces so it all runs within the onFlush event hook
I also understand why you could prefer to avoid leaking those abstractions, though x)

Can you share some code, I dont really understand what are you actually doing. Because that suggested PR seems weird, the changesets will be cleared once the UoW.commit resolves.


Union type problem with complex hash

This is a bit complex but i'll try to explain.
I have a JSON Api which returns an array of objects (union types) which may contain an array of objects and other types.
[{
  "name": "HAMBURGER M",
  "possible_items": [
    {
      "seq": 350114,
      "display_name_tr": "SPRITE B\u00dcY\u00dcK",
      "display_name_en": "SPRITE LARGE"
    },
    {
      "seq": 350137,
      "display_name_tr": "HOT CHOCOLATE",
      "display_name_en": "HOT CHOCOLATE"
    }
  ]
}]

Here's the code that produces the output
require "kemal"
require "json"
require "pg"

PG_URL = "postgres://serdardogruyol@localhost:5432/kiosk"
DB     = PG.connect PG_URL

alias ReturnType = String | Int32

get "/" do |env|
  env.content_type = "application/json"
  combo_menus = DB.exec("SELECT * FROM combo_menus")
  combo_menus.to_hash.map do |cm|
    combo_menu_hash = {} of String => ReturnType | Array(Hash(String | Symbol, ReturnType))
    possible_items_sql = <<-SQL
      SELECT DISTINCT(mi.seq), micmgm.price, micmgm.is_default,
             its.display_name_tr, its.display_name_en
      FROM combo_menus cm
      INNER JOIN combo_menu_side_group_mappings cmsgm
      ON cm.seq=cmsgm.combo_menu_seq
      INNER JOIN combo_menu_groups cmg
      ON cmg.seq=cmsgm.combo_menu_group_seq
      INNER JOIN menu_item_combo_menu_group_mappings micmgm
      ON micmgm.combo_menu_group_seq=cmsgm.combo_menu_group_seq
      INNER JOIN menu_items mi
      ON mi.seq=micmgm.menu_item_seq
      INNER JOIN item_settings its
      ON mi.seq=its.item_seq
      WHERE cm.seq=#{cm["seq"]}
    SQL
    combo_menu_hash["name"] = cm["name"] as String
    possible_items = DB.exec(possible_items_sql)
    combo_menu_hash["possible_items"] = possible_items.to_hash.map do |pi|
      {"seq": pi["seq"] as Int32, "display_name_tr": pi["display_name_tr"] as String, display_name_en: pi["display_name_en"] as String}
    end
    combo_menu_hash
  end.to_json
end

This works but the database result contains price which is Float32 . That's why i want to use ReturnType as below
alias ReturnType = String | Int32 | Float32

But this fails to compile with
no overload matches 'Hash(String, String | Int32 | Float32 | Array(Hash(String | Symbol, String | Int32 | Float32)))#[]=' with types String, Array(Hash(String | Symbol, String | Int32))
Overloads are:
 - Hash(String, String | Int32 | Float32 | Array(Hash(String | Symbol, String | Int32 | Float32)))#[]=(key : String, value : (String | Int32 | Float32 | Array(Hash(String | Symbol, String | Int32 | Float32))))

    combo_menu_hash["possible_items"] = possible_items.to_hash.map do |pi|

Do i have to explicitly return a Float32value to do this?

I know this won't answer your question, but I wouldn't generate a huge object in memory only to later dump it as json. I would use a JSON::Builder. For example:
require "json"

possible_items = [1, 2, 3]

string = String.build do |io|
  io.json_object do |obj|
    obj.field "name", "name"
    obj.field "possible_items" do
      io.json_array do |array|
        possible_items.each do |item|
          array.push do
            io.json_object do |obj|
              obj.field "seq", item
            end
          end
        end
      end
    end
  end
end
puts string

http://play.crystal-lang.org/#/r/lyb
That's way more efficient and you won't have to deal with types.

I also wouldn't use to_hash (I guess it transforms an sql result set into a hash). That's another memory transformation that you can avoid and by traversing those objects just once you won't have issues with types and it'll be more efficient.

The main issue is that in Ruby we use Hash for everything, and in Crystal it's painful to do that. And that's kind of good, because you'll avoid Hash unless necessary (like, for representing a mapping, not any kind of object) and in the meantime you'll end up with more efficient code.

@asterite Thanks for the good answers but like you said it doesnt directly answer the question.
Apart from JSON, my main question is mostly about union types and i think this is a good case. Do i really have to explicitly return a Float32to satisfy the union?

Oh, I now understand the issue, I think. The problem is that possible_items.to_hash.map { ... } returns an Array(U) where U isn't exactly the same type you said was the key of combo_menu_hash. I reduced the code:
alias ReturnType = String | Int32

combo_menu_hash = {} of String => ReturnType | Array(ReturnType)
combo_menu_hash["foo"] = "bar"
combo_menu_hash["possible_items"] = ["a"] # This is Array(String), not Array(ReturnType)

The solution is to do:
alias ReturnType = String | Int32

combo_menu_hash = {} of String => ReturnType | Array(ReturnType)
combo_menu_hash["foo"] = "bar"

# Now possible items is Array(ReturnType), so we can assign it as a value of combo_menu_hash
possible_items = [] of ReturnType
possible_items << "a"
combo_menu_hash["possible_items"] = possible_items

Alternatively, cast each element to the type you need:
alias ReturnType = String | Int32

combo_menu_hash = {} of String => ReturnType | Array(ReturnType)
combo_menu_hash["foo"] = "bar"

combo_menu_hash["possible_items"] = ["a" as ReturnType] # Now it's an Array(ReturnType)

In your case you'll have to do the same. I guess doing:
combo_menu_hash["possible_items"] = possible_items.to_hash.map do |pi|
  {
    "seq":             pi["seq"] as ReturnType,
    "display_name_tr": pi["display_name_tr"] as ReturnType,
    display_name_en:   pi["display_name_en"] as ReturnType,
  } # Now compiler knows this is Hash(String | Symbol, ReturnType)
end

If the above doesn't work (it might not work because I'm not sure casting a union to another union type works yet) you might need to to (pi["seq"] as Int32) as ReturnType.

Yeah this is just what i needed :+1:
Meanwhile do you think of any better way to handle this kind of situations? Or will there be any improvements in the future ala Crystal 1.0.0 ( I mean lots of casting)

We'll have Array(Object), Hash(String, Object), etc., so you can put any type without any restriction. But when you get a value from there you'll probably have to cast it too. In the case of building a big object and then invoking to_json on it I think there won't be any casts.


Can you lock the bson version?

Thanks a lot. This is a very good project and we are using it.
But when I use lock.json, I meet that the CDN file hash will change always.
Can you lock the bson version like this?
<EMAIL_ADDRESS>

https://github.com/denodrivers/deno_mongo/pull/290
The fixed bson version was rolled back in this issue because the bson.d.ts file provided by skypack failed the type check in deno.
I don’t know if the problem has been resolved

This is really sad news. If you don't care about the bson version, you can try the package I released. It is based on version 4.5.3.
<EMAIL_ADDRESS>
Otherwise, I have to give up lock.json for a while.

@erfanium Have you tried importing on jspm before?

@jiawei397
Do you mean this? #306

@manyuanrong

Have you tried importing on jspm before?

jspm doesn't support .d.ts bundle file, so it doesn't matter to us whether use it or not.
skypack's js bundle for bson is very tiny, so i pick skypack over jspm and esm.sh

@jiawei397 Do you mean this? #306

I got the answer by this: https://github.com/denoland/deno/discussions/12955
I hoped it will work.

yeah, that's it


Advisory improvement for GHSA-jf5r-8hm2-f872

Updates

Affected products
Severity
Summary

Hm, this is odd. @jhutchings1 already submitted the same improvement (#9) to the same advisory. This is bound to cause weird conflicts if/when the duplicate improvements are merged to main.
I suggest doing one or the other of the following:

Prevent improvements to advisories that have improvements already pending. If this is done, I only recommend it as a temporary band-aid.
Make pull requests improving the same advisory have the same base branch. For example, both #9 and this PR could have the same base branch improvements-to-GHSA-jf5r-8hm2-f872. That way merge conflicts can be resolved on the staging branch instead of on main.

Oh, minor tidbit - this is the tab title when on the advisory improvement form...


Problems with training on my own datasets

Dear author：
At present,  I have a batch of data sets to do 3D point cloud detection called center,which does not need to be classified, but only need to identify its location. I generated training and testing files including xxbbox.npy, xxpc.npz, votes.npz according to the format of sunrgbd data.The modifications in the dataset configuration file are as follows：

The parameters set during training are as follows：
--dataset_name center
--max_epoch 90
--nqueries 128
--base_lr 7e-4
--matcher_giou_cost 3
--matcher_cls_cost 1
--matcher_center_cost 5
--matcher_objectness_cost 5
--loss_giou_weight 0
--loss_no_object_weight 0.1
--save_separate_checkpoint_every_epoch -1
--checkpoint_dir outputs/certer_90
The following problems occurred during training：

Do you know the possible causes of the problem？Look forward to your answer.

Parameter setting supplement：
max_epoch ：50
dataset_num_workers：1
batchsize_per_gpu：1

num_semcls needs to be the number of classes you have (1). It is set to 10 in your code snippet.

yes! I also noticed this problem. What does "num_angle_bin " this parameter represent?

I have preliminarily trained 90 epochs with a small amount of data, including 32 training sets and 8 test sets. The result is very poor: loss is about 25. The accuracy and recall rate when the threshold is 0.25 and 0.5 are as follows:

If I want to improve the accuracy and recall rate, in addition to increasing the amount of data in the training and verification set, what parameters need to be adjusted? Or is there anything I need to pay attention to in training my own dataset?

num_angle_bin is used for datasets like SUN RGB-D when the boxes are rotated. For ScanNet, the boxes are axis-aligned, so the angle part is not used. So, if your boxes are not rotated, I would suggest using the ScanNet settings.
When you say 32/8 sets do you mean samples? So your training set has 32 point clouds each with box annotations?
In this case, you should be able to overfit quite well on the training set at least. The mAP and Recall on the training set should be pretty high. In the above screenshot, are you showing the test set AP?
To improve performance, I would try to debug which loss is highest - is it a problem in predicting the class or the location of the bounding box. If it is location - you can debug whether its the center position, box dimensions or (if applicable) box rotation. The other parameter which might be worth changing, since you only have 1 object class is
https://github.com/facebookresearch/3detr/blob/main/main.py#L96 - it balances background/foreground loss weight. Increasing/decreasing it might be helpful depending on how many boxes you have per point cloud.

Hi @liudaxia96
I haven't seen this error. It seems to be raise in tensorboardX. Could you try running the code without tensorboard logging?

Hello @imisra @liudaxia96,
First Thanks to the Author for this awesome work.
If you don't mind guide me or give me some help on how to use my own data. how to integrate it with one class and with multiple classes.
I have prepared my data in Sunrgbd format and I have used it with Votenet.
I want to use the 3detr mode on my data and then make an inference function for real-time. to test if 3detr will perform better in real-time.
thank you in advance.

I have preliminarily trained 90 epochs with a small amount of data, including 32 training sets and 8 test sets. The result is very poor: loss is about 25. The accuracy and recall rate when the threshold is 0.25 and 0.5 are as follows:
If I want to improve the accuracy and recall rate, in addition to increasing the amount of data in the training and verification set, what parameters need to be adjusted? Or is there anything I need to pay attention to in training my own dataset?

Hi, I also come across the same probelm, have you solved it now? I am very worried about it. Thanks in advance.


Tracebacks can't load code blocks with html references

Environment data

VS Code version: 1.82.0-insider (Universal). Commit: a0377f0c51dbb2d3188565cdf35e89929f864e65
Jupyter Extension version (available under the Extensions sidebar): v2023.8.1002381100
Python Extension version (available under the Extensions sidebar): v2023.15.12361009
OS (Windows | Mac | Linux distro) and version: Mac Ventura 13.4
Python and/or Anaconda version: micromamba python version 3.10.12
Type of virtual environment used (N/A | venv | virtualenv | conda | ...): conda/mamba
Jupyter server running: Local + Remote (broken on both)

Expected behaviour
Tracebacks looks reasonable
Actual behaviour

Copy-pasteable code:
ImportError                               Traceback (most recent call last)
[/Users/alex/creyon/experiments/2023-00079_calciumexp/notebooks/_.py](https://file+.vscode-resource.vscode-cdn.net/Users/alex/creyon/experiments/2023-00079_calciumexp/notebooks/_.py) in line 2
      1](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/notebooks/_.py?line=0%27%3E1%3C/a%3E) #%%
----> 2](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/notebooks/_.py?line=1%27%3E2%3C/a%3E) from utils import DataLoader, DataPuller
      3](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/notebooks/_.py?line=2%27%3E3%3C/a%3E) import pandas as pd
      4](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/notebooks/_.py?line=3%27%3E4%3C/a%3E) from pathlib import Path

File [~/creyon/experiments/2023-00079_calciumexp/notebooks/utils.py:3](https://file+.vscode-resource.vscode-cdn.net/Users/alex/creyon/experiments/2023-00079_calciumexp/~/creyon/experiments/2023-00079_calciumexp/notebooks/utils.py:3)
      1](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/notebooks/utils.py?line=0%27%3E1%3C/a%3E) from collections import defaultdict
      2](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/notebooks/utils.py?line=1%27%3E2%3C/a%3E) from tqdm import tqdm
----> 3](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/notebooks/utils.py?line=2%27%3E3%3C/a%3E) from caiman.source_extraction.cnmf.deconvolution import (
      4](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/notebooks/utils.py?line=3%27%3E4%3C/a%3E)     constrained_oasisAR2,
      5](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/notebooks/utils.py?line=4%27%3E5%3C/a%3E)     estimate_parameters,
      6](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/notebooks/utils.py?line=5%27%3E6%3C/a%3E) )
      7](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/notebooks/utils.py?line=6%27%3E7%3C/a%3E) from peakutils import baseline
      8](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/notebooks/utils.py?line=7%27%3E8%3C/a%3E) import sys

File [~/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/source_extraction/cnmf/__init__.py:3](https://file+.vscode-resource.vscode-cdn.net/Users/alex/creyon/experiments/2023-00079_calciumexp/~/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/source_extraction/cnmf/__init__.py:3)
      1](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/source_extraction/cnmf/__init__.py?line=0%27%3E1%3C/a%3E) #!/usr/bin/env python
----> 3](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/source_extraction/cnmf/__init__.py?line=2%27%3E3%3C/a%3E) from . import utilities
      4](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/source_extraction/cnmf/__init__.py?line=3%27%3E4%3C/a%3E) from . import cnmf
      5](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/source_extraction/cnmf/__init__.py?line=4%27%3E5%3C/a%3E) from . import deconvolution

File [~/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/source_extraction/cnmf/utilities.py:37](https://file+.vscode-resource.vscode-cdn.net/Users/alex/creyon/experiments/2023-00079_calciumexp/~/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/source_extraction/cnmf/utilities.py:37)
     33](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/source_extraction/cnmf/utilities.py?line=32%27%3E33%3C/a%3E) from typing import List
     34](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/source_extraction/cnmf/utilities.py?line=33%27%3E34%3C/a%3E) # https://github.com/constantinpape/z5/issues/146
     35](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/source_extraction/cnmf/utilities.py?line=34%27%3E35%3C/a%3E) #import z5py
---> 37](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/source_extraction/cnmf/utilities.py?line=36%27%3E37%3C/a%3E) from .initialization import greedyROI
     38](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/source_extraction/cnmf/utilities.py?line=37%27%3E38%3C/a%3E) from ...base.rois import com
     39](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/source_extraction/cnmf/utilities.py?line=38%27%3E39%3C/a%3E) from ...mmapping import parallel_dot_product, load_memmap

File [~/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/source_extraction/cnmf/initialization.py:37](https://file+.vscode-resource.vscode-cdn.net/Users/alex/creyon/experiments/2023-00079_calciumexp/~/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/source_extraction/cnmf/initialization.py:37)
     34](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/source_extraction/cnmf/initialization.py?line=33%27%3E34%3C/a%3E) from typing import List
     35](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/source_extraction/cnmf/initialization.py?line=34%27%3E35%3C/a%3E) import warnings
---> 37](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/source_extraction/cnmf/initialization.py?line=36%27%3E37%3C/a%3E) import caiman
     38](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/source_extraction/cnmf/initialization.py?line=37%27%3E38%3C/a%3E) from .deconvolution import constrained_foopsi
     39](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/source_extraction/cnmf/initialization.py?line=38%27%3E39%3C/a%3E) #from .utilities import fast_graph_Laplacian_patches

File [~/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/__init__.py:4](https://file+.vscode-resource.vscode-cdn.net/Users/alex/creyon/experiments/2023-00079_calciumexp/~/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/__init__.py:4)
      1](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/__init__.py?line=0%27%3E1%3C/a%3E) #!/usr/bin/env python
      3](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/__init__.py?line=2%27%3E3%3C/a%3E) import pkg_resources
----> 4](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/__init__.py?line=3%27%3E4%3C/a%3E) from .base.movies import movie, load, load_movie_chain, _load_behavior
      5](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/__init__.py?line=4%27%3E5%3C/a%3E) from .base.timeseries import concatenate
      6](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/__init__.py?line=5%27%3E6%3C/a%3E) from .cluster import start_server, stop_server

File [~/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/base/movies.py:57](https://file+.vscode-resource.vscode-cdn.net/Users/alex/creyon/experiments/2023-00079_calciumexp/~/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/base/movies.py:57)
     54](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/base/movies.py?line=53%27%3E54%3C/a%3E) from .traces import trace
     56](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/base/movies.py?line=55%27%3E56%3C/a%3E) from ..mmapping import load_memmap
---> 57](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/base/movies.py?line=56%27%3E57%3C/a%3E) from ..utils import visualization
     58](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/base/movies.py?line=57%27%3E58%3C/a%3E) from .. import summary_images as si
     59](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/base/movies.py?line=58%27%3E59%3C/a%3E) from ..motion_correction import apply_shift_online, motion_correct_online

File [~/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/utils/visualization.py:33](https://file+.vscode-resource.vscode-cdn.net/Users/alex/creyon/experiments/2023-00079_calciumexp/~/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/utils/visualization.py:33)
     30](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/utils/visualization.py?line=29%27%3E30%3C/a%3E) import functools as fct
     32](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/utils/visualization.py?line=31%27%3E32%3C/a%3E) from ..base.rois import com
---> 33](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/utils/visualization.py?line=32%27%3E33%3C/a%3E) from ..summary_images import local_correlations
     35](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/utils/visualization.py?line=34%27%3E35%3C/a%3E) try:
     36](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/utils/visualization.py?line=35%27%3E36%3C/a%3E)     cv2.setNumThreads(0)

File [~/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/summary_images.py:22](https://file+.vscode-resource.vscode-cdn.net/Users/alex/creyon/experiments/2023-00079_calciumexp/~/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/summary_images.py:22)
     20](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/summary_images.py?line=19%27%3E20%3C/a%3E) import caiman as cm
     21](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/summary_images.py?line=20%27%3E21%3C/a%3E) from caiman.source_extraction.cnmf.pre_processing import get_noise_fft
---> 22](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/summary_images.py?line=21%27%3E22%3C/a%3E) from caiman.source_extraction.cnmf.utilities import get_file_size
     24](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/summary_images.py?line=23%27%3E24%3C/a%3E) def max_correlation_image(Y, bin_size: int = 1000, eight_neighbours: bool = True, swap_dim: bool = True) -> np.ndarray:
     25](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/summary_images.py?line=24%27%3E25%3C/a%3E)     """Computes the max-correlation image for the input dataset Y with bin_size
     26](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/summary_images.py?line=25%27%3E26%3C/a%3E)
     27](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/summary_images.py?line=26%27%3E27%3C/a%3E)     Args:
   (...)
     44](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/summary_images.py?line=43%27%3E44%3C/a%3E)             max correlation image
     45](file:///Users/alex/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/summary_images.py?line=44%27%3E45%3C/a%3E)     """

ImportError: cannot import name 'get_file_size' from partially initialized module 'caiman.source_extraction.cnmf.utilities' (most likely due to a circular import) (/Users/alex/creyon/experiments/2023-00079_calciumexp/pipelines/CaImAn/caiman/source_extraction/cnmf/utilities.py)

Steps to reproduce:
Not sure how to reproduce from scratch - this started happening for me about a week ago. Tracebacks are broken across all files, with both .py files and .ipynb files (.py using jupyter interactive mode with the #%% functionality)
Logs
14:26:09.655 [warn] StdErr from Kernel Process ~/mambaforge/lib/python3.10/site-packages/traitlets/traitlets.py:2499: FutureWarning: Supporting extra quotes around Bytes is deprecated in traitlets 5.0. Use '9ad056a4-187c-4f90-b1af-29de322e4648' instead of 'b"9ad056a4-187c-4f90-b1af-29de322e4648"'.
  warn(
14:26:09.940 [info] Generated code for 1 = <ipython-input-1-944b43cc588e> with 4 lines
14:26:09.957 [info] Kernel acknowledged execution of cell 1 @<PHONE_NUMBER>956
14:26:50.471 [info] End cell 1 execution @<PHONE_NUMBER>467, started @<PHONE_NUMBER>956, elapsed time = 40.511s
14:26:50.471 [warn] Cancel all remaining cells due to cancellation or failure in execution
14:27:15.058 [info] Handle Execution of Cells 2 for /Interactive-1.interactive
14:27:15.071 [info] Kernel acknowledged execution of cell 2 @<PHONE_NUMBER>065
14:27:16.893 [info] End cell 2 execution @<PHONE_NUMBER>891, started @<PHONE_NUMBER>065, elapsed time = 1.826s
14:27:21.255 [info] Generated code for 3 = <ipython-input-3-944b43cc588e> with 4 lines
14:27:21.259 [info] Kernel acknowledged execution of cell 3 @<PHONE_NUMBER>257
14:27:21.850 [info] End cell 3 execution @<PHONE_NUMBER>848, started @<PHONE_NUMBER>257, elapsed time = 0.591s
14:27:21.850 [warn] Cancel all remaining cells due to cancellation or failure in execution
14:30:28.952 [info] Handle Execution of Cells 4 for /Interactive-1.interactive
14:30:28.970 [info] Kernel acknowledged execution of cell 4 @<PHONE_NUMBER>960
14:30:29.009 [info] End cell 4 execution @<PHONE_NUMBER>007, started @<PHONE_NUMBER>960, elapsed time = 0.047s
14:30:29.009 [warn] Cancel all remaining cells due to cancellation or failure in execution
14:30:33.024 [info] Handle Execution of Cells 5 for /Interactive-1.interactive
14:30:33.027 [info] Kernel acknowledged execution of cell 5 @<PHONE_NUMBER>025
14:30:33.168 [info] End cell 5 execution @<PHONE_NUMBER>167, started @<PHONE_NUMBER>025, elapsed time = 0.142s
14:30:36.301 [info] Handle Execution of Cells 6 for /Interactive-1.interactive
14:30:36.307 [info] Kernel acknowledged execution of cell 6 @<PHONE_NUMBER>303
14:30:36.310 [info] End cell 6 execution @<PHONE_NUMBER>308, started @<PHONE_NUMBER>303, elapsed time = 0.005s
14:33:11.847 [info] Generated code for 7 = <ipython-input-7-944b43cc588e> with 4 lines
14:33:11.858 [info] Kernel acknowledged execution of cell 7 @<PHONE_NUMBER>853
14:33:12.351 [info] End cell 7 execution @<PHONE_NUMBER>349, started @<PHONE_NUMBER>853, elapsed time = 0.496s
14:33:12.351 [warn] Cancel all remaining cells due to cancellation or failure in execution

I have same problem 🫠
Still don't know how to fix it

Had the same issue. Downgrading to VSCode 1.81.1 fixed it so the problem might be with VSCode itself

@omicron-8 Thanks a lot! My problem got fix!

same problem as of 1.82.1 which installed for me a couple days ago

Seems fixed in 1.82.2?

yes, fixed in 1.82.2
https://github.com/microsoft/vscode/issues/192605


Preload many-to-many somehow using the id of the pivot table

So I have users and groups with a many-to-many relationship.
db.Preload("Groups").First(&user, 1)
and do user.Groups the ids of the groups are weirdly not the ids i'm seeing in the database. Instead, they are the primary key ids of the group_users table records. (The relationship record ids). Which is extremely odd.
I'm assuming there is some weird stuff going on in the preload many-to-many relationship code.

Hit this too. The workaround is avoiding using id as PK for join tables.

Hi @faeronsayn
This issue should been fixed, thank you for your report.


Add Cesium3DTileset.pickPrimitive

Adds option to pass a primitive to Cesium3DTileset constructor for rendering primitives during the pick pass.

Thanks for the pull request @ebogo1!

:heavy_check_mark: Signed CLA found.
:grey_question: Unit tests were not updated.

Make sure you've updated tests to reflect your changes, added tests for any new code, and ran the code coverage tool.

Reviewers, don't forget to make sure that:

[ ] Cesium Viewer works.
[ ] Works in 2D/CV.
[ ] Works (or fails gracefully) in IE11.

@lilleyse Should be ready after 7d46b8b.


Update CodeCov config to try to reduce errors

Summary of changes
Asana Ticket: Tech Debt | Update CodeCov config to try to reduce errors
Also decided to update excoveralls on the off chance that it might improve coverage reporting.

Closing this for now... it's expected we'll stop using CodeCov soon anyway


could not determine kind of name for C.pulsar_configure_set_negative_ack_redelivery_delay_ms

Describe the bug
When I upgrade my app to use the latest pulsar 2.3.1, compile report this error:
/home/chris/.gvm/pkgsets/go1.12.1/global/pkg/mod/github.com/apache/pulsar/pulsar-client-go@v0.0.0-20190416000109-76aacd3c3477/pulsar/c_consumer.go:101:3: could not determine kind of name for C.pulsar_conf
igure_set_negative_ack_redelivery_delay_ms
/home/chris/.gvm/pkgsets/go1.12.1/global/pkg/mod/github.com/apache/pulsar/pulsar-client-go@v0.0.0-20190416000109-76aacd3c3477/pulsar/c_consumer.go:263:2: could not determine kind of name for C.pulsar_cons
umer_negative_acknowledge
/home/chris/.gvm/pkgsets/go1.12.1/global/pkg/mod/github.com/apache/pulsar/pulsar-client-go@v0.0.0-20190416000109-76aacd3c3477/pulsar/c_consumer.go:268:2: could not determine kind of name for C.pulsar_cons
umer_negative_acknowledge_id
Screenshots

Desktop (please complete the following information):

MacOS
Ubuntu

@chrislearn Which tag are you pulling of the Go code? and which version of libpulsar C++ library do you have installed?
It looks like this is the code from master, though the libpulsar library is 2.3.1.

I use latest libpulsar C++ library, 2.3.1
I use go module to install go client, but when I try to use go get<EMAIL_ADDRESS>to install v2.3.1, it will report error:
go get<EMAIL_ADDRESS>unknown revision pulsar-client-go/v2.3.1
So I use this command to install go client from master:
go get github.com/apache/pulsar/pulsar-client-go

The tag is there though.. https://github.com/apache/pulsar/tree/v2.3.1/pulsar-client-go
you can work around by doing:
cd ~/go/src/github.com/apache/pulsar/pulsar-client-go/
git co v2.3.1

@merlimat You mean I need to checkout it manually. It is not supports go module?

I think the problem is you’re trying to fetch a specific tad with go get which I’m not sure it supported (by Go get).
Have you tried to use
$ dep ensure -add<EMAIL_ADDRESS>
Like explained on https://pulsar.apache.org/docs/en/client-libraries-go/

@merlimat go supports version tag in go get.
https://github.com/golang/go/wiki/Modules
My project use go module and I want to change it to use dep.

I encounter the same errors with the client-cpp 2.3.1.
Fixing the pulsar-client-go version with require github.com/apache/pulsar/pulsar-client-go v2.3.1 in the go.mod throw me the same error:
go: errors parsing go.mod:
/home/alessio/Projects/go/src/stream-dns/go.mod:5: invalid module version "v2.3.1": unknown revision pulsar-client-go/v2.3.1

Desktop:

Linux
arch and ubuntu

@chrislearn @merlimat Do you have any idea how to solve go mod issue mentioned by @NotBad4U ? From official documentation, it never mentions about it, but instead only go get and dep.

Hi @chrislearn @merlimat @NotBad4U
Any update one this issues? We meet the similar problem, especially unknown go modules for Pulsar 2.3.1.
Does anyone use go mod to successfully download/install Pulsar go client?
Thanks very much!

@simonliangnarvar
If the library's version is v1.x.x, I think add a version tag v1.x.x in git repository can let it supports go module.
But if the library's version is v2 or higher, according official documention, we need to change major branch or use subdirectory.
https://github.com/golang/go/wiki/Modules#releasing-modules-v2-or-higher
https://github.com/golang/go/wiki/Modules#semantic-import-versioning
https://golang.org/cmd/go/#hdr-Module_compatibility_and_semantic_versioning

I got it work via...
# latest commit in the branch 2.3 branch
# https://github.com/apache/pulsar/commits/branch-2.3

# which is: 1f4a836a46483db408e0bf39903215974262d946

# install 2.3.1
 brew install libpulsar

# get the go-client module
go get github.com/apache/pulsar/pulsar-client-go@1f4a836a46483db408e0bf39903215974262d946

$ go run main.go
2019/05/16 13:21:59.388 c_client.go:68: [info] INFO  | ClientImpl:492 | Closing Pulsar client

Hi :smile:
any update one this issues?

+1

I solved the problem by removing "HINT_ANDROID_SEPARATE_MOUSE_AND_TOUCH         = C.SDL_HINT_ANDROID_SEPARATE_MOUSE_AND_TOUCH         // specifies a variable to control whether mouse and touch events are to be treated together or separately" in the file :
C:\Users\lbaha\go\src\github.com\veandco\go-sdl2\sdl\hint.go

Can you explain the link between HINT_ANDROID_SEPARATE_MOUSE_AND_TOUCH and the compilation errors: could not determine kind of name for C.pulsar_... @laurent75019 ? :thinking:

Hello ! Any update on this one ?

@NotBad4U can you provide more info for the issue, e.g:

OS: Mac OS or Linux
CPP Client Version:
CGO client version:
Go Version:
so on..

This information can help me reproduce the problem better, thanks.

@NotBad4U Any update on this issue?


[3.0] Change @resource annotation to @group

As proposed in #79.
@group is more accurate and doesn't cause any known conflicts

Sure. I think it's going to be a find-and-replace. And update the tests
too.

Done in #371


Add support for ImageOverlay

See http://leafletjs.com/reference.html#imageoverlay

This maps the bounding box needed to place an L.ImageOverlay on a Leaflet.map to the StructuredValue of type GeoShape and into its "box" property and into text as specified on the website:

meta itemprop="box" content="Latitude,Longitude Latitude, Longitude"


Matching logic needs to be updated.

Brief description of your issue
Several packages aren't correctly being matched for several command flows.
Before we had the "displayName" key available in the manifest, we had to try and match the "packageName" in the manifest against the "displayName" in the registry.
Now we need to change the behavior so that when the "displayName" key is present in the manifest WinGet will stop trying to find a match by dropping the values in parenthesis at the end of the registry key mapped to the Windows Apps & Features "displayName".
Steps to reproduce
This is only one example of how this bug manifests:
This exact example was reported by @K8-and-a-half-1000
PS C:\> winget install -e --id Microsoft.VCRedist.2012.x86; winget install -e --id Microsoft.VCRedist.2012.x64
Found Microsoft Visual C++ 2012 Redistributable (x86) [Microsoft.VCRedist.2012.x86] Version 11.0.61030.0
This application is licensed to you by its owner.
Microsoft is not responsible for, nor does it grant any licenses to, third-party packages.
Downloading https://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x86.exe
  ██████████████████████████████  6.25 MB / 6.25 MB
Successfully verified installer hash
Starting package install...
Successfully installed
Found an existing package already installed. Trying to upgrade the installed package...
No applicable upgrade found.

In this example, WinGet installs the right package "Microsoft Visual C++ 2012 Redistributable (x86)", but during the subsequent install of "Microsoft Visual C++ 2012 Redistributable (x64)", the previous package is a false positive match leading to the upgrade flow for the "(x86)" which is already up to date.
Expected behavior
When a manifest contains the "displayName" key, the heuristics trying to match the "packageName" with the installed packages "displayName" should be ignored.
Actual behavior
False positives matching the wrong package are occurring.
Environment
Windows Package Manager (Preview) v1.5.441-preview

I'll update this list with candidates that may be resolved when this issue is fixed:

https://github.com/microsoft/winget-cli/issues/2994

I may have a similar issue. But my issue may contain another issue inside of it. Anyways. My issue is that I have Firefox installed. I then ran winget upgrade. It then said that there was an update to Firefox. So I did winget upgrade Mozilla.Firefox. It did it's thing. I then opened Firefox and saw that it had been updated. I then ran winget upgrade again. I then got
PS C:\Users\xx> winget upgrade
Name                        Id              Version Available Source
--------------------------------------------------------------------
Mozilla Firefox (x64 en-US) Mozilla.Firefox 110.0   110.0.1   winget
1 upgrades available.

So I ran the upgrade command for Firefox again, and I then got
PS C:\Users\xx> winget upgrade Mozilla.Firefox
No installed package found matching input criteria.

I am not sure of the issue. If it matters, I had Firefox installed on my internal HDD and not my internal SSD. I then uninstalled it and then reinstalled it on my SSD. I forgot if I used Winget to remove and then reinstall it or not. Not sure if that matters.

Check to see if you have more than one entry in Windows Apps & Features. That's often a source of the complexity. If WinGet sees multiple results it doesn't know which one to act on.
Sometimes built in "upgraders" also don't modify the "displayVersion" key used in Windows Apps & Features. It would appear as an earlier version is installed, which is also a reason why WinGet would show an upgrade available.
You could see version 1.0 in Windows Apps & Features, but when you look at the "about" in the application, you would see the newer version.

I do have two entries for Mozilla.Firefox. However, even when I uninstalled it via Settings > Apps. There are still two entries in the Apps section. I then still have the same issue I had before with winget

If you removed both and the entries are still present, I'd suspect the installer/uninstaller isn't cleaning up the entries. WinGet will still have problems if there are erroneous entries. You may need to manually remove the entries.

#3053 This might be related

When a manifest contains the "displayName" key, the heuristics trying to match the "packageName" with the installed packages "displayName" should be ignored.

Maybe we should completely ignore the heuristics if we have any ARP data on the manifest at all. If we have ARP data, we know exactly what we should find, so anything different wouldn't be the same app regardless of how similar it is

Maybe we should completely ignore the heuristics if we have any ARP data on the manifest at all.

For your consideration, it would help if the -e always ignored heuristics, so the result is deterministic.
An clear error is preferred instead of an unclear matching.

It also appears that this bug MIGHT be blocking install of other apps. MS edge needs to be updated. Winget sees the update but the update is NOT completed.

Another app is also having the same problem. While I am testing on it, It look like it ran into this problem. "SamuelElliott.NintendoSwitchOnline"

This is getting ridiculous.

I saw some of the file have AppandFeaturesEntries:
Look at the following cases 0 file inside the setup which is InstallerData.
Rename 0 file to 0.xml.
Open it by using Excel.
It might some of the setup contains InstallerData.
Example Like ADK, ADKWinPEAddon, SDK, WDK, Dotnet

Can we please get an update that this is actually being worked on? The lack of proper matching makes Winget almost unusable. There are many features that I'd like to see that are still missing, but to me, version management is essential to a package manager, even more so than a good searching algorithm.

Currently, Winget seems to completely uninstall "Visual C++ 2005 redistributable x64 8.0.61000" and then reinstall "Visual C++ 2005 redistributable x86 8.0.61001" which is already up-to-date. I think the x64 one is in fact also the latest version, but Winget is confused because the x86 version has a higher version number.


Relocate keystone oslo_middleware config

This was added inside the federation if block, so it was not getting
written out on non-federated installs.

LGTM. Sorry for the regression.

retest


Fix resource() usage in tests preprocessor.

Coverage decreased (-24.3%) to 18.49% when pulling 3bc13c1621a3d90d7e25bcf5002aecaf54519b13 on fix_test_preprocessor into 221b1a8bde3a47f0ef19f26ba9ca0a9a729bf2a7 on 0.4-stable.


[UX] Auto collapse state for both panels

Auto collapse state for both panels when no widget is selected
Refer -
Doc - https://quip-amazon.com/5U2EAtnId09B/Centurion-UX-Pre-GA
Design - https://www.figma.com/file/pmsbdMcD7ieVWRFMNxStIi/VoT--AppKit-%26-Centurion?type=design&node-id=348%3A423854&mode=design&t=1zPNBiyI9sH6mezN-1


MWPW-137866: Web component-based Merch Card in Milo

MWPW-137866: Introduces an all-new merch card block built using Lit Web Components.
Introduces Lit library and merch-card lit-based dependencies inside /deps folder in Milo.
What's new:

Significantly faster performance in Merch Card.
A new text style-based authoring approach for easier and more consistent authoring of Merch Cards.
Backward compatibility with legacy Merch Card.
New Catalog Card.
New column grid designation in section metadata (one merch card, two merch cards, three merch cards, four merch cards).
More consistent layout.
Fully responsive.
Supports cards inside Fragments.
Fixes other minor issues in Segment, Special Offers and Plans card.

The differentiator between the old merch card and the new one will be the section metadata column grid designation.
Old merch card uses: One up, two up, three up, four up.
New merch card uses: one merch card, two merch cards, three merch cards, four merch cards.
New text-style based approach
To better align with Consonant designs and have authored cards be more consistent, this change introduces a new text-style based approach mapping Sharepoint headings (Heading 1, Heading 2, Heading 3, Heading 4, Heading 5) mapped to Merch Card Consonant styles.
The mapping is the following:

H5: Detail M
H4: Body XXS
H3: Heading XS
H2: Heading M
H1: heading L
Paragraph: Body XS

Catalog Card as an example:

Resolves: MWPW-137866
Test URLs:

Before: https://main--cc--adobecom.hlx.page/drafts/axel/legacy-merch-card-kitchen-sink?milolibs=mwpw-137866--milo--axelcureno
After: https://main--cc--adobecom.hlx.page/drafts/axel/merch-card-kitchen-sink?milolibs=mwpw-137866--milo--axelcureno
Backward compatibility scenario to show no impact on existing merch card block: https://mwpw-137866--milo--axelcureno.hlx.page/docs/library/kitchen-sink/merch-card

PR needs some brush-ups:

lint fixes
both Before/After links are broken ('?' is there twice) so perf check didn't run

@Axelcureno also just noticed that prices look much smaller in live pages with new changes: Before After

@3ch023 all three items fixed.

Prices are not in the correct slot and do not have the font sizes etc...

vs

plans card body-xxs has extra bottom-padding

prices in different variants such as merch pods are mis placed.

cc: @Axelcureno

@Axelcureno : can you please review the code that codecov is complaining about? Also, I think the LH score is being run against milo only URLs found in the description. Can you please provide milo before and after test URLs with ?martech=off to run LH scores against an actual test page?


Unchecking "Allow people to join" option should only hide the Join button

Like this:

hello, when i join game rich presence does show in discord but it doesnt show what game am playing and the join button doesnt show up


version 4

👷 Deploy Preview for analyticalnutrition processing.
🔨 Explore the source changes: b2603a9f862facb2bb387b8dcb9d602509a583cf
🔍 Inspect the deploy log: https://app.netlify.com/sites/analyticalnutrition/deploys/6112b1a56c15340007bb6184


Add proxies examples

@anthonychu,
Thanks for your contribution as a Microsoft full-time employee or intern. You do not need to sign a CLA.
Thanks,
Microsoft Pull Request Bot

:warning: Validation status: warnings

File
Status
Preview URL
Details

sandbox/snippets/101functions/index.md
:warning:Warning
View
Details

sandbox/snippets/101functions/proxies/index.md
:white_check_mark:Succeeded
View

sandbox/snippets/101functions/proxies/proxies-conditional-responses.md
:white_check_mark:Succeeded
View

sandbox/snippets/101functions/proxies/proxies-mock-api.md
:white_check_mark:Succeeded
View

sandbox/snippets/101functions/proxies/proxies-proxies-json.md
:white_check_mark:Succeeded
View

sandbox/snippets/101functions/proxies/proxies-redirects.md
:white_check_mark:Succeeded
View

sandbox/snippets/101functions/proxies/proxies-variables.md
:white_check_mark:Succeeded
View

sandbox/snippets/101functions/index.md

Line 23: [Warning] Invalid file link:(~/snippets/101functions/hostjson/#configuring-timeout).
Line 24: [Warning] Invalid file link:(~/snippets/101functions/hostjson/#configuring-queues).
Line 29: [Warning] Invalid file link:(~/snippets/101functions/environment-variables/#accessing-environment-variables).
Line 32: [Warning] Invalid file link:(~/snippets/101functions/routes/#controlling-the-route-prefix-with-hostjson).
Line 33: [Warning] Invalid file link:(~/snippets/101functions/routes/#define-the-function-route-with-function-properties).
Line 34: [Warning] Invalid file link:(~/snippets/101functions/routes/#define-the-function-route-in-functionjson).
Line 35: [Warning] Invalid file link:(~/snippets/101functions/routes/#define-the-function-route-in-the-azure-portal).
Line 36: [Warning] Invalid file link:(~/snippets/101functions/routes/#adding-parameters-to-function-routes).
Line 37: [Warning] Invalid file link:(~/snippets/101functions/routes/#making-route-parameters-optional).
Line 40: [Warning] Invalid file link:(~/snippets/101functions/proxies/#using-proxiesjson).
Line 41: [Warning] Invalid file link:(~/snippets/101functions/proxies/#creating-an-http-redirect).
Line 42: [Warning] Invalid file link:(~/snippets/101functions/proxies/#creating-a-mock-api).
Line 43: [Warning] Invalid file link:(~/snippets/101functions/proxies/#returning-custom-responses-based-on-backend-response-codes).
Line 44: [Warning] Invalid file link:(~/snippets/101functions/proxies/#referencing-application-settings).
Line 47: [Warning] Invalid file link:(~/snippets/101functions/logging/#logging-with-ilogger).
Line 48: [Warning] Invalid file link:(~/snippets/101functions/logging/#basic-logging-with-tracewriter).
Line 49: [Warning] Invalid file link:(~/snippets/101functions/logging/#logging-with-a-third-party-logger).
Line 61: [Warning] Invalid file link:(~/snippets/101functions/blob-storage/#blob-trigger-function).
Line 64: [Warning] Invalid file link:(~/snippets/101functions/cosmosdb/#using-documentclient).
Line 65: [Warning] Invalid file link:(~/snippets/101functions/cosmosdb/#retrieve-a-single-document-by-id).
Line 66: [Warning] Invalid file link:(~/snippets/101functions/cosmosdb/#retrieve-a-list-of-documents).
Line 75: [Warning] Invalid file link:(~/snippets/101functions/http/#accessing-query-string-values-in-http-triggers).
Line 76: [Warning] Invalid file link:(~/snippets/101functions/http/#accessing-the-request-body--in-http-triggers).
Line 77: [Warning] Invalid file link:(~/snippets/101functions/http/#restricting-http-verbs-in-in-http-triggers).
Line 78: [Warning] Invalid file link:(~/snippets/101functions/http/#securing-http-triggers-with-security-keys).
Line 79: [Warning] Invalid file link:(~/snippets/101functions/http/#generic-webhook-function).
Line 80: [Warning] Invalid file link:(~/snippets/101functions/http/#github-comment-webhook).
Line 83: [Warning] Invalid file link:(~/snippets/101functions/manual/#manual-c-function).
Line 90: [Warning] Invalid file link:(~/snippets/101functions/queue-storage/#triggering-via-azure-storage-queue).
Line 91: [Warning] Invalid file link:(~/snippets/101functions/queue-storage/#azure-storage-queue-trigger-using-a-poco).
Line 92: [Warning] Invalid file link:(~/snippets/101functions/queue-storage/#retrieving-queue-metadata-from-an-azure-storage-queue-trigger).
Line 93: [Warning] Invalid file link:(~/snippets/101functions/queue-storage/#poison-queue-messages-with-azure-storage-queue-triggers).
Line 94: [Warning] Invalid file link:(~/snippets/101functions/queue-storage/#azure-storage-queue-output-binding).
Line 95: [Warning] Invalid file link:(~/snippets/101functions/queue-storage/#using-icollector-with-azure-storage-queue-bindings).
Line 102: [Warning] Invalid file link:(~/snippets/101functions/table-storage/#table-storage-trigger-function).
Line 105: [Warning] Invalid file link:(~/snippets/101functions/timer/#timer-trigger-function).
Line 119: [Warning] Invalid file link:(~/snippets/101functions/portal/#allowing-http-verbs-in-the-azure-portal).
Line 120: [Warning] Invalid file link:(~/snippets/101functions/portal/#getting-your-function-and-host-keys-in-the-azure-portal).
Line 121: [Warning] Invalid file link:(~/snippets/101functions/portal/#controlling-how-much-your-function-can-run-in-one-day).

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Warnings can be safely discarded. Links work.

:warning: Validation status: warnings

File
Status
Preview URL
Details

sandbox/snippets/101functions/index.md
:warning:Warning
View
Details

sandbox/snippets/101functions/proxies/index.md
:white_check_mark:Succeeded
View

sandbox/snippets/101functions/proxies/proxies-conditional-responses.md
:white_check_mark:Succeeded
View

sandbox/snippets/101functions/proxies/proxies-mock-api.md
:white_check_mark:Succeeded
View

sandbox/snippets/101functions/proxies/proxies-proxies-json.md
:white_check_mark:Succeeded
View

sandbox/snippets/101functions/proxies/proxies-redirects.md
:white_check_mark:Succeeded
View

sandbox/snippets/101functions/proxies/proxies-variables.md
:white_check_mark:Succeeded
View

sandbox/snippets/101functions/index.md

Line 23: [Warning] Invalid file link:(~/snippets/101functions/hostjson/#configuring-timeout).
Line 24: [Warning] Invalid file link:(~/snippets/101functions/hostjson/#configuring-queues).
Line 29: [Warning] Invalid file link:(~/snippets/101functions/environment-variables/#accessing-environment-variables).
Line 32: [Warning] Invalid file link:(~/snippets/101functions/routes/#controlling-the-route-prefix-with-hostjson).
Line 33: [Warning] Invalid file link:(~/snippets/101functions/routes/#define-the-function-route-with-function-properties).
Line 34: [Warning] Invalid file link:(~/snippets/101functions/routes/#define-the-function-route-in-functionjson).
Line 35: [Warning] Invalid file link:(~/snippets/101functions/routes/#define-the-function-route-in-the-azure-portal).
Line 36: [Warning] Invalid file link:(~/snippets/101functions/routes/#adding-parameters-to-function-routes).
Line 37: [Warning] Invalid file link:(~/snippets/101functions/routes/#making-route-parameters-optional).
Line 40: [Warning] Invalid file link:(~/snippets/101functions/proxies/#using-proxiesjson).
Line 41: [Warning] Invalid file link:(~/snippets/101functions/proxies/#creating-an-http-redirect).
Line 42: [Warning] Invalid file link:(~/snippets/101functions/proxies/#creating-a-mock-api).
Line 43: [Warning] Invalid file link:(~/snippets/101functions/proxies/#returning-custom-responses-based-on-backend-response-codes).
Line 44: [Warning] Invalid file link:(~/snippets/101functions/proxies/#referencing-application-settings).
Line 47: [Warning] Invalid file link:(~/snippets/101functions/logging/#logging-with-ilogger).
Line 48: [Warning] Invalid file link:(~/snippets/101functions/logging/#basic-logging-with-tracewriter).
Line 49: [Warning] Invalid file link:(~/snippets/101functions/logging/#logging-with-a-third-party-logger).
Line 61: [Warning] Invalid file link:(~/snippets/101functions/blob-storage/#blob-trigger-function).
Line 64: [Warning] Invalid file link:(~/snippets/101functions/cosmosdb/#using-documentclient).
Line 65: [Warning] Invalid file link:(~/snippets/101functions/cosmosdb/#retrieve-a-single-document-by-id).
Line 66: [Warning] Invalid file link:(~/snippets/101functions/cosmosdb/#retrieve-a-list-of-documents).
Line 75: [Warning] Invalid file link:(~/snippets/101functions/http/#accessing-query-string-values-in-http-triggers).
Line 76: [Warning] Invalid file link:(~/snippets/101functions/http/#accessing-the-request-body--in-http-triggers).
Line 77: [Warning] Invalid file link:(~/snippets/101functions/http/#restricting-http-verbs-in-in-http-triggers).
Line 78: [Warning] Invalid file link:(~/snippets/101functions/http/#securing-http-triggers-with-security-keys).
Line 79: [Warning] Invalid file link:(~/snippets/101functions/http/#generic-webhook-function).
Line 80: [Warning] Invalid file link:(~/snippets/101functions/http/#github-comment-webhook).
Line 83: [Warning] Invalid file link:(~/snippets/101functions/manual/#manual-c-function).
Line 90: [Warning] Invalid file link:(~/snippets/101functions/queue-storage/#triggering-via-azure-storage-queue).
Line 91: [Warning] Invalid file link:(~/snippets/101functions/queue-storage/#azure-storage-queue-trigger-using-a-poco).
Line 92: [Warning] Invalid file link:(~/snippets/101functions/queue-storage/#retrieving-queue-metadata-from-an-azure-storage-queue-trigger).
Line 93: [Warning] Invalid file link:(~/snippets/101functions/queue-storage/#poison-queue-messages-with-azure-storage-queue-triggers).
Line 94: [Warning] Invalid file link:(~/snippets/101functions/queue-storage/#azure-storage-queue-output-binding).
Line 95: [Warning] Invalid file link:(~/snippets/101functions/queue-storage/#using-icollector-with-azure-storage-queue-bindings).
Line 102: [Warning] Invalid file link:(~/snippets/101functions/table-storage/#table-storage-trigger-function).
Line 105: [Warning] Invalid file link:(~/snippets/101functions/timer/#timer-trigger-function).
Line 119: [Warning] Invalid file link:(~/snippets/101functions/portal/#allowing-http-verbs-in-the-azure-portal).
Line 120: [Warning] Invalid file link:(~/snippets/101functions/portal/#getting-your-function-and-host-keys-in-the-azure-portal).
Line 121: [Warning] Invalid file link:(~/snippets/101functions/portal/#controlling-how-much-your-function-can-run-in-one-day).

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

:warning: Validation status: warnings

File
Status
Preview URL
Details

sandbox/snippets/101functions/index.md
:warning:Warning
View
Details

sandbox/snippets/101functions/proxies/index.md
:white_check_mark:Succeeded
View

sandbox/snippets/101functions/proxies/proxies-conditional-responses.md
:white_check_mark:Succeeded
View

sandbox/snippets/101functions/proxies/proxies-mock-api.md
:white_check_mark:Succeeded
View

sandbox/snippets/101functions/proxies/proxies-proxies-json.md
:white_check_mark:Succeeded
View

sandbox/snippets/101functions/proxies/proxies-redirects.md
:white_check_mark:Succeeded
View

sandbox/snippets/101functions/proxies/proxies-variables.md
:white_check_mark:Succeeded
View

sandbox/snippets/101functions/index.md

Line 23: [Warning] Invalid file link:(~/snippets/101functions/hostjson/#configuring-timeout).
Line 24: [Warning] Invalid file link:(~/snippets/101functions/hostjson/#configuring-queues).
Line 29: [Warning] Invalid file link:(~/snippets/101functions/environment-variables/#accessing-environment-variables).
Line 32: [Warning] Invalid file link:(~/snippets/101functions/routes/#controlling-the-route-prefix-with-hostjson).
Line 33: [Warning] Invalid file link:(~/snippets/101functions/routes/#define-the-function-route-with-function-properties).
Line 34: [Warning] Invalid file link:(~/snippets/101functions/routes/#define-the-function-route-in-functionjson).
Line 35: [Warning] Invalid file link:(~/snippets/101functions/routes/#define-the-function-route-in-the-azure-portal).
Line 36: [Warning] Invalid file link:(~/snippets/101functions/routes/#adding-parameters-to-function-routes).
Line 37: [Warning] Invalid file link:(~/snippets/101functions/routes/#making-route-parameters-optional).
Line 40: [Warning] Invalid file link:(~/snippets/101functions/proxies/#using-proxiesjson).
Line 41: [Warning] Invalid file link:(~/snippets/101functions/proxies/#creating-an-http-redirect).
Line 42: [Warning] Invalid file link:(~/snippets/101functions/proxies/#creating-a-mock-api).
Line 43: [Warning] Invalid file link:(~/snippets/101functions/proxies/#returning-custom-responses-based-on-backend-response-codes).
Line 44: [Warning] Invalid file link:(~/snippets/101functions/proxies/#referencing-application-settings).
Line 47: [Warning] Invalid file link:(~/snippets/101functions/logging/#logging-with-ilogger).
Line 48: [Warning] Invalid file link:(~/snippets/101functions/logging/#basic-logging-with-tracewriter).
Line 49: [Warning] Invalid file link:(~/snippets/101functions/logging/#logging-with-a-third-party-logger).
Line 61: [Warning] Invalid file link:(~/snippets/101functions/blob-storage/#blob-trigger-function).
Line 64: [Warning] Invalid file link:(~/snippets/101functions/cosmosdb/#using-documentclient).
Line 65: [Warning] Invalid file link:(~/snippets/101functions/cosmosdb/#retrieve-a-single-document-by-id).
Line 66: [Warning] Invalid file link:(~/snippets/101functions/cosmosdb/#retrieve-a-list-of-documents).
Line 75: [Warning] Invalid file link:(~/snippets/101functions/http/#accessing-query-string-values-in-http-triggers).
Line 76: [Warning] Invalid file link:(~/snippets/101functions/http/#accessing-the-request-body--in-http-triggers).
Line 77: [Warning] Invalid file link:(~/snippets/101functions/http/#restricting-http-verbs-in-in-http-triggers).
Line 78: [Warning] Invalid file link:(~/snippets/101functions/http/#securing-http-triggers-with-security-keys).
Line 79: [Warning] Invalid file link:(~/snippets/101functions/http/#generic-webhook-function).
Line 80: [Warning] Invalid file link:(~/snippets/101functions/http/#github-comment-webhook).
Line 83: [Warning] Invalid file link:(~/snippets/101functions/manual/#manual-c-function).
Line 90: [Warning] Invalid file link:(~/snippets/101functions/queue-storage/#triggering-via-azure-storage-queue).
Line 91: [Warning] Invalid file link:(~/snippets/101functions/queue-storage/#azure-storage-queue-trigger-using-a-poco).
Line 92: [Warning] Invalid file link:(~/snippets/101functions/queue-storage/#retrieving-queue-metadata-from-an-azure-storage-queue-trigger).
Line 93: [Warning] Invalid file link:(~/snippets/101functions/queue-storage/#poison-queue-messages-with-azure-storage-queue-triggers).
Line 94: [Warning] Invalid file link:(~/snippets/101functions/queue-storage/#azure-storage-queue-output-binding).
Line 95: [Warning] Invalid file link:(~/snippets/101functions/queue-storage/#using-icollector-with-azure-storage-queue-bindings).
Line 102: [Warning] Invalid file link:(~/snippets/101functions/table-storage/#table-storage-trigger-function).
Line 105: [Warning] Invalid file link:(~/snippets/101functions/timer/#timer-trigger-function).
Line 119: [Warning] Invalid file link:(~/snippets/101functions/portal/#allowing-http-verbs-in-the-azure-portal).
Line 120: [Warning] Invalid file link:(~/snippets/101functions/portal/#getting-your-function-and-host-keys-in-the-azure-portal).
Line 121: [Warning] Invalid file link:(~/snippets/101functions/portal/#controlling-how-much-your-function-can-run-in-one-day).

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

:warning: Validation status: warnings

File
Status
Preview URL
Details

sandbox/snippets/101functions/index.md
:warning:Warning
View
Details

sandbox/snippets/101functions/proxies/index.md
:white_check_mark:Succeeded
View

sandbox/snippets/101functions/proxies/proxies-conditional-responses.md
:white_check_mark:Succeeded
View

sandbox/snippets/101functions/proxies/proxies-mock-api.md
:white_check_mark:Succeeded
View

sandbox/snippets/101functions/proxies/proxies-proxies-json.md
:white_check_mark:Succeeded
View

sandbox/snippets/101functions/proxies/proxies-redirects.md
:white_check_mark:Succeeded
View

sandbox/snippets/101functions/proxies/proxies-variables.md
:white_check_mark:Succeeded
View

sandbox/snippets/101functions/index.md

Line 23: [Warning] Invalid file link:(~/snippets/101functions/hostjson/#configuring-timeout).
Line 24: [Warning] Invalid file link:(~/snippets/101functions/hostjson/#configuring-queues).
Line 29: [Warning] Invalid file link:(~/snippets/101functions/environment-variables/#accessing-environment-variables).
Line 32: [Warning] Invalid file link:(~/snippets/101functions/routes/#controlling-the-route-prefix-with-hostjson).
Line 33: [Warning] Invalid file link:(~/snippets/101functions/routes/#define-the-function-route-with-function-properties).
Line 34: [Warning] Invalid file link:(~/snippets/101functions/routes/#define-the-function-route-in-functionjson).
Line 35: [Warning] Invalid file link:(~/snippets/101functions/routes/#define-the-function-route-in-the-azure-portal).
Line 36: [Warning] Invalid file link:(~/snippets/101functions/routes/#adding-parameters-to-function-routes).
Line 37: [Warning] Invalid file link:(~/snippets/101functions/routes/#making-route-parameters-optional).
Line 40: [Warning] Invalid file link:(~/snippets/101functions/proxies/#using-proxiesjson).
Line 41: [Warning] Invalid file link:(~/snippets/101functions/proxies/#creating-an-http-redirect).
Line 42: [Warning] Invalid file link:(~/snippets/101functions/proxies/#creating-a-mock-api).
Line 43: [Warning] Invalid file link:(~/snippets/101functions/proxies/#returning-custom-responses-based-on-backend-response-codes).
Line 44: [Warning] Invalid file link:(~/snippets/101functions/proxies/#referencing-application-settings).
Line 47: [Warning] Invalid file link:(~/snippets/101functions/logging/#logging-with-ilogger).
Line 48: [Warning] Invalid file link:(~/snippets/101functions/logging/#basic-logging-with-tracewriter).
Line 49: [Warning] Invalid file link:(~/snippets/101functions/logging/#logging-with-a-third-party-logger).
Line 61: [Warning] Invalid file link:(~/snippets/101functions/blob-storage/#blob-trigger-function).
Line 64: [Warning] Invalid file link:(~/snippets/101functions/cosmosdb/#using-documentclient).
Line 65: [Warning] Invalid file link:(~/snippets/101functions/cosmosdb/#retrieve-a-single-document-by-id).
Line 66: [Warning] Invalid file link:(~/snippets/101functions/cosmosdb/#retrieve-a-list-of-documents).
Line 75: [Warning] Invalid file link:(~/snippets/101functions/http/#accessing-query-string-values-in-http-triggers).
Line 76: [Warning] Invalid file link:(~/snippets/101functions/http/#accessing-the-request-body--in-http-triggers).
Line 77: [Warning] Invalid file link:(~/snippets/101functions/http/#restricting-http-verbs-in-in-http-triggers).
Line 78: [Warning] Invalid file link:(~/snippets/101functions/http/#securing-http-triggers-with-security-keys).
Line 79: [Warning] Invalid file link:(~/snippets/101functions/http/#generic-webhook-function).
Line 80: [Warning] Invalid file link:(~/snippets/101functions/http/#github-comment-webhook).
Line 83: [Warning] Invalid file link:(~/snippets/101functions/manual/#manual-c-function).
Line 90: [Warning] Invalid file link:(~/snippets/101functions/queue-storage/#triggering-via-azure-storage-queue).
Line 91: [Warning] Invalid file link:(~/snippets/101functions/queue-storage/#azure-storage-queue-trigger-using-a-poco).
Line 92: [Warning] Invalid file link:(~/snippets/101functions/queue-storage/#retrieving-queue-metadata-from-an-azure-storage-queue-trigger).
Line 93: [Warning] Invalid file link:(~/snippets/101functions/queue-storage/#poison-queue-messages-with-azure-storage-queue-triggers).
Line 94: [Warning] Invalid file link:(~/snippets/101functions/queue-storage/#azure-storage-queue-output-binding).
Line 95: [Warning] Invalid file link:(~/snippets/101functions/queue-storage/#using-icollector-with-azure-storage-queue-bindings).
Line 102: [Warning] Invalid file link:(~/snippets/101functions/table-storage/#table-storage-trigger-function).
Line 105: [Warning] Invalid file link:(~/snippets/101functions/timer/#timer-trigger-function).
Line 119: [Warning] Invalid file link:(~/snippets/101functions/portal/#allowing-http-verbs-in-the-azure-portal).
Line 120: [Warning] Invalid file link:(~/snippets/101functions/portal/#getting-your-function-and-host-keys-in-the-azure-portal).
Line 121: [Warning] Invalid file link:(~/snippets/101functions/portal/#controlling-how-much-your-function-can-run-in-one-day).

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

:warning: Validation status: warnings

File
Status
Preview URL
Details

sandbox/snippets/101functions/index.md
:warning:Warning
View
Details

sandbox/snippets/101functions/proxies/index.md
:white_check_mark:Succeeded
View

sandbox/snippets/101functions/proxies/proxies-conditional-responses.md
:white_check_mark:Succeeded
View

sandbox/snippets/101functions/proxies/proxies-mock-api.md
:white_check_mark:Succeeded
View

sandbox/snippets/101functions/proxies/proxies-proxies-json.md
:white_check_mark:Succeeded
View

sandbox/snippets/101functions/proxies/proxies-redirects.md
:white_check_mark:Succeeded
View

sandbox/snippets/101functions/proxies/proxies-variables.md
:white_check_mark:Succeeded
View

sandbox/snippets/101functions/index.md

Line 23: [Warning] Invalid file link:(~/snippets/101functions/hostjson/#configuring-timeout).
Line 24: [Warning] Invalid file link:(~/snippets/101functions/hostjson/#configuring-queues).
Line 29: [Warning] Invalid file link:(~/snippets/101functions/environment-variables/#accessing-environment-variables).
Line 32: [Warning] Invalid file link:(~/snippets/101functions/routes/#controlling-the-route-prefix-with-hostjson).
Line 33: [Warning] Invalid file link:(~/snippets/101functions/routes/#define-the-function-route-with-function-properties).
Line 34: [Warning] Invalid file link:(~/snippets/101functions/routes/#define-the-function-route-in-functionjson).
Line 35: [Warning] Invalid file link:(~/snippets/101functions/routes/#define-the-function-route-in-the-azure-portal).
Line 36: [Warning] Invalid file link:(~/snippets/101functions/routes/#adding-parameters-to-function-routes).
Line 37: [Warning] Invalid file link:(~/snippets/101functions/routes/#making-route-parameters-optional).
Line 40: [Warning] Invalid file link:(~/snippets/101functions/proxies/#using-proxiesjson).
Line 41: [Warning] Invalid file link:(~/snippets/101functions/proxies/#creating-an-http-redirect).
Line 42: [Warning] Invalid file link:(~/snippets/101functions/proxies/#creating-a-mock-api).
Line 43: [Warning] Invalid file link:(~/snippets/101functions/proxies/#returning-conditional-responses-based-on-backend-response-codes).
Line 44: [Warning] Invalid file link:(~/snippets/101functions/proxies/#referencing-application-settings).
Line 47: [Warning] Invalid file link:(~/snippets/101functions/logging/#logging-with-ilogger).
Line 48: [Warning] Invalid file link:(~/snippets/101functions/logging/#basic-logging-with-tracewriter).
Line 49: [Warning] Invalid file link:(~/snippets/101functions/logging/#logging-with-a-third-party-logger).
Line 61: [Warning] Invalid file link:(~/snippets/101functions/blob-storage/#blob-trigger-function).
Line 64: [Warning] Invalid file link:(~/snippets/101functions/cosmosdb/#using-documentclient).
Line 65: [Warning] Invalid file link:(~/snippets/101functions/cosmosdb/#retrieve-a-single-document-by-id).
Line 66: [Warning] Invalid file link:(~/snippets/101functions/cosmosdb/#retrieve-a-list-of-documents).
Line 75: [Warning] Invalid file link:(~/snippets/101functions/http/#accessing-query-string-values-in-http-triggers).
Line 76: [Warning] Invalid file link:(~/snippets/101functions/http/#accessing-the-request-body--in-http-triggers).
Line 77: [Warning] Invalid file link:(~/snippets/101functions/http/#restricting-http-verbs-in-in-http-triggers).
Line 78: [Warning] Invalid file link:(~/snippets/101functions/http/#securing-http-triggers-with-security-keys).
Line 79: [Warning] Invalid file link:(~/snippets/101functions/http/#generic-webhook-function).
Line 80: [Warning] Invalid file link:(~/snippets/101functions/http/#github-comment-webhook).
Line 83: [Warning] Invalid file link:(~/snippets/101functions/manual/#manual-c-function).
Line 90: [Warning] Invalid file link:(~/snippets/101functions/queue-storage/#triggering-via-azure-storage-queue).
Line 91: [Warning] Invalid file link:(~/snippets/101functions/queue-storage/#azure-storage-queue-trigger-using-a-poco).
Line 92: [Warning] Invalid file link:(~/snippets/101functions/queue-storage/#retrieving-queue-metadata-from-an-azure-storage-queue-trigger).
Line 93: [Warning] Invalid file link:(~/snippets/101functions/queue-storage/#poison-queue-messages-with-azure-storage-queue-triggers).
Line 94: [Warning] Invalid file link:(~/snippets/101functions/queue-storage/#azure-storage-queue-output-binding).
Line 95: [Warning] Invalid file link:(~/snippets/101functions/queue-storage/#using-icollector-with-azure-storage-queue-bindings).
Line 102: [Warning] Invalid file link:(~/snippets/101functions/table-storage/#table-storage-trigger-function).
Line 105: [Warning] Invalid file link:(~/snippets/101functions/timer/#timer-trigger-function).
Line 119: [Warning] Invalid file link:(~/snippets/101functions/portal/#allowing-http-verbs-in-the-azure-portal).
Line 120: [Warning] Invalid file link:(~/snippets/101functions/portal/#getting-your-function-and-host-keys-in-the-azure-portal).
Line 121: [Warning] Invalid file link:(~/snippets/101functions/portal/#controlling-how-much-your-function-can-run-in-one-day).

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Test for Clang by checking --version

This is for platforms where clang++ is aliased as c++, such as FreeBSD and OSX.

Thanks!

I tweaked this a bit in #927, it should now work with both clang and newer gccs.