Change direct access handling to support JupyterHub

Closes #444
Currently, earthaccess attempts to determine a client's AWS region by by accessing EC2 metadata at IP <IP_ADDRESS>. However, Zero-to-Jupyterhub-k8s explicitly denies access to the EC2 metadata endpoint for security.
jupyterhub/zero-to-jupyterhub-k8s/jupyterhub/values.yaml
  cloudMetadata:
    # block set to true will append a privileged initContainer using the
    # iptables to block the sensitive metadata server at the provided ip.
    blockWithIptables: true
    ip: <IP_ADDRESS>

This means that no JupyterHub can currently take advantage of direct access unless it is configured to bypass recommended security settings. Additionally, it fails falsely, informing the user that they are not in us-west-2 even if they are. There is a workaround, in which you can set in_region to True before attempting direct access, but you have to know to do this and know to ignore the incorrect out-of-region error.
This PR removes the in_region member variable and adds out_of_region_handling and access parameters to the API download function and the store.get functions.
Unless access is set to external, direct access will be attempted under the assumption that it will succeed. If it fails and out_of_region_handling is set to "raise" (the default value), the exception is raised. If direct access fails and out_of_region_handling is set to "handle," a warning is raised, the exception is printed in the warning, and HTTPS is attempted.
If 'access' is set to external, HTTPS access will be used, and direct access will not be attempted at all.

Pull Request (PR) draft checklist - click to expand

[ X] Please review our
contributing documentation
before getting started.
[ X] Populate a descriptive title. For example, instead of "Updated README.md", use a
title such as "Add testing details to the contributor section of the README".
Example PRs: #763
[ X] Populate the body of the pull request with:

A clear description of the change you are proposing.
Links to any issues resolved by this PR with text in the PR description, for
example closes #1. See
GitHub docs - Linking a pull request to an issue.

[ X] Update CHANGELOG.md with details about your change in a section titled
## Unreleased. If such a section does not exist, please create one. Follow
Common Changelog for your additions.
Example PRs: #763
[ X] Update the documentation and/or the README.md with details of changes to the
earthaccess interface, if any. Consider new environment variables, function names,
decorators, etc.

Click the "Ready for review" button at the bottom of the "Conversation" tab in GitHub
once these requirements are fulfilled. Don't worry if you see any test failures in
GitHub at this point!

Pull Request (PR) merge checklist - click to expand
Please do your best to complete these requirements! If you need help with any of these
requirements, you can ping the @nsidc/earthaccess-support team in a comment and we
will help you out!

[ ] Add unit tests for any new features.
[X ] Apply formatting and linting autofixes. You can add a GitHub comment in this Pull
Request containing "pre-commit.ci autofix" to automate this.
[ ] Ensure all automated PR checks (seen at the bottom of the "conversation" tab) pass.
[ ] Get at least one approving review.

📚 Documentation preview 📚: https://earthaccess--880.org.readthedocs.build/en/880/

pre-commit.ci autofix

I need to add tests for the out_of_region_handling argument, but I could use some help figuring out how best to do that. I have all unit and integration tests passing on a JupyterHub in us-west-2 but I don't fully understand how the GitHub actions environment where they will run is set up. Should we test for direct access failing (since I am guessing it won't be in us-west-2) and mock the case where it succeeds?

Really happy to see action on #444! Is there a link to any discussion notes leading to the decision to yank in_region? I'm not opposed, but I think its a decision that merits documentation?
Why not include the access kwarg for earthaccess.open, so that its logic is the same as for earthaccess.download?

@Alex-Lewandowski, thanks for re-raising this issue. This is definitely a long-standing issue that deserves attention.
I believe a thorough solution would be a bit more involved, as there are many issues that have been created around this general problem, so I've just opened a new discussion for this, as I feel it warrants deeper design discussion: https://github.com/nsidc/earthaccess/discussions/881
Although I appreciate your effort in this PR, I suggest you close it in light of the further discussion it warrants. In the end, the solution in this PR adds more parameters to an already rather cluttered list of parameters for the relevant functions. As part of the discussion, I want to see the parameter list simplified, yet provide more general support for this general issue.

Really happy to see action on #444! Is there a link to any discussion notes leading to the decision to yank in_region? I'm not opposed, but I think its a decision that merits documentation?
Why not include the access kwarg for earthaccess.open, so that its logic is the same as for earthaccess.download?

Hi @itcarroll! There is a bit of discussion on the topic at the bottom of #444. It appears that there is no reliable way to determine a client's region. Boto will provide the default region that the user defined in their configuration, which is not guaranteed to be correct. Most JupyterHubs block access to the EC2 metadata endpoint that earthaccess is currently using to set in_region.

@Alex-Lewandowski, thanks for re-raising this issue. This is definitely a long-standing issue that deserves attention.
I believe a thorough solution would be a bit more involved, as there are many issues that have been created around this general problem, so I've just opened a new discussion for this, as I feel it warrants deeper design discussion: #881
Although I appreciate your effort in this PR, I suggest you close it in light of the further discussion it warrants. In the end, the solution in this PR adds more parameters to an already rather cluttered list of parameters for the relevant functions. As part of the discussion, I want to see the parameter list simplified, yet provide more general support for this general issue.

@chuckwondo Okay, it sounds like more discussion is warranted. I will close the PR.


Determine the best mono version to include

Currently we are using the latest version of mono build for Ubuntu 20.04.  This results in a more up to date image but is also 752MB in size vs 584MB if we use the packages from Ubuntu for 20.04.
More testing is needed with the OpenSimulator builds and operational images to determine what pros/cons may exist for the different versions.

It has been decided that the latest available package from the mono project is preferred to the older one from the Ubuntu packages.


FastFetchTests functional test fails intermittently

Test failure logs:
2018-08-17T02:06:15.5470876Z 1) Failed : GVFS.FunctionalTests.Tests.FastFetchTests.ForceCheckoutRequiresCheckout()
2018-08-17T02:06:15.5471137Z   Expected: 0
2018-08-17T02:06:15.5471330Z   But was:  1
2018-08-17T02:06:15.5471883Z    at GVFS.Tests.Should.ValueShouldExtensions.ShouldEqual[T](T actualValue, T expectedValue, String message) in C:\agent\_work\4\s\GVFS\GVFS.Tests\Should\ValueShouldExtensions.cs:line 34
2018-08-17T02:06:15.5472355Z    at GVFS.FunctionalTests.Tests.FastFetchTests.RunFastFetch(String args) in C:\agent\_work\4\s\GVFS\GVFS.FunctionalTests\Tests\FastFetchTests.cs:line 496
2018-08-17T02:06:15.5472804Z    at GVFS.FunctionalTests.Tests.FastFetchTests.ForceCheckoutRequiresCheckout() in C:\agent\_work\4\s\GVFS\GVFS.FunctionalTests\Tests\FastFetchTests.cs:line 145

Failed Builds:
18229.1

@kyle-rader can you please take a look at this test flakiness?

This is a reliable failure, not intermittent or flaky. The test case is calling a method that expects the fastfetch verb to succeed, even though the test is explicitly running a command that will fail. @kyle-rader please rework this test ASAP to make it pass.
@kewillford why did this make it through our build policy? Looking in the PR (https://github.com/Microsoft/VFSForGit/pull/159), Kyle ran the full tests and they show success in the PR, but when you click through to the report (https://gvfs.visualstudio.com/ci/_build/results?buildId=551&view=logs) it shows that the test actually failed there too.


Switch to TODOGroup Repolinter Repository

Summary
At the moment, repolinter-action is based on newrelic-forks/repolinter instead of todogroup/repolinter for to allow me to respond quickly to bugs in repolinter. While this is useful in the context of moving quickly, it becomes difficult to maintain as both the fork and the action must be periodically updated to reflect changes in the original repolinter. I propose that this action be moved from the newrelic-forks repolinter to the todogroup repolinter once version v1.6.0 is battle-tested in the New Relic organization and this project has begun changing ownership to the todogroup, as by this point this project is mostly feature complete.

The PR to merge the newrelic-forks/repolinter fork into the parent Repolinter has been accepted.


Cannot unpin from favourites - but get missing folder message

Description
See the pic, every time I start Files, I get this error message, it probably pertains to the O drive which is an external USB drive which is usually OFF.
I have used the RH menu button in Files to choose to Remove From Favourites, so I no longer get this message, but Remove From Favourites does not work with a drive that is not mounted... yet it assumes that when the drive is OFF, that it has been deleted. I don't know if this is a bug or a need for a feature request, but needed to be reported.

Thanks,
Mark.
Steps To Reproduce
add a USB drive to favourites
eject USB drive
reboot system.
Requirements
1/ be able to remove unmounted drives from favourites
2/ be able to have unmounted drives in favourites without getting an error message about it being deleted.
Files Version
<IP_ADDRESS>
Windows Version
10.0.22631.2050
Log File
debug.log

Thank you for reporting this issue, this issue is resolved in our dev branch and will be included in the next release.

@yaira2 Do you say about #13042? This seems another issue.

I think it's the same, in both cases it's where the folder cannot be located.

How about this?

2/ be able to have unmounted drives in favourites without getting an error message about it being deleted.

That part wasn't resolved 👍


[BUG] Windows Store / UWP Apps not launching.

Describe the bug
Optimization completes save for one error (see logs below) but I'm able to install the image on a real machine. It seems as though selected UWP apps (Whitelist) are installed, but upon trying to launch them nothing happens (including Microsoft Store). When inspecting "App Settings", UWP apps are listed as having 0 bytes of data used (EDIT: for example, on my other machine the Calculator UWP app says 0 bytes under "App" but 88kb under "Data" and "Total Usage", meanwhile on the new machine / optimized image, all fields show 0 bytes) Image seems to function fine other than this, but have not done extensive testing.
Please complete the following information:

Optimize-Offline version: <IP_ADDRESS>
Image Name: Windows 10 Pro
Image Build: 19041.84
Host Environment: Windows 10 Pro
Parameters Passed:

	; Configuration.json:

"SourcePath": "C:\\Users\\Anderson\\Desktop\\Windows.iso",
  "WindowsApps": "Whitelist",
  "SystemApps": false,
  "Capabilities": false,
  "Packages": false,
  "Features": false,
  "DeveloperMode": false,
  "WindowsStore": false,
  "MicrosoftEdge": false,
  "Win32Calc": false,
  "Dedup": false,
  "DaRT": "Setup",
  "Registry": true,
  "Additional": {
    "Setup": false,
    "Wallpaper": false,
    "SystemLogo": false,
    "LockScreen": false,
    "RegistryTemplates": true,
    "LayoutModification": true,
    "Unattend": true,
    "Drivers": false,
    "NetFx3": true
  },
  "ISO": "No-Prompt"

Additional files
	; AppxWhitelist.json:

{
  "DisplayName": [
    "Microsoft.BingWeather",
    "Microsoft.DesktopAppInstaller",
    "Microsoft.HEIFImageExtension",
    "Microsoft.MicrosoftStickyNotes",
    "Microsoft.Office.OneNote",
    "Microsoft.People",
    "Microsoft.ScreenSketch",
    "Microsoft.StorePurchaseApp",
    "Microsoft.VP9VideoExtensions",
    "Microsoft.WebMediaExtensions",
    "Microsoft.WebpImageExtension",
    "Microsoft.WindowsAlarms",
    "Microsoft.WindowsCalculator",
    "Microsoft.WindowsCamera",
    "microsoft.windowscommunicationsapps",
    "Microsoft.WindowsMaps",
    "Microsoft.WindowsStore",
    "Microsoft.Xbox.TCUI",
    "Microsoft.XboxApp",
    "Microsoft.XboxGameOverlay",
    "Microsoft.XboxGamingOverlay",
    "Microsoft.XboxIdentityProvider",
    "Microsoft.XboxSpeechToTextOverlay"
  ]
}

Log files
	; OptimizeErrors.log:

Index     : 0
Exception : Exception calling "Insert" with "2" argument(s): "Specified argument was out of the
            range of valid values.

***************************************************************************************************
Optimizations Finalized : 04/28/2020 07:09:13 PM
***************************************************************************************************

	; PackageSummary.log:

	Integrated Windows Packages

PackageName                                                                      PackageState
-----------                                                                      ------------
Microsoft-Windows-NetFx3-OnDemand-Package~31bf3856ad364e35~amd64~~10.0.19041.1 InstallPending

	; RegistrySettings.log:

Disabling Cortana and Search Bar Web Connectivity.
Disabling System Telemetry, Logging, Data Collecting and Advertisements.
Disabling Windows Tracking.
Disabling System Location Sensors.
Disabling the Password Reveal Button.
Disabling Cross-Device Sharing and Shared Experiences.
Disabling WiFi Sense.
Disabling Microsoft Toast and Lockscreen Notifications.
Disabling Connected Drive Autoplay and Autorun.
Disabling Automatic Download File Blocking.
Disabling the Modern UI Swap File.
Disabling Reserved Storage.
Disabling the Automatic Clean-up of Downloads by Storage Sense.
Disabling the First Log-on Animation.
Disabling the Windows Start-up Sound.

Enabling the Search Icon on Taskbar.
Enabling the Driver Letter before Drive Name.
Optimizing Taskbar Icons and Transparency.
Enabling File Explorer Launch to This PC.
Disabling Wallpaper .JPEG Quality Reduction.
Disabling the Sign-in Screen Acrylic Blur.
Disabling the Trailing Text for Shortcuts.
Enabling Command Prompt on the Win+X Quick Link Menu.
Disabling Microsoft Edge Desktop Shortcut Creation and Pre-Launching.
Disabling Pinned Windows Store, Windows Mail and People Icons.
Reducing Start Menu Delay.
Enabling TaskBar Icon Combining with Small Icons.
Disabling the Open File Prompt.
Enabling the Classic Personalization Panel.
Enabling This PC Desktop Icon.
Removing Edit with Paint 3D and 3D Print from the Context Menu.
Restoring Windows Photo Viewer.
Removing User Folders from Explorer.
Increasing the Icon Cache Size.
Disabling the Sticky Keys Prompt.
Disabling Enhanced Pointer Precision.
Removing Give Access To, Share and Cast To Device from the Context Menu.
Removing Restore Previous Versions from the Context Menu.
Adding Reboot to Recovery to This PC.
Enabling Long File Paths.
Enabling Strong Cryptography for .NET Applications.

I have got exactly the samy problem as "aharte17"
Describe the bug
Optimization finished with one error. MS App Store doesn't work. In Microsoft Store specification windows the data and total usage is showing 0 bytes.
Screenshots

Please complete the following information:

Image Name: 19041.208.ISO
Image Build: 19041.208
Host Environment: Windows 10 1909 Enterprise
Parameters Passed: WindowsApps "whitelist" -SystemApps -Capabilities -Packages -Features

Configuration.json:
"SourcePath": "C:\Deployment\Optimize-Offline-master\19041.208.ISO",
"WindowsApps": "Whitelist",
"SystemApps": true,
"Capabilities": true,
"Packages": false,
"Features": true,
"DeveloperMode": false,
"WindowsStore": false,
"MicrosoftEdge": false,
"Win32Calc": true,
"Dedup": true,
"DaRT": "Setup",
"Registry": true,
"Additional": {
"Setup": true,
"Wallpaper": false,
"SystemLogo": false,
"LockScreen": false,
"RegistryTemplates": false,
"LayoutModification": false,
"Unattend": false,
"Drivers": true,
"NetFx3": true
},
"ISO": "No-Prompt"
}
Log files
Index     : 0
Exception : Exception calling "Insert" with "2" argument(s): "Specified argument was out of the range of valid values.
Parameter name: startIndex"
Category  : NotSpecified: (:) [], MethodInvocationException
ErrorID   : ArgumentOutOfRangeException
Target    :
Command   : $WinpeshlString.Insert(77, '%SYSTEMDRIVE%\setup.exe') | Out-File -FilePath (GetPath -Path $BootMount -Child
'Windows\System32\winpeshl.ini') -Force
Script    : C:\Deployment\Optimize-Offline-master\Optimize-Offline.psm1
Line      : 1189
Column    : 5
RegistrySettings.log
Optimize-Offline.log
PackageSummary.log

This should be corrected in the new version of Optimize-Offline that was just pushed to Github.

Thank you, issue has been fixed, I can confirm.

Seconding MajkelP, this is no longer happening. Thank you!


check for versions of downloaded k8s binaries

We should check for versions of downloaded k8s binaries. Otherwise we could have a lot version conflicts between downloaded ones and expected ones.

Resolved via https://github.com/kinvolk/kube-spawn/pull/161


socket network behavior analysis

Is your feature request related to a problem? Please describe.
We have seen bugs in the system where the behavior of the system could not be explained unless we have a deeper understanding of the internals of TCP. Under this task, we will analyze and come up with recommendations for dealing with unreliable networks.
Describe the solution you'd like
Come up with recommendations that can be brainstormed and implemented
Describe alternatives you've considered
NA
Additional context
NA
Task checklist:

[x] 1. Log socket exceptions properly
[ ] 2. Analyse case when stale connections receive data
[x] 3. Disable Nagle's algorithm(enable tcpNoDelay)
[ ] 4. Close verb

Work done so far:
https://docs.google.com/document/d/1doXuXpOJ2G4pFIm5dRbr8Mc98L2QAdDlEcJu4FRQrss/edit?usp=sharing

Discussed on today's architecture call.  @cconstab will review.  @VJag what other next steps are on deck?  TY

Yes, we need some more time to discuss what I have presented in the call yesterday.

linking PRs to issue rather that linking issue to PRs as the latter will close the issue after merging any one PR
Task 1: PR: https://github.com/atsign-foundation/at_server/pull/884 (most of the logs were already present added one more)
Task 3: PR1: at_server: https://github.com/atsign-foundation/at_server/pull/892
PR2: at_lookup: https://github.com/atsign-foundation/at_libraries/pull/227

Task 2:

PR: https://github.com/atsign-foundation/at_server/pull/908

@srieteja any update

@gkc the sub-tasks created under this issue(mentioned in the description) have been completed and tested. I'm currently working on getting the PRs merged.


[WEB] "Fight Pandemics" text and logo on the browser tab

Hi Team,
the "Fight Pandemics" text on the browser tab should be corrected to "FightPandemics" in order to be consistent with the text within all pages,
Also the logo, should be set to the new one.

Thanks,
Tiago

title fixed here
https://github.com/FightPandemics/FightPandemics/pull/429
do you have the new logo?

@stavares843  can you please check with @Yu Zhao where the logo is available please?

reopen because still missing updating the logo

@stavares843  it seems for me that this ok now, do you confirm?

Issue is resolved.

Updating the logo, it's not fixed yet

@snowiesuet  is there something missing for the logo?

@tiagocostasilva @snowiesuet this still has to be fixed?

@tiagocostasilva is in vacations for 1 more week. @ppagarawal can you help us here? We also need the meta tags! Andrea Ang and Sanchit Finished them.

@robinv85 Please close this as the changes in this tickets have been made. I will raise another ticket for metatags


Donut Chart is not showing all the labels.

I have 5 labels but Donut Chart picks 4 label randomly and show and ignores last one

 var entries = new Microcharts.Entry[]
             {
                 new Microcharts.Entry(5)
                {
                    Label = "A",
                    ValueLabel = "5",
                    Color = Common.Tools.GetValueTagColor("A")
                },
                new Microcharts.Entry(1)
                {
                    Label = "B",
                    ValueLabel = "1",
                    Color = Common.Tools.GetValueTagColor("B")
                },
                new Microcharts.Entry(4)
                {
                    Label = "C",
                    ValueLabel = "4",
                    Color = Common.Tools.GetValueTagColor("C")
                },
                new Microcharts.Entry(3)
                {
                    Label = "D",
                    ValueLabel = "3",
                    Color = Common.Tools.GetValueTagColor("D")
                },
                 new Microcharts.Entry(2)
                {
                    Label = "F",
                    ValueLabel = "2",
                    Color = Common.Tools.GetValueTagColor("F")
                }
             };

            chartView.Chart = new Microcharts.DonutChart()
            {
                Entries = entries,
                Margin = 30,
                LabelTextSize = 50,
                HoleRadius = 0.5f,
                MinValue = 1,
                MaxValue = 5
            };

Since this seems to be a stale repo (and the best option out there), I've forked it and will continue to maintain it myself -> https://github.com/Nixon-Joseph/Microcharts. I don't have the nuget package built yet (11/14/2018), but plan to by end of day.
I am a busy person, so likely won't be able to address issues immediately, but am fully supportive of forks and support. I do plan on fixing what I can when I can.

@pakbaz
Just for completeness, can you please provide some information about your project? i.e. Xamarin version, native or forms, is this issue specific to one platform, what does the view you're putting this in look like. That sort of thing.


Project's docs aren't built if --open isn't specified

I'll see if I can write up a PR to fix this

Fixed by #4


run debug with mount opts

Thank you for writing this tool.
I want to add a new function to mount the host's directory into debug container.
Tools such as bcc tools need to mount the host directory to use。
ref https://github.com/iovisor/bcc/blob/c2e2a26b8624492018a14d5eebd4a50b869c911f/QUICKSTART.md#quick-start-guide

It's a good idea to debug by bcc.

You can browse via /proc:
cd /proc/1/root/


Deploy new changes

@bilalshaikh42

Before this is merged, these new images need to be pulled into the cluster

ghcr.io/biosimulators/pysces:0.9.9
ghcr.io/biosimulators/cobrapy:0.20.0

I have added in the new images. Before merging, we need to manually check that the dev deployment is working end to end.
At some point, we will need to add in some automated tests for that.

I have added in the new images. Before merging, we need to manually check that the dev deployment is working end to end.
At some point, we will need to add in some automated tests for that.

@bilalshaikh42 Yes, we should manually check changes that affect runBioSimulations while we're waiting on review from NAR.
At the moment, I just want to deploy simulators-api and simulators. biosimulators.dev looks good.
From what I can tell, merging this PR will trigger the deployment repo to deploy new versions of all of the apps. How should I deploy just the 2 apps?

@bilalshaikh42 Yes, we should manually check changes that affect runBioSimulations while we're waiting on review from NAR.
At the moment, I just want to deploy simulators-api and simulators. biosimulators.dev looks good.
From what I can tell, merging this PR will trigger the deployment repo to deploy new versions of all of the apps. How should I deploy just the 2 apps?

The repo is designed so that all of the applications always remain in sync. This way a change to the data structures of one app won't cause other depending app to fail since that would be enforced at build time.
For now, we could just manually change the tag of the image in the deployment repo to the latest Dev tag. But overall, it's really not designed to work that way.
We could look into allowing for more independent deployments, but a better solution would be better testing

The repo is designed so that all of the applications always remain in sync. This way a change to the data structures of one app won't cause other depending app to fail since that would be enforced at build time.
For now, we could just manually change the tag of the image in the deployment repo to the latest Dev tag. But overall, it's really not designed to work that way.
We could look into allowing for more independent deployments, but a better solution would be better testing

Deploying the apps in sync makes sense. That's what's being tested. This policy works well for the apps in this repository, but doesn't quite cover the entire ecosystem.
These changes aren't ready to merge. I noticed at least 1 issue with the example simulations. See #1863.
I can work around this for now by using an environment variable to direct the BioSimulators test suite to work with api.biosimulators.dev instead api.biosimulatos.org.

Deploying the apps in sync makes sense. That's what's being tested. This policy works well for the apps in this repository, but doesn't quite cover the entire ecosystem.
These changes aren't ready to merge. I noticed at least 1 issue with the example simulations. See #1863.
I can work around this for now by using an environment variable to direct the BioSimulators test suite to work with api.biosimulators.dev instead api.biosimulatos.org.


Downgrade tablib to 0.12.1 so python 2.7 and Django 1.8 env works with import action

Problem
Error encountered while trying to read file CSV with python 2.7 #957
Solution
Downgrade tablib to 0.12.1
Acceptance Criteria
Doc updated with good dependencies

Coverage remained the same at 93.794% when pulling f4e57b4d906cd833d42966b1bc908442864b712e on hdayacr:1.x into e7461eb6a97ebc53a99549633493473f79f0e957 on django-import-export:1.x.

Coverage remained the same at 93.794% when pulling f4e57b4d906cd833d42966b1bc908442864b712e on hdayacr:1.x into e7461eb6a97ebc53a99549633493473f79f0e957 on django-import-export:1.x.

Coverage remained the same at 93.794% when pulling f4e57b4d906cd833d42966b1bc908442864b712e on hdayacr:1.x into e7461eb6a97ebc53a99549633493473f79f0e957 on django-import-export:1.x.

Coverage remained the same at 93.794% when pulling f4e57b4d906cd833d42966b1bc908442864b712e on hdayacr:1.x into e7461eb6a97ebc53a99549633493473f79f0e957 on django-import-export:1.x.


Fix TOC links in FAQ

After doing it I noticed there is this PR, but since that one will be reopened and there are few more link fixes that were not in that PR it would be better to have this merged, and then they can do the PR on top of it without the link fixes.
Connects-to: #1050
Change-type: patch
Signed-off-by: Stevche Radevski<EMAIL_ADDRESS>

@sradevski What were the changes you made here? They aren't visible in the change log

@joehounsham It was mostly removing the - suffix from all URLs, and few of the URLs were wrong. I think it is easier to just see the changes in the PR diff.


Check log file for correct contents.

Add test helper to modify static properties.
Move external log file test into main log test class.

Thanks!


allow ranges that include midnight

haven't tested it yet

I tested it and it works now (Node.js 16.17.0, Node-RED v3.0.2)


some cleanup and dependencies added

Now the instructions are a bit more clear, and the installation process should be automatic

Muy much appreciated my friend.


安装问题

按照文档初始化出现以下问题，请问这种情况需要怎样处理；
2022-07-25 01:09:39 2949 [ERROR] Can't find messagefile '/stonedb56/install/share/errmsg.sys'
2022-07-25 01:09:39 2949 [Warning] Can't create test file /stonedb56/install/data/node1.lower-test
2022-07-25 01:09:39 2949 [Warning] Can't create test file /stonedb56/install/data/node1.lower-test
./mysqld: Can't change dir to '/stonedb56/install/data/' (Errcode: 2 - No such file or directory)
2022-07-25 01:09:39 2949 [ERROR] Aborting
2022-07-25 01:09:39 2949 [Note] Binlog end

请您到主仓库提交issue：https://github.com/stoneatom/stonedb/issues
Please post this issue to our main repo.


Question about query optimization on Functions

Suppose I want to implement a function to be applied to each row in the WHERE clause, and the first argument of the function comes from the results from a subquery, while the second argument comes from the column value, just like folllowing:
select count(*) from table where FUNCTION((select groupArray(userid) from table2), table.id);
Could Clickhouse guarantee the subquery(just select groupArray(userid) from table2) could only be executed once?

These type of subqueries (independent subqueries that return a single value) are named "scalar subqueries". They are executed only once. Yes, it is guaranteed.


Add Brier Skill and AUC metrics

Looks good. The brier_skill_score function is technically just the brier score, but that can be fixed in a later revision. Merging now.


Use a .gitignore file from another Python project

The .gitignore file in this repo has a lot of references to C# files that would never be part of a Python project.
I would copy over the .gitignore from https://github.com/TwilioDevEd/browser-calls-django/blob/master/.gitignore instead.

Ok.. I worked on the project from at some point using Python Tools for Visual Studio. It look like it add some lines to the .gitignore

Done!


Update README.md to woocommerce-api branch

I'm working on the general update, but I'm keeping #8 for the WooCommerce specifics.

Except for #8 this is pretty much done.


Drop tracker plugin

This is a drop tracker plugin, this plugin use the settings from the ground item plugin and can show drops in 2 ways
one without the settings =

one with the settings =

in the ground setting i put hide things under 100 gp, and didn't change anything else.
it is also work with the highlight items & hide items as well.
in the config file =

you can set if you want to follow the settings from the ground config
hide drops if they are 0 gp
the limit on how many drops the tracker will track before deleting them
the ability to remove drops with shift + clicking on them
*I did not knew that woox was working on similar thing up until 2 hours ago X D

@MESLewis and how I do that (I'm not very familiar with how to work with github)

Here is a guide that can help. The basics are to do an interactive rebase.

you can run checkstyle localy. See:
https://github.com/runelite/runelite/wiki/Checkstyle-with-IntelliJ-IDEA

know*, not now

@Juzzed It didn't work, maybe next time

git reset --soft <commit-SHA-before-your-first-commit>
git commit

The above will condense all of your commits into one. Otherwise, you can do the following if you want to reorder or split commits rather than commit in one go.
git rebase -i <commit-SHA-before-your-first-commit>
# follow directions from there

@Nightfirecat I'm afraid to do git reset and all that stuff because i already lost 2 projects from messing around with git.

git checkout -b branch-backup first so you don't lose it? :)


Override objc_msgSend with arguments based on selector used

Today parameters for objc_msgSend don't work well because its a varadiditc function.  By using the number of ":" in the immediate selector as a guide we can override the type at the callsite with the correct prototype

As of dev builds >= 4.1.5465 we now apply Call Type Overrides at call sites, regardless of if we were able to successfully perform a call rewrite or not.


Use offline access type

Rather than having the URL redirect to a failed localhost page and having to paste in the entire broken URL to /oauth.sh, you should use access_type=offline to get a fancy result page that gives the token to copy/paste into the offline app.

Interesting, will take a look at that as soon as I get the chance. Feel free to open a PR but make sure you test that it works 😄

I didn't think much about it when you first posted this but this is an upstream issue. It needs to be implemented in gphotos-uploader-cli or one of its dependencies (probably oauth2-noserver).

Refiled.


feat: add a KmsKeyName class

I pulled this out of my CMEK branch since it was easily separable and
reduces the size of the diff there. I put it in "common" because we may also
want to use it for storage/ etc.
@devjgm and I already discussed this a bit on #4468 - note I decided to bring
back the single-argument constructor we had discussed eliminating - it's
useful for constructing the object from the string in the proto, and I
used it in the sample code I wrote.
part of #4312

This change is

google/cloud/kms_key_name.h, line 50 at r1 (raw file):
Previously, mr-salty (Todd Derr) wrote…
even in those cases (as well as here), we don't check whether the names we're given for instance, database, etc are syntactically valid - and of course we can't feasibly ensure they're semantically valid. so IMHO just checking that the format looks "plausible" like i'm doing here doesn't really buy us much.
I've had discussions with Brad along the lines of "send it to the server and let it decide what's valid", which is kind of a guiding principle I use. Although these types of classes are a bit muddier because we have already baked some knowledge of the format into the client in the form of the multi-arg constructors that know how to turn that into a single string.

Ack. I am not arguing that this class is wrong. Just curious if you had seen any class that breaks the components of a resource path and also constructs from a full name.  I am fine with this code as-is.


{"name":"CREATE_APP_REGISTRATION","message":"App create failed! Please file an issue on Github.","stack":"Error\n at new CustomizeError (D:\Apps\Bot Framework Composer\resources\app.asar.unpacked\extensions\azurePublish\dist\extension.js:276418:25)\n at createCustomizeError (D:\Apps\Bot Framework Composer\resources\app.asar.unpacked\extensions\azurePublish\dist\extension.js:276423:10)\n at BotProjectProvision.createApp (D:\Apps\Bot Framework Composer\resources\app.asar.unpacked\extensions\azurePublish\dist\extension.js:277931:17)"}. See provision.botazure.log in your bot folder

Describe the bug

Version

Browser

[ ] Electron distribution
[x] Chrome
[ ] Safari
[ ] Firefox
[ ] Edge

OS

[ ] macOS
[x] Windows
[ ] Ubuntu

To Reproduce
Steps to reproduce the behavior:

Go to '...'
Click on '....'
Scroll down to '....'
See error

Expected behavior

Screenshots

Additional context

@Prabakaran2596
Please answer the following:

What version of Composer are you running?
What OS is Composer running on?
What version of the Bot Framework SDK is the bot running?
Is it a dotnet or node runtime bot?
Is the user that is logged in and publishing a guest of the tenant being used, or is it the users home directory?


Unify code editor fixtures for editor plugin/widget/tests

Currently there are many similar fixtures in use for the different tests. The idea is to unify this into (hopefully) a single code_editor_bot fixture.

I'm working on part of this right now. It's kind of tricky, so let me push my PR first, then you can proceed with the unification of fixtures.

I am not sure if you finished this or if this needs extra work?

This is on me. It's not critical, so we can leave it for later.


Adding a menu link to SMI Conformance

Description
A quick update to link to the new functionality page created by @KarenEfereyan and @kalradev
Signed commits

[x] Yes, I signed my commits.

Yippie! So finally, its showing up alongside performance management

😄


md5 seems to be used for checking integrity of firmware image

see src/arrow/software_release.c
MD5 is deprecated for pretty much everything;
I suggest to use a secure cryptographic hash in a secure way

MD1, SHA1 and a few others are considered weak from the cryptographic standpoint due to more likely collision than newer methods so it's not good for password hashing and its possibility of being decrypted.  From the file integrity checking standpoint, it's extremely difficult to temper the file and also manage to make it having the same MD5 checksum, so it's still being used widely for this purpose.  Also, we also have digital signature as part of the communication validation to block unwanted access already, so the MD5 is more to prevent corrupted download.


Seems like this repo is dead, head over to https://github.com/bmewburn/vscode-intelephense/

https://github.com/bmewburn/vscode-intelephense/

Ah that was my cause of confusion. @bmewburn A notice in the description + an archival would probably help.
Github allows you to move issues if you're an admin of both repositories now which should help.

Nope, The reason is just that, the language server module (intelephense) is NOT open source anymore.


Do not require leading quotes for high-entropy strings

Please check if the PR fulfills these requirements

[ ] Tests for the changes have been added

[ ] Docs have been added / updated

[ ] All CI checks are green

What kind of change does this PR introduce?
Make the quotes around high-entropy strings optional

We found that secrets are being missed if they are not quoted.

What is the current behavior?
High-entropy strings are currently required to be quoted "to reduce noise". This results in unquoted secrets being ignored, as reported in #458

What is the new behavior (if this is a feature change)?
With this change, high-entropy strings are no longer required to be quoted. 3 of the secrets not detected in #458 are detected with this change.

Does this PR introduce a breaking change?

Users may find previously-undetected secrets. They may also run into additional false positives when scanning.

Other information:

Hi @robinbowes, thank you for your contribution 😄 I'll have to look a bit into this to make sure everything is right. In the meantime, could you please merge master into your branch so you get the latest fixes I pushed?

@alexrepetskyi unfortunately I'd need the author of this PR (@robinbowes) to merge master to this branch so that the CI can run tests before approval. As the author hasn't really replied in a while, you're more than welcome to create a PR yourself with the changes contained in this branch and we can take it from there. If you can do this by the end of this month we'll include the changes in the next release.

Apologies for the delay - my branch is now up-to-date.

@robinbowes looks like some tests are failing. If you could take care of them before the end of the month I'll make sure to include these changes in the coming-up release

@robinbowes looks like some tests are failing. If you could take care of them before the end of the month I'll make sure to include these changes in the coming-up release

I'll take a look when I get a moment. At first glance, it seems that it will just need some of the tests tweaking.
This could be quite an intrusive change, btw. Existing users could hit many more false positives. Conversely, they could find many more secrets that were not previously detected!

This could be quite an intrusive change, btw. Existing users could hit many more false positives.

I guess we'll have to be careful about how we release these changes. Once this PR it's ready to be merged, @jpdakran and I will discuss this and release it in the least disruptive way possible.


Bug(go client):The cluster added a new meta node, but the meta server configuration of the go client was not updated. As a result, the client cannot find the new meta address and can only access the meta listed in the meta list

Assuming the Pegasus client is configured with a meta server list of "<IP_ADDRESS>:34602" and "<IP_ADDRESS>:34603," but the actual primary meta server for the Pegasus server is "<IP_ADDRESS>:34601," the Pegasus client will not be able to connect to the Pegasus server until a timeout occurs.
The reason is that when the go client searches for the primary, it iterates through the meta server list, sending an RPC RPC_CM_QUERY_PARTITION_CONFIG_BY_INDEX to each meta server and making a determination based on the response.
Unlike the Java client, the go client cannot directly use indirection to add meta servers not specified in the configuration to the client.
Below is the logic code for this part of the go client.
// go-client/session/meta_call.go
func (c *metaCall) issueBackupMetas(ctx context.Context) {
    for i := range c.metas {
       if i == c.lead {
          continue
       }
       // concurrently issue RPC to the rest of meta servers.
       go func(idx int) {
          c.issueSingleMeta(ctx, idx)
       }(i)
    }
}

// issueSingleMeta returns false if we should try another meta
func (c *metaCall) issueSingleMeta(ctx context.Context, i int) bool {
    meta := c.metas[i]
    resp, err := c.callFunc(ctx, meta)
    if err != nil || resp.GetErr().Errno == base.ERR_FORWARD_TO_OTHERS.String() {
       return false
    }
    // the RPC succeeds, this meta becomes the new leader now.
    atomic.StoreUint32(&c.newLead, uint32(i))
    select {
    case <-ctx.Done():
    case c.respCh <- resp:
       // notify the caller
    }
    return true
}

Here is the relevant part of the Java client code for this:
// com/xiaomi/infra/pegasus/rpc/async/MetaSession.java  onFinishQueryMeta()

synchronized (this) {
  if (needSwitchLeader) {
    if (forwardAddress != null && !forwardAddress.isInvalid()) {
      boolean found = false;
      for (int i = 0; i < metaList.size(); i++) {
        if (metaList.get(i).getAddress().equals(forwardAddress)) {
          curLeader = i;
          found = true;
          break;
        }
      }
      if (!found) {
        logger.info("add forward address {} as meta server", forwardAddress);
        metaList.add(clusterManager.getReplicaSession(forwardAddress));
        curLeader = metaList.size() - 1;
      }
    } else if (metaList.get(curLeader) == round.lastSession) {
      curLeader = (curLeader + 1) % metaList.size();
      if (curLeader == 0 && hostPort != null && round.maxResolveCount != 0) {
        resolveHost(hostPort);
        round.maxResolveCount--;
        round.maxExecuteCount = metaList.size();
      }
    }
  }
  round.lastSession = metaList.get(curLeader);
}

In summary
The primary impact of this issue is that, in the online cluster, a new meta server was added, and at some point thereafter, this meta server became the primary. Users, without changing their configurations, are unable to connect to the server.

Good point, could you submit a patch to fix it?

Good point, could you please submit a patch to fix it?

OK, get it.


[Enhancement] Compress pindex by page

Why I'm doing:
We only compress pindex by shard right now and when we enable read pindex by page, compression is disable and the pindex file maybe too large.
What I'm doing:

Support compress pindex by page so we can enable pindex compression and read by page together.
Disable parallel get for pindex by default. We support bloom filter for each pindex file so far and parallel get will cost more io most of time.

The following is a simple comparison and the test data is store_sales table from TPCDS:

PrimaryKey Length
RowNum
Compression type
Pindex file size
Pindex read bytes(Update 1/10000)

16Bytes
25920424
No compression
756MB
33.53MB

16Bytes
25920424
Shard compression
421MB
235.76MB

16Bytes
25920424
Page compression
432MB
19.43MB

The Pindex file size in page compression is almost same with shard compression and the pindex read bytes in Page compression is smaller than No compression and Shard compression.
Fixes #issue
What type of PR is this:

[ ] BugFix
[ ] Feature
[x] Enhancement
[ ] Refactor
[ ] UT
[ ] Doc
[ ] Tool

Does this PR entail a change in behavior?

[x] Yes, this PR will result in a change in behavior.
[ ] No, this PR will not result in a change in behavior.

If yes, please specify the type of change:

[ ] Interface/UI changes: syntax, type conversion, expression evaluation, display information
[ ] Parameter changes: default values, similar parameters but with different default values
[x] Policy changes: use new policy to replace old one, functionality automatically enabled
[ ] Feature removed
[ ] Miscellaneous: upgrade & downgrade compatibility, etc.

Checklist:

[x] I have added test cases for my bug fix or my new feature
[ ] This pr needs user documentation (for new or modified features or behaviors)

[ ] I have added documentation for my new feature or new function

[ ] This is a backport pr

Bugfix cherry-pick branch check:

[x] I have checked the version labels which the pr will be auto-backported to the target branch

[x] 3.3
[x] 3.2
[ ] 3.1
[ ] 3.0
[ ] 2.5

@sevev do you have benchmark for this optimization?

@sevev do you have benchmark for this optimization?

Not yet, I'm working on that part of the test right now. I will add the results of the test when it's done.

Why not backport 3.1 ?


Error During Training

Hello,
I am training a model that auto-names as Model_AttentionRNNEncoderDecoder_src_emb_200_bidir_True_enc_GRU_32_dec_ConditionalGRU_32_deepout_linear_trg_emb_200_Adam_0.001.
Model appears to run and train fine until the beginning of the 3rd epoch, where I am getting this out or range error.  Any ideas what might be causing this?
Traceback (most recent call last):
  File "main.py", line 51, in <module>
    train_model(parameters, args.dataset)
  File "/home/nmt-keras/nmt_keras/training.py", line 166, in train_model
    nmt_model.trainNet(dataset, training_params)
  File "/home/miniconda3/envs/textsum/lib/python3.6/site-packages/keras_wrapper/cnn_model.py", line 923, in trainNet
    self.__train(ds, params)
  File "/home/miniconda3/envs/textsum/lib/python3.6/site-packages/keras_wrapper/cnn_model.py", line 1152, in __train
    initial_epoch=params['epoch_offset'])
  File "/home/nmt-keras/src/keras/keras/legacy/interfaces.py", line 91, in wrapper
    return func(*args, **kwargs)
  File "/home/nmt-keras/src/keras/keras/engine/training.py", line 1709, in fit_generator
    initial_epoch=initial_epoch)
  File "/home/nmt-keras/src/keras/keras/engine/training_generator.py", line 221, in fit_generator
    callbacks._call_batch_hook('train', 'end', batch_index, batch_logs)
  File "/home/nmt-keras/src/keras/keras/callbacks.py", line 85, in _call_batch_hook
    batch_hook(batch, logs)
  File "/home/nmt-keras/src/keras/keras/callbacks.py", line 366, in on_train_batch_end
    self.on_batch_end(batch, logs=logs)
  File "/home/miniconda3/envs/textsum/lib/python3.6/site-packages/keras_wrapper/extra/callbacks.py", line 762, in on_batch_end
    params_prediction)
  File "/home/miniconda3/envs/textsum/lib/python3.6/site-packages/keras_wrapper/cnn_model.py", line 1695, in predictBeamSearchNet
    data = next(data_gen)
  File "/home/miniconda3/envs/textsum/lib/python3.6/site-packages/keras_wrapper/dataset.py", line 445, in generator
    da_enhance_list=self.params['da_enhance_list'])
  File "/home/miniconda3/envs/textsum/lib/python3.6/site-packages/keras_wrapper/dataset.py", line 4417, in getXY_FromIndices
    label_smoothing=self.label_smoothing[id_out][set_name])
  File "/home/miniconda3/envs/textsum/lib/python3.6/site-packages/keras_wrapper/dataset.py", line 2450, in loadTextFeaturesOneHot
    y = self.loadTextFeatures(X, max_len, pad_on_batch, offset)
  File "/home/miniconda3/envs/textsum/lib/python3.6/site-packages/keras_wrapper/dataset.py", line 2421, in loadTextFeatures
    X_mask = np.hstack((np.ones((X_mask.shape[0], 1)), X_mask[:, :-1]))
IndexError: tuple index out of range

Hello,
can you please attach your configuration file?

Sure, sorry for the delay.

I got the same error after 32 epochs. Below is the config.py output.
Key change was the source and model text embedding length to 56.
Also changed the batch size to 50.
def load_parameters():
"""
Loads the defined hyperparameters.
:return parameters: Dictionary of loaded parameters.
"""
# Input data params
TASK_NAME = 'CanfEng'                           # Task name.
DATASET_NAME = TASK_NAME                        # Dataset name.
SRC_LAN = 'f'                                  # Language of the source text.
TRG_LAN = 'e'                                  # Language of the target text.
DATA_ROOT_PATH = 'examples/%s' % DATASET_NAME  # Path where data is stored.

# SRC_LAN or TRG_LAN will be added to the file names.
TEXT_FILES = {'train': 'training.',             # Data files.
              'val': 'dev.',
              'test': 'test.'}

GLOSSARY = None                               # Glossary location. If not None, it overwrites translations according to this glossary file

# Dataset class parameters
INPUTS_IDS_DATASET = ['source_text', 'state_below']        # Corresponding inputs of the dataset.
OUTPUTS_IDS_DATASET = ['target_text']                      # Corresponding outputs of the dataset.
INPUTS_IDS_MODEL = ['source_text', 'state_below']          # Corresponding inputs of the built model.
OUTPUTS_IDS_MODEL = ['target_text']                        # Corresponding outputs of the built model.
INPUTS_TYPES_DATASET = ['text-features', 'text-features']  # Corresponding types of the data. 'text' or 'text-features' allowed.
OUTPUTS_TYPES_DATASET = ['text-features']                  # They are equivalent, only differ on how the data is loaded.

# Evaluation params
METRICS = ['coco']                            # Metric used for evaluating the model.
EVAL_ON_SETS = ['val']                        # Possible values: 'train', 'val' and 'test' (external evaluator).
EVAL_ON_SETS_KERAS = []                       # Possible values: 'train', 'val' and 'test' (Keras' evaluator). Untested..
START_EVAL_ON_EPOCH = 1                       # First epoch to start the model evaluation.
EVAL_EACH_EPOCHS = True                       # Select whether evaluate between N epochs or N updates.
EVAL_EACH = 1                                 # Sets the evaluation frequency (epochs or updates).

# Search parameters
SAMPLING = 'max_likelihood'                   # Possible values: multinomial or max_likelihood (recommended).
TEMPERATURE = 1                               # Multinomial sampling parameter.
BEAM_SEARCH = True                            # Switches on-off the beam search procedure.
BEAM_SIZE = 6                                 # Beam size (in case of BEAM_SEARCH == True).
OPTIMIZED_SEARCH = True                       # Compute annotations only a single time per sample.
SEARCH_PRUNING = False                        # Apply pruning strategies to the beam search method.
                                              # It will likely increase decoding speed, but decrease quality.
MAXLEN_GIVEN_X = True                         # Generate translations of similar length to the source sentences.
MAXLEN_GIVEN_X_FACTOR = 2                     # The hypotheses will have (as maximum) the number of words of the
                                              # source sentence * LENGTH_Y_GIVEN_X_FACTOR.
MINLEN_GIVEN_X = True                         # Generate translations of similar length to the source sentences.
MINLEN_GIVEN_X_FACTOR = 3                     # The hypotheses will have (as minimum) the number of words of the
                                              # source sentence / LENGTH_Y_GIVEN_X_FACTOR.

# Apply length and coverage decoding normalizations.
# See Section 7 from Wu et al. (2016) (https://arxiv.org/abs/1609.08144).
LENGTH_PENALTY = False                        # Apply length penalty.
LENGTH_NORM_FACTOR = 0.2                      # Length penalty factor.
COVERAGE_PENALTY = False                      # Apply source coverage penalty.
COVERAGE_NORM_FACTOR = 0.2                    # Coverage penalty factor.

# Alternative (simple) length normalization.
NORMALIZE_SAMPLING = False                    # Normalize hypotheses scores according to their length:
ALPHA_FACTOR = .6                             # Normalization according to |h|**ALPHA_FACTOR.

# Sampling params: Show some samples during training.
SAMPLE_ON_SETS = ['train']             # Possible values: 'train', 'val' and 'test'.
N_SAMPLES = 5                                 # Number of samples generated.
START_SAMPLING_ON_EPOCH = 1                   # First epoch where to start the sampling counter.
SAMPLE_EACH_UPDATES = 300                     # Sampling frequency (always in #updates).

# Unknown words treatment
POS_UNK = True                                # Enable POS_UNK strategy for unknown words.
HEURISTIC = 0                                 # Heuristic to follow:
                                              #     0: Replace the UNK by the correspondingly aligned source.
                                              #     1: Replace the UNK by the translation (given by an external
                                              #        dictionary) of the correspondingly aligned source.
                                              #     2: Replace the UNK by the translation (given by an external
                                              #        dictionary) of the correspondingly aligned source only if it
                                              #        starts with a lowercase. Otherwise, copies the source word.
ALIGN_FROM_RAW = True                         # Align using the full vocabulary or the short_list.

# Source -- Target pkl mapping (used for heuristics 1--2). See utils/build_mapping_file.sh for further info.
MAPPING = DATA_ROOT_PATH + '/mapping.%s_%s.pkl' % (SRC_LAN, TRG_LAN)

# Word representation params
TOKENIZATION_METHOD = 'tokenize_none'         # Select which tokenization we'll apply.
                                              # See Dataset class (from stager_keras_wrapper) for more info.
BPE_CODES_PATH = DATA_ROOT_PATH + '/training_codes.joint'    # If TOKENIZATION_METHOD = 'tokenize_bpe',
                                              # sets the path to the learned BPE codes.
DETOKENIZATION_METHOD = 'detokenize_none'     # Select which de-tokenization method we'll apply.

APPLY_DETOKENIZATION = False                  # Wheter we apply a detokenization method.

TOKENIZE_HYPOTHESES = True                            # Whether we tokenize the hypotheses using the
                                              # previously defined tokenization method.
TOKENIZE_REFERENCES = True                    # Whether we tokenize the references using the
                                              # previously defined tokenization method.

# Input image parameters
DATA_AUGMENTATION = False                     # Apply data augmentation on input data (still unimplemented for text inputs).

# Text parameters
FILL = 'end'                                  # Whether we pad the 'end', the 'start' of  the sentence with 0s. We can also 'center' it.
PAD_ON_BATCH = True                           # Whether we take as many timesteps as the longest sequence of
                                              # the batch or a fixed size (MAX_OUTPUT_TEXT_LEN).
# Input text parameters
INPUT_VOCABULARY_SIZE = 0                     # Size of the input vocabulary. Set to 0 for using all,
                                              # otherwise it will be truncated to these most frequent words.
MIN_OCCURRENCES_INPUT_VOCAB = 0               # Minimum number of occurrences allowed for the words in the input vocabulary.
                                              # Set to 0 for using them all.
MAX_INPUT_TEXT_LEN = 50                       # Maximum length of the input sequence.

# Output text parameters
OUTPUT_VOCABULARY_SIZE = 0                    # Size of the input vocabulary. Set to 0 for using all,
                                              # otherwise it will be truncated to these most frequent words.
MIN_OCCURRENCES_OUTPUT_VOCAB = 0              # Minimum number of occurrences allowed for the words in the output vocabulary.
MAX_OUTPUT_TEXT_LEN = 50                      # Maximum length of the output sequence.
                                              # set to 0 if we want to use the whole answer as a single class.
MAX_OUTPUT_TEXT_LEN_TEST = MAX_OUTPUT_TEXT_LEN * 3  # Maximum length of the output sequence during test time.

# Optimizer parameters (see model.compile() function).
LOSS = 'categorical_crossentropy'
CLASSIFIER_ACTIVATION = 'softmax'
SAMPLE_WEIGHTS = True                         # Select whether we use a weights matrix (mask) for the data outputs
LABEL_SMOOTHING = 0.                          # Epsilon value for label smoothing. Only valid for 'categorical_crossentropy' loss. See arxiv.org/abs/1512.00567.

OPTIMIZER = 'Adam'                            # Optimizer. Supported optimizers: SGD, RMSprop, Adagrad, Adadelta, Adam, Adamax, Nadam.
LR = 0.01                                     # Learning rate. Recommended values - Adam 0.0002 - Adadelta 1.0.
CLIP_C = 5.                                   # During training, clip L2 norm of gradients to this value (0. means deactivated).
CLIP_V = 0.                                   # During training, clip absolute value of gradients to this value (0. means deactivated).
USE_TF_OPTIMIZER = True                       # Use native Tensorflow's optimizer (only for the Tensorflow backend).

# Advanced parameters for optimizers. Default values are usually effective.
MOMENTUM = 0.                                 # Momentum value (for SGD optimizer).
NESTEROV_MOMENTUM = False                     # Use Nesterov momentum (for SGD optimizer).
RHO = 0.9                                     # Rho value (for Adadelta and RMSprop optimizers).
BETA_1 = 0.9                                  # Beta 1 value (for Adam, Adamax Nadam optimizers).
BETA_2 = 0.999                                # Beta 2 value (for Adam, Adamax Nadam optimizers).
AMSGRAD = False                               # Whether to apply the AMSGrad variant of Adam (see https://openreview.net/pdf?id=ryQu7f-RZ).
EPSILON = 1e-8                                # Optimizers epsilon value.
ACCUMULATE_GRADIENTS = 1                      # Accumulate gradients for this number of batches. Currently only implemented for Adam.

# Learning rate schedule
LR_DECAY = None                               # Frequency (number of epochs or updates) between LR annealings. Set to None for not decay the learning rate.
LR_GAMMA = 0.8                                # Multiplier used for decreasing the LR.
LR_REDUCE_EACH_EPOCHS = False                 # Reduce each LR_DECAY number of epochs or updates.
LR_START_REDUCTION_ON_EPOCH = 0               # Epoch to start the reduction.
LR_REDUCER_TYPE = 'exponential'               # Function to reduce. 'linear' and 'exponential' implemented.
                                              # Linear reduction: new_lr = lr * LR_GAMMA
                                              # Exponential reduction: new_lr = lr * LR_REDUCER_EXP_BASE ** (current_nb / LR_HALF_LIFE) * LR_GAMMA
                                              # Noam reduction: new_lr = lr * min(current_nb ** LR_REDUCER_EXP_BASE, current_nb * LR_HALF_LIFE ** WARMUP_EXP)
LR_REDUCER_EXP_BASE = -0.5                    # Base for the exponential decay.
LR_HALF_LIFE = 100                            # Factor/warmup steps for exponenital/noam decay.
WARMUP_EXP = -1.5                             # Warmup steps for noam decay.
MIN_LR = 1e-9                                 # Minimum value allowed for the decayed LR

# Training parameters
MAX_EPOCH = 500                               # Stop when computed this number of epochs.
BATCH_SIZE = 50                               # Size of each minibatch.
N_GPUS = 1                                    # Number of GPUs to use. Only for Tensorflow backend. Each GPU will receive mini-batches of BATCH_SIZE / N_GPUS.

HOMOGENEOUS_BATCHES = False                   # Use batches with homogeneous output lengths (Dangerous!!).
JOINT_BATCHES = 4                             # When using homogeneous batches, get this number of batches to sort.
PARALLEL_LOADERS = 1                          # Parallel data batch loaders. Somewhat untested if > 1.
EPOCHS_FOR_SAVE = 1                           # Number of epochs between model saves.
WRITE_VALID_SAMPLES = True                    # Write valid samples in file.
SAVE_EACH_EVALUATION = True                   # Save each time we evaluate the model.

# Early stop parameters
EARLY_STOP = True                             # Turns on/off the early stop protocol.
PATIENCE = 10                                 # We'll stop if the val STOP_METRIC does not improve after this.
                                              # number of evaluations.
STOP_METRIC = 'Bleu_4'                        # Metric for the stop.
MIN_DELTA = 0.                                # Minimum change in the monitored quantity to consider it as an improvement.

# Model parameters
MODEL_TYPE = 'AttentionRNNEncoderDecoder'     # Model to train. See model_zoo.py for more info.
                                              # Supported architectures: 'AttentionRNNEncoderDecoder' and 'Transformer'.

# Common hyperparameters for all models
# # # # # # # # # # # # # # # # # # # # # # # #
TRAINABLE_ENCODER = True                      # Whether the encoder's weights should be modified during training.
TRAINABLE_DECODER = True                      # Whether the decoder's weights should be modified during training.

# Initializers (see keras/initializations.py).
INIT_FUNCTION = 'glorot_uniform'              # General initialization function for matrices.
INNER_INIT = 'orthogonal'                     # Initialization function for inner RNN matrices.
INIT_ATT = 'glorot_uniform'                   # Initialization function for attention mechism matrices

SOURCE_TEXT_EMBEDDING_SIZE = 56               # Source language word embedding size.
SRC_PRETRAINED_VECTORS = None                 # Path to pretrained vectors (e.g.: DATA_ROOT_PATH + '/DATA/word2vec.%s.npy' % SRC_LAN).
                                              # Set to None if you don't want to use pretrained vectors.
                                              # When using pretrained word embeddings. this parameter must match with the word embeddings size
SRC_PRETRAINED_VECTORS_TRAINABLE = True       # Finetune or not the target word embedding vectors.

TARGET_TEXT_EMBEDDING_SIZE = 56               # Source language word embedding size.
TRG_PRETRAINED_VECTORS = None                 # Path to pretrained vectors. (e.g. DATA_ROOT_PATH + '/DATA/word2vec.%s.npy' % TRG_LAN)
                                              # Set to None if you don't want to use pretrained vectors.
                                              # When using pretrained word embeddings, the size of the pretrained word embeddings must match with the word embeddings size.
TRG_PRETRAINED_VECTORS_TRAINABLE = True       # Finetune or not the target word embedding vectors.

SCALE_SOURCE_WORD_EMBEDDINGS = False          # Scale source word embeddings by Sqrt(SOURCE_TEXT_EMBEDDING_SIZE).
SCALE_TARGET_WORD_EMBEDDINGS = False          # Scale target word embeddings by Sqrt(TARGET_TEXT_EMBEDDING_SIZE).

TIE_EMBEDDINGS = False                        # Use the same embeddings for source and target language.

N_LAYERS_ENCODER = 1                          # Stack this number of encoding layers.
N_LAYERS_DECODER = 1                          # Stack this number of decoding layers.

# Additional Fully-Connected layers applied before softmax.
#       Here we should specify the activation function and the output dimension.
#       (e.g DEEP_OUTPUT_LAYERS = [('tanh', 600), ('relu', 400), ('relu', 200)])
DEEP_OUTPUT_LAYERS = [('relu', TARGET_TEXT_EMBEDDING_SIZE)]
# # # # # # # # # # # # # # # # # # # # # # # #

# AttentionRNNEncoderDecoder model hyperparameters
# # # # # # # # # # # # # # # # # # # # # # # #
ENCODER_RNN_TYPE = 'LSTM'                     # Encoder's RNN unit type ('LSTM' and 'GRU' supported).
USE_CUDNN = True                              # Use CuDNN's implementation of GRU and LSTM (only for Tensorflow backend).

DECODER_RNN_TYPE = 'ConditionalLSTM'          # Decoder's RNN unit type.
                                              # ('LSTM', 'GRU', 'ConditionalLSTM' and 'ConditionalGRU' supported).
ATTENTION_MODE = 'add'                        # Attention mode. 'add' (Bahdanau-style), 'dot' (Luong-style) or 'scaled-dot'.

# Encoder configuration
ENCODER_HIDDEN_SIZE = 32                      # For models with RNN encoder.
BIDIRECTIONAL_ENCODER = True                  # Use bidirectional encoder.
BIDIRECTIONAL_DEEP_ENCODER = True             # Use bidirectional encoder in all encoding layers.
BIDIRECTIONAL_MERGE_MODE = 'concat'           # Merge function for bidirectional layers.

# Fully-Connected layers for initializing the first decoder RNN state.
#       Here we should only specify the activation function of each layer (as they have a potentially fixed size)
#       (e.g INIT_LAYERS = ['tanh', 'relu'])
INIT_LAYERS = ['tanh']

# Decoder configuration
DECODER_HIDDEN_SIZE = 32                      # For models with RNN decoder.
ATTENTION_SIZE = DECODER_HIDDEN_SIZE

# Skip connections parameters
SKIP_VECTORS_HIDDEN_SIZE = TARGET_TEXT_EMBEDDING_SIZE     # Hidden size.
ADDITIONAL_OUTPUT_MERGE_MODE = 'Add'          # Merge mode for the skip-connections (see keras.layers.merge.py).
SKIP_VECTORS_SHARED_ACTIVATION = 'tanh'       # Activation for the skip vectors.
# # # # # # # # # # # # # # # # # # # # # # # #

# Transformer model hyperparameters
# # # # # # # # # # # # # # # # # # # # # # # #
MODEL_SIZE = 56                               # Transformer model size (d_{model} in de paper).
MULTIHEAD_ATTENTION_ACTIVATION = 'linear'     # Activation the input projections in the Multi-Head Attention blocks.
FF_SIZE = MODEL_SIZE * 4                      # Size of the feed-forward layers of the Transformer model.
N_HEADS = 8                                   # Number of parallel attention layers of the Transformer model.
# # # # # # # # # # # # # # # # # # # # # # # #

# Regularizers
REGULARIZATION_FN = 'L2'                      # Regularization function. 'L1', 'L2' and 'L1_L2' supported.
WEIGHT_DECAY = 1e-4                           # Regularization coefficient.
RECURRENT_WEIGHT_DECAY = 0.                   # Regularization coefficient in recurrent layers.

DROPOUT_P = 0.                                # Percentage of units to drop (0 means no dropout).
RECURRENT_INPUT_DROPOUT_P = 0.                # Percentage of units to drop in input cells of recurrent layers.
RECURRENT_DROPOUT_P = 0.                      # Percentage of units to drop in recurrent layers.
ATTENTION_DROPOUT_P = 0.                      # Percentage of units to drop in attention layers (0 means no dropout).

USE_NOISE = False                              # Use gaussian noise during training.
NOISE_AMOUNT = 0.01                           # Amount of noise.

USE_BATCH_NORMALIZATION = True                # If True it is recommended to deactivate Dropout.
BATCH_NORMALIZATION_MODE = 1                  # See documentation in Keras' BN.

USE_PRELU = False                             # use PReLU activations as regularizer.
USE_L1 = False                                # L1 normalization on the features.
USE_L2 = False                                # L2 normalization on the features.

DOUBLE_STOCHASTIC_ATTENTION_REG = 0.0         # Doubly stochastic attention (Eq. 14 from arXiv:1502.03044).

# Results plot and models storing parameters.
EXTRA_NAME = ''                               # This will be appended to the end of the model name.
if MODEL_TYPE == 'AttentionRNNEncoderDecoder':
    MODEL_NAME = TASK_NAME + '_' + SRC_LAN + TRG_LAN + '_' + MODEL_TYPE + \
             '_src_emb_' + str(SOURCE_TEXT_EMBEDDING_SIZE) + \
             '_bidir_' + str(BIDIRECTIONAL_ENCODER) + \
             '_enc_' + ENCODER_RNN_TYPE + '_' + str(ENCODER_HIDDEN_SIZE) + \
             '_dec_' + DECODER_RNN_TYPE + '_' + str(DECODER_HIDDEN_SIZE) + \
             '_deepout_' + '_'.join([layer[0] for layer in DEEP_OUTPUT_LAYERS]) + \
             '_trg_emb_' + str(TARGET_TEXT_EMBEDDING_SIZE) + \
             '_' + OPTIMIZER + '_' + str(LR)
elif MODEL_TYPE == 'Transformer':
    MODEL_NAME = TASK_NAME + '_' + SRC_LAN + TRG_LAN + '_' + MODEL_TYPE + \
             '_model_size_' + str(MODEL_SIZE) + \
             '_ff_size_' + str(FF_SIZE) + \
             '_num_heads_' + str(N_HEADS) + \
             '_encoder_blocks_' + str(N_LAYERS_ENCODER) + \
             '_decoder_blocks_' + str(N_LAYERS_DECODER) + \
             '_deepout_' + '_'.join([layer[0] for layer in DEEP_OUTPUT_LAYERS]) + \
             '_' + OPTIMIZER + '_' + str(LR)
else:
    MODEL_NAME = TASK_NAME + '_' + SRC_LAN + TRG_LAN + '_' +\
                 MODEL_TYPE + '_' + OPTIMIZER + '_' + str(LR)

MODEL_NAME += EXTRA_NAME

STORE_PATH = 'trained_models/' + MODEL_NAME + '/'  # Models and evaluation results will be stored here.
DATASET_STORE_PATH = 'datasets/'                   # Dataset instance will be stored here.

# Tensorboard configuration. Only if the backend is Tensorflow. Otherwise, it will be ignored.
TENSORBOARD = True                       # Switches On/Off the tensorboard callback.
LOG_DIR = 'tensorboard_logs'             # Directory to store teh model. Will be created inside STORE_PATH.
EMBEDDINGS_FREQ = 1                      # Frequency (in epochs) at which selected embedding layers will be saved.
EMBEDDINGS_LAYER_NAMES = [               # A list of names of layers to keep eye on. If None or empty list all the embedding layer will be watched.
    'source_word_embedding',
    'target_word_embedding']
EMBEDDINGS_METADATA = None               # Dictionary which maps layer name to a file name in which metadata for this embedding layer is saved.
LABEL_WORD_EMBEDDINGS_WITH_VOCAB = True  # Whether to use vocabularies as word embeddings labels (will overwrite EMBEDDINGS_METADATA).
WORD_EMBEDDINGS_LABELS = [               # Vocabularies for labeling. Must match EMBEDDINGS_LAYER_NAMES.
    'source_text',
    'target_text']

SAMPLING_SAVE_MODE = 'list'                        # 'list': Store in a text file, one sentence per line.
PLOT_EVALUATION = False                            # If True, the evaluation will be plotted into the model folder.

VERBOSE = 1                                        # Verbosity level.
RELOAD = 0                                         # If 0 start training from scratch, otherwise the model.
                                                   # Saved on epoch 'RELOAD' will be used.
RELOAD_EPOCH = True                                # Select whether we reload epoch or update number.

REBUILD_DATASET = True                             # Build again or use stored instance.
MODE = 'training'                                  # 'training' or 'sampling' (if 'sampling' then RELOAD must
                                                   # be greater than 0 and EVAL_ON_SETS will be used).

# Extra parameters for special trainings. In most cases, they should be set to `False`
TRAIN_ON_TRAINVAL = False                          # train the model on both training and validation sets combined.
FORCE_RELOAD_VOCABULARY = False                    # force building a new vocabulary from the training samples
                                                   # applicable if RELOAD > 1
# ================================================ #
parameters = locals().copy()
return parameters

Glad to hear that. Please, mightymiff


Fix SonarCloud.io Issues

See this for details:
https://sonarcloud.io/project/overview?id=reactific_riddl

Removed it from GitHub.


Fix issues related to GitActions build process

Update Makefile;
Update Ruby version;
Add missing wavedrom-cli dependency.

@ved-rivos the changes in this PR fixes the build process.

Thanks !


⚠ ClamAV has degraded performance

In 9ff074c, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 78 ms

Resolved: ClamAV performance has improved in 0db3962 after 536 days, 14 hours, 7 minutes.


Report: All the cities in the world organised by largest population to smallest.

A report which need to contain the following columns

Name.
Country.
District.
Population.

provide a Report on All the cities in the world organised by largest population to smallest.


allow code generation without initialising GUI

Proposal of solution to issue #332.
Some logic of class tree.WidgetTree is copied into its superclass tree.Tree.
Function guiless_open_app() is an excerpt of gui-only constructors, that seems to be enough to allow code generation.
Please note that these changes were just aimed to get a successful compilation of my test cases; they may violate the design of the software (that I could not find documented anywhere, by the way, except for comments in the source code).
A minor fix in the creation of splitter windows is also included.

Thank you, Dietmar.
Please do not consider a criticism my remark about the lack of documentation. I wanted to say that if there was any doc, then I would need a pointer to it, in order to be able to make a better patch.
I remain available to help, if I can.

Don't worry. I did not feel offended. When I started to work on wxGlade, there was much micro-documentation but also no overall documentation.
When it comes to comments and style I go for maximum readability on large screens. This includes a line length of 120 characters.


Feature request: add AdeptLSP

https://github.com/AdeptLanguage/AdeptLSP

Support added but the LSP is currently useless, it does very little to nothing and has bugs.

Support added but the LSP is currently useless, it does very little to nothing and has bugs.

Yes, I know. I asked you to add it to ecode because I didn't know I could add my own local lspclient.json.

Yep! The idea is to let the user extend the capabilities of ecode as easily as possible. Some LSPs use particular configurations that are specific for each client. AdeptLSP is one of those cases but I added a new feature that should work very well for other particular cases as this one.
I added vars to the configuration, each var is a defined variable taken from the environment by running an specific command, in this case we needed the adept root path obtained with adept --root, so I defined a var for that and the stdout of that command will be used for that variable defined in the command. That should give us great flexibility.
It was also valuable for us because AdeptLSP crashed ecode when the LSP was being closed at some occasions and that fix should be nice for other LSPs.


#1097 Allow to pass driver specific options from configuration

Proposed changes
Allow to change *Options rigth before Selenide creates driver by driver factories.
Resolve #1097 Allow to pass driver specific options from configuration
Fix #676
Checklist

[ ] Checkstyle and unit tests are passed locally with my changes by running gradlew check chrome_headless firefox_headless command
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] I have added necessary documentation (if appropriate)

@BorisOsipov Probably the problem could be easily solvable if ChromeDriverFactory implements WebDriverProvider? Then everyone can inherit it and override only one small method which sets chrome options. I will try such approach.

Probably superseded by https://github.com/selenide/selenide/pull/1155


Correcting code example markdown anotation

Just adding the c# annotation

@Nepomuceno : Thanks for your contribution to the Azure documentation! The author, @juliako, has been notified to review your proposed change.

#sign-off


message view: Move live update logic to message_store.

Task 2 of #15131

@ryanreh99 generally this looks good; can you rebase?

Rebased this.
Tested for the 3 cases and the message id change and everything works as expected.

This is great, merged, thanks @ryanreh99!


(docs) Clarify man page info about --detailed-exitcodes

The previous text was ambiguous about the exit code for failed runs. For the
record, it's still 1; the 2, 4, and 6 exit codes would all be reported as 0 when
the option is disabled.
When this is merged, please resolve DOCUMENT-384.

Will merge once CI clears

@joshcooper ready to merge?


NormalizeSeparators and other formatting could be optional on Documentation

Hi,
Our keyword documentation policy requires that beside the documentation itself the argument description as well.
But unfortunately, the NormalizeSeparators ruins our format.
An example:
Before format:
TEST_TC
    [Argument]    ${a}    ${long_arg}
    [Documentation]     Test Doc.
    ...
    ...    Arguments:
    ...    a:               Argument A
    ...    long_arg:        Argument long_arg.
   Test Case Body

After format:
TEST_TC
    [Argument]    ${a}    ${long_arg}
    [Documentation]     Test Doc.
    ...
    ...    Arguments:
    ...    a:    Argument A
    ...    long_arg:    Argument long_arg.
   Test Case Body

We use spacecount=4 and the correction itself is an extremely good feature, but for example, it could extend the selection argument with a documentation element as well, where the users could turn the separator normalization off on documentation if they want.
Thank you for your help and answer in advance!

Yes, in case of the documentation in most cases fixing the separator is probably not desired (with the exception of indent - first whitespace in the line). And there are actually two problems here:

Make NormalizeSeparator to skip documentation (or just fix indent)

Create transformer for documentation

In my opinion 2) would be really useful and with formatter for documentation we don't need to sorry about NormalizeSeparator breaking anything. I need to think what would be desired in the documentation formatting (and maybe allow few different types of documentation, configurable). We could achieve what you have in your first example done automatically by robotidy then.
Otherwise 1) should be easy to do as workaround for time being.

Both of them are good ideas.
The second opinion could guide the users to use or help how should look like documentation according to "standard" recommendations, like sphinx or Google docstring documentation. (Personally, the Google one is sympathetic for me.)
The first one I think is also useful if they are using a custom document format that is matching to none of the widely-spread documentation formats that you had in mind.
Or just simply they don't want to re-format/check their documentation by robotframework-tidy.
IMO the two ideas should complement each other.

I agree. On a side note I had some related discussion about "I don't want X to transform Y". For example someone wants to use an aligner transformer to align tokens into columns, but doesn't want to align documentation or lines with particular content. In some cases we have transformers that allow configuring what to transform/skip (skip_types in AlignVariablesSection or sections in NormalizeSeparators). It could be a good idea to add a universal way of declaring what a given transformer should transform/format instead of doing this on the transformer level. This would work on top of current disablers (# robotidy: off). Examples:
robotidy --configure NormalizeSeparators:skip=sections=comments
robotidy --configure NormalizeSeparators:skip=settings=documentation,teardown
robotidy --configure AlignVariablesSection:skip=types=dict
It's a more complex subject that I will think about. For the time being I will just add an extra parameter to NormalizeSeparator (like skip_documentation).

This universal way sounds great, thank you!
Thank you for the skip_documentation parameter until this universal way is ready.

Linked PR with skip_documentation. It will be released in Robotidy 2.4 in the next few days. For other ideas mentioned in this post I will create seperate issues later and link it there.

Thank you for your help and quick support.

Closing - the issue was resolved in previous release and for other topics we have separate issues open.


[zero-copy] Implement E::Context and Parser::Config - parse-time control of parser parameters

Now with a more readable diff and less intrusive changes, thanks to ParserExtra
Only two configurations are provided so far - more may be added on-demand, but these two provide enough for useful examples and the most common use-case.

Nice :)
Regarding the previous PR... Part of me regrets that the Parser trait has become more complex to use (even if easier to implement). I wonder whether it would be possible to keep the public API the same as before but have the utility of a secondary trait that hides the 'cruft' behind associated types, with a blanket impl. That said, I think the worst outcome would be for both traits to 'leak' into the public API, creating even more confusion.

So I've been experimenting with this a little locally and I've hit a few issues.
#[derive(Clone, Debug)]
enum Stmt {
    Expr,
    Loop(Vec<Stmt>),
}

fn parser<'a>() -> impl Parser<'a, str, Vec<Stmt>> {
    let expr = just("expr"); // TODO

    let block = recursive(|block| {
        let indent = any().filter(|c| *c == ' ')
            .repeated()
            .configure(|cfg, parent_indent| {
                println!("Configure with {}", parent_indent);
                cfg.exactly(*parent_indent)
            });

        let expr_stmt = expr
            .then_ignore(text::newline())
            .to(Stmt::Expr);
        let control_flow = just("loop:")
            .then(text::newline())
            .ignore_then(block).map(Stmt::Loop);
        let stmt = expr_stmt.or(control_flow);

        text::whitespace().count()
            .then_with_ctx(stmt
                .separated_by(indent)
                .collect::<Vec<_>>(), |a, b| a)
    });

    // empty().then_with_ctx(block, |_: (), _: &()| 0)
    Parser::<_, _>::then_with_ctx(empty(), block, |_, _| 0)
}

First off: this works! Very cool stuff.
However, if I swap the last two lines (they're equivalent) I get the following compilation error:
error[E0284]: type annotations needed
  --> examples/indent.rs:34:13
   |
34 |     empty().then_with_ctx(block, |_: (), _: &()| 0)
   |             ^^^^^^^^^^^^^
   |
   = note: cannot satisfy `<_ as ParserExtra<'_, str>>::Error == EmptyErr`
help: try using a fully qualified path to specify the expected types
   |
34 |     <chumsky::zero_copy::primitive::Empty<str> as chumsky::zero_copy::Parser<'_, str, (), E>>::then_with_ctx::<Vec<Stmt>, usize, chumsky::zero_copy::recursive::Recursive<dyn chumsky::zero_copy::Parser<'_, str, Vec<Stmt>, chumsky::zero_copy::extra::Full<EmptyErr, (), usize>, Config = ()>>, [closure@examples/indent.rs:34:34: 34:49]>(empty(), block, |_: (), _: &()| 0)
   |     +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++       ~

This seems to happen because the call to .then_with_ctx needs to use an implementation of Parser, but to do that it needs to figure out what E: ParserExtra is in use: but because we immediately override the context with a usize (0) there's nothing constraining this E so Rust can't infer anything.
I'm not sure how to resolve this. Perhaps it doesn't need solving? Ideally we'd have a .with_ctx(0) combinator that Avoids the need for the empty().then_with_ctx hack, but I'm fairly sure that it'll still end up having this constrained type variable floating around causing problems.

Forcing the context might work, but that does make issues with nested context-sensitive code. I couldn't do a .then_with_context(array) where array = foo.then_with_context(value). Once there's map_ctx and possibly just with_ctx, they should help, but we may still need explicit ctx in some places. OTOH - this kind of inference failure is already an issue with state, and can be fairly easily fixed by adding extra::Default or extra::Err<E> somewhere on the preceding parser.

Agreed. Perhaps we should make E a type parameter of fn empty rather than just inferring it based on context.

You should now have access to map_ctx and with_ctx, which should help the issue

I can swap it back. That was kind of my idea behind doing it via passing ownership originally, it made the inline code nicer. I can swap it back, it's all of a three line change.

I can swap it back. That was kind of my idea behind doing it via passing ownership originally, it made the inline code nicer. I can swap it back, it's all of a three line change.

I've already made the change in https://github.com/CraftSpider/chumsky/pull/1, feel free to merge it into your branch.

Oh, one other thing! This effectively replaces then_with, so I think it's worth getting rid of it given that it's opaque and potentially slow.

I wasn't sure whether we wanted to remove it yet, since a lot of parsers aren't yet configurable. OTOH, hopefully most of them will be by the time we release zero-copy, so I'm fine removing it now if you want.

Considering whether to split configuration into its own subtrait like IterParser - CfgParser or CfgIterParser which should help with the expanding Parser generics. OTOH, you still need Context on the extra, and it could lead to a bit of a trait explosion if we add more possible combinations :P

Considering whether to split configuration into its own subtrait like IterParser - CfgParser or CfgIterParser which should help with the expanding Parser generics. OTOH, you still need Context on the extra, and it could lead to a bit of a trait explosion if we add more possible combinations :P

I think this seems sensible. I see Context as being sort of like State, something that 'moves through' parsers and hence makes sense to be on every parser. Config, however, is specific to each parser and independent so I think your idea of having a dedicated ConfigParser trait is a good one and should reduce overall complexity.

Update: Been busy the past couple days, will get this rebased soon. I'm most of the way through rewriting it into a new trait.

Ready to merge?

I would say so, if you think it looks good


Faded out slide still interactable.

Hey, thanks for the epic slider. We've used it for a few projects now and it's worked flawlessly.
I'm using a fading slider { fade: true } but due to the CSS transition the previous slide is still interactable when the slides have a transparent background. I can still press buttons and what not from the previous slide.
This is because the css sets the slide to have an opacity of 0.
So to workaround this I originally decided to set display: none; onto not-active slides using onAfterChange. But this messed up the calculations of the slider as it technically doesn't have a width and height at this point. I also tried visibility: hidden; but this still makes it interactable.
My current fix for my project was to set a solid colour background with a min-height on the slides but of course this isn't ideal.
Browser: Chrome
Thanks.

I have this issue, with these settings:
slidesToShow: 1,
slidesToScroll: 1,
adaptiveHeight: false,
fade: true,


Looks great

Hey Courtney,
Opened https://rubygems.org/releases out of curiosity and saw this. Noticed you had no issues, so I thought I'd create one:
Just wanted to say it looks great.
Cheers,
joshmn

Much appreciated @joshmn 👍


Avoid generating actual lambda names

This is super slow. When trying to compile a "real" app like rocci-bird or the false interpreter, the compiler will just hang in repeated calls to this function.
I am not sure if this "fix" is valid. I would assume that hashing the names should be equivalent hashing the InLayout. The InLayout should be a unique id that maps to the layout. The layout should map to name. So I think it should be a fix.
I haven't done intensive testing, but this is way way faster.

@folkertdev is this a valid fix? I really don't understand why we need the actual lambda names from all of the arg types and such. I think this should generate a unique id that is always the same for the same lambda.


Restore Qtum paper wallet

I have used your paper wallet generator and would like to restore it now. Your instruction is not really detailed and I´m quite new with Qtum. The generator is great! Can you give a detailed instruction how to restore the paper wallet with Qtum Core wallet?
Thanks!

Hello @Hampi0815 Are you still having this issue or your issue has been resolved ?

Hello @Hampi0815 Are you still having this issue or your issue has been resolved ?

Hi -- You should check this with Qtum Core Wallet as Pwall only generates private and public keys. It does not handle deposits, withdrawals, etc.

Hi -- You should check this with Qtum Core Wallet as Pwall only generates private and public keys. It does not handle deposits, withdrawals, etc.


Fix druid issue9736

This PR fixes Druid Issue #9736.  It also zeros HipAccum when OOOFlag is set, which makes isomorphic testing across languages easier.


Updated XSD to point to github.io

https://github.com/DozerMapper/dozer/issues/391

Key changes

Moved the mappings files used by tests into resources/mappings/*.xml - theres so many files now, its quite hard to see anything in the resources folder. The aim of this is to categories the files better
Updated all xmlns references to point to github.io
Added ability to follow redirect which github.io provides for the XSD
Updated any tests that references old style of beanmapper.xsd
Updated javadoc and asciidoc references to sourceforge

@orange-buffalo ; can you review please - i did several commits to make it HOPEFULLY easier :)

I also realised its better to have a fully qualified xmlns vs a root one, i.e.:
<mappings xmlns="http://dozermapper.github.io/schema/bean-mapping"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://dozermapper.github.io/schema/bean-mapping http://dozermapper.github.io/schema/bean-mapping.xsd">

vs
<mappings xmlns="http://dozermapper.github.io"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://dozermapper.github.io http://dozermapper.github.io/schema/bean-mapping.xsd">

@garethahealy What do you think, should we also update namespace for Spring?

@orange-buffalo ; already got a PR stashed for spring :)

@garethahealy, super!


Fix support for specifying tests on the command line

Removed a stray configuration option which has been preventing specification of the tests to run on the command line when using an argparse-based test command.

Looks pretty good, just a few editorial comments (one of which is regarding my own old text).  Want to add some testing dependency updates, but then this will hopefully be ready to merge.


Teampane right click menu created even when no items are added

When you right click a name in the Teampane (F6) that does not have a menu associated with it (currently anything other than a Miner) a small square is drawn at the cursor location from the menu being created w/ no entries.  The function should return w/o creating a menu if no items are to be added
Imported from trac ticket #205,  created by Xynth on 08-04-2010 at 15:55, last modified: 08-05-2010 at 00:07

r892
Trac comment by Xynth on 08-05-2010 at 00:07


Revamp APIs around bottle specifications

[x] Have you followed the guidelines in our Contributing document?
[x] Have you checked to ensure there aren't other open Pull Requests for the same change?
[x] Have you added an explanation of what your changes do and why you'd like us to include them?
[ ] Have you written new tests for your changes? Here's an example.

[x] Have you successfully run brew typecheck with your changes locally?
[x] Have you successfully run brew tests with your changes locally?

Goals:

Stronger typing (rather than passing around hashes everywhere)
Less confusing names (e.g. checksum_for returning cellar information)
Remove relics from old bottle spec DSL.

Additions:

BottleSpecification#tag_specification_for

For a given tag, returns a new TagSpecification object containing the actual tag (since it may choose an older OS), the checksum and the cellar value.

Utils::Bottles::Collector#specification_for

Backend for the above.

Add tag parameter to BottleSpecification#compatible_locations? (default: tag for user's OS)

Bottle#compatible_locations? now uses this internally.

Add tag parameter to BottleSpecification#skip_relocation? (default: tag for user's OS)

Bottle#skip_relocation? now uses this internally.

Utils::Bottles::Collector#tags

Returns tags present in the collector

Utils::Bottles::Collector#each_tag

For enumeration over the tags in the collector

Utils::Bottles::Collector#tag?

Behaves just like BottleSpecification#tag? did (same parameters). Now a backend for that.

Utils::Bottles::Collector#add

Pass in a tag, the checksum and the cellar and it'll create and store a TagSpecification object into the collector

Deprecations (when 3.3 is released):

BottleSpecification#cellar

Replacement: Use BottleSpecification#tag_specification_for and get the cellar value from that.

BottleSpecification#all_tags_cellar

Always returned nil.

BottleSpecification#prefix

Always returned Homebrew::DEFAULT_PREFIX.

BottleSpecification#checksum_for

Replacement: BottleSpecification#tag_specification_for

Utils::Bottles::Collector#keys

Replacement: Utils::Bottles::Collector#tags (returns Util::Bottles::Tags rather than symbols)

Utils::Bottles::Collector#each_key

Replacement: Utils::Bottles::Collector#each_tag (passes Util::Bottles::Tags rather than symbols)

Utils::Bottles::Collector#key?

Replacement: Utils::Bottles::Collector#tag? (takes a Util::Bottles::Tag rather than a symbol, and now also looks back for older OS versions or :all bottles like BottleSpecification#tag? did - if this is not desirable then search Utils::Bottles::Collector#tags)

Utils::Bottles::Collector#[]

Replacement: Utils::Bottles::Collector#specification_for (returns TagSpecifiation object rather than a hash, and also looks back for older OS versions or :all bottles - if this is not desirable then search first if the tag exists in Utils::Bottles::Collector#tags)

Utils::Bottles::Collector#[]=

Replacement: Utils::Bottles::Collector#add (pass in checksum and cellar as parameters rather than just passing a hash)

Utils::Bottles::Collector#dig

Replacement: Utils::Bottles::Collector#specification_for (see Utils::Bottles::Collector#[] deprecation)

Newer APIs more strictly require Utils::Bottles::Tag rather than also allowing symbols.
The changes here hopefully fix #12068, but I haven't specifically tested that scenario yet.

Review period will end on 2021-09-17 at 18:15:10 UTC.

Utils::Bottles::Collector stuff could maybe be removed completely rather than deprecated. Utils::Bottles::Collector is technically private API, but the BottleSpecification#collector getter is public API.

Just realised the Utils::Bottles::Collector stuff could maybe be removed completely rather than deprecated. Utils::Bottles is technically private API (even Utils::Bottles::Tag, which it probably shouldn't be)

Do it 👍🏻

Review period ended.

not explicitly documented as public

Depends what you mean by this. We almost never explicitly write @api public, and when we do it's because we're overriding a previous @api private.
I've removed Utils::Bottles::Collector methods since they were explicitly @api private.
I do however see that Formula#bottle is private so in theory Bottle#prefix could be removed since there's no public getter for a bottle object (unless you create the object yourself). Nothing explicit is written about BottleSpecification, though the getter does appear to be missing from https://rubydoc.brew.sh/Formula (we don't mark it as private so this is probably actually a doc generation error but I suppose that means it's been private all along).

Bottle#prefix could be removed since there's no public getter for a bottle object (unless you create the object yourself)

🔥 it 👍🏻

Nothing explicit is written about BottleSpecification, though the getter does appear to be missing from https://rubydoc.brew.sh/Formula (we don't mark it as private so this is probably actually a doc generation error but I suppose that means we can argue that it's been private all along).

Agreed on private here.
This makes me wonder if we want to do some wider "mark everything as explicitly public or private" effort.

This makes me wonder if we want to do some wider "mark everything as explicitly public or private" effort.

Probably. If it's not explicitly marked private then we shouldn't be surprised if people use it.
When it's private, the rubydocs page has a big warning. If it isn't then it appears as normal.

Ok I've deleted everything that was nominated for deprecation.

When it's private, the rubydocs page has a big warning. If it isn't then it appears as normal.

On the flip side there is this: https://rubydoc.brew.sh:

Probably. If it's not explicitly marked private then we shouldn't be surprised if people use it.

and classes linked from there

This can extend quite far. There's a link from Formula to SoftwareSpec to BottleSpecification.


feat: update to 1.20.x

Would you mind updating this plugin? It's one and only existing.
They changed smithing table in 1.20 and now it has 3 slots instead of 2 and this is propably why plugin is not working on 1.20

Thank you in advance.

Yes, there are several barriers to updating to 1.20.x including several Spigot API changes since the initial write for 1.16, and the new smithing table interface. There is work being done to update the plugin and a new version will be released as soon as it's done.


Runtime Upgrades & Storage Migrations

Closes #580

...not aimed to be a (complete) runtime migration guide (i.e. fill the same role), though, right?

@apopiak I would say this is correct. It may be cool to create a storage migration recipe or maybe an advanced runtime upgrade tutorial. Do you think there are any major conceptual gaps in this document?


Split new clab

Split NewContainerLab into 2 funcs:

NewContainerLab: intializes the struct
cLab.Init(): creates the docker client

approved