Adjust Padding styles to make the selected account full-Width

Details

Fixed Issues

$ https://github.com/Expensify/App/issues/7913
Tests

Open the transfer account page.
hover over the selected account to see that it expands to full width.
Hold Press the selected account to see that design.

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

PR Review Checklist

Contributor (PR Author) Checklist

[x] I made sure to pull main before submitting my PR for review
[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I clearly indicated the environment tests should be run in (Staging vs Production)

[ ] I wrote testing steps that cover success & fail scenarios (if applicable)
[x] I ran the tests & they passed on all platforms
[x] I included screenshots or videos for tests on all platforms
[x] I verified there are no console errors related to changes in this PR
[x] I followed proper code patterns (see Reviewing the code)

[x] I added comments when the code was not self explanatory
[ ] I put all copy / text shown in the product in all src/languages/* files (if applicable)
[ ] I followed proper naming convention for platform-specific files (if applicable)
[x] I followed style guidelines (in Styling.md) for all style edits I made

[x] I followed the guidelines as stated in the Review Guidelines

PR Reviewer Checklist

[ ] I verified the Author pulled main before submitting the PR
[ ] I verified the correct issue is linked in the ### Fixed Issues section above
[ ] I verified testing steps are clear and they cover the changes made in this PR

[ ] I verified the testing environment is mentioned in the test steps

[ ] I verified testing steps cover success & fail scenarios (if applicable)
[ ] I verified tests pass on all platforms & I tested again on all platforms
[ ] I checked that screenshots or videos are included for tests on all platforms
[ ] I verified there are no console errors related to changes in this PR
[ ] I verified proper code patterns were followed (see Reviewing the code)

[ ] I verified comments were added when the code was not self explanatory
[ ] I verified any copy / text shown in the product was added in all src/languages/* files (if applicable)
[ ] I verified proper naming convention for platform-specific files was followed (if applicable)
[ ] I verified style guidelines were followed

[ ] I verified that this PR follows the guidelines as stated in the Review Guidelines

QA Steps

Make sure you have completed your KYC for transferring the balance.
Open the transfer balance page from Settings/ Payments/ Transfer Balance on all platforms.
Hover over the selected account (Which account) to see that it expands to full width.
Hold Press the selected account to see that the highlight background color is expanding full width.

[ ] Verify that no errors appear in the JS console

Tested On

[x] Web
[x] Mobile Web
[x] Desktop
[x] iOS
[x] Android

Screenshots

Web | Desktop

Mobile Web

iOS

Android

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

🚀 Deployed to staging by @Luke9389 in version: 1.1.42-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

@Luke9389  QA team will not be able to validate this page. Can you check it internally

Yup, checking now.
Out of curiosity, why can't QA check this? Isn't QA added to all betas?

@Luke9389 ,
We would love to be added to this, but due to KYC wall for Transfer Balance we are not able to setup any wallet for QA. And if Balance is $0, Transfer Balance link does not display at all after recent changes
If you have any suggestions how to enable it for QA to test, pls add to this ticket https://github.com/Expensify/Expensify/issues/195344

I’m not seeing the Transfer Balance page on my expensifail or my real account on staging.
@parasharrajat would you be willing to explain how I can verify that my KYC is done?

QA passed.

🚀 Deployed to production by @chiragsalian in version: 1.1.42-6 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


Throw exception from #iterate if segment is not repeatable (fix #126)

This change ensures that whatever parameters are provided to iterate refer to a repeatable segment in the document schema. The input doesn't actually need to have a matching segment for the check to happen; thus, a previously latent bug (calling iterate when it shouldn't have been called) will now be made more likely to be caught.
config = Stupidedi::Config.hipaa
reader = Stupidedi::Reader.build(File.open("spec/fixtures/X222-HC837/1-good.txt"))
parser = Stupidedi::Builder::StateMachine.build(config)

parser, result = parser.read(reader)
parser.first.tap do |isa|
  isa.iterate(:GS) do |gs|
    gs.iterate(:ST) do |st|
      st.iterate(:BHT) do #=> BHT segment is not repeatable (Stupidedi::Exceptions::ParseError)
        ...
      end
    end
  end
end

One thing that's not ideal is the error is thrown from __find, which the user didn't call themselves. However, the next stack frame is iterate and the next one after that is where the user called it from.

@kputnam Thank you!


feat: Add the ability to manage Provisioners within the helm chart

Fixes #
Description
This PR adds the Provisioner template to the chart to render the Provisioners along the helm release and manage their lifecycle instead of having to handle plain manifests in another part of the CI.
Included a basic sample for the documentation, the spec key from the array will be passed as is.
$ cat -n tmpfiles/karpenter/templates/provisioner.yaml
     1  ---
     2  # Source: karpenter/templates/provisioner.yaml
     3  apiVersion: karpenter.sh/v1alpha5
     4  kind: Provisioner
     5  metadata:
     6    name: sample-1
     7    namespace: karpenter
     8    labels:
     9      helm.sh/chart: karpenter-0.11.1
    10      app.kubernetes.io/name: karpenter
    11      app.kubernetes.io/instance: release-name
    12      app.kubernetes.io/version: "0.11.1"
    13      app.kubernetes.io/managed-by: Helm
    14    annotations:
    15      test: toto
    16  spec:
    17    limits:
    18      resources:
    19        cpu: "1000"
    20        memory: 1000Gi
    21    requirements:
    22    - key: node.kubernetes.io/instance-type
    23      operator: In
    24      values:
    25      - m5.large
    26      - m5.2xlarge
    27    - key: topology.kubernetes.io/zone
    28      operator: In
    29      values:
    30      - us-west-2a
    31      - us-west-2b
    32    - key: kubernetes.io/arch
    33      operator: In
    34      values:
    35      - arm64
    36      - amd64
    37    - key: karpenter.sh/capacity-type
    38      operator: In
    39      values:
    40      - spot
    41      - on-demand
    42    ttlSecondsAfterEmpty: 30
    43    ttlSecondsUntilExpired: 2592000

How was this change tested?

Locally by rendering the templates
Compared templates against the ones actually used on production
Deployed a template in a dummy cluster

Does this change impact docs?

[ ] Yes, PR includes docs updates
[ ] Yes, issue opened: #
[x] No

Release Note

NONE

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Hey @cest-pas-faux ! Thanks for this PR!
There are some issues with managing resources like the Provisioner within the helm chart to install Karpenter. The Provisioner resource requires a validating and defaulting webhook to run on create/update. So if a Provisioner is applied by helm while Karpenter is applying the Karpenter controller and webhook pod, there's a race that occurs where the Provisioner resource apply will fail and cause the helm install to fail. The race is pretty easy to trigger too since there's 5-10 seconds of startup latency on the Karpenter pod.  We previously had an opinionated "default" provisioner in the helm chart and ended up removing it because it was causing a lot of issues.
In https://github.com/aws/karpenter/pull/810 we moved the "default" Provisioner to the post-install hook in Helm since Helm doesn't order the resources other than the CRDs in the crds dir. post-install resources are not managed by helm though for updates so it would be a one-time install. Also, when using helm install with Provisioner in the post-install hook, a user would be required to use the --wait flag to avoid the webhook race again.
I think this would be cool if helm had the proper hooks to apply resources like this :(

Hey @cest-pas-faux ! Thanks for this PR!
There are some issues with managing resources like the Provisioner within the helm chart to install Karpenter. The Provisioner resource requires a validating and defaulting webhook to run on create/update. So if a Provisioner is applied by helm while Karpenter is applying the Karpenter controller and webhook pod, there's a race that occurs where the Provisioner resource apply will fail and cause the helm install to fail. The race is pretty easy to trigger too since there's 5-10 seconds of startup latency on the Karpenter pod. We previously had an opinionated "default" provisioner in the helm chart and ended up removing it because it was causing a lot of issues.
In #810 we moved the "default" Provisioner to the post-install hook in Helm since Helm doesn't order the resources other than the CRDs in the crds dir. post-install resources are not managed by helm though for updates so it would be a one-time install. Also, when using helm install with Provisioner in the post-install hook, a user would be required to use the --wait flag to avoid the webhook race again.
I think this would be cool if helm had the proper hooks to apply resources like this :(

Yep helm is very cool but there is some limitations that are painful to deal with.
I just reminded myself that on first install, the CRD does not exists, hence the manifest validation will fail if the --disable-validation flag is not set on the helm command, creating a chicken-and-egg situation.
The dirty workaround would be to retry the deployment but that's pretty anti-pattern.
Maybe I could make another chart named karpenter-provisioner with the same components I added to this PR.
Let me know if you want me to work on this suggestion, or close this topic.

Yep helm is very cool but there is some limitations that are painful to deal with.

I just reminded myself that on first install, the CRD does not exists, hence the manifest validation will fail if the --disable-validation flag is not set on the helm command, creating a chicken-and-egg situation.
The dirty workaround would be to retry the deployment but that's pretty anti-pattern.
EDIT: Another solution would be to check the api capabilities in the provisioner template, and run only if the crd is available.
Maybe I could make another chart named karpenter-provisioner with the same components I added to this PR.
Let me know if you want me to work on this suggestion, or close this topic.
Another helm chart is probably the way to go if we want this and maybe it would work w/ the main chart as a dependency (not sure)?
I'm not sure if it adds that much value as another helm chart though rather than just applying the Provisioner manifests with kubectl.  I definitely don't think we'd want to manage two helm charts right now in this repo though :)


Improve LDT log messages for HyMAP restart files

Added better log messages to inform and warn user
that an input HyMAP restart (binary) file is present or
not when performing upscaling/upscaling of restart files.

This pull request address issue #213
https://github.com/NASA-LIS/LISF/issues/213

Kristi,
I've reviewed this pull request, and generally it seems OK.  Before I merge it, can you please explain why you changed the code from stopping if the HyMAP restart file would be overwritten to just making it a warning, if it would be overwritten?  Also, I noticed that you made this change only in the "upscale" routine, but not in the "downscale" routine.  Can you please explain why?
I'm sure there's a great explanation, but I'm failing to understand it.
If this is indeed the code that is needed, I do have one very small commit request to edit the comment on line 440 in the new code, to also indicate that a warning will be given, instead of preventing an overwrite.
Thanks,
David

Thank you for the excellent review and questions.
The code was changed from stopping and not overwriting the file to warning and overwriting to be more consistent with the LSM restart file upscaling process and for improving automation process (when used in routine running scripts). Also, the co
For the downscaling code, it was an oversight about not being updated similarly there.  I can update the code and make another pull request to make it more consistent as well.

I have made updates to the downscaling LIS HyMAP ensemble restart writing part of the code, as per your questions and comments.
Please let me know if you have any other questions or concerns.
Thanks!

Ok, made that additional comment update.

Thanks for the edits.  Code and comments are consistent.  I approve this pull request.

Sorry - hit the "close" button by mistake.  I re-opened and then merged the commit, which closes this pull request.


[SR-4066] Implement {implicit,explicit}-member-expression in lib/Syntax

Previous ID
SR-4066

Radar
None

Original Reporter
@bitjammer

Type
Bug

Additional Detail from JIRA

Votes
0

Component/s
Compiler

Labels
Bug, Syntax

Assignee
@bitjammer

Priority
Medium

md5: eadaa678762b30a228a085bb89d508c9

libSyntax was removed in #62145 and succeeded by swift-syntax.


Can't find file containing SSH key for scp command

We are looking into having our IoT Edge deployments production ready after a period of testing. One of the TODOs listed in the docs is replacing the test certificates in the VM with production certificates. The scp option to do this (mentioned here: https://docs.microsoft.com/en-us/azure/iot-edge/how-to-manage-device-certificates?view=iotedge-2018-06&tabs=linux and in some other places) needs an SSH key in a file called id_rsa, but we can't find that file in suggested location:
PS C:\Program Files\Azure IoT Edge> ls

    Directory: C:\Program Files\Azure IoT Edge

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2021-11-09     19:29                dda-drivers
d-----        2021-11-09     19:29                mariner-files
d-----        2021-11-09     19:31                yaml
-a----        2021-11-10     10:59<PHONE_NUMBER> AzureIoTEdgeForLinux-v1-EFLOW.vhdx
-a----        2021-11-04     05:23      536492824 AzureIoTEdgeForLinux-v1.cab
-a----        2021-10-28     23:34<PHONE_NUMBER> AzureIoTEdgeForLinux-v1.vhdx
-a----        2021-10-29     00:38      541840805 AzureIoTEdgeForLinux-v1.zip
-a----        2021-11-04     05:23          19215 EFLOWProvider.man
-a----        2021-11-04     05:28         168312 EFLOWProxy.exe
-a----        2021-11-04     05:24          14611 Install-Eflow.ps1
-a----        2021-11-09     19:31            801 known_hosts
-a----        2021-11-04     05:22              0 mariner-update.swu
-a----        2021-11-04     05:26       18541456 nodectl.exe
-a----        2021-11-04     05:24          17557 Uninstall-Eflow.ps1
-a----        2021-11-04     05:24          26702 Update-Script.ps1
-a----        2021-11-04     05:26       38819728 wssdagent.exe

Versions of EFLOW tested

1.1.2110.03111
1.1.2109.0

Are we missing something or is this file removed from newer versions of EFLOW?
A bonus question: The task of getting production certificates to the VM is not very easy to automate. Will this procedure change in the upcoming version of EFLOW for iotedge v1.2? If so, then maybe we postpone this task until the new version is released.

Hi @bkarrlander,
In order to copy files between the Windows host and the EFLOW VM, you can use the PS cmdlet Copy-EflowVmFile. For more information, check EFLOW PowerShell Functions.
Also, if you want to set production certificates for IoT Edge, we have a sample PowerShell code to do that. Please check EFLOW Util.
Thanks,
Francisco

Thank you, @fcabrera23


Change the titles for each section from Bold Text to Header 3 in Bug Report Issue Template

Type of Change

[x] Refactoring

Description
The change from Bold Text to a Header will make the Titles of each section pop more visually, which will hoepfully make Bug Report Issues easier to review.
Testing
Tested these changes by committing to my main branch and see if it works as expected.
Impact
This won't impact the WinUtil Program directly, but will improve the Reporting of bugs a bit (indirect impact).
Checklist

[x] My code adheres to the coding and style guidelines of the project.
[x] I have performed a self-review of my own code.
[x] I have commented my code, particularly in hard-to-understand areas.
[x] I have made corresponding changes to the documentation.
[x] My changes generate no errors/warnings/merge conflicts.

I would like the opinion of other contributors & readers of this PR, and see if it makes sense to do this change in the first place, and if so.. should we use Level 3 or 2 (so it'll be consistent across PR Template(s) and Issue Template(s)).
Thanks in advance 😄


[bug] Empty matches with Dart language

⏯ Playground Link

playground link1
playground link2

💻 Code
final s = "This is a string";

void main() {
  /// A main function that does some kind of computation
  final i = 1 + 2;
  print(i);
  print("This is another string using interpolation $i");
  print(f("my string in a function"));
}

String f(String a) {
  final s = """
  This is a multi-line string""";
  final r = """
  A multi-line string with interpolation $a""";
  return "$s\n$r";
}

Pattern:
Pattern 1
id: string_literal_nodes
language: dart
rule:
  pattern: "$A($B)"

Pattern 2
id: string_literal_nodes
language: dart
rule:
  pattern: "$A"
  kind: string_literal

Additional environment info
Since dart is not one of the officially supported languages I am using the following config file to enable it:
ruleDirs:
- ./rules
customLanguages:
  dart:
    libraryPath: dart.so
    extensions: [dart]

I have tried using the dart.so library downloaded by nvim-treesitter and also compiling the library from source. Both give the same results.
🙁 Actual behavior
In the playground everything works as expected, the first pattern matches function applications, while the second matches all string literals in the provided example.
Using the cli with the following command:
sg scan -r <path_to_rule>.yml --json=pretty <path_to_file>.dart

in both cases returns an empty list []
Have also tried with
sg -p "$A($B)" <path_to_file>.dart

sg -p "$A" --selector=string_literal <path_to_file>.dart

which should be equivalent to the two yml provided, with the same results.
For reference, using the sg run command I can only match the pattern $A, which matches the whole file, as soon as I add any other element to the pattern the returned matches are empty.
Tested both on windows and WSL Ubuntu 22.04LTS
🙂 Expected behavior
Return lists with 3 matches in the first case and 6 in the second, matching the behavior of the playground.
Note: The issue seems to be with the dart language, when translating the above examples to javascript the behavior is as intended and matches between playground and local install. This makes me think it is an issue with my setup for dart.
Dump of tree-sitter parse <path_to_file>.dart
For reference here is a dump of the tree-sitter tree, run using the same version of dart.so used by sg for the tests.
Not sure if this is relevant but this does NOT match perfectly with the tree shown in the playground for the same code. I can find the same nodes at the same positions in the file but the tree shown in the playground seems to have more nodes. (Not sure if this is due to the difference AST vs CST and what tree-sitter parse gives out is an AST).
(program [0, 0] - [17, 0]
  (final_builtin [0, 0] - [0, 5])
  (static_final_declaration_list [0, 6] - [0, 28]
    (static_final_declaration [0, 6] - [0, 28]
      (identifier [0, 6] - [0, 7])
      (string_literal [0, 10] - [0, 28])))
  (function_signature [2, 0] - [2, 11]
    (void_type [2, 0] - [2, 4])
    name: (identifier [2, 5] - [2, 9])
    (formal_parameter_list [2, 9] - [2, 11]))
  (function_body [2, 12] - [8, 1]
    (block [2, 12] - [8, 1]
      (documentation_comment [3, 2] - [3, 57])
      (local_variable_declaration [4, 2] - [4, 18]
        (initialized_variable_definition [4, 2] - [4, 17]
          (final_builtin [4, 2] - [4, 7])
          name: (identifier [4, 8] - [4, 9])
          value: (additive_expression [4, 12] - [4, 17]
            (decimal_integer_literal [4, 12] - [4, 13])
            (additive_operator [4, 14] - [4, 15])
            (decimal_integer_literal [4, 16] - [4, 17]))))
      (expression_statement [5, 2] - [5, 11]
        (identifier [5, 2] - [5, 7])
        (selector [5, 7] - [5, 10]
          (argument_part [5, 7] - [5, 10]
            (arguments [5, 7] - [5, 10]
              (argument [5, 8] - [5, 9]
                (identifier [5, 8] - [5, 9]))))))
      (expression_statement [6, 2] - [6, 57]
        (identifier [6, 2] - [6, 7])
        (selector [6, 7] - [6, 56]
          (argument_part [6, 7] - [6, 56]
            (arguments [6, 7] - [6, 56]
              (argument [6, 8] - [6, 55]
                (string_literal [6, 8] - [6, 55]
                  (template_substitution [6, 52] - [6, 54]
                    (identifier_dollar_escaped [6, 53] - [6, 54]))))))))
      (expression_statement [7, 2] - [7, 38]
        (identifier [7, 2] - [7, 7])
        (selector [7, 7] - [7, 37]
          (argument_part [7, 7] - [7, 37]
            (arguments [7, 7] - [7, 37]
              (argument [7, 8] - [7, 36]
                (identifier [7, 8] - [7, 9])
                (selector [7, 9] - [7, 36]
                  (argument_part [7, 9] - [7, 36]
                    (arguments [7, 9] - [7, 36]
                      (argument [7, 10] - [7, 35]
                        (string_literal [7, 10] - [7, 35]))))))))))))
  (function_signature [10, 0] - [10, 18]
    (type_identifier [10, 0] - [10, 6])
    name: (identifier [10, 7] - [10, 8])
    (formal_parameter_list [10, 8] - [10, 18]
      (formal_parameter [10, 9] - [10, 17]
        (type_identifier [10, 9] - [10, 15])
        name: (identifier [10, 16] - [10, 17]))))
  (function_body [10, 19] - [16, 1]
    (block [10, 19] - [16, 1]
      (local_variable_declaration [11, 2] - [12, 33]
        (initialized_variable_definition [11, 2] - [12, 32]
          (final_builtin [11, 2] - [11, 7])
          name: (identifier [11, 8] - [11, 9])
          value: (string_literal [11, 12] - [12, 32])))
      (local_variable_declaration [13, 2] - [14, 47]
        (initialized_variable_definition [13, 2] - [14, 46]
          (final_builtin [13, 2] - [13, 7])
          name: (identifier [13, 8] - [13, 9])
          value: (string_literal [13, 12] - [14, 46]
            (template_substitution [14, 41] - [14, 43]
              (identifier_dollar_escaped [14, 42] - [14, 43])))))
      (return_statement [15, 2] - [15, 18]
        (string_literal [15, 9] - [15, 17]
          (template_substitution [15, 10] - [15, 12]
            (identifier_dollar_escaped [15, 11] - [15, 12]))
          (escape_sequence [15, 12] - [15, 14])
          (template_substitution [15, 14] - [15, 16]
            (identifier_dollar_escaped [15, 15] - [15, 16])))))))

Hi! Thanks for the detailed report. Note the dart tree-sitter on playground can be VERY different from CLI.
Would you like to follow this instruction to debug CLI parsing? https://ast-grep.github.io/advanced/faq.html#cli-and-playground-produce-different-results-why

I can find the pattern with builtin dart language, not the tree-sitter one

Can confirm on my part that the builtin support works (tried on my personal linux machine, can't confirm on windows over the weekend).
I completely missed the fact that dart is included as a supported language out of the box, I stopped at the table in the docs home page, completely missed the link to the page with the languages with builtin support via tree-sitter and went straight for the custom language support option.
Honestly this solves my issue, I don't think I need to be on the latest version of the parser. Sorry for wasting your time.
In any case, if you are interested in understanding why the results are different between the built-in parser and the custom language option I can try and do some more troubleshooting.

@MicheleQuasar would you like to help debugging the output of this one using custom language?
sg run -p '$A($$$B)' -l dart --debug-query=pattern

completely missed the link to the page with the languages with builtin support

Sadly, the tree-sitter-dart used in ast-grep is not maintained by official community and is actually a fork of mine. https://github.com/ast-grep/tree-sitter-dart

I don't think I need to be on the latest version of the parser.

The issue of my fork is that it changed a lot from the original tree-sitter-dart.
Also, since my fork is poorly maintained, I am considering removing builtin dart support for the following releases. So I appreciate if you can help debugging the output of tree-sitter.

I've done some more digging and I'm a bit confused.
Since none of the patterns I have tried with the external language support for dart has worked, I started with something simple: I'm trying the pattern $A+$B.
I've downloaded and built tree-sitter parsers both for the official version of tree-sitter-dart as well as your fork so that I can compare the parsed pattern with the parsed syntax tree with the same version of the parsing library.
Also I've built the latest version of tree-sitter-cli which includes an option for tree-sitter parse to output a CST.
The results of this investigation don't make much sense to me.
Builtin parser
Config used

The parsed pattern looks like this

and the corresponding section of the CST is

All good on in this case
External language support
Config used

The parsed pattern looks identical to the builtin one

same for the CST

However in this case the search results are empty.
I'm attaching the two CST in case there is something elsewhere that might be preventing the match that I'm missing. But reading through the docs, it looks like matches for a pattern this simple should be local and the global structure of the code should not prevent a match.
Builtin CST
0:0   - 17:0    program
0:0   - 0:29      local_variable_declaration
0:0   - 0:28        initialized_variable_definition
0:0   - 0:5           final_builtin
0:0   - 0:5             `final`
0:6   - 0:7           name: identifier
0:6   - 0:1             `s`
0:8   - 0:9           "="
0:10  - 0:28          value: string_literal
0:10  - 0:11            """
0:27  - 0:28            """
0:28  - 0:29        ";"
2:0   - 8:1       lambda_expression
2:0   - 2:11        parameters: function_signature
2:0   - 2:4           void_type
2:0   - 2:4             `void`
2:5   - 2:9           name: identifier
2:5   - 2:4             `main`
2:9   - 2:11          formal_parameter_list
2:9   - 2:10            "("
2:10  - 2:11            ")"
2:12  - 8:1         body: function_body
2:12  - 8:1           block
2:12  - 2:13            "{"
3:2   - 3:56            documentation_comment
3:2   - 3:5               "///"
4:2   - 4:18            local_variable_declaration
4:2   - 4:17              initialized_variable_definition
4:2   - 4:7                 final_builtin
4:2   - 4:5                   `final`
4:8   - 4:9                 name: identifier
4:8   - 4:1                   `i`
4:10  - 4:11                "="
4:12  - 4:17                value: additive_expression
4:12  - 4:13                  decimal_integer_literal
4:12  - 4:1                     `1`
4:14  - 4:15                  additive_operator
4:14  - 4:1                     `+`
4:16  - 4:17                  decimal_integer_literal
4:16  - 4:1                     `2`
4:17  - 4:18              ";"
5:2   - 5:11            expression_statement
5:2   - 5:10              member_access
5:2   - 5:7                 identifier
5:2   - 5:5                   `print`
5:7   - 5:10                selector
5:7   - 5:10                  argument_part
5:7   - 5:10                    arguments
5:7   - 5:8                       "("
5:8   - 5:9                       argument
5:8   - 5:9                         identifier
5:8   - 5:1                           `i`
5:9   - 5:10                      ")"
5:10  - 5:11              ";"
6:2   - 6:57            expression_statement
6:2   - 6:56              member_access
6:2   - 6:7                 identifier
6:2   - 6:5                   `print`
6:7   - 6:56                selector
6:7   - 6:56                  argument_part
6:7   - 6:56                    arguments
6:7   - 6:8                       "("
6:8   - 6:55                      argument
6:8   - 6:55                        string_literal
6:8   - 6:9                           """
6:52  - 6:54                          template_substitution
6:52  - 6:53                            "$"
6:53  - 6:54                            identifier_dollar_escaped
6:53  - 6:1                               `i`
6:54  - 6:55                          """
6:55  - 6:56                      ")"
6:56  - 6:57              ";"
7:2   - 7:38            expression_statement
7:2   - 7:37              member_access
7:2   - 7:7                 identifier
7:2   - 7:5                   `print`
7:7   - 7:37                selector
7:7   - 7:37                  argument_part
7:7   - 7:37                    arguments
7:7   - 7:8                       "("
7:8   - 7:36                      argument
7:8   - 7:36                        member_access
7:8   - 7:9                           identifier
7:8   - 7:1                             `f`
7:9   - 7:36                          selector
7:9   - 7:36                            argument_part
7:9   - 7:36                              arguments
7:9   - 7:10                                "("
7:10  - 7:35                                argument
7:10  - 7:35                                  string_literal
7:10  - 7:11                                    """
7:34  - 7:35                                    """
7:35  - 7:36                                ")"
7:36  - 7:37                      ")"
7:37  - 7:38              ";"
8:0   - 8:1             "}"
10:0  - 16:1      lambda_expression
10:0  - 10:18       parameters: function_signature
10:0  - 10:6          type_identifier
10:0  - 10:6            `String`
10:7  - 10:8          name: identifier
10:7  - 10:1            `f`
10:8  - 10:18         formal_parameter_list
10:8  - 10:9            "("
10:9  - 10:17           formal_parameter
10:9  - 10:15             type_identifier
10:9  - 10:6                `String`
10:16 - 10:17             name: identifier
10:16 - 10:1                `a`
10:17 - 10:18           ")"
10:19 - 16:1        body: function_body
10:19 - 16:1          block
10:19 - 10:20           "{"
11:2  - 12:33           local_variable_declaration
11:2  - 12:32             initialized_variable_definition
11:2  - 11:7                final_builtin
11:2  - 11:5                  `final`
11:8  - 11:9                name: identifier
11:8  - 11:1                  `s`
11:10 - 11:11               "="
11:12 - 12:32               value: string_literal
11:12 - 11:15                 """""
12:29 - 12:32                 """""
12:32 - 12:33             ";"
13:2  - 14:47           local_variable_declaration
13:2  - 14:46             initialized_variable_definition
13:2  - 13:7                final_builtin
13:2  - 13:5                  `final`
13:8  - 13:9                name: identifier
13:8  - 13:1                  `r`
13:10 - 13:11               "="
13:12 - 14:46               value: string_literal
13:12 - 13:15                 """""
14:41 - 14:43                 template_substitution
14:41 - 14:42                   "$"
14:42 - 14:43                   identifier_dollar_escaped
14:42 - 14:1                      `a`
14:43 - 14:46                 """""
14:46 - 14:47             ";"
15:2  - 15:18           return_statement
15:2  - 15:8              "return"
15:9  - 15:17             string_literal
15:9  - 15:10               """
15:10 - 15:12               template_substitution
15:10 - 15:11                 "$"
15:11 - 15:12                 identifier_dollar_escaped
15:11 - 15:1                    `s`
15:12 - 15:14               escape_sequence
15:12 - 15:2                  `\\n`
15:14 - 15:16               template_substitution
15:14 - 15:15                 "$"
15:15 - 15:16                 identifier_dollar_escaped
15:15 - 15:1                    `r`
15:16 - 15:17               """
15:17 - 15:18             ";"
16:0  - 16:1            "}"

External language support CST
0:0   - 17:0    program
0:0   - 0:5       final_builtin
0:0   - 0:5         "final"
0:6   - 0:28      static_final_declaration_list
0:6   - 0:28        static_final_declaration
0:6   - 0:7           identifier
0:6   - 0:1             `s`
0:8   - 0:9           "="
0:10  - 0:28          string_literal
0:10  - 0:11            """
0:27  - 0:28            """
0:28  - 0:29      ";"
2:0   - 2:11      function_signature
2:0   - 2:4         void_type
2:0   - 2:4           `void`
2:5   - 2:9         name: identifier
2:5   - 2:4           `main`
2:9   - 2:11        formal_parameter_list
2:9   - 2:10          "("
2:10  - 2:11          ")"
2:12  - 8:1       function_body
2:12  - 8:1         block
2:12  - 2:13          "{"
3:2   - 3:56          documentation_comment
3:2   - 3:5             "///"
4:2   - 4:18          local_variable_declaration
4:2   - 4:17            initialized_variable_definition
4:2   - 4:7               final_builtin
4:2   - 4:7                 "final"
4:8   - 4:9               name: identifier
4:8   - 4:1                 `i`
4:10  - 4:11              "="
4:12  - 4:17              value: additive_expression
4:12  - 4:13                decimal_integer_literal
4:12  - 4:1                   `1`
4:14  - 4:15                additive_operator
4:14  - 4:1                   `+`
4:16  - 4:17                decimal_integer_literal
4:16  - 4:1                   `2`
4:17  - 4:18            ";"
5:2   - 5:11          expression_statement
5:2   - 5:7             identifier
5:2   - 5:5               `print`
5:7   - 5:10            selector
5:7   - 5:10              argument_part
5:7   - 5:10                arguments
5:7   - 5:8                   "("
5:8   - 5:9                   argument
5:8   - 5:9                     identifier
5:8   - 5:1                       `i`
5:9   - 5:10                  ")"
5:10  - 5:11            ";"
6:2   - 6:57          expression_statement
6:2   - 6:7             identifier
6:2   - 6:5               `print`
6:7   - 6:56            selector
6:7   - 6:56              argument_part
6:7   - 6:56                arguments
6:7   - 6:8                   "("
6:8   - 6:55                  argument
6:8   - 6:55                    string_literal
6:8   - 6:9                       """
6:52  - 6:54                      template_substitution
6:52  - 6:53                        "$"
6:53  - 6:54                        identifier_dollar_escaped
6:53  - 6:1                           `i`
6:54  - 6:55                      """
6:55  - 6:56                  ")"
6:56  - 6:57            ";"
7:2   - 7:38          expression_statement
7:2   - 7:7             identifier
7:2   - 7:5               `print`
7:7   - 7:37            selector
7:7   - 7:37              argument_part
7:7   - 7:37                arguments
7:7   - 7:8                   "("
7:8   - 7:36                  argument
7:8   - 7:9                     identifier
7:8   - 7:1                       `f`
7:9   - 7:36                    selector
7:9   - 7:36                      argument_part
7:9   - 7:36                        arguments
7:9   - 7:10                          "("
7:10  - 7:35                          argument
7:10  - 7:35                            string_literal
7:10  - 7:11                              """
7:34  - 7:35                              """
7:35  - 7:36                          ")"
7:36  - 7:37                  ")"
7:37  - 7:38            ";"
8:0   - 8:1           "}"
10:0  - 10:18     function_signature
10:0  - 10:6        type_identifier
10:0  - 10:6          `String`
10:7  - 10:8        name: identifier
10:7  - 10:1          `f`
10:8  - 10:18       formal_parameter_list
10:8  - 10:9          "("
10:9  - 10:17         formal_parameter
10:9  - 10:15           type_identifier
10:9  - 10:6              `String`
10:16 - 10:17           name: identifier
10:16 - 10:1              `a`
10:17 - 10:18         ")"
10:19 - 16:1      function_body
10:19 - 16:1        block
10:19 - 10:20         "{"
11:2  - 12:33         local_variable_declaration
11:2  - 12:32           initialized_variable_definition
11:2  - 11:7              final_builtin
11:2  - 11:7                "final"
11:8  - 11:9              name: identifier
11:8  - 11:1                `s`
11:10 - 11:11             "="
11:12 - 12:32             value: string_literal
11:12 - 11:15               """""
12:29 - 12:32               """""
12:32 - 12:33           ";"
13:2  - 14:47         local_variable_declaration
13:2  - 14:46           initialized_variable_definition
13:2  - 13:7              final_builtin
13:2  - 13:7                "final"
13:8  - 13:9              name: identifier
13:8  - 13:1                `r`
13:10 - 13:11             "="
13:12 - 14:46             value: string_literal
13:12 - 13:15               """""
14:41 - 14:43               template_substitution
14:41 - 14:42                 "$"
14:42 - 14:43                 identifier_dollar_escaped
14:42 - 14:1                    `a`
14:43 - 14:46               """""
14:46 - 14:47           ";"
15:2  - 15:18         return_statement
15:2  - 15:8            "return"
15:9  - 15:17           string_literal
15:9  - 15:10             """
15:10 - 15:12             template_substitution
15:10 - 15:11               "$"
15:11 - 15:12               identifier_dollar_escaped
15:11 - 15:1                  `s`
15:12 - 15:14             escape_sequence
15:12 - 15:2                `\\n`
15:14 - 15:16             template_substitution
15:14 - 15:15               "$"
15:15 - 15:16               identifier_dollar_escaped
15:15 - 15:1                  `r`
15:16 - 15:17             """
15:17 - 15:18           ";"
16:0  - 16:1          "}"

@MicheleQuasar I am suspecting if it is caused by the conflicting name of "dart". Can you rename the language name to something else? Also the file extension name should be changed

That's at least part of the problem, I changed the language name from dart to drt and now I'm seeing different results with the two different parsers.
Another part of the problems seems to be that the official tree-sitter-dart parser is quite bad at parsing incomplete code snippets like the ones used in an ast-grep pattern.
I tried with addition and function application and it seems that if I don't supply a complete dart expression the parser just returns garbage output.
Addition
Incomplete expression
Parsed file:
a + b

parse result

Complete expression
Parsed file:
final c = a + b;

parse result

Function application
Incomplete expression
Parsed file
f(a)

parse result

Complete expression
Parsed file
final b = f(a);

parse result

Pattern debug
In addition to the problems above with parsing incomplete expression, it appears also that ast-grep fails to correctly build the pattern from the parsed expression
Addition

Function application

Built-in parser
None of these problems appear with the builtin parser.
Partial expression parsing
Addition
Parsed file
a + b

parse result

Function application
Parsed file
f(a)

parse result

Patterns
See any of the examples in my previous comments.
Next steps
Not completely sure where to go from here.
It seems clear to me that at least part of the problem is due to tree-sitter-dart being unable to parse partial code fragments.
On the other hand, even when using patterns that can be correctly parsed these are not converted correctly to a pattern by ast-grep. So it seems there could be some issue there as well?
I'm afraid my lack of experience with both tree-sitter and rust  prevents me from having any more meaningful insight.


Error while querying jsob column from postgres

While querying jsonb columns from a postgres database, I get an exception.
Expected results
The json value stored in the column
Actual results
I get the below exception:
postgresql error: name 'isinstance' is not defined
Screenshots
If applicable, add screenshots to help explain your problem.

How to reproduce the bug

Connect to a postgres database
select a jsonb column from a table
Scroll down to results
See error postgresql error: name 'isinstance' is not defined

Environment
(please complete the following information):
Superset 0.35.2
Python 3.6.9
No node or npm
Checklist
Make sure these boxes are checked before submitting your issue - thank you!

[x ] I have checked the superset logs for python stacktraces and included it here as text if there are any.
[x ] I have reproduced the issue with at least the latest released version of superset.
[x ] I have checked the issue tracker for the same issue and I haven't found one similar.

Additional context
Logs:
ERROR:root:Query 199: name 'isinstance' is not defined
Traceback (most recent call last):
File "/home/superset/.virtualenvs/superset/lib/python3.6/site-packages/superset/sql_lab.py", line 236, in execute_sql_statement
data = db_engine_spec.fetch_data(cursor, query.limit)
File "/home/superset/.virtualenvs/superset/lib/python3.6/site-packages/superset/db_engine_specs/postgres.py", line 52, in fetch_data
return cursor.fetchall()
File "/home/superset/.virtualenvs/superset/lib/python3.6/site-packages/psycopg2/_json.py", line 167, in typecast_json
return loads(s)
File "/usr/lib/python3.6/json/init.py", line 341, in loads
if isinstance(s, str):
NameError: name 'isinstance' is not defined

Any updates on this?


fix(curriculum): clarify instructions for cafe menu step 41

Checklist:

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the main branch of freeCodeCamp.
[x] I have tested these changes either locally on my machine, or GitPod.

Closes #XXXXX

I've been seeing confusion on this step for a while now. I think it is similar to cat photo app step 6 in that they are not expecting the solution to be as easy as just moving an element up a line and thus are trying to make it more complicated than it really is. Spelling it out in the instructions should hopefully alleviate any misunderstandings.

Hey Bruce,
I am not sure about this change, the reason is that the 'price' and 'flavor' class are now translatable. Also saying that the user needs to use the backspace key seems a bit excessive to me.

Instead, use the back space key on your keyboard to move the price p element so that it is on the same line as the flavor p element.

I will make the following suggestion:

Instead, move the p element with the class price next to the p element with the class flavor so that they are displayed on the same line.

I was just using the wording that the current step uses. It uses "move the price p element". But changing that to "move the p element with the class price" is fine with me.

Also saying that the user needs to use the backspace key seems a bit excessive to me.

Agreed, but that's the intent. I wouldn't think we would need to spell it out like this, but from the posts I've seen in the forums, I think we do. We did the same thing for cat photo app step 6. This step is so simple that I think people make it harder than it is because they don't believe that the solution is that easy. So spelling it out for them is just a way to clarify that it is indeed that easy.

"...so that they are displayed on the same line."

I think this has the potential to be confusing. They are displayed on the same line in the preview window. I think this phrase leaves ambiguity between whether we mean the editor or the preview window. Perhaps something like:

Instead, use the back space key on your keyboard to move the p element with the class price next to the p element with the class flavor so that they are on the same line in the editor.

Instead, use the back space key on your keyboard to move the p element with the class price next to the p element with the class flavor so that they are on the same line in the editor.

This sounds good to me.

Thank you for taking this on Bruce, hopefully the learners will now understand the full context of this challenge.

@moT01 Agreed, kind of goofy, and you would probably never use this approach, but rather flexbox. But I understand that flexbox isn't introduced until a later course and so they couldn't use it here.


Fix apidocs

sphinx-apidoc is generating an empty docs for abcdmicro.run, even though it has gen_masks() click entrypoint with a docstring. I guess somehow the click decorators clobber the docstring and it won't work. I figure this is probably a good place to put documentation about the entrypoint CLIs themselves but I'm not yet sure how to do this.
I also looked into filtering out abcdmicro.run from the apidocs entirely. The easiest way to do this is to rename it to _run to mark it private, but then the wrapper script in SlicerBrainMicrostructure is accessing a private member. You can also explicitly list it in the arguments to sphinx-apidoc in .readthedocs.yml... this might be our best option if we want to do it.
Closes #24.

https://github.com/click-contrib/sphinx-click works well, although it isn't picked up by sphinx autodoc. It seems sufficient to list the appropriate sphinx-click directive in the run module docstring. See 0dcccc371c15e176d6615acc9c9a934589a8203d.

And CLI help text doesn't include the :func: cross reference.
Usage: gen_masks [OPTIONS]

  Recursively find and process dwi images and create hd_bet masks for each.
  Preserves directory structure in output.

  Searches for input files: ``<ID>_dwi.nii.gz``, ``<ID>.bval``, ``<ID>.bvec``

  Produces output files: ``<ID>_b0.nii.gz``, ``<ID>_mask.nii.gz``

Options:
  -i, --inputs PATH   Root directory to search for inputs.  [required]
  -o, --outputs PATH  Root directory to write outputs.  [required]
  --overwrite         Recompute and overwrite existing output files.
  -j, --parallel      Compute intermediate ``<ID>_b0.nii.gz`` files in
                      parallel. Note that HD_BET does *not* compute in
                      parallel.
  --help              Show this message and exit.

Closes #24

yay!


Do you guys accept Donations?

Haven't found any info on that, so.. do you guys accept Donations, if so.. where?
I'd gladly send a few bucks if that helps, I'm sure others too.

Hey! No we don't accept donations of any kind; if you want to support us, all we ask is that you enjoy our mod, report bugs if you ever find them (as it helps us make it even better!). We do however have a referral code with Akliz server hosting, so if you really want to toss a bit of coin towards us and have yourself an ace server!

Aww, that's alright thanks for the heads up and for all your hard work :)
also, sadly I already have a server 😅 but for If others find this issue thats good to know.
EnderIO has always been one of my all time fav mods!


Strips leading/trailing whitespace before parsing xml

Description: When llms output leading or trailing whitespace for xml (when using XMLOutputParser) the parser would raise a ValueError: Could not parse output: .... However, leading or trailing whitespace are "ignorable" in the sense of XML standard.
Issue: I did not find an issue related.
Dependencies: None
Tag maintainer:
Twitter handle: donatoaz
Please make sure your PR is passing linting and testing before submitting. Run make format, make lint and make test to check this locally.
Done, updated unit test and ran make docker_test.

thanks @donatoaz!


Merge Two Binary Trees

File(s) Modified: 617-Merge-Two-Binary-Trees.js.
Language(s) Used: javascript
Submission URL(https://leetcode.com/submissions/detail/845332722/)

Thanks for contributing, @nutandevjoshi!


Asks to overwrite when setting episode status

Thank you for contributing to ShowsRage. Please fill in the form corresponding to your request ("Bug report" or "Feature request"). The other sections can safely be removed.
Bug report

ShowsRage version: 1.4.1
Android version: 5.1, 6.0
Device: Samsung Nexus 10, LG G3

Issue description
When setting the status of an episode to skipped, user is prompted if the want to replace the episode if has already been downloaded
Expected result
When skipped pressed no prompt
Steps to reproduce

Tap three vertical dots next to an episode of a show
Select set status
Select skipped

On my side, I am asked what to do for every status.
From where are you trying to set the episode status? The schedule, the list of episodes in a season or the detail of an episode?

the list of episodes in a season

I just noticed that I misunderstood your request.
Why do you want to remove the confirmation when choosing "Skipped"?

I'm closing this as I don't have any information on the request.
Don't hesitate to comment or create a new issue if needed.


CLI should display the command to retrieve the kbot password on cluster creation

What is your feature idea?
Since we don't provide the kbot password with a CLI installation like we do in the UI, we should display the command to retrieve it easily in the Quick start section shown by the CLI after successful creation.
Why is it needed?
Since it's critical for using their new cluster, that some folks don't the documentation, we should make their life easier.
Is this missing feature preventing you from using kubefirst?

[ ] Yes

Code of Conduct

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

@fharper Will you check that this is the command that you mean?
kubefirst civo root-credentials
it's just it was already in the designs.
https://www.figma.com/file/RwyiC20SExFSnyUFSXGbsS/CLI?type=design&node-id=614-8&mode=design&t=WKYcEji1jL4dATtP-4

Oh, you're right, it can be displayed with this command for the CLI installations, but there is nothing like in the UI that explain or tell you that you need to log with the kbot user only in kubefirst.
I would expect I could use the root token from Vault, but it let you connect to Vault, not be used for the SSO log in into kubefirst.
I think we could make the messaging clearer, WDYT?


Add missing verbose opt for evaluate_generator

evaluate_generator misses verbose support while evaluate doesn't.
Used for partial enhancement for fit/evaluate/predict API upgrade.
Signed-off-by: CUI Wei<EMAIL_ADDRESS>

Please add a quick unit test.

OK, I'll do it within one day.

Reopening this PR to trigger rebuilding for commits, with one more test case added.

Keras 2.1.6 changelog indicates "In Model.evaluate_generator, add verbose argument." However, I don't see the API change in that version.

In 2.1.6, Model.evaluate_generator supports verbose but Sequential is not up to date due to a different wrapper.
This is already solved by Keras > 2.1.6 by the refactor of source codes to make methods of Sequential keep up-to-date with Model.

This is needed for 2.1.6 but I don't have the access to PR on an old release.
https://github.com/keras-team/keras/compare/2.1.6...ghostplant:seq_verbose


raftstore-v2: update region state in apply_snapshot

What is changed and how it works?

Issue Number: Close #xxx
What's Changed:

update region state in apply_snapshot

Check List
Tests

Unit test
Integration test

Release note
None

/cc @BusyJay @tabokie PTAL

/merge


Fix unavailable link in document

Correct link for workspace example

Changes

Submitter Checklist
These are the criteria that every PR should meet, please check them off as you
review them:

[ ] Includes tests (if functionality changed/added)
[ ] Includes docs (if user facing)
[ ] Commit messages follow commit message best practices

See the contribution guide for more details.
Double check this list of stuff that's easy to miss:

If you are adding a new binary/image to the cmd dir, please update
the release Task to build and release this image.

Reviewer Notes
If API changes are included, additive changes must be approved by at least two OWNERS and backwards incompatible changes must be approved by more than 50% of the OWNERS, and they must first be added in a backwards compatible way.
Release Notes
Describe any user facing changes here, or delete this block.

Examples of user facing changes:
- API changes
- Bug fixes
- Any changes in behavior

/test pull-tekton-pipeline-build-tests

/test pull-tekton-pipeline-build-tests

/lgtm


Icon displacement on mobile

Hey dear dev, not sure if it's a bug or not but after the most recent update the position of the icon on my phone (iPhone pro 12) seems to be a bit off.

Before the update it was like this

But meanwhile I really did update lots of plugins and themes today so I'm not one hundred percent sure it's a banners related problem. Could you check this out if it's not too much trouble?

Hmm, I'll give it a look since I didn't fully test the icons on mobile with this release. If it's a positioning issue, I'll see if I can adjust how it's placed for future releases

The icon position should be better positioned now, both on mobile and on desktop; as well as it having some customization to where you wanna place it. Update to the 1.2.2 release and verify it's all good. Feel free to reopen if there are any more issues regarding this~

Bless you! I have tried out the new function and it works really well!
Sent with a Sparkhttps://sparkmailapp.com/source?from=signature


Show ahead/behind indicator while git syncing

This implements https://github.com/Microsoft/vscode/issues/25936

@letmaik,
Thanks for your contribution as a Microsoft full-time employee or intern. You do not need to sign a CLA.
Thanks,
Microsoft Pull Request Bot


ci: Fix PR title for pre-commit autoupdate PRs

Changes
Fixes PR title (by fixing the initial commit message)
How did you test this code?
n/a - needs testing after merge and the pre-commit workflow next runs.

Since this is a trivial config PR that doesn't need the E2E tests to pass, I'm going to go ahead and merge without retrying the (currently consistently failing) E2E tests.


Pyspark delta table size calculation

Hi, I'm trying to calculate size of delta table using pyspark. The only way i found that I can convert pyspark dataframe to pandas and then pyarrow table which is an inefficient method because it increase the size of the table. can you please suggest how I can calculate size of the pyspark delta table.
**Pyspark dataframe deltatable size calculation.
df = spark.read.format("delta").load(table_url)
how i can calculate size of the df without converting to pandas or pyarrow
**
Related Issue(s)

By size do you mean:

Records
Size on disk

The first is simply df.count(), but in an unoptimized table that might take a long while. The second one is storage subsystem dependent and would not be easy to do via a spark.read.


fix(GlobalHeader): fix mobile menu for screen sizes btwn 1024-1200px

Overview

match overlay display media query to mobile header media query
fix issue where app header dropdown wasn't always displaying (i.e. had a height of 0) by updating the layout hook dependencies to include isOpen. When isOpen is true that means animation complete + height is no longer 0

Testing
Visit production story book:
https://gamut.codecademy.com/?path=/story/organisms-globalheader--free-user-pro-upgrade
open "canvas" view
select "MD" screen size
click on hamburger menu button
see that the header disappears
Now run my branch locally
Visit http://localhost:6006/?path=/story/organisms-globalheader--free-user-pro-upgrade
open "canvas" view
select "MD" screen size
click on hamburger menu button
see that the header does not disappear
screen size selection is done with the squares icon:

PR Checklist

[ ] Related to designs:
[ ] Related to JIRA ticket: ABC-123
[ ] I have run this code to verify it works
[ ] This PR includes unit tests for the code change

📬Published Alpha Packages:@codecademy/gamut-kit@0.6.61-alpha.988d9e.0@codecademy/gamut-labs@29.3.2-alpha.988d9e.0<EMAIL_ADDRESS>
🚀 Styleguide deploy preview ready!https://6202f17e41228c0b6184f777--gamut-preview.netlify.appDeploy Logs

📬Published Alpha Packages:@codecademy/gamut-kit@0.6.61-alpha.68a080.0@codecademy/gamut-labs@29.3.2-alpha.68a080.0<EMAIL_ADDRESS>
🚀 Styleguide deploy preview ready!https://6202f8c9a7e33200bc7a6bc8--gamut-preview.netlify.appDeploy Logs

📬Published Alpha Packages:@codecademy/gamut-kit@0.6.61-alpha.ddd461.0@codecademy/gamut-labs@29.3.2-alpha.ddd461.0<EMAIL_ADDRESS>
🚀 Styleguide deploy preview ready!https://62030051d2b82c0b4a6fb5ab--gamut-preview.netlify.appDeploy Logs

📬Published Alpha Packages:@codecademy/gamut-kit@0.6.61-alpha.e862d6.0@codecademy/gamut-labs@29.3.2-alpha.e862d6.0<EMAIL_ADDRESS>
🚀 Styleguide deploy preview ready!https://620413a9709dae0dfa26817c--gamut-preview.netlify.appDeploy Logs

📬Published Alpha Packages:@codecademy/gamut-kit@0.6.61-alpha.81b0af.0@codecademy/gamut-labs@29.3.2-alpha.81b0af.0<EMAIL_ADDRESS>
🚀 Styleguide deploy preview ready!https://620436764aaa17378cbe14c7--gamut-preview.netlify.appDeploy Logs


compile error: 'ARRAYSIZE' was not declared in this scope

Please describe your issue as accurately as possible. If you run into a problem with a binary release, make sure to test with latest master as well.
Important: When reporting an issue with a specific game or application, such as crashes or rendering issues, please include log files and a D3D11 Apitrace (see https://github.com/apitrace/apitrace) so that the issue can be reproduced. In order to create a trace, run wine apitrace.exe trace -a dxgi YOURGAME.exe. DO NOT use DXVK together with apitrace!
Software information
Name of the game, settings used etc.
System information

GPU:
Driver:
Wine version:
DXVK version:

Apitrace file(s)

Put a link here

Log files

d3d11.log:
dxgi.log:

D9VK has a fatal error during compilation. I think this is the relevant code:
FAILED: src/d3d9/ecc23b3<EMAIL_ADDRESS>wineg++ -Isrc/d3d9/ecc23b3@@d3d9.dll@sha -Isrc/d3d9 -I../../d9vk/src/d3d9 -I../../d9vk/./include -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wnon-virtual-dtor -std=c++1z -O3 -DNOMINMAX -m64 --no-gnu-unique -fvisibility=hidden -fvisibility-inlines-hidden -fPIC -MD -MQ 'src/d3d9/ecc23b3<EMAIL_ADDRESS>-MF 'src/d3d9/ecc23b3<EMAIL_ADDRESS>-o 'src/d3d9/ecc23b3<EMAIL_ADDRESS>-c ../../d9vk/src/d3d9/d3d9_adapter.cpp ../../d9vk/src/d3d9/d3d9_adapter.cpp: In member function ‘HRESULT dxvk::D3D9Adapter::GetAdapterIdentifier(DWORD, D3DADAPTER_IDENTIFIER9*)’: ../../d9vk/src/d3d9/d3d9_adapter.cpp:58:63: error: ‘ARRAYSIZE’ was not declared in this scope    58 |     std::strncpy(pIdentifier->Description, props.deviceName,  ARRAYSIZE(pIdentifier->Description));       |                                                               ^~~~~~~~~ winegcc: g++ failed
The output looks a little better in the terminal, unfortunately when it's pasted here it doesn't look that great. Thanks!

What is it with Wine headers and being somehow worse than the MinGW ones...
Thanks for the heads up.

You're welcome. Compile errors seem to be pretty rare for d9vk on my end, so I just wanted to let you know.

I forgot to mention that there was a warning and a note a little earlier. Maybe it's related?
[130/154] wineg++ -Isrc/d3d9/ecc23b3@@d3d9.dll@sha -Isrc/d3d9 -I../../d9vk/src/d3d9 -I../../d9vk/./include -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wnon-virtual-dtor -std=c++1z -O3 -DNOMINMAX -m64 --no-gnu-unique -fvisibility=hidden -fvisibility-inlines-hidden -fPIC -MD -MQ 'src/d3d9/ecc23b3<EMAIL_ADDRESS>-MF 'src/d3d9/ecc23b3<EMAIL_ADDRESS>-o 'src/d3d9/ecc23b3<EMAIL_ADDRESS>-c ../../d9vk/src/d3d9/d3d9_main.cpp In file included from ../../d9vk/src/d3d9/d3d9_adapter.h:3,                  from ../../d9vk/src/d3d9/d3d9_interface.h:3,                  from ../../d9vk/src/d3d9/d3d9_main.cpp:5: ../../d9vk/src/d3d9/d3d9_include.h:15: warning: "DLLEXPORT" redefined    15 | #define DLLEXPORT       |  In file included from ../../d9vk/src/d3d9/d3d9_main.cpp:1: ../../d9vk/src/d3d9/../dxgi/dxgi_include.h:5: note: this is the location of the previous definition     5 |   #define DLLEXPORT __attribute__((visibility("default")))       |

For now can you just use MinGW builds

OK, sounds good.

Should be fixed by
https://github.com/Joshua-Ashton/d9vk/commit/0fd8fa066ea7202376ccd14b423bc95242af89d5

All right, looks like it builds OK. Thanks again.
Closing #217.

https://github.com/Joshua-Ashton/d9vk/search?q=countof&type=Commits
@Joshua-Ashton could you share why not std::size?


Race condition with client.triggerRegistrationUpdate()

I suspect we could face race condition when using client.triggerRegistrationUpdate() during a register or update task is executed.
We need to check this.

I don't think so. Actually, Since void scheduleUpdate(...) doesn't verify updateFuture status and there is no
if (updateFuture == null || updateFuture.isDone() || updateFuture.isCancelled()) {
...
}

before scheduling new Task, it won't cause the same problem as in #701 .

I don't think this is the same problem than #701. (but I was maybe confusing as I referenced this issue in #701)
I rather suspect that :
if a triggerRegistrationUpdate is called while a RegisterTask executes code between registeredServers.put and  scheduleUpdate (in register method), we could start 2 parallel update tasks. This is not an expected behavior.
registeredServers.put(registrationID, server);
LOG.info("Registered with location '{}'.", registrationID);

// Update every lifetime period
long delay = calculateNextUpdate(dmInfo.lifetime);
scheduleUpdate(server, registrationID, delay);