Style/ClosingParenthesisIndentation has the wrong namespace - should be Layout

Hi there, I need help with an issue I'm having with VS Code rubocop integration that never used to show up. I'm getting a pop up on every single Ruby file that says Style/ClosingParenthesisIndentation has the wrong namespace - should be Layout, so I update the .rubocop.yml file to Layout, and then I get Layout/ClosingParenthesisIndentation has the wrong namespace - should be Style. As you could imagine, this is very frustrating. How can I fix this?

Hey @stuartweir! Are you getting both of these warnings within VSCode, or are you seeing your command line rubocop disagreeing with what rubocop within VSCode is telling you?
I've seen this happen to me when I have differing versions of rubocop reading a configuration that works for one, but not the other. Let me know what you see!

Rubocop 0.49 moved the cops to a different layout. In the terminal everything works as expected.
How do I find out which rubocop this extension is using? I have no settings regarding ruby.rubocop.executePath but it's looking for Rubocop in Ruby 2.3.1 (while I use 2.4.1 in this project, using rbenv).

As I understand it, ruby.rubocop.executePath is the directory the VSCode extension searches for the rubocop executable. Failing that, it'll just look for the rubocop executable in $PATH.
I don't think this extension has any awareness of which ruby it uses to execute. I'm not sure if that's an oversight, f it's by design, or if it's a limitation in the current version of VSCode—@misogi may know.

Is the execute path the .rubocop.yml file in my project? or somewhere else? because I have multiple projects taht use rubocop, and dont want to change that all the time. But to confirm, rubocop doesnt complain doing bundle exec rubocop <file> on the CLI, but only in VS Code

It'll be whatever directory your rubycop executable lives in. If you haven't set it explicitly in Rubocop, I believe VSCode will just search your $PATH to figure out how to invoke it.
There's ongoing work to make this extension smarter about how it finds/invokes rubocop, but if the current state of things is breaking things for you, expliciting setting the executePath can help—I think I currently have mine set to something like /usr/local/var/rbenv/shims.

I'm seeing a similar error
.../.rubocop.yml: Style/AccessModifierIndentation has the wrong namespace - should be Layout

My rubocop config works fine in atom.

same issue here

Style/SpaceInsideHashLiteralBraces has the wrong namespace - should be Layout

https://github.com/bbatsov/rubocop/blob/master/manual/cops.md#layout
Here can find the cop deparments. The only issue I have is Naming/PredicateName got marked as in Style.

Another data point: I'm seeing 'Style/DotPosition has the wrong namespace - should be Layout', but my .rubocop.yml file doesn't mention DotPosition at all. I wasn't able to find a place where it's being referenced.

I am also seeing Layout/DotPosition has the wrong namespace - should be Style in VScode 1.18.1. I have "ruby.rubocop.executePath" pointed at the binary in my rvm ruby version 2.4.1. Changing to a binary in an older version of Ruby doesn't seem to fix it and it works fine in Atom.
I do have "ruby.rubocop.configFilePath" pointed to a yml file in another repo.

I have this issue as well, both on the CLI as well as in VSCode. Currently, this extension treats any warnings from Rubocop as errors, and terminates the run. On the CLI, Rubocop will warn you of incorrect namespaces but it will still lint the file. Can we update this extension to have the same behavior. I'd argue that this extension should ignore warnings and continue to lint unless there is an actual error running Rubocop.

To fix it just replace in your .rubocop.yml file Style by Layout.
# change this
Style/ClosingParenthesisIndentation
# to this
Layout/ClosingParenthesisIndentation

@yusefu You're correct, that does solve the issue. What I was calling attention to is the fact that the Rubocop binary still lints the file despite these warnings. I was hoping to see the same behavior implemented in this extension. I'm happy to help contribute 😀

@yusefu You're correct, that does solve the issue. What I was calling attention to is the fact that the Rubocop binary still lints the file despite these warnings. I was hoping to see the same behavior implemented in this extension. I'm happy to help contribute 😀

+1


dsl: patch for custom coefficients on staggered grids or at forward timesteps

Supersedes  #1619 with cleaner implementation, and fixes for derivatives taken on u.forward or u.backward.

closing as superseded by #1640


WinAppDriver needs to include value key on the response object even when value is NULL ( e.g. return obj for actions like click).

I recently started using the WebDriverIO/Appium for automating Windows native apps using WinAppDriver.
My test setup looks like following:
webdriverio <=> Appium server <=> WinAppDriver
  (v5.1.7)        (v1.13.0)          (v1.5.1)

Webdriver IO module interpretes a command to have failed, if response object returned from a driver does NOT have a value.
Refer: https://github.com/webdriverio/webdriverio/blob/67aa4d5296f60448a8ccccc43fa0fa9064a67bd6/packages/webdriver/src/utils.js#L23
I raised a bug in webdriverio project about this here. But the resolutions seems to be on the WinAppDriver side (https://github.com/webdriverio/webdriverio/issues/4105#issuecomment-504342332). Please refer to comments on this issue. Hence raising it here.
Scenario that fails:
When using webdriverio commands like 'click' or 'setValue', I see these actions being executed successfully on the application under test but webdriverio test fails with unknown error.
WDIO test logs below:
0-0] 2019-06-21T05:08:59.772Z INFO webdriver: RESULT { ELEMENT: '742cae43-a5a9-4c74-8250-7e6532bec409' }
[0-0] 2019-06-21T05:08:59.778Z INFO webdriver: COMMAND elementClick("742cae43-a5a9-4c74-8250-7e6532bec409")
[0-0] 2019-06-21T05:08:59.778Z INFO webdriver: [POST] http://<IP_ADDRESS>:4723/wd/hub/session/bd2b4751-0c0d-45f9-a698-7cecee8a96de/element/742cae43-a5a9-4c74-8250-7e6532bec409/click
[0-0] 2019-06-21T05:09:00.146Z WARN webdriver: Request failed due to unknown error
[0-0] 2019-06-21T05:09:00.146Z INFO webdriver: Retrying 1/3
2019-06-21T05:09:00.146Z INFO webdriver: [POST] http://<IP_ADDRESS>:4723/wd/hub/session/bd2b4751-0c0d-45f9-a698-7cecee8a96de/element/742cae43-a5a9-4c74-8250-7e6532bec409/click
[0-0] 2019-06-21T05:09:01.037Z WARN webdriver: Request failed due to unknown error
[0-0] 2019-06-21T05:09:01.037Z INFO webdriver: Retrying 2/3
2019-06-21T05:09:01.037Z INFO webdriver: [POST] http://<IP_ADDRESS>:4723/wd/hub/session/bd2b4751-0c0d-45f9-a698-7cecee8a96de/element/742cae43-a5a9-4c74-8250-7e6532bec409/click
[0-0] 2019-06-21T05:09:01.913Z WARN webdriver: Request failed due to unknown error
[0-0] 2019-06-21T05:09:01.913Z INFO webdriver: Retrying 3/3
2019-06-21T05:09:01.914Z INFO webdriver: [POST] http://<IP_ADDRESS>:4723/wd/hub/session/bd2b4751-0c0d-45f9-a698-7cecee8a96de/element/742cae43-a5a9-4c74-8250-7e6532bec409/click
[0-0] 2019-06-21T05:09:02.775Z ERROR webdriver: Request failed due to Error: unknown error
    at getErrorFromResponseBody (/home/satish/projects/webdriver-io/node_modules/webdriver/build/utils.js:347:12)
    at Request._callback (/home/satish/projects/webdriver-io/node_modules/webdriver/build/request.js:121:64)
    at Request.self.callback (/home/satish/projects/webdriver-io/node_modules/request/request.js:185:22)
    at emitTwo (events.js:126:13)
    at Request.emit (events.js:214:7)
    at Request.<anonymous> (/home/satish/projects/webdriver-io/node_modules/request/request.js:1161:10)
    at emitOne (events.js:116:13)
    at Request.emit (events.js:211:7)
    at IncomingMessage.<anonymous> (/home/satish/projects/webdriver-io/node_modules/request/request.js:1083:12)
    at Object.onceWrapper (events.js:313:30)
[0-0] Error in "MedAdvisor Clinic Desktop (ozdocs sidebar) should launch the application"
unknown error

To Reproduce
I have provided all the example logs from WinAppDriver/Appium side and WDIO Test runner side. Happy to create a github project but, at the moment, I don't believe that its strictly needed.
Expected behavior
Since the commands are interacting with the application successfully, WDIO test should not return any error. It should just pass.
Log
When I looked closely at the Appium server logs, I noticed
webdriverio commands that perform actions like click or setValue, do not have a value property in the object returned.
e.g.
{"sessionId":"89AD0463-E87A-49CB-ABA1-16EDB3D57DE6","status":0}  //note there is no 'value' property

Appium server log below:
[HTTP] --> POST /wd/hub/session/ee42f592-ffd2-4870-a2d0-edf8b276da3e/element/42.2753192/value
[HTTP] {"text":"asdfASDF12!@","value":["a","s","d","f","A","S","D","F","1","2","!","@"]}
[MJSONWP (ee42f592)] Driver proxy active, passing request on via HTTP proxy
[debug] [WD Proxy] Matched '/wd/hub/session/ee42f592-ffd2-4870-a2d0-edf8b276da3e/element/42.2753192/value' to command name 'setValue'
[debug] [WD Proxy] Proxying [POST /wd/hub/session/ee42f592-ffd2-4870-a2d0-edf8b276da3e/element/42.2753192/value] to [POST http://<IP_ADDRESS>:4724/wd/hub/session/89AD0463-E87A-49CB-ABA1-16EDB3D57DE6/element/42.2753192/value] with body: {"text":"asdfASDF12!@","value":["a","s","d","f","A","S","D","F","1","2","!","@"]}
[WinAppDriver] [STDOUT]
[WinAppDriver] [STDOUT]
[WinAppDriver] [STDOUT] ==========================================
[WinAppDriver] [STDOUT] POST /wd/hub/session/89AD0463-E87A-49CB-ABA1-16EDB3D57DE6/element/42.2753192/value HTTP/1.1
[WinAppDriver] [STDOUT] Accept: application/json, */*
[WinAppDriver] [STDOUT] Connection: close
[WinAppDriver] [STDOUT] Content-Length: 81
[WinAppDriver] [STDOUT] Content-Type: application/json; charset=utf-8
[WinAppDriver] [STDOUT] Host: <IP_ADDRESS>:4724
[WinAppDriver] [STDOUT] User-Agent: appium
[WinAppDriver] [STDOUT]
[WinAppDriver] [STDOUT]
[WinAppDriver] [STDOUT] HTTP/1.1 200 OK
[WinAppDriver] [STDOUT] Content-Length: 63
[WinAppDriver] [STDOUT] Content-Type: application/json
[WinAppDriver] [STDOUT]
[WinAppDriver] [STDOUT] {"sessionId":"89AD0463-E87A-49CB-ABA1-16EDB3D57DE6","status":0}
[debug] [WD Proxy] Got response with status 200: {"sessionId":"89AD0463-E87A-49CB-ABA1-16EDB3D57DE6","status":0}
[WD Proxy] Replacing sessionId 89AD0463-E87A-49CB-ABA1-16EDB3D57DE6 with ee42f592-ffd2-4870-a2d0-edf8b276da3e
[HTTP] <-- POST /wd/hub/session/ee42f592-ffd2-4870-a2d0-edf8b276da3e/element/42.2753192/value 200 793 ms - 63
[HTTP]

Compare this with other commands that query the application for an element or text, for these commands, underlying WinAppDriver seems to set the value property on the returned object.
e.g.
{"sessionId":"89AD0463-E87A-49CB-ABA1-16EDB3D57DE6","status":0,"value":{"ELEMENT":"42.1115122"}} // note the value is set to an object containing element found

Appium server log below:
[HTTP] --> POST /wd/hub/session/ee42f592-ffd2-4870-a2d0-edf8b276da3e/element
[HTTP] {"using":"accessibility id","value":"btnSignIn"}
[MJSONWP (ee42f592)] Driver proxy active, passing request on via HTTP proxy
[debug] [WD Proxy] Matched '/wd/hub/session/ee42f592-ffd2-4870-a2d0-edf8b276da3e/element' to command name 'findElement'
[debug] [WD Proxy] Proxying [POST /wd/hub/session/ee42f592-ffd2-4870-a2d0-edf8b276da3e/element] to [POST http://<IP_ADDRESS>:4724/wd/hub/session/89AD0463-E87A-49CB-ABA1-16EDB3D57DE6/element] with body: {"using":"accessibility id","value":"btnSignIn"}
[WinAppDriver] [STDOUT]
[WinAppDriver] [STDOUT]
[WinAppDriver] [STDOUT] ==========================================
[WinAppDriver] [STDOUT] POST /wd/hub/session/89AD0463-E87A-49CB-ABA1-16EDB3D57DE6/element HTTP/1.1
[WinAppDriver] [STDOUT] Accept: application/json, */*
[WinAppDriver] [STDOUT] Connection: close
[WinAppDriver] [STDOUT] Content-Length: 48
[WinAppDriver] [STDOUT] Content-Type: application/json; charset=utf-8
[WinAppDriver] [STDOUT] Host: <IP_ADDRESS>:4724
[WinAppDriver] [STDOUT] User-Agent: appium
[WinAppDriver] [STDOUT]
[WinAppDriver] [STDOUT] {"using":"accessibility id","value":"btnSignIn"}
[WinAppDriver] [STDOUT] HTTP/1.1 200 OK
[WinAppDriver] [STDOUT] Content-Length: 96
[WinAppDriver] [STDOUT] Content-Type: application/json
[WinAppDriver] [STDOUT]
[WinAppDriver] [STDOUT] {"sessionId":"89AD0463-E87A-49CB-ABA1-16EDB3D57DE6","status":0,"value":{"ELEMENT":"42.1115122"}}
[debug] [WD Proxy] Got response with status 200: {"sessionId":"89AD0463-E87A-49CB-ABA1-16EDB3D57DE6","status":0,"value":{"ELEMENT":"42.1115122"}}
[WD Proxy] Replacing sessionId 89AD0463-E87A-49CB-ABA1-16EDB3D57DE6 with ee42f592-ffd2-4870-a2d0-edf8b276da3e
[HTTP] <-- POST /wd/hub/session/ee42f592-ffd2-4870-a2d0-edf8b276da3e/element 200 224 ms - 96
[HTTP]

@hassanuz : It has been quite some time and I wonder if this issue has caught anyone's attention yet?
Resolution to this issue is critical for us to move ahead with WinAppDriver. We want to be able to write our test code in Javascript using WebDriverIO framework.
Any help on this issue would be much appreciated.
Thanks,
Satish.

Its same for me.
I can´t use WinAppDriver with webdriverIO


[BUG] Non-latin filenames cannot be packaged as APK

Information

Apktool Version (apktool -version) - 2.9.0
Operating System (Mac, Linux, Windows) - Windows
APK From? (Playstore, ROM, Other) - Other
Java Version (java --version) - jdk17

Stacktrace/Logcat
>I: Using Apktool 2.9.0
>I: Smaling smali folder into classes.dex...
>I: Smaling smali_classes2 folder into classes2.dex...
>I: Building resources...
>W: F:\gp\NewKiller\projects\鐤媯闉瓙澶т綔鎴榎Project\res: error: failed to open directory: 绯荤粺鎵句笉鍒版寚瀹氱殑鏂囦欢銆? (2).
>brut.androlib.exceptions.AndrolibException: brut.common.BrutException: could not exec (exit code = 1): [C:\Users\admin\AppData\Local\Temp\brut_util_Jar_49079672213223373052427138622113176401.tmp, compile, --dir, F:\gp\NewKiller\projects\疯狂鞭子大作战\Project\res, --legacy, -o, F:\gp\NewKiller\projects\疯狂鞭子大作战\Project\build\resources.zip]

Steps to Reproduce

apktool
Using the same apk file, let's say the name is: 大作战.apk, will not be able to build as apk. The preceding error is displayed.

2、If change same file's name to ABC.apk, everything works.
APK
Any apk file to take a Chinese name, you can Reproduce. Chinese name example：疯狂摩托_小.apk、疯狂鞭子大作战.apk
Questions to ask before submission

Have you tried apktool d, apktool b without changing anything? yes
If you are trying to install a modified apk, did you resign it? yes
Are you using the latest apktool version? yes

This works fine on Linux, so I'm tempted to say this is just a misconfiguration of your Windows environment.
➜  3391 apktool d 疯狂鞭子大作战.apk
I: Using Apktool 2.9.0 on 疯狂鞭子大作战.apk
I: Loading resource table...
I: Decoding file-resources...
I: Loading resource table from file: /home/ibotpeaches/.local/share/apktool/framework/1.apk
I: Decoding values */* XMLs...
I: Decoding AndroidManifest.xml with resources...
I: Regular manifest package...
I: Baksmaling classes.dex...
I: Copying assets and libs...
I: Copying unknown files...
I: Copying original files...
➜  3391 apktool b 疯狂鞭子大作战
I: Using Apktool 2.9.0
I: Checking whether sources has changed...
I: Smaling smali folder into classes.dex...
I: Checking whether resources has changed...
I: Building resources...
I: Building apk file...
I: Copying unknown files/dir...
I: Built apk into: 疯狂鞭子大作战/dist/疯狂鞭子大作战.apk
➜  3391

Alternatively, it may be this existing issue - https://github.com/iBotPeaches/Apktool/issues/1460
Thankfully as you spotted. You can easily workaround this issue in the meantime whether its a misconfiguration on your side or a bug specific to Windows.
Closing anyway since we have #1460 or its a misconfiguration.

@iBotPeaches By the way, I know why. Doesn't seem to be the reason you gave.
The reason for all this is because of aapt2. Apktool now uses aapt2 by default, but aap2 is stricter about verifying resource paths, resulting in non-ASCII symbols being treated as exceptions.
There are only three solutions:

Small amount or single application: aapt2 is recommended. Change apk to English name, and then apktool d and b. Simplicity: ⭐
a large number of applications, still want to use aapt: it needs to manually switch back to aapt when calling apktool. Command line: apktool b folder --use-aapt1 {options} . Simplicity: ⭐
a large number of applications, want to use aapt2: you need to write a script, when calling aapt2, automatically change the project name to English name. When it's over, change the project name back to the original name. Simplicity: ⭐⭐⭐


Add README instructions and prepare DB on dev

Hey @antoinechalifour 👋
We cloned the project to run it locally today with @heygul. We found some steps that we had to do that were not documented, so we updated the README to add these.
Let's know if we got something wrong.
Cheers 🍻

Hey @nicoespeon @HEYGUL 👋
Thanks for taking the time to look at the project, and thanks a lot for the improvements! Everything looks good to me, let's merge this PR 🤙


Issues with Jira / Confluence

Jira: "Filter" mode takes 100% GPU, "complex" mode is fine, "simple" mode too simple (i.e board/backlog table separators not showing, ticket boxes not showing).
(it's heavy on gpu even without Night Lizard..)
Confluence: Hangs and crashes in "complex" mode when editing page.

Unfortunately I don't use those products to be able to debug the problem.

Hi Pavel,
Sorry, I didn't notice you're doing this solo!
Not saying that you should or must do so of course,
But if you get a chance you can create a free account on Atlassian Cloud which will give you access to both Jira Cloud and Confluence.
I'll try to collect some more information and see if I can help.
Thanks

Actually, seems to work fine with Chrome 83.0.4103.61 in Filter mode.

I still get this issue
Browser hangs if I click in the message box of Jira's Confluence.
Using Brave Version 1.13.57 Chromium: 84.0.4147.105 (Official Build) dev (64-bit)
Tried with shields on and off, no difference.
Log shows this, so maybe jquery's fault?:
[8684:8703:0810/013623.095400:VERBOSE1:network_delegate.cc(32)] NetworkDelegate::NotifyBeforeURLRequest: https://enterprise-cloud.atlassian.net/browse/SVTDR-7
[8837:518:0810/013630.625175:VERBOSE1:thread_state.cc(1347)] [state:0x1fb83d9c000] CollectGarbage: time: 0.25ms stack: NoHeapPointersOnStack marking: AtomicMarking sweeping: EagerSweeping reason: ThreadTerminationGC
[8899:132:0810/013647.903595:ERROR:child_thread_impl.cc(334)] Crashing because hung
[8650:8650:0810/013700.685166:INFO:CONSOLE(114)] "2020-08-10T05:37:00.685Z Orchestration: stepsExecutor deadline has been exceeded. Stage 2", source: https://statics.teams.cdn.office.net/hashedjs/0-angular-jquery.min-eee9041.js (114)
[8650:8650:0810/013700.685801:INFO:CONSOLE(114)] "2020-08-10T05:37:00.685Z EC::HybridContentVisibilityManager: Error caught in loadServices: {"reason":"service_not_enabled_orchestration"}.", source: https://statics.teams.cdn.office.net/hashedjs/0-angular-jquery.min-eee9041.js (114)
[8650:8650:0810/013700.686250:INFO:CONSOLE(114)] "2020-08-10T05:37:00.686Z Orchestrator: EC::ExperienceContainerFeatureOrchestrationStep loadServices failed: "service_not_enabled_orchestration".", source: https://statics.teams.cdn.office.net/hashedjs/0-angular-jquery.min-eee9041.js (114)


Lazily fetch entry comments

Motivation
Closes #2340
This PR makes the index fetch entry documentation only when requested, rather than eagerly indexing all comments. The idea is that not storing all documentation for all entries eagerly will reduce memory usage and speed up initial indexing.
In benchmarks, the impact was not as high as I had hoped. About 7.5% memory reduction and 5% indexing time reduction.
Implementation
The idea is that we add a flag to ignore comments on the initial indexing. When a file is modified, we turn on the flag so that we can capture the comments on a file currently opened in the UI.
When anything tries to read comments, the index fetches them lazily using Prism.parse_file_comments.
Automated Tests
Existing tests cover it.

I think it should be considered a breaking change when Entry#comments is changed to return a string instead of an array of strings. Is this change necessary for the performance improvement?

Yes, it reduces the number of objects allocated since we're not longer maintaining and array of multiple strings, but instead a single string.
Conceptually, I agree, it's a breaking change. But do we know if any addon is actually invoking comments directly on entries? The Rails addon doesn't do that.

Do we know how much of the memory reduction is contributed by lazy indexing, and how much is contributed by the type change?
If, for example, the lazy comment indexing just contributed to 1~2% of memory reduction by itself, then I'd prefer not maintaining 2 different comment collection logic.

I just benchmarked this to compare. The lazy logic is responsible for 6.8% out of the 7.5% reduction. The reduction related to turning the comments from an array into strings is the smaller part.

@vinistock Thanks for benchmarking the difference. IMO we can update this PR's title to be more generic, like "Optimize comment indexing", as the comment type change is also not trivial.


Adds indentation to IIEF

Possibilite to indent the code inside IIEF.

Hmm, very good!
I'll add a test for the new feature and will publish new version of the package a little later.

Thanks for accept, this feature will help me alot!


chore(go): upgrade to 1.21

Upgrades go version. Resolves #521

tests https://github.com/aiven/aiven-operator/actions/runs/6822983731


Allow verifier query set use different username and password

presto-verifier is an excellent project to make sure any changes on the plugin doesn't break anything.
But in our test cases, we've used tens of different username and password at the query sets. At the first time, we tried to create different suite per credential, the numbers of suite kept growing and it's getting hard to manage and merge the verification result.
So if the query set allows to store username and password and use them, we could run the verifier without changing every time or creating tens configuration files. Also it should be allowed to override the stored value as the verifier is already doing on the catalog and schema.

Other than the two comments this looks good. Let me know when you've addressed those and I'll merge this. Thanks!

Rebased and added {{@LegacyConfig}} and {{ALTER TABLE}} statement for upgrade

Merged. Thanks!


[vcpkg_configure_make] Fix processing of CMAKE_<LANG>_STANDARD_LIBRARIES

Linker flags must be preserved, not prefixed with -l.
Fixes #30327.
Tested with libpq:arm-android (reproducer), libpq:x64-mingw-dynamic (w.r.t. -luuid).

[x] Changes comply with the maintainer guide
[X] SHA512s are updated for each updated download
[x] The "supports" clause reflects platforms that may be fixed by this new version
[x] Any fixed CI baseline entries are removed from that file.
[X] Any patches that are no longer applied are deleted from the port's directory.
[X] The version database is fixed by rerunning ./vcpkg x-add-version --all and committing the result.
[X] Only one version is added to each modified port's versions file.

@dg0yt  Can this be duplicate to https://github.com/microsoft/vcpkg/pull/31228?

@dg0yt Can this be duplicate to #31228?

Not so much. This PR (30381) is complete and done and fixes one particular issue.
#31228 includes it so that it is possible do minimize the number of rebuilds on the user side. But is entirely unpredictable how it will pass through baseline regression and review. So you must decide if you can approve #31228 soon enough.

We will review and approve https://github.com/microsoft/vcpkg/pull/31228 as soon as possible, I will be converting your PR to draft status.

Closing in favor of https://github.com/microsoft/vcpkg/pull/31228.


Fellowship of the Ring black screen on startup (DX8 game)

Hey, so this game suffer from a black screen on startup if it's run on Nvidia or Intel GPU (will work fine for AMD)
this is a long known issue concerning this game
Currently the only way to fix this issue is to use a pretty old tool called 3D-Analyse with the "LOTR texture fix" option (all is described on pcgamingwiki)
The problem is that this tool have alot of issues with modern windows security (vista/7 and up) (files won't always get injected properly with UAC, all these kind of annoying quirks...) and prevent the use of any dx8 to 9 wrapper/converter (it's injecting/dropping differents dlls at startup and will override any existing dx8 wrapper present in the game folder) (i also think 3D-Analyse breaks some visual effects)
That game also suffer from high framerate issue, but since it's dx8 and can't be converted to dx9 we can't use driver level (like nvidia's one) FPS limiter (we need to use stuff like Bandicam or RivaTuner but the result is not as good as with a driver level limiter)
Would it be possible to replicate the fix done by 3D-Analyse in a modern dx8 to 9 wrapper ?
here is the website of the creator of the tool https://www.tommti-systems.de/start.html maybe he can help
Thx for your time.

This looks like an issue with d3d8to9.  You may want to post this on that GitHub instead.  I have not really had time to look much into d3d8to9 issues.


Detect task failures in benchmarks

This is a breaking change to the JSON reporting of query times.
Previously, the queryTime field would contain -1 if the query failed and >= 0 if the query was successful.
With these changes, queryTime will always be the elapsed time and there is a new queryStatus field which will have one of the following values: Completed, CompletedWithTaskFailures, or Failed.

LGTM!

build

I was actually wanting this today, so its great to see this. Is there a way we can just mark it special for this case - passed but with failures so probably affected overall time - or what does mark the query as failed mean? It probably gets complicated talking when you want to graph it. Does it fail but still report query Time?

Maybe an option "--fail-on-task-error" defaulting to true?

I was actually wanting this today, so its great to see this. Is there a way we can just mark it special for this case - passed but with failures so probably affected overall time - or what does mark the query as failed mean? It probably gets complicated talking when you want to graph it. Does it fail but still report query Time?

I'll look at this before merging this PR. It would be good to report time and status separately perhaps (status = Completed, Failed, CompletedWithTaskFailures)?

I think separate makes sense

@abellina @tgravescs This is ready for another review.

build

build

build


Small broken change: Fixed traceparent header for tracing grpc requests + * Added method ID() into spans.Span interface

Pull request type

Please check the type of change your PR introduces:

[x] Bugfix
[ ] Feature
[ ] Code style update (formatting, renaming)
[x] Refactoring (no functional changes, no api changes)
[ ] Build related changes
[ ] Documentation content changes
[ ] Other (please describe):

What is the current behavior?

Issue Number: N/A
What is the new behavior?

Other information

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 41.03%. Comparing base (15ac7bf) to head (bc61e61).

:exclamation:  There is a different number of reports uploaded between BASE (15ac7bf) and HEAD (bc61e61). Click for more details.
HEAD has 508 uploads less than BASE

Flag
BASE (15ac7bf)
HEAD (bc61e61)

unit
70
6

go-1.21.x
48
2

ubuntu
102
3

go-1.23.x
55
2

macOS
23
2

go-1.22.x
46
2

windows
24
1

integration
72
0

ydb-23.3
24
0

ydb-24.1
24
0

ydb-24.2
24
0

ydb-nightly
7
0

experiment
7
0

Additional details and impacted files
@@             Coverage Diff             @@
##           master    #1545       +/-   ##
===========================================
- Coverage   70.90%   41.03%   -29.88%
===========================================
  Files         362      361        -1
  Lines       37509    37373      -136
===========================================
- Hits        26596    15336    -11260
- Misses       9829    21528    +11699
+ Partials     1084      509      -575

Flag
Coverage Δ

experiment
?

go-1.21.x
43.52% <ø> (-26.83%)
:arrow_down:

go-1.22.x
41.01% <ø> (-27.40%)
:arrow_down:

go-1.23.x
41.01% <ø> (-29.86%)
:arrow_down:

integration
?

macOS
41.00% <ø> (-0.04%)
:arrow_down:

ubuntu
41.02% <ø> (-29.88%)
:arrow_down:

unit
41.03% <ø> (-0.02%)
:arrow_down:

windows
43.45% <ø> (+2.41%)
:arrow_up:

ydb-23.3
?

ydb-24.1
?

ydb-24.2
?

ydb-nightly
?

Flags with carried forward coverage won't be shown. Click here to find out more.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Add WildFire Dataset object and split strategies

Hello,
This PR aims at:

Add WildFireDataset  pytorch compatible class
Add Strategy to split the dataset in train/val/test without mixing the fire_ids

Example:
from torch.utils.data import DataLoader
from pyronear.datasets.wildfire import (WildFireDataset,
                                        WildFireSplitter)

wildfire = WildFireDataset(metadata='wildfire.csv',
                           path_to_frames=path_to_frames)

ratios = {'train': 0.7, 'val': 0.15, 'test':0.15}

splitter = WildFireSplitter(ratios)
splitter.fit(wildfire)

wildfire_loader_train = DataLoader(splitter.train, batch_size=64, shuffle=True)
wildfire_loader_val = DataLoader(splitter.val, batch_size=64, shuffle=True)
wildfire_loader_test = DataLoader(splitter.test, batch_size=64, shuffle=True)

Any feedback is welcome

You made a mistake in your example, it is ->
from torch.utils.data import DataLoader
from pyronear.datasets.wildfire import (WildFireDataset,
WildFireSplitter)
wildfire = WildFireDataset(metadata='wildfire.csv',
path_to_frames=path_to_frames)
ratios = {'train': 0.7, 'val': 0.15, 'test':0.15}
splitter = WildFireSplitter(ratios)
splitter.fit(wildfire)
wildfire_loader_train = DataLoader(splitter.train, batch_size=64, shuffle=True)
wildfire_loader_val = DataLoader(splitter.val, batch_size=64, shuffle=True)
wildfire_loader_test = DataLoader(splitter.test, batch_size=64, shuffle=True)

Thanks for your feedback!
Indeed, I forget to update the description.
So, If I understand it right, only these two lines needs to be updated:
splitter = WildFireSplitter(ratios)
splitter.fit(wildfire)


[RFI] inputs; selection with user input as choice.

Using these definitions:
"inputs": [
    {
        "type": "promptString",
        "id": "hostname",
        "description": "Name of the host.",
        "default": "www"
    },
    {
        "type": "pickString",
        "id": "hostnames",
        "description": "Select a predefined host.",
        "default": "ns",
        "options": [
            "ns",
            "www",
            "google.com"
        ]
    }
]

It would be nice if we somehow could use the promptString entry as an option for the selections of the pickString entry.
I tried adding "${input:hostname}" to the options of it but that did not work...

@isidorn Is this a feature request for QuickPick? Or maybe this is tasks?

I have no clue, I am not a good inbox tracker :)

We will not support this to prevent recursion in the inputs. We may support simple replacement someday: https://github.com/microsoft/vscode/issues/64358

@alexr00 Recursion would not be a problem if it was only allowed in pickString types that reference promptString types...


Add "nodeId" and "nodeType" fields in log messages

Motivation: To collect and distinguish logs from different servers.
Done.


Cannot add API key for SSMS

With release 2, SSMS 2017:

Downloaded
Followed instructions here: https://github.com/gandarez/ssms-wakatime
(particularly copying WakaTime folder to C:\Program Files (x86)\Microsoft SQL Server\140\Tools\Binn\ManagementStudio\Extensions ), including running the batch file.
Was not asked for API key, not clear where to input.

Installed this extension via zip --> folder and executing batch. There do not seem to be any other installation steps?

Sorry, I have tried using this before, but new local machine so should be a clean install.

The api key will be asked only if you're isntalling WakaTime for the very first time


Add pages

Check this for the wireframes: https://docs.google.com/document/d/1i4deM9ajf9f5JpRDf3NaYXq8mnJzgOgvNn0CDH8JJEg/edit
Write which page you want to take on in the comments.

I'll do the payment page right now


Can't add letter on Create New Campaign form

https://denver-reimagine.herokuapp.com/new-campaign/address
Apartment number only allows numbers and no letters. What if someone lives in "4B"?

The address for the campaign is provided by the google API.
For recycling campaign the building itself should be enough information to create an accurate enough campaign.
Closing this issue.  If users find this feature necessary after launch then it should be reopened


[Bug]: openai required

Bug Description
out of documentation: https://docs.llamaindex.ai/en/stable/module_guides/models/embeddings.html#modules
/===
from langchain.embeddings.huggingface import HuggingFaceBgeEmbeddings
from llama_index import ServiceContext
embed_model = HuggingFaceBgeEmbeddings(model_name="BAAI/bge-base-en")
service_context = ServiceContext.from_defaults(embed_model=embed_model)
gives
ValueError                                Traceback (most recent call last)
/usr/local/lib/python3.10/dist-packages/llama_index/llms/utils.py in resolve_llm(llm)
28             llm = OpenAI()
---> 29             validate_openai_api_key(llm.api_key)
30         except ValueError as e:
4 frames
ValueError: No API key found for OpenAI.
Please set either the OPENAI_API_KEY environment variable or openai.api_key prior to initialization.
API keys can be found or created at https://platform.openai.com/account/api-keys
During handling of the above exception, another exception occurred:
ValueError                                Traceback (most recent call last)
/usr/local/lib/python3.10/dist-packages/llama_index/llms/utils.py in resolve_llm(llm)
29             validate_openai_api_key(llm.api_key)
30         except ValueError as e:
---> 31             raise ValueError(
32                 "\n******\n"
33                 "Could not load OpenAI model. "
ValueError:

Could not load OpenAI model. If you intended to use OpenAI, please check your OPENAI_API_KEY.
Original error:
No API key found for OpenAI.
Please set either the OPENAI_API_KEY environment variable or openai.api_key prior to initialization.
API keys can be found or created at https://platform.openai.com/account/api-keys
To disable the LLM entirely, set llm=None.

Version
llama-index-0.9.21
Steps to Reproduce
from langchain.embeddings.huggingface import HuggingFaceBgeEmbeddings
from llama_index import ServiceContext
embed_model = HuggingFaceBgeEmbeddings(model_name="BAAI/bge-base-en")
service_context = ServiceContext.from_defaults(embed_model=embed_model)
Relevant Logs/Tracbacks
No response

The LLM defaults to openai
Either set the LLM to something else, provide the openai key, or explicitly disable it with ServiceContext.from_defaults(llm=None, ...)

@logan-markewich
Whan you pass none for llm I got "LLM is explicitly disabled. Using MockLLM." what does it mean ?
I want to do something like that:
embed_model = HuggingFaceEmbedding(MODEL_PATH)
service_context = ServiceContext.from_defaults(llm=None, embed_model=embed_model)
nodes = [TextNode(id_=id_, text=text) for id_, text in corpus.items()]
index = VectorStoreIndex(
nodes,
service_context=service_context,
show_progress=True
)
retriever = index.as_retriever(similarity_top_k=top_k)

@tempdeltavalue  that just means if you tried to use a query engine, it would not work. Since you are only using a retriever it's fine

@logan-markewich MockLLM a bit scared me ) sorry
Thank you !


doc: behavior of Fortran subsystem needs more explanation

There doesn't seem to be any formal description of the set of Fortran tools - particularly vectoring to "different" compilers based on the source filename suffix.
There are 15 Fortran tool modules:  aixf77.py, cvf.py, f03.py, f08.py, f77.py, f90.py, f95.py, fortran.py, g77.py, gfortran.py, ifl.py, ifort.py, sunf77.py, sunf90.py, sunf95.py. 12 of these import from FortranCommon and call add_all_to_env which adds all the known "dialects" to the construction environment: FORTRAN, F77, F90, F95, F03, F08 (there is a new Fortran standard, 2018, which SCons doesn't have anything for).  One of the missing three modules is a kind of wrapper - gfortran.py so it's really all-but-two (aixf77 and cvf). Of course, only one tool ever runs for a given environment setup, since SCons "stops there" once it's either found the first one from its autodetect list, or finds the one in the tool list.
With this setup, the command name is autodetected (based on platform rules), and ends up set as the compiler $FORTRAN and all of the standards variants; SCons dispatches to the named one if the suffix is not one of the base ones.  That is, FORTRAN and associated cvars are used if a .f, while F77 is used if a .f77.  This allows the developer to override defaults if some kind of special handling is needed for a specific variant.
You can probably deduce much of this if reading all of the entries (the many tool names, the many construction var names) but I certainly don't find it clear, it has taken a fair bit of digging in the code in my case.  If would be nicer if there was a single section that described the behavior from the SConscript witer's perspective, leaving the individual var-and-tool entries to fill in specific details when you need them.
gfortran itself makes some assumptions that aren't really reflected here:  files named .f are the old fixed-form style even if they're written to a very new Fortran standard, while files named .f90 are free-form (even in the very latest Fortran standard, the old fixed-form style remains a supported thing).  The Intel Fortran appears to follow this convention as well.  This kind of unfortunate choice makes it seem like Fortran 90 is some kind of magical thing, where it's just a dividing line between the two syntax styles.  Meanwhile, the gfortran tool has a special feature: after everything is set up, it rewrites itself as the compiler for all of the variants:
    fortran.generate(env)

    for dialect in ['F77', 'F90', 'FORTRAN', 'F95', 'F03', 'F08']:
        env['%s' % dialect] = 'gfortran'
        env['SH%s' % dialect] = '$%s' % dialect

ifort does this as well, using its own name of course, although for a smaller number of dialects:
    fc = 'ifort'

    for dialect in ['F77', 'F90', 'FORTRAN', 'F95']:
        env['%s' % dialect] = fc
        env['SH%s' % dialect] = '$%s' % dialect

Here's a proposal (the paste from formatted html loses linking to other manpage sections) - would this make sense?

There are several ways source file suffixes impact the behavior of SCons when working with Fortran language code (not all are system-specific, but they are included here for completeness).
As the Fortran language has evolved through multiple standards editions, there is sometimes a need to handle files from different language generations differently. To this end, SCons dispatches to a different compiler dialect setup (expressed as a set of construction variables) depending on the file suffix. By default all of these setups start out the same, but individual construction variables can be modified as needed to tune a given dialect. Each of these dialacts has a tool specification module whose documentation describes the construction variables associated with that dialect: .f (as well as .for and .ftn) in fortran; .f77 in f77; .f90 in f90; .f95 in f95; .f03 in f03; .f08 in f08.
While SCons recognizes multiple dialects, the convention of various available Fortran compilers is to assign an actual meaning to only two of these: .f (as well as .for and .ftn) refers to the fixed-format source code that was the only available option in FORTRAN 77 and earlier, and .f90 refers to free-format source code which became available starting with the Fortran 90 standard. Some compilers recognize the other later "variants" (e.g. .f03) as equivalent to .f90 for this purpose, while some do not - check the documentation for your compiler. A number of experts suggest sticking to just .f and .f90 as Fortran filename suffixes. Note that this is a convention applied by the compiler, not behavior imposed by SCons. The fixed/free form determination can usually be set explicitly with compiler flags, overriding the assumption that may be made based on the source file suffix.
The source file suffix does not imply conformance with the similarly-named Fortran standard - a suffix of .f08 does not mean you are compiling specifically for Fortran 2008. Normally, compilers provide command-line options for making this selection (e.g. -std=f2008 for gfortran).
On a case-sensitive system such as Linux or UNIX, a file with a an upper-cased suffix from the set .F, .FOR, .FTN, .F90, .F95, .F03 and .F08. is treated as a Fortran source file which shall first be run through the standard C preprocessor. The lower-cased versions of these suffixes do not trigger this behavior. On systems which do not distinguish between uppper and lower case in filenames, this behavior is not available, but files suffixed with either .FPP or .fpp are always passed to the preprocessor first. This matches the convention of gfortran from the GNU Compiler Collection, and is also be followed by certain other Fortran compilers.
Run through the C preprocessor here means that a different set of construction variables will be applied in constructed commands, for example $FORTRANPPCOM and $FORTRANPPCOMSTRinstead of$FORTRANCOMand$FORTRANCOMSTR`. See the Fortran-related construction variables for more details.

Your suggested text looks good to me


mergerfs: 2.33.3 -> 2.33.4

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/trapexit/mergerfs/releases.
meta.description for mergerfs is: "A FUSE based union filesystem"
meta.homepage for mergerfs is: "https://github.com/trapexit/mergerfs"
meta.changelog for mergerfs is: ""
Updates performed

Version update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
Warning: no invocation of /nix/store/hymwryv4wya4b2xj9q7vqr278jj9s4lq-mergerfs-2.33.4/bin/mount.mergerfs had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/hymwryv4wya4b2xj9q7vqr278jj9s4lq-mergerfs-2.33.4/bin/mergerfs had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/hymwryv4wya4b2xj9q7vqr278jj9s4lq-mergerfs-2.33.4/bin/mergerfs-fusermount had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/hymwryv4wya4b2xj9q7vqr278jj9s4lq-mergerfs-2.33.4/bin/mount.fuse.mergerfs had a zero exit code or showed the expected version
0 of 4 passed binary check by having a zero exit code.
0 of 4 passed binary check by having the new version present in output.
found 2.33.4 with grep in /nix/store/hymwryv4wya4b2xj9q7vqr278jj9s4lq-mergerfs-2.33.4
found 2.33.4 in filename of file in /nix/store/hymwryv4wya4b2xj9q7vqr278jj9s4lq-mergerfs-2.33.4

Rebuild report (if merged into master) (click to expand)

1 total rebuild path(s)

1 package rebuild(s)

1 x86_64-linux rebuild(s)
0 x86_64-darwin rebuild(s)

First fifty rebuilds by attrpath
mergerfs

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/hymwryv4wya4b2xj9q7vqr278jj9s4lq-mergerfs-2.33.4 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A mergerfs https://github.com/r-ryantm/nixpkgs/archive/8184a3a219c196c55074ea1299a42a7e60598ae9.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/hymwryv4wya4b2xj9q7vqr278jj9s4lq-mergerfs-2.33.4
ls -la /nix/store/hymwryv4wya4b2xj9q7vqr278jj9s4lq-mergerfs-2.33.4/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

mergerfs

Maintainer pings
cc @jfrankenau @makefu for testing.

2.33.5 is already out


Add bindings for Mutation component.

This issue is very similar to #22, and should take a similar approach. Let's keep the code paths as convergent as possible between these components and hooks.

Roadmap

[x] Add bindings for Mutation component.
[x] Add example showing how to use the Mutation component.
[ ] Add tests for the Mutation component.

Closed by #29 and #30.


Can this library a circle button in the center UITabBarController?

Hello! Can this library a circle button in the center UITabBarController?

No

But, we see center circle item on project image which has yellow color.


get displayed data on zoom.

need to declare funcion on config that get current data

What is your use case?

As I mentioned in the title. I would like get the current data that displayed,  and also the current time range.

I am currently working on a PR which should fix the issue without having to specify a new configuration function to retrieve already configured data. See https://github.com/marmelab/EventDrops/pull/151 as a reference.
I think it should fix your issue: https://github.com/marmelab/EventDrops/pull/151/files#diff-d48a18b6fef4f6aa6ba8f5b999f9ebd7R105

PR has been merged. Closing your PR. Feel free to re-open an issue if it doesn't fill your usecase. :)


add: github action workflow which prevent lint avoding PRs to be merged

a default github action which all projects could use should be part of the quality gate

beside our linters also consider to add:
https://github.com/wagoid/commitlint-github-action

consider coiing over this feature to the projects .github/workflow folder with the init function:
https://github.com/biotope/biotope-quality-gate/issues/219

@tiagomapmarques wasnt you already wrking on adding this?

The default action should just be to run the "lint" command of your project on the github action.
Or are you proposing something more complex?


Intrinsic type operators and genericity

In generics/theory/intrinsics/Readme.md we find the odd statements
"The purpose of this directory is to explore issues related to ensuring that intrinsic types are on an equal footing with user defined types.
The main concern has to do with "concepts" (ref C++). If Fortran generics provide a similar mechanism for restricting type-name parameters in a template, it would presumably be based upon the interfaces defined by type-bound procedures. But intrinsic types do not have type-bound procedures."
I say it is odd primarily because of the phrase "it would presumably be based upon the interfaces defined by type-bound procedures". While the early enforcement of type safety in generics, what C++ calls "strong concepts", in Fortran would have to be based upon interfaces, they do not have to be "type-bound" procedure interfaces. I can think of two other ways of specifying operator interfaces for type safety: either implicitly as a type attribute, or as separate generic parameters.
Ada in its generics can qualify the type parameters by what is essentially an attribute specifying the operations a type must support. These include assignment, equality operators, comparison operators, and numerical operators. In Fortran these could be specified by extending the type-attr-spec-list of the derived-type-stmt
derived-type-stmt is TYPE [ [ , type-attr-spec-list ] :: ] type-name [ ( type-param-name-list ) ]
to add, say, a required operators specifier, required-ops-spec
type-attr-spec is ABSTRACT
or access-spec
or BIND (C)
or EXTENDS ( parent-type-name )
or required-ops-spec
where required-ops-spec might be
required-ops-spec is BASIC
or EQUALITY
or COMPARABLE
or GROUP
or FIELD
or NUMERIC
or CONCATENABLE
with the following requirements on the operators supported by the type

required-ops-spec
Required operations

BASIC
Assignment

EQUALITY
Assignment, ==, /=

COMPARABLE
Assignment, ==, /=, >, >=, <, <=

GROUP
Assignment, +, -

FIELD
Assignment, +, -, *, /

NUMERIC
Assignment, +, -, *, /, **

CONCATENABLE
Assignment, //

The example of the Readme.md then becomes
TYPE, GROUP :: T
END TYPE T

The above approach has four weaknesses:

It requires the instantiation type to define all the operations of the required-ops-spec, when only a subset may be needed;
It assumes that both arguments to the operator are of the same type;
It doesn't  allow operator renaming, e.g., if the generic module consistently sorts using the > operator and the user wants to substitute the < operator to sort in the opposite order;
It can't deal with user defined operator names, e.g., .operator..

All four weaknesses can be addressed by allowing generics to take operators as parameters, say by using OPERATOR(defined-operator) as a parameter. Then the example becomes in Fortranesque pseudo-code
generic module example(T, operator(+))
    type, basic :: T
    end type T
    interface operator(+)
        function plus(x, y) result(z)
            import T
            type(T), intent(in) :: x, y
            type(T) :: z
        end function plus
    end interface
    ...
end module example

Then an instantiation might be
use:: rename => example(real(real64), operator(+))

or if you want to substitute the * operator for the +
use:: rename => example(real(real64), operator(*))

As operators are just symbols for functions with one or two arguments, the standard could even allow renaming using functions as the instantiation
use:: rename => example(real(real64), my_fun)

The above is easily generalized to operators with non-uniform arguments
generic module example(T, U, V, operator(+))
    type, basic :: T
    end type T
    type, basic :: U
    end type U
    type, basic :: V
    end type V
    interface operator(+)
        function plus(x, y) result(z)
            import T, U, V
            type(T), intent(in) :: x
            type(U), intent(in) :: y
            type(V) :: z
        end function plus
    end interface
    ...
end module example

use:: rename => example(real(real64), complex(real64), complex(real64), operator(+))

I am having trouble understanding how an "operator" parameter adds value here. Can you put together a use case that demonstrares why this is better than other coding styles such as user defined operators?

The OPERATOR(defined-operator) syntax is currently used in three ways:

To assign an operator "name" as an alias for a function of one or two arguments, whose names will not be important;
To tell the processor to make that name public or private; and
In the only list to tell the processor that that name will be one of the ones imported from a module.

I propose to extend that syntax to provide syntactic sugar in two mutually related generic contexts:

On the generic definition side to denote an input parameter that is a "function" of one or two parameters to be used within the generic definition with operator syntax; and
On the instantiation side to tell the processor to search the list of "functions" with that "name" as their interface to find one with arguments and results that correspond to the interface for the corresponding parameter in the generic definition statement.

For the purposes of the above the intrinsic operators are considered functions that are (currently) only available under their operator names.
Examples of generic instantiations where I would want to use a function of one or two parameters with operator syntax:

Hash tables need to compare hash values and keys for equality and inequality in entering and searching for data. I would prefer to use key1 == key2 over equals( key1, key2 );
Red-Black trees need to compare keys for equality and relative value in entering and searching for data. I would prefer to use key1 == key2 over equals( key1, key2 ), and key1 < key2 over less_than( key1, key2 );
Sorting need to compare values for equality and relative value. I would prefer to use value1 == value2 over equals( value1, value2 ), and value1 < value2 over less_than( value1, value2 ); and
Matrices use mathematical operations to define matrix addition and the forms of multiplication. I would prefer to to use matrix1(i,j)+matrix2(i,j) over plus(matrix1(i,j),matrix2(i,j)) and matrix1(i,j)*matrix2(j,k) over times(matrix1(i,j),matrix2(),k).

Examples of generic definitions where I would want to search among a list of operator names for the appropriate function would include any operators for the intrinsic types or derived types where the underlying name for the operator's function is private:

A hash table whose key is default character;
A hash table whose key is a derived type implementing the UCS;
Red-Black trees whose key is default character;
Sorting an array whose elements are an intrinsic type;
Matrices whose elements are a real or complex type; and
Matrices whose elements are a quaternion derived type whose underlying addition and multiplication operations are privater.

For a use case to consider alternative syntaxes, let us follow Tom Clune's example and consider a generic where we want to use a plus operator of uniform type T_generic.
Tom asserts that the only way to do this and maintain "concepts" is to use interfaces defined by type bound procedures. This would have a syntax somewhat like the following.
generic module uses_plus(T_generic)
    type :: T_generic
    contains
        procedure :: plus
        generic :: operator(+) => plus
    end type
    interface
       function plus(a,b) result(c)
          type(T_generic) :: c
          class(T_generic), intent(in) :: a
          type(T_generic), intent(in) :: b
       end function plus
    end interface

which might be instantiated as
use :: plus_module => uses_plus(T_instantiation)

This has the advantage that the only argument you have to pass is a single type so it will work with the most restrictive definition of generics. It has as its main disadvantage that it is difficult to to make this work with intrinsic types as the instantiation type. Tom tries a number of approaches to try to make this work for intrinsics, but I am not happy with any of them. It has as an additional disadvantage that the only function that can be used for the +  operation is the one named + in the instantiation type. It also doesn't consider the impact of non-type bound procedures.
As one alternative I suggest type attributes. With them the above example might be written:
generic module uses_plus(T_generic)
    type, group :: T_generic
    end type

which might be instantiated as
use :: plus_module => uses_plus(T_instantiation)

This has the following advantages:

the only argument you have to pass is a single type so it will work with the most restrictive definition of generics; and
it will work with the intrinsic types.

It has the following disadvantages:

The language has to add and define a new set of attributes for the derived type definition statement;
The instantiation type also has to define a - operator; and
The only function that can be used for the +  operation is the one named + in the instantiation type.

As a partial workaround, one might consider allowing procedures as generic parameters. Then Tom's example becomes:
generic module uses_plus(T_generic, plus)
    type :: T_generic
    end type
    interface operator(+)
       function plus(a,b) result(c)
          type(T_generic):: c
          type(T_generic), intent(in) :: a
          type(T_generic), intent(in) :: b
       end function plus
    end interface

which might be instantiated as
use :: plus_module => uses_plus(T_instantiation, plus_instantiation)

This has the following disadvantages:

Generics have to be generalized to allow procedures as parameters; and
The function plus_instantiation has to be available on the instantiation side.

Difficult to make work with the intrinsic types; and
Exposes the implementation of derived types.

As a generalization of allowing procedures as generic parameters, I suggested allowing operators as generic parameters. Then the example might be written:
generic module uses_plus(T_generic, plus)
    type :: T_generic
    end type
    interface operator(+)
       function plus(a,b) result(c)
          type(T_generic):: c
          type(T_generic), intent(in) :: a
          type(T_generic), intent(in) :: b
       end function plus
    end interface

which might be instantiated as
use :: plus_module => uses_plus(T_instantiation, operator(+))

or as
generic module uses_plus(T_generic, operator(+))
    type :: T_generic
    end type
    interface operator(+)
       function plus(a,b) result(c)
          type(T_generic):: c
          type(T_generic), intent(in) :: a
          type(T_generic), intent(in) :: b
       end function plus
    end interface

which might be instantiated as
use :: plus_module => uses_plus(T_instantiation, operator(+))

This has the following advantages over Tom's approach:

It will easily work with the intrinsic types;
It allows renaming for flexibility.

Its main disadvantage is that it requires a more flexible, and hence more complicated, generic definition. If you are going to allow operators as parameters, you are almost certainly going to want to allow procedures as parameters. I would argue that to represent ranks and dimensions you will also want to allow integers and integer vectors as generic parameters, so you will wind up with a definition significantly more complicated than that of, say, Java.

@wclodius2 For your final example:
generic module uses_plus(T_generic, operator(+))
    type :: T_generic
    end type
    interface operator(+)
       function plus(a,b) result(c)
          type(T_generic):: c
          type(T_generic), intent(in) :: a
          type(T_generic), intent(in) :: b
       end function plus
    end interface

how would this work with a derived type that has defined is + as a type-bound procedure?    There would no operator(+)  to pass in at the point of instantiation.    (At least presuming the actual procedure was itself private, and thus can only be accessed via the object.)

The issue of type-bound vs non type-bound operators is only one aspect that I was exploring with the directory that started this discussion.
Consider this case.     I want to have a template that is a simple container that stores a single object whose type is defined by the type parameter T.   And provide setters and getters.
The template could look something like
type :: container<T>
    type(T), allocatable :: object
contains
    procedure :: set
    procedure :: get
end type
abstract interface
      subroutine set(this, value)
            class(container<T>), intent(out) ::this
            type(T), intent(in) :: value
            this%value = value
      end subroutine set

      subroutine get(this, value)
           class(container<T>), intent(in) :: this
           type(T), intent(out) :: value
      end subroutine get
end interface

Something like that ought to work for most intrinsics and simple derived types, but what if the type has a len type prarameter?   Consider how we want the template to be instantiated when T is character.    The component in the type should be declared as character(:), allocatable :: value, and the value dummy in set should be character(*), intent(in) :: value, and the  value dummy in get should be character(:), allocatable :: value
How is the compiler to "know" that we meant for T to be declared differently in the case of character (or indeed any type with a len type parameter?   It is not impossible to do, but its at best an awkward aspect of all this.
A similar concern is whether or not a  generic type parameter can include rank.   I.e,  could I declare T in the above example to be a rank 3 integer array?   Or only scalars?     A rank 3 integer array is a different type than a scalar integer in most other languages.      We can solve this one by allowing an additional integer template parameter to specify the length -- hopefully allowing a default of 0 so that we don't burden the most common case.
None of these issues is likely to undermine an otherwise solid solution for generics.   But I do want to watch for solutions which allow such aspects to be handled as seamlessly as possible.

I now realize that I've really not even mentioned the primary reason that Magne asked me to explore this.  Namely we don't want the user to have to "teach" the compiler what operations are supported by the compiler.       There is some concern that the arithmetic operators on intrinsics are handled at such a low level that it is not trivial for the compilers to determine that a given operation is supported at the more abstract level of a template short of instantiating and compiling.     With traits/requirements/constraints we want the compiler to have this higher level understanding of intrinsic operations.    Probably will not play a role in how the language specs are written, but rather as a way to convince the compiler developers that this is straightforward.

@wclodius2 For your final example:
generic module uses_plus(T_generic, operator(+))
    type :: T_generic
    end type
    interface operator(+)
       function plus(a,b) result(c)
          type(T_generic):: c
          type(T_generic), intent(in) :: a
          type(T_generic), intent(in) :: b
       end function plus
    end interface

how would this work with a derived type that has defined is + as a type-bound procedure? There would no operator(+) to pass in at the point of instantiation. (At least presuming the actual procedure was itself private, and thus can only be accessed via the object.)

There are five "forms" of operators that must be dealt with:

Intrinsic

Fortran 90 style non-polymorphic non-type-bound operators such as my example. This is the most similar in semantics to the intrinsics.

Fortran 03 style polymorphic non-type-bound operators.
generic module uses_plus(T_generic, operator(+))
type :: T_generic
end type
interface operator(+)
function plus(a,b) result(c)
type(T_generic):: c
class(T_generic), intent(in) :: a
type(T_generic), intent(in) :: b
end function plus
end interface

Fortran 03 style non-polymorphic type-bound operators.
generic module uses_plus(T_generic, operator(+))
type :: T_generic
contains
procedure :: plus
generic :: operator(+) => plus
end type
interface
function plus(a,b) result(c)
type(T_generic):: c
type(T_generic), intent(in) :: a
type(T_generic), intent(in) :: b
end function plus
end interface

Fortran 03 style polymorphic type-bound operators similar to your example.
generic module uses_plus(T_generic, operator(+))
type :: T_generic
contains
procedure :: plus
generic :: operator(+) => plus
end type
interface
function plus(a,b) result(c)
type(T_generic):: c
class(T_generic), intent(in) :: a
type(T_generic), intent(in) :: b
end function plus
end interface

My understanding of type-bound procedures is that it is not that there is no + operator to pass, but rather that it is always present/public in scopes where its type is present/public, in which case the operator(+) for type bound procedures is a redundancy. Infelicitous, but not a problem.
The distinction between 'TYPEandCLASS` strikes me as harder to deal with. I suspect that the only solution is to have "different" generics for polymorphic vs. non-polymorphic types using something similar in spirit to C++'s pattern matching.

"How is the compiler to "know" that we meant for T to be declared differently in the case of character (or indeed any type with a len type parameter?"
The only way I can see of doing this is through something similar to C++'s pattern matching.
generic module containers(T, R)
    constrain
        type :: T(len)
            integer, len :: len
        end type T
        integer, parameter :: R
        requires(R==0)
    end constrain
        type :: container
            type(T(:)), allocatable :: object
        contains
            procedure :: set
            procedure :: get
        end type
    contains
        subroutine set(this, value)
            class(container), intent(out) ::this
            type(T(*)), intent(in) :: value
            this%object = value
        end subroutine set

        subroutine get(this, value)
            class(container), intent(in) :: this
            type(T(:)), allocatable, intent(out) :: value
            value = this % object
        end subroutine get

    else constrain
        type :: T
        end type T
        integer, parameter :: R
        requires(R==0)
    end constrain
        type :: container
            type(T), allocatable :: object
        contains
            procedure :: set
            procedure :: get
        end type
    contains
        subroutine set(this, value)
            class(container), intent(out) ::this
            type(T), intent(in) :: value
            this%object = value
        end subroutine set

        subroutine get(this, value)
            class(container), intent(in) :: this
            type(T), intent(out) :: value
            value = this % object
        end subroutine get

    else constrain
        type :: T
        end type T
        integer, parameter :: R
        requires(R>0)
    end constrain
        type :: container
            type(T), allocatable :: object(rank(R))
        contains
            procedure :: set
            procedure :: get
        end type
    contains
        subroutine set(this, value)
            class(container), intent(out) ::this
            type(T), intent(in) :: value(rank(R))
            this%object = value
        end subroutine set

        subroutine get(this, value)
            class(container), intent(in) :: this
            type(T), allocatable, intent(out) :: value(rank(R))
            value = this % object
        end subroutine get
end module containers

Provided the matching can be kept to a single level, the resulting generic language should still be type checkable.

"There is some concern that the arithmetic operators on intrinsics are handled at such a low level that it is not trivial for the compilers to determine that a given operation is supported at the more abstract level of a template short of instantiating and compiling."
My strong suspicion is that compilers will reduce the template to an intermediate representation, and whether this intermediate representation is before or after "type checking" will have little to do with the properties of the intrinsic types, and more as to what intermediate representations are already used in the compiler and the perceived demands of the user community. The most obvious intermediate representation is the parse tree, and this will have essentially no "type checking", although using the parse tree will reduce the high lexical cost of processing Fortran in instantiating the template. However if preprocessing is used in the template file they may not be able to even reduce it to a parse tree prior to instantiation.


C3Gauge R File

On the tutorial, the last block of code for C3Gauge.R has package = 'C3Gauge'.
This should be package = 'C3'.

Hi,
you're absolutely correct. We'll update the tutorial accordingly!
kind regards, Herman

the tutorial has been updated. Thanks for informing us!


WindowsPB : Add Visual Studio 2022 installation

Fixes #3168
Add VS2022 installation from layout and include checksum verification of VS2022 layout files
VS2022 is now a 64-bit application.
Checklist

[X] commit message has one of the standard prefixes
[ ] faq.md updated if appropriate
[ ] other documentation is changed or added (if applicable)
[ ] playbook changes run through VPC or QPC (if you have access)

@steelhead31 I believe that VS2022 has a Native arm64 version. We probably want to make sure that the correct version gets installed on our arm64 hosts if possible.

@steelhead31 I believe that VS2022 has a Native arm64 version. We probably want to make sure that the correct version gets installed on our arm64 hosts if possible. (This might already be happening but thought it was worth checking)

There is a single installer for both Visual Studio x64 and Arm64 architectures. The Visual Studio 2022 installer detects if the system architecture is Arm64 and if so, it'll download and install the Arm64 version of Visual Studio on your Arm64 device (support is for Windows 11). If you are installing the product via a layout, you'll need to explicitly configure the layout to include ARM binaries.
So it looks like we need to configure our layout file to support these files if we haven't already

@gdams We created the install layotu using the following:
vs_community.exe --layout VSLayout2022 --add Microsoft.VisualStudio.Workload.NativeDesktop;includeRecommended;includeOptional --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 --add Microsoft.VisualStudio.Component.VC.Tools.ARM64 --add Microsoft.VisualStudio.Component.VC.ATL.ARM64 --add Microsoft.VisualStudio.Component.VC.MFC.ARM64

@steelhead31 I believe that VS2022 has a Native arm64 version. We probably want to make sure that the correct version gets installed on our arm64 hosts if possible. (This might already be happening but thought it was worth checking)

There is a single installer for both Visual Studio x64 and Arm64 architectures. The Visual Studio 2022 installer detects if the system architecture is Arm64 and if so, it'll download and install the Arm64 version of Visual Studio on your Arm64 device (support is for Windows 11). If you are installing the product via a layout, you'll need to explicitly configure the layout to include ARM binaries.
So it looks like we need to configure our layout file to support these files if we haven't already

@gdams We created the install layout using the following:
vs_community.exe --layout VSLayout2022 --add Microsoft.VisualStudio.Workload.NativeDesktop;includeRecommended;includeOptional --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 --add Microsoft.VisualStudio.Component.VC.Tools.ARM64 --add Microsoft.VisualStudio.Component.VC.ATL.ARM64 --add Microsoft.VisualStudio.Component.VC.MFC.ARM64

@andrew-m-leonard can you please add --arch all to that command as that will generate an x64 only Layout file.

My installation on a x86_86 Win2022, shows the "arm" runtimes present
 Directory of C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist\arm\Microsoft.VC140.CRT

08/24/2023  08:25 AM    <DIR>          .
08/24/2023  08:25 AM    <DIR>          ..
05/30/2023  04:12 PM           275,856 concrt140.dll
05/30/2023  04:12 PM           521,584 msvcp140.dll
05/30/2023  04:12 PM           328,080 vccorlib140.dll
05/30/2023  04:12 PM            72,080 vcruntime140.dll

Latest VPC in progress: https://ci.adoptium.net/job/VagrantPlaybookCheck/1717/

Requires a fix for vs2022 dll registration.

VPC is currently failing on windows 2012, as VS2022 isn't supported, I'll update the playbook to only install when its only on a supported version.


FIX: Properly convert hyperlink data to new table rows

This should've been a part of the TableBlocks PR https://github.com/cfpb/cfgov-refresh/pull/2295 - an oversight on my part.
Test

To see the problem, visit http://build.consumerfinance.gov/data-research/credit-card-data/college-credit-card-agreement/ and notice the rows are missing data.
To see the fix, re-import prod data (./refresh-data.sh production.sql) & run migrations (python cfgov/manage.py migrate --fake-initial) & navigate to http://localhost:8000/data-research/credit-card-data/college-credit-card-agreement/ to verify the correct data is there.

Note

I'm updating the migration itself as opposed to adding a new one since this hasn't been run on prod yet, and we don't really want to run the previous migration on prod data if we can help it. If you have strong objections to that, discuss!

Assignee

@cfpb/cfgov-backends
@sebworks

If I understand what this migration is doing, it's equivalent to actually entering this in the Wagtail editor:

Which, unfortunately, just changes to this when you click out of the cell:

But then does actually put the right content in the page:

Will content editors who want to create tables using TableBlock have to actually enter the HTML tags for links when editing?

Recognizing that editing of HTML is suboptimal but not a blocker so 👍

I addressed most of the comments; ready for a final review.  Please review this time with an eye for data integrity as opposed to style - this is a migration that will be run once, does not need to be maintained, and will eventually be squashed.
Note that I ended up keeping the print statements as setting up logging would've been way out of scope for this PR, but is definitely something we should do separately!

A few things:

I didn't test this against the full set of production pages - I'm guessing that might be possible by pulling down a prod data dump at migration v1.0005? Having to do that is somewhat suboptimal, because at best it would just be checking that the code runs without failing, and then possibly doing some eyeballing of (a subset of?) existing tables to see if things look okay.
It'd be nice if there were some unit tests of this code that first set up tables, then applied the conversion code, then checked to see that the generated HTML is the same (I did some HTML comparison in the dynamic job blocks code and the Wagtail blocks code also has some simple tests that check HTML).
Having unit tests would allow for checking of the full set of table contents (text, hyperlink, text blob, rich text blob) and check things like unicode characters or empty fields. I know this is just a one-off migration but unless we're confident that this won't break any data in production it might give some additional assurance.

In order to test this locally, I had to do the following steps:

Drop my existing database and create an empty one.

$ ./drop-db.sh
$ ./create-mysql-db.sh

Temporaily remove migrations v1 0006, 0007.

$ rm cfgov/v1/migrations/0006* cfgov/v1/migrations/0007*

Apply all migrations through v1 0005

$ ./initial-data.sh

Start local server and create some pages in Wagtail that have Table blocks.

$ ./runserver.sh

Restore and apply migration 0006 (the modified version from this PR).

$ git checkout -- cfgov/v1/migrations/0006_update_tables.py
$ python cfgov/manage.py migrate v1 0006

Visually inspect the Wagtail pages to ensure that the TableBlock content looks the same.

Is this the best way to test the conversion locally?

More concretely, I noticed a visual difference in how multi-line TextBlobs are rendered between Table and TableBlock (paging @sebworks).
Here's what I entered in the Wagtail editor using a Table:

Here's what it looks like when the Table is rendered:

Here's the Table source code:

Here's what it looks like after being converted to a TableBlock:

Here's the TableBlock source code:

Is this a case where custom logic is required, as in the hyperlink?

Lastly, even though this is a one-off migration, it might be useful to try to clean up some of the more straightforward style issues, if only for readability. By straightforward I mean the issues around spacing and unused imports, not whether to use a for loop or list comprehension. Here's a flake8 dump of the new migration file, if you think it might be useful.

@chosak Thanks for your detailed comments!

To test locally, it's easiest to use a prod dump. Recent dumps are a lot faster than before. The migration in question, 0006_update_tables.py that is already in master is not going to be in prod until this PR gets merged in and also gets deployed, so we do not need to worry about that.
You might run something like
./refresh-data.sh production.sql and then python cfgov/manage.py migrate --fake-initial.

I think that there could be a lot of variations to the data in the old Table type, but for purposes of migrating, we should just focus on the ones that exist and make sure those work. To that end, I'm not actually sure how useful unit tests would be.  I've done a visual gut-check of the pages that get updated. Here is the output from the migration:

Updating tables in content field
Updating Table to a TableBlock on page College Credit Card Agreements of page type BrowsePage
Updating Table to a TableBlock on page Small Business Review Panels of page type BrowsePage
Updating Table to a TableBlock on page test to delete of page type BrowsePage
Updating Table to a TableBlock on page Adjudication Proceeding Rules of page type BrowsePage
Updating Table to a TableBlock on page Warning Letters of page type BrowsePage
Updating Table to a TableBlock on page Serving Your Country of page type SublandingPage
Updating Table to a TableBlock on page Civil Penalty Fund allocation schedule of page type LearnPage
Updating Table to a TableBlock on page Integrity Advance, LLC and James R. Carnes of page type DocumentDetailPage
Updating tables in full width text organisms
Updating Table to a TableBlock on page Testing options for Prepaid - LJ+KD of page type BlogPage
Updating Table to a TableBlock on page Title XIV Rules: Mortgage Origination of page type BrowsePage
Updating Table to a TableBlock on page Title XIV Rules: Mortgage Servicing of page type BrowsePage
Updating Table to a TableBlock on page Payments by Case of page type BrowsePage
Updating Table to a TableBlock on page System of Records Notices of page type BrowsePage
Updating Table to a TableBlock on page CFO update for the third quarter of fiscal year 2012 of page type LearnPage
Updating Table to a TableBlock on page CFO update for the third quarter of fiscal year 2012 of page type LearnPage
Updating Table to a TableBlock on page CFO update for the third quarter of fiscal year 2012 of page type LearnPage
Updating Table to a TableBlock on page CFO update for the third quarter of fiscal year 2012 of page type LearnPage
Updating Table to a TableBlock on page CFO update for the third quarter of fiscal year 2012 of page type LearnPage
Updating Table to a TableBlock on page CFO update for the second quarter of fiscal year 2012 of page type LearnPage
Updating Table to a TableBlock on page CFO update for the second quarter of fiscal year 2012 of page type LearnPage
Updating Table to a TableBlock on page CFO update for the second quarter of fiscal year 2012 of page type LearnPage
Updating Table to a TableBlock on page CFO update for the first quarter of fiscal year 2012 of page type LearnPage
Updating Table to a TableBlock on page CFO update for the first quarter of fiscal year 2012 of page type LearnPage
Updating Table to a TableBlock on page CFO update for the first quarter of fiscal year 2012 of page type LearnPage
Updating Table to a TableBlock on page CFO update for the fourth quarter of fiscal year 2011 of page type LearnPage
Updating Table to a TableBlock on page CFO update for the fourth quarter of fiscal year 2011 of page type LearnPage
Updating Table to a TableBlock on page CFO update for the fourth quarter of fiscal year 2011 of page type LearnPage
Updating Table to a TableBlock on page CFO update for the fourth quarter of fiscal year 2011 of page type LearnPage
Updating Table to a TableBlock on page CFO update for the third quarter of fiscal year 2011 of page type LearnPage
Updating Table to a TableBlock on page CFO update for the third quarter of fiscal year 2011 of page type LearnPage
Updating Table to a TableBlock on page CFO update for the third quarter of fiscal year 2011 of page type LearnPage
Updating Table to a TableBlock on page CFO update for the second quarter of fiscal year 2011 of page type LearnPage
Updating Table to a TableBlock on page CFO update for the second quarter of fiscal year 2011 of page type LearnPage
Updating Table to a TableBlock on page CFO update for the second quarter of fiscal year 2011 of page type LearnPage
Updating Table to a TableBlock on page CFO update for the first quarter of fiscal year 2011 of page type LearnPage
Updating Table to a TableBlock on page CFO update for the first quarter of fiscal year 2011 of page type LearnPage
Updating Table to a TableBlock on page CFO update for the first quarter of fiscal year 2011 of page type LearnPage

Once this is merged in, perhaps either @schaferjh or @sarahsimpson09 could do a review of the pages above. There are only about 13 unique ones.

Btw, so everyone is on the same page, this work will not go live until @sebworks work (on fixing up the admin front-end so that content editors can continue to have a rich text editor inside a Table block) is complete and merged in.  We will roll back this existing migration from master if necessary to deploy before it is all ready.

@chosak, yeah it looks like that's what the linkbreaksbr filter is doing in the template. Not sure how to handle that for legacy vs new tables.

@richaagarwal yes, I am happy to do a visual check of the necessary pages once this is merged. If you could just help remind me when the time comes. 😄

@chosak Thanks for linking to the flake8 file!  I went ahead and installed the tool locally and worked through all the errors. Super helpful!

Closing this, see #2367 instead.


New reworked package.py for icondusk-e2e

updates icondusk-e2e to account for new dependencies. Also incorporates the rpath fix as well as disabling MPI for eckit.

launch jenkins icondusk-e2e

launch jenkins icondusk-e2e

launch jenkins icondusk-e2e

launch jenkins icondusk-e2e

launch jenkins<EMAIL_ADDRESS>

launch jenkins<EMAIL_ADDRESS>

launch jenkins<EMAIL_ADDRESS>

launch jenkins<EMAIL_ADDRESS>

launch jenkins<EMAIL_ADDRESS>

launch jenkins icondusk-e2e

The packages are ok, the build is red only because icondusk-e2e is failing at code generation, but the cmake setup is fine.

Merging then!

Before merging, i also suggest this https://github.com/mroethlin/spack-mch/pull/1/files

launch jenkins icondusk-e2e

launch jenkins icondusk-e2e


[Dev branch] Trying to import incorrect dataset doesn't give error message

Very minor issue but may cause issues for new users (or people who forget which zip is which).  When importing SWA data, if an incorrect dataset is used nothing happens in the interface and the console shows an uncaught error.

I'm not super familiar with the SWA importer, but I've added a bit of extra error handling to this step in the dev branch to make it a bit more obvious UX-wise that something has gone wrong and why.


ValueError: invalid literal for int() with base 10: '937500k'

Trello: https://trello.com/c/xCnPsxEe/326-bug-invalid-literal-for-int-with-base-10-937500k-openshift-tools-usr-bin-cron-send-cluster-capacity
Noticed from zabbix: Average	PROBLEM ops-runner[cscc.openshift.master.capacity]: non-zero exit code on xxxxxxxxxx-master-xxxxx
oc get pods --all-namespaces -o json | grep '"memory"' | sort | uniq -c
    xxx                                 "memory": "125M"
    xxx                                 "memory": "128Mi"
    xxx                                 "memory": "1G"
    xxx                                 "memory": "2G"
    xxx                                 "memory": "3750M"
    xxx                                 "memory": "512Mi"
    xxx                                 "memory": "7500M"
    xxx                                 "memory": "937500k"

937500k was tripping up to_bytes.
[CTR][root@321ba7b38069 ~]$ ops-runner -f -s 120 -n cscc.openshift.master.capacity /usr/bin/cron-send-cluster-capacity
Traceback (most recent call last):
  File "/usr/bin/cron-send-cluster-capacity", line 414, in <module>
    OCC.run()
  File "/usr/bin/cron-send-cluster-capacity", line 56, in run
    self.cluster_capacity()
  File "/usr/bin/cron-send-cluster-capacity", line 398, in cluster_capacity
    self.load_pods()
  File "/usr/bin/cron-send-cluster-capacity", line 171, in load_pods
    self.load_container_limits(pod, new_pod['spec']['containers'])
  File "/usr/bin/cron-send-cluster-capacity", line 150, in load_container_limits
    to_bytes(mem)
  File "/usr/lib/python2.7/site-packages/openshift_tools/conversions.py", line 42, in to_bytes
    num_bytes = int(num)
ValueError: invalid literal for int() with base 10: '937500k'

After fixing this, the following happened:
Traceback (most recent call last):
  File "/usr/bin/cron-send-cluster-capacity", line 427, in <module>
    OCC.run()
  File "/usr/bin/cron-send-cluster-capacity", line 56, in run
    self.cluster_capacity()
  File "/usr/bin/cron-send-cluster-capacity", line 421, in cluster_capacity
    schedulable = self.how_many_schedulable(largest)
  File "/usr/bin/cron-send-cluster-capacity", line 233, in how_many_schedulable
    nodes[node]['memory_scheduled']
TypeError: unsupported operand type(s) for -: 'int' and 'NoneType'

Some pods don't have scheduled resources so were returning with None type. Simple defaults worked for this case.

@joelddiaz can you check if this makes sense? as you wrote the original..

had +1 from @joelddiaz via email


Microsoft.VisualStudio.2022.Enterprise.Preview version 17.6.0

[ ] Have you signed the Contributor License Agreement?
[ ] Have you checked that there aren't other open pull requests for the same manifest update/change?
[ ] This PR only modifies one (1) manifest
[ ] Have you validated your manifest locally with winget validate --manifest <path>?
[ ] Have you tested your manifest locally with winget install --manifest <path>?
[ ] Does your manifest conform to the 1.4 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Microsoft Reviewers: Open in CodeFlow

The package installed normally, but didn't add any shortcuts, and launching the application directly caused an error:

The package installed normally, but didn't add any shortcuts, and launching the application directly caused an error:

This error is apparently unique to the Manual Validation pipeline.


update electron trigger scale factors

This PR updates the evaluation of the electron trigger scale factors for the correctionlib files provided by the EGM POG for Run3
Im not yet familiar with the new weights handling in PocketCoffea, so the changes need to be checked. There might be an easier way to do it.
@valsdav
the lepton_scale_factors.yaml file could look like this
lepton_scale_factors:
  electron_sf:
    trigger_sf:
      2022_preEE:
        name: <key for correction set>
        file: <json file>
        path: <trigger path as listed by EGM POG>

The implementation is fine I think.
I think that we can implement this default correction from EGM in the central function and move the ttHbb implementation of the SF on the side of the analysis group with a custom weight.

so this commit fd2b21e270763517b9bf5abc1b81db0a75432bb8 should not be necessary
and we only keep this 20a174fdf46a2ea1f935926fb7782f2b8dadf422
is that correct?

I agree.
Then we can remove the custom trigger SF that is called in the current function and make it a sf_ele_trigger_tthbb weight.

Hi @felixzinn, thank you for the PR.

so this commit fd2b21e270763517b9bf5abc1b81db0a75432bb8 should not be necessary and we only keep this 20a174fdf46a2ea1f935926fb7782f2b8dadf422
is that correct?

The Run3 part implemented in the function sf_ele_trigger_EGM looks good to me, and I think it can become the new default for the electron trigger SF and be moved to the function above get_ele_sf() in the elif key == 'trigger' case.
At this point, I would just name the correction sf_ele_trigger instead of sf_ele_trigger_egm since it becomes the new default.
The old custom Run2 electron trigger SF that I implemented can be moved to pocket_coffea/lib/weights/common/weights_run2_UL.py since it's a custom weight for Run2.

Also, another comment about the parameters.
I would include some defaults in pocket_coffea/parameters/lepton_scale_factors.yaml, since the name of the correctionlib correction is constant and the path of the file is the central POG file in /cvmfs:
lepton_scale_factors:
  electron_sf:
    trigger_sf:
      2022_preEE:
        name: "Electron-HLT-SF"
        file: /cvmfs/cms.cern.ch/rsync/cms-nanoAOD/jsonpog-integration/POG/EGM/2022_Summer22/electronHlt.json.gz

Instead, I would not specify a default path since this depends on the muon definition in the analysis, so the user is forced to check this parameter and define it in the custom parameters.

i think thats a good idea 👍🏼


feat(vnpay): 🔧 refactor for readable and add tests

Summary by Sourcery
This pull request refactors the VNPay class for better readability and maintainability, enhances date handling and logging utilities, and adds new tests to cover the changes.

Enhancements:

Refactored VNPay class to improve readability and maintainability by extracting URL creation and secure hash calculation into separate utility functions.
Enhanced date handling functions in common utilities to support optional date input and timezone specification.
Improved consoleLogger function to support different console methods (e.g., log, error).

Tests:

Added new tests to cover the refactored VNPay class and utility functions.

Summary by CodeRabbit

New Features

Enhanced date handling utilities with optional parameters for improved flexibility in date operations.
Introduced a new timezone parameter in the date parsing function for better timezone management.
Added utility functions for payment processing, including secure hash calculations and payment URL construction.
Enabled coverage reporting in tests with a new script command for improved test insights.

Chores

Updated ignore files to streamline the development process by excluding unnecessary directories from linting and version control.
Introduced a new test suite for utility functions to improve code reliability and coverage.
Added comprehensive unit tests for logging and payment utility functions to ensure expected behavior.

@coderabbitai review


Update logic for duplicate Postgres resources

From https://github.com/microsoft/vscode-cosmosdb/pull/1427#pullrequestreview-399393915

Thanks ☺


codecov.yaml: turn off pr coverage reports

The codecov.yaml file is used to change the default behavior of the codecov repo.
After this merge the codecov pr comment will be disabled. Will still be generated for this pr.

Let's wait until the jenkins result and verify codecov comment turned off.

lgtm


process is not defined in node library: util.js

Describe the bug
After removing process.env.VARIABLE as it is not the proper usage in sveltekit, it detected a node library using the process object giving me the error, as if I was suddenly using it in browser.
Reproduction
When the server is up, this error appears. I have to say that it has appeared suddenly. The project has not had any problems until now. The only thing I did was to use process.env.VARIABLE in a script when it was not the valid way. When I removed this usage, this error appeared, which is already a node error.
I cleared the cache node and it doesn't work either.
Logs
eferenceError: process is not defined
    at node_modules/util/util.js (util.js:109:1)
    at __require (chunk-76J2PTFD.js?v=8f828950:3:50)
    at node_modules/assert/build/internal/assert/assertion_error.js (assertion_error.js:25:16)
    at __require (chunk-76J2PTFD.js?v=8f828950:3:50)
    at node_modules/assert/build/assert.js (assert.js:39:22)
    at __require (chunk-76J2PTFD.js?v=8f828950:3:50)
    at node_modules/xrpl/dist/npm/client/index.js (index.ts:4:1)
    at __require (chunk-76J2PTFD.js?v=8f828950:3:50)
    at node_modules/xrpl/dist/npm/client/BroadcastClient.js (BroadcastClient.ts:1:1)
    at __require (chunk-76J2PTFD.js?v=8f828950:3:50)
handleError @ app.js:22

System Info
"devDependencies": {
		"@playwright/test": "^1.30.0",
		"@sveltejs/adapter-auto": "^1.0.2",
		"@sveltejs/adapter-netlify": "^1.0.0-next.88",
		"@sveltejs/kit": "^1.3.10",
		"@typescript-eslint/eslint-plugin": "^5.50.0",
		"@typescript-eslint/parser": "^5.50.0",
		"eslint": "^8.33.0",
		"eslint-config-prettier": "^8.6.0",
		"eslint-plugin-svelte3": "^4.0.0",
		"prettier": "^2.8.3",
		"prettier-plugin-svelte": "^2.9.0",
		"prisma": "^4.14.1",
		"rome": "^11.0.0",
		"svelte": "^3.55.1",
		"svelte-check": "^3.0.3",
		"tslib": "^2.5.0",
		"typescript": "^4.9.5",
		"vite": "^4.1.1",
		"vitest": "^0.25.8"
	},
	"type": "module",
	"dependencies": {
		"@lucia-auth/adapter-prisma": "^2.0.0",
		"@picocss/pico": "^1.5.7",
		"@prisma/client": "^4.9.0",
		"lucia-auth": "^1.7.0",
		"svelte-select": "^5.7.0",
		"xrpl": "^2.11.0"
	}

### Severity

annoyance

### Additional Information

_No response_

Please provide a proper minimal reproduction.

The problem is the "xrpl": "^2.11.0" library.
This calls the assets dependency, and in turn, assets calls the utils.js dependency.
I can't use this library in browser contexts.
We apologise for the inconvenience. I am correcting the title to make it clearer.


docs: Add travis build image

Thank you, what is the benefit of this badge?

As I say on #996 I search travis build on .org and the badge can:

Simplify the last build run
Can see the last status

I general I love badges as visual management (test, coverage, ...) in one view.

Thank you for the PR but I don't really see any value in adding this.
A successful CI run is required for any PR so CI is always green, in the rare even of a failure it's typically due to some issues with Travis, so such badge would really indicate whenever Travis is working ok or not. IMHO this doesn't really translate into any useful information for the user, CI status in no way helps the user read the docs or informs about the "health" of the project.


New package: Extremes v0.1.1

Registering package: Extremes
Repository: https://github.com/jojal5/Extremes.jl
Created by: @Balinus
Version: v0.1.1
Commit: 294b6b22774057b36c593ffa5e376b1d2d81de9f
Reviewed by: @Balinus
Reference: https://github.com/jojal5/Extremes.jl/commit/294b6b22774057b36c593ffa5e376b1d2d81de9f#commitcomment-36525440

sorry, wrong version.


Upgrade base Airflow image to use latest release

astro-runtime:5.0.6 and ap-airflow:2.3.3-1 is released on
11th July 2022. The commit updates our Dockerfile to reference these
as the base images.

@phanikumv I have made changes to have a common variable for make targets to use the image name.
With this we will need to update the images in only 2 places now, 1 for the make targets and 1 for the CircleCI deployment image.


Xcode 11 issues

hi I'm having some issues when trying to compile in Xcode 11 any ideas on why?

PS: We don't want to enable legacy build system

Hi,
I can't reproduce this in the Example project with Xcode 11.0, cocoapods 1.8.1.
How are you installing XCTest-Gherkin in your project?


Simplify configuration, make it merge-able

Current configuration:
<?php

return [
    'app' => function (\Psr\Container\ContainerInterface $container) {
        $app = new \Yiisoft\Yii\Console\Application();
        $loader = new \Symfony\Component\Console\CommandLoader\ContainerCommandLoader($container, [
            'serve' => 'serve',
        ]);
        $app->setCommandLoader($loader);
        return $app;
    },

    // commands
    'serve' => \Yiisoft\Yii\Console\Command\Serve::class,
];

Issues:

Have to add serve in two places.
app config is not merge-able.

@hiqsol need your input on it.


refactor: parquet pruning simplifications

Which issue does this PR close?
Prep work for #4695.
Rationale for this change
Makes the actual change in #4695 easier.
What changes are included in this PR?
Internal improvements.
Are these changes tested?
Existing tests pass, no function changes.
Are there any user-facing changes?
-

I am pretty sure that this test breakage is unrelated, seems flaky to me.


Where is FeatureExtractor.jar

There is no feature extractor!

Did anyone get this file ?

Please build it from the src folder directly.

@limjq45 how to build jar file from src folder


8.3.10 Device resources returned conform to the US Core Implantable Device Profile No Device resource file item returned by server.

Hello Guys,
We are not able to group export "device" resource while added device data has passed the inferno test for a single patient, but group export is giving me "No device resource file item returned by server."
HAPI-0512: Resource types [Device] are invalid for this type of export, as they do not contain search parameters that refer to patients.

(g)(10) Bulk Data export is a Group export, as defined here. The error message indicates that HAPI server expects some kind of patient reference. Please check HAPI server maual for the settings or requirements to process group export as defined by Bulk Data IG.


Add footer section to the web page

Is there an existing issue for this?

[X] I have searched the existing issues

Feature Description
assign me to make the footer section of the page which will enhance your  UI/UX of the page and also increase your overall experience of the page as well as your  user engagement and user reach are also increased
Use Case
NA
Benefits
No response
Priority
High
Record

[X] I agree to follow this project's Code of Conduct
[X] I'm a GSSOC contributor
[X] I want to work on this issue
[X] I'm willing to provide further clarification or assistance if needed.

Please assign this task to me.

Kindly assign it to me.


Add new fonts

i have a PDF file that has custom font , when run it in pdf.js the font not rendered ,
how can i add this font or other fonts to pdf.js ?
http://d1.islamhouse.com/data/pdf-viewer/web/viewer.html?file=http://d1.islamhouse.com/data/kn/ih_fatawa/single/kn_merits_of_arafat.pdf

You should embed the necessary fonts in the PDF files, but otherwise you can use CSS's @font-face. Closing as answered.

thanks for you @timvandermeij :)

How to incorporate a font in the rendered page using CSS's @font-face T_T ? I am rendering a canvas with pdfjs, i have done some tests and it does not work.


datadog-agent: fix sha256 sum

Motivation for this change
Fix sha256 sum in datadog agent v6.11.2
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nix-review --run "nix-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Assured whether relevant documentation is up to date
[ ] Fits CONTRIBUTING.md.

@GrahamcOfBorg build datadog-agent

Thanks!