Move from subcommands to an extended command suite

Currently, catalog is the only entry point in the command suite, while the argument that immediately follows is interpreted as the subcommand, such as create, add, serve, etc.
Would it make sense to rather move towards extending the number of entry points in the command suite, and then do away with the subcommands?
Reasons for:

This would make datalad-catalog more similar to other extensions such as metalad and gooey.
Whenever a new subcommand needs to be added, this subcommand has to share the flag/argument space with all other subcommands. This is cumbersome to keep track of and sometimes requires what feels like unnecessary gymnastics.
Adding a new entrypoint is quite seamless and does not have to affect existing entrypoints/arguments/flags at all

Reasons against:

Command line calls might become a bit too verbose, e.g. datalad catalog-create ... or datalad catalog-set-super ... (or is this fine?)
other reasons?

As you stated: this is what other extensions (and datalad proper) are doing, for the reasons you gave. I see no reason why catalog should be different.
That being said, there is a long-standing desire for being able to do non-cumbersome subcommands https://github.com/datalad/datalad/issues/4539 But so far nobody considered it important enough to actually do it. For me personally the resulting nightmare of backward compatibility crutches makes this a rather unattractive direction to think about.

Current thinking of new commands:
datalad catalog-create

"-c", "--catalog_dir": path-like, catalog dircetory; required
"-m", "--metadata": path-like, metadata file; optional
"-y", "--config-file": path-like, configuration file; optional
"-f", "--force": required if catalog_dir exists and if user wants to force in-place create command

datalad catalog-add

"-c", "--catalog_dir": path-like, catalog dircetory; required; must already exist
"-m", "--metadata": path-like, metadata file; required; must exist, content must be json lines
"-y", "--config-file": path-like, configuration file; optional

To be continued...
datalad catalog-remove
datalad catalog-serve
datalad catalog-validate
datalad catalog-set-super
datalad catalog-workflow-new
datalad catalog-workflow-update
datalad catalog-translate
datalad catalog-update

I agree with all reasons for the introduction of an extended command suite. I also think that verbosity is not really a problem. Most invocations will probably be scripted anyway.
The command suite makes sense to me. I have only one comment on -y, --config-file. The text states it must be a JSON-object. In the API you would probably expect a dict (although other types would be valid JSON-objects), on the command line a YAML or JSON file.

This effort would be a good opportunity to introduce Constraints from datalad-next

I agree.

thanks @christian-monch!

Agree with everything so far. Only minor comment:
-y, --config-file is a bit strange. Where's the y coming from? How about a "standard" file argument -F, --config-file (capitalized to not read as conventional "force")?

Thanks for catching, I had gotten used to it. I think it's some legacy think where the file was originally a YAML file. But F feels like a good option.


Installing .NET Core 1.0.3 Windows Server Hosting fails with error 0x80070570

I have tried to install .NET Core 1.0.3 Windows Server Hosting on multiple machines, but it keeps failing with:
0x80070570 - The file or directory is corrupted and unreadable
I've downloaded the file from here, the link is included in the downloads section for .NET Core.
I have included the install log file:
log.txt

@joeloff

Any updates on this? I'm having exactly the same problem and this is preventing us to deploy new servers with asp.net core.

Got a new Windows Server 2016 VM on AWS.
Tried to install DotNetCore.1.0.3_1.1.0-WindowsHosting.exe from https://www.microsoft.com/net/download/core#/runtime) and got the same error as above.
Per issue #207 I tried to install VC++ Redist from http://go.microsoft.com/fwlink/?LinkID=615460&clcid=0x409.
Tried to install, still the same error.
Tried my local machine where I already have VS 2015 Update 3 and 1.0.1 hosting module installed, the same error happens.
Checked the checksums and they match in both machines.

C:\>sha1sum DotNetCore.1.0.3_1.1.0-WindowsHosting.exe
5571ebd8d32f255993c475a4d2e46d3591dc842a *DotNetCore.1.0.3_1.1.0-WindowsHosting.exe

C:\>md5sum DotNetCore.1.0.3_1.1.0-WindowsHosting.exe
cc0b1aefc1046334e4456b5f2f008d0f *DotNetCore.1.0.3_1.1.0-WindowsHosting.exe

Here is the full log (looks identical to the OP):
[00B4:112C][2016-12-31T01:36:37]i001: Burn v<IP_ADDRESS>07, Windows v10.0 (Build 14393: Service Pack 0), path: C:\Users\ADMINI~1\AppData\Local\Temp\2\{43BE8489-3116-4626-A73A-0DBBC0234CF2}\.cr\DotNetCore.1.0.3_1.1.0-WindowsHosting.exe
[00B4:112C][2016-12-31T01:36:37]i000: Initializing string variable 'BundleNameShort' to value 'Microsoft .NET Core 1.0.3 & 1.1.0'
[00B4:112C][2016-12-31T01:36:37]i000: Initializing string variable 'BundleNameSub' to value 'Windows Server Hosting'
[00B4:112C][2016-12-31T01:36:37]i000: Initializing numeric variable 'OPT_INSTALL_LTS_REDIST' to value '1'
[00B4:112C][2016-12-31T01:36:37]i000: Initializing numeric variable 'OPT_INSTALL_FTS_REDIST' to value '1'
[00B4:112C][2016-12-31T01:36:37]i000: Initializing string variable 'InstallResetIISState' to value 'disable'
[00B4:112C][2016-12-31T01:36:37]i000: Initializing string variable 'InstallNoIISState' to value 'disable'
[00B4:112C][2016-12-31T01:36:37]i000: Initializing string variable 'ModifyResetIISState' to value 'disable'
[00B4:112C][2016-12-31T01:36:37]i000: Initializing string variable 'ModifyNoIISState' to value 'disable'
[00B4:112C][2016-12-31T01:36:37]i009: Command Line: '-burn.clean.room=D:\DotNetCore.1.0.3_1.1.0-WindowsHosting.exe -burn.filehandle.attached=412 -burn.filehandle.self=408'
[00B4:112C][2016-12-31T01:36:37]i000: Setting string variable 'WixBundleOriginalSource' to value 'D:\DotNetCore.1.0.3_1.1.0-WindowsHosting.exe'
[00B4:112C][2016-12-31T01:36:37]i000: Setting string variable 'WixBundleOriginalSourceFolder' to value 'D:\'
[00B4:112C][2016-12-31T01:36:37]i000: Setting string variable 'WixBundleLog' to value 'C:\Users\ADMINI~1\AppData\Local\Temp\dd_DotNetCoreWinSvrHosting__20161231013637.log'
[00B4:112C][2016-12-31T01:36:37]i000: Setting string variable 'WixBundleName' to value 'Microsoft .NET Core 1.0.3 & 1.1.0 - Windows Server Hosting'
[00B4:112C][2016-12-31T01:36:37]i000: Setting string variable 'WixBundleManufacturer' to value 'Microsoft Corporation'
[00B4:11C0][2016-12-31T01:36:37]i000: Setting numeric variable 'WixStdBALanguageId' to value 1033
[00B4:11C0][2016-12-31T01:36:37]i000: Setting version variable 'WixBundleFileVersion' to value '1.1.21201.77'
[00B4:112C][2016-12-31T01:36:37]i100: Detect begin, 6 packages
[00B4:112C][2016-12-31T01:36:37]i052: Condition 'VersionNT64' evaluates to true.
[00B4:112C][2016-12-31T01:36:37]i000: Product or related product not found: {5E97AB5D-76FC-4FC8-B466-ED0B136374C9}
[00B4:112C][2016-12-31T01:36:37]i000: Setting version variable 'DotNetRedistFtsProductVersion_x64' to value '<IP_ADDRESS>'
[00B4:112C][2016-12-31T01:36:37]i052: Condition 'NOT VersionNT64' evaluates to false.
[00B4:112C][2016-12-31T01:36:37]i052: Condition 'VersionNT64' evaluates to true.
[00B4:112C][2016-12-31T01:36:37]i000: Product or related product not found: {7AB69CC0-742C-4881-8F8A-D836691FCD88}
[00B4:112C][2016-12-31T01:36:37]i000: Setting version variable 'DotNetRedistLtsProductVersion_x64' to value '<IP_ADDRESS>'
[00B4:112C][2016-12-31T01:36:37]i052: Condition 'NOT VersionNT64' evaluates to false.
[00B4:112C][2016-12-31T01:36:37]i000: Setting string variable 'IISCoreWebEngineInstalled_x86' to value '1'
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'SOFTWARE\Microsoft\IISExpress'
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'SOFTWARE\Microsoft\IISExpress'
[00B4:112C][2016-12-31T01:36:37]i000: Setting string variable 'IISW3SVCInstalled_x86' to value '1'
[00B4:112C][2016-12-31T01:36:37]i000: Setting string variable 'IISCoreWebEngineInstalled_x64' to value '1'
[00B4:112C][2016-12-31T01:36:37]i000: Setting string variable 'IISW3SVCInstalled_x64' to value '1'
[00B4:112C][2016-12-31T01:36:37]i052: Condition 'NOT (((IISCoreWebEngineInstalled_x86=1) AND (IISW3SVCInstalled_x86=1)) OR ((IISCoreWebEngineInstalled_x64=1) AND (IISW3SVCInstalled_x64=1)))' evaluates to false.
[00B4:112C][2016-12-31T01:36:37]i052: Condition '((IISCoreWebEngineInstalled_x86=1) AND (IISW3SVCInstalled_x86=1)) OR ((IISCoreWebEngineInstalled_x64=1) AND (IISW3SVCInstalled_x64=1))' evaluates to true.
[00B4:112C][2016-12-31T01:36:37]i000: Setting string variable 'InstallResetIISState' to value '1'
[00B4:112C][2016-12-31T01:36:37]i052: Condition 'NOT (((IISCoreWebEngineInstalled_x86=1) AND (IISW3SVCInstalled_x86=1)) OR ((IISCoreWebEngineInstalled_x64=1) AND (IISW3SVCInstalled_x64=1)))' evaluates to false.
[00B4:112C][2016-12-31T01:36:37]i052: Condition '((IISCoreWebEngineInstalled_x86=1) AND (IISW3SVCInstalled_x86=1)) OR ((IISCoreWebEngineInstalled_x64=1) AND (IISW3SVCInstalled_x64=1))' evaluates to true.
[00B4:112C][2016-12-31T01:36:37]i000: Setting string variable 'ModifyResetIISState' to value '1'
[00B4:112C][2016-12-31T01:36:37]i000: Setting string variable 'NetFx45Release' to value '394802'
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\community'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015CommunityExists' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\community\1028'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015CommunityExists_1028' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\community\1029'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015CommunityExists_1029' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\community\1031'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015CommunityExists_1031' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\community\1036'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015CommunityExists_1036' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\community\1040'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015CommunityExists_1040' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\community\1041'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015CommunityExists_1041' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\community\1042'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015CommunityExists_1042' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\community\1045'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015CommunityExists_1045' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\community\1046'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015CommunityExists_1046' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\community\1049'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015CommunityExists_1049' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\community\1055'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015CommunityExists_1055' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\community\2052'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015CommunityExists_2052' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\community\3082'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015CommunityExists_3082' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\community'
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\community'
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\devenv'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015DevEnvExists' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\devenv\1028'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015DevEnvExists_1028' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\devenv\1029'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015DevEnvExists_1029' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\devenv\1031'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015DevEnvExists_1031' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\devenv\1036'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015DevEnvExists_1036' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\devenv\1040'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015DevEnvExists_1040' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\devenv\1041'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015DevEnvExists_1041' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\devenv\1042'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015DevEnvExists_1042' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\devenv\1045'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015DevEnvExists_1045' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\devenv\1046'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015DevEnvExists_1046' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\devenv\1049'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015DevEnvExists_1049' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\devenv\1055'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015DevEnvExists_1055' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\devenv\2052'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015DevEnvExists_2052' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\devenv\3082'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015DevEnvExists_3082' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\enterprise'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015EnterpriseExists' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\enterprise\1028'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015EnterpriseExists_1028' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\enterprise\1029'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015EnterpriseExists_1029' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\enterprise\1031'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015EnterpriseExists_1031' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\enterprise\1036'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015EnterpriseExists_1036' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\enterprise\1040'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015EnterpriseExists_1040' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\enterprise\1041'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015EnterpriseExists_1041' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\enterprise\1042'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015EnterpriseExists_1042' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\enterprise\1045'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015EnterpriseExists_1045' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\enterprise\1046'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015EnterpriseExists_1046' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\enterprise\1049'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015EnterpriseExists_1049' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\enterprise\1055'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015EnterpriseExists_1055' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\enterprise\2052'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015EnterpriseExists_2052' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\enterprise\3082'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015EnterpriseExists_3082' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\enterprise'
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\enterprise'
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\professional'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015ProfessionalExists' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\professional\1028'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015ProfessionalExists_1028' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\professional\1029'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015ProfessionalExists_1029' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\professional\1031'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015ProfessionalExists_1031' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\professional\1036'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015ProfessionalExists_1036' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\professional\1040'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015ProfessionalExists_1040' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\professional\1041'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015ProfessionalExists_1041' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\professional\1042'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015ProfessionalExists_1042' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\professional\1045'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015ProfessionalExists_1045' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\professional\1046'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015ProfessionalExists_1046' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\professional\1049'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015ProfessionalExists_1049' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\professional\1055'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015ProfessionalExists_1055' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\professional\2052'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015ProfessionalExists_2052' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\professional\3082'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015ProfessionalExists_3082' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\professional'
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vs\Servicing\14.0\professional'
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vns\Servicing\14.0\xcor'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015WebExpressExists' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vns\Servicing\14.0\xcor\1028'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015WebExpressExists_1028' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vns\Servicing\14.0\xcor\1029'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015WebExpressExists_1029' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vns\Servicing\14.0\xcor\1031'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015WebExpressExists_1031' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vns\Servicing\14.0\xcor\1036'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015WebExpressExists_1036' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vns\Servicing\14.0\xcor\1040'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015WebExpressExists_1040' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vns\Servicing\14.0\xcor\1041'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015WebExpressExists_1041' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vns\Servicing\14.0\xcor\1042'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015WebExpressExists_1042' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vns\Servicing\14.0\xcor\1045'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015WebExpressExists_1045' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vns\Servicing\14.0\xcor\1046'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015WebExpressExists_1046' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vns\Servicing\14.0\xcor\1049'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015WebExpressExists_1049' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vns\Servicing\14.0\xcor\1055'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015WebExpressExists_1055' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vns\Servicing\14.0\xcor\2052'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015WebExpressExists_2052' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vns\Servicing\14.0\xcor\3082'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'VS2015WebExpressExists_3082' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vns\Servicing\14.0\xcor'
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'Software\Microsoft\DevDiv\vns\Servicing\14.0\xcor'
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'SOFTWARE\Microsoft\DevDiv\Web Tools\Servicing\14.0\VisualStudio14'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'WebToolsVSInstalled' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'SOFTWARE\Microsoft\DevDiv\Web Tools\Servicing\14.0\VWDExpress14'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'WebToolsVWDInstalled' to value 0
[00B4:112C][2016-12-31T01:36:37]i000: Registry key not found. Key = 'SOFTWARE\Microsoft\DevDiv\WebFrameworksTools\Servicing\5.0\VisualStudio14'
[00B4:112C][2016-12-31T01:36:37]i000: Setting numeric variable 'WSRVSExists' to value 0
[00B4:112C][2016-12-31T01:36:37]i052: Condition 'DotNetRedistLtsProductVersion_x86 = v4.0.20977' evaluates to false.
[00B4:112C][2016-12-31T01:36:37]i052: Condition 'DotNetRedistLtsProductVersion_x64 = v4.0.20977' evaluates to false.
[00B4:112C][2016-12-31T01:36:37]i052: Condition 'DotNetRedistFtsProductVersion_x86 = v4.16.1179' evaluates to false.
[00B4:112C][2016-12-31T01:36:37]i052: Condition 'DotNetRedistFtsProductVersion_x64 = v4.16.1179' evaluates to false.
[00B4:112C][2016-12-31T01:36:37]i101: Detected package: AspNetCoreModule_x86, state: Absent, cached: None
[00B4:112C][2016-12-31T01:36:37]i101: Detected package: AspNetCoreModule_x64, state: Absent, cached: None
[00B4:112C][2016-12-31T01:36:37]i101: Detected package: DotNetRedistLts_x86, state: Absent, cached: None
[00B4:112C][2016-12-31T01:36:37]i101: Detected package: DotNetRedistLts_x64, state: Absent, cached: None
[00B4:112C][2016-12-31T01:36:37]i101: Detected package: DotNetRedistFts_x86, state: Absent, cached: None
[00B4:112C][2016-12-31T01:36:37]i101: Detected package: DotNetRedistFts_x64, state: Absent, cached: None
[00B4:112C][2016-12-31T01:36:37]i052: Condition 'WixBundleInstalled OR NOT(NetFx45Release < 378675)' evaluates to true.
[00B4:112C][2016-12-31T01:36:37]i199: Detect complete, result: 0x0
[00B4:11C0][2016-12-31T01:36:37]i000: Disable control InstallNoIIS
[00B4:11C0][2016-12-31T01:36:38]i000: Setting numeric variable 'EulaAcceptCheckbox' to value 1
[00B4:112C][2016-12-31T01:36:38]i200: Plan begin, 6 packages, action: Install
[00B4:112C][2016-12-31T01:36:38]i052: Condition 'NOT VersionNT64 AND (VersionNT >= v6.1) AND (IISCoreWebEngineInstalled_x86=1) AND (IISW3SVCInstalled_x86=1)' evaluates to false.
[00B4:112C][2016-12-31T01:36:38]i052: Condition 'VersionNT64 AND (VersionNT64 >= v6.1) AND (IISCoreWebEngineInstalled_x64=1) AND (IISW3SVCInstalled_x64=1)' evaluates to true.
[00B4:112C][2016-12-31T01:36:38]i000: Setting string variable 'WixBundleRollbackLog_AspNetCoreModule_x64' to value 'C:\Users\ADMINI~1\AppData\Local\Temp\dd_DotNetCoreWinSvrHosting__20161231013637_000_AspNetCoreModule_x64_rollback.log'
[00B4:112C][2016-12-31T01:36:38]i000: Setting string variable 'WixBundleLog_AspNetCoreModule_x64' to value 'C:\Users\ADMINI~1\AppData\Local\Temp\dd_DotNetCoreWinSvrHosting__20161231013637_000_AspNetCoreModule_x64.log'
[00B4:112C][2016-12-31T01:36:38]i052: Condition 'NOT VersionNT64 AND OPT_INSTALL_LTS_REDIST=1' evaluates to false.
[00B4:112C][2016-12-31T01:36:38]w321: Skipping dependency registration on package with no dependency providers: DotNetRedistLts_x86
[00B4:112C][2016-12-31T01:36:38]i052: Condition 'VersionNT64 AND OPT_INSTALL_LTS_REDIST=1' evaluates to true.
[00B4:112C][2016-12-31T01:36:38]w321: Skipping dependency registration on package with no dependency providers: DotNetRedistLts_x64
[00B4:112C][2016-12-31T01:36:38]i000: Setting string variable 'WixBundleLog_DotNetRedistLts_x64' to value 'C:\Users\ADMINI~1\AppData\Local\Temp\dd_DotNetCoreWinSvrHosting__20161231013637_001_DotNetRedistLts_x64.log'
[00B4:112C][2016-12-31T01:36:38]i052: Condition 'NOT VersionNT64 AND OPT_INSTALL_FTS_REDIST=1' evaluates to false.
[00B4:112C][2016-12-31T01:36:38]w321: Skipping dependency registration on package with no dependency providers: DotNetRedistFts_x86
[00B4:112C][2016-12-31T01:36:38]i052: Condition 'VersionNT64 AND OPT_INSTALL_FTS_REDIST=1' evaluates to true.
[00B4:112C][2016-12-31T01:36:38]w321: Skipping dependency registration on package with no dependency providers: DotNetRedistFts_x64
[00B4:112C][2016-12-31T01:36:38]i000: Setting string variable 'WixBundleLog_DotNetRedistFts_x64' to value 'C:\Users\ADMINI~1\AppData\Local\Temp\dd_DotNetCoreWinSvrHosting__20161231013637_002_DotNetRedistFts_x64.log'
[00B4:112C][2016-12-31T01:36:38]i201: Planned package: AspNetCoreModule_x86, state: Absent, default requested: Absent, ba requested: Absent, execute: None, rollback: None, cache: No, uncache: No, dependency: None
[00B4:112C][2016-12-31T01:36:38]i201: Planned package: AspNetCoreModule_x64, state: Absent, default requested: Present, ba requested: Present, execute: Install, rollback: Uninstall, cache: Yes, uncache: No, dependency: Register
[00B4:112C][2016-12-31T01:36:38]i201: Planned package: DotNetRedistLts_x86, state: Absent, default requested: Absent, ba requested: Absent, execute: None, rollback: None, cache: No, uncache: No, dependency: None
[00B4:112C][2016-12-31T01:36:38]i201: Planned package: DotNetRedistLts_x64, state: Absent, default requested: Present, ba requested: Present, execute: Install, rollback: None, cache: Yes, uncache: No, dependency: None
[00B4:112C][2016-12-31T01:36:38]i201: Planned package: DotNetRedistFts_x86, state: Absent, default requested: Absent, ba requested: Absent, execute: None, rollback: None, cache: No, uncache: No, dependency: None
[00B4:112C][2016-12-31T01:36:38]i201: Planned package: DotNetRedistFts_x64, state: Absent, default requested: Present, ba requested: Present, execute: Install, rollback: None, cache: Yes, uncache: No, dependency: None
[00B4:112C][2016-12-31T01:36:38]i299: Plan complete, result: 0x0
[00B4:112C][2016-12-31T01:36:38]i300: Apply begin
[00B4:112C][2016-12-31T01:36:38]i010: Launching elevated engine process.
[00B4:112C][2016-12-31T01:36:38]i011: Launched elevated engine process.
[00B4:112C][2016-12-31T01:36:38]i012: Connected to elevated engine.
[1300:0C50][2016-12-31T01:36:38]i358: Pausing automatic updates.
[1300:0C50][2016-12-31T01:36:38]i359: Paused automatic updates.
[1300:0C50][2016-12-31T01:36:38]i360: Creating a system restore point.
[1300:0C50][2016-12-31T01:36:38]i362: System restore disabled, system restore point not created.
[1300:0C50][2016-12-31T01:36:38]i370: Session begin, registration key: SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{e838c45e-6020-4825-a23b-9508a29f55d2}, options: 0x7, disable resume: No
[1300:0C50][2016-12-31T01:36:38]i000: Caching bundle from: 'C:\Users\ADMINI~1\AppData\Local\Temp\2\{C740925C-3368-4361-BDA7-06FD3CFD18A4}\.be\DotNetCore.1.0.3+1.1.0-WindowsHosting.exe' to: 'C:\ProgramData\Package Cache\{e838c45e-6020-4825-a23b-9508a29f55d2}\DotNetCore.1.0.3+1.1.0-WindowsHosting.exe'
[1300:0C50][2016-12-31T01:36:38]i320: Registering bundle dependency provider: 26930490-2726-4D6C-9963-D279E3FF6426, version: 1.1.21201.77
[1300:0C50][2016-12-31T01:36:38]i371: Updating session, registration key: SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{e838c45e-6020-4825-a23b-9508a29f55d2}, resume: Active, restart initiated: No, disable resume: No
[00B4:02C8][2016-12-31T01:36:38]e000: Error 0x80070570: Failed to extract all files from container, erf: 1:4:0
[00B4:0464][2016-12-31T01:36:38]e000: Error 0x80070570: Failed to begin and wait for operation.
[00B4:0464][2016-12-31T01:36:38]e000: Error 0x80070570: Failed to extract payload: a3 from container: WixAttachedContainer
[00B4:0464][2016-12-31T01:36:38]e312: Failed to extract payloads from container: WixAttachedContainer to working path: C:\Users\ADMINI~1\AppData\Local\Temp\2\{43BE8489-3116-4626-A73A-0DBBC0234CF2}\.cr\DotNetCore.1.0.3_1.1.0-WindowsHosting.exe, error: 0x80070570.
[00B4:112C][2016-12-31T01:36:38]e000: Error 0x80070570: Cache thread exited unexpectedly.
[1300:0C50][2016-12-31T01:36:38]i372: Session end, registration key: SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{e838c45e-6020-4825-a23b-9508a29f55d2}, resume: ARP, restart: None, disable resume: No
[1300:0C50][2016-12-31T01:36:38]i371: Updating session, registration key: SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{e838c45e-6020-4825-a23b-9508a29f55d2}, resume: ARP, restart initiated: No, disable resume: No
[00B4:112C][2016-12-31T01:36:39]i399: Apply complete, result: 0x80070570, restart: None, ba requested restart:  No

In the meantime I recommend downgrading to 1.0.1 and installing the 1.0.1 server runtime from: https://download.microsoft.com/download/F/6/E/F6ECBBCC-B02F-424E-8E03-D47E9FA631B7/DotNetCore.1.1.0-WindowsHosting.exe
(link from Chocolatey package source)

I should note that this appears to be fixed. The installer on the download page was replaces and the new version is working for me. It seems the official download page points to the same one recommented by @CMircea.

@bsafta Let us know if you still have issues.

I've downloaded once again ".NET Core 1.0.3 Windows Server Hosting" and it was successfully installed without any issues.


Fixed query error.

Here's a fix to address the following issue.
[      script:oxmysql] [ERROR] qb-gym was unable to execute a query!
[      script:oxmysql]         Table 's5_QBC3.users' doesn't exist
[      script:oxmysql]         SELECT skills FROM users WHERE citizenid = 'IHF99544'


Comparing profiles

This looks really useful:
https://github.com/google/pprof/blob/master/doc/README.md#comparing-profiles
Any experience using PProf in this way? I'm not sure what the most natural interface would be, maybe something allowing code to be run at two different commits? Or maybe the code executed should be allowed to change too, to account for interface updates?

I am unsure that there is a good interface on our side, but you can always use
pprof(web=false, out=profile1.pb.gz)

To safe a particular profile and compare against it later.

Yeah, i've done what @vchuravy suggested.
I see two paths that could make this easier:

We could probably support a diffbase flag, that lets you then point to the profile you exported via valentin's suggestion above.
We could maybe provide a more convenient function to run the embedded pprof binary with arbitrary commands, so that you could do that yourself? Right now, we do this awkward thing internally, and we could instead make a nice function for this?:
https://github.com/vchuravy/PProf.jl/blob/e142c4cab70cc51a9c50b0a12aac61dc59ff1090/src/PProf.jl#L259-L261


rich reports not rendering graphs in vscode

When running the example code in vscode .ipynb the graphs do not render.
I am using the cade the same as the tutorial.  https://ydf.readthedocs.io/en/latest/tutorial/getting_started/
After the evaluation cell no graphs are displayed.
When I try the same file in Jupyter lab backend with browser this is rendering OK.
I have tried this on both wsl and Macos arm64 and it is happening with both.
Is there any special setting i need to set?

Thanks for reporting. Looks like the plotly library is not loaded correctly, maybe for the reasons described here https://github.com/microsoft/vscode-jupyter/issues/13361

I had a look into the renderer and have found if I uninstall the Jupyter Notebook Renderers extension, the graphs are now rendered!
https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter-renderers
I can confirm that this works on both wsl and macos arm64.

Cool, thank you for looking into it!


Finished mobile version

finished mobile version: this is a finished mobile version of the portfolio.

It built with HTML and CSS
the content uses grid layout and flex-box

Hi @franclobo ,
Thank you for reviewing my PR,i was been told by other code reviewers that the header without my information and that I should remove them, so


Is there a way to use this in the browser?

Via the

Not for now. SVGO is tightly bound to Node.js API, there is no browser interface for it, unfortunately. It can be adopted of course but with some considerable efforts.

Check this https://github.com/svg/svgo/issues/1050
Also I think https://jakearchibald.github.io/svgomg/ runs as a static application (https://github.com/jakearchibald/svgomg/issues/88#issuecomment-290986043)so I think it's possible. @GreLI Could you please clarify on this ? Thanks


September 2017 Maintenance

Upgrade all dependencies & clean up tasks

Tested after merge in master and works with Custom Elements Helpers 2.0**.2**


fix bug in nufft -d x:y:z argument handling

Hi,
This PR fixes two bugs in nufft argument handling that were introduced by the changes in #20.

The first is that the dimensions vec3 argument name needs to be changed to -D for all 3 values to be respected.
also, sizeinit was never set to true when the dimensions were specified.  I manually check the argument strings to set this, but perhaps there is an easier way to verify if -D was passed in?

I came across this while trying to run the following line from the matlab noncart.m example:
https://github.com/mikgroup/espirit-matlab-examples/blob/97cacdd7e2cc8b62f90a3c8e052a5f6a2315795f/noncart.m#L27
% reconstruct low-resolution image and transform back to k-space
lowres_img = bart('nufft -i -d24:24:1 -t', traj_rad2, ksp_sim);

After the proposed changes (and changing -d to -D in the example), the size of lowres_img is as expected.

Thank you! Merged which some modifications. Lower case 'd' should work too for vectors.


gha: Pin minikube version used in CI

Description
This is to avoid any potential version drift in CI. The setup action (e.g. medyagh/setup-minikube) is maintained by Minikube maintainers.
Relates: https://github.com/cilium/cilium/pull/21386#discussion_r982562385
Signed-off-by: Tam Mach<EMAIL_ADDRESS>Notes
I have marked this PR to be backported in 1.12, just a note that only conforamance-ingress.yaml is required in 1.12.
Full CI is not required, related jobs are successfully ran.

Ingress Conformance
Ingress Conformance (Shared)
Gateway API

As mentioned in the PR description, the changes are only for GHA, so full CI is not required. Mark this as ready to merge as all related GHA jobs are passed.


Make extension tester use INT pin

i have no idea why handle_one_message doesn't read any messages and why the whole wait is way way way longer than 500ms. sometimes it ends and says it read 3 messages, but none of them are quaternion because it's empty. i'm giving up on this and will just work with esp host, since we don't need upload

One more thing - if you make those changes above, you will still need to add in the logic that loops on the int pin and checks the game rotation vector. I suggest repeatedly doing that about 10 times, just to be sure the sensor is working.
Ideally you would also be rotating the sensor itself to see if it shows rotation correctly.

One more thing - if you make those changes above, you will still need to add in the logic that loops on the int pin and checks the quat. I suggest repeatedly doing that about 10 times, just to be sure the sensor is working.
Ideally you would also be rotating the sensor itself to see if it shows rotation correctly.

and what I was doing in this PR?

and what I was doing in this PR?

Yes, but the other changes that I added have to be corrected first to do that successfully. And once you apply those changes, you'll need to add back in the code to do the reading of the gyro.
I could have submitted it as a separate PR but I don't have a board to test on so I saw no point


[SPARK-38851][CORE][TESTS] Refactor HistoryServerSuite to add UTs for RocksDB

What changes were proposed in this pull request?
This pr expand HistoryServerSuite to add UTs for RocksDB scenarios.
Why are the changes needed?
Add more UTs for RocksDB on Apple Silicon on MacOS
Does this PR introduce any user-facing change?
No
How was this patch tested?

Pass GA
Manual test on Apple Silicon environment：

build/sbt "core/testOnly *RocksDBBackendHistoryServerSuite*"

[info] Run completed in 31 seconds, 100 milliseconds.
[info] Total number of tests run: 73
[info] Suites: completed 1, aborted 0
[info] Tests: succeeded 73, failed 0, canceled 0, ignored 0, pending 0
[info] All tests passed.

cc @dongjoon-hyun

friendly ping @dongjoon-hyun , All Tests passed : https://github.com/LuciferYang/spark/runs/6058314113


Default column order in filter settings incorrect

System information:

Windows 10
DBeaver version <IP_ADDRESS>906240635
Java version: included

Connection specification:

DB2 for i v7.2
JTOPEN
Do you use tunnels or proxies (SSH, SOCKS, etc)? No

Describe the problem you're observing:
Sometimes the columns in the result set are in the wrong order. I believe that this has to do with the filters. the metadata shows the correct column order, but when I open the filter settings dialog, the column order is incorrect.
Query metadata:

Filter Settings:

The problem may have to do with multiple columns having the same name in the result set. This does not cause problems with the result set metadata, but the filter settings do not line up with that metadata. The default column order in the filter should be exactly the same as in the result set.

System information:

Operating system (distribution) and version

Distributor ID: neon
Description: KDE neon User Edition 5.16
Release: 18.04
Codename: bionic

DBeaver version <IP_ADDRESS>906240635
Java version "1.8.0_201"
Additional extensions Nope

Connection specification:

Database name and version

Server version: 10.2.22-MariaDB-1:10.2.22+maria~bionic-log mariadb.org binary distribution

Driver name MySQL standard driver
Do you use tunnels or proxies (SSH, SOCKS, etc)? SSH Tunnel

Describe the problem you're observing:
I think I'm experiencing the same problem @JMarkMurphy is having.
When you run the query with CTRL+ENTER the first time it works normally.
This issue arises when you run the query with CTRL+ENTER a second time and onwards.
A workaround I found is running the query using CTRL+TAB I think it works because it's like run it for the first time.
It's my best guess  ¯\_(ツ)_/¯
Regards

Steps to reproduce, if exist:
I manage to isolate my issue on a 3 columns query.
You can reproduce it with a SuiteCRM instance if need it.
SELECT
q.`number` AS quote_number ,
q.name quote_name,
pq.`number` AS 'line_number'
FROM aos_products_quotes pq
LEFT JOIN aos_quotes q ON pq.parent_id = q.id
LIMIT 10

Include any warning/errors/backtraces from the logs
No logs

Looks like duplicate of #6147
Could you check Early Access version (https://dbeaver.io/files/ea)? It already contains the fix.

Yep, Everything ok in Early Access version, it works as expected.
I tested with:
dbeaver-ce_6.1.2_amd64.deb                         04-Jul-2019 10:26     56M

Thanks @serge-rider
I think you're one of the better open-source software author and community managers out there in the wild.
Please, keep up the good work.

Thank you for testing


nginx parser : support basic auth error messages

As seen on gitter, nginx parser doesn't support basic auth, ie. 2021/03/16 08:29:32 [error] 5669#5669: *2829 user "123" was not found in "/etc/nginx/.htpasswd", ....
It should be supported in a similar way to https://github.com/crowdsecurity/hub/blob/master/parsers/s01-parse/crowdsecurity/apache2-logs.yaml

Example of nginx error logs. lxc container ubuntu 20.04, nginx default settings:
2021/03/16 08:29:32 [error] 5669#5669: *2829 user "123" was not found in "/etc/nginx/.htpasswd", client: <IP_ADDRESS>, server: dgu.site1.ru, request: "GET / HTTP/1.1", host: "dgu.site1.ru"
2021/03/16 09:11:59 [error] 5669#5669: *4030 user "123" was not found in "/etc/nginx/.htpasswd", client: <IP_ADDRESS>, server: dgu.site1.ru, request: "GET / HTTP/1.1", host: "dgu.site1.ru"
2021/03/16 09:12:04 [error] 5669#5669: *4030 user "user1": password mismatch, client: <IP_ADDRESS>, server: dgu.site1.ru, request: "GET / HTTP/1.1", host: "dgu.site1.ru"
2021/03/16 09:12:09 [error] 5669#5669: *4030 user "user1": password mismatch, client: <IP_ADDRESS>, server: dgu.site1.ru, request: "GET / HTTP/1.1", host: "dgu.site1.ru"


accept several reports paths (comma separated)

in order to support several reports paths (https://github.com/Pablissimo/SonarTsPlugin/issues/141)

Coverage decreased (-0.2%) to 91.852% when pulling c6a4839dd644c033d05b2382676fae91355acd4a on kingatlas:MultiReports into 840bcff2160d114b7e52ecc3786c8366d18f3636 on Pablissimo:master.

Coverage increased (+0.4%) to 92.444% when pulling f2241b92b8db7b240353e0c571b8368fafbaf372 on kingatlas:MultiReports into 840bcff2160d114b7e52ecc3786c8366d18f3636 on Pablissimo:master.

Thanks for this @kingatlas! I've been meaning to do it but just haven't been able to find the time.

You're welcome @afterbangx, I kept using the same field name SETTING_LCOV_REPORT_PATH

Thanks for this!


Make Column Info Sharer multi processing safe

Description
You need to use managers for the default dict that is used internally.

Closed in favor of #127


Add support for stopwords in huggingface handler

Description
This adds support for stopwords (also known as stop sequences) to the HuggingFace handler.

class StopSequenceCriteria:
    def __init__(self, stop_sequence: str):
        stop_sequence = re.escape(stop_sequence)
        self.regex = re.compile(f".*{stop_sequence}$")

    def __call__(self, output: str) -> bool:
        if self.regex.findall(output):
            return True
        return False

reference implementation in LMI_Dist

@KexinFeng could you review

Need to rebase to the master to get the patch that helps pass the unit test

Done

Is there any unittest code that tests this feature?

No, but I am starting to work on it. For now, here is an example of how I am testing:
serving.properties:
engine=MPI
option.entryPoint=huggingface.py
option.model_id=bigscience/bloom-560m
option.tensor_parallel_degree=1
option.task=text-generation
option.paged_attention=true
option.dtype=fp16
option.stop_sequence=["<User>", "See you later"]

Model server:
docker run -it --runtime=nvidia --gpus "device=0" --shm-size 4g -v /home/ubuntu/rds:/opt/ml/model  -v /home/ubuntu/model_server_logs:/opt/djl/logs  -p 8080:8080  deepjavalibrary/djl-serving:0.23.0-deepspeed

Example request:
curl http://<IP_ADDRESS>:8080/invocations -X POST -d '{"inputs":"<Assistant>: Hi! What can I do for you? <User>: Why apple is red?","parameters":{"max_new_tokens":50}}' -H "Content-type: application/json"

Result:
[
  {
    "generated_text":"<Assistant>: Hi! What can I do for you? <User>: Why apple is red? <Assistant>: I have a problem with the apple. <User>:"
  }
]

Another example request:
curl http://<IP_ADDRESS>:8080/invocations -X POST -d '{"inputs":"When User says See you tomorrow, Assistant replies See you later. Assistant: Hi! What can I do for you? User: See you tomorrow","parameters":{"max_new_tokens":50}}' -H "Content-type: application/json"

Result:
[
  {
    "generated_text":"When User says See you tomorrow, Assistant replies See you later. Assistant: Hi! What can I do for you? User: See you tomorrow.


Legend not showing in selection: NVDI (Weekly)

Apparently, while selecting OpenMaps and NVDI (Weekly), a legend image it's not showing correctly.
Here you can see the problem:

¿Does it happen when you select only NVDI (Weekly)? Thanks

Only when I select this option, others appear to work well.

Fixed.


Ensure uniqueness of reported errors

The uniqueness of the errors is checked by hashing them and adding
them to a set. If an error is already in the set, it is not reported.
To support older versions of Node, the set is implemented using
the keys of a JS object. The hash of diagnostic is created using a
JSON serializing of object (after dropping circular references).
Closes ivogabe/gulp-typescript#543
Depends on ivogabe/gulp-typescript#545

After thinking a bit about it, it may be better to act at the reporter level to ensure uniqueness.

I want to wait on a response on Microsoft/TypeScript#20876, and then we can see whether this PR is needed. I'll keep this open in the mean time.

After thinking a bit about it, it may be better to act at the reporter level to ensure uniqueness.

I don't agree with that, as probably all reporters will want to have unique errors. But let's wait for the response of the TS team.

Thanks, I am happy with waiting for a better response. To be honest, my current implementation is a bit hacky due to the way I check for uniqueness of the errors. It's better to solve the root cause than a symptom.
Until it is solved, I decided to use a custom reported in my own project. This avoids to force my implementation on everybody. In turned out that it suits me better because it lets me run multiple compilations (build for ES modules and build for commonjs module modules) and only keep unique errors by using the same reporter instance.
I'll close the PR for now so we can continue the discussion on #543 and reopen the PR if needed.


depth error

Required Info

Camera Model
{ D435 }

Operating System & Version
{Win (11)

Platform
PC

Language
{python }

The four small blue planes at the top are being measured correctly in terms of depth. However, the depth values for the trapezoidal plane at the bottom are incorrect; the actual depth of the trapezoidal plane is 70 cm, but the D435 measures it as 1.1 to 1.2 meters.

                        dis = aligned_depth_frame.get_distance(real_xyz[0], real_xyz[1])
                        real_xyz = rs.rs2_deproject_pixel_to_point(depth_intrin, real_xyz, dis)

Both methods of using function calls in Python and viewing with Intel.RealSense.Viewer software result in incorrect depth values for the trapezoidal plane.

Hello, depth at the bottom of a deep container may be more difficult to read because the bottom is further away from the light source above the container.
The image below is from a past case involving a bucket, where the sides of the bucket are correctly blue (near distance) but the bottom of the bucket is in the pink to red range, which represents a meter or more away on the depth scale of this particular image.  Increasing the lighting level if possible may therefore improve the accuracy of the depth reading for the bottom of the container.

Do you require further assistance with this case, please?  Thanks!

The issue is not with a single plane; the distance between the upper and lower planes is problematic. My previous question was incorrect.

It's not an issue with the light; is calibration required?Did I mistakenly set the parameters for Intel.RealSense.Viewer?

I don't think that it's a calibration issue.  The deep walls of the container may be confusing the camera when trying to depth-sense the central bottom of the container.  It is similar to how depth readings of a flat wall may become inaccurate if the 90 degree corner between that wall and the adjacent wall is included in the camera's view.
You could try changing the Depth Units setting in the Viewer from its default value of '0.001' to 0.0001 to see whether it improves the accuracy of your results. This can be done in the Stereo Module > Controls section of the Viewer's options side-panel.

https://github.com/IntelRealSense/librealsense/issues/10976#issuecomment-1271236193 describes how to implement a depth scale value change in Python.

I note that your Asic Temperature (the internal operating temperature of the camera) is quite hot at 45 degrees C.  Officially a maximum temperature of 35 degrees is recommended, though the camera may be able to go up to 42 degrees C without negative effects.  Beyond 42 degrees though, problems could manifest in the image.
Does accuracy of the four small blue planes improve if you set the Viewer's Preset setting near the top of the options side-panel to the 'Medium Density' preset?  Medium Density provides a good balance between accuracy and the amount of detail on the depth image.

I have selected all the modes in Presets, but it did not solve the problem. Could it be that I set the wrong parameters at some point, and they were recorded and have been used ever since? How can I restore the d435 to factory settings?

Or should I lower the working temperature of the D435?

It would be ideal if the temperature could be lowered.  A camera can become mis-calibrated and need to be recalibrated if it experiences a severe temperature event.
You can reset the camera to its factory-new default calibration in the RealSense Viewer using the instructions at https://github.com/IntelRealSense/librealsense/issues/10182#issuecomment-1019854487
You could try disabling the camera's IR emitter component by setting Laser Power to zero to confirm whether or not the IR light projected by the camera onto the container could be making the container more difficult for the camera to read.  The light would be more intense at the top of the container than the bottom because it is nearer to the camera.

Do you require further assistance with this case, please?  Thanks!

Case closed due to no further comments received.


SlackWebhookHandler ignores username and iconEmoji

Despite sending the username and iconEmoji to the slack webhook it wont be considered by slack to write the message to the channel. In slack it will always use the username and icon of the slack app.
Is this the current normal behaviour? Should then the username and iconEmoji options be deprecated/removed? Or do I wrongly use the SlackWebhookHandler?
From the slack documentation:

You cannot override the default channel (chosen by the user who installed your app), username, or icon when you're using Incoming Webhooks to post messages. Instead, these values will always inherit from the associated Slack app configuration.

I haven't tried to override the channel but this image is from an application that I've been using my own custom slack implementation and I have successfully overridden username and icon

example here

I can confirm that I'm using SlackWebhookHandler and I can adjust both $username and $iconEmoji. I created my $webhookUrl in the Incoming Webhook section of my Slack settings @ https://your-slack-app.slack.com/apps/A0F7XDUAZ-incoming-webhooks
I have noticed that when I use Slack's app the icon doesn't show up (I don't use it often, and I don't recall if the username shows up as desired or not). Slack's MacOS app and web app both show the desired username and avatar settings.
Documentation on the Incoming Webhooks page notes the following:

Customized Appearance You can customize the name and icon of your Incoming Webhook in the Integration Settings section below. However, you can override the displayed name by sending "username": "new-bot-name" in your JSON payload. You can also override the bot icon either with "icon_url": "https://slack.com/img/icons/app-57.png" or "icon_emoji": ":ghost:".

My composer.lock shows me the monolog version in use:
            "name": "monolog/monolog",
            "version": "1.x-dev",
            "source": {
                "type": "git",
                "url": "https://github.com/Seldaek/monolog.git",
                "reference": "4d5b7e6ba1127789c7ff59d6f762298eaa29787f"
            },


Send only the latest duplicate follow notification in get_notification

When the get_notification API is called, it should only send the most recent follow notification from each guid.
Currently all follow notifications are sent from all guids, which allows a node to spam other nodes with follow notifications.
The unread count should reflect only the returned notifications, so that if 10 out of 12 unread notifications are duplicate follow notifications, the unread count is 2.

IMO, the prevention of dupes in too short of a timespan should happen on the follow POST api (not GET). For any too frequent dupes the API should return an error and those shouldn't even make it into the DB, and therefore would not affect counts nor need to be filtered out.

Revised suggestion:
When your node gets a follow message from another node, if that user has sent a follow request within the last hour, your node should still accept the follow request, but the request should not generate a notification.
That way the current status of whether that user is following you is accurate, but spamming via follow notifications is prevented.


[GENERAL] Doku broken

http://www.drassil.org/git-wiki/customize

Example is missing. Please add one, makes it a lot easier.

Fixed here: https://github.com/Drassil/git-wiki/commit/c5216a9e1e2aef3e7176d1f85665379e6c2a24b9#diff-34e7439d608e5e846d974db7401fc8d2f12b56c11f425dbd4b70c5628eb83f74
thank you


[Go] proposal: vector DB Inits return actions

Vector DBs only register two actions: an indexer and a retriever.
Continue to allow users to look up these actions by name.
But also return them from Init.

LGTM
One use case I'd like to point out, and I think it works fine with this proposal -- initializing multiple vector stores from the plugin:
	cfi, cfr, err := localvec.Init(context.Background(), localvec.Config{
		Name:     "cat-facts",
		Embedder: googleai.Embedder("embedding-001"),
	})
	dfi, dfr, err := localvec.Init(context.Background(), localvec.Config{
		Name:     "dog-facts",
		Embedder: googleai.Embedder("embedding-001"),
	})

Init conveys the semantics well -- you are only allowed to initialize it once per given Name.

Actually, I think you've provided a counterexample. I didn't realize you might want to instantiate a vector DB with two indexes in the same program. That makes the vector DB case look more like the generative model case, where there could be multiple named entities of the same kind. Now that I took a better look at your rag test app, I see that you actually use that ability.
So I think for consistency, a single Init should completely initialize the plugin.
Once we have multiple retrievers and indexers, I think pinecone.Retriever("my-index") is the best we can do.


A few actress have the wrong English name

Expected Behavior

Should be Yuri not Lily.
It should not be a single word.
Should be Seiran not Iran.

Current Behavior

田所百合 returns Tadokoro Lily.
宮城りえ returns Miyagirie.
五十嵐星蘭 returns Igarashi Iran.

Steps to Reproduce (for bugs)
Javinizer -Path "I:\vid\unsorted" -DestinationPath "I:\vid\sorted"
Your Environment
2.5.17 Javinizer version in 7.3.8 Powershell in Win 11.

Oh I see that google search results do have the name Iran. Though I think showing the more common and popular name is the way to go. Since my last post, I have found more examples.

夏川あゆみ returns Natsukawāyumi. Why is there a French letter? Need to separate first and last name
彩芽くるみ returns Ayamekurumi. Need to separate first and last name
三葉ちはる returns Mitsuhachiharu. Need to separate first and last name
君塚ひなた returns Kimitsukahinata, Need to separate first and last name
橘メアリー returns Tachibana Meari, Why is it not spelled Mary?
伊沢涼子 (吉井美希) Her old alias Isawa Ryouko is from before 2014. Should use her more common name Yoshii Miki


Improve error messages

Today the error messages emitted only report the HTTP Status message.
422 Unrecognized Entities
https://github.com/equinix-labs/metal-go/blob/main/metal/v1/api_projects.go#L175
https://github.com/equinix-labs/metal-go/blob/b1e03ba5195bd47eed1dd3db3ce38d2b494b349f/templates/client.mustache#L736-L754
https://www.rfc-editor.org/rfc/rfc7807#section-3
In packngo the possible error bodies were converted into the error message returned, along with the HTTP status message.
422 Unrecognized Entities: foo is not valid with bar, baz is required
https://github.com/packethost/packngo/blob/master/packngo.go#L71-L81
metal-go (arguably all of the generated SDKs) should offer some examples and improved experience around accessing the reported error message(s).

Metal Errors are returned as such:
HTTP 422 Unrecognized something
Content-type: application/json

{"errors":["the explanation"]}

and sometimes: {"error": "single error"}
In the OAS3 spec, we have the Error type defined: https://github.com/equinix-labs/metal-go/blob/b1e03ba5195bd47eed1dd3db3ce38d2b494b349f/spec/oas3.fetched/components/schemas/Error.yaml
This renders to model_error.go
That type does not implement Error() string though (which would make it a go error type). The generator has no parse the errors nor how that would be presented as a Go error.
If we created a separate errors.go file in v1/ (through either patching or additional templates or a cp)
// copyrights
package v1

func (o *Error) Error() string {
  errs := []string{}
  errs = append(errs, r.Errors...)
  if r.Error != "" {
      errs = append(errs, r.Error)
  }
  return strings.Join(errs, ", ")
}

Inside of client.go.mustache, we would modify the error handling so that where it currently checks for Title and Details we would preset str to Error(). Something like:
if err, ok := v.(error); ok {
  str = err.Error()
}

I'm not sure we get much out of patching the Error() method into model_error.go, since we still have to wire it in somewhere else anyway, and I don't think we'd expect users to be interacting directly with an error model rather than with the GenericOpenAPIError type that wraps it.  IMO we could simply update formatErrorMessage to cover both of the code snippets from your suggestion, which is more straightforward to do with custom templates.


Resource order restrictions?

Hi there,
I'm bootstrapping a VM with a precise32 box that will contain a django 1.6.2 project that's wrapped by virtualenv and running on gunicorn. I do this using Vagrant to boostrap the VM and then puppet to provision it with this module.
However, I'm getting the following error:
err: /Stage[main]//Python::Gunicorn[vhost]/File[/etc/gunicorn.d/vhost]/ensure: change from absent to present failed: Could not set 'present on ensure: No such file or directory - /etc/gunicorn.d/vhost.puppettmp_7493 at /tmp/vagrant-puppet-1/modules-0/python/manifests/gunicorn.pp:74
notice: /Stage[main]//Python::Requirements[/vagrant/project/requirements.txt]/File[/vagrant/project/requirements.txt]/content: audit change: newly-recorded value {md5}360d2304abc12e709a8c4bbbaf202434
err: /Stage[main]//Python::Virtualenv[/vagrant/project]/Exec[python_virtualenv_/vagrant/project]/returns: change from notrun to 0 failed: sh: 1: virtualenv: not found
sh: 1: /vagrant/project/bin/pip: not found
sh: 1: /vagrant/project/bin/pip: not found

Here is my manifest:
# --- Setup Python, VirtualEnv, Django, and Gunicorn -----------------------------------------------------------------
class { "python":
  version   => "2.7",
  dev       => "true",
  virtualenv  => "true",
  gunicorn    => "true",
  pip         => "true",
}

python::virtualenv { "/vagrant/project":
  ensure  => "present",
  version => "2.7",
  requirements => "/vagrant/project/requirements.txt",
  systempkgs => "true",
  owner => "vagrant",
  group => "vagrant"
}

python::requirements { "/vagrant/project/requirements.txt":
  virtualenv => "/vagrant/project",
  owner => "vagrant",
  group => "vagrant",
}

python::gunicorn { "vhost":
  ensure => "present",
  virtualenv => "/vagrant/project",
  mode       => "wsgi",
  dir        => "/vagrant/project",
  bind        => "unix:/tmp/gunicorn.socket",
  template    => "python/gunicorn.erb"
}

Not really sure what I'm doing wrong here. Any ideas?

Close in lack of user feedback.


Scaled Units Supercession in User Interface

Describe the bug
Per VeriStand Help Manual, units from Scale should supercede the units associated with the channel.
https://www.ni.com/documentation/en/veristand/19.2/manual/create-polynomial-scale/
Units supercession carries through to data log file [ie, TDMS], but does not change annotation of units in User Interface.
To Reproduce
Steps to reproduce the behavior:

Create Polynomial scale and specify units
Map Scale to channel via Scale Mappings
View Channel in User Interface

Expected behavior
User Interface displays channel with units specified in Scale, rather than units from "Channel Settings"
Screenshots

Desktop (please complete the following information):
VeriStand 2019 R3
NI Scan Engine and EtherCAT for VeriStand 2019 v. 20.3.1
cRIO-9068
OS:  Linux
Additional context
Add any other context about the problem here.

Thanks for filing this @tarmanan!
Since this has to do with VeriStand, rather than the Scan Engine EtherCAT custom device specifically, I am going to close this issue.
We've created an internal bug for VeriStand tracking this issue, with ID 1155690.

@tarmanan I've been unable to reproduce this with VeriStand 2019 R3 - are there any more specific reproducing steps you can share?

@tarmanan any update on this?

@rtzoeller Thank you for following up.  I attempted to reproduce this again in a new VeriStand 2019 R3 project [Scan Engine EtherCAT custom device v. 20.3.1] today and was unsuccessful as well.


Base Skeleton Creation

[x] Created template
[x] Readme
[x] Setup for python package
[x] Tests setup
[x] research dir created

All the initial skeleton features created


[terra-form-select] The drop down items display above header

Bug Report
Description
When the parent component is scrollable the drop-down with terra-form-select with options goes above header
Steps to Reproduce
log on to https://engineering.cerner.com/terra-ui/components/terra-form-select/form-select/select
and perform the workflow as attached to see the issue
Additional Context / Screenshots

Expected Behavior
Drop-down options should not appear on top of terra components like headers, tabs, etc or it should close the drop-down when scrolled up or the options could be wrapped down on reaching header on scroll
Possible Solution
Adjusting the z-index so that the drop-down menus don't appear on top.

This is working as expected.  We need the z-index on the select to be at a certain level for various functionality and that causes what you're seeing.  We have worked with UX and they are ok with this.  @StephenEsser @neilpfeiffer


fix: goose subscription reflects state incorrectly

closes #1223

I hope to try and have a look to see where the problem is, unfortunately the message binding subscription editor was the first subscription editor and it features:

not very Lit/reactive design
complex event handling (to make up for the first point)

As a result, I don't think it is updating correctly for a range of scenarios in the tests I ran this morning.

I made a few updates, I think I didn't understand this clearly this morning (and also got confused by some other behaviour) so I think the change may be quite correct but I'll take another look tomorrow.

Issues is fixed, but it can not be closed yet due to fast test errors. When this is fixed, this PR will be merged


#80 Send funds for threshold = 1

THIS PR

Implements Send Funds modal
Adds logic for calculating gas (logic/safe/transactions/gas.js). This is not used anywhere yet, but just in case.
Adds more functionality to layout components (mutators to form, passing classes to select fields, setting minHeight for button, passing styles to Hairline, etc)
Added why-did-you-render dev dependency to debug avoidable re-renders:
https://github.com/welldone-software/why-did-you-render
Adds ButtonLink layout component - a Button styled as link
Fixes some mui styles
Dependencies bump
Minor codestyle fixes

TESTING:

Go to your safe
Select an asset in your balances table, click send on it, a modal should pop up with this asset pre-selected
Try to close modal and open it again, it should open with no values prepopulated (except Token)
Try to input invalid data (balance greater than yours, non ethereum address)
With valid data, click review
Try to click back, you should see the previous form, all the data should be saved
Click review again
Click send
Modal should close, you should see a metamask pop-up, click accept
After some time, you should see a notification: 'Tx has been successfully submitted'

THINGS TO DICUSS:
What should be the flow after clicking 'Send' in final Review screen?
Currently it is:

"Review" button is clicked
Modal is closed
Metamask pop-up opens
After tx is confirmed, a notification pops up

Should it be 1, 3, 2, 4? Should we maybe split notifications to 'Tx has been successfully submitted' and 'Tx has been successfully confirmed'?

Travis automatic deployment:
https://pr108--safereact.review.gnosisdev.com
Storybook book automatic deployment:
https://pr108--safereactstorybook.review.gnosisdev.com

Travis automatic deployment:
https://pr108--safereact.review.gnosisdev.com
Storybook book automatic deployment:
https://pr108--safereactstorybook.review.gnosisdev.com

Travis automatic deployment:
https://pr108--safereact.review.gnosisdev.com
Storybook book automatic deployment:
https://pr108--safereactstorybook.review.gnosisdev.com

Travis automatic deployment:
https://pr108--safereact.review.gnosisdev.com
Storybook book automatic deployment:
https://pr108--safereactstorybook.review.gnosisdev.com

Travis automatic deployment:
https://pr108--safereact.review.gnosisdev.com
Storybook book automatic deployment:
https://pr108--safereactstorybook.review.gnosisdev.com

Travis automatic deployment:
https://pr108--safereact.review.gnosisdev.com
Storybook book automatic deployment:
https://pr108--safereactstorybook.review.gnosisdev.com

Travis automatic deployment:
https://pr108--safereact.review.gnosisdev.com
Storybook book automatic deployment:
https://pr108--safereactstorybook.review.gnosisdev.com

Travis automatic deployment:
https://pr108--safereact.review.gnosisdev.com
Storybook book automatic deployment:
https://pr108--safereactstorybook.review.gnosisdev.com

Travis automatic deployment:
https://pr108--safereact.review.gnosisdev.com
Storybook book automatic deployment:
https://pr108--safereactstorybook.review.gnosisdev.com

@germartinez  fixed :)

Travis automatic deployment:
https://pr108--safereact.review.gnosisdev.com
Storybook book automatic deployment:
https://pr108--safereactstorybook.review.gnosisdev.com


[date] Resolve link error to date::locate_zone

I don't know what the solution is, but https://github.com/HowardHinnant/date/issues/398 is the problem.
EDIT: It looks like the port's CMakeLists.txt file does not deal with compiling for C++17 (std is set to C++11), then thereafter (when called), from a program compiled with C++17, now all of a sudden std::string_view is defined, but that overload is not available.
I've for now plugged the file for my purposes, but it should obviously be done correctly (I'm not qualified).
CMakeLists.txt

At present, the upstream has set C++17 in CMakeLists. I successfully build and link to my library after trying it locally.
Fixed by upstream#492, https://github.com/microsoft/vcpkg/pull/11968.


Error 502 when trying to download SoundCloud channel, but not track

#25303 was closed as "duplicate" without actually pointing to any other report, therefore making it a duplicate of nothing, and nobody replied to my question what it was supposed to be a duplicate of. So I guess I'll have to report this again. Maybe it was resolved by accident, but even then I don't know why Github even allows resolving a report as a duplicate of nothing. If it was intentionally resolved as duplicate, please tell me what it is supposed to duplicate.
Checklist

[x] I'm reporting a broken site support
[x] I've verified that I'm running youtube-dl version 2020.05.08
[x] I've checked that all provided URLs are alive and playable in a browser
[x] I've checked that all URLs and arguments with special characters are properly quoted or escaped
[x] I've searched the bugtracker for similar issues including closed ones

Verbose log
[fabian@laptop Downloads]$ youtube-dl -v "https://soundcloud.com/fabian-roeling"
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['-v', 'https://soundcloud.com/fabian-roeling']
[debug] Encodings: locale UTF-8, fs utf-8, out utf-8, pref UTF-8
[debug] youtube-dl version 2020.05.08
[debug] Python version 3.8.2 (CPython) - Linux-5.6.11-1-MANJARO-x86_64-with-glibc2.2.5
[debug] exe versions: ffmpeg 4.2.2, ffprobe 4.2.2, rtmpdump 2.4
[debug] Proxy map: {}
[soundcloud:user] fabian-roeling: Downloading user info
[soundcloud:user] 57408419: Downloading track page 1
ERROR: Unable to download JSON metadata: HTTP Error 502: Bad Gateway (caused by <HTTPError 502: 'Bad Gateway'>); please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see  https://yt-dl.org/update  on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
  File "/usr/lib/python3.8/site-packages/youtube_dl/extractor/common.py", line 627, in _request_webpage
    return self._downloader.urlopen(url_or_request)
  File "/usr/lib/python3.8/site-packages/youtube_dl/YoutubeDL.py", line 2238, in urlopen
    return self._opener.open(req, timeout=self._socket_timeout)
  File "/usr/lib/python3.8/urllib/request.py", line 531, in open
    response = meth(req, response)
  File "/usr/lib/python3.8/urllib/request.py", line 640, in http_response
    response = self.parent.error(
  File "/usr/lib/python3.8/urllib/request.py", line 569, in error
    return self._call_chain(*args)
  File "/usr/lib/python3.8/urllib/request.py", line 502, in _call_chain
    result = func(*args)
  File "/usr/lib/python3.8/urllib/request.py", line 649, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)

Description
When trying to download everything from a SoundCloud channel either using the direct channel URL (like https://soundcloud.com/fabian-roeling) or specifically the "tracks" URL (like https://soundcloud.com/fabian-roeling/tracks), the 502 error seen above occurs and nothing is downloaded. Downloading any track separately works normally.

Search.


Update bgfx to latest and fix Emscripten compilation

As the PR title says, updates bgfx to latest.
The Emscripten compilation was previously failing with latest Emscripten SDK, something to do with ftello64.
Now it works.
The diff on the FFI generated code is quite big because it looks like bindgenchanged the defaults when it comes to doc comment generation.

Awesome! Thanks for the work :)
I will make sure to release a new version of the crate on Monday as I'm out traveling during the weekend.


Enable non-admin users

This allows Girder non-admin users to use Minerva.  I don't like that it makes changes on a GET request (really would just be the first time certain folders are needed and then created), but I can live with that.
We still have the sessions page be the first page the user sees, as it will take some thought as to how to remove this page and deal with what to show on the map page when a user isn't logged in.  At least once the user logs in and navigates to an individual session, they can do everything they need to on that session page (including switching sessions and creating new sessions).
Fixes #165, #71.

Freedom :smile: How do we test it?

I need to fix some tests first.  You can test it by registering a new user through minerva and seeing that you don't get errors--you should be able to actually create a new session, goto that session, and do normal things like upload data and render to the map.

Roger that.

Ready for review.

@aashish24 This is ready for review.

Thanks @mgrauer I won't get to it today but will try it tomorrow.

@aashish24 This PR is blocking my work so I have reviewed and it LGTM.
I agree @mgrauer that creating folders on GET is a little weird but it is essentially a "lazy load" so i think it's ok.

@kotfic much appreciated, thanks for the review.


[BD-46] TextFilter component Header prop usage only handles string, not components (functions)

Description
Allow function and components to passed as Header value to TextFilter.
Deploy Preview
https://deploy-preview-1441--paragon-openedx.netlify.app/components/datatable/
Merge Checklist

[x] If your update includes visual changes, have they been reviewed by a designer? Send them a link to the Netlify deploy preview, if applicable.
[x] Does your change adhere to the documented style conventions?
[x] Do any prop types have missing descriptions in the Props API tables in the documentation site (check deploy preview)?
[x] Were your changes tested using all available themes (see theme switcher in the header of the deploy preview, under the "Settings" icon)?
[x] Were your changes tested in the example app?
[x] Is there adequate test coverage for your changes?
[x] Consider whether this change needs to reviewed/QA'ed for accessibility (a11y). If so, please add wittjeff and adamstankiewicz as reviewers on this PR.

Post-merge Checklist

[ ] Verify your changes were released to NPM at the expected version.
[ ] If you'd like, share your contribution in #show-and-tell.
[ ] 🎉 🙌 Celebrate! Thanks for your contribution.

Thanks for the pull request, @Inferato!
When this pull request is ready, tag your edX technical lead.

:tada: This PR is included in version 20.3.1 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Create and publish official Grafana Dashboard

Is your feature request related to a problem? Please describe.
People may be taking the time to make their own dashboards. (at least we did last year). We can provide an out-of-box Grafana Dashboard.
Describe the solution you'd like
Create and maintain the official Deschduler Grafana dashboard in this repo and publish it to Grafana Dashboard Marketplace
Add the Dashboard link in the README.
Describe alternatives you've considered
-
Additional context
-

Yes please!

/remove-lifecycle rotten
/reopen

This would be great to have a starting point , is there any sample anyone can share ?

/remove-lifecycle rotten

Here's a very rough single-panel descheduler Grafana dashboard: https://gist.githubusercontent.com/aslafy-z/1a7f8cde84285bf578c9146dd95a9dcf/raw/eb50a0a0756de9076b97d0267322c87b170de51f/descheduler-grafana-dashboard.json

/remove-lifecycle stale

Here's a very rough single-panel descheduler Grafana dashboard: https://gist.githubusercontent.com/aslafy-z/1a7f8cde84285bf578c9146dd95a9dcf/raw/eb50a0a0756de9076b97d0267322c87b170de51f/descheduler-grafana-dashboard.json

Hi @aslafy-z, is this dashboard working for you?

@mrclrchtr I updated a the query with a missing field, however, it's just a filter. It works for me for version v0.26.0.

Thank you. I have tried it and unfortunately it only works for me if you explicitly select a strategy.
If I deselect the filter, it shows nothing.
After changing the query to: sum(descheduler_pods_evicted{namespace=~"$namespace",strategy=~"$strategy"}) by (namespace,strategy,result) it's always showing some data.

You're right, the query was missing a ~ to support multiple strategies. It's now fixed.

/remove-lifecycle stale


python_3.4.4_x64 + win7_x64 :python.exe crashed!

one error  info in the control is:
[E 160123 00:05:10 app:61] WebDav interface not enabled: ImportError("No module named 'wsgidav'",)
And I input "http://localhost:5000/" in browser, the webui looks good.But when i create a project and run ,Python Crashed!
the crash reason is the "No module named 'wsgidav'" error?
I find the wsgidav module in github doesn't support python3k, but the pyspider  support python3k, why?
thx

http://docs.pyspider.org/en/latest/Frequently-Asked-Questions/#does-pyspider-work-with-windows
wsgidav is an optional feature, you can still using pyspider without wsgidav

Copy that,  thx very much

After testing python 3.4.4 x86 + win7 64,
it works ~~
thx very much


about settings

I edited the settings but it still says so. Please run /settings to set up the bot first!

remove comma after last object. would recommend you looking into how JSON works.


nix build is broken

Regression?
Yes
System Info and Version
 System/Version info
Hyprland, built from branch  at commit a6315b0af4e417cf396649d9c5792d3c5420b713  ().
Date: 2024-08-31
Tag: , commits: a6315b0af4e417cf396649d9c5792d3c5420b713

flags: (if any)

System Information:
System name: Linux
Node name: nixos
Release: 6.10.7
Version: #1-NixOS SMP PREEMPT_DYNAMIC Thu Aug 29 15:36:13 UTC 2024

os-release: ANSI_COLOR="1;34"
BUG_REPORT_URL="https://github.com/NixOS/nixpkgs/issues"
BUILD_ID="24.11.20240830.3ff6eeb"
DOCUMENTATION_URL="https://nixos.org/learn.html"
HOME_URL="https://nixos.org/"
ID=nixos
IMAGE_ID=""
IMAGE_VERSION=""
LOGO="nix-snowflake"
NAME=NixOS
PRETTY_NAME="NixOS 24.11 (Vicuna)"
SUPPORT_URL="https://nixos.org/community.html"
VERSION="24.11 (Vicuna)"
VERSION_CODENAME=vicuna
VERSION_ID="24.11"

Description
Fail to build with nix from the latest commit.
How to reproduce
Running nix build --no-link "github:hyprwm/Hyprland?submodules=1" gives error.
Crash reports, logs, images, videos
Here is the build error log,
Running phase: unpackPhase
@nix { "action": "setPhase", "phase": "unpackPhase" }
unpacking source archive /nix/store/4y9vhhi2fjilfgyihfx9inhfxqwkqkny-source
source root is source
Running phase: patchPhase
@nix { "action": "setPhase", "phase": "patchPhase" }
applying patch /nix/store/fgnvwi3358w0759rwrx49i1f76wqvqag-stdcxx.patch
patching file CMakeLists.txt
Hunk #1 succeeded at 66 (offset 2 lines).
Running phase: updateAutotoolsGnuConfigScriptsPhase
@nix { "action": "setPhase", "phase": "updateAutotoolsGnuConfigScriptsPhase" }
Running phase: configurePhase
@nix { "action": "setPhase", "phase": "configurePhase" }
fixing cmake files...
cmake flags: -GNinja -DCMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY=OFF -DCMAKE_FIND_USE_PACKAGE_REGISTRY=OFF -DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_TESTING=OFF -DCMAKE_INSTALL_LOCALEDIR=/nix/store/63vmdkdhwcgd20l7mzl1yzb210fk08l9-hyprland-0.42.0+date=2024-09-07_312411f/share/locale -DCMAKE_INSTALL_LIBEXECDIR=/nix/store/63vmdkdhwcgd20l7mzl1yzb210fk08l9-hyprland-0.42.0+date=2024-09-07_312411f/libexec -DCMAKE_INSTALL_LIBDIR=/nix/store/63vmdkdhwcgd20l7mzl1yzb210fk08l9-hyprland-0.42.0+date=2024-09-07_312411f/lib -DCMAKE_INSTALL_DOCDIR=/nix/store/63vmdkdhwcgd20l7mzl1yzb210fk08l9-hyprland-0.42.0+date=2024-09-07_312411f/share/doc/hyprland -DCMAKE_INSTALL_INFODIR=/nix/store/63vmdkdhwcgd20l7mzl1yzb210fk08l9-hyprland-0.42.0+date=2024-09-07_312411f/share/info -DCMAKE_INSTALL_MANDIR=/nix/store/ljb612h3jinbgh0aaikg41lmxgjkavcv-hyprland-0.42.0+date=2024-09-07_312411f-man/share/man -DCMAKE_INSTALL_OLDINCLUDEDIR=/nix/store/byyzazkwhj81dlpsvs2myi3aa7pj9cbr-hyprland-0.42.0+date=2024-09-07_312411f-dev/include -DCMAKE_INSTALL_INCLUDEDIR=/nix/store/byyzazkwhj81dlpsvs2myi3aa7pj9cbr-hyprland-0.42.0+date=2024-09-07_312411f-dev/include -DCMAKE_INSTALL_SBINDIR=/nix/store/63vmdkdhwcgd20l7mzl1yzb210fk08l9-hyprland-0.42.0+date=2024-09-07_312411f/sbin -DCMAKE_INSTALL_BINDIR=/nix/store/63vmdkdhwcgd20l7mzl1yzb210fk08l9-hyprland-0.42.0+date=2024-09-07_312411f/bin -DCMAKE_INSTALL_NAME_DIR=/nix/store/63vmdkdhwcgd20l7mzl1yzb210fk08l9-hyprland-0.42.0+date=2024-09-07_312411f/lib -DCMAKE_POLICY_DEFAULT_CMP0025=NEW -DCMAKE_OSX_SYSROOT= -DCMAKE_FIND_FRAMEWORK=LAST -DCMAKE_STRIP=/nix/store/bg7ldwzfb914cwd5w92yy4bifc694ji9-gcc-wrapper-14.2.0/bin/strip -DCMAKE_RANLIB=/nix/store/bg7ldwzfb914cwd5w92yy4bifc694ji9-gcc-wrapper-14.2.0/bin/ranlib -DCMAKE_AR=/nix/store/bg7ldwzfb914cwd5w92yy4bifc694ji9-gcc-wrapper-14.2.0/bin/ar -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_INSTALL_PREFIX=/nix/store/63vmdkdhwcgd20l7mzl1yzb210fk08l9-hyprland-0.42.0+date=2024-09-07_312411f -DNO_XWAYLAND:BOOL=FALSE -DLEGACY_RENDERER:BOOL=FALSE -DNO_SYSTEMD:BOOL=FALSE
-- The C compiler identification is GNU 14.2.0
-- The CXX compiler identification is GNU 14.2.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /nix/store/bg7ldwzfb914cwd5w92yy4bifc694ji9-gcc-wrapper-14.2.0/bin/gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /nix/store/bg7ldwzfb914cwd5w92yy4bifc694ji9-gcc-wrapper-14.2.0/bin/g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Gathering git info
fatal: not a git repository (or any parent up to mount point /)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
fatal: not a git repository (or any parent up to mount point /)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
fatal: not a git repository (or any parent up to mount point /)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
CMake Error at CMakeLists.txt:29 (add_subdirectory):
  The source directory

    /build/source/subprojects/udis86

  does not contain a CMakeLists.txt file.

-- Found PkgConfig: /nix/store/fcmc82gp5qc0s8qvcw4c0w46c67zd295-pkg-config-wrapper-0.29.2/bin/pkg-config (found version "0.29.2")
-- Found wayland-protocols at //nix/store/sm9mxbw5lanjmabjgd53yps0b9j3lrc9-wayland-protocols-1.36/share/wayland-protocols
-- Found wayland-scanner pkgdatadir at //nix/store/yk96nkhw7fvqjglj36980a886lbhvh7m-wayland-scanner-1.23.0/share/wayland
-- Configuring Hyprland in Release with CMake
-- Checking deps...
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE
-- Found OpenGL: /nix/store/jz5imlpjk5a01224mimn6bsp9v0wrlgb-libglvnd-1.7.0/lib/libOpenGL.so  found components: GLES3
-- Checking for module 'hyprutils>=0.2.1'
--   Found hyprutils, version 0.2.1
-- Checking for modules 'aquamarine;xkbcommon;uuid;wayland-server;wayland-protocols;cairo;pango;pangocairo;pixman-1;xcursor;libdrm;libinput;gbm;gio-2.0;hyprlang>=0.3.2;hyprcursor>=0.1.7;hyprutils>=0.2.1'
--   Found aquamarine, version 0.3.3
--   Found xkbcommon, version 1.7.0
--   Found uuid, version 2.39.4
--   Found wayland-server, version 1.23.0
--   Found wayland-protocols, version 1.36
--   Found cairo, version 1.18.0
--   Found pango, version 1.52.2
--   Found pangocairo, version 1.52.2
--   Found pixman-1, version 0.43.4
--   Found xcursor, version 1.2.2
--   Found libdrm, version 2.4.122
--   Found libinput, version 1.26.1
--   Found gbm, version 24.2.1
--   Found gio-2.0, version 2.80.4
--   Found hyprlang, version 0.5.2
--   Found hyprcursor, version 0.1.9
--   Found hyprutils, version 0.2.1
Package expat was not found in the pkg-config search path.
Perhaps you should add the directory containing `expat.pc'
to the PKG_CONFIG_PATH environment variable
Package 'expat', required by 'fontconfig', not found
Package expat was not found in the pkg-config search path.
Perhaps you should add the directory containing `expat.pc'
to the PKG_CONFIG_PATH environment variable
Package 'expat', required by 'fontconfig', not found
Package expat was not found in the pkg-config search path.
Perhaps you should add the directory containing `expat.pc'
to the PKG_CONFIG_PATH environment variable
Package 'expat', required by 'fontconfig', not found
Package expat was not found in the pkg-config search path.
Perhaps you should add the directory containing `expat.pc'
to the PKG_CONFIG_PATH environment variable
Package 'expat', required by 'fontconfig', not found
-- Looking for execinfo.h
-- Looking for execinfo.h - found
-- Configuration supports execinfo
-- Looking for backtrace in execinfo
-- Looking for backtrace in execinfo - not found
-- Looking for sys/timerfd.h
-- Looking for sys/timerfd.h - found
-- Checking for module 'epoll-shim'
--   No package 'epoll-shim' found
-- XWAYLAND Enabled (NO_XWAYLAND not defined) checking deps...
-- Checking for modules 'xcb;xcb-render;xcb-xfixes;xcb-icccm;xcb-composite;xcb-res;xcb-errors'
--   Found xcb, version 1.17.0
--   Found xcb-render, version 1.17.0
--   Found xcb-xfixes, version 1.17.0
--   Found xcb-icccm, version 0.4.2
--   Found xcb-composite, version 1.17.0
--   Found xcb-res, version 1.17.0
--   Found xcb-errors, version 1.0.1
-- SYSTEMD support is requested (NO_SYSTEMD not defined)...
-- Setting precompiled headers
-- Setting link libraries
-- Checking for module 'hyprutils>=0.1.1'
--   Found hyprutils, version 0.2.1
-- Checking for modules 'tomlplusplus;hyprutils>=0.1.1'
--   Found tomlplusplus, version 3.4.0
--   Found hyprutils, version 0.2.1
-- Configuring incomplete, errors occurred!

https://github.com/hyprwm/Hyprland/issues/5891
Should be git+https://github.com/hyprwm/hyprland?submodules=1


Avoid regex allocations by checking arity condition first

Description
Hi, I am trying to optimize YARD a bit to speed up documentation runs on a large codebase.
The codebase is private, so I am using https://github.com/watir/watir/ as a smaller stand-in to report benchmarking numbers from https://github.com/SamSaffron/memory_profiler.
Test set-up

Ruby 2.7.6 (installed via rvm on Linux)
Watir version: 293bed2b57c
MemoryProfiler version: 1.0.0
YARD baseline: 0a550939f9b
Test command:

ruby-memory-profiler --no-color --retained-strings=500 --allocated-strings=500 --max=300 -o prof.log ./run-yard.rb stats

run-yard.rb is a smaller version of /bin/yard (MemoryProfiler was not able to run /bin/yard)
I am using the stats command to avoid memory exhaustion

Performance data

Before

Total allocated: 187901758 bytes (1987572 objects)
Total retained:  4052113 bytes (53463 objects)

After

Total allocated: 187895022 bytes (1987442 objects)
Total retained:  4052113 bytes (53463 objects)

Savings

Total allocated: 6736 bytes (130 objects)
Total retained:  0 bytes (0 objects)

Completed Tasks

[x] I have read the Contributing Guide.
[x] The pull request is complete (implemented / written).
[x] Git commits have been cleaned up (squash WIP / revert commits).
[x] I wrote tests and ran bundle exec rake locally (if code is attached to PR).

Great change, thanks!