V2langupdate

So this PR has further improvements to the v2 version of the language.
There's still functionality that's missing though, but I don't think it's that much.
The two examples I've found so far
foo = (a, b) => time / (a + b)
scale time % 2, 1 rotate sin foo 10, 2 move box

which needs more parens with the V2 language
foo = (a, b) => time / (a + b)
scale time % 2, 1 rotate sin(foo(10, 2)) move box

Arrays using square brackets also don't work. I don't think we ever actually discussed whether we'd have arrays. The only example that has them is the DJ Castro homage demo. It shouldn't be too hard for me to add them in though I think.
I'd like to get this merged soonish as it's been sitting in a branch for a little while now.

Hi Guy,
Could you try this on the a) demos b) tutorials and c) the test suite of the v1 lang?
It's not like a) b) c) are set in stone - if there are reasonable discrepancies that's not a problem, but it was very much needed to go through the motions with this branch before, as significant anomalies came up if I recall correctly.
So we cut on that back and forth, could give a) b) c) a shot and see what's the score there please?

sorry should have said what I'd tested. All demos and tutorials work, with the exception of the dj castro one mentioned.
haven't run the v1 lang test suite, (totally forgot about it) but have run all the tests in the v2 suite.
will get the v1 suite running and let you know

so running the testPreprocessor function from the console, all 300 tests pass. I think that only tests the old language though right?
I can't run the visual tests, seems that localhost:8080/tests.html isn't created any more? or I'm not running it right?

sorry I meant: see how v2 handles the v1 tests (by copy-paste I guess). I remember I collected several cases that had problems back then in an email dated 2 Nov 2015 . Visual tests never really took off I think, they worked in some basic form but they need more manpower than we have.
P.S. arrays were also used in the paper, there were some examples of reduce and reduceRight which I thought would appeal the functional community. I wouldn't mind to lose them - just being specific about the references we have to arrays.

so I've got that email, are those the v1 tests you mean? I can't seem to find any other test cases in the repo.
So the big issue with v2 at the moment is still that only specific functions can be inlined without parens. so from those tests in the email that use sin and wave they don't work the same in v2 as v1.
I had a thought the other day, so I think I have a way of sorting it though. need to have a play.
cool cool with the arrays. tbh I don't think it would be that difficult to add them into v2. want to focus on the function stuff first though as that feels bigger

yes those in the email are some picks from the 300 v1 test cases (the preprocessor ones you mentioned): worth checking more of them to see how v2 behaves, exactly because they were meant to explore interesting constructs, the ones in the email were just a few I tried.
so, to be crisp, what's going to happen to arrays, we are going to lose them when we merge v2 or are you going to add them? If we lose them, will it be possible to use something else in the example that uses them?
Before we merge, I think we should get more presentable error messages (unless you tweaked them recently, didn't try the latest changes yet), is that poz?

OK, question about expected behaviour for you @davidedc
how would you expect the following to work?
foo = (a) -> a + 3
bar = foo 1 + foo 2

btw, this isn't meant to be a trick question. I just want to make sure that we're both on the same page :)

Also I'm starting to copy examples from the preprocessor tests, but shit me there's a lot of them haha

I'm didn't try this, I'm going to guess, I think given that there are no special keywords that this would be parsed the normal coffeescript way, i.e. Foo(1 + foo(2)). Might be wrong but that's my guess. Don't try all the tests... and many of those are insane :-) it's just trying the simpler tests that one can see gaps sometimes.

interesting, see I would have had it working the same as foo(1) + foo(2) with function application having higher precedence that addition. don't really mind either way, as long as we're consistent though :)
I'll try to pick a good chunk of the examples in that case. pretty sure plenty will be covered by the existing tests as well

hold up, when did we make times inlinable?

wow, turns out that getting the parser to inline times loops wasn't actually that hard! small mercies haha

ok, another question here
scale 2, wave 2 peg
which functions block should peg end up in?
my feeling is that wave 2 is just an argument to  scale and shouldn't have it's own inlined block. So this code should be equivalent to
scale 2, wave 2
    peg

if peg was in the block of wave then my feeling is that it wouldn't make sense for it to be affected by the scaling.
in which case, what's the difference between wave and scale as far as the language is concerned? Should every function allow inlining? or is it actually just certain functions? and how should that be decided?

also when did we make if statements inlinable?

right, hows this one for an awkward one?
foo(bar(3))
foo bar(3)

how should we be handling passing argument values to functions without parens? should the second line here work like the first? because currently the bar gets inlined, and the foo gets no arguments. Is that correct?

foo(1 + foo(2)) is the way Coffeescript does it... foo(1) + foo(2) is an idea, it could work in a context where the amount of spaces would be relevant (free-floating-tiles programming). It could be done but then it's one more tricky thing because foo might really hold different functions taking different number of parameters at different times, so it would seem one additional trick there...

scale 2, wave 2 peg yes that works as you say. Yes there are at least two distinctions between functions. There are things like shapes and matrix operations, which we don't expect to be used in expression as they shouldn't return something that makes sense in an expression. Then there are things like "wave" which are used in expressions so they are treated differently. I don't remember if there is further distinction between matrix operations and "shapes", I don't remember if that comes into play or not. And maybe colors and color-related functions also act a little different but that's been bolted-on later though, it's just sugar on top.

I think since if has a one-line version in Coffeescript I thought to make it behave as best as I could when inlined with other things but I don't think that's critical.

seems to work as you say, I think this is normal coffeescript, shouldn't behave different, I hope it doesn't. Seems to me it works OK:
foo = (x) -> x+1
bar = (x) -> x*2
console.log foo bar(3)

Having it work as foo(1 + foo(2)) is fine by me, I just hadn't realised that's what was happening and wanted to make sure it wasn't a bug.
"context where the amount of spaces would be relevant" I'm not sure I get what you mean by this.
OK, so we do only want shape, matrix and some colour (fill/stroke) functions to work as inlinable functions? That works for me, though it then raises the question of do we want the user to be able to create inlinable functions?
I feel that inlinable if statements are asking for things to get messy, not so much in the code for the parser, but in the LCL code that gets written. I'll always prefer minimal inlining though, so I'm not without bias.
So the last point, if we decide that only matrix, shape and colour functions are inlinable, then the foo foo(3) problem isn't an issue.
I think some of this boils down again to functions we expect to return a value, and functions that are only called for their side effects. Back to investigating type systems maybe? hahaha

right, I think I've actually got everything working as expected now. I've even added in the <box 3, 4> notation now. I'm calling it a lazy lambda, because we're kind of using it for lazy evaluation. One thing I wondered though, should it be inlinable? I seem to remember the following being something we wanted to do
bigger = <size 1.1>
rotate bigger box

if so, how is this meant to be different from
bigger = () => size 1.1
rotate bigger box

the latter won't work because whilst bigger is a function, only the usual functions (rotate, box, etc) can be inlined. Should the lazy lambda be a way of defining new inlinable functions?

Yes that's right, I think we've put also the "ball above box" example in the paper.

Right, in which case I think that this is everything now. I need to double check and go back through all the examples and make sure they all work ok, and I've not had much time to look at the performance of the generated code, but I think that this now has everything except array/lists, and I have a lot of questions about how those should work first

ah, so there is an issue actually, it's pieces of code like this foo (1 + 2) * 3
the parser assumes that this is calling foo with the value of 1 + 2, and then multiplying the result by 3.
for for hilarity, have a think about how this should work foo(bar(1), 2)
is that foo applied to 2 arguments which are the result of bar(1) and 2? or is it foo applied to one argument, which is the result of bar (1), 2?

I see... the spacing is relevant between function and parens/first argument. At the moment those type of snags are sorted out by coffeescript. Here are some cases:
http://coffeescript.org/#try:foo (1 %2B 2) * 3
foo(1 %2B 2) * 3
foo(bar(1)%2C 2)%0Afoo%20-1%0Afoo%20-%201%0A

wait what? I never realised that coffee script worked that way.
to be honest I'm really not keen on that. my immediate feeling as a programmed is that it's horrible. My feeling from the POV of trying to make a simple, beginner friendly language is that it's also not great.
Do you feel strongly that it's good for it to work this way?

If we want to avoid the parentheses (and I think we really do, for any arity), the ruby/coffeescript way seems handy...
...but I could live with foo (1 + 2) * 3 meaning  foo(1 + 2) * 3
what other behaviours you foresee that are different from the current coffeescript-based implementation?

ok, so I've now managed to do away with parentheses when calling a function.
totally!
sort of
foo 1, 2, 3 will work anywhere, regardless of what the function is.
foo 1, bar 2, 3 is the same as foo(1, bar(2, 3))
if you want foo(1, bar(2), 3) then you need to use parens around the bar application to make it a specific expression. e.g. foo 1, (bar 2), 3
That seems like an ok trade off to me to be honest, and I think it's about the best we can get. thoughts?

ok, so I'm pushing up the commit that removes v1 of the language. at this point I think that v2 is feature complete and enough of an improvement to merge.
I'm not including the webpack build setup as part of this PR, but I'll raise a separate one for that

Yes that's the idea, correct. Let me download and play with this today.


Linux Pwsh 7.X.X / MS 2.6.0 Import-CsOnlineAudioFile freezes

Since 18-02-2022, the "Import-CsOnlineAudioFile" command with Powershell on Linux and MicrosofTeams Module version 2.6.0 does not work.
It freezes indefinitely after Import-CsOnlineAudioFile. It does work on Windows with the same Powershell and module version  (7.2.1 & 2.6.0).
This was tested on different machines and different Microsoft 365 tenants.
Is anyone else experiencing this issue? I contacted the Microsoft support, but they simply stated that Powershell on Linux was not "supported".
Steps to reproduce
Env.:

Linux (tested on Centos 7)
PowerShell 7.2.1
Microsoft Teams module 2.6.0

Import-module MicrosoftTeams -RequiredVersion 2.6.0
$password = ConvertTo-SecureString "<password>" -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential("<username>", $password )
Connect-MicrosoftTeams -Credential $cred

$GetContent = Get-Content -Raw  -Path "<path-to-audio-file>" -AsByteStream
$ImportCsOnlineAudioFile = Import-CsOnlineAudioFile -FileName "<filename>" -Content $GetContent -ApplicationId "HuntGroup" -Verbose

Hi @felixfafard, thank you for your feedback.
Here we are limited to documentation issues and improvements. Anyway, I can recommend you to try the latest version of the Teams PowerShell module:
https://www.powershellgallery.com/packages/MicrosoftTeams/3.1.1

@dariomws Thank you very much for the contribution and sharing this explanation. @felixfafard Hope this comment is helpful for you. If you see a documentation update is required, please feel free to open an issue for the same. We proceed here to close it. Thanks for taking out some time to open the issue. Appreciate and encourage you to do the same in future also.


File is not under client's root

Possibly a conflict with the sublime perforce plugin, but I can seem to get the edit command to work.
I get the following:
p4.exe edit "c:\Users\snarehanger\Documents\Development\project\proj\js\v2\components\elements\MultiFileUploader.jsx"

ERROR:
Path 'c:\Users\snarehanger\Documents\Development\project\proj\js\v2\components\elements\MultiFileUploader.jsx' is not under client's root 'c:\Users\snarehanger\AppData\Roaming\Sublime Text 3\Packages\User'.

Possibly a p4 configuration issue, but any ideas on this?

Hm, maybe look at your P4 Environment Settings, see if you have the right P4CLIENT setup.
Otherwise, you can add a .p4config file at the root of your project to change your settings.

p4 set

shows that P4CLIENT is set as the workspace name, P4EDITOR is set as C:\Program Files (x86)\Microsoft VS Code\code.exe.
Why would the sublime path be brought into this?

Having the correct cwd might help. Try updating to<EMAIL_ADDRESS>

Perfect!  Thanks!


RTC-13416 - Example of a new Icon component that doesn't use font but raw svg

https://perzoinc.atlassian.net/browse/RTC-13416
In Symphony Meetings we're using UIToolkit icons and we've seen issues loading over Startpage where the font isn't processed correctly (see ticket). Also, it seems like using svg icons is preferred over icon fonts.
https://getdevdone.com/blog/icon-fonts-vs-svg-icons.html
This PR is an example of how we could structure this new <Icon>:

All svgs will be wrapped in a React component
Icon component takes a Svg property which is the icon passed.

Benefits

No need to load entire font/all the icons. Would only import icons requested.

Minus

Typing on iconName disappears.

What do you think?

Thank you @axeleriksson147 for this PR. 🙂
It's a very good idea to migrate to SVG. 👍
Here are some remarks / ideas:

We could save all the SVG files in a directory, then have a script which takes care of creating the React Components.
Another idea (Credits Benoit ^^), we could use a kind of SVG "sprite". This allows to have only one SVG file for all the icons (Pros: We don't need to have a React component per Icon, Cons: It doesn't allow us to load only 1 icon but is it really necessary ? Because today the size of all our SVG icons is only 158 KB ? )

You can find an example how to implement the 'sprite' SVG in the 'symphony-devtools' project (implemented by @benoit-sy)
See the raw file of this file: https://github.com/SymphonyOSF/symphony-internal-apps/blob/main/apps/symphony-devtools/resources/images/icons.svg
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve">
   <!-- An icon -->
    <symbol id="copy-id" viewBox="0 0 16 16">
        <path d="M5 0a1 1 0 0 0-1 1v1h10v10h1a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1H5Z" />
        <path d="M0 5a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V5Zm2 9V6h8v8H2Z" fill-rule="evenodd" />
        <path d="M4.304 12.254h-.922V7.906h.922zm4.714-2.215c0 .715-.204 1.263-.612 1.644-.407.38-.995.57-1.764.57H5.411V7.907h1.365c.71 0 1.26.188 1.653.562.393.375.589.898.589 1.57zm-.958.023c0-.934-.412-1.4-1.237-1.4h-.49v2.83h.395c.888 0 1.332-.476 1.332-1.43z" />
    </symbol>

     <!-- Another icon -->
    <symbol id="check" viewBox="0 0 16 16">
       <path fill-rule="evenodd" clip-rule="evenodd" d="M15.669 2.25671C16.0795 2.62617 16.1128 3.25846 15.7433 3.66897L6.74329 13.669C6.55977 13.8729 6.30053 13.9925 6.02629 13.9997C5.75204 14.0069 5.48688 13.9011 5.29289 13.7071L0.292893 8.70712C-0.0976311 8.31659 -0.0976311 7.68343 0.292893 7.2929C0.683417 6.90238 1.31658 6.90238 1.70711 7.2929L5.96181 11.5476L14.2567 2.33104C14.6262 1.92053 15.2585 1.88726 15.669 2.25671Z" />
    </symbol>
    ...
</svg>

Then use it by doing like:
const icon = new URL("./images/icons.svg#copy-id", base);

(See example : https://github.com/SymphonyOSF/symphony-internal-apps/blob/425d641a26cada8f520c8cf513e86e9f384df9fc/apps/symphony-devtools/src/index.ts#L29)

Thank you @axeleriksson147 for this PR. 🙂 It's a very good idea to migrate to SVG. 👍
Here are some remarks / ideas:

We could save all the SVG files in a directory, then have a script which takes care of creating the React Components.
Another idea (Credits Benoit ^^), we could use a kind of SVG "sprite". This allows to have only one SVG file for all the icons (Pros: We don't need to have a React component per Icon, Cons: It doesn't allow us to load only 1 icon but is it really necessary ? Because today the size of all our SVG icons is only 158 KB ? )

You can find an example how to implement the 'sprite' SVG in the 'symphony-devtools' project (implemented by @benoit-sy) See the raw file of this file: https://github.com/SymphonyOSF/symphony-internal-apps/blob/main/apps/symphony-devtools/resources/images/icons.svg
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve">
   <!-- An icon -->
    <symbol id="copy-id" viewBox="0 0 16 16">
        <path d="M5 0a1 1 0 0 0-1 1v1h10v10h1a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1H5Z" />
        <path d="M0 5a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V5Zm2 9V6h8v8H2Z" fill-rule="evenodd" />
        <path d="M4.304 12.254h-.922V7.906h.922zm4.714-2.215c0 .715-.204 1.263-.612 1.644-.407.38-.995.57-1.764.57H5.411V7.907h1.365c.71 0 1.26.188 1.653.562.393.375.589.898.589 1.57zm-.958.023c0-.934-.412-1.4-1.237-1.4h-.49v2.83h.395c.888 0 1.332-.476 1.332-1.43z" />
    </symbol>

     <!-- Another icon -->
    <symbol id="check" viewBox="0 0 16 16">
       <path fill-rule="evenodd" clip-rule="evenodd" d="M15.669 2.25671C16.0795 2.62617 16.1128 3.25846 15.7433 3.66897L6.74329 13.669C6.55977 13.8729 6.30053 13.9925 6.02629 13.9997C5.75204 14.0069 5.48688 13.9011 5.29289 13.7071L0.292893 8.70712C-0.0976311 8.31659 -0.0976311 7.68343 0.292893 7.2929C0.683417 6.90238 1.31658 6.90238 1.70711 7.2929L5.96181 11.5476L14.2567 2.33104C14.6262 1.92053 15.2585 1.88726 15.669 2.25671Z" />
    </symbol>
    ...
</svg>

Then use it by doing like:
const icon = new URL("./images/icons.svg#copy-id", base);

(See example : https://github.com/SymphonyOSF/symphony-internal-apps/blob/425d641a26cada8f520c8cf513e86e9f384df9fc/apps/symphony-devtools/src/index.ts#L29)

Thanks, good suggestions as well. I'll look into it. The problem I had was passing in styles to the svg trying other solutions, for example when the svg was added as a src into an img or object element. Then I couldn't access the styling.


Add authorization annotations for RBAC on deployments and packages

Types of changes

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

Checklist:

[x] All new and existing tests passed.
[x] The code follows the code style and conventions of this project.
[ ] The change requires a change to the documentation.
[ ] I have updated the documentation accordingly.

Description of the change
Add authorization controls to deployments and packages
Motivation for the change
Implement RBAC to limit the users who can create / delete deployments and packages.

Pull request no longer needed and already merged.


Get data from device when new enter or exit happened (attendance)

Hi and thanks for your great library for Anviz
I'm using this library for Anviz P7
do you know a method or command to get data from device when attendance happened to device ?
(I'm getting this data for my own software and I'm not using Anviz crosschex at all.So I need to know when someone enter or exit)
The problem is that checking the device on interval and getting new records is not a good way because it's so time and resource wasting. if you know another way to handle this please tell me.
Thanks in advance

Hi, what you need is real time support, which is tracked by #26
Unfortunately, this feature is not yet implemented.

@JohnKiller
I want to use another method for this problem
but for know I have another issue.
I'm new to c# and my main server is using nodejs.
for connecting to Anviz from nodejs I'm using redis pubsub and sending data through pubsub to c# and then get data and return to nodejs,But their is a problem that I can not connect to
Anviz device in the handler of pubsub and I have to put all my code containing new AnvizManager and manager.connect into handler and for every request it's taking a long time to connect.
do you know anyway to handler it ?
this is my code:
using ServiceStack.Redis;
...
...

static async Task createRedisHost()
{
    var redisConsumer = new RedisClient("localhost:6379");
    var subscription  = redisConsumer.CreateSubscription();
....
    var manager = new AnvizManager();
    manager.ConnectionUser = "admin";
    manager.ConnectionPassword = "12345";
    manager.AuthenticateConnection = true;
    var mdevice = await manager.Connect(DEVICE_HOST);
    mdevice.DevicePing += (s, e) => Console.WriteLine("Device Ping Received");
    mdevice.ReceivedPacket += (s, e) => Console.WriteLine("Received packet");
    mdevice.DeviceError += (s, e) => throw e;
...
    subscription.OnSubscribe = channel =>
    {
        Console.WriteLine(String.Format("Subscribed to '{0}'", channel));
    };
    subscription.OnUnSubscribe = channel =>
    {
        Console.WriteLine(String.Format("UnSubscribed from '{0}'", channel));
    };
    subscription.OnMessage = async (channel, msg) =>
    {
       Console.WriteLine(String.Format("Received '{0}' from channel '{1}'", msg, channel));
       await connectToAnviz(mdevice);
    }
    subscription.SubscribeToChannels("myChannel");
....
}
static async Task connectToAnviz(AnvizDevice mdevice)
{
    var res = await mdevice.GetDateTime();
    Console.WriteLine(Convert.ToString(res.DAY));
}

if you publish a single message (not important what's the message) on channel myChannel the method connectToAnviz will be fired but here u don't get any data.
if you transfer all following section to connectToAnviz method:
    var mdevice = await manager.Connect(DEVICE_HOST);
    mdevice.DevicePing += (s, e) => Console.WriteLine("Device Ping Received");
    mdevice.ReceivedPacket += (s, e) => Console.WriteLine("Received packet");
    mdevice.DeviceError += (s, e) => throw e;

then it will work.
I don't know what's the reason but I guess this is something related to TCP connection but I don't know why it's happening.
Thanks in advanced

Hi, just pinging back to let you know that this feature is now available! Take a look at the example project


Add an indication that a list has extra options below (or above)

Is your feature request related to a problem? Please describe.

Does a long list have indication that only its part is displayed? As I see from the demo, a list can be scrolled but I do not notice any clue that there are extra items above or below.

Source
Describe the solution you'd like
Some sort of visual indication that the list has more options not displayed at the moment, still not sure of how that would look like.
This issue affects the three prompts containing lists: select, multiselect and text (with auto-complete suggestions).

At this moment I can only suggest this: there is always a space between cursor > and an item. What if replace the space with ↑(for top line) and ↓(for bottom line) when the item is not the very first/last one? E.g, we have list ['First', 'Second', 'Third', 'Fourth', 'Fifth'] and display only 3 items at a time:
>↑Second
  Third
 ↓Fourth

> First
  Second
 ↓Third

It can be done for all lists: regular and checkbox ones.

I thought it was a great idea and extended a bit: moving the rows one column to the right and putting simple ascii characters (v and ^ to indicate if there are more items below or above. Up until now I've avoided using non-ascii characters in the interface.
It looks good if the page size is large enough but a bit cluttered with small page sizes and the difference in size between "v" and "^" bothers me, here are some examples: https://asciinema.org/a/PUfZvHkio1YWve9lRbxC2cqff
On the other hand, using unicode triangles makes it look a bit better: https://asciinema.org/a/yQtrRCrUqXMhr7IM4t1M8SSAH
Still not feeling really good with the layouts though

If you even add theming feature, anybody would able to change "arrow" chracters :) Now I am agree that sticking to ASCII makes everything work everywhere and with any font.
I used unicode arrows to emphasize my idea.

In my opinion, one column also look good. When we are at the top of the list, there is no "up" triangle, and this place can be occupied by a pointer to an item in the list:
▶ Banana
  Apple
  Strawberry
  Grapes
▼ Lemon

  Banana
  Apple
▶ Strawberry
  Grapes
▼ Lemon

▲ Apple
  Strawberry
▶ Grapes
  Lemon
▼ Tangerine

▲ Grapes
  Lemon
▶ Tangerine
  Watermelon
  Orange

That's an awesome idea, I've implemented it and it looks great.

One question: How does it look in case of Banana is not the first and there is something above it?
As far as I understand the idea, If there is anything hidden above or below, the cursor is always in the middle of the list? Correct? If so, that's neat. Good idea!

As far as I understand the idea, If there is anything hidden above or below, the cursor is always in the middle of the list? Correct?

Exactly :)

If so, that's neat. Good idea!

Completely inspired on similar libs from other languages!

Closed by https://github.com/mikaelmello/inquire/commit/5a74c480e3d5153f461f61519c764bead8aca3c7


df-92and91 -> Support GET for the DoT valve for WELL objects

This PR includes:

testing suite for getObject for DoTValve
upgrade to WitsmlObjects library version 1.1.4
support for getting 1311 and 1411 WELL objects by UID with field filtering

This connects to #91
This connects to #92

NOTE -> this will fail travis until the 1.1.4 WitsmlObjects library PR is approved.

Also currently the response for the query:
<wells xmlns="http://www.witsml.org/schemas/1series" version="<IP_ADDRESS>">
  <well uid="w-123">
    <name />
    <timeZone />
    <wellLocation />
  </well>
</wells>

Returns:
<ns0:wells xmlns:ns0="http://www.witsml.org/schemas/1series" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.witsml.org/schemas/1series http://www.witsml.org/schemas/1series/obj_well.xsd" version="<IP_ADDRESS>">
  <ns1:well xmlns:ns1="http://www.witsml.org/schemas/1series" uid="w-123">
    <ns2:name xmlns:ns2="http://www.witsml.org/schemas/1series" />
    <ns3:timeZone xmlns:ns3="http://www.witsml.org/schemas/1series" />
    <ns4:wellLocation xmlns:ns4="http://www.witsml.org/schemas/1series" />
  </ns1:well>
</ns0:wells>

Which has a namespace per element, even though it is the same namespace.
This should be simply the same object with the values filled in.

Further to the above comment, the namespaces seem to only happen with <IP_ADDRESS>, not <IP_ADDRESS>

So i ended up committing https://github.com/hashmapinc/Drillflow/pull/137/commits/d137a0e4f75a04fa051fe27c15d456d609ffe3df to address the merging issue, and stupidly did not unstage the changes i made for the response objects, which broke the build. I then decided rather than reverting, i would just commit the response objects in https://github.com/hashmapinc/Drillflow/pull/137/commits/5d1d1094178c68bd2314cff92d4f2425ba6729a8 to address the issues caused. So this card will now address #138 as well.

Bug fix of the year!!!! Thanks, Chris!


Redundant code in getdata.sh

Lines 8-14 and 54-60 in getdata.sh both contain the same lines of code:
echo "- Downloading WikiText-2 (WT2)"
wget --quiet --continue https://s3.amazonaws.com/research.metamind.io/wikitext/wikitext-2-v1.zip
unzip -q wikitext-2-v1.zip
cd wikitext-2
mv wiki.train.tokens train.txt
mv wiki.valid.tokens valid.txt
mv wiki.test.tokens test.txt

I think that lines 54-60 from getdata.sh can be deleted with no consequence.

My recent PR merge fixes this. Thanks for pointing it out.

You're welcome.


[WIP] [IMPL] Audio implementation

Proposal: #2
I've been working on audio, after that design document I've submitted. Right now, I only have the beginnings of PulseAudio support, but implementing what I have has already meant that some slight tweaks to the design has been needed. As such, I have decided to open this PR now, in the draft state, so we can discuss those changes along with some example code to see how those changes will be used.
Changes to design

IAudioProvider has two new methods, StartAsync and StopAsync

This is to support APIs which have asynchronous initialization, such as PulseAudio.
APIs return ValueTask, as not all backends will require asynchronous initialization, so they can return synchronously without causing any overheads.

IAudioProvider.RequestAudioDevice is now async, returning a ValueTask

Again, this is to support APIs which require asynchronous initialization of devices, such as PulseAudio.
Likewise, not all backends will require asynchronous initialization so it returns ValueTask to allow those which are not asynchronous to use it.

Added AudioDeviceType enum to discern recording from playback devices in IAudioDeviceOptions

This could be expanded in the future to further identify device types, e.g. recording devices which record system-wide sound output, or 'Stereo Mix' devices on Windows.

Open Questions
Do we use IAsyncEnumerable for EnumerateAudioDevices?
In the PulseAudio implementation I have had to use a BlockingCollection to implement it as PulseAudio returns the device list asynchronously. Maybe we could change the interface to return a IAsyncEnumerable<IAudioDeviceOptions> instead and then return some other type, possibly one generated by the compiler.
Do we change EnumerateAudioDevices to return a different type from RequestAudioDeviceAsync?
Currently, we use the same type to implement both. However, this leaves us in a weird state where we're returning mutable information from a method, and also accepting properties which may not even make sense (e.g. Name) when requesting audio devices.

Another question: Should StartAsync and StopAsync be RunAsync and StopAsync? It doesn't really match up to how PulseAudio implements their threaded mainloop, but they also have a non-threaded mainloop which we could use, based on poll(). Fortunately, they allow us to write our own implementation of poll() so we could implement our own.

Mostly just styling nits, which means the PR is overall good 😄
Had a few open design questions myself.
As for the StartAsync/StopAsync question, I think we ultimately want both and users can decide if they want to run the synchronous or the asynchronous version (and having an explicit synchronous model that isn't just StartAsync().GetResult() is better anyways).

Closing to make a new PR with just the core components for now


Enable mergify backports

Summary

Enable @mergifyio bot to backport PRs to release branches
Problem Definition

Mergify bot is currently not enabled for backporting:
https://github.com/cosmos/ibc-go/pull/675#issuecomment-1004072141
Proposal

Add Labels for each backport release
update .mergify.yml defining the release branches

See SDK for reference
cc @crodriguezvega @marbar3778

For Admin Use

[ ] Not duplicate issue
[ ] Appropriate labels applied
[ ] Appropriate contributors tagged/assigned

Thanks, @fedekunze; I was actually starting to do this. 👍


Update /import/languages/ to work for multiple repos

Depends on #117, otherwise ready for review.

@miltontony ready for review now that #117 has landed.

Just a small note about stray locales - I think it's likely that you might have 5 repos and 1/5 is missing a language. I think we probably should allow import of all languages and just 1 repo will have content missing in that language - obviously so long as the missing language is not the Main language.

:+1:

Just a small note about stray locales - I think it's likely that you might have 5 repos and 1/5 is missing a language. I think we probably should allow import of all languages and just 1 repo will have content missing in that language - obviously so long as the missing language is not the Main language.

Hmm, how I've done things at the moment is to return warnings about the stray languages, but allow importing the common languages. Created https://github.com/praekelt/molo/issues/126 to change this.


[kmac] Fix Critical Lint Error

This commit is to fix a few critical errors preventing the design from
compiling in the simulator. Mainly the KMAC has been checked in FPV not
in the simulator until now. So some parts of the design assumed FPV_ON
is set always.

Let me merge this (after CI confirmation) and kept fixing the lint errors gradually.


feature request : windows plex server + \share\folder rewrite

Hello i have one plex server on the synology ds198+ nas
and second plex server on my PC.
(nas server is only for local apple tv viewing, PC is for remote viewing because the nas has no enough transcoding power)

Nas access libraries like this :
/volume1/partage/media/movies
/volume1/partage/media/music

PC access the same folders like this :
\\dn\partage\media\movies
\\dn\partage\media\music

Tryed to do rewrite for windows like this :
targets:
  plex:
    - url: http://my.nas:12345
      token: sdfsdfsdf
      rewrite:
        - from: /partage/
          to: /volume1/partage/
        - from: /partaget/
          to: /volume1/partaget/
    - url: http://my.pc:12346
      token: sdfsdfsdfs
      rewrite:
        - from: /partage/
          to: \\dn\partage\
        - from: /partaget/
          to: \\dn\partaget\

Unfortunately for windows this doesn't work :
        - from: /partaget/
          to: \\dn\partaget\

Error in the log :
11/28/2022 9:29:30 PM
Nov 28 21:29:30 WRN No target libraries found error="\\\\\\\\dn\\\\partage\\\\media/movies/Pearl (2022): failed determining libraries" target=plex url=http://my.pc:12346

I saw you suggested WSL, but unfortunatly with WSL i can't use my RTX 3070 to do transcoding with Plex, so i use native Windows Plex server app.

We currently have no plans for Windows support, but we are open to proposals on how to best implement Windows path rewriting. A couple of remarks from my side:

It cannot be a global switch. E.g. if Autoscan is running on Windows, then not all paths can be expected to be Windows-friendly as this would break other remote triggers and targets which use the current UNIX path scheme.
It could be an extra option to the rewrite config module. A unix/windows boolean toggle isn't really future proof. So either we introduce some kind of os enumeration with unix and windows as expected values, with unix being the default. Alternatively, we can abstract away the operating system and introduce a slash-direction option or something similarly named, with forward and backward options.

For now though, I'm closing this as a duplicate of #111.

Just to note on this, at least with Emby if you utilize UNC network paths in your rewrite such as
rewrite:
- from: /media/media/
to: \?\UNC\server\media\media\
it will rewrite the paths to \\?\UNC\server\media\media\anime/madeupanimename/Season 1
Which "appears" to be working at least in the capacity of it scanning the library, unsure if it is just scanning exactly what it says it's trying to or if it is triggering a scan of the entire library.


use condition attributes to specify Python 2 and 3 dependencies

Uses condition attributes introduced in format 3 to declare Python 2 specific as well as Python 3 specific dependencies.

@ros-pull-request-builder retest this please

@ros-pull-request-builder retest this please

With ros-infrastructure/ros_buildfarm_config#138 the PR jobs pass now.


Allow custom parsing of config yaml to account for paths in model-implementation yaml

Prior to these modifications, only the file path of the top-level config was expanded. Any files referenced in the input yaml did not have their paths adjusted appropriately.
With the updated custom parsing, different parsing conventions for different model types can be implemented by the developer.

These examples look like part of a single example, not separate ones. Could you organize into a folder, with perhaps a notebook that uses the code and renders the results?

@ChristopherMayes I've reorganized into a notebook and now use the testing example code inside that notebook.


The router transition event does not fire (tested with Ember 3.24.5)

This addon hooks into the didTransition event on the router service. While this event exists on routes, the router service only supports routeDidChange. Because of that, the event does not fire, and the message is never read by the screen reader.
I don't know if there have been any recent changes to the internals of Ember that make this work in newer versions (or older ones), but I believe the addon should be using the public API.
Bug found with @jgwhite, @sabrinako, and @ChaiWithJai

Thank you for filing this issue, I'll look into it ASAP.

v.2.1.0 is released and should address the issue. Please try it out and let me know if you find any other issues. Thank you!


protoc --elixir_out=./lib helloworld.proto

Where is your helloworld.proto? You need to specify a path to your proto files.

helloworld.proto is specified and still its showing the error!
Can you please help me? I'm new on it and if I'm doing wrong then help me the correct way to learn it.


docs(verification): Added comments to the methods

feat(.travis): Fixed that flake8 is running again

@Fueled/backend-team for review

LGTM

thanks for adding comments @glemmaPaul xoxo


Update poll.js

A slight addition of html making it look better ......

Overall, I don't like any of these suggested changes.

The colors do not go with each other at all; yellow and white is a horrible combination.
The buttons were big enough before, this just makes longer polls all the more spammy
The background image, while it is fitting to our theme, is very distracting from the actual poll and the text in front of it


31208 - Fix app error on chat bubble click from OD

Details

Add default value to prevent Uncaught TypeError: sortedReportActions.filter is not a function error.
Added default value for the second parameter (isOffline) as well to comply with @typescript-eslint/default-param-last rule.
Fixed Issues

$ https://github.com/Expensify/App/issues/31208
PROPOSAL: https://github.com/Expensify/App/issues/31208#issuecomment-1806505540
Tests

Logout out of NewDot
Login to OD Expensify
Click the message bubble in the bottom right
Verify a new tab opens and you are brought to the NewDot concierge chat

[x] Verify that no errors appear in the JS console

Offline tests

Logout out of NewDot
Login to OD Expensify
Click the message bubble in the bottom right
Verify a new tab opens and you are brought to the NewDot concierge chat

QA Steps

Logout out of NewDot
Login to OD Expensify
Click the message bubble in the bottom right
Verify a new tab opens and you are brought to the NewDot concierge chat

[x] Verify that no errors appear in the JS console

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG))

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

Android: Native

https://github.com/Expensify/App/assets/371291/6799668a-af14-4fdb-b669-373fad151271

Android: mWeb Chrome

https://github.com/Expensify/App/assets/371291/c7d30d76-43b4-4a22-8fb9-92bc16d13e0a

iOS: Native

https://github.com/Expensify/App/assets/371291/b5ace526-e2ea-4c4a-b6ab-2e7e2e0981f8

iOS: mWeb Safari

https://github.com/Expensify/App/assets/371291/5a5768f8-b6f0-41fd-a299-41a5ed71d376

MacOS: Chrome

https://github.com/Expensify/App/assets/371291/6541d652-5176-411b-8d23-19240e124732

MacOS: Desktop

https://github.com/Expensify/App/assets/371291/508c30a8-5e40-48eb-91ca-cbe9c5963473

@allroundexperts conflicts resolved

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to staging by https://github.com/deetergp in version: 1.4.2-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/luacmartins in version: 1.4.2-3 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


Returns NULL in Android 10

Device: Honor 10 Lite
SIM: 2 sim card
Permission: Granted
Result: Returns Null

does it work after restarting?

nope. not working even after clean the cache and reinstall Node Modules.

I met the same problem，phoneNumber0 is null, but phoneNumber1 is ok,

It's return null with expo. Can i get sim info using expo?

It's return null with expo. Can i get sim info using expo?

any updates I'm receving null too

Using android 10, getting null on both RNSimData.getSimInfo().phoneNumber1 and RNSimData.getSimInfo().phoneNumber0, error looks like this:

TypeError: null is not an object (evaluating '_reactNativeSimData.default.getSimInfo().phoneNumber1')

any suggestions or hints how to make this work?


[Feature]: NexusMods: Prevent "old versions" from moving to Archive

Problem
When a new version of a file is uploaded, the old file wanders directly into the "Archive" section, inaccessible for users.
When using the regular Nexus website, the file would instead wander into "Old Files" and still be accessible.
Solution
Allow customizing the category to which the old file gets moved.
Alternatives
No response
Screenshots
No response
Relevant log output
No response
Code of Conduct

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

Let me think about this....

Added


Add a function provides global access to the current page

Add a function(e.g. page) provides global access to the current page, likes the function site. It's useful when writing partial templates, such as need to check if a page is the .CurrentSection.

See #9339
And I agree about the "usefulness". I have this more or less implemented in another branch, but I keep getting side tracked :-)


[1.13-rc4] WORKDIR overwrites CMD

Building a Dockerfile that sets a WORKDIR overrides the image's CMD
To reproduce;
Pull the nginx:alpine image and inspect the original CMD
$ docker pull nginx:alpine

$ docker inspect --format '{{ json .Config.Cmd }}' nginx:alpine
["nginx","-g","daemon off;"]

Build an image from that image, and set the WORKDIR
docker build -t repro-29667 -<<EOF
FROM nginx:alpine
WORKDIR /foo/bar
EOF

Inspect the image that was produced, and see that the image's CMD was overwritten;
$ docker inspect --format '{{ json .Config.Cmd }}' repro-29667
["/bin/sh","-c","#(nop) WORKDIR /foo/bar"]

Note that this only reproduces if the WORKDIR is the last instruction in the Dockerfile; setting another command after makes the problem go away;
docker build -t repro-29667-2 -<<EOF
FROM nginx:alpine
WORKDIR /foo/bar
LABEL a=b
EOF

$ docker inspect --format '{{ json .Config.Cmd }}' repro-29667-2

["nginx","-g","daemon off;"]

Reproduced on Docker for Mac running 1.13.0-rc4
Client:
 Version:      1.13.0-rc4
 API version:  1.25
 Go version:   go1.7.3
 Git commit:   88862e7
 Built:        Sat Dec 17 01:34:17 2016
 OS/Arch:      darwin/amd64

Server:
 Version:      1.13.0-rc4
 API version:  1.25 (minimum version 1.12)
 Go version:   go1.7.3
 Git commit:   88862e7
 Built:        Sat Dec 17 01:34:17 2016
 OS/Arch:      linux/amd64
 Experimental: true

Confirmed

Note that this only reproduces if the WORKDIR is the last instruction in the Dockerfile; setting another command after makes the problem go away;
docker build -t repro-29667-2 -<<EOF
FROM nginx:alpine
WORKDIR /foo/bar
LABEL a=b
EOF

$ docker inspect --format '{{ json .Config.Cmd }}' repro-29667-2

["nginx","-g","daemon off;"]

I'll add it to the top description

regression from #28909

I am not very familiar with this part of the builder.
Though I think the b.runConfig.Cmd could be restored before the commit. It seems that the following will fix the issue?
diff --git a/builder/dockerfile/dispatchers.go b/builder/dockerfile/dispatchers.go
index 4f3dcd8..46fbd94 100644
--- a/builder/dockerfile/dispatchers.go
+++ b/builder/dockerfile/dispatchers.go
@@ -297,16 +297,16 @@ func workdir(b *Builder, args []string, attributes map[string]bool, original str
        }
        b.runConfig.Image = b.image

-       cmd := b.runConfig.Cmd
-       b.runConfig.Cmd = strslice.StrSlice(append(getShell(b.runConfig), fmt.Sprintf("#(nop) WORKDIR %s", b.runConfig.WorkingDir)))
-       defer func(cmd strslice.StrSlice) { b.runConfig.Cmd = cmd }(cmd)
-
        if hit, err := b.probeCache(); err != nil {
                return err
        } else if hit {
                return nil
        }

+       cmd := b.runConfig.Cmd
+       b.runConfig.Cmd = strslice.StrSlice(append(getShell(b.runConfig), fmt.Sprintf("#(nop) WORKDIR %s", b.runConfig.WorkingDir)))
+       defer func(cmd strslice.StrSlice) { b.runConfig.Cmd = cmd }(cmd)
+
        container, err := b.docker.ContainerCreate(types.ContainerCreateConfig{Config: b.runConfig})
        if err != nil {
                return err
@@ -316,6 +316,7 @@ func workdir(b *Builder, args []string, attributes map[string]bool, original str
                return err
        }

+       b.runConfig.Cmd = cmd
        return b.commit(container.ID, b.runConfig.Cmd, "WORKDIR "+b.runConfig.WorkingDir)
 }

Added a PR #29679, as an attempt to fix this issue.


Base plugin-sass on css-plugin-base?

Have you thought about basing this plugin on plugin-css as the less plugin does? I think we should learn some things from them.
One problem I'm having with this plugin is that incremental builds get really slow because it seems like the cache doesn't work, which I believe is solved correctly by the less plugin.
If I were to prepare a pull request that implements it, would you consider to merge it?

Thank you for the suggestion. Any pull request is welcome 😎 👍

@ineentho feel free to submit a or any time, if your still interested. I'll close this issue for now.
From what I understand, the main reason it's pretty slow is because we rely on sass.js which is very slow. That's the limitation.


[feature fix] Append VOL Key to API Links [OSF-6733]

Purpose

Fixes incorrectly formatted comment relationship links by using furl to build relationship links with multiple query parameters (view_only and filter)
Appends VOL key to generated self and html links.

Changes

Adds generic extend_querystring_if_key_exists helper to api.base.utils.py to append the VOL key query parameter if present.

Ticket

OSF-6733

For the tests that you've modified, could you verify that the requests you made definitely got the requested resource (check the type field or something else that would not be there if someone, say, replaced the url with /v2/, for example). I was going to let that go, but it would be good if you added a specific test for one or more of the cases that QA found problematic to ensure that the problems are fixed. 🐧

Super-close. Pass done. 🐧

Looking good. 🎉 🐧 🎉


Thread races and ordering issues.

I'm noticing that the cursor still isn't reliably drawn (#161). I haven't successfully tracked down exactly what's happening, but on inspecting the code it's clear the threading has serious problems. The update for the empty line is sent immediately after new_tab returns, so this is provoking races that have been in the code a long time.
I was trying to be clever and make it so that if an update came in during EditView.draw(), it could draw those lines. I think this was a mistake.
Here's what I think should be done:

Incoming notifications from the core should all be dispatched async to the main thread.
Locking should be removed from LineCache and StyleMap, these will only be called from the main thread.
The blocking call to new_tab should be replaced with a callback, as the semaphore can't guarantee ordering (while async blocks dispatched to the main thread, whether callbacks or notifications, will be dequeued in the order they were enqueued).

Yea I think this is a good idea. I'm pretty sure all drawing in Cocoa is happening on the main thread anyway?
I especially like making new_tab a callback, since that was something I was wrestling with a bit today, and my last PR includes one warty bit where it tries to catch a premature update and apply it when the view loads.


Ergonomics and Reuse Between UnsafeWake and Wake

The UnsafeWake trait is currently fairly unergonomic to implement due to the fact that most of the implementing types aren't actually the thing being pointed to, but the pointer-holding types themselves (e.g. Arc, Rc, &). This necessitates the use of fake pointed-to types like ArcWrapped. The Wake trait is made to work around some of these issues, but there isn't really any good way to abstract over either Wake or UnsafeWake types modulo accepting a Waker or LocalWaker directly. We should chat about potential solutions to these issues.

This is all different now :)


Fix: Assert sameness, not just equality

This PR

[x] uses assertSame() instead of assertEquals() because we can afford a bit of strictness here

hey, could you merge in the latest changes on master and I'll get this merged in

@willishq
:+1: Done!

@willishq

Oops, something went wrong. Check our troubleshooting guide, retry the inspection, or let us know if we can be of help.

Scrutinizer is actually very annoying.

code coverage... Scrutinizer's idea of giving me my own private hell where I have to manually pull down and run phpunit to check code coverage!
however, this is just test updates so I'm going rogue.

wow actually I was just doing some stuff merging pull requests in and now you're back out of sync, sorry man!

@willishq
Done!


Script's body is missing

Hey guys,
First, thank you for this great project.
Second, after unlock() is executed, the scripts are back without the body.

Here you are creating a new element instead just using the old one, and if so, why not copy all the attributes including the body of the scripts.
Third, are you consider adding a mechanism of white-list for domains I want to allow anytime? This way websites will be able to allow their own cookies and block all the others (without list them) until unlock it.
Thanks

Thanks for filing this issue.
I'll get a definitive answer for you eventually (many people on vacation right now!), but I think there's a misunderstanding here about the script blocking for inline scripts.
If you have a script tag with an external source:
<script src='smt.js'></script> you are advised to use add type='javascript/blocked' to get better support (including blocking loading).
However if you have an inline script that itself creates a new script tag via createElement, you don't need to do anything to have yett block it for you, since yett monkeypatches document.createElement.
It sounds like you added the type='javascript/blocked' onto your inline script tag, causing the bug you described, am I right? Something like:
<script type='javascript/blocked'>
var myScriptBody = true
document.createElement = ....
</script>

If that's the case, just remove the type='javascript/blocked' from such inline scripts, and your bug should go away.
If you have a different bug, please let us know!

For your third point - a white-list - I think it could be a good idea. Can you open a separate issue for that please?

Thanks for your answer.
Let me clarify a bit.
For inline scripts - <script> ... some js code ... </script> without a type attribute, yett will remove them from the DOM as part of the initial step.
disableBlocker = false && !type if my blacklistedPatterns is blocking blank src, this will block all my inline scripts and remove them from the DOM.
The problem is after adding those inline scripts back. yett create a new element and copy the src and the type  from the original script but not the body (children element) of the script.
Therefore, this is the script I'm getting back - <script src=(unknown) type=application/javascript></script>

why yett is handling blank source scripts? Why not skip them?

const needsToBeBlacklisted = (src, type) => (
    !disableBlocker &&
    src &&
    (!type || type !== TYPE_ATTRIBUTE) &&
    blacklistedPatterns.some(pattern => pattern.test(src))
)

If yett remove the blank src script, why it doesn't copy the body back when creating the new element?

Thank you for your patience :man_student:

why yett is handling blank source scripts? Why not skip them?

I agree with you, this sounds like a bug. Like I said we have vacation times here right now, but we'll fix this as soon as we have a moment. If you think you see how to fix it yourself, feel free to open a PR with a fix!

Hi @dolav,

First, thank you for this great project

Thanks a lot!

why yett is handling blank source scripts? Why not skip them?

Actually, if you have a blank blacklist then I think that the issue lies there. The blacklist is a regexp, so if you want to block every source then you could try setting the yett blacklist to something like '.+'. You should not set the blacklist to ''.

Here you are creating a new element instead just using the old one, and if so, why not copy all the attributes including the body of the scripts

Yett can not reuse already added scripts tags back because it causes issues with some browsers that won't download and execute the script tag if it's not a fresh copy. Also it makes no sense to block inline scripts whatsoever, so yett does not add back the script tag body.
As @pocketjoso said I am on vacation right now so I cannot reply more clearly about it (I only have my phone), but as soon as I come back I will consider adding the whitelist feature that should make handling blocking everything easier 😉!

Hi @elbywan,
Thanks for your answer.
Basically I'm trying to use the blacklist regexp as "whitelist", means, I'm trying to block everything that is not x, y, z.
This is why I faced the issue with the inline scripts. It's make more sense if yett could just skip them.
Thanks again and enjoy your vacation!!! :tropical_drink:

Fixed with the v0.1.4 release.


Allow failing analysis role in case of inhibitors

When running the analysis against a large number of hosts and addressing found inhibitors, it would be nice to be able to request the analysis role to fail in case inhibitors were found. That way if we run the role against thousands of hosts and the role doesn't fail we know that no inhibitors were found without reading the logs for each and every host. Thanks.

Whoops, I forgot the variable upgrade_inhibited, I think that's just all what's needed, closing.


test model get very low accuracy

hi,i had try my model use 90 epochs.here is my result:

but when i run test.py,i get very low accuracy,

i am so confused.i wonder know is something wrong?

@dontfollowmeimcrazy

Hi @iodncookie, sorry for the late reply!
Are you sure to have loaded the right checkpoint of the model?

thanks for your reply。
yes, i am sure loaded the right checkpoint of the model,and here is my test.py code:
"""
Written by Matteo Dunnhofer - 2017
Test procedure - evaluating accuracy on validation (test) set
"""
import os.path
import tensorflow as tf
import train_util as tu
from models import alexnet
import numpy as np
import logging
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '1'
logging.basicConfig(level=logging.INFO,
filename='test_loger.log',
filemode='w',
format='%(asctime)s  %(message)s ',
datefmt='%Y-%m-%d %H:%M:%S',
)
def test(
top_k,
k_patches,
display_step,
imagenet_path,
ckpt_path):
"""
Procedure to evaluate top-1 and top-k accuracy (and error-rate) on the
ILSVRC2012 validation (test) set.
Args:
	top_k: 	integer representing the number of predictions with highest probability
			to retrieve
	k_patches:	number of crops taken from an image and to input to the model
	display_step: number representing how often printing the current testing accuracy
	imagenet_path:	path to ILSRVC12 ImageNet folder containing train images,
					validation images, annotations and metadata file
	ckpt_path:	path to model's tensorflow checkpoint
"""

test_images = sorted(os.listdir(os.path.join(imagenet_path, 'val')))
test_labels = tu.read_test_labels(os.path.join(imagenet_path, 'data/ILSVRC2012_validation_ground_truth.txt'))

test_examples = len(test_images)

x = tf.placeholder(tf.float32, [None, 224, 224, 3])
y = tf.placeholder(tf.float32, [None, 1000])

# _, pred = alexnet.classifier(x, 1.0)
_, pred = alexnet.darknet53_classifier(x,False)
# calculate the average precision of the crops of the image
avg_prediction = tf.div(tf.reduce_sum(pred, 0), k_patches)

# accuracy
top1_correct = tf.equal(tf.argmax(avg_prediction, 0), tf.argmax(y, 1))
top1_accuracy = tf.reduce_mean(tf.cast(top1_correct, tf.float32))

topk_correct = tf.nn.in_top_k(tf.stack([avg_prediction]), tf.argmax(y, 1), k=top_k)
topk_accuracy = tf.reduce_mean(tf.cast(topk_correct, tf.float32))

saver = tf.train.Saver()

with tf.Session(config=tf.ConfigProto()) as sess:
	saver.restore(sess, os.path.join(ckpt_path, 'darknet_prune_77_0.7422.ckpt'))

	total_top1_accuracy = 0.
	total_topk_accuracy = 0.

	for i in range(test_examples):
		# taking a few patches from an image
		image_patches = tu.read_k_patches(os.path.join(imagenet_path, 'val', test_images[i]), k_patches)
		label = test_labels[i]

		top1_a, topk_a = sess.run([top1_accuracy, topk_accuracy], feed_dict={x: image_patches, y: [label]})
		total_top1_accuracy += top1_a
		total_topk_accuracy += topk_a

		if i % display_step == 0:
			info = 'Examples done: {:5d}/{} ---- Top-1: {:.4f} -- Top-{}: {:.4f}'.format(i + 1, test_examples, total_top1_accuracy / (i + 1), top_k, total_topk_accuracy / (i + 1))
			print(info)
			logging.info(info)
	print ('---- Final accuracy ----')
	info = 'Top-1: {:.4f} -- Top-{}: {:.4f}'.format(total_top1_accuracy / test_examples, top_k, total_topk_accuracy / test_examples)
	print(info)
	logging.info(info)
	info = 'Top-1 error rate: {:.4f} -- Top-{} error rate: {:.4f}'.format(1 - (total_top1_accuracy / test_examples), top_k, 1 - (total_topk_accuracy / test_examples))
	print(info)
	logging.info(info)

if name == 'main':
TOP_K = 5
K_PATCHES = 5
DISPLAY_STEP = 10
IMAGENET_PATH = '/home/yons/work/imagenet'
CKPT_PATH = 'ckpt-darknet-prune'
test(
	TOP_K,
	K_PATCHES,
	DISPLAY_STEP,
	IMAGENET_PATH,
	CKPT_PATH)

@dontfollowmeimcrazy
thanks for your reply。
yes, i am sure loaded the right checkpoint of the model,and here is my test.py code:
`"""
Written by Matteo Dunnhofer - 2017
Test procedure - evaluating accuracy on validation (test) set
"""
import os.path
import tensorflow as tf
import train_util as tu
from models import alexnet
import numpy as np
import logging
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '1'
logging.basicConfig(level=logging.INFO,
filename='test_loger.log',
filemode='w',
format='%(asctime)s  %(message)s ',
datefmt='%Y-%m-%d %H:%M:%S',
)
def test(
top_k,
k_patches,
display_step,
imagenet_path,
ckpt_path):
"""
Procedure to evaluate top-1 and top-k accuracy (and error-rate) on the
ILSVRC2012 validation (test) set.
Args:
	top_k: 	integer representing the number of predictions with highest probability
			to retrieve
	k_patches:	number of crops taken from an image and to input to the model
	display_step: number representing how often printing the current testing accuracy
	imagenet_path:	path to ILSRVC12 ImageNet folder containing train images,
					validation images, annotations and metadata file
	ckpt_path:	path to model's tensorflow checkpoint
"""

test_images = sorted(os.listdir(os.path.join(imagenet_path, 'val')))
test_labels = tu.read_test_labels(os.path.join(imagenet_path, 'data/ILSVRC2012_validation_ground_truth.txt'))

test_examples = len(test_images)

x = tf.placeholder(tf.float32, [None, 224, 224, 3])
y = tf.placeholder(tf.float32, [None, 1000])

# _, pred = alexnet.classifier(x, 1.0)
_, pred = alexnet.darknet53_classifier(x,False)
# calculate the average precision of the crops of the image
avg_prediction = tf.div(tf.reduce_sum(pred, 0), k_patches)

# accuracy
top1_correct = tf.equal(tf.argmax(avg_prediction, 0), tf.argmax(y, 1))
top1_accuracy = tf.reduce_mean(tf.cast(top1_correct, tf.float32))

topk_correct = tf.nn.in_top_k(tf.stack([avg_prediction]), tf.argmax(y, 1), k=top_k)
topk_accuracy = tf.reduce_mean(tf.cast(topk_correct, tf.float32))

saver = tf.train.Saver()

with tf.Session(config=tf.ConfigProto()) as sess:
	saver.restore(sess, os.path.join(ckpt_path, 'darknet_prune_77_0.7422.ckpt'))

	total_top1_accuracy = 0.
	total_topk_accuracy = 0.

	for i in range(test_examples):
		# taking a few patches from an image
		image_patches = tu.read_k_patches(os.path.join(imagenet_path, 'val', test_images[i]), k_patches)
		label = test_labels[i]

		top1_a, topk_a = sess.run([top1_accuracy, topk_accuracy], feed_dict={x: image_patches, y: [label]})
		total_top1_accuracy += top1_a
		total_topk_accuracy += topk_a

		if i % display_step == 0:
			info = 'Examples done: {:5d}/{} ---- Top-1: {:.4f} -- Top-{}: {:.4f}'.format(i + 1, test_examples, total_top1_accuracy / (i + 1), top_k, total_topk_accuracy / (i + 1))
			print(info)
			logging.info(info)
	print ('---- Final accuracy ----')
	info = 'Top-1: {:.4f} -- Top-{}: {:.4f}'.format(total_top1_accuracy / test_examples, top_k, total_topk_accuracy / test_examples)
	print(info)
	logging.info(info)
	info = 'Top-1 error rate: {:.4f} -- Top-{} error rate: {:.4f}'.format(1 - (total_top1_accuracy / test_examples), top_k, 1 - (total_topk_accuracy / test_examples))
	print(info)
	logging.info(info)

if name == 'main':
TOP_K = 5
K_PATCHES = 5
DISPLAY_STEP = 10
IMAGENET_PATH = '/home/yons/work/imagenet'
CKPT_PATH = 'ckpt-darknet-prune'
test(
	TOP_K,
	K_PATCHES,
	DISPLAY_STEP,
	IMAGENET_PATH,
	CKPT_PATH)

`

I have the same problem

Hi @iodncookie
Are you training and testing a different model than the AlexNet present in the repo? I noticed this line in the code you pasted
_, pred = alexnet.darknet53_classifier(x,False)
@codinggirl-abc are you doing something similar?

Hi @iodncookie
Are you training and testing a different model than the AlexNet present in the repo? I noticed this line in the code you pasted
_, pred = alexnet.darknet53_classifier(x,False)
@codinggirl-abc are you doing something similar?

yes,i am training a prune darknet model. i am still strugle with this problem.

Have you tried to train AlexNet? Does it give you the same problem?

Have you tried to train AlexNet? Does it give you the same problem?
not yet.train a model almost take me two weeks,so i just directly train my own model.


refactor: sort CSS properties alphabetically

I thought that we need to use stylelint to enforce the code style. This PR contains the minimum setup for that. Mainly to sort the CSS properties in alphabetical order.
But it's better of course better to automate this using GitHub actions and husky/lint-staged (locally, pre-commit hook).
Also it seems we need to choose a config (https://github.com/stylelint/awesome-stylelint#configs), @yangshun could you please tell me the config we need? Which one is commonly used in Facebook?

@yangshun This PR includes the stealth conversion of the inline comments to regular ones, which make the postcss-strip-inline-comments plugin redundant (https://github.com/facebookincubator/infima/blob/master/packages/postcss-preset-infima/index.js#L15) and additionally dist files are containing all the comments from the partials now.


fix: avoid LegacyKeyValueFormat in Docker by using =

What's changed
I had received a LegacyKeyValueFormat: "ENV key=value" should be used instead of legacy "ENV key value" format (line 22) error when running make.
This resolved that.
This is more being done to help me, as a new starter, to verify I have everything that I need to make a change and deploy - rather than being excessively useful change.
Proposed version
Please select the option below that is most relevant from the list below. This
will be used to generate the next tag version name during auto-tagging.

[ ] Skip auto-tagging
[x] Patch
[ ] Minor version
[ ] Major version

@katybaulch - yup, I was trying to work out what change was too small a change, but this is good to go.


Why is this so diverged from Nixpkgs?

And, do you have plans to ever do PRs for it in Nixpkgs?
Would you even want to see parts of it in Nixpkgs?
Do you think it's too much hassle to get services in Nixpkgs?
Do you believe to have deep disagreement with design decisions in Nixpkgs?

First of all, it's not diverged. It's an independent set of NixOS modules :)
One can try nixsap.apps.postgresql.foo or services.postgresql at the same time.
That's what I love about NixOS modules.
Thus there is little sense in expecting it to be merged in Nixpkgs, because it is ... parallel.
This thing is a kind of experiment, I don't hesitate to break things and I do that :)
This is targeting unattended server environments and
there are some issues with Nixpkgs that I don't like, that's true.
Most services are poorly designed (they could be more declarative) or/and are legacy and
should maintain backward compatibility.
Also I don't like some things about packages (not services) in Nixpkgs. But that's another story.
Anyway, again, Nixsap is built on top of Nixpkgs. One can use it or vanila Nixpkgs, override packages overridden by Nixsap, or use Nixsap option sets to get as flexible specifications as possible.
I will create a demo project eventually.

@ip1981 Thanks for your explanation.
Apparently, I had too much criticism for the NixOS project owner and have been removed from the organisation.
See issue number 27258. (Not linking to the complete URL on purpose.)
Also see issue number 9453 where I question the competence of various people.
I agree completely about the quality of the services designed.
You probably don't care, but I'd like to know what your response is to the issues mentioned above, since we haven't interacted before, AFAIK. Do you think it's a reasonable response of the owner to have removed me from the project?


popup menu is hidden when hand up of keyboard

Shift-F10 show menu
but menu will hidden if not hold key
bandicam 2021-06-29 07-28-10-428.zip

Hi, thank for your report.
Looks like this particular component expects only it's specific popup menu to be opened...
Possible fix will be probably to disallow opening popup menu by keyboard-shortcut for this component.


search domain is not passed from host to container after upgrade from 0.59 to 1.0.0

Rancher Version:1.0.0
Docker Version:latest
OS: ubuntu trusty
Steps to Reproduce: deploy new service
Results: search domain is not passed from host to container
Expected:

reported the problem on irc and got reply from vincent:
16:30 <@vincent99> ingard_: Sounds like a bug if the host's search domain isn't passed down

@ingardm I can't reproduce the issue you are seeing, here are the steps - please point if you've done something differently:

Created a service "foo" with:

image ubuntu:trusty
managed network
search domains foo.com, bar.com (picked under Networking tab in the UI)

Inspect on the container returns following data:

"DnsSearch": [
                "foo.com",
                "bar.com",
                "default.rancher.internal",
                "svc.default.rancher.internal",
                "rancher.internal"
            ],

From inside the container, /etc/resolv.com returns all the domains set:

root@747af15f604b:/# cat /etc/resolv.conf
search foo.com bar.com default.rancher.internal svc.default.rancher.internal rancher.internal
nameserver <IP_ADDRESS>

Hi
Yes we've done it differently as in we haven't added any search domains, but still found that the containers would have inherited the ones from the host server. That was when we were running 0.59. After upgrading to 1.0 we observed that the containers no longer inherited search domains, but rather that we had to add them to all services separately.
Sent from my iPhone

On 08 Apr 2016, at 19:50, Alena Prokharchyk<EMAIL_ADDRESS>wrote:
@ingardm I can't reproduce the issue you are seeing, here are the steps - please point if you've done something differently:

Created a service "foo" with:

image ubuntu:trusty
managed network
search domains foo.com, bar.com (picked under Networking tab in the UI) 2) Inspect on the container returns following data:
"DnsSearch": [
"foo.com",
"bar.com",
"default.rancher.internal",
"svc.default.rancher.internal",
"rancher.internal"
],

From inside the container, /etc/resolv.com returns all the domains set:

root@747af15f604b:/# cat /etc/resolv.conf
search foo.com bar.com default.rancher.internal svc.default.rancher.internal rancher.internal
nameserver <IP_ADDRESS>
—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub

@ingardm thank you, I know what the issue is. Going to work on fixing it

@sangeethah to test the fix, do the following:
Prereq: change /etc/resolv.conf on one of your hosts  by adding "search foo.com bar.com" domain
Case 1

Create a regular service in cattle. Don't specify any extra params
Login to the container, check /etc/resolv.conf.  Verify it has search domains from the host prepended to the list of rancher domains:

search foo.com bar.com ...and list of internal rancher domains

Case 2

Create a regular service in cattle; specify one custom network search domain (under "networks" tab"
Login to the container, check /etc/resolv.conf. Verify that host's search domains are NOT there

We should add host's search domains when user doesn't provide any extra domains for the service

Tested with rancher-server version - v1.0.1-rc2
Host has search domains -  c.rancher-dev.internal google.internal set.

Created as service - test2 under stack-dns2 without passing any network search domain.

container's /etc/resolv.conf has hosts's search domain prepended to the rancher search domains.
search c.rancher-dev.internal google.internal dns2.rancher.internal test2.dns2.r
ancher.internal rancher.internal
nameserver <IP_ADDRESS>

Created as service - test1 under stack-dns2 by passing cusotm network search domain.
container's /etc/resolv.conf has hosts's search domain prepended to the rancher search domains.

search hello.com test.com yo.com dns2.rancher.internal test1.dns2.rancher.intern
al rancher.internal


[crashrpt] Add new port

This builds the CrashRpt library and CrashSender executable that must be distributed with apps that use this package. This is my first attempt at creating a port and I have some notes and questions, so I created this as a draft pull request.
Vendored dependencies
CrashSender (but not CrashRpt) builds using vendored dependencies and I have not yet looked into trying to replace these as described in the maintainer guide. It looks like all of these dependencies except libjpeg and dbghelp are available in vcpkg already:

zlib
minizip
libjpeg
libpng
tinyxml
libogg
libtheora
wtl
dbghelp

Is it acceptable to use the vendored dependencies for CrashSender? Note that the CrashRpt lib itself does not depend on these, just CrashSender.
CrashSender exe and dependencies copied to "tools" directory
The portfile here copies the CrashSender executables to the "tools" and "debug/tools" directories. CrashSender also depends on a .ini file with localized strings and Microsoft's dbghelp.dll, so these are also copied to the "tools" directory. Is there a more appropriate standard location besides "tools" for these files?
Distributing dbghelp.dll
Should dbghelp.dll be excluded from this package and distributed separately (maybe have its own vcpkg port)? I found this note about redistributing dbghelp.dll
https://docs.microsoft.com/en-us/windows/win32/debug/dbghelp-versions?redirectedfrom=MSDN

The most current versions of DbgHelp.dll, SymSrv.dll, and SrcSrv.dll are available as a part of the Debugging Tools For Windows package. The redistribution policies for these included DLLs were specifically designed to make it as easy as possible for people to include these files in their own packages and releases.

The CrashRpt documentation has this note:

Note:
dbghelp.dll library is required to generate minidump files. dbghelp.dll is included in Windows XP distribution and in later versions of Windows, and most user machines have this library installed. This means it is possible (but not recommended) to ignore distribution of dbghelp.dll, if you strongly wish.

Usage info
I a test app that uses the crashrpt package I added a post-build event like this to copy (and rename the .ini file) to the target directory like this:
copy "$(VcpkgRoot)tools\crashrpt\crashrpt_lang_EN.ini" "$(TargetDir)crashrpt_lang.ini"
copy "$(VcpkgRoot)tools\crashrpt\CrashSender1403.exe" "$(TargetDir)"

https://github.com/tbdrake/vcpkg-samples/tree/master/crashrpt/CrashRptSample
resolves #560

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

Pinging @tbdrake for response. Is work still being done for this PR?

Sorry I have not spent any more time on this recently, but still would like
to. I have a week of vacation from my day job next week and plan to spend
some time on this then.
On Tue, Apr 14, 2020, 4:42 AM Lily<EMAIL_ADDRESS>wrote:

Pinging @tbdrake https://github.com/tbdrake for response. Is work still
being done for this PR?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/microsoft/vcpkg/pull/9162#issuecomment-613307638, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AETGDNPFUFII3QH45DTIL2DRMQOY3ANCNFSM4JTHSOUA
.

I'm still planning to look into replacing the vendored dependencies.

I'm also interested in this and would be willing to help, but I couldn't find any information on how to list dependencies for a new port. Is it just a Build-Depends: ... in the CONTROL file?

/azp run

@johannesstricker Thank you, any help and review would be appreciated. I worked on replacing the vendored dependencies as best I could by looking at existing ports in vcpkg. Some vcpkg documentation was also helpful:

https://github.com/microsoft/vcpkg/blob/master/docs/examples/installing-and-using-packages.md#handling-libraries-without-native-cmake-support
https://github.com/microsoft/vcpkg/blob/master/docs/users/integration.md#cmake-toolchain-file-recommended-for-open-source-cmake-projects

Besides the Build-Depends in the CONTROL file I also had to update some of the CMakeLists.txt to use find_package()/find_library()/find_path() to locate and use the vcpkg libraries rather than the versions in the CrashRpt git repo. I also made a few small code changes in the patch files in this branch that were required to fix compilation issues when using the versions of the dependencies from vcpkg (newer than the ones CrashRpt was originally written with).
I added feature options tests and demos to build the test and demo applications (console demo, WTL demo, MFC demo) that are included with CrashRpt, but some tests are failing unexpectedly on my machine and I have not verified that the demos are working properly. Any help in testing and fixing issues so that the tests pass and demos work properly would be greatly appreciated. I have not had time to look in to the causes of the failures and if these are new failures because of the updated dependencies.
One issue I noticed for example is that the "Export..." button in Error Report Details is not successfully saving the error report zip file (it seems to silently fail when I click "Save"):

Does you need my help?

@JackBoosY
Yes I could use help. One thing I am not sure how to handle correctly is the CI pipeline, particularly for the dbghelp port I added here which crashrpt depends on.
The build for dbghelp:x86-windows here failed and stdout-x86-windows-log shows this message that dbghelp.lib could not be found where expected:
CMake Error at ports/dbghelp/portfile.cmake:16 (message):
  Cannot find Windows 10.0.18362.0 SDK.  File does not exist: C:\Program
  Files (x86)\Windows Kits\10\Debuggers\lib\x86\dbghelp.lib
Call Stack (most recent call first):
  scripts/ports.cmake:90 (include)

I think this is because the dbghelp library is included in the Windows SDK installation only if Debugging Tools for Windows feature is included, so maybe the CI system does not have this installed:

How should I fix this?

@BillyONeal This PR requires the pipeline machine to install the Windows SDK with debugging tools.

@BillyONeal This PR requires the pipeline machine to install the Windows SDK with debugging tools.

I don't think we can test it then, unless we have a reliable way to install that unattended.

/azp run

@tbdrake Please resolve file conflicts first.
Thanks.

@JackBoosY Thank you for helping, and merge conflict should now be resolved, it was just in scripts/ci.baseline.txt:

@tbdrake According to the disscussion, please add the following codes to VCPKG_PATH/scripts/ci.baseline.txt:
# Since pipeline cannot automatically install dbghelp dependency, skip this detection
dbghelp:arm64-windows=skip
dbghelp:arm-uwp=skip
dbghelp:x64-uwp=skip
dbghelp:x64-windows=skip
dbghelp:x64-windows-static=skip
dbghelp:x86-windows=skip

@tbdrake Does this PR ready for review?

@JackBoosY Sorry for the delay. I think this is close but not quite ready. I think that updating the dependencies may have caused some of the unit tests in crashrpt[tests] to fail (mentioned in this comment), but I'm not sure yet. I plan to look into that on 6/15/2020, and possibly may add more patches to this port if that is required to make the tests pass.

I looked into this some today but still would like to look into these issues more before making this pull request ready for review. 23 of 68 tests fail in the Testsd.exe built by this port, but only 2 of 68 fail when I build crashrpt as-is from its sourceforge repo using its vendored dependencies (not using vcpkg).
crashrpt-testsd-out.txt
vcpkg-crashrpt-testsd-out.txt

@tbdrake Can you provide the way to reproduce this?
Thanks.

@JackBoosY Here are the steps I'm doing to build and run the CrashRpt automated tests in Release. Results from my earlier comment were from Debug builds and the steps are similar and I get different results using Debug as well. Also note that there are 3 DeliveryTests that are expected to fail unless you have the additional setup required (there's a note here).
Using vcpkg and this port:

Clone this pull request's branch: git clone https://github.com/tbdrake/vcpkg.git -b crashrpt
In vcpkg directory cloned above, build vcpkg: bootstrap-vcpkg.bat
Install crashrpt including the tests feature: vcpkg.exe install crashrpt[tests]
Run the crashrpt automated tests: installed/x86-windows/tools/crashrpt/Tests.exe
Enter n for first prompt about testing UNICODE compatibility, then enter a blank line in the second prompt to run all tests. Here is the test summary I get:

=== Summary ===

Error list:
1: In test: CrashRptAPITests::Test_crInstallW_zero_info Expr: nInstallResult==0
2: In test: CrashRptAPITests::Test_crInstallA_zero_info Expr: nInstallResult==0
3: In test: CrashRptAPITests::Test_crInstallA_twice Expr: nInstallResult==0
4: In test: CrashRptAPITests::Test_crInstallA_short_path_name Expr: nInstallResult==0
5: In test: CrashRptAPITests::Test_crInstallW_short_path_name Expr: nInstallResult==0
6: In test: CrashRptAPITests::Test_crInstallToCurrentThread2 Expr: nInstResult==0
7: In test: CrashRptAPITests::Test_crInstallToCurrentThread2_concurrent Expr: nInstResult==0
8: In test: CrashRptAPITests::Test_crAddFile2A Expr: nInstallResult==0
9: In test: CrashRptAPITests::Test_crAddFile2W Expr: nInstallResult==0
10: In test: CrashRptAPITests::Test_crAddScreenshot Expr: nInstallResult==0
11: In test: CrashRptAPITests::Test_crAddScreenshot2 Expr: nInstallResult==0
12: In test: CrashRptAPITests::Test_crAddPropertyA Expr: nInstallResult==0
13: In test: CrashRptAPITests::Test_crAddPropertyW Expr: nInstallResult==0
14: In test: CrashRptAPITests::Test_crAddRegKeyA Expr: nInstallResult==0
15: In test: CrashRptAPITests::Test_crAddRegKeyW Expr: nInstallResult==0
16: In test: CrashRptAPITests::Test_crAddVideo Expr: nInstallResult==0
17: In test: CrashRptAPITests::Test_crAddVideo_defaults Expr: nInstallResult==0
18: In test: CrashRptAPITests::Test_crAddVideo_crash Expr: nInstallResult==0
19: In test: CrashRptAPITests::Test_crSetCrashCallbackA Expr: nInstall==0
20: In test: CrashRptAPITests::Test_crSetCrashCallbackW Expr: nInstall==0
21: In test: CrashRptAPITests::Test_crSetCrashCallbackW_stage Expr: nInstall==0
22: In test: CrashRptAPITests::Test_crSetCrashCallbackW_cancel Expr: nInstall==0
23: In test: CrashRptAPITests::Test_crGenerateErrorReport Expr: nInstResult==0
24: In test: CrashRptAPITests::Test_crGetLastErrorMsgA Expr: nInstallResult==0
25: In test: CrashRptAPITests::Test_crGetLastErrorMsgW Expr: nInstallResult==0
26: In test: CrashRptAPITests::Test_CrAutoInstallHelper Expr: cr_install_helper.m_nInstallStatus==0
27: In test: CrashRptAPITests::Test_CrThreadAutoInstallHelper Expr: cr_install_helper.m_nInstallStatus==0
28: In test: CrashRptAPITests::Test_crInstall_in_different_folder Expr: bCopy3
29: In test: CrashRptAPITests::Test_symbol_file_exists Expr: dwAttrs!=INVALID_FILE_ATTRIBUTES Msg: File does not exist: c:\Users\tdrake\Desktop\vcpkg\installed\x86-windows\tools\crashrpt\CrashRpt1403.pdb
30: In test: CrashRptProbeAPITests::SetUp Expr: bCreateReport
31: In test: Test_crpOpenErrorReportA Expr: SetUp Failure
32: In test: Test_crpOpenErrorReportW Expr: SetUp Failure
33: In test: Test_crpCloseErrorReport Expr: SetUp Failure
34: In test: Test_crpExtractFileW Expr: SetUp Failure
35: In test: Test_crpExtractFileA Expr: SetUp Failure
36: In test: Test_crpGetLastErrorW Expr: SetUp Failure
37: In test: Test_crpGetLastErrorA Expr: SetUp Failure
38: In test: Test_crpGetPropertyW Expr: SetUp Failure
39: In test: Test_crpGetPropertyA Expr: SetUp Failure
40: In test: Test_crpGetProperty Expr: SetUp Failure
41: In test: Test_crashrptprobe_dll_file_version Expr: SetUp Failure
42: In test: TearDown Expr: SetUp Failure
43: In test: CrproberTests::SetUp Expr: bCreateReport
44: In test: Test_help Expr: SetUp Failure
45: In test: Test_output Expr: SetUp Failure
46: In test: Test_extract_file Expr: SetUp Failure
47: In test: Test_get Expr: SetUp Failure
48: In test: TearDown Expr: SetUp Failure
49: In test: DeliveryTests::Test_HttpDelivery Expr: nInstResult==0
50: In test: DeliveryTests::Test_SmtpDelivery Expr: nInstResult==0
51: In test: DeliveryTests::Test_SmtpDelivery_proxy Expr: nInstResult==0
52: In test: DeliveryTests::Test_SMAPI_Delivery Expr: nInstResult==0
53: In test: ExceptionHandlerTests::Test_CatchException Expr: bFind Msg: Could not find generated crash report file for exception type: 11 SIGSEGV signal
54: In test: LangFileTests::Test_lang_file_versions Expr: nActualVer==CRASHRPT_VER

 Time elapsed: 19.14 sec.
   Test count: 72
 Tests passed: 18
 Tests failed: 54

Using original CrashRpt git repo, CMake GUI, and Visual Studio:

Clone crashrpt: git clone https://git.code.sf.net/p/crashrpt/code crashrpt
Open CMake GUI and set the source code and binaries directory to above location of crashrpt repo:

Click Configure and select Win32 for the Optional platform generator, then Finish:

Click Generate
Click Open Project
In Visual Studio, select Release configuration and then Build -> Rebuild Solution
Set the Tests project as the startup project, then click the Run button:

In Tests.exe window, enter n for first prompt about testing UNICODE compatibility, then enter a blank line in the second prompt to run all tests. Here is the test summary I get:

=== Summary ===

Error list:
1: In test: CrashRptAPITests::Test_symbol_file_exists Expr: dwAttrs!=INVALID_FILE_ATTRIBUTES Msg: File does not exist: C:\Users\tdrake\Desktop\crashrpt\bin\CrashRpt1403.pdb
2: In test: DeliveryTests::Test_HttpDelivery Expr: dwExitCode==0
3: In test: DeliveryTests::Test_SmtpDelivery Expr: dwExitCode==0
4: In test: DeliveryTests::Test_SmtpDelivery_proxy Expr: dwExitCode==0
5: In test: ExceptionHandlerTests::Test_CatchException Expr: _tcscmp(szBuffer, _T("crEmulateCrash"))==0

 Time elapsed: 44.59 sec.
   Test count: 72
 Tests passed: 67
 Tests failed: 5

@JackBoosY I realized today some of those test failures in my previous comment under Using vcpkg and this port: are just because there needs to be a crashrpt_lang.ini file in the same directory as CrashSender1403.exe, so just need to copy/rename one of the lang files before running the Tests.exe built by vcpkg:

cp ./installed/x86-windows/tools/crashrpt/crashrpt_lang_EN.ini ./installed/x86-windows/tools/crashrpt/crashrpt_lang.ini

However I still get these test failures:
=== Summary ===

Error list:
1: In test: CrashRptAPITests::Test_crAddFile2A Expr: nResult3==0
2: In test: CrashRptAPITests::Test_crAddFile2W Expr: nResult3==0
3: In test: CrashRptAPITests::Test_symbol_file_exists Expr: dwAttrs!=INVALID_FILE_ATTRIBUTES Msg: File does not exist: C:\Users\tdrake\Desktop\vcpkg\installed\x86-windows\tools\crashrpt\CrashRpt1403.pdb
4: In test: CrashRptProbeAPITests::SetUp Expr: bCreateReport
5: In test: Test_crpOpenErrorReportA Expr: SetUp Failure
6: In test: Test_crpOpenErrorReportW Expr: SetUp Failure
7: In test: Test_crpCloseErrorReport Expr: SetUp Failure
8: In test: Test_crpExtractFileW Expr: SetUp Failure
9: In test: Test_crpExtractFileA Expr: SetUp Failure
10: In test: Test_crpGetLastErrorW Expr: SetUp Failure
11: In test: Test_crpGetLastErrorA Expr: SetUp Failure
12: In test: Test_crpGetPropertyW Expr: SetUp Failure
13: In test: Test_crpGetPropertyA Expr: SetUp Failure
14: In test: Test_crpGetProperty Expr: SetUp Failure
15: In test: Test_crashrptprobe_dll_file_version Expr: SetUp Failure
16: In test: TearDown Expr: SetUp Failure
17: In test: CrproberTests::SetUp Expr: bCreateReport
18: In test: Test_help Expr: SetUp Failure
19: In test: Test_output Expr: SetUp Failure
20: In test: Test_extract_file Expr: SetUp Failure
21: In test: Test_get Expr: SetUp Failure
22: In test: TearDown Expr: SetUp Failure
23: In test: DeliveryTests::Test_SMAPI_Delivery Expr: dwExitCode!=0
24: In test: ExceptionHandlerTests::Test_CatchException Expr: bFind Msg: Could not find generated crash report file for exception type: 11 SIGSEGV signal
25: In test: LangFileTests::Test_lang_file_versions Expr: nActualVer==CRASHRPT_VER

 Time elapsed: 32.06 sec.
   Test count: 72
 Tests passed: 47
 Tests failed: 25

There are indeed many more errors, but I don’t know why.

I found that the issue causing some of the CrashRpt unit tests to fail was that the copy of minizip in CrashRpt has modifications that are needed for CrashRpt to work properly, so when I had changed it to use minizip from vcpkg those things no longer worked. So in the latest commit today I changed this port back to using CrashRpt's vendored copy of minizip.
One example of a difference in minizip that caused an issue:
https://sourceforge.net/p/crashrpt/code/ci/master/tree/thirdparty/minizip/ioapi.c#l116:
file = _wfopen((wchar_t*)filename, mode_fopen);

vs https://github.com/madler/zlib/blob/master/contrib/minizip/ioapi.c#L127  (FOPEN_FUNC is fopen64 on Windows)
file = FOPEN_FUNC((const char*)filename, mode_fopen);

Our pipeline machine has some problems, please wait for fix it.

/azp run


viz.scatter improvements

[x] Fill x/y labels if possible
[x] if a df is used as inputs, could reuse automatically the column names.
[x] flexibility of tuning on/off the x/y axis
[ ] What about contour ?

countours will not be added since it makes the final image a bit messy


[RFC] Shifting release day from Thursday to Tuesday

Status: Open for comments
This is a lightweight proposal suggesting a change of release day from Thursday to Tuesday.
The maintainer team has found the Thursday release day to be problematic from a few standpoints:

Thursday often collides with our monthly hackdays leading to less hacking and potentially less features and skunk work on Backstage.
In the event of issues with the release those often surface late in the day or potentially the next day which lead to emergency releases on a Friday.
Friday is also a mandatory day off after on-call leading to limited staffing to address issues and supporting users with questions related to the release.

Our proposal is therefore to change the release day to Tuesday leaving more working days for support and potential follow up work. If there are no strong objections to this proposal we hope to be able to shift to Thursday releases in a couple of weeks.

I like it! Was there any specific reason why Monday was not chosen?

I like it! Was there any specific reason why Monday was not chosen?

Glad to hear that :)
Monday is a bit like learning to use a computer again until you've caught up with issues and PRs. 😁
Jokes aside we are having a sync on Monday afternoons going through all new activity since last sync so it's good to do that before the release.

@jhaals makes sense, thanks for the answer 😄

Release day will shift in a couple weeks! Thanks for feedback in form of thumbs up 😁


Add DashboardLayout component to @toolpad/core

Isolated DashboardLayout component and its docs from https://github.com/mui/mui-toolpad/pull/3343 and implemented review feedback.
Docs/demo: https://deploy-preview-3554--mui-toolpad-docs.netlify.app/toolpad/core/components/dashboard-layout/
(once we have a navigation adapter we can make the demo sidebar links work with local state to provide better examples)
(API docs generation to be added next in separate PR)
Summary
Please check the types in packages/toolpad-core/src/AppProvider/AppProvider.tsx for the chosen API.
Possible to import types such as Branding and Navigation from @toolpad/core.
Also added @toolpad/core/themes where the baseTheme we use can be imported from, and that we use as a default theme. Eventually we can provide more themes?
Addressed PR comments

https://github.com/mui/mui-toolpad/pull/3343#discussion_r1597305323
https://github.com/mui/mui-toolpad/pull/3343#discussion_r1597305679
https://github.com/mui/mui-toolpad/pull/3343#discussion_r1597306617
https://github.com/mui/mui-toolpad/pull/3343#discussion_r1598049998
https://github.com/mui/mui-toolpad/pull/3343#discussion_r1598054706
https://github.com/mui/mui-toolpad/pull/3343#discussion_r1598057358
https://github.com/mui/mui-toolpad/pull/3343#discussion_r1598078678
https://github.com/mui/mui-toolpad/pull/3343#discussion_r1598080006
https://github.com/mui/mui-toolpad/pull/3343#discussion_r1598091993
https://github.com/mui/mui-toolpad/pull/3343#discussion_r1598097992
https://github.com/mui/mui-toolpad/pull/3343#discussion_r1598099632

This should be ready as a first version of the DashboardLayout - of course we can add and improve a lot in the future.
Will add the generated API docs separately, still finishing work on that but it would be easier to manage if this one is merged.