Multi-version support for CometBFT v0.38

Description
Since the CometBFT v0.38.0-alpha.1 release has been cut and it appears as though the API is mostly stable, we should look at implementing support for v0.38.0 when the final release comes out later in Q2 of 2023.
Definition of "done"
When tendermint-rs supports CometBFT v0.34, v0.37 and v0.38.

I started off a branch by generating the v0_38 module in tendermint-proto alongside v0_34 and v0_37 and using the newly generated code in appropriate places.
The main items of work here appear to be:

[ ] Add support for v0_38 protobufs in tendermint.
[ ] Look over changes in the RPC protocol and the need to introduce a new RPC dialect. As a minimum, 0.38.x versions should be recognized in dialect detection.
[ ] Adapt support for ABCI applications in tendermint-abci to the latest version, in line with previous changes in #1193.

Here are my notes on the RPC adaptation.
The main difference is a few fields in the response to /block_results: the event lists in begin_block_events/end_block_events have been replaced with a single list in finalize_block_events. Another, smaller change is the deliver_tx field, renamed to tx_result in the response to /broadcast_tx_commit.
I have started out, again, on a "clean" solution: statically separate, versioned endpoint traits to expose the differences at the type level. But again, the impact on the consumer does not seem to be worth the weight of these few changes. I think now it's better to expose both old and new fields side by side on the API types representing RPC endpoint responses.
Specifically, endpoint::block_results::Response would have its begin_block_events and end_block_events fields only populated with values when a pre-0.38 node is queried, otherwise these fields will have empty vectors, but finalize_block_events will have the 0.38+ event data. In time, the former two fields will be deprecated as we drop support for older versions of the protocol.

Similarly, in WebSocket subscription events, there may be a result_finalize_block field alongside result_begin_block/result_end_block.


Okta/Change workdir path to static

@Doron-Bargo

@Doron-Bargo
please review this commits:
3f045e0
f4d2151


Game's Settings > Input page is blank with this mod installed

Description
I installed this to assign SAS to the numpad numbers, but as long as this mod is installed, the game Settings > Input is totally blank (I'm guessing this is a bug?). I should say that my main goal is just to reassign the game's Mute SFX and Mute Music shortcuts away from the numpad 1 and 2
It sounds (from reading the Readme) like it would be possible to bypass the game's inputs page and add those two shortcuts to the mod, but, even after reading the instructions, I don't even know where to start, as I have zero experience with modding or Unity, and the readme was way above my head
(if this isn't the place for this type of thing, I'm sorry)
Steps to reproduce
installed the mod with CKAN
Expected behaviour
My personal goal is to reassign the game's mute SFX and mute music, either through the in-game settings > Input menu or through the mod, but I don't understand how to do the latter.
Workarounds
No response
Relevant log output
No response
Additional information
No response

thanks! I got those two to show up in the mod's menu now. I really appreciate the help. In addition to wanting to set SAS controls to numpad keys, I had been having an issue with KSP2 always kind of "forgetting" a couple of mouse keybindings, and this mod has fixed that issue for me as well (the game's input page would still list mouse buttons I had set, but it wouldn't actually activate it unless I re-bound every time I launched the game)


Capitalize headings rule

Closes #8
This PR adds the Capitalize headings rule with options to format headings where the First word is capitalized, in Proper Title Capitalization, or in ALL CAPS.

Thanks! Looks good, just a few comments.

Updated to address your comments!


Errno::ENOENT: No such file or directory

I've just installed Volt and I'm following the Todos tutorial, after running bundle exec volt server I try to access localhost:3000 The browser stays waiting for localhost. When I exit the volt server I get this error. (I'm using ruby-2.2.2)
Volt 0.9.5
                             ,--,           ,----,
                ,----..   ,---.'|         ,/   .`|
               /   /   \  |   | :       ,`   .'  :
       ,---.  /   .     : :   : |     ;    ;     /
      /__./| .   /   ;.  \|   ' :   .'___,/    ,'
 ,---.;  ; |.   ;   /  ` ;;   ; '   |    :     |
/___/ \  | |;   |  ; \ ; |'   | |__ ;    |.';  ;
\   ;  \ ' ||   :  | ; | '|   | :.'|`----'  |  |
 \   \  \: |.   |  ' ' ' :'   :    ;    '   :  ;
  ;   \  ' .'   ;  \; /  ||   |  ./     |   |  '
   \   \   ' \   \  ',  / ;   : ;       '   :  |
    \   `  ;  ;   :    /  |   ,/        ;   |.'
     :   \ |   \   \ .'   '---'         '---'
      '---"     `---`

Thin web server (v1.6.3 codename Protein Powder)
Maximum connections set to 500
Listening on <IP_ADDRESS>:3000, CTRL+C to stop
^CUnexpected error while processing request: connection closed
	/Users/Adrian/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/drb/drb.rb:578:in `load'
	/Users/Adrian/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/drb/drb.rb:640:in `recv_reply'
	/Users/Adrian/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/drb/drb.rb:940:in `recv_reply'
	/Users/Adrian/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/drb/drb.rb:1254:in `send_message'
	/Users/Adrian/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/drb/drb.rb:1142:in `block (2 levels) in method_missing'
	/Users/Adrian/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/drb/drb.rb:1229:in `open'
	/Users/Adrian/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/drb/drb.rb:1141:in `block in method_missing'
	/Users/Adrian/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/drb/drb.rb:1160:in `with_friend'
	/Users/Adrian/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/drb/drb.rb:1140:in `method_missing'
	/Users/Adrian/.rvm/gems/ruby-2.2.2/gems/volt-0.9.5/lib/volt/server/forking_server.rb:204:in `block in call'
	/Users/Adrian/.rvm/gems/ruby-2.2.2/gems/volt-0.9.5/lib/volt/utils/read_write_lock.rb:58:in `with_read_lock'
	/Users/Adrian/.rvm/gems/ruby-2.2.2/gems/volt-0.9.5/lib/volt/server/forking_server.rb:189:in `call'
	/Users/Adrian/.rvm/gems/ruby-2.2.2/gems/volt-0.9.5/lib/volt/server/websocket/websocket_handler.rb:39:in `call'
	/Users/Adrian/.rvm/gems/ruby-2.2.2/gems/rack-1.5.5/lib/rack/builder.rb:138:in `call'
	/Users/Adrian/.rvm/gems/ruby-2.2.2/gems/thin-1.6.3/lib/thin/connection.rb:86:in `block in pre_process'
	/Users/Adrian/.rvm/gems/ruby-2.2.2/gems/thin-1.6.3/lib/thin/connection.rb:84:in `catch'
	/Users/Adrian/.rvm/gems/ruby-2.2.2/gems/thin-1.6.3/lib/thin/connection.rb:84:in `pre_process'
	/Users/Adrian/.rvm/gems/ruby-2.2.2/gems/eventmachine-1.0.8/lib/eventmachine.rb:1062:in `call'
	/Users/Adrian/.rvm/gems/ruby-2.2.2/gems/eventmachine-1.0.8/lib/eventmachine.rb:1062:in `block in spawn_threadpool'

Unexpected error while processing request: drbunix:/var/folders/sv/htbd6j1x5pdbjtc6fcsb2vlr0000gn/T/druby14458.0 - #<Errno::ENOENT: No such file or directory - connect(2) for /var/folders/sv/htbd6j1x5pdbjtc6fcsb2vlr0000gn/T/druby14458.0>
	/Users/Adrian/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/drb/drb.rb:744:in `rescue in block in open'
	/Users/Adrian/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/drb/drb.rb:738:in `block in open'
	/Users/Adrian/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/drb/drb.rb:737:in `each'
	/Users/Adrian/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/drb/drb.rb:737:in `open'
	/Users/Adrian/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/drb/drb.rb:1248:in `initialize'
	/Users/Adrian/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/drb/drb.rb:1228:in `new'
	/Users/Adrian/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/drb/drb.rb:1228:in `open'
	/Users/Adrian/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/drb/drb.rb:1141:in `block in method_missing'
	/Users/Adrian/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/drb/drb.rb:1160:in `with_friend'
	/Users/Adrian/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/drb/drb.rb:1140:in `method_missing'
	/Users/Adrian/.rvm/gems/ruby-2.2.2/gems/volt-0.9.5/lib/volt/server/forking_server.rb:204:in `block in call'
	/Users/Adrian/.rvm/gems/ruby-2.2.2/gems/volt-0.9.5/lib/volt/utils/read_write_lock.rb:58:in `with_read_lock'
	/Users/Adrian/.rvm/gems/ruby-2.2.2/gems/volt-0.9.5/lib/volt/server/forking_server.rb:189:in `call'
	/Users/Adrian/.rvm/gems/ruby-2.2.2/gems/volt-0.9.5/lib/volt/server/websocket/websocket_handler.rb:39:in `call'
	/Users/Adrian/.rvm/gems/ruby-2.2.2/gems/rack-1.5.5/lib/rack/builder.rb:138:in `call'
	/Users/Adrian/.rvm/gems/ruby-2.2.2/gems/thin-1.6.3/lib/thin/connection.rb:86:in `block in pre_process'
	/Users/Adrian/.rvm/gems/ruby-2.2.2/gems/thin-1.6.3/lib/thin/connection.rb:84:in `catch'
	/Users/Adrian/.rvm/gems/ruby-2.2.2/gems/thin-1.6.3/lib/thin/connection.rb:84:in `pre_process'
	/Users/Adrian/.rvm/gems/ruby-2.2.2/gems/eventmachine-1.0.8/lib/eventmachine.rb:1062:in `call'
	/Users/Adrian/.rvm/gems/ruby-2.2.2/gems/eventmachine-1.0.8/lib/eventmachine.rb:1062:in `block in spawn_threadpool'

What os?  Was this a new project or upgraded from an existing?

Sorry for the lat response, this was on Mac OS 10.11, on a new project.

I too am having this issue.
OSX 10.10.5
Ruby 2.2.2
Todo tutorial app
It worked great when I followed the tutorial over the weekend, but when I tried to show a buddy at work it was less than impressive.
Any suggestions for where I should start looking for the root cause?


Doesn't answer

it doesn't answer at all
for example I write hi and then it waits for 4 or 5 seconds then nothing happens and its answer is empty

should be fixed in https://github.com/mosajjal/bard-cli/releases/tag/v0.3.4


csvkit: move out of pythonPackages

Motivation for this change
From https://csvkit.readthedocs.io/en/1.0.3/index.html:

csvkit is a suite of command-line tools for [...]

The build was previously broken, which is fixed by updating agate-excel.
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)
[x] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-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
[x] Fits CONTRIBUTING.md.

Now that agate-excel has made an official release with the fix I'll merge this within 24 hours if noone objects.

backported in b5bf9f30635 and 57e067f544ead368902634c692abf88a93b6fab7


Add tracking for "forcenoncombat" KoL property.

Certain zones have apparent periodic noncombats, which are caused by a flag in KoL called "forcenoncombat" that triggers noncombat occurrence after a certain number of turns without one. Examples include the Black Forest, the Skeleton Store, and many others. This PR is a first step towards tracking the last noncombat in each of the forcenoncombat zones. This tracking means that assistant scripts like Guide/TourGuide can predict when your next guaranteed noncombat will occur.
Feedback welcome.

I added an attempt at this based on the existing encounters.txt file. This will work for the current purpose, but I agree that in the future we should combine this into one data source like combats.txt.
I don't know what to about this test failure. I can only reproduce it locally sporadically.

This should now be good to go.

I've approved and you can decide whether or not to do the tracking property. I think there are arguments for both sides.


Make volume icon size consistent with other inline icons

Description
Fixes https://github.com/dotnet/aspire/issues/5635
Make this icon the same size as other icons inline with standard text: state icon on resources page and error/warning/exception icons on structured logs page.
Before:

After:

Checklist

Is this feature complete?

[x] Yes. Ready to ship.
[ ] No. Follow-up changes expected.

Are you including unit tests for the changes and scenario tests if relevant?

[ ] Yes
[x] No

Did you add public API?

[ ] Yes

If yes, did you have an API Review for it?

[ ] Yes
[ ] No

Did you add <remarks /> and <code /> elements on your triple slash comments?

[ ] Yes
[ ] No

[x] No

Does the change make any security assumptions or guarantees?

[ ] Yes

If yes, have you done a threat model and had a security review?

[ ] Yes
[ ] No

[x] No

Does the change require an update in our Aspire docs?

[ ] Yes

Link to aspire-docs issue:

[x] No

Microsoft Reviewers: Open in CodeFlow

/azp run


Quick typo fixes

Changes "Allow" to "Allows" at the start of the gray and nesting sections.
Capitalises "A" in the color() function section.

☕

Thanks!


torrentgalaxy almost always times out

As the title says, torrentgalaxy.to almost always times out, sometimes it gives results but not always.
From my phone i can open the page but when i search i must enter captcha code first, maybe that is the reason for the timeout in burst plugin.
Can anyone help, is there something that i can do, because this site has the best torrents that i know of.
thepiratebay stopped giving results so also not working
Thanks in advance

Yes i understand, thanks for the info

@elgatito just curious, what do you think about UI for entering captcha? :-)
I saw such UI in some pirating addon (THE CREW or Scrubs v2 or Fen) when i tested several addons, they used it to bypass captcha on some video hosting website, i think.

@gitlaman burst was updated, so please update it and enable thepiratebay in settings.

@antonsoroko

@elgatito just curious, what do you think about UI for entering captcha? :-)

It does not make sense, because format of Captcha is different and there is often Javascript involved into generation of fields/values to make it harder for automation. So in the end you would need a headless Chromium and a lot of manual work for each use case to avoid captcha or render/solve it. (Chromium is not avialable to all platform Elementum works on). That is the way Jackett solves Cloudflare issues, btw.
In my opinion it makes sense to avoid getting catchas at all, by re-using authentication session or cookies sharing. I will try this approach when I have some time for that.

@gitlaman burst was updated, so please update it and enable thepiratebay in settings.

Thanks it is working now


PL-146: Browser Extension

Adds a browser extension which will:

check if there is a pdf opened
inject a button/popup into the dom of the default reader
clicking on a button will redirect to our reader with the url of the pdf as a http query

DONE:

pdf detection
button which takes you to our reader
TODO:
change our welcome screen to detect if there is a url query and load the pdf from the url
injected button/popup style
style for the extension

Just two personal comments that can be ignored, the rest is fine

The html is all just a placeholder, designer are free to change everything.

Tested locally (throws CORS but well test it), code is generally okay, +1 from me


issue: encountering error when running test cases

console.error       Error creating admin log: Error: AdminLog validation failed: target_type:invalid_typeis not a valid enum value for pathtarget_type.           at ValidationError.inspect (/home/syndrom/Documents/DisasterWatch/project/disasterCatcher/node_modules/mongoose/lib/error/validation.js:52:26)           at formatValue (node:internal/util/inspect:814:19)           at inspect (node:internal/util/inspect:373:10)           at formatWithOptionsInternal (node:internal/util/inspect:2315:40)           at format (node:internal/util/inspect:2172:10)           at console.error (/home/syndrom/Documents/DisasterWatch/project/disasterCatcher/node_modules/@jest/console/build/BufferedConsole.js:127:43)           at error (/home/syndrom/Documents/DisasterWatch/project/disasterCatcher/controllers/adminLogsController.js:20:13)           at call (/home/syndrom/Documents/DisasterWatch/project/disasterCatcher/controllers/adminLogsController.js:2:1)           at Generator.tryCatch (/home/syndrom/Documents/DisasterWatch/project/disasterCatcher/controllers/adminLogsController.js:2:1)           at Generator._invoke [as throw] (/home/syndrom/Documents/DisasterWatch/project/disasterCatcher/controllers/adminLogsController.js:2:1)           at asyncGeneratorStep (/home/syndrom/Documents/DisasterWatch/project/disasterCatcher/controllers/adminLogsController.js:2:1)           at asyncGeneratorStep (/home/syndrom/Documents/DisasterWatch/project/disasterCatcher/controllers/adminLogsController.js:2:1)           at processTicksAndRejections (node:internal/process/task_queues:105:5) {         errors: {           target_type: ValidatorError: invalid_typeis not a valid enum value for pathtarget_type`.
at validate (/home/syndrom/Documents/DisasterWatch/project/disasterCatcher/node_modules/mongoose/lib/schemaType.js:1385:13)
at SchemaString.Object..SchemaType.doValidate (/home/syndrom/Documents/DisasterWatch/project/disasterCatcher/node_modules/mongoose/lib/schemaType.js:1369:7)
at /home/syndrom/Documents/DisasterWatch/project/disasterCatcher/node_modules/mongoose/lib/document.js:3071:18
at processTicksAndRejections (node:internal/process/task_queues:85:11) {
properties: [Object],
kind: 'enum',
path: 'target_type',
value: 'invalid_type',
reason: undefined,
[Symbol(mongoose#validatorError)]: true
}
},
_message: 'AdminLog validation failed'
}
  18 |     return log;
  19 |   } catch (error) {
> 20 |     console.error('Error creating admin log:', error);
     |             ^
  21 |     return null;
  22 |   }
  23 | };

  at error (controllers/adminLogsController.js:20:13)
  at call (controllers/adminLogsController.js:2:1)
  at Generator.tryCatch (controllers/adminLogsController.js:2:1)
  at Generator._invoke [as throw] (controllers/adminLogsController.js:2:1)
  at asyncGeneratorStep (controllers/adminLogsController.js:2:1)
  at asyncGeneratorStep (controllers/adminLogsController.js:2:1)`

I suspect this has to do something with admincontrollers logging function

I changed the admin_log_create function to check whether target_types were mapped before the creation of logs. this might be the fix for the issue. need to test the changes before moving forward.


"None" protocol is not supported

When trying to use Protocol="None" the policy will run into an exception such as:
An attempt was made to resolve a protocol handler for unsupported protocol "None" in technical profile with id "SetErrorAccessRejected" in policy with id "B2C_1A_signup_signin" for tenant with id "xxxxx.onmicrosoft.com".
This happenes regardless if you also set "Handler" to "None" or you omit it all togehter.

@kengaderdus
Can you review the proposed changes?
When the changes are ready for publication, add a #sign-off comment to signal that the PR is ready for the review team to merge.
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

@timjp87,
You can actually have a technical profile (TP) whose protocol is set to None. I this case, don't add the Handler attribute, for example:
<TechnicalProfile Id="MyCustomTechnicalProfile">
  <DisplayName>My Custom Technical Profile</DisplayName>
  <Protocol Name="None" />
  <!-- Other configuration for the technical profile goes here -->
</TechnicalProfile>

Or what were you trying to do with the TP with a no protocol?

@kengaderdus
Let me provide a bit of background. To support our requirements we need to emit 3 OAuth custom errors which we expect our websites and applications to handle. They indicate if an access was rejected, revoked or denied based on our own authorization solution which we built around B2C.
So I have 3 Custom Error Technical profiles, but encountered something which I would consider a bug, which should be addressed by Microsoft spearately. In a custom error technical profile it is not possible to provide default values example:
<TechnicalProfile Id="ReturnOAuth2AccessRevokedError">           <DisplayName>Return Access Revoked error</DisplayName>           <Protocol Name="OAuth2" />           <OutputTokenFormat>OAuth2Error</OutputTokenFormat>           <CryptographicKeys>             <Key Id="issuer_secret" StorageReferenceId="B2C_1A_TokenSigningKeyContainer" />           </CryptographicKeys>           <InputClaims>             <InputClaim ClaimTypeReferenceId="errorCode" AlwaysUseDefaultValue="true" DefaultValue="4002" />             <InputClaim ClaimTypeReferenceId="errorMessage" AlwaysUseDefaultValue="true" DefaultValue="User access was revoked" />           </InputClaims>         </TechnicalProfile>
This will result in the errorCode and message not be appended to the custom error returned from the journey.
In one part of the journey I can set the code and message claim as part of a REST API call as default output claims and then the error is returned. However, for the other 2 I would need a dummy technical profile which simply outputs the default value before the CustomError Technical profile is called so that it's already part of the claim bag.
Now we come to the original problem of this ticket. When I try this:
<TechnicalProfile Id="SetErrorAccessRejected">           <DisplayName>Set Error and Message to Rejected</DisplayName>           <Protocol Name="None" />           <OutputClaims>             <OutputClaim ClaimTypeReferenceId="errorCode" AlwaysUseDefaultValue="true" DefaultValue="4002" />             <OutputClaim ClaimTypeReferenceId="errorMessage" AlwaysUseDefaultValue="true" DefaultValue="User access was rejected" />           </OutputClaims>         </TechnicalProfile>
The policy runs into an exception as mentioned when this step is executed.

@kengaderdus - Do you have a response to the contributor? Or could you let us know whether the PR should move forward?
@MicrosoftDocs/public-repo-pr-review-team

Sent Teams follow-up on 21 Jun

In TrustFrameworkBase.xml, the RefreshTokenReadAndSetup TechnicalProfile uses a Protocol Name="None". I use a slightly older version of this base file and my JwtIssuer is also using Name="None".

@timjp87
Thanks for your contribution! "None" protocol is supported, but we'll need to make other updates. We'll use another PR as we're unable to make those updates in this PR. #please-close


⭐FEAT: The github svg on navbar animation

TODO:

The github svg on header should have a small change in size rather than becoming large.
It should become a little bigger but not too big like it is doing right now.

@ArslanYM Do you want it to scale less?

Yeah @AshwanthramKL

I'll try my hand at it then

Fixed in #281


merge extra dockerfile instructions

Hi, @alexellis Thanks for your ghost 1.0.0 Dockerfile, the image works well.
But I notice your 1.0/x86_64/Dockerfile has too many instructions which leads to built image having too many layers. So I simpily the dockerfile,merge some instructions to one instruction.
I have built and test the new dockerfile. Please merge.

That's deliberate it's likely to change. As I mentioned in the blog post this is not a production ready image. We need to get some feedback from the ghost teen and possibly some tweaks before optimizing. Also have you heard of --squash when building images? https://docs.docker.com/engine/reference/commandline/image_build/

I understand,Thanks.


Web - Notification for Currency Change Does Not Appear in Admin Section Offline

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Action Performed:

Go to Settings > Workspace and click on the dot to access the Admin section.
Navigate to Settings > Preferences and enable the "Force Offline" option.
Go to Settings > Workspace and update the default currency.
Observe that the notification for currency change does not appear in the admin section.

Expected Result:
The notification should appear when we change the currency in the admin section while offline.
Actual Result:
The notification does not appear when we change the currency in the admin section while offline.
Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android / native
[ ] Android / Chrome
[ ] iOS / native
[ ] iOS / Safari
[x] MacOS / Chrome / Safari
[ ] MacOS / Desktop

Version Number: v1.3.38-1
Reproducible in staging?: y
Reproducible in production?: y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://github.com/Expensify/App/assets/93399543/39f484d0-884c-4666-8211-30581f73bf1b
https://github.com/Expensify/App/assets/93399543/2ef9ba22-8e7a-4203-a1a0-75d0f96d4886
Expensify/Expensify Issue URL:
Issue reported by: @tewodrosGirmaA
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1688732769895759
View all open jobs on GitHub

This doesn't appear to be a bug. Workspace Changes require you to be online, and are delivered afterwards if you make any changes when you're offline (which I've just confirmed via testing). Closing!


Extend documentation for output formats

I didn't try to document the content_type= argument of default_output_format() since I didn't dive deep enough to the code to understand its exact effect.

Coverage remained the same at 99.5% when pulling 3ffba80634af5bb92582aa1b3c15bd60d4278504 on akaihola:output_format-documentation into 505446b8ab4fecd24fd05f7983ef95b27ff58315 on timothycrosley:develop.

This is great! Thank you!


net: carve response buffers from read buffers

balancing start arguments for memory limits on read vs response buffers
is hard. with this change there's a custom sub-allocator that cuts the
small response objects out of larger read objects.
it is somewhat complicated and has a few loops. We may be able to
optimize out some of the loops, but it also may not matter.
needs more testing and fleshing out + adjusting start arguments. tests
pass locally.
TODO:

[x] fiddle with offsets/sizes to ensure few bytes are wasted out of the bundle. I think 14 objects per bundle is reasonable.. with fully optimizing the wbuf maximum it could be 16 though.
[x] ensure access alignment. test on BE/strict system + valgrind.
[x] Add some inline justification comments.
[x] remove debug prints.
[x] remove/stub out the response obj cache detail/limits?

why is this kind of complicated:
It could be very simple if we simply allocated front to back and then freed response bundles when refcount hit 0... but if random connections are holding onto response objects for a long time, we will end up with holes. If one out of every 14 response objects gets "hung", you will end up with an entire wasted 16KB per hung client.
so instead there is some heavily short-circuited logic around having a linked list of bundles. If there are no free objects, the bundle is unlinked entirely. If there are any free objects, it is initially linked to the head. If there are further free objects added, it is not reshuffled. The head object should always have at least one free item so we avoid reshuffling when "any" object gets freed.
@tharanga

good news: does appear to work under my jank big endian test host. seems like everything important ends up aligned, but it's probably fragile.

Originally thought about using a bit vector but... updating the proper bit vector position on free required adding the mask to the response object which would be larger than the byte wasted for a free marker.
Instead I've adjusted it (not pushed yet) to have an iterative "next_check" pointer to avoid looping further into the structure on every allocation. Further, thinking of making it hold 1 blob object per worker to avoid extra function calls + the initialization loop for the common case (which will be < 14 response objects in flight at once).
Amazingly, aside from the stats buffer there's almost nothing that allocates at runtime anymore. This addition feels a bit overcomplex/gross but it's a big usability bump so I'm happy with it.

Think this is complete now. Should run it under some mctester workloads/prod testing before merging.

note to self: since the first thing we always do after resp_allocate is that memset, I can pull the memset in and write the bundle ptr on alloc and make the line more readable.

another note to self: try to bring back response_bj_total (response_obj_used?) counter so users can track bottlenecks more clearly.

I've "merged" this into next to get it out of the way of other work. if I need to do a release and don't have confidence in it, I'll comment out the two hook lines to disable it.

closing this, further work in other issues/PR's.


2.X.X deprecates UUIDParam, SizeParam, LocalDateParam, InstantParam, DurationParam, DateTimeParam, BooleanParam and does not give clear alternatives

I'm trying to upgrade Dropwizard from 1.3.23 to 2.0.10 and am running into some issues around the use of parameters. Specifically, I see that this commit deprecated a number of *Param classes.
Some of these, like IntParam are straightfoward. Using OptionalInt as a replacement makes sense. However, taking non-primitive parameters as an example, Optional<UUID> is NOT a sufficient replacement for UUIDParam. Using it results in me getting a 404 when using a non-UUID as input (where I previously got 400 using UUIDParam).
Additionally, and maybe this is a separate issue, I found the compatibility-preserving use of UUIDParam is strange. When diving into the source code, I found this resource method[1]:
        @GET
        @Path("/uuid")
        public String getUUID(@QueryParam("uuid") Optional<UUIDParam> uuid) {
            return uuid.orElse(new UUIDParam("d5672fa8-326b-40f6-bf71-d9dacf44bcdc")).get().toString();
        }

This construct seems an extremely clunky way to manage this. In 1.3.X, I could write code like this instead:
        @GET
        @Path("/uuid")
        public String getUUID(@Nullable @QueryParam("uuid") UUIDParam uuid) {
            if (uuid != null) {
                return uuid.get()
            } else {
                return "d5672fa8-326b-40f6-bf71-d9dacf44bcdc"
            }
        }

You can see in the above that there is a lot of unnecessary conversion going on (we construct a UUID via UUIDParam and validate it, even though we just want to return a String). I use Kotlin primarily, my preferred example above would be even simpler:
uuid.get()?.toString ?: "d5672fa8-326b-40f6-bf71-d9dacf44bcdc"

What I'd prefer overall is something that worked like this:
        @GET
        @Path("/uuid")
        public String getUUID(@Nullable @QueryParam("uuid") Optional<UUID> uuid) {
            return uuid.map { it.toString() }.orElse("d5672fa8-326b-40f6-bf71-d9dacf44bcdc")
        }

More than anything, really, I just want some guidance for the right way to handle various param types, especially in light of the deprecation. The documentation is light on this (I found the MR saying AbstractParam and child classes will be removed, but nothing saying why, and no code showing what would replace the more complicated use-cases like UUIDParam above). I would love to see this improved. Until then, I'm hesitant to upgrade to 2.X.X. Param handling is still confusing in 1.X.X, but at least I won't have to worry about behavior changes.

The code in OptionalQueryParamResourceTest is not very nice.
If you want to have it a little more idiomatic, you can write:
@GET
@Path("/uuid")
public String getUUID(@QueryParam("uuid") Optional<UUIDParam> uuid) {
  return uuid.map(UUIDParam::get).map(UUID::toString).orElse("d5672fa8-326b-40f6-bf71-d9dacf44bcdc");
}

If Optional<java.util.UUID> works for you (java.util.UUID behaves slightly different than UUIDParam), you could also write:
@GET
@Path("/uuid")
public String getUUID(@QueryParam("uuid") Optional<UUID> uuid) {
  return uuid.map(UUID::toString).orElse("d5672fa8-326b-40f6-bf71-d9dacf44bcdc");
}

@joschi thanks for the snippet. I understand that I can do that. I am seeing a substantial behavioral difference that is preventing my existing code from being compatible. Particularly, this suite of tests used to pass in 1.3.23 and now fails in 2.0.10. It's like this for the *Param types built into Dropwizard as well, but I wanted to show this use case because:

The use-case for migrating AbstractParam subclasses is not described in the Upgrade Notes for Dropwizard 2.0.X document.
For us this is a breaking compatibility change.
I don't understand how we should move forward, or what the guidance is.

package com.physiq.rest

import io.dropwizard.jersey.params.AbstractParam
import io.dropwizard.testing.junit5.DropwizardExtensionsSupport
import io.dropwizard.testing.junit5.ResourceExtension
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.ExtendWith
import org.junit.jupiter.params.ParameterizedTest
import org.junit.jupiter.params.provider.ValueSource
import org.threeten.extra.Interval
import strikt.api.expectThat
import strikt.api.expectThrows
import strikt.assertions.isEqualTo
import strikt.assertions.isNull
import javax.ws.rs.GET
import javax.ws.rs.Path
import javax.ws.rs.QueryParam

@ExtendWith(DropwizardExtensionsSupport::class)
class Dropwizard1To2AbstractParamImplCompatibilityTest {

    class IntervalParam @JvmOverloads constructor(
        input: String?,
        parameterName: String = "Parameter"
    ) : AbstractParam<Interval>(input, parameterName) {
        override fun errorMessage(e: Exception): String {
            return "%s must be in a ISO-8601 format."
        }

        @Throws(Exception::class)
        override fun parse(input: String?): Interval? {
            return input?.let { Interval.parse(input) }
        }
    }

    private val params: MutableList<IntervalParam?> = mutableListOf()

    @BeforeEach
    fun setUp() {
        params.clear()
    }

    @Path("/")
    inner class ExampleResource {
        @GET
        @Path("interval")
        fun intervalNotNull(
            @QueryParam("interval")
            interval: IntervalParam
        ) {
            params.add(interval)
        }

        @GET
        @Path("interval-nullable")
        fun intervalNullable(
            @QueryParam("interval")
            interval: IntervalParam
        ) {
            params.add(interval)
        }
    }

    private var resources: ResourceExtension = ResourceExtension.builder().apply {
        addResource(ExampleResource())
    }.build()

    @ValueSource(strings = [
        "2019-01-01T00:00:00Z/2020-01-01T00:00:00Z",
        "2019-01-01T00:00:00.123456789Z/2020-01-01T00:00:00.123456789Z",
        "2019-01-01T00:00:00Z/2020-01-01T00:00:00.1Z",
        "2019-01-01T00:00:00Z/2020-01-01T00:00:00.12Z",
        "2019-01-01T00:00:00Z/2020-01-01T00:00:00.123Z",
        "2019-01-01T00:00:00Z/2020-01-01T00:00:00.1234Z",
        "2019-01-01T00:00:00Z/2020-01-01T00:00:00.12345Z",
        "2019-01-01T00:00:00Z/2020-01-01T00:00:00.123456Z",
        "2019-01-01T00:00:00Z/2020-01-01T00:00:00.1234567Z",
        "2019-01-01T00:00:00Z/2020-01-01T00:00:00.12345678Z",
        "2019-01-01T00:00:00Z/2020-01-01T00:00:00.123456789Z",
        "2019-01-01T00:00:00.1Z/2020-01-01T00:00:00Z",
        "2019-01-01T00:00:00.12Z/2020-01-01T00:00:00Z",
        "2019-01-01T00:00:00.123Z/2020-01-01T00:00:00Z",
        "2019-01-01T00:00:00.1234Z/2020-01-01T00:00:00Z",
        "2019-01-01T00:00:00.12345Z/2020-01-01T00:00:00Z",
        "2019-01-01T00:00:00.123456Z/2020-01-01T00:00:00Z",
        "2019-01-01T00:00:00.1234567Z/2020-01-01T00:00:00Z",
        "2019-01-01T00:00:00.12345678Z/2020-01-01T00:00:00Z",
        "2019-01-01T00:00:00.123456789Z/2020-01-01T00:00:00Z"
    ])
    @ParameterizedTest
    fun `providing a valid interval works`(value: String) {
        val response = resources.target("/interval").queryParam("interval", value).request().get()
        expectThat(response.status).isEqualTo(204)
        expectThat(params.size).isEqualTo(1)
        expectThat(params.first()!!.get()).isEqualTo(Interval.parse(value))
    }

    @ValueSource(strings = [
        "2019-01-01T00:00:00/2020-01-01T00:00:00",
        "2019-01-01T00:00:00Z/2020-01-01",
        "2019-01-01/2020-01-01"
    ])
    @ParameterizedTest
    fun `providing a invalid interval fails with 400`(value: String) {
        val response = resources.target("/interval").queryParam("interval", value).request().get()
        expectThat(response.status).isEqualTo(400)
    }

    @Test
    fun `missing interval when interval param is non-nullable`() {
        // WARNING: Take care to never use this approach, and always supply
        // either @DefaultValue and a non-nullable, or a nullable query param.
        expectThrows<Exception> {
            resources.target("/interval").request().get()
        }
    }

    @Test
    fun `missing interval when interval param is nullable`() {
        val response = resources.target("/interval-nullable").request().get()
        expectThat(response.status).isEqualTo(204)
        expectThat(params.size).isEqualTo(1)
        expectThat(params.first()).isNull()
    }
}

The specific test failures from this suite are the last two tests:

missing interval when interval param is non-nullable used to fail in the way shown in the test case, and now fails with NullPointerException because AbstractParam.toString() is implemented with this line: return value.toString() so when value is null and you call .toString() on AbstractParam it will fail.
missing interval when interval param is nullable used to succeed, and now fails with a 400 status code and a message saying <interval> must be in IDO-8601 format.. This error message is occurring because parse is being called with input = null which did not happen in Dropwizard 1.3.27. In that version, there was no invocation of the parse method at all.

These changes have serious implications on our large API, as we will have to manually update many parameters and test cases. I'm not really sure what the right solution is here, and would appreciate your support. I wouldn't be surprised if others were having problems as well.
P.S. Kotlin is my primary language nowadays, but if you need me to convert anything to Java or are confused about my code please let me know.

I've also taken the time to put together the same test for UUIDParam (see below). In this case, I would expect a deprecated feature to work as it did before, but again the below test suite passes in 1.3.72 and fails in 2.0.10 on the last two tests.
import io.dropwizard.jersey.params.UUIDParam
import io.dropwizard.testing.junit5.DropwizardExtensionsSupport
import io.dropwizard.testing.junit5.ResourceExtension
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.ExtendWith
import org.junit.jupiter.params.ParameterizedTest
import org.junit.jupiter.params.provider.ValueSource
import strikt.api.expectThat
import strikt.api.expectThrows
import strikt.assertions.isEqualTo
import strikt.assertions.isNull
import java.util.UUID
import javax.ws.rs.GET
import javax.ws.rs.Path
import javax.ws.rs.QueryParam

@ExtendWith(DropwizardExtensionsSupport::class)
class Dropwizard1To2AbstractParamImplCompatibilityTest {

    private val params: MutableList<UUIDParam?> = mutableListOf()

    @BeforeEach
    fun setUp() {
        params.clear()
    }

    @Path("/")
    inner class ExampleResource {
        @GET
        @Path("uuid")
        fun uuidNotNull(
            @QueryParam("uuid")
            uuid: UUIDParam
        ) {
            params.add(uuid)
        }

        @GET
        @Path("uuid-nullable")
        fun uuidNullable(
            @QueryParam("uuid")
            uuid: UUIDParam?
        ) {
            params.add(uuid)
        }
    }

    private var resources: ResourceExtension = ResourceExtension.builder().apply {
        addResource(ExampleResource())
    }.build()

    @Test
    fun `providing a valid uuid works`() {
        val myUUID = UUID.fromString("653ac4a4-6e72-4faf-a054-1ca232c76b0d")
        val response = resources.target("/uuid").queryParam("uuid", myUUID.toString()).request().get()
        expectThat(response.status).isEqualTo(204)
        expectThat(params.size).isEqualTo(1)
        expectThat(params.first()!!.get()).isEqualTo(myUUID)
    }

    @ValueSource(strings = [
        "653ac4a4_6e72_4faf_a054_1ca232c76b0d",
        "653ac4a4 6e72 4faf a054 1ca232c76b0d"
    ])
    @ParameterizedTest
    fun `providing a invalid uuid fails with 400`(value: String) {
        val response = resources.target("/uuid").queryParam("uuid", value).request().get()
        expectThat(response.status).isEqualTo(400)
    }

    @Test
    fun `missing uuid when uuid param is non-nullable`() {
        // WARNING: Take care to never use this approach, and always supply
        // either @DefaultValue and a non-nullable, or a nullable query param.
        expectThrows<Exception> {
            resources.target("/uuid").request().get()
        }
    }

    @Test
    fun `missing uuid when uuid param is nullable`() {
        val response = resources.target("/uuid-nullable").request().get()
        expectThat(response.status).isEqualTo(204)
        expectThat(params.size).isEqualTo(1)
        expectThat(params.first()).isNull()
    }
}

We also have experience similar problems but with regular old long parameters, e.g. OptionalLong and Optional<Long> which behave completely differently. (The same goes for OptionalInt and Optional<Integer> etc). Here is a sample endpoint using optionals:
    @GET
    @Path("/optionalsTest/{param1}/{param2}")
    @Produces(MediaType.APPLICATION_JSON)
    public Response optionalsTest(@PathParam("param1") OptionalLong param1,
                                  @PathParam("param2") Optional<Long> param2) {

        var entity = Map.of(
                "param1", param1.getAsLong(),
                "param2", param2.get()
        );

        return Response.ok(entity).build();
    }

Observed behavior:
If you do GET /optionalsTest/42/84, you get a 200 response with the expected response entity.
If you do GET /optionalsTest/abcd/84, you get a 500 response.
If you do GET /optionalsTest/42/abcd, you get a 404 response.
So, when using OptionalLong and supplying a non-numeric value, you get a 500 which is very confusing behavior. It should be a 400 as LongParam would do.
But, when using Optional<Long> and supplying a non-numeric value, you get a 404 which is maybe even more confusing than getting a 400 or 500.
Using LongParam always gives a 400 response and gives a nice error message as well. For this sample endpoint:
    @GET
    @Path("longParamTest/{param1}")
    @Produces(MediaType.APPLICATION_JSON)
    public Response optionalsTest(@PathParam("param1") LongParam param1) {

        var entity = Map.of("param1", param1.get());

        return Response.ok(entity).build();
    }

If you do GET /longParamTest/abcd you get a 400 response with the following body:
{
    code: 400,
    message: "path param param1 is not a number."
}

So while I have no problem using OptionalLong or Optional<Long> etc. (other than both IntelliJ and Sonar complaining about using optionals for method arguments), the completely different behavior (i.e. the 500 for OptionalLong and 400 for Optional<Long) is confusing and not as clear as the behavior LongParam exhibits (as well as all the other XxxParam classes).


Check if isset

Check if array key is set in MediaInfoOutputParser to avoid errors in logs.

@danog thanks you, realeased as 2.2.2


Fix typo in README.md

writer was mispelled as witer

Hello there, thanks for the fix!

@mujtaba1747 Thank you for catching that!


Svelte UI visualizer

Create a job visualizer app with

[x] Listing workers
[x] Listing tasks
[X] Suitable filters

Along with documentation on covering the following

[x] Creating/initializing the application
[x] Creating components
[x] Routing between components
[x] Interaction with websockets (gedis websocket client)
[x] Add deployment insructions

Work to be on digitalMeX on branch development_web branch

Here is myjobs docs
verified on branch development_web_blog


cmake/xpfunmac: CMAKE_COMPILER_IS_GNUC[C|XX] deprecated

https://cmake.org/cmake/help/latest/variable/CMAKE_COMPILER_IS_GNUCC.html

This variable is deprecated. Use CMAKE_C_COMPILER_ID instead.

https://cmake.org/cmake/help/latest/variable/CMAKE_COMPILER_IS_GNUCXX.html

This variable is deprecated. Use CMAKE_CXX_COMPILER_ID instead.

also, xpGetCompilerPrefix() should be updated to not only look for the c++ compiler
https://github.com/externpro/externpro/blob/24.06/cmake/xpfunmac.cmake#L778-L787
  elseif(CMAKE_COMPILER_IS_GNUCXX)
    if(X_GCC_TWO_VER)
      set(digits "\\1\\2")
    else()
      set(digits "\\1\\2\\3")
    endif()
    string(REGEX REPLACE "([0-9]+)\\.([0-9]+)\\.([0-9]+)?"
      "gcc${digits}"
      prefix ${CMAKE_CXX_COMPILER_VERSION}
      )

because there are projects (now being built standalone and not part of smanders/externpro) which only set the LANGUAGES to C -- for example: sqlite https://github.com/externpro/sqlite-amalgamation/blob/xp3.37.2/CMakeLists.txt#L2-L5

in xpfunmac, impacts:

xpGetCompilerPrefix
xpEnableWarnings
xpToggleDebugInfo
xpCommonFlags
xpSetFlagsGcc
xpSetFlags

CMAKE_<LANG>_COMPILER_ID documentation https://cmake.org/cmake/help/latest/variable/CMAKE_LANG_COMPILER_ID.html


test_vim.test_strwidth fails with assertionerror (63 != 44)

While trying to author some test scripts for ui/screen.py, the test script reported that test_vim.test_strwidth throws an assertionerror.  Error output uploaded here.
Environment:
Hardware: C720 Acer Chromebook
OS: Debian Sid running as chroot
Python Version: 2.7
Please advise if you need any additional info.

This could be due to decoding error, what happens if you do set encoding=utf-8 before the test?

Looks like this is happening because my terminal encoding was set to POSIX.
I ran export LC_ALL=C.UTF-8 followed by export LANG=$LC_ALL and the tests completed without problem.

Looks like this is happening because my terminal encoding was set to POSIX.

POSIX can't decode those asian characters used in the test, illegal bytes are displayed as <xx>, thats why you get a higher strwidth


 in signs that [ [ ] " " " ' ' ' (() { { } already have matched will delete both

I find something weird,
in the cases that has been already matched like [ [ ] " " " ' ' ' (() { { }, we dont want autoclose.nvim to delete both signs for us
for example:
|  <------- Cursor
#include "stdio.h"|"

as we can see, "stdio.h"|" have a pair that already matched ( "stdio.h"|), if we press <BS> at |, it will delete the both sign for us.
In this cases, we might not wish to delete both sign :D

@NEX-S why did you close this issue?


Detect component has yet to be built

What kind of PR is this?

/kind bug
What does does this PR do / why we need it:
This is a combination of https://github.com/openshift/odo/pull/2405 and
the newly updated odo init image PR here: https://github.com/openshift/odo-init-image/pull/43
Which issue(s) this PR fixes:
Fixes #1066
How to test changes / Special notes to the reviewer:
odo create nodejs
odo push

Signed-off-by: Charlie Drage<EMAIL_ADDRESS>

/approve


Feasibility for supporting M5Stack Cardputer Kit (M5StampS3)

M5Stack Cardputer Kit has keyboard and using M5StampS3.
It will be much more easier to keyboard to enter passphrase and make key more secure.
Is it possible or hard to make support this hardware?
From my understanding, Only adding keyboard support is enough but I'm not sure.
Keyboard is attached via 74HC138 decoder.
Ref: https://docs.m5stack.com/en/core/Cardputer

This would also need to wait support for the ESP32-S3 chip is added.


[MVP release] Deploy a tWAS cluster on Azure VMs

Description
This PR is to resolve the following issues:

Issue #1
Issue #2
Issue #3
Issue #7

Change summary

Remove unused code for service integrations
Support entitlement check and patch
Add params for IBMId and password
Remove cloud-init artifacts and logs to secure input IBMid credential
Get tWAS installation directory from file virtualimage.properties built in the base image
Support both password and ssh public key for account of vm login in UI
Add information box to remind user that an entitled IBMid is required to provision the cluster in UI
Add link to view WebSphere License in UI
Refactor ARM template
Update readme

Marketplace offer for testing
To facilitate PR review, I updated the testing marketplace offer with the latest code changes included in the PR, so reviewers can try by themselves to test, verify and share their feedback:

Open the preview offer in Azure portal

If you see Could not create the marketplace item, click your profile at the top-right of the page > Switch directory > Select "WAS-MSFT-TEAM"

Click Create to start the offer

Note: don't try the plan "Add additional nodes to the existing cluster" as it doesn't work any longer.

Action required for reviewers
@gcharters @git4rk @NottyCode @edburns or any other reviewer:

Pls help play with the preview offer and share your feedback, especially for UI design, including wordings, help text, help link and so on.
I captured UI screenshots below, but again pls play with it by yourself as screenshots can't show all of details:

Test cases
The following two cases have already been verified before sending out the PR:

An entitled IBMid account can successfully provision a tWAS cluster on Azure using the preview offer;
An un-entitled IBMid account can't provision a tWAS cluster on Azure using the preview offer;

Hello @git4rk , I saw @edburns  has approved the PR, do you have any comments? If not, could you pls approve the PR and get it merged? Of course, we can always address any feedback with the future PRs.

@majguo @edburns I do not see WAS-MSFT-TEAM in my list. Am I missing some permissions?

@majguo @edburns I do not see WAS-MSFT-TEAM in my list. Am I missing some permissions?

@git4rk You have already been invited to this directory. I guess you haven't accepted the invitation. Pls search for the relative email with keyword WAS-MSFT-TEAM from your email box and try accept the invitation.

@majguo @edburns Seems like there is still something missing. I had accepted the invite and I accepted again but this is what I see:
Sender:  Graham Charters<EMAIL_ADDRESS>Organization:  WAS-MSFT-Team
Domain:  wasmsft.onmicrosoft.com

@majguo @edburns Seems like there is still something missing. I had accepted the invite and I accepted again but this is what

It seems that the sender of email you searched above is incorrect, and it aims to invite you to the subscription, instead of the directory. Pls search the similar email (sender is Microsoft Invitations<EMAIL_ADDRESS>as below, and try to accept the invitation:


Better support of resources settings

Is your feature request related to a problem? Please describe.
Currently, container component has memoryLimit:
schemaVersion: 2.0.0
metadata:
  name: spring-boot-http-booster
components:
  - name: maven-tooling
    container:
      image: registry.redhat.io/codeready-workspaces/stacks-java-rhel8:2.1
      memoryLimit: 768Mi

But according to Che experience memory limit is not enough. It's also makes sense to have memoryRequest, cpuLimit, cpuRequest.
I suppose the same issue is actual for chePlugin component as well.
Describe the solution you'd like
Support request and limit for cpu and memory:
schemaVersion: 2.0.0
metadata:
  name: spring-boot-http-booster
components:
  - name: maven-tooling
    container:
      image: registry.redhat.io/codeready-workspaces/stacks-java-rhel8:2.1
      memoryLimit: 768Mi
      memoryRequest: 256Mi
      cpuLimit: 0.4
      cpuRequest: 0.2

Describe alternatives you've considered
It may make sense to go k8s style format
schemaVersion: 2.0.0
metadata:
  name: spring-boot-http-booster
components:
  - name: maven-tooling
    container:
      image: registry.redhat.io/codeready-workspaces/stacks-java-rhel8:2.1
      resources:
        request:
          memory: 256Mi
          cpu: 0.2
        limit:
          memory: 756Mi
          cpu: 0.4

Additional context
Add any other context or screenshots about the feature request here.

I think the k8s style is the cleaner of the two options, but would it be considered a breaking change? Since we're moving out memoryLimit to under limit.memory?

I think the k8s style is the cleaner of the two options, but would it be considered a breaking change? Since we're moving out memoryLimit to under limit.memory?

Given that odo v2 is going to GA with the current setting, we need to avoid introducing breaking changes at this point. I'd advise not to change that unless it is really necessary.

Yeah, that's what I'm thinking too, even though I like the format of #2. Option 1 allows us to introduce this to the spec without breaking anything, we're just adding 3 new fields (memoryRequest, cpuLimit, and cpuRequest).

Given that odo v2 is already using the memoryLimit in optinon #1, It has been agreed to use option #1 to avoid breakage of schema and it is easier to read.

I am wondering is this the final design or temporary design only to avoid breaking changes for odo v2 GA? From scalability perspective, the k8s style is better as it group all functionality properly (eg. request, limit). In the future, if we still have more fields add to the "resources", then it might make fields more redundant (eg. many request and limit) if we don't use k8s style.

We only plan to expose the most common settings on this and we have no intention to duplication everything that users can configure on K8. Therefore, we are not expecting there will be a lot of new fields that we are add in the future. If we happens in a position in the future that we want to support many other K8 settings, we should probably consider a different approach at that time, e.g. include a link to k8 yaml.

I do not think devfile needs cpu limits. If there are no cpu limits are set limits are determined by the LimitRange set by the administrator of the cluster or if LimitRanges are not set it is limited to the cpu available to the node that pod is scheduled to (or Quota limits).  When we set the limits on devfiles, we are assuming that those values are not in conflict with cluster configuration, which assumes that devfile author knows about the configuration of the cluster, which in turn makes devfiles cluster specific.  For instance, if we are running on a namespace with a LimitRange object that sets the spec.limit.max.cpu to 800m setting the limit on devfile to 1000m will cause pod to fail.
Requests are a different story because they are indicating the absolute minimum for devfile to function. If limits, quotas or node sizes can not satisfy those they should cause a failure.

In short lets agree to disagree @gorkem.
I want to set my default LimitRange that is as low as possible, I want my cluster usage to be as slim as possible and I want my developers to learn to always always define request and limit in there yaml.
apiVersion: v1
kind: LimitRange
metadata:
  name: core-resource-limits
spec:
  limits:
    - type: Container
      default:
        cpu: 200m
        memory: 200Mi
      defaultRequest:
        cpu: 100m
        memory: 100Mi

To force me as sysadmin to have multiple LimitRanges for different teams if they are using odo or not is a pain.
Because if I don't I know that I will increase cost of my cluster since It will automatically get bigger.
And even in the cases where the developers are using odo they probably won't do it every time. Most likely the developers will run odo with a application that they are currently developing and have another microservice in the same namespace that they are developing towards.
If i have something like, i hang out allot with java developers currently that's why the high numbers.
apiVersion: v1
kind: LimitRange
metadata:
  name: core-resource-limits
spec:
  limits:
    - type: Container
      default:
        cpu: 800m
        memory: 1Gi
      defaultRequest:
        cpu: 400m
        memory: 500Mi

That would make the random microservice that my odo developer is developing against increase it's cpu/memory usage by more than 100% and that isn't okay.
If I have this kind of config for 100 developers or 1000 developers this makes a big difference in my size of my developer clusters.
If I go and bring those numbers to a my bosses and tell them that I have 20-30 more worker nodes  just because I can't set reasonable defaults due to odo they will most likely ask me to get rid of odo...

We are in agreement... I think. I do think odo or che needs to provide a way to set values for cpu limits. However this issue is specifically for putting them in devfile. A devfile is related to the application and it should not have cluster related items. For instance setting the limit to 2000m may be OK for one cluster (or a user on the cluster) but it may not work for the next cluster. So we loose the mobility of the application between clusters. That is why I suggested on the issue reported to odo repo to use odo config mechanism.
Most developers do not need to know about limits and quotas though. I argue that odo and Che should do more and calculate a sensible cpu limit (for instance 75% of what the user is allowed) and use that by default.

Personally I don't care if it's in the devfile or in some other file as long as the developers can change this value in a easy way.
But since the devfile contains memoryLimits in the 2.0 release it makes sense to add cpuLimits to it as well since I'm guessing you want to be backwards compatible and consistent in the devfile.
I don't think automatic calculation and configuration is a good idea due to what you write in https://github.com/openshift/odo/issues/4266#issuecomment-734927268, we don't know if what access the developers have namespaces where limits is configured or not.
I guess you could come with a suggestion on how to configure it to stdout to make it as user friendly as possible.

@gorkem

However this issue is specifically for putting them in devfile. A devfile is related to the application and it should not have cluster related items

I don't view CPU or memory limit or requests as cluster-specific things. For me, both are application specifics. If I'm writing an application I should know are minimal requirements for the application to start as well as maximum resource consumption that the application is allowed (when the application reaches this I know that something went wrong).
LimitRange complicates all this. This is a cluster-specific thing. If my applications specify a limit or request that it's outside of the namespace LimitRange it is completely ok that it gets rejected because the cluster might not be able to handle my application.

How about we take those values as guidance to the tools. And odo and Che can adjust them according to the LimitRanges so that the deployment does not fail?

Adjusting them only if the memory or cpu limits or requests are not set in Devfile?
That is a good idea, and that should work.
If Devfile defines memory or CPU requests we need to follow it.
For example, I know that my application needs at least 6GB of memory, so I set memoryReqest in devfile to 6GB.
If I try to deploy this to the namespace with LimitRange with maximum memory 4GB it needs to fail.

We'll use the first proposed style.


Adding two newline before and after uploading image and "quote and reply" feature

Currently, only one line is added before and after quoted message and pasting images in compose area. For more breathing room around these, two newlines are inserted which would pad the inserted text with a whole empty line
Fixes: #11389 and #23608
Before:-

After:
https://user-images.githubusercontent.com/97045316/225522607-2ffffa01-0279-4350-8360-ee635578e75f.mp4

Self-review checklist

[ ] Self-reviewed the changes for clarity and maintainability
(variable names, code reuse, readability, etc.).

Communicate decisions, questions, and potential concerns.

[ ] Explains differences from previous plans (e.g., issue description).
[ ] Highlights technical choices and bugs encountered.
[ ] Calls out remaining decisions and concerns.
[ ] Automated tests verify logic where appropriate.

Individual commits are ready for review (see commit discipline).

[ ] Each commit is a coherent idea.
[ ] Commit message(s) explain reasoning and motivation for changes.

Completed manual review and testing of the following:

[ ] Visual appearance of the changes.
[ ] Responsiveness and internationalization.
[ ] Strings and tooltips.
[ ] End-to-end functionality of buttons, interactions and flows.
[ ] Corner cases, error conditions, and easily imagined bugs.

Please clean up your commit history and post again to request a review. See here for guidelines. Thanks!

@alya I have cleaned the commit history. Can you please review it?

Please review your commit message again, and make sure it follows all the guidelines.

@alya I have Modified the commit message as per the guidelines. Can you please review .?

If you think this is a better approach than the existing PR for this issue (#24187), please explain your reasoning.

I don't see much difference between @N-Shar-ma's PR and this PR. Although, I think the work done in that PR is way more descriptive.
If Zulip wants to change something related to these files, then having two separate functions for inline smart_insert_inline and block smart_insert_block could be a lot of work to change in test files and also declaring a lot of variables in these again open a chance of bug.
Work done in that PR is appreciable, like the smart_insert_block function is written in a way more perfect manner, if the PR is modified to work in a single function of smart_insert then, working with test files would be easy.

@alya Can you please explain, why PR says "Merging is blocked"?
I searched but that only lead me to you about asking this issue.

Closing this PR since #24187 has been merged.

Can you please explain, why PR says "Merging is blocked"?

This is because only maintainers can merge PRs. GitHub's UI is a bit confusing here.


Take Thread-Dump or Heap-Dump of K8s Pod

How do we take thread-dump, heap-dump and Container capture  in certain condition before pod die for debugging purpose for certain bugs or scenario in kubernetes ?
Might be we can utilize some event hooks while pod is getting killed.

and sometime it gets even harder to create the heap dump when we have resources request/limits specified on the container, the dump tool itself consume a lot resource at a peak and even exceed the resource limit threshold which trigger kubernetes restart that pod, therefore we could lose the heap dump.
is there any tool/solution for proper dump generating?

try kill -3 1   it will print the thread dump in output without killing the pod

Kubectl -n $NameSpace exec -it $pod /bin/sh
Using Jmap, Jstack
jmap -dump:format=b,file=/tmp/heapdump 1
jstack 1 > /tmp/threaddump

https://danlebrero.com/2018/11/20/how-to-do-java-jvm-heapdump-in-kubernetes/

I was looking for a way to generate a threadump right before pod get killed/restart , I found this :
    lifecycle:
      preStop:
        exec:
          command:
            - "/bin/sh"
            - "-c"
            - "jstack 1 > /var/log/jvm/jvm-thread-$(date +'%Y%m%d%H%M').log"
            - "sleep 2m"

source : https://habeeb-umo.medium.com/capturing-and-uploading-jvm-thread-dumps-or-other-logs-in-a-kubernetes-cluster-with-fluent-bit-5fc2a5e6b5fd

This thread is a little old, but we added Java troubleshooting actions to Robusta.dev to do this.
It's all open source.

@aantn
How can I trigger Robusta action to take a heap dump when a POD goes OOM or restarts and save the dump somewhere before the POD comes up?

@Yagyansh the way OOM Kills work, you don't really get much warning.
Would it work if you fired a Prometheus alert when the pod was at 90% memory usage and ran the heap dump action from there?


feat: expose wait_synced with helios-ts

When interacting with helios via helios-ts wasm, expose the function wait_synced (or similar) to know when the provider is ready to use. Currently using the provider before it completed syncing will result Error: out of sync

Yep this is definitely a good idea. Should be a pretty easy add. I can take a stab at it in the next few days unless anyone else is interested in picking it up.


gives error after xcode upgrade to 11.5

Last night update to xcode 11.5 gives error after try to Archive via Xcode like below but it is working on simulator or my device.
Undefined symbols for architecture arm64:
"_RCTSharedApplication", referenced from:
-[FitnessHocamTests testRendersWelcomeScreen] in FitnessHocamTests.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
React Native version:
System:
OS: macOS 10.15.5
CPU: (8) x64 Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
Memory: 1.42 GB / 16.00 GB
Shell: 3.2.57 - /bin/bash
Binaries:
Node: 13.6.0 - /usr/local/bin/node
Yarn: 1.21.1 - /usr/local/bin/yarn
npm: 6.13.4 - /usr/local/bin/npm
Watchman: 4.9.0 - /usr/local/bin/watchman
SDKs:
iOS SDK:
Platforms: iOS 13.5, DriverKit 19.0, macOS 10.15, tvOS 13.4, watchOS 6.2
Android SDK:
API Levels: 28, 29
Build Tools: 28.0.3, 29.0.2
System Images: android-26 | Google Play Intel x86 Atom, android-27 | Google Play Intel x86 Atom, android-28 | Google Play Intel x86 Atom, android-R | Google APIs Intel x86 Atom
IDEs:
Android Studio: 3.5 AI-191.8<IP_ADDRESS>10548
Xcode: 11.5/11E608c - /usr/bin/xcodebuild
npmPackages:
react: 16.9.0 => 16.9.0
react-native: 0.61.5 => 0.61.5

Fix that issue

@volkandogan Hi, how did you fix that ? I have the same problem


Add a list to show all supported Apps in additon to Featured

Will it be a nice idea? Maybe just a script to pull the complete list from https://github.com/dracula somehow. Otherwise people might think there is no Dracula theme beyond the current listed Apps.
Related issue: https://github.com/dracula/termite/issues/1

Here's a PR that includes termite: https://github.com/dracula/dracula.github.io/pull/67
I can merge it as soon as I have the instructions to activate the theme.


Update react version to 18.1.0

Thanks for the PR left a bit suggestion and hope we can get the ci to pass.


Doing a first aim at getting midnight after adding 1 day. If that tim…

…e is not midnight, doing a second aim at midnight.
Worked on this with @kevPo.

Closes #3132

@ichernev Both grunt and the transpile commands are completing successfully on my machine. Thoughts on why they would fail on Travis CI?

@mj1856 ^^

@keithwillcode relax, software is sometimes (sigh) buggy.
About the code itself -- I didn't quite get that.

shouldn't we be careful with this logic for units smaller than a day?
doing another startOf might not be great, if you're off because of DST hole then you should try to find which way to go (fw or bw) depending on which one is closer (now you go only back)
also you're trying to force America/Sao_Paulo in your tests, but that only works in moment-timezone, so you can not use this. You should introduce a DST hole with a function, so its always reproducible and doesn't needs dependencies -- https://github.com/moment/moment/blob/develop/src/test/moment/zones.js#L299

I hope the second aim will do it right ;-)

closing due to lack of response. Feel free to reopen if concerns are addressed.


GPC_4T - The Documentation

Please make 5 Word files:

GPC_4T project.docx (eventually will contain the other 4 documents)
GPC_4T HAS.docx
GPC_4T MAS.docx
GPC_4T Validation Plan.docx
GPC_4T Development & Methodologies.docx

1) GPC_4T project.docx
prefix - of the Finals Document

About the Project
About the authors
Structure of the document

High-Level-Specifications (HAS)
Micro-Architecture-Specifications (MAS)
Validation Plan
Development Environment and Methodologies

2) GPC_4T HAS.docx

General Description

High Level Definition
RISCV & ISA
CPU (HW arch)

HW Multi Threading

GPC_4T within the LOTR project

Block diagram
Top Level & Block Interface
Design Building Blocks

Core & Pipe Stages
Memory Regions

I_MEM
D_MEM
CR_MEM

Supported features

CR table & functionality
Writing to Non Local Memory.
Reading from Non Local Memory

3) GPC_4T MAS.docx
HAS - Make sure this is simple, short, and in high level
MAS - Here is where the diagrams and detail should be

General Description

High Level Definition
Block diagram
Top Level & Block Interface

Design Building Blocks

Core & Pipe Stages

Detailed Core Block diagram
Fetch
Decode
Excecute
Memory Access
Write Back

I_MEM
D_MEM
CR_MEM

Design Flows

Thread Freeze using CRs.
Thread Rst using CRs.
Multi Thread Example. (Single 4 Thread Core)
Writing to Non Local Memory.
Reading from Non Local Memory

4) GPC_4T Validation Plan.docx
Validation Plan

Introduction
GCC RISCV Compiler & programs

GCC to generate tests
GPC_4T Feature coverage

ISA Coverage - RV32I
Alive test
CRs features & Dedicated tests
Multi Thread application
Automation & Scripts (gpc_compile_link.sh)

System Verilog Test Bench

Test Bench (gpc_4t_tb.sv)
Log generator
End Of Test Snapshot Checker
Assertions
RTL complication (list.f)
Load Backdoor I_MEM
Simulation
Automation & Scripts (tb_sim.ps1)

5) GPC_4T Development & Methodologies.docx
Development Environment and Methodologies

Git & GitHub

Git
GitHub

Repository structure
RISCV GNU Compiler Tool-Chain

GCC
WSL (mention that there are alternatives)

System Verilog

Project Coding Style (Macros, Cycle suffix)

Modelsim
PowerShell & Bash

@adlv888 @SaarKadosh


Implemented FT cases: 463, 464, 465, 466, 467, 468, 469

JIRA BUG LInk for FT_469 : https://applab.atlassian.net/browse/NMS-225

It looks like all of the tests added in this PR duplicate already existing tests in the same file.  Also why are these being added now since the code that is being tested has been in the system for weeks?  According to the FT summary only blocked test cases were remaining?


Update user man

@clebertsuconic @jbertram Please DO NOT merge, I am opening this for feedback.

@clebertsuconic @jbertram This should be good to go.  Thanks for the great feedback.


Incompatible with Python 3.10

If I install the dependencies in a python 3.10 venv then I get the following error from flax when running image_from_text.py with no options:
  File "/home/matthew/Programming/Python/min-dalle/min_dalle/load_params.py", line 5, in <module>
    from flax import traverse_util, serialization
  File "/home/matthew/.cache/pypoetry/virtualenvs/min-dalle-13Fe8Z6x-py3.10/lib/python3.10/site-packages/flax/__init__.py", line 18, in <module>
    from . import core as core
  File "/home/matthew/.cache/pypoetry/virtualenvs/min-dalle-13Fe8Z6x-py3.10/lib/python3.10/site-packages/flax/core/__init__.py", line 15, in <module>
    from .axes_scan import broadcast as broadcast
  File "/home/matthew/.cache/pypoetry/virtualenvs/min-dalle-13Fe8Z6x-py3.10/lib/python3.10/site-packages/flax/core/axes_scan.py", line 19, in <module>
    import jax
  File "/home/matthew/.cache/pypoetry/virtualenvs/min-dalle-13Fe8Z6x-py3.10/lib/python3.10/site-packages/jax/__init__.py", line 35, in <module>
    from jax import config as _config_module
  File "/home/matthew/.cache/pypoetry/virtualenvs/min-dalle-13Fe8Z6x-py3.10/lib/python3.10/site-packages/jax/config.py", line 17, in <module>
    from jax._src.config import config
  File "/home/matthew/.cache/pypoetry/virtualenvs/min-dalle-13Fe8Z6x-py3.10/lib/python3.10/site-packages/jax/_src/config.py", line 29, in <module>
    from jax._src import lib
  File "/home/matthew/.cache/pypoetry/virtualenvs/min-dalle-13Fe8Z6x-py3.10/lib/python3.10/site-packages/jax/_src/lib/__init__.py", line 41, in <module>
    import scipy.signal as _signal
  File "/home/matthew/.cache/pypoetry/virtualenvs/min-dalle-13Fe8Z6x-py3.10/lib/python3.10/site-packages/scipy/signal/__init__.py", line 302, in <module>
    from .filter_design import *
  File "/home/matthew/.cache/pypoetry/virtualenvs/min-dalle-13Fe8Z6x-py3.10/lib/python3.10/site-packages/scipy/signal/filter_design.py", line 16, in <module>
    from scipy import special, optimize, fft as sp_fft
  File "/home/matthew/.cache/pypoetry/virtualenvs/min-dalle-13Fe8Z6x-py3.10/lib/python3.10/site-packages/scipy/optimize/__init__.py", line 421, in <module>
    from ._shgo import shgo
  File "/home/matthew/.cache/pypoetry/virtualenvs/min-dalle-13Fe8Z6x-py3.10/lib/python3.10/site-packages/scipy/optimize/_shgo.py", line 9, in <module>
    from scipy import spatial
  File "/home/matthew/.cache/pypoetry/virtualenvs/min-dalle-13Fe8Z6x-py3.10/lib/python3.10/site-packages/scipy/spatial/__init__.py", line 107, in <module>
    from . import distance, transform
  File "/home/matthew/.cache/pypoetry/virtualenvs/min-dalle-13Fe8Z6x-py3.10/lib/python3.10/site-packages/scipy/spatial/transform/__init__.py", line 19, in <module>
    from .rotation import Rotation, Slerp
ImportError: /home/matthew/.cache/pypoetry/virtualenvs/min-dalle-13Fe8Z6x-py3.10/lib/python3.10/site-packages/scipy/spatial/transform/rotation.cpython-310-x86_64-linux-gnu.so: undefined symbol: _PyGen_Send

If I downgrade the python version to 3.9 then it works.

I'm getting this on 3.10:
$ python image_from_text.py --text='a comfy chair that looks like an avocado' --torch --mega --seed=10
...
  File "/Users/me/repos/min-dalle/min_dalle/load_params.py", line 45, in load_dalle_bart_flax_params
    params = serialization.msgpack_restore(f.read())
  File "/Users/me/repos/min-dalle/.venv/lib/python3.10/site-packages/flax/serialization.py", line 350, in msgpack_restore
    state_dict = msgpack.unpackb(
  File "msgpack/_unpacker.pyx", line 205, in msgpack._cmsgpack.unpackb
ValueError: Unpack failed: incomplete input

@gitpushdashf I've had that. I think it means your download is incomplete. You should check the size of the files in pretrained/dalle_bart_... (specifically the flax_model.msgpack) rerun setup.sh if they are incomplete.
➜ ls -lh pretrained/dalle_bart*/flax_model.msgpack
-rw-rw-r-- 1 matthew matthew 4.9G Jun 29 10:39 pretrained/dalle_bart_mega/flax_model.msgpack
-rw-rw-r-- 1 matthew matthew 1.7G Jun 18 14:49 pretrained/dalle_bart_mini/flax_model.msgpack

@gitpushdashf I've had that. I think it means your download is incomplete. You should check the size of the files in pretrained/dalle_bart_... (specifically the flax_model.msgpack) rerun setup.sh if they are incomplete.
➜ ls -lh pretrained/dalle_bart*/flax_model.msgpack
-rw-rw-r-- 1 matthew matthew 4.9G Jun 29 10:39 pretrained/dalle_bart_mega/flax_model.msgpack
-rw-rw-r-- 1 matthew matthew 1.7G Jun 18 14:49 pretrained/dalle_bart_mini/flax_model.msgpack

You can check the wandb page for the artifacts too: https://wandb.ai/dalle-mini/dalle-mini/artifacts/DalleBart_model/mega-1-fp16/v14/files

That worked. Thank you!

Closing since since flax model was moved.  Converted torch params can be downloaded directly now


Problem with jquery

Hi guys I have a big question, I'm trying to use the @section('scripts') in one of my pages, but I got the error with jquery It doesnt load it in the page, so I've created a new section in

scripts.blade.php with @yield('js')

`

@yield('js')`
And using this new section on each page of my system, Am i doing the right thing?

Maybe you will obtain more feedback using stackoverflow https://stackoverflow.com/?


Remove deprecated functionality

This isn't intended to be merged immediately. It's just easy to create this PR at the same time as removing uses of the functionality.

Let me know when I should look at this / merge it :)

I'll rebase later/over the weekend. Are you ready to remove all the deprecated features?

Ah sorry, I thought this was for tests... no the deprecated items in the lib need to stay until the next version bump.


IndentationError: unexpected indent when docstring is in nested function.

Exception is raised for latest (6de6d93) pydocstyle when nested function contains docstring with arguments section.
How to reproduce:
Write python file sample.py:
def foo():
    def bar(a):
        """A docstring

        Args:
            a : An argument.
        """
        pass

Run:  pydocstyle sample.py
Result:
Traceback (most recent call last):
  File "/home/pinky/.local/bin/pydocstyle", line 11, in <module>
    load_entry_point('pydocstyle', 'console_scripts', 'pydocstyle')()
  File "/home/pinky/work/pydocstyle/src/pydocstyle/cli.py", line 68, in main
    sys.exit(run_pydocstyle())
  File "/home/pinky/work/pydocstyle/src/pydocstyle/cli.py", line 45, in run_pydocstyle
    ignore_decorators=ignore_decorators))
  File "/home/pinky/work/pydocstyle/src/pydocstyle/checker.py", line 883, in check
    ignore_decorators):
  File "/home/pinky/work/pydocstyle/src/pydocstyle/checker.py", line 124, in check_source
    for error in errors:
  File "/home/pinky/work/pydocstyle/src/pydocstyle/checker.py", line 831, in check_docstring_sections
    yield from self._check_google_sections(lines, definition, docstring)
  File "/home/pinky/work/pydocstyle/src/pydocstyle/checker.py", line 819, in _check_google_sections
    yield from self._check_google_section(docstring, definition, ctx)
  File "/home/pinky/work/pydocstyle/src/pydocstyle/checker.py", line 714, in _check_google_section
    yield from cls._check_args_section(docstring, definition, context)
  File "/home/pinky/work/pydocstyle/src/pydocstyle/checker.py", line 681, in _check_args_section
    function_pos_args = get_function_args(definition.source)
  File "/home/pinky/work/pydocstyle/src/pydocstyle/checker.py", line 916, in get_function_args
    function_arg_node = ast.parse(function_string).body[0].args
  File "/usr/lib/python3.7/ast.py", line 35, in parse
    return compile(source, filename, mode, PyCF_ONLY_AST)
  File "<unknown>", line 1
    def bar(a):
    ^
IndentationError: unexpected indent

NestedFunction keep the source origin indention, so ast could not parse. One quick way to fix is just removing any common leading whitespace from every line in source.
diff --git a/src/pydocstyle/checker.py b/src/pydocstyle/checker.py
index 29ff08f..03ab4d6 100644
--- a/src/pydocstyle/checker.py
+++ b/src/pydocstyle/checker.py
@@ -3,6 +3,7 @@
 import ast
 import string
 import sys
+import textwrap
 import tokenize as tk
 from itertools import takewhile, chain
 from re import compile as re
@@ -678,7 +679,7 @@ class ConventionChecker:

         """
         if definition.kind == 'function':
-            function_pos_args = get_function_args(definition.source)
+            function_pos_args = get_function_args(textwrap.dedent(definition.source))
             docstring_args = set()
             for line in context.following_lines:
                 match = ConventionChecker.GOOGLE_ARGS_REGEX.match(line)

If it seems good, I will pull request to resolve it.

Cannot this produce confusing outputs for users?

What is the progress with this issue?

Can a package/project owner approve and publish one of the PR's open for fixing the IndentationError? Until it's fixed my project can't feasibly upgrade to pydocstyle 4.0

This should be closed now - given that the issue is fixed in 4.0.1


Wrong usage of css variable prefix

In file https://github.com/shopware/shopware/blob/v<IP_ADDRESS>/src/Storefront/Resources/app/storefront/src/scss/layout/_navigation-offcanvas.scss
Shopware writes hardcoded:
.navigation-offcanvas {
--bs-offcanvas-padding-x: 0;
--bs-offcanvas-padding-y: 0;
overflow-x: hidden;
}
This is wrong and breaking if you change the css prefix yourself in your custom theme. The correct notation is:
.navigation-offcanvas {
--#{$prefix}offcanvas-padding-x: 0;
--#{$prefix}offcanvas-padding-y: 0;
overflow-x: hidden;
}

[public] Automated response: This issue is linked to the internal issue https://shopware.atlassian.net/browse/NEXT-33575.
[created from NEXT-33575, comment 486049]

Fix has been merged: https://github.com/shopware/shopware/commit/0329333adf3bbfd409162e404bd09950e04086a0


wayland: use linux-dmabuf instead of wl_drm

amdvlk relies on the wl_drm Wayland protocol to find the DRM device used by the compositor. However, wl_drm is a Mesa-private, legacy protocol, and compositors are starting to drop support. amdvlk should use the standard linux-dmabuf protocol from wayland-protocols instead.

Thanks for the heads-up. This is tracked in https://github.com/GPUOpen-Drivers/pal/issues/96.

Would implementing linux-dmabuf also allow Tearing on Wayland? Or is this unrelated?
Not super experienced with this. Sorry if that's a dumb question.

Done in 2024.Q4.1 release

In case anyone else comes across this and does a double-take, it's in the 2024.Q2.1 release notes, so I'm guessing Q4 was a typo. Anyway, thanks!

Sorry, this is a typo. The work is done in 2024.Q2.1 release

I am running AMDVLK 2024.Q2.3 and I am still getting the following error whenever I try to run a wayland application using AMDVLK:
wl_drm#44: error 0: wl_drm.create_prime_buffer is not implemented

Thanks for reporting the issue. We will check it further.

Hi @HurricanePootis, thanks for your report.
Could you please provide your wayland application or where I can download it?

@lukelmy
I am running vkcube-wayland, which is apart of the Vulkan-Tools repository.
Also, for more information, I am running the amdvlk driver with the following build process:
  cmake -H. -Bbuilds/Release64 \
    -DCMAKE_BUILD_TYPE=Release \
    -DBUILD_WAYLAND_SUPPORT=On \
    -G Ninja

And, according to the default.xml file in the tar soure code, it is built with PAL commit https://github.com/GPUOpen-Drivers/pal/commit/695337aa8131913d883ff15787cd75f6fcb11229.

Any update on this? Kind of inconvenient for amdvlk not to work with modern wayland apps.

@HurricanePootis we can't reproduce the issue locally. But we do notice an issue that may be related with yours. A fix is under implementation

@jinjianrong Good to know. If you are curious, I installed amdvlk through archlinux and here.

I am looking at the files pulled by the archlinux amdvlk package during its build process of 2024.Q2.3, and at pal/src/core/os/amdgpu/wayland/waylandWindowSystem.h, zwp_linux_dmbauf does show up and pal/src/core/os/wayland/mesa/ does exist.
So then, I don't know why even though these files are present at build time, the ensuing amdvlk driver is trying to use wl_drm.

Same problem here with uo.to.date Archlinux using
ENABLE_HDR_WSI=1 mpv --vo=gpu-next --target-colorspace-hint --gpu-api=vulkan --gpu-context=waylandvk '/home/audiolinux/Downloads/Temp/Life Untouched 4K Demo.mp4'
[audiolinux@archlinux ~]$ ENABLE_HDR_WSI=1 mpv --vo=gpu-next --target-colorspace-hint --gpu-api=vulkan --gpu-context=waylandvk '/home/audiolinux/Downloads/Temp/Life Untouched 4K Demo.mp4'   (+) Video --vid=1 (*) (hevc 3840x2160 59.940fps)  (+) Audio --aid=1 (*) (aac 2ch 48000Hz) [HDR Layer] Created HDR surface AO: [pipewire] 48000Hz stereo 2ch floatp VO: [gpu-next] 3840x2160 yuv420p10 [HDR Layer] Creating swapchain for id: 5 - format: VK_FORMAT_B8G8R8A8_UNORM - colorspace: VK_COLOR_SPACE_SRGB_NONLINEAR_KHR wl_drm#56: error 0: wl_drm.create_prime_buffer is not implemented [vo/gpu-next/wayland] Error occurred on the display fd Exiting... (Quit)

Sounds like an Arch Issue? I will make a gitlab issue on their tracker.

https://gitlab.archlinux.org/archlinux/packaging/packages/amdvlk/-/issues/1 arch bug filed

awesome

@HurricanePootis we had a fix in pal dev branch:
https://github.com/GPUOpen-Drivers/pal/commit/758683bc4c64d56287a1beb8384d19d94251200f
https://github.com/GPUOpen-Drivers/pal/commit/7b182c9310b3ed8eb98f2239c36a008ffb3eea3c
Could you help check if this fixes the issue?

@jinjianrong I just tested out vkcube-wayland and an SDL2 game, and was able to run them with Wayland with AMDVLK 2024.Q4.1 with these two patches applied, thank you so much!

I compiled 2024.Q4.2, and got vkcube_wayland working


Extends the Validator interface to allow for composition of validations.

Currently, validators have no way of adding more validation rules to the current
context. FluentValidator instances add themselves to each validator, and the
implementation of each on operation will ensure that compose gets called for
each validator.
--
Again, we're looking for feedback on this approach. We can tidy up the implementation to make it more robust if you like where we're headed.

Coverage increased (+0.2%) to 81.959% when pulling 205c3a9135032ccb4a9c176630c2e7cf63c54f5b on berlin-ab:add-current-context-to-handler into f9e0f138354547453e84c7a0bf2b0a478e6024cd on neoremind:master.

Hi berlin,
I have updated the library to provide some features per your PR, candidate release version is 1.0.6-SNAPSHOT.

ComplexResult2 is newly created for avoid getting NULL errors out of the Result.
You can use ResultColletors.toComplex2() to extract the result with type of ComplexResult2.

QuickValidator is newly introduced to perform quick validation work.
This is a better solution by using composition pattern instead of corrupting the single responsibility principle to the ValidationContext class. Sample code please check here.

You can also check the Javadoc of the method's signature to learn more.

Extending validator to allow for composition of validations.
Please refer to test case, method name is testCompose.

*Note that Snapshot version is able to work normally. Please add the following repository to your repositories if you are using the snapshot version. *
    <!-- Note: add this if you are using SNAPSHOT version -->
    <repositories>
        <repository>
            <id>Sonatype</id>
            <name>Sonatype's repository</name>
            <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>

Please check the snapshot version here
If you think that works as what you expected, then I will release.
Thanks,
Xu

I checked it out this morning. Looks great.
Thanks for the quick turnaround.

It seems like that I can release 1.0.6, right? :-)

Yes, please do.

You might consider adding documentation to the Readme while releasing this feature. I'd argue that Composable is part of the basic features and not part of the advanced.


Inference with Detectron2

Is it possible to run inference on a Detectron2 model using MyCaffe?

Possibly but the models would need to be compatible with the original CAFFE format.  MyCaffe does support some of the baseline models used by Detectron2 such as ResNet, but not sure how it would plug into the Detectron2 pipeline.  Something to investigate.  On a different note, we are working on an SSD implementation for object detection that is built into MyCaffe.
Hope this helps!


add ability to change security group rules for vpc sg's

example output:
dalton.py -d --vpc vpc-456 dalton/templates prod us-west-2
2015-12-03 17:15:02 INFO dalton.updater (update_security_group_rules:21) Adding rules to group nat_monitor_sg in us-west-2 vpc-456: ['tcp port 8008 <IP_ADDRESS>/32']
2015-12-03 17:15:03 INFO dalton.ec2 (authorize_ingress_rules:58) Request would have succeeded, but DryRun flag is set.
2015-12-03 17:15:03 INFO dalton.updater (create_security_group_if_not_exists:29) Creating security group rich in us-west-2 vpc-456
2015-12-03 17:15:04 INFO dalton.ec2 (create:27) Request would have succeeded, but DryRun flag is set.
the file for vpc will be named like this:
dalton/templates/prod/security_groups_us-west-2_vpc-456.yaml

:shipit:

lgtm, shippity ship ship

@codyaray you might be the only one with write access to this repo. can you add some of us as collaborators haha

I actually don't think I have write/admin access to this repo anymore. Its cool though... I mean, that's what open source is all about, right? ;)


Use svg of logotype instead of extra font

Instead of a render-blocking call to Oleo Swash, let's use an SVG.
Changes only to desktop width

Desktop screenshots

Nice one @mermop  :)
I'd suggest running the SVG through Jake Archibald's SVGOMG.


Make Balance and Capture use sync endpoints

What
Swaps out polling usage in CapturePaymentRepository and CheckBalanceRepository with sync endpoints by bumping the API-VERSION header from default -> 2024-01-08.
Sources of complexity in this PR:

Since Rosetta uses the same OkHttpClientBuilder as our model-fetching GET requests use, it was necessary to modify our OkHttp facilities to support specifying a custom API-VERSION and using "default" as the API-VERSION header when left unspecified. Since BT uses its own network facilities, specifying API-VERSION: 2024-01-08 was less involved.
BT started returning gson representations of JSON instead of ferrying the JSON as a string along so we had to navigate this gracefully

Why
We've wanted to do this for almost a quarter now in Android. It's already done in iOS and JS

Test Plan

✅ I've added unit tests for this change.
❌ You can manually test the changes in this PR if you want, but I'll be doing a designated bug bash on Friday, July 26th at 10:45 am Eastern.

Demo
CI tests pass!

How
Must be merged after previous PRs in the stack

#289
#288  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @devinmorgan and the rest of your teammates on  Graphite

Merge activity

Jul 24, 4:41 PM EDT: @devinmorgan merged this pull request with Graphite.


Research feasibility of 100% test coverage

Inspired by https://twitter.com/mikeal/status/1271473021593636866

Almost every library I’ve written in the last 2 years has had 100% coverage and that’s probably not going to change in the future. It’s not that hard to start at 100% and hold onto it and the workflow it enables is so much nicer.

Starlette achieves this. https://github.com/encode/starlette

Using https://pypi.org/project/pytest-cov/ and running pytest --cov=datasette:
---------- coverage: platform darwin, python 3.7.7-final-0 -----------
Name                                 Stmts   Miss  Cover
--------------------------------------------------------
datasette/__init__.py                    3      0   100%
datasette/__main__.py                    3      3     0%
datasette/_version.py                  277    152    45%
datasette/actor_auth_cookie.py          19      3    84%
datasette/app.py                       499     27    95%
datasette/cli.py                       157     45    71%
datasette/database.py                  233     17    93%
datasette/default_permissions.py        39      0   100%
datasette/facets.py                    209     24    89%
datasette/filters.py                   122      7    94%
datasette/hookspecs.py                  19      0   100%
datasette/inspect.py                    37     23    38%
datasette/plugins.py                    34      6    82%
datasette/publish/__init__.py            0      0   100%
datasette/publish/cloudrun.py           55      2    96%
datasette/publish/common.py             19      1    95%
datasette/publish/heroku.py             95     13    86%
datasette/renderer.py                   63      4    94%
datasette/sql_functions.py               4      0   100%
datasette/tracer.py                     85     16    81%
datasette/utils/__init__.py            503     31    94%
datasette/utils/asgi.py                253     25    90%
datasette/utils/shutil_backport.py      44     40     9%
datasette/version.py                     4      0   100%
datasette/views/__init__.py              0      0   100%
datasette/views/base.py                288     19    93%
datasette/views/database.py            120      2    98%
datasette/views/index.py                57      2    96%
datasette/views/special.py              72     16    78%
datasette/views/table.py               418     18    96%
--------------------------------------------------------
TOTAL                                 3731    496    87%

Added a .coveragerc file:
[run]
omit = datasette/_version.py, datasette/utils/shutil_backport.py

And ran again: pytest --cov=datasette --cov-config=.coveragerc
Name                               Stmts   Miss  Cover
------------------------------------------------------
datasette/__init__.py                  3      0   100%
datasette/__main__.py                  3      3     0%
datasette/actor_auth_cookie.py        19      3    84%
datasette/app.py                     499     27    95%
datasette/cli.py                     157     45    71%
datasette/database.py                233     17    93%
datasette/default_permissions.py      39      0   100%
datasette/facets.py                  209     24    89%
datasette/filters.py                 122      7    94%
datasette/hookspecs.py                19      0   100%
datasette/inspect.py                  37     23    38%
datasette/plugins.py                  34      6    82%
datasette/publish/__init__.py          0      0   100%
datasette/publish/cloudrun.py         55      2    96%
datasette/publish/common.py           19      1    95%
datasette/publish/heroku.py           95     13    86%
datasette/renderer.py                 63      4    94%
datasette/sql_functions.py             4      0   100%
datasette/tracer.py                   85     16    81%
datasette/utils/__init__.py          503     31    94%
datasette/utils/asgi.py              253     25    90%
datasette/version.py                   4      0   100%
datasette/views/__init__.py            0      0   100%
datasette/views/base.py              288     19    93%
datasette/views/database.py          120      2    98%
datasette/views/index.py              57      2    96%
datasette/views/special.py            72     16    78%
datasette/views/table.py             418     18    96%
------------------------------------------------------
TOTAL                               3410    304    91%

Added --cov-report html and got this report: https://static.simonwillison.net/static/2020/htmlcov-issue-841/index.html

From digging through that report it looks like the majority stuff that isn't fully covered is corner-cases... which are the kind of things I really do want the tests to catch.
I'm not entirely ready to commit to 100%, but I'm going to start digging through and seeing how close I can get. If I can get to 98% (I'm on 91% already) I may as well push all  the way to 100.

This one looks easy enough to fix:

Looking at options for publishing coverage reports:

https://github.com/codecov/codecov-action
https://github.com/coveralls-clients/coveralls-python

I'm going to try https://codecov.io/

$ bash <(curl -s https://codecov.io/bash)
  _____          _
 / ____|        | |
| |     ___   __| | ___  ___ _____   __
| |    / _ \ / _` |/ _ \/ __/ _ \ \ / /
| |___| (_) | (_| |  __/ (_| (_) \ V /
 \_____\___/ \__,_|\___|\___\___/ \_/
                              Bash-20200602-f809a24

x> No CI provider detected.
    Testing inside Docker? http://docs.codecov.io/docs/testing-with-docker
    Testing with Tox? https://docs.codecov.io/docs/python#section-testing-with-tox
    project root: .
--> token set from env
    Yaml not found, that's ok! Learn more at http://docs.codecov.io/docs/codecov-yaml
==> Running gcov in . (disable via -X gcov)
==> Searching for coverage reports in:
    + .
    -> Found 1 reports
==> Detecting git/mercurial file structure
==> Reading reports
    + ./coverage.xml bytes=139174
==> Appending adjustments
    https://docs.codecov.io/docs/fixing-reports
    -> No adjustments found
==> Gzipping contents
==> Uploading reports
    url: https://codecov.io
    query: branch=master&commit=0e49842e227a0f1f69d48108c87d17fe0379e548&build=&build_url=&name=&tag=&slug=simonw%2Fdatasette&service=&flags=&pr=&job=
    -> Pinging Codecov
https://codecov.io/upload/v4?package=bash-20200602-f809a24&token=secret&branch=master&commit=0e49842e227a0f1f69d48108c87d17fe0379e548&build=&build_url=&name=&tag=&slug=simonw%2Fdatasette&service=&flags=&pr=&job=
    -> Uploading
    -> View reports at https://codecov.io/github/simonw/datasette/commit/0e49842e227a0f1f69d48108c87d17fe0379e548

Closing this because I've researched feasibility. I may start a milestone in the future to help me get to 100%.