Injected grammars don't always properly relinquish control once completed.

We've been developing ASP.NET Core Razor's TextMate grammar and have recently ran into an issue that seems to be a root issue with the VSCode TextMate parser (doesn't repro in Visual Studio's TextMate parser). It seems to be that injections don't always properly relinquish control to the previous grammar once completed.
Repro:

Install the C# extension 1.21.13. It should release 2/2/2020; however if it's not yet available you can download the pre-release here: https://github.com/OmniSharp/omnisharp-vscode/releases/tag/v1.21.13
Open VSCode and create a Razor file myfile.razor
Add the following content to myfile.razor:

@functions {
    interface Bar { }
    class Baz : Bar
    {
    }
}

Notice the class Baz miscolored:

In other textmate parsers this works as expected, Visual Studio's:

My preliminary investigation
This is being classified through Razor's TextMate grammar (json, yml) and removing this injection ends up resolving the problem. From what I've found it looks like after the interface Bar { } the injection does not relinquish control to the parent rule that was running.

@NTaylorMullen

Can you please reduce the repro to something smaller? Giving the entire C# + Razor grammar as a repro is very difficult to track down, especially if I am not familiar with what's going on or what the intent of those regular expressions is.
Once you have a smaller repro, does it reproduce in TextMate itself? How about SublimeText or Atom? It is equally possible that you are running in a bug in Visual Studio's TextMate parser, especially if this grammar was developed only against Visual Studio.

Last time I investigated something similar, https://github.com/microsoft/vscode/issues/87496, I spent 1 hour and in the end there was no change needed to vscode or vscode-textmate, so before I go ahead and invest 1-2hrs to understand what is going on, can you please invest a bit of time to try to reduce the surface area that I need to debug?
Thank you! :heart:

Can you please reduce the repro to something smaller? Giving the entire C# + Razor grammar as a repro is very difficult to track down, especially if I am not familiar with what's going on or what the intent of those regular expressions is.

Sure, I was able to simplify the Razor + C# grammars (put them into a single grammar) to only include the pieces for this repro:

Simplified Repro Grammar (Razor + C#)
{
  "name": "ASP.NET Razor",
  "scopeName": "text.aspnetcorerazor",
  "patterns": [
    {
      "include": "#code-directive"
    }
  ],
  "repository": {
    "code-directive": {
      "begin": "(@)(code)\\s*",
      "beginCaptures": {
        "1": {
          "name": "keyword.control.cshtml.transition"
        },
        "2": {
          "name": "keyword.control.razor.directive.code"
        }
      },
      "patterns": [
        {
          "include": "#directive-codeblock"
        }
      ],
      "end": "(?<=})|\\s"
    },
    "directive-codeblock": {
      "begin": "(\\{)",
      "beginCaptures": {
        "1": {
          "name": "keyword.control.razor.directive.codeblock.open"
        }
      },
      "name": "meta.structure.razor.directive.codeblock",
      "patterns": [
        {
          "include": "#source-cs-light"
        }
      ],
      "end": "(\\})",
      "endCaptures": {
        "1": {
          "name": "keyword.control.razor.directive.codeblock.close"
        }
      }
    },
    "source-cs-light": {
      "patterns": [
        {
          "include": "#storage-modifier"
        },
        {
          "include": "#interface-declaration"
        },
        {
          "include": "#class-declaration"
        }
      ]
    },
    "interface-declaration": {
      "begin": "(?=\\binterface\\b)",
      "end": "(?<=\\})",
      "patterns": [
        {
          "begin": "(?x)\n(interface)\\b\\s+\n(@?[_[:alpha:]][_[:alnum:]]*)",
          "beginCaptures": {
            "1": {
              "name": "keyword.other.interface.cs"
            },
            "2": {
              "name": "entity.name.type.interface.cs"
            }
          },
          "end": "(?=\\{)"
        },
        {
          "begin": "\\{",
          "beginCaptures": {
            "0": {
              "name": "punctuation.curlybrace.open.cs"
            }
          },
          "end": "\\}",
          "endCaptures": {
            "0": {
              "name": "punctuation.curlybrace.close.cs"
            }
          }
        }
      ]
    },
    "class-declaration": {
      "begin": "(?=\\bclass\\b)",
      "end": "(?<=\\})",
      "patterns": [
        {
          "begin": "(?x)\n\\b(class)\\b\\s+\n(@?[_[:alpha:]][_[:alnum:]]*)\\s*",
          "beginCaptures": {
            "1": {
              "name": "keyword.other.class.cs"
            },
            "2": {
              "name": "entity.name.type.class.cs"
            }
          },
          "end": "(?=\\{)"
        },
        {
          "begin": "\\{",
          "beginCaptures": {
            "0": {
              "name": "punctuation.curlybrace.open.cs"
            }
          },
          "end": "\\}",
          "endCaptures": {
            "0": {
              "name": "punctuation.curlybrace.close.cs"
            }
          }
        }
      ]
    },
    "storage-modifier": {
      "name": "storage.modifier.cs",
      "match": "(?<!\\.)\\b(new|public|protected|internal|private|abstract|virtual|override|sealed|static|partial|readonly|volatile|const|extern|async|unsafe|ref)\\b"
    }
  }
}

2. Once you have a smaller repro, does it reproduce in TextMate itself? How about SublimeText or Atom? It is equally possible that you are running in a bug in Visual Studio's TextMate parser, especially if this grammar was developed only against Visual Studio.

Is there an easy way to test TextMate/SublimeText/Atom? I'm unfamiliar with getting TextMate pieces to run in those editors sadly. Also, to note I was developing the grammar for VSCode first and found this issue as part of that. I just happened to try it in VS and saw that it worked after the fact.

Oh and commenting out the injection makes everything work perfectly 😄 .

@NTaylorMullen
Thank you for the reduced repro. But when I try the reduced grammar you have provided, class does get the scope keyword.other.class.cs:

test.txt:

@code {
    interface Bar { }
    class Baz : Bar
    {
    }
}

I have executed npm run inspect -- grammar.json test.txt. This is a tool that shows exactly what is going:
...
===========================================
TOKENIZING LINE 3: |    class Baz : Bar|

@@scanNext 0: |    class Baz : Bar\n|
matched rule id: 17 from 4 to 4
  token: |    |
      * text.aspnetcorerazor
      * meta.structure.razor.directive.codeblock
  pushing BeginEndRule#17 @ grammar.json:92 - (?=\bclass\b)

@@scanNext 4: |class Baz : Bar\n|
matched rule id: 18 from 4 to 14
  pushing BeginEndRule#18 @ grammar.json:96 - (?x)
\b(class)\b\s+
(@?[_[:alpha:]][_[:alnum:]]*)\s*
  token: |class|
      * text.aspnetcorerazor
      * meta.structure.razor.directive.codeblock
      * keyword.other.class.cs
  token: | |
      * text.aspnetcorerazor
      * meta.structure.razor.directive.codeblock
  token: |Baz|
      * text.aspnetcorerazor
      * meta.structure.razor.directive.codeblock
      * entity.name.type.class.cs
  token: | |
      * text.aspnetcorerazor
      * meta.structure.razor.directive.codeblock

@@scanNext 14: |: Bar\n|
  no more matches.
  token: |: Bar\n|
      * text.aspnetcorerazor
      * meta.structure.razor.directive.codeblock

@@LINE END RULE STACK CONTAINS 5 RULES:
  * IncludeOnlyRule#1 @ grammar.json:1  -- [1,3] "text.aspnetcorerazor", "text.aspnetcorerazor"
  * BeginEndRule#2 @ grammar.json:10  -- [2,2] "text.aspnetcorerazor", "text.aspnetcorerazor"
  * BeginEndRule#5 @ grammar.json:27  -- [5,1] "text.aspnetcorerazor,meta.structure.razor.directive.codeblock", "text.aspnetcorerazor,meta.structure.razor.directive.codeblock"
  * BeginEndRule#17 @ grammar.json:92  -- [17,5] "text.aspnetcorerazor,meta.structure.razor.directive.codeblock", "text.aspnetcorerazor,meta.structure.razor.directive.codeblock"
  * BeginEndRule#18 @ grammar.json:96  -- [18,4] "text.aspnetcorerazor,meta.structure.razor.directive.codeblock", "text.aspnetcorerazor,meta.structure.razor.directive.codeblock"

...

@alexdima my apologies.  It looks like I pasted the grammar with the injection already deleted. I just added back the injection here and it repros:

Simplified Repro Grammar (Razor + C#)
{
  "name": "ASP.NET Razor",
  "scopeName": "text.aspnetcorerazor",
  "patterns": [
    {
      "include": "#code-directive"
    }
  ],
  "injections": {
    "L:meta.structure.razor.codeblock - (meta.statement | string.quoted | comment), L:meta.structure.razor.directive.codeblock - (meta.statement | string.quoted | comment)": {
      "patterns": [
        {
          "begin": "(\\{)",
          "beginCaptures": {
            "1": {
              "name": "punctuation.curlybrace.open.cs"
            }
          },
          "patterns": [
            {
              "include": "#source-cs-light"
            }
          ],
          "end": "(\\})",
          "endCaptures": {
            "1": {
              "name": "punctuation.curlybrace.close.cs"
            }
          }
        }
      ]
    }
  },
  "repository": {
    "code-directive": {
      "begin": "(@)(code)\\s*",
      "beginCaptures": {
        "1": {
          "name": "keyword.control.cshtml.transition"
        },
        "2": {
          "name": "keyword.control.razor.directive.code"
        }
      },
      "patterns": [
        {
          "include": "#directive-codeblock"
        }
      ],
      "end": "(?<=})|\\s"
    },
    "directive-codeblock": {
      "begin": "(\\{)",
      "beginCaptures": {
        "1": {
          "name": "keyword.control.razor.directive.codeblock.open"
        }
      },
      "name": "meta.structure.razor.directive.codeblock",
      "patterns": [
        {
          "include": "#source-cs-light"
        }
      ],
      "end": "(\\})",
      "endCaptures": {
        "1": {
          "name": "keyword.control.razor.directive.codeblock.close"
        }
      }
    },
    "source-cs-light": {
      "patterns": [
        {
          "include": "#storage-modifier"
        },
        {
          "include": "#interface-declaration"
        },
        {
          "include": "#class-declaration"
        }
      ]
    },
    "interface-declaration": {
      "begin": "(?=\\binterface\\b)",
      "end": "(?<=\\})",
      "patterns": [
        {
          "begin": "(?x)\n(interface)\\b\\s+\n(@?[_[:alpha:]][_[:alnum:]]*)",
          "beginCaptures": {
            "1": {
              "name": "keyword.other.interface.cs"
            },
            "2": {
              "name": "entity.name.type.interface.cs"
            }
          },
          "end": "(?=\\{)"
        },
        {
          "begin": "\\{",
          "beginCaptures": {
            "0": {
              "name": "punctuation.curlybrace.open.cs"
            }
          },
          "end": "\\}",
          "endCaptures": {
            "0": {
              "name": "punctuation.curlybrace.close.cs"
            }
          }
        }
      ]
    },
    "class-declaration": {
      "begin": "(?=\\bclass\\b)",
      "end": "(?<=\\})",
      "patterns": [
        {
          "begin": "(?x)\n\\b(class)\\b\\s+\n(@?[_[:alpha:]][_[:alnum:]]*)\\s*",
          "beginCaptures": {
            "1": {
              "name": "keyword.other.class.cs"
            },
            "2": {
              "name": "entity.name.type.class.cs"
            }
          },
          "end": "(?=\\{)"
        },
        {
          "begin": "\\{",
          "beginCaptures": {
            "0": {
              "name": "punctuation.curlybrace.open.cs"
            }
          },
          "end": "\\}",
          "endCaptures": {
            "0": {
              "name": "punctuation.curlybrace.close.cs"
            }
          }
        }
      ]
    },
    "storage-modifier": {
      "name": "storage.modifier.cs",
      "match": "(?<!\\.)\\b(new|public|protected|internal|private|abstract|virtual|override|sealed|static|partial|readonly|volatile|const|extern|async|unsafe|ref)\\b"
    }
  }
}

Here's the output from running the npm inspect as you suggested (note the public class Bar : Bazs {} doesn't get a rule associated (-1):

npm inspect output

><EMAIL_ADDRESS>inspect C:\GitHub\vscode-textmate
> node scripts/inspect.js "C:\GitHub\AspNetCore-Tooling\src\Razor\src\Microsoft.AspNetCore.Razor.VSCode.Extension\syntaxes\aspnetcorerazor.tmLanguage.json" "C:\GitHub\AspNetCore-Tooling\src\Razor\test\testapps\ComponentApp\Components\Pages\Index.razor"

LOADING GRAMMAR: C:\GitHub\AspNetCore-Tooling\src\Razor\src\Microsoft.AspNetCore.Razor.VSCode.Extension\syntaxes\aspnetcorerazor.tmLanguage.json

===========================================
TOKENIZING LINE 1: |∩╗┐@code {|

@@scanNext 0: |∩╗┐@code {\n|
matched rule id: 2 from 1 to 7
  token: |∩╗┐|
      * text.aspnetcorerazor
  pushing BeginEndRule#2 @ aspnetcorerazor.tmLanguage.json:35 - (@)(code)\s*
  token: |@|
      * text.aspnetcorerazor
      * keyword.control.cshtml.transition
  token: |code|
      * text.aspnetcorerazor
      * keyword.control.razor.directive.code
  token: | |
      * text.aspnetcorerazor

@@scanNext 7: |{\n|
matched rule id: 5 from 7 to 8
  pushing BeginEndRule#5 @ aspnetcorerazor.tmLanguage.json:52 - (\{)
  token: |{|
      * text.aspnetcorerazor
      * meta.structure.razor.directive.codeblock
      * keyword.control.razor.directive.codeblock.open

@@scanNext 8: |\n|
  scanning for injections
   - 26: (\{)
  no more matches.
  token: |\n|
      * text.aspnetcorerazor
      * meta.structure.razor.directive.codeblock

@@LINE END RULE STACK CONTAINS 3 RULES:
  * IncludeOnlyRule#1 @ aspnetcorerazor.tmLanguage.json:1  -- [1,3] "text.aspnetcorerazor", "text.aspnetcorerazor"
  * BeginEndRule#2 @ aspnetcorerazor.tmLanguage.json:35  -- [2,2] "text.aspnetcorerazor", "text.aspnetcorerazor"
  * BeginEndRule#5 @ aspnetcorerazor.tmLanguage.json:52  -- [5,1] "text.aspnetcorerazor,meta.structure.razor.directive.codeblock", "text.aspnetcorerazor,meta.structure.razor.directive.codeblock"

===========================================
TOKENIZING LINE 2: |    interface Baz { }|

@@scanNext 0: |    interface Baz { }\n|
matched rule id: 10 from 4 to 4
  scanning for injections
   - 26: (\{)
  token: |    |
      * text.aspnetcorerazor
      * meta.structure.razor.directive.codeblock
  pushing BeginEndRule#10 @ aspnetcorerazor.tmLanguage.json:85 - (?=\binterface\b)

@@scanNext 4: |interface Baz { }\n|
matched rule id: 11 from 4 to 17
  scanning for injections
   - 26: (\{)
  pushing BeginEndRule#11 @ aspnetcorerazor.tmLanguage.json:89 - (?x)
(interface)\b\s+
(@?[_[:alpha:]][_[:alnum:]]*)
  token: |interface|
      * text.aspnetcorerazor
      * meta.structure.razor.directive.codeblock
      * keyword.other.interface.cs
  token: | |
      * text.aspnetcorerazor
      * meta.structure.razor.directive.codeblock
  token: |Baz|
      * text.aspnetcorerazor
      * meta.structure.razor.directive.codeblock
      * entity.name.type.interface.cs

@@scanNext 17: | { }\n|
matched rule id: -1 from 18 to 18
  scanning for injections
   - 26: (\{)
  token: | |
      * text.aspnetcorerazor
      * meta.structure.razor.directive.codeblock
  pushing BeginEndRule#26 @ aspnetcorerazor.tmLanguage.json:12 - (\{)
  token: |{|
      * text.aspnetcorerazor
      * meta.structure.razor.directive.codeblock
      * punctuation.curlybrace.open.cs

@@scanNext 19: | }\n|
matched rule id: -1 from 20 to 21
  scanning for injections
   - 26: (\{)
  popping BeginEndRule#26 @ aspnetcorerazor.tmLanguage.json:12 - (\})
  token: | |
      * text.aspnetcorerazor
      * meta.structure.razor.directive.codeblock
  token: |}|
      * text.aspnetcorerazor
      * meta.structure.razor.directive.codeblock
      * punctuation.curlybrace.close.cs

@@scanNext 21: |\n|
  scanning for injections
   - 26: (\{)
  no more matches.
  token: |\n|
      * text.aspnetcorerazor
      * meta.structure.razor.directive.codeblock

@@LINE END RULE STACK CONTAINS 5 RULES:
  * IncludeOnlyRule#1 @ aspnetcorerazor.tmLanguage.json:1  -- [1,3] "text.aspnetcorerazor", "text.aspnetcorerazor"
  * BeginEndRule#2 @ aspnetcorerazor.tmLanguage.json:35  -- [2,2] "text.aspnetcorerazor", "text.aspnetcorerazor"
  * BeginEndRule#5 @ aspnetcorerazor.tmLanguage.json:52  -- [5,1] "text.aspnetcorerazor,meta.structure.razor.directive.codeblock", "text.aspnetcorerazor,meta.structure.razor.directive.codeblock"
  * BeginEndRule#10 @ aspnetcorerazor.tmLanguage.json:85  -- [10,5] "text.aspnetcorerazor,meta.structure.razor.directive.codeblock", "text.aspnetcorerazor,meta.structure.razor.directive.codeblock"
  * BeginEndRule#11 @ aspnetcorerazor.tmLanguage.json:89  -- [11,4] "text.aspnetcorerazor,meta.structure.razor.directive.codeblock", "text.aspnetcorerazor,meta.structure.razor.directive.codeblock"

===========================================
TOKENIZING LINE 3: ||

@@scanNext 0: |\n|
  scanning for injections
   - 26: (\{)
  no more matches.
  token: |\n|
      * text.aspnetcorerazor
      * meta.structure.razor.directive.codeblock
  token: |\n|
      * text.aspnetcorerazor
      * meta.structure.razor.directive.codeblock

@@LINE END RULE STACK CONTAINS 5 RULES:
  * IncludeOnlyRule#1 @ aspnetcorerazor.tmLanguage.json:1  -- [1,3] "text.aspnetcorerazor", "text.aspnetcorerazor"
  * BeginEndRule#2 @ aspnetcorerazor.tmLanguage.json:35  -- [2,2] "text.aspnetcorerazor", "text.aspnetcorerazor"
  * BeginEndRule#5 @ aspnetcorerazor.tmLanguage.json:52  -- [5,1] "text.aspnetcorerazor,meta.structure.razor.directive.codeblock", "text.aspnetcorerazor,meta.structure.razor.directive.codeblock"
  * BeginEndRule#10 @ aspnetcorerazor.tmLanguage.json:85  -- [10,5] "text.aspnetcorerazor,meta.structure.razor.directive.codeblock", "text.aspnetcorerazor,meta.structure.razor.directive.codeblock"
  * BeginEndRule#11 @ aspnetcorerazor.tmLanguage.json:89  -- [11,4] "text.aspnetcorerazor,meta.structure.razor.directive.codeblock", "text.aspnetcorerazor,meta.structure.razor.directive.codeblock"

===========================================
TOKENIZING LINE 4: |    public class Bar : Bazs {}|

@@scanNext 0: |    public class Bar : Bazs {}\n|
matched rule id: -1 from 28 to 28
  scanning for injections
   - 26: (\{)
  token: |    public class Bar : Bazs |
      * text.aspnetcorerazor
      * meta.structure.razor.directive.codeblock
  pushing BeginEndRule#26 @ aspnetcorerazor.tmLanguage.json:12 - (\{)
  token: |{|
      * text.aspnetcorerazor
      * meta.structure.razor.directive.codeblock
      * punctuation.curlybrace.open.cs

@@scanNext 29: |}\n|
matched rule id: -1 from 29 to 30
  scanning for injections
   - 26: (\{)
  popping BeginEndRule#26 @ aspnetcorerazor.tmLanguage.json:12 - (\})
  token: |}|
      * text.aspnetcorerazor
      * meta.structure.razor.directive.codeblock
      * punctuation.curlybrace.close.cs

@@scanNext 30: |\n|
  scanning for injections
   - 26: (\{)
  no more matches.
  token: |\n|
      * text.aspnetcorerazor
      * meta.structure.razor.directive.codeblock

@@LINE END RULE STACK CONTAINS 5 RULES:
  * IncludeOnlyRule#1 @ aspnetcorerazor.tmLanguage.json:1  -- [1,3] "text.aspnetcorerazor", "text.aspnetcorerazor"
  * BeginEndRule#2 @ aspnetcorerazor.tmLanguage.json:35  -- [2,2] "text.aspnetcorerazor", "text.aspnetcorerazor"
  * BeginEndRule#5 @ aspnetcorerazor.tmLanguage.json:52  -- [5,1] "text.aspnetcorerazor,meta.structure.razor.directive.codeblock", "text.aspnetcorerazor,meta.structure.razor.directive.codeblock"
  * BeginEndRule#10 @ aspnetcorerazor.tmLanguage.json:85  -- [10,5] "text.aspnetcorerazor,meta.structure.razor.directive.codeblock", "text.aspnetcorerazor,meta.structure.razor.directive.codeblock"
  * BeginEndRule#11 @ aspnetcorerazor.tmLanguage.json:89  -- [11,4] "text.aspnetcorerazor,meta.structure.razor.directive.codeblock", "text.aspnetcorerazor,meta.structure.razor.directive.codeblock"

===========================================
TOKENIZING LINE 5: |}|

@@scanNext 0: |}\n|
  scanning for injections
   - 26: (\{)
  no more matches.
  token: |}\n|
      * text.aspnetcorerazor
      * meta.structure.razor.directive.codeblock

@@LINE END RULE STACK CONTAINS 5 RULES:
  * IncludeOnlyRule#1 @ aspnetcorerazor.tmLanguage.json:1  -- [1,3] "text.aspnetcorerazor", "text.aspnetcorerazor"
  * BeginEndRule#2 @ aspnetcorerazor.tmLanguage.json:35  -- [2,2] "text.aspnetcorerazor", "text.aspnetcorerazor"
  * BeginEndRule#5 @ aspnetcorerazor.tmLanguage.json:52  -- [5,1] "text.aspnetcorerazor,meta.structure.razor.directive.codeblock", "text.aspnetcorerazor,meta.structure.razor.directive.codeblock"
  * BeginEndRule#10 @ aspnetcorerazor.tmLanguage.json:85  -- [10,5] "text.aspnetcorerazor,meta.structure.razor.directive.codeblock", "text.aspnetcorerazor,meta.structure.razor.directive.codeblock"
  * BeginEndRule#11 @ aspnetcorerazor.tmLanguage.json:89  -- [11,4] "text.aspnetcorerazor,meta.structure.razor.directive.codeblock", "text.aspnetcorerazor,meta.structure.razor.directive.codeblock"

Ok, I have now debugged through it.
The rule "(?x)\n(interface)\\b\\s+\n(@?[_[:alpha:]][_[:alnum:]]*)" misses its end (?=\\{).
The problem is that at offset 18 in the line     interface Bar { }, so right before the {, two rules match:

the end rule (?=\\{) for "(?x)\n(interface)\\b\\s+\n(@?[_[:alpha:]][_[:alnum:]]*)"
the begin rule (\{) for the injection.

Both of them match at the same offset. In this case, the tie is broken via the injection priority. In the way you wrote the injection selector:
L:meta.structure.razor.codeblock - (meta.statement | string.quoted | comment), L:meta.structure.razor.directive.codeblock - (meta.statement | string.quoted | comment)

This means that the injection is placed to the "left", i.e. kind of before the rules. But it appears that you want in this case for the rule to win, so you need to insert the injection to the "right":
R:meta.structure.razor.codeblock - (meta.statement | string.quoted | comment), R:meta.structure.razor.directive.codeblock - (meta.statement | string.quoted | comment)

See e.g. https://stackoverflow.com/a/47517414
I can only imagine that VS perhaps does not implement L: injection priority correctly.

Hmm, i'm intentionally trying to have the injection take priority here so we can hijack the curly brace scope and add additional features.
I was under the assumption that's (?=\\{) and (\{) would never be treated as a tie.
Is it wrong to think that (?=\{ means the "next" token is the curly brace open and (\{ infers the "current" token is the curly brace open? I ask because I would have figured (?= would always be handled before a set of normal captures given the regex explanations of the rules.

@NTaylorMullen I have transformed your grammar to one accepted by TextMate and tried out your sample in TextMate:
{	injections = {
		'L:meta.structure.razor.codeblock - (meta.statement | string.quoted | comment), L:meta.structure.razor.directive.codeblock - (meta.statement | string.quoted | comment)' = {
			patterns = (
				{	begin = '(\{)';
					end = '(\})';
					beginCaptures = { 1 = { name = 'punctuation.curlybrace.open.cs'; }; };
					endCaptures = { 1 = { name = 'punctuation.curlybrace.close.cs'; }; };
					patterns = ( { include = '#source-cs-light'; } );
				},
			);
		};
	};
	patterns = ( { include = '#code-directive'; } );
	repository = {
		class-declaration = {
			begin = '(?=\bclass\b)';
			end = '(?<=\})';
			patterns = (
				{	begin = '(?x)\b(class)\b\s+(@?[_[:alpha:]][_[:alnum:]]*)\s*';
					end = '(?=\{)';
					beginCaptures = {
						1 = { name = 'keyword.other.class.cs'; };
						2 = { name = 'entity.name.type.class.cs'; };
					};
				},
				{	begin = '\{';
					end = '\}';
					beginCaptures = { 0 = { name = 'punctuation.curlybrace.open.cs'; }; };
					endCaptures = { 0 = { name = 'punctuation.curlybrace.close.cs'; }; };
				},
			);
		};
		code-directive = {
			begin = '(@)(code)\s*';
			end = '(?<=})|\s';
			beginCaptures = {
				1 = { name = 'keyword.control.cshtml.transition'; };
				2 = { name = 'keyword.control.razor.directive.code'; };
			};
			patterns = ( { include = '#directive-codeblock'; } );
		};
		directive-codeblock = {
			name = 'meta.structure.razor.directive.codeblock';
			begin = '(\{)';
			end = '(\})';
			beginCaptures = { 1 = { name = 'keyword.control.razor.directive.codeblock.open'; }; };
			endCaptures = { 1 = { name = 'keyword.control.razor.directive.codeblock.close'; }; };
			patterns = ( { include = '#source-cs-light'; } );
		};
		interface-declaration = {
			begin = '(?=\binterface\b)';
			end = '(?<=\})';
			patterns = (
				{	begin = '(?x)(interface)\b\s+(@?[_[:alpha:]][_[:alnum:]]*)';
					end = '(?=\{)';
					beginCaptures = {
						1 = { name = 'keyword.other.interface.cs'; };
						2 = { name = 'entity.name.type.interface.cs'; };
					};
				},
				{	begin = '\{';
					end = '\}';
					beginCaptures = { 0 = { name = 'punctuation.curlybrace.open.cs'; }; };
					endCaptures = { 0 = { name = 'punctuation.curlybrace.close.cs'; }; };
				},
			);
		};
		source-cs-light = {
			patterns = (
				{	include = '#storage-modifier'; },
				{	include = '#interface-declaration'; },
				{	include = '#class-declaration'; },
			);
		};
		storage-modifier = {
			name = 'storage.modifier.cs';
			match = '(?<!\.)\b(new|public|protected|internal|private|abstract|virtual|override|sealed|static|partial|readonly|volatile|const|extern|async|unsafe|ref)\b';
		};
	};
}

When using L: injections:

When changing the injection to use R::

I therefore believe we are working in the same way as TextMate, which is the goal of this project. Because we pursue grammar compatibility with the TextMate grammars, we will not make any change to diverge from the TextMate interpreter.


Convert to new csproj format / netstandard2.0

Open for discussion. This converts to final new csproj format and removes project.json based format. Produces build artifacts for netstandard2.0 and net452. Requires Visual Studio Community 2017 due to .NET Core support. Visual Studio Code and Rider should also work fine.
Last bits of VSTS automation are probably now gone and build numbers should be passed via configuration system. I can recommend Appveyor.

@KiloBravoLima does this PR have any future?


realm.create with nested inline objects causes infinite loop

Using RealmSwift 2.9.1.
Calling realm.create with a value: dictionary, where the dictionary contains nested inline objects, causes an infinite loop in DeepChangeChecker, caused ultimately by realm.refresh().
If I have an object definition where A contains B, and I have a notification on all Bs, then if I call realm.create(A.self, value: [some A data, [b: B data]]), then the "RLMRealm notification listener" thread enters an infinite loop, in DeepChangeChecker::check_row.
Are we just not supposed to call realm.create like that? Or is it a bug?
I have a project that can reproduce this bug, but I won't post it here. If a realm employee reaches out to me, I'll share it directly.

Sent. Let me know if I can help. We updated from 2.4.4 to 2.9.1, and that's when this issue appeared.

AFAICT it's not actually an infinite loop, but the distinction may be irrelevant as it'd take a few hours to run. You're hitting the awful case where it ends up checking every path through the object graph of public users, and there's a lot of those. Our usual advice here is to work around the issue by using LinkingObjects to break the cycle in the object graph, but that's not really applicable to your schema and would require significantly restructuring your data.
Reducing the max search depth in DeepChangeChecker (i.e. changing m_current_pathto std::array<Path, 8>) happens to make this specific case run reasonably fast (~100ms), but that may not be the case even just for all users in this data set. I'll need to dig into it more to see if there's anything we can do to make this behave less awfully.

There are only 161 'public users'. I don't think this database is that big. If you seriously have code that generates every possible path through an object graph... well, that can't be right.
And: is it related to writing the nested objects? You caught that comment, right? Should I break up the writes?

The nested write is unrelated; the same thing happens if you modify just the publicUser and not the outer object.

Ah, you're right. Verified.

...hoping for some guidance. Is this unique to our schema? Do we just have too much nesting or cycles? Wouldn't it affect all users that have schemas above some level of complexity?

Thomas, am I correct in thinking this should be mitigated by realm/realm-object-store#517?

@colinator, would you mind taking a moment to test with the just-released v2.10.0 to see whether it has addressed your issue?

Can I get a reply on that question, to make sure I understand things?

The complexity of the schema is irrelevant. The worst case is a single class with a single List property where every object's list contains every other object, which would run in O(N^4) time (or O(N^16) in 2.9).
Yes, changes 5 or more links away from the observed object will not trigger notifications. Making this configurable (and with a very low default) would probably be one part of a more proper fix for this.

Well, the complexity of our schema does make it more difficult to reason about the costs of these notifications.
It's not uncommon to see notification calculation take several hundred ms. We saw that with 2.4.4, and continue to see it. When our app makes rapid changes to realm, even at ~1/s, we see that the realm notification thread really churns.
When can we expect a more proper fix?

This will be fixed by key path filtering.

This will be fixed by key path filtering.

This will be fixed by key path filtering.

Where can one read more about it? Otherwise, it sounds a bit cryptic but would be interesting to know more about.

This will be fixed by key path filtering.

Where can one read more about it? Otherwise, it sounds a bit cryptic but would be interesting to know more about.


[Feature request]:  can not import chinese “印象笔记” 's notes(*.notes)

Suggestion
Hello,
I am using chinese evernote(a.k.a "印象笔记")， and now it's exported notes(*.notes) is different from evernote's enex.
Is there any way to migrate *.notes to notion?
PS: when i rename the ".notes" to ".enex" and use the migrate tool, it has encountered an error:
Mac M1 Chipset, MACOS 12.4
Python 3.9.13
enex2notion: 0.2.16

INFO: 'Evernote ENEX Import' page found
INFO: Processing notebook 'note'...
Traceback (most recent call last):
File "/opt/homebrew/bin/enex2notion", line 8, in
sys.exit(main())
File "/opt/homebrew/Cellar/enex2notion/0.2.16/libexec/lib/python3.10/site-packages/enex2notion/cli.py", line 47, in main
cli(sys.argv[1:])
File "/opt/homebrew/Cellar/enex2notion/0.2.16/libexec/lib/python3.10/site-packages/enex2notion/cli.py", line 32, in cli
_process_input(enex_uploader, args.enex_input)
File "/opt/homebrew/Cellar/enex2notion/0.2.16/libexec/lib/python3.10/site-packages/enex2notion/cli.py", line 42, in _process_input
enex_uploader.upload_notebook(path)
File "/opt/homebrew/Cellar/enex2notion/0.2.16/libexec/lib/python3.10/site-packages/enex2notion/cli_upload.py", line 55, in upload_notebook
for note_idx, note in enumerate(iter_notes(enex_file), 1):
File "/opt/homebrew/Cellar/enex2notion/0.2.16/libexec/lib/python3.10/site-packages/enex2notion/enex_parser.py", line 27, in iter_notes
yield from (_process_note(e) for e in iter_xml_elements_as_dict(enex_file, "note"))
File "/opt/homebrew/Cellar/enex2notion/0.2.16/libexec/lib/python3.10/site-packages/enex2notion/enex_parser.py", line 27, in
yield from (_process_note(e) for e in iter_xml_elements_as_dict(enex_file, "note"))
File "/opt/homebrew/Cellar/enex2notion/0.2.16/libexec/lib/python3.10/site-packages/enex2notion/enex_parser.py", line 52, in _process_note
is_webclip=_is_webclip(note_raw),
File "/opt/homebrew/Cellar/enex2notion/0.2.16/libexec/lib/python3.10/site-packages/enex2notion/enex_parser.py", line 75, in _is_webclip
re.search(
File<EMAIL_ADDRESS>line 200, in search
return _compile(pattern, flags).search(string)
TypeError: expected string or bytes-like object

Thanks,
Howie

Found on my other M1 Mac, 『印象笔记』App can export enex file, so i decide to chose this proposal.

@zenghao0708  I have a some problem，How to solve it?


Tags v60369 and  v60378 refer to the same commit

We could export each of those versions to restore them and get the tags correctly:

remove wrong tags
for each version

get pharo
export
commit
tag

Also versions 379 to 380 were not exported.

I removed all wrong tags:
for i in seq 369 378; do echo "v60$i"; done | xargs git tag -d
for i in seq 369 378; do echo ":v60$i"; done | xargs git push origin


pass both IOVA and virtual address to DMA map/unmap callbacks

I'm definitely thinking we should pass the offset to use too now.

picked up via #396


how to set expiration time in the alert???

Hello sir
thanks for this awesome tool
here in the config.yml i m looking for a parameter through which we can set expiration time  with open ended checkbox
see screenshot below
thanks again for sharing this tool

haven't added that function yet, but may be coming soon.
In the meantime you could just create an alert once manually with that option checked and tradingview will remember that setting for you

Hello sir
this is great tool but still it manual as we need to run it every day or every hour
is there anything available like coding a indicator once its coded and added to chart it gives us alerts lifetime
no need to create alerts manually
anything like that available??
i tried to add alertcondition() in one of my fav indicator but even after adding that i need to add alerts manually
i want to make it automated permanent

great tool, but I need to check open-ended checkbox, how can I help develop it?


Corrected translation of lower-case accented i such as í.

I stumbled upon a problem when exporting a BibTeX file with "Acín" as an author (for example, a reference to this paper http://iopscience.iop.org/article/10.1088/1367-2630/10/7/073013/meta ).
I corrected the affected translation keys, but I don't know if my fix is complete --- there could be other accented characters that are affected.

Doesn't the translation in the existing implementation render correctly? \' et al put an accent atop whatever character follows, and in the case of i and j the diacritic doesn't render exactly cleanly over the dot of the i or j. \i should render an i without a dot so the combined char looks nice, same thing for \j.

Ok... thanks I did not know the shortcut for "i without a dot". The problem happens when using a very specific implementation of BibTeX, used in TeXmacs. I'm closing this PR.

BTW, sorry for wasting your time!

No time was wasted. So TexMacs doesn't support this? That's annoying. Can you open an issue for this? I'll try to come up with a workaround.


[WFLY-8742] Fix SASL tests working with Elytron provider

https://issues.jboss.org/browse/WFLY-8742
https://issues.jboss.org/browse/JBEAP-10506
Fix SASL mechanisms Elytron tests in AS TS.
This replaces PR https://github.com/wildfly/wildfly/pull/10200 (and https://github.com/wildfly/wildfly/pull/10157).

Retest this please.

Retest this please.


Stuck on onboarding page after manually creating a budget block

The app has me stuck on the route "/onBoard/1" after I manually created budget block. The continue button on the budget block creation screen redirects me to the onboarding page.

On the component BudgetGoalModal.jsx, the return is empty in MapStateToProps

There are 2 identically named components in separate folders. May be improperly referenced somewhere.

It looks this like it is only referenced once and that happens in App.js. It also is the proper component. Therefore, components/FirstOnboard can be deleted (I believe).

 Fix redirect for block creation

@maggieprice
Awesome job on this. I appreciate the details on what work you're doing to fix it.
Is this issue still open?


Migration script testing

see it work testing for Orion -> Tessera migration script. Similar to @pinges's privacy on a forking consensus mechanism test.

[x] Create Besu <> Orion network and submit a number of transactions
[x] Migrate Orion -> Tessera
[ ] Restart network with Besu <> Tessera and confirm private group states match

Besu > Orion

{
    "jsonrpc": "2.0",
    "method": "priv_debugGetStateRoot",
    "params": [
        "MC4aHjApHsGb0j5glU2iAj5KcR5LId52S0BU9mtdeuY=",
        "latest"
    ],
    "id": 1
}

 {
    "jsonrpc": "2.0",
    "id": 1,
    "result": "0x69904cc3945ada15579fa6f7f1c95e31555210ac017646b4a1373412281dce82"
}

"keys" : {
"keyData" : {
"privateKeyPath" : "/Users/sallymacfarlane/workspace/tessera/migration/orion-to-tessera/workdir/orion1/keys/orion.key",
"publicKeyPath" : "/Users/sallymacfarlane/workspace/tessera/migration/orion-to-tessera/workdir/orion1/keys/orion.pub"
}
},

tessera config gets this:
{
   "type" : "config",
   "version" : "20.10.2-SNAPSHOT",
   "useWhiteList" : false,
   "disablePeerDiscovery" : false,
   "bootstrapNode" : false,
   "jdbc" : {
      "username" : "sa",
      "password" : "sa",
      "url" : "jdbc:h2:./target/h2/tessera-88",
      "autoCreateTables" : true,
      "fetchSize" : 0
   },
   "serverConfigs" : [ {
      "app" : "Q2T",
      "communicationType" : "REST",
      "serverAddress" : "http://<IP_ADDRESS>:8081/",
      "properties" : {
      }
   }, {
      "app" : "P2P",
      "communicationType" : "REST",
      "serverAddress" : "http://<IP_ADDRESS>:8081/",
      "properties" : {
      }
   } ],
   "peer" : [ {
      "url" : "http://<IP_ADDRESS>:8081"
   }, {
      "url" : "http://<IP_ADDRESS>:8082"
   }, {
      "url" : "http://<IP_ADDRESS>:8083"
   } ],
   "keys" : {
      "keyData" : {
         "privateKeyPath" : "/Users/sallymacfarlane/workspace/tessera/migration/orion-to-tessera/workdir/orion1/keys/orion.key",
         "publicKeyPath" : "/Users/sallymacfarlane/workspace/tessera/migration/orion-to-tessera/workdir/orion1/keys/orion.pub"
      }
   },
   "alwaysSendTo" : [ ],
   "features" : {
      "enableRemoteKeyValidation" : false,
      "enablePrivacyEnhancements" : false
   },
   "encryptor" : {
      "type" : "NACL"
   },
   "mode" : "orion"
}

so then running Tessera with that config (fixing the Q2T port to 8881)
{
    "jsonrpc": "2.0",
    "method": "priv_findPrivacyGroup",
    "params": [
        [
            "GGilEkXLaQ9yhhtbpBT03Me9iYa7U/mWXxrJhnbl1XY="
        ]
    ],
    "id": 1
}

gives no results
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": []
}

{
"jsonrpc": "2.0",
"id": 1,
"result": "0x23b483b707dd23c2798004d689aa958cbdc1f9069a48621b6ad500cb27960217"
}

With latest migration branch, with the fix for privacy groups.
*   13183b76c (HEAD -> orion-migration-tool) Merge branch 'orion-migration-tool' of github.com:ConsenSys/tessera into orion-migration-tool
|\
| * ae48f5b88 (upstream/orion-migration-tool) passwords file is also in workdir.
| * 7ea425729 read in wrong value for privacy group id as in orion db key is in base64 format
* | 3d539bad3 Merge branch 'orion-migration-tool' of github.com:ConsenSys/tessera into orion-migration-tool
|\|

Tested with various combinations of batches of transactions, and then using priv_debugGetStateRoot to test that states are equal
https://docs.google.com/spreadsheets/d/1Ty88ok9YqKhSNRWGhiM32v7mKd-tEeda7Gtj1qI5Xq0/edit#gid=0
Also tested migrating a db that is set up for multi-tenancy.
Tested running this script to create privacy groups directly, and after migrating the result is the same: web3js-eea/example/multiTenancy/createPrivacyGroupMultiTenancy.js

@macfarla - to add sample command line to run migration.

Have tested with LevelDB only at this point. Use priv_debugGetStateRoot to check has worked correctly.

How to run it

Build the migration tool.
First, the code is currently on a branch so you have to check that out and build it
https://github.com/ConsenSys/tessera/pull/1246

Start Orion.
Then run up Besu & Orion - I've been using this setup https://github.com/lucassaldanha/besu-local-nodes but if you already have your own that's also fine.

cd ~/workspace/besu-local-nodes
besu --config-file config/besu/besu1.conf
orion config/orion/orion1.conf

Send some txs
Then create some txs - I've been using web3js-eea examples as described above. The concurrentPrivateTxs example only needs one Orion node running, the multiNode ones generally need 2 or 3.
If you're going to use priv_debugGetStateRoot (and priv_getTransactionCount is also useful) to test before & after, you can run this against your privacy groups now while Orion is running. eg use concurrentPrivateTxs.js to send 50 txs to orion1 and 40 txs to orion 2&3
Note to use web3js-eea examples you need to make sure the keys.js match your environment - the keys for all besu/orion nodes are in the readme for the besu-local-nodes repo if you're using that setup.
To do this you change these lines in the js

const TX_COUNT = 50; # change this number to send a different number of txs
const BATCH_SIZE = 5;

// options used to create a privacy group with only one member
const privacyOptions = {
  privateFrom: orion.node1.publicKey,
  privateFor: [orion.node1.publicKey], ## change this to send to different recipients eg [orion.node2.publicKey,orion.node3.publicKey]
  privateKey: besu.node1.privateKey
};

Stop Orion.
Then stop Besu & Orion.

Run the migrate
Then you run the migrate - and it does everything relative to the current directory so to make my life easier I've been running it from ~/workspace/besu-local-nodes where I have this repo checked out - it has orion config ready to go - https://github.com/lucassaldanha/besu-local-nodes
to see the help:
~/workspace/tessera/migration/orion-to-tessera/build/install/migrate/bin/migrate --help
example command line:
~/workspace/tessera/migration/orion-to-tessera/build/install/migrate/bin/migrate -f ~/workspace/besu-local-nodes/config/orion/orion1.conf -o tessera-migrated.conf tessera.jdbc.user sa tessera.jdbc.password sa tessera.jdbc.url jdbc:h2:./workdir/orion1/tessera1
it will create tessera-migrated.conf and ./workdir/orion1/tessera1 db (change these arguments if you want them to go somewhere different)

Run Besu&Tessera
I have it aliased so wherever you have tessera checked out to - mine is /Users/sallymacfarlane/workspace/tessera/
alias tessera=java\ -jar\ /Users/sallymacfarlane/workspace/tessera/tessera-dist/tessera-app/target/tessera-app-21.1.1-SNAPSHOT-app.jar
or you can just run java jar path-to-tessera.jar -configfile tessera-migrated.conf
Note the config file created by the migration script has the mode=orion in it so you don't need to specify on the cmd line. And nothing needs to change in besu.
Again I'm running this from ~/workspace/besu-local-nodes because all paths (eg in tessera-migrated.conf) are relative from there.

tessera -configfile tessera-migrated.conf
besu --config-file config/besu/besu1.conf

Verify the state
use priv_debugGetStateRoot and priv_getTransactionCount

Send more txs
Verify that you can send further txs - again using web3js-eea examples or your preferred method.

Stop Tessera
Once you're done, stop Besu & Tessera

New things:

if you point the migration at an existing tessera db, it will throw an exception if the tables are non-empty - this allows DBAs to create the db in advance of the migration but prevents mixing up unrelated data
password-protected keys are now converted as part of the migration (although there is a bug where the filename is incorrect in the config file - but this should be easy to fix)

password protected keys get migrated successfully but in the process the orion keys get renamed to .orion and the filename is used for the tessera format - so the tessera config points to the same filename as the orion config did. Which is only a problem if you need to redo the migration... you will need to reinstate the original orion keys first

blocked on testing the TLS piece

{
    "jsonrpc": "2.0",
    "method": "priv_getTransactionCount",
    "params": [
        "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73",
        "67NmE7/94nuomQiZv/g19BzyhhX84kwJo3lr5+n43xI="
    ],
    "id": 1
}

result
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": "0xb4"
}


docs: add samples from language

Samples from https://github.com/GoogleCloudPlatform/python-docs-samples/tree/master/language

@hkdevandla It seems the kokoro config is not added yet (example, cl/331550292). Please add the config, then add the kokoro: force-run tag to this PR so the samples can run as well.


Add an Events listing

To help raise the visibility of Pulumi-related events, we should create an Events listing on the website. Entries would be similar to blog posts, but be located at a different path (e.g, /events, or /blog/events), and with some additional properties, such as

event_date and time, so announcements can be published in advance
registration_url, for linking to outside websites, like Meetup
location, e.g., "Seattle, WA", and maybe with an address and/or maps link

... and probably some others as well. (cc @aydrian.)
We might also consider publishing these events in a separate RSS feed, since it's easy and offers one more way to subscribe to them.

I vote for not under blog. We should have a start and end date with logic smart enough to know if it's a single day. It would be nice to tag them as sponsorship or presenting, and categorize them as conference, meetup, hackathon, webinar, etc. Maybe have a short description as well. Have location and some kind of url for linking is also good.

@cnunciato Adding this to M31 for consideration. As part of figuring out our overall 2020 roadmap of conferences and workshops (first 2 weeks of Q1), this would be a good thing to have.

As part of this, it would also be good to have a place to aggregate webinars, past talks (with transcriptions), etc.

Is this done now that #2318 has landed?  If not, what is remaining - and should we open a new issue to track any follow ups?

Yup this is done -- Created another issue for follow up items: https://github.com/pulumi/docs/issues/2416


Markdown output broken by default?

I have installed the theme vianpm install -g raml2html-markdown-theme and tried it with following minimal file:
#%RAML 1.0
title: Internal
baseUri: https://some-url/
version: v1
mediaType: application/json
protocols:
  - HTTP
  - HTTPS

/asdf:
  post:
    queryString:
      properties:
        test: number

Running
raml2html --theme raml2html-markdown-theme internal-api.raml > test.md
Produces following output (yes, all in one line):
# Internal API documentation version v1 https://some-url/ --- ## /asdf ### /asdf * **post**:

What am I missing?

When I run this I get this, not on one line:
# Internal API documentation version v1
https://some-url/

---

## /asdf

### /asdf

* **post**:

Are you on Windows maybe?

Nope, I am on a Mac. I have tried reinstalling raml2html and raml2html-markdown-theme but nothing changed.
I will try it on another machine...

Hey @nickwb could you please test this issue for me? I can't reproduce :(

Well the markdown template has unix line endings, so depending on what editor you're using on the Mac, it might appear as one line.
All that said, the markdown template is missing much of the information which is in the deafult html template - including queryString parameters.

I have the same problem and I am on Mac. Using the command-line or Sublime Text setup with Unix line endings doesn't help.

Yep, the template is very basic and was never meant to show all possible assets of a RAML file. It might need more info to be useful, I'll leave that up to other people. As for the single line problem, I can't reproduce this, so a PR with a fix would be welcome.

I was able to reproduce the problem when using raml2html as a CLI with a globally installed markdown theme. In other words, like everybody uses it basically, instead of running the examples from within this repo. Weird. I'll look into it, but my guess is that is has something to do with how the package is downloaded from NPM.

Fixed! The problem was that the raml2html-markdown-theme package didn't depend on the nunjucks dependency, and thus that require failed, causing raml2html to fall back to default processing behavior, which included minifying the output.
1.0.1 fixes this. Alternatively npm i -g<EMAIL_ADDRESS>will also fix the problem :)

Sorry to disapoint you, but i still can not get it to work, it workes fine with the theme, but when using it as template (markdown\index.nunjucks) I still get only a oneline markdown. I installed nunjucks, global and local, but I can´t get it to work. Is there something I don´t get or do wrong?

You can't really use it with just a template because then the default processing code is run, which includes minifying. So you'll have to create your own theme ala this markdown theme or use raml2html as a library from node and supply your own config.

Right, but that is what I do, I use raml2html -t markdown\index.nunjucks input.raml > output.md and it workes fine, but everything is in one line, is there a spacial character to get a new line?

Yeah that is exactly what doesn't work. Like I said, you can't use it with a template (the -t option), because then raml2html uses the default processing function which minifies the output. You need to either clone the markdown theme, modify it and then use the --theme option, or use raml2html as a library (not a command line tool). Check https://github.com/raml2html/raml2html/blob/master/examples/script.js for examples.


Error: log4j:WARN No appenders could be found for logger (com.github.sarxos.webcam.Webcam). log4j:WARN Please initialize the log4j system properly.

I was trying to read qr code using webcam, i was getting this error. can you please explain me y am i getting these error.
https://github.com/sarxos/webcam-capture/tree/master/webcam-capture-examples/webcam-capture-qrcode

This is not error. As stated in a message, this is WARN, which means warning.  What are your JARs in classpath? If you do not need logs then you can simply ignore this warning and live without it :)

The first result from Google:
https://stackoverflow.com/questions/1140358/how-to-initialize-log4j-properly
https://www.google.com/search?q=log4j%3AWARN+Please+initialize+the+log4j+system+properly.

Thank you so much :)


Pluralsight - No video format found

Please follow the guide below

You will be asked some questions and requested to provide some information, please read them carefully and answer honestly
Put an x into all the boxes [ ] relevant to your issue (like this: [x])
Use the Preview tab to see what your issue will actually look like

Make sure you are using the latest version: run youtube-dl --version and ensure your version is 2019.04.01. If it's not, read this FAQ entry and update. Issues with outdated version will be rejected.

[x] I've verified and I assure that I'm running youtube-dl 2019.04.01

Before submitting an issue make sure you have:

[x] At least skimmed through the README, most notably the FAQ and BUGS sections
[x] Searched the bugtracker for similar issues including closed ones
[x] Checked that provided video/audio/playlist URLs (if any) are alive and playable in a browser

What is the purpose of your issue?

[x] Bug report (encountered problems with youtube-dl)
[ ] Site support request (request for adding support for a new site)
[ ] Feature request (request for a new functionality)
[ ] Question
[ ] Other

The following sections concretize particular purposed issues, you can erase any section (the contents between triple ---) not applicable to your issue

The purpose of this issue is a bug report. Provided full verbose output as follows:
youtube-dl --version
2019.04.01
youtube-dl --username "x" --password "x" -o"%(playlist_index)s - %(title)s.%(ext)s" --min-sleep-interval 30 --max-sleep-interval 60 https://app.pluralsight.com/library/courses/implementing-windows-server-2016-dhcp --all-subs --cookies /home/x/Desktop/cookies.txt -v
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: [u'--username', u'PRIVATE', u'--password', u'PRIVATE', u'-o%(playlist_index)s - %(title)s.%(ext)s', u'--min-sleep-interval', u'30', u'--max-sleep-interval', u'60', u'https://app.pluralsight.com/library/courses/implementing-windows-server-2016-dhcp', u'--all-subs', u'--cookies', u'/home/x/Desktop/cookies.txt', u'-v']
[debug] Encodings: locale UTF-8, fs UTF-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2019.04.01
[debug] Python version 2.7.15+ (CPython) - Linux-4.18.0-13-generic-x86_64-with-Ubuntu-18.10-cosmic
[debug] exe versions: ffmpeg 4.0.2-2, ffprobe 4.0.2-2, phantomjs 2.1.1, rtmpdump 2.4
[debug] Proxy map: {}
[pluralsight:course] implementing-windows-server-2016-dhcp: Downloading JSON metadata
[download] Downloading playlist: Implementing Windows Server 2016 DHCP
[pluralsight:course] playlist Implementing Windows Server 2016 DHCP: Collected 62 video ids (downloading 62 of them)
[download] Downloading video 1 of 62
[pluralsight] Downloading login page
[pluralsight] Logging in
[pluralsight] implementing-windows-server-2016-dhcp-m0-0: Downloading JSON metadata
[pluralsight] implementing-windows-server-2016-dhcp-m0-0: Downloading mp4-high-widescreen viewclip graphql
[pluralsight] implementing-windows-server-2016-dhcp-m0-0: Waiting for 2 seconds to avoid throttling
[pluralsight] implementing-windows-server-2016-dhcp-m0-0: Downloading captions JSON
[debug] Default format spec: bestvideo+bestaudio/best
[info] Writing video subtitles to: 01 - Course Overview.en.srt
[debug] Invoking downloader on u'https://vid5.pluralsight.com/expiretime=1554249113/4e7e36aace5002905fd98c3d3b4a5bbd/clips/resolution/8ca1a99a-db38-4cd1-8d38-5a135b0d30b0/current/mp4/1280x720.mp4'
[download] 01 - Course Overview.mp4 has already been downloaded
[download] 100% of 3.42MiB
[download] Downloading video 2 of 62
[pluralsight] implementing-windows-server-2016-dhcp-m1-0: Downloading JSON metadata
[pluralsight] implementing-windows-server-2016-dhcp-m1-0: Downloading mp4-high-widescreen viewclip graphql
[pluralsight] implementing-windows-server-2016-dhcp-m1-0: Waiting for 4 seconds to avoid throttling
ERROR: No video formats found; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type  youtube-dl -U  to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
Traceback (most recent call last):
  File "/usr/local/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 794, in extract_info
    ie_result = ie.extract(url)
  File "/usr/local/bin/youtube-dl/youtube_dl/extractor/common.py", line 529, in extract
    ie_result = self._real_extract(url)
  File "/usr/local/bin/youtube-dl/youtube_dl/extractor/pluralsight.py", line 421, in _real_extract
    self._sort_formats(formats)
  File "/usr/local/bin/youtube-dl/youtube_dl/extractor/common.py", line 1326, in _sort_formats
    raise ExtractorError('No video formats found')
ExtractorError: No video formats found; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type  youtube-dl -U  to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.

...
<end of log>

Every course i try to download gives the same symptoms, it downloads first video of the series, and the others fail. I've tried giving the -f specifying resolution, didn't work either. It stopped working from february update. Courses work on browser.

Expired Plan!


Group/Instance normalization layer

This PR adds GroupNorm, InstanceNorm, and their tests.
Related: #685

@dabrahams
Thank you for review.
Most of my documentation comments were from BatchNorm/LayerNorm.
There should be another PR to update their documentation comments too.

@dabrahams to follow up

@t-ae I think we need your comment "@googlebot I consent" to get past the CLA check.  Thanks!

@googlebot I fixed it

@googlebot I fixed it


Reminder: check if debug builds define NDEBUG

...otherwise the validation layers will be disabled even in debug build.

...ok, typo in title, it's the other way around (NDEBUG is defined in release builds, not in debug builds), but it works as expected.


varlink containers

first pass at adding in the container related endpoints/methods for the libpod
backend. Couple of important notes:

endpoints that can use a console are not going to be done until we have "remote" console
several of the container methods should probably be able to stream as opposed to a one-off return

Signed-off-by: baude<EMAIL_ADDRESS>

 (5) podman varlink containers API

Would be nice if we had two versions of ListContainers - one that only did a single container (pass it a name or ID), one that did all containers

agree, will do.

udpated with structs and no containers functions return empty responses.

Podman restart tests are failing. Dropped some comments that might help.

LGTM

I will wait for @jwhonce approval before merging, since he is the one having to use them.

LGTM :+1:

@rh-atomic-bot r+


Broken pip in alpine3.9

After the update to pip 19.3 my images fail to build as the pip install is broken (9d65606d58d010bfd882e75da7262637fa5d06e2).
Error:
Traceback (most recent call last):
  File "/usr/local/bin/pip", line 5, in <module>
    from pip._internal.main import main
ModuleNotFoundError: No module named 'pip._internal.main'

Sorry, I just figured out when this happens: apk add --update --no-cache py3-numpy brakes the pip install and not the updated version of pip.


REAL PR: fixes some broken links in your repo

You've got some dead links in your repo. This PR fixes some of the broken links.

Coverage remained the same at 36.782% when pulling 166af4f571bebb80f9e50c9fbf7a5b5c531edfec on Tset-Noitamotua:master into cad3d2ba400a71b24a6aee9b7ecf44938b97fa0a on keeppythonweird:master.


Zombie instances

From time to time on our cluster appears zombie instances. By zombie instance I mean instance that is running but its application is unknown (deleted) in marathon.
/v2/apps/<zombie-instace-id returns instance info but it odes not appear in /v2/apps. Application could not be deleted because Marathon returns it does not known this app.
Workaround to kill all instances and application is to  create new application with zombie-instace-id. Zombies instances will be assigned to this application and will be manageable from marathon.
This occurs after problems with ZK. Marathon version from 0.13 to 1.1.1.

@gkleiman related to recent fixes you've been hacking on?

I'm encountering this too. My internal name for this is "ghost marathon apps".
Sounds like a I have slightly different symptoms maybe. Here are some facts about what his happening in my situation:

App shows up in the marathon API when queried directly.
App does not show up in /v2/apps
Tasks do show up in mesos
Marathon does restart these tasks with the same configuration if I kill the tasks manually with "docker kill" (so marathon is doing its normal thing here)

@jdef this is still happening at Yelp now, but I can't let it go on for long. Besides marathon logs filtered for this app is there any other data you would like me to collect?
We are on marathon version 1.1.1-1.0.472 and mesos version 1.0.1

If you delete an application e.g. DELETE /v2/apps/{appId} the application is deleted from the group.
Subsequent calls do not list the application.
This call also has created a deployment. Until the deployment is finished, the application is still stored in the repository and available via /v2/apps/{appId} by intention.
If you use DELETE /v2/deployment/{id}?force=true you can end up in such a situation easily. See #4581 for a more detailed explanation.
Is the problem you describe covered by these 2 options?
In any other case I need more information + logs to analyse.

Note: This issue has been migrated to https://jira.mesosphere.com/browse/MARATHON-2438. For more information see https://groups.google.com/forum/#!topic/marathon-framework/khtvf-ifnp8.


How to attach failed test screenshot to Report Portal using Playwright

Hello,
I have a fixture that implements opening browser and other activities, this is a fixture on a scope of a function.
I would like to add the ability to upload a screenshot to report portal on failure, however, it seems like when it fails, the native report portal logger is unable to send logs from this fixture. the failure handling is on the finally stage.
What should be done?
  @pytest.mark.block_asyncio
  def setup_and_teardown(self, request):
      logging.setLoggerClass(RPLogger)
      logger.info("Starting PlayWright client")
      self.sb_actions.disable_email_notification_if_exists()
      # Determine if --headed was passed
      headed = request.config.getoption("--headed")
      headless = not headed
      self.video_dir = os.path.join(Config.data["logging_directory"], "videos")
      self.trace_dir = os.path.join(Config.data["logging_directory"], "traces")
      self.screenshot_dir = os.path.join(Config.data["logging_directory"], "screenshots")
      os.makedirs(self.video_dir, exist_ok=True)

      setup_successful = False

      with sync_playwright() as p:
          browser = p.chromium.launch(headless=headless)
          self.page = browser.new_page(record_video_dir=self.video_dir)

          self.start_tracing()
          try:
              self.setup_playwright_test()
              setup_successful = True
              yield  # opening browser session
              self.teardown_playwright_test()
          finally:
              if setup_successful:
                  self.stop_tracing()
                  self.cleanup(request)
                  browser.close()

This looks like its not using the pytest-playwright plugin.


selection

cursor at first time like in https://github.com/mbrlabs/Lorien/pull/215
deselect by clicking outside the selection box
maybe resolving https://github.com/mbrlabs/Lorien/issues/210

Can you explain more in depth what this does?

Yes it's working when not moving the canvas, there's still a bug. I think the détection is not using thé 'moved' origin.
I wanted to deselect when touching outside the selection. It's easyer when using a Pen than a Key or a tool change in the menu

If i understand this correctly it should be fixed now in the latest main branch, so closing this. Thank you for your contribution nonetheless!
Feel free to open another issue though when there is still a bug.


Prism as default CRuby parser

This is a meta-issue about the steps that need to be taken in order to become the default CRuby parser. This is not to say that it will be the default parser as that decision is out of our hands. Instead, this issue is meant to list the technical things that are blocking it from happening.
Some/most of these things are outside the control of this repository itself and must be completed in ruby/ruby. I'm not going to link to individual issues at the moment, since the work itself is already being tracked in other places. For the most part this is meant for documentation and visibility.

Optimizations - We need to ensure the CRuby compiler is using all of the various optimizations that are already present in compile.c.
Errors - We need to ensure we reject all invalid source code. All of the issues we have open with the invalid-syntax label are currently tracking these.

The following tasks have already been accomplished:

Compiling Primitive - Right now we don't parse Primitive method calls, but we will need to.
Tests - At the moment our test suite tests against the output from a combination of RubyVM::AbstractSyntaxTree, ripper, and ruby -c. None of these will make sense in a future where prism is the only parser. As such, our tests will need to be updated to ensure they are testing against fixed images as opposed to dynamic checks against the existing Ruby implementation.
Get CRuby tests and specs passing.
Performance - I don't think this is going to be an issue, but we should very that we don't lose any performance once the entire pipeline is established (source -> iseqs). Hopefully we can even pick up some performance.
error_highlight - We need to determine how we want to support error_highlight. At the moment it is completely tied to the existing AST structure and node_id fields on instructions. We need to either support node_id as well or we need to find a new way to handle this (by embedding the column directly into the iseq in place of node_id maybe?).
Ractor pragmas - We need to support ractor pragmas. This should ideally be done in the CRuby compiler, which would involve updating parse.y/compile.c as well.
eval - Right now we do not hook up to eval, but we will need to.
CLI options - We need to support the command-line options for Ruby (-n, -p, -l, and -a). This should ideally be done in the CRuby compiler, which would involve updating parse.y/compile.c as well.
Warnings - We need to ensure we have all of the same warnings. To my knowledge, the only one we're currently missing is duplicated hash keys. This is blocked because we need to finish getting number literals parsed so that we can compare within an individual hash. This has the added benefit of removing the need to keep around the source for JRuby/TruffleRuby.
ripper - If the existing parser is going away, it will not make sense to maintain ripper. This is a much bigger task than it might seem, as an entire ecosystem of tools depend on ripper. There are many ways to approach this. We could provide a translation layer from prism to ripper (this work has been started). We could proactively go out into the ecosystem and transition the various tools over to using prism (this has already been started). I'm sure other solutions exist as well. Probably the biggest consumers of these are irb and rdoc, which have the highest priority.
RubyVM::AbstractSyntaxTree - If the existing parser is going away, then this experimental module will go away as well. Even though it is marked as experimental and having no compatibility guarantees, we should still try to help people migrate in case they have come to depend on it. More investigation will be needed to determine who this impacts.

If all of these problems are solved, then it will make sense to make the case for this to become the default parser.

Closing, as this is now tracked by individual tickets.


excessive memory/process usage when running karate (maybe just windows?)

this is what I found on windows when launching karate:
20 java.exe processes
using >1 GB of memory.
on osx it might be the same but here I have full 32 GB available, on Windows its in a virtual machine but nothing else in my project requires this much memory - thus:
Are there a reason for this high number and memory usage - any way to reduce it by a setting ?

note, this is even when running a single feature test., i.e. https://github.com/jbangdev/jbang/blob/master/itests/version.feature
This should require minimal resources and definitely not ~20 jvm processes to run :)

forgot to mention that these processes and memory usage eventually end up with errors about out of memory and if I run smaller ones karate ends being stuck (the latter might be related to the new command shell feature)

@maxandersen yeah I have no answers at the moment. do you think you can create a quickstart as per this guide: https://github.com/intuit/karate/wiki/How-to-Submit-an-Issue
then I can try it on a VM / EC2 instance when I get the chance. it also locks down how you trigger tests, that can be a factor

@maxandersen I made some changes, haven't tested on windows yet do try when you get a chance

marking as fixed based on feedback

0.9.6 released

the issue still goes on with the 0.9.6v

@gokhanakaraman kindly follow this process: https://github.com/intuit/karate/wiki/How-to-Submit-an-Issue and use 0.9.9.RC2


samples/bookinfo: update README

Signed-off-by: Xiang Dai<EMAIL_ADDRESS>[ ] Configuration Infrastructure
[X] Docs
[ ] Installation
[ ] Networking
[ ] Performance and Scalability
[ ] Policies and Telemetry
[ ] Security
[ ] Test and Release
[ ] User Experience
[] Developer Infrastructure
Pull Request Attributes
Please check any characteristics that apply to this pull request.
[X] Does not have any changes that may affect Istio users.

Remove dead link.

Hi @daixiang0. Thanks for your PR.
I'm waiting for a istio member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.
Once the patch is verified, the new status will be reflected by the ok-to-test label.
I understand the commands that are listed here.

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@daixiang0 thanks for the work, although I don't know this is quite right. While the PR definitely removes a dead link, I think there may be a better way to document how to regenerate the bookinfo manifests. Unfortunately, I don't know how that is done as it is not documented.
Cheers,
-steve

/ok-to-test

@daixiang0: The following test failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

integ-multicluster-k8s-tests_istio
5a8a98b4748441adb9884c17291bb4c230c57d73
link
/test integ-multicluster-k8s-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/retest

@daixiang0: The following test failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

integ-pilot-k8s-tests_istio
cdfb83f9349d7a85be8e40ea494d26f4d5ca1542
link
/test integ-pilot-k8s-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/test integ-pilot-k8s-tests_istio

@daixiang0: The following test failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

integ-pilot-k8s-tests_istio
cdfb83f9349d7a85be8e40ea494d26f4d5ca1542
link
/test integ-pilot-k8s-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/retest


[WIP] Implemented input tests

closes #34

Don't forget to add the Async suffix in async methods (Mouse.Down, Mouse.Up, etc etc)

Also don't forget about XML Docs :)

@kblok ready except for 2 failing tests:

PuppeteerSharp.Tests.Input.InputTests.ShouldSpecifyRepeatProperty
uppeteerSharp.Tests.Input.InputTests.ShouldClickTheButtonAfterNavigation

@Meir017 take look at this
https://github.com/kblok/puppeteer-sharp/commit/c9b5f2db83fc0b1a64e774892daea5ec15c4ea88
and this
https://github.com/kblok/puppeteer-sharp/commit/3478ba497ab40c83939c078c4ace53e9279e2b1d

I think another flaky test caused the fail - https://ci.appveyor.com/project/kblok/puppeteer-sharp/build/1.0.563#L630


Added note on touch issues

@vxsx how's this?

looks good!

Coverage remained the same at 89.334% when pulling 9eb96ae936ad5cfc546d2279f7f80e8c3350b59d on touch-docs into 28a05ffd8780075768ee80647b966f0138ac726e on develop.


Add support for nvim 0.9

Not sure I understand what this PR does, :lua print(vim.fn.has("nvim-0.8")) returns 1 on both 0.8 and 0.9 nightly (as 0.9 "has" 0.8 in it), in addition, you're defining a local fallback variable within the if-then scope, this makes no sense.
What problem are you trying to solve?

Closing, feel free to reopen after clarification of the code and purpose of this PR.


Add py34 to list of default envs

#no34nofun

Might be better to replace py33 with py34? It should encourage testing on a specific python2 and python3 release, I think.

I guess so. I'm used to supporting both py33 and py34, so I didn't think about it.

(that last commit replaced it)


[pinmux] D0 -> D1 Review

This proposes to move the pinmux to D1. I'll add the reviewer names once it is clear who signs this off.
Signed-off-by: Michael Schaffner<EMAIL_ADDRESS>

Ok thanks for the quick round of comments, I amended the parts you flagged. And added you all as reviewers for this transition.

yeah I meant I'll fix the doc. I did not change the template.
On Thu, Nov 7, 2019 at 2:13 PM Eunchan Kim<EMAIL_ADDRESS>wrote:

@eunchan commented on this pull request.
In hw/ip/pinmux/doc/checklist.md
https://github.com/lowRISC/opentitan/pull/928#discussion_r343902495:

+Tests         | [ALL_TESTS_PASSING][]                   | Not Started |
+Tests         | [FW_SIMULATED][]                        | Not Started |
+Regression    | [NIGHTLY_REGRESSION_V2][]               | Not Started |
+Coverage      | [CODE_COVERAGE_V2][]                    | Not Started |
+Coverage      | [FUNCTIONAL_COVERAGE_V2][]              | Not Started |
+Issues        | [NO_HIGH_PRIORITY_ISSUES_PENDING][]     | Not Started |
+Issues        | [ALL_LOW_PRIORITY_ISSUES_ROOT_CAUSED][] | Not Started |
+Integration   | [PRE_VERIFIED_SUB_MODULES_V2][]         | Not Started |
+Review        | [V3_CHECKLIST_SCOPED][]                 | Not Started |
+Review        | Reviewer(s)                             | Not Started |
+Review        | Signoff date                            | Not Started |

+[DESIGN_DELTAS_CAPTURED]:             {{<relref "/doc/project/checklist.md#design-deltas-captured" >}}
+[DV_PLAN_COMPLETED]:                  {{<relref "/doc/project/checklist.md#dv-plan-completed"
+>}}
@sjgitty https://github.com/sjgitty already has a pending PR #912
https://github.com/lowRISC/opentitan/pull/912 in the template. please
fix the doc only.
—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub
https://github.com/lowRISC/opentitan/pull/928?email_source=notifications&email_token=AJ3RJJOOMLILTNSVOWEOJRLQSSHJTA5CNFSM4JKONSRKYY3PNVWWK3TUL52HS4DFWFIHK3DMKJSXC5LFON2FEZLWNFSXPKTDN5WW2ZLOORPWSZGOCKZEK2A#discussion_r343902495,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AJ3RJJIG7TEPVA2PNEL5N2LQSSHJTANCNFSM4JKONSRA
.

Thanks, amended.


Babel plugin

If we modify ast node, we can use babel plugins as swc plugin.

@kdy1 is this possible?
I'm porting a library that uses some custom babel plugins to swc. Can I just use those plugins? What are the changes I need to make (with some example code if possible)?
Thanks a lot

@haikyuu Yes, it's possible, but it requires lots of work.


Fix submenu navigation in NavigationViewItem

The feature for submenus in NavigationViewTop was previously implemented but left unused prolly because of odd behavior such as stack overflow errors in AutoSuggest.
The problem was traced to the NavigationViewItem.MenuItems dependency property, where a new ObservableCollection was incorrectly used as the default value. According to MS Docs, "dependency property metadata shouldn't include a default reference-type value because that value will be assigned to all instances of the class, creating a singleton class."

Pull request type

Please check the type of change your PR introduces:

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

What is the current behavior?
In the Gallery app if you add submenu items to NavigationView.Top you will get stack overflow
errors on AddItemsToAutoSuggestBoxItems(IList list) for menuItems.

<ui:NavigationView PaneDisplayMode="Top">
ui:NavigationView.MenuItems
<ui:NavigationViewItem  Content="Menu Item 1"
ui:NavigationViewItem.MenuItems
<ui:NavigationViewItem Content="Menu SubItem 1" />
<ui:NavigationViewItem Content="Menu SubItem 2" />
</ui:NavigationViewItem.MenuItems>
</ui:NavigationViewItem>
Issue Number: N/A
What is the new behavior?

Change MenuItems to an ObservableCollection and initialize in ctor
Fix related properties such as HasMenuItems and MenuItemsSource (removed)
Add demo in the Gallery app

Other information

Why did you remove the MenuItemsSource?
Items is for defining in XAML. This is usually an object[] but it contains FrameworkElements.
ItemsSource is for databinding to a collection. Typically uses a DataTemplate to display the items.

ItemsControl.Items Property
ItemsControl.ItemsSource Property

If one of those was broken, then it's better to fix it instead of removing one of the options. You should be able to define a menu directly in XAML or bind to an IEnumerable source (with support for INotifyCollectionChanged).

Here's an update  on MenuItems working with both xaml and viewmodels. I'm still trying to understand why MS uses a source property for ItemsControl; it seems unneeded here. But i prolly lack the experience to make that call.


Multiple environmental isolation

Switch environments by specifying env environment variables, let seata use different environment configurations.
example:
past
+file.conf
+registry.conf
now
+file-dev.conf
+registry-dev.conf
+file.conf
+registry.conf
Use -Denv=dev to recognize the suffix, and choose registry-dev.conf configuration.
when -Denv=default or null, use registry.conf.
when -Denv=unknown, use NULL configuration, at this point some objects will report an error due to missing configuration.

Codecov Report

Merging #1075 into develop will increase coverage by 0.5%.
The diff coverage is 75%.

@@             Coverage Diff              @@
##             develop    #1075     +/-   ##
============================================
+ Coverage      39.07%   39.58%   +0.5%
- Complexity      1119     1134     +15
============================================
  Files            221      221
  Lines           8832     8832
  Branches        1130     1130
============================================
+ Hits            3451     3496     +45
+ Misses          4940     4895     -45
  Partials         441      441

Impacted Files
Coverage Δ
Complexity Δ

...a/io/seata/discovery/registry/RegistryFactory.java
0% <0%> (ø)
0 <0> (ø)
:arrow_down:

...ery/registry/consul/ConsulRegistryServiceImpl.java
4.76% <100%> (ø)
1 <1> (ø)
:arrow_down:

...covery/registery/etcd/EtcdRegistryServiceImpl.java
14.4% <100%> (ø)
3 <0> (ø)
:arrow_down:

...very/registry/zk/ZookeeperRegisterServiceImpl.java
63.77% <100%> (ø)
24 <0> (ø)
:arrow_down:

...o/seata/core/protocol/AbstractIdentifyRequest.java
87.09% <0%> (+39.78%)
22% <0%> (+10%)
:arrow_up:

...java/io/seata/core/protocol/RegisterTMRequest.java
100% <0%> (+100%)
5% <0%> (+5%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 95eab9c...2657113. Read the comment docs.

Good!

@leizhiyuan To read configs from application,it's better to create a module separately to do that.like seata-spring-boot-starter.

@leizhiyuan To read configs from application,it's better to create a module separately to do that.like seata-spring-boot-starter.

Yes， What I mean is  if we write like this ，we need to invoke  System.setxxx in  seata-spring-boot-starter, It is arbitrary..

@leizhiyuan in spring-boot starter ,we  can provide another way to read configurations.
use the benefit of profile to do the configuration isolation,This means that the client can discard the file.conf file entirely.

@leizhiyuan We provide full default values ，user can override them in the application files.

only available in server，ok

This kind of configuration isolation is acceptable on the server side, but may not be so good on the client side, such as spring-boot.

I think an environment variable can be added. The name is SEATA_CONFIG_ENV. Before loading the configuration file, both the server and the client should read the environment variable of the current System (using system.getenv).If it's not blank then load the corresponding configuration files, such as registry-dev.conf and file-dev.conf, where dev is the value read from the environment variable.

I think an environment variable can be added. The name is SEATA_CONFIG_ENV. Before loading the configuration file, both the server and the client should read the environment variable of the current System (using system.getenv).If it's not blank then load the corresponding configuration files, such as registry-dev.conf and file-dev.conf, where dev is the value read from the environment variable.

Good idea.

由于前期Seata社区治理规范问题部分代码作者未签署CLA，可能引发社区知识产权风险问题。请所有在Seata社区贡献过代码（包含：主项目、官网、samples和多语言项目等）的 contributor 帮忙在这个链接登录github账号签署相应的开发者CLA，https://cla-assistant.io/seata/seata  。2023.1.31 未签署CLA的代码将会被rewrite，拜托大家帮忙签一下。


test-vm-e2e doesn't work in CI pipeline

Describe the bug

vm-agent doesn't work in the CI e2e jobs. After checking on the Linux VM, we found that the service antrea-agent is not active, and these errors were got,
Starting antrea-agent service
● antrea-agent.service - "antrea-agent as a systemd service"
   Loaded: loaded (/etc/systemd/system/antrea-agent.service; enabled; vendor preset: enabled)
   Active: activating (auto-restart) (Result: exit-code) since Wed 2023-05-24 16:19:33 UTC; 3ms ago
  Process: 26884 ExecStart=/usr/sbin/antrea-agent --config=/etc/antrea/antrea-agent.conf --logtostderr=false --log_file=/var/log/antrea/antrea-agent.log (code=exited, status=1/FAILURE)
  Process: 26866 ExecStartPre=/etc/antrea/install-vm.sh --validate-ovs --ovs-bridge br-int (code=exited, status=0/SUCCESS)
 Main PID: 26884 (code=exited, status=1/FAILURE)

May 24 16:19:33 vmbmtest0-1 systemd[1]: antrea-agent.service: Main process exited, code=exited, status=1/FAILURE
May 24 16:19:33 vmbmtest0-1 systemd[1]: antrea-agent.service: Failed with result 'exit-code'.
May 24 16:19:34 vmbmtest0-1 systemd[1]: antrea-agent.service: Service hold-off time over, scheduling restart.
May 24 16:19:34 vmbmtest0-1 systemd[1]: antrea-agent.service: Scheduled restart job, restart counter is at 1.
May 24 16:19:34 vmbmtest0-1 systemd[1]: Stopped "antrea-agent as a systemd service".
May 24 16:19:34 vmbmtest0-1 systemd[1]: Starting "antrea-agent as a systemd service"...
May 24 16:19:34 vmbmtest0-1 systemd[1]: Started "antrea-agent as a systemd service".
May 24 16:19:34 vmbmtest0-1 antrea-agent[26911]: /usr/sbin/antrea-agent: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by /usr/sbin/antrea-agent)
May 24 16:19:34 vmbmtest0-1 antrea-agent[26911]: /usr/sbin/antrea-agent: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /usr/sbin/antrea-agent)
May 24 16:19:34 vmbmtest0-1 systemd[1]: antrea-agent.service: Main process exited, code=exited, status=1/FAILURE

After checking the setup, we found that the Linux VM to run antrea-agent is using Ubuntu 18.04
~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.6 LTS
Release:        18.04
Codename:       bionic

But antrea-agent bits is compiled based on Ubuntu docker image 22.04 (https://github.com/antrea-io/antrea/blob/main/ci/jenkins/test-vm.sh#L312), this caused that the antrea-agent's dependent library was lost on the actual VM in the runtime.
We need to resolve this issue by providing static link when compiling antrea-agent bits inside a container env.
To Reproduce

run make docker-bin in directory antrea on any Linux VM,
copy antrea/bin/antrea-agent to Ubuntu 18.04
configure the necessary configurations needed by antrea-agent
run antrea-agent bits

Expected

antrea-agent is supposed to run successfully.
Actual behavior

antrea-agent is crashed.
Versions:

Antrea main branch, it may exist for several releases.
Additional context

hey @wenyingd, did you tried apt update and apt upgrade after that ?? I think that info after apt upgrade wd be beneficial, to know further about the issue : )

@prakrit55 The issue has explained the problem:

But antrea-agent bits is compiled based on Ubuntu docker image 22.04 (https://github.com/antrea-io/antrea/blob/main/ci/jenkins/test-vm.sh#L312), this caused that the antrea-agent's dependent library was lost on the actual VM in the runtime.
We need to resolve this issue by providing static link when compiling antrea-agent bits inside a container env.

It should be fixed by https://github.com/antrea-io/antrea/pull/5988, no further investigation is required.

Fixed by #5988 and #6008


Request: Struct Definition to Class Definition

I pretty regularly build out classes as structs first, just because it can go a lot faster initially, and makes testing easy.
However, I usually need to expand these from just data structs into full-fat classes to start adding methods to them, which is pretty tedious.
So, the transform would look like this:
NetworkLayer = Struct.new "NetworkLayer" :next_layer, :nodes

Which would become this:
class NetworkLayer                       # name of class taken from first arg passed to Struct#new
    attr_accessor :next_layer, :nodes    # accessors for each kwarg that went into Struct#new

    def initialize(next_layer:, nodes:)  # same kwargs as Struct#new...
        @next_layer = next_layer         # ... which are then assigned to instance vars of the same name
        @nodes = nodes
    end
end

Happy to try making a PR if you think that's interesting!

https://github.com/JavierGelatti/RubyRefactorings/blob/main/src/main/scala/com/refactorings/ruby/InlineStruct.scala
Ooo oops sorry! Already implemented 👍


Package["service-configuration"] undefined

I have been struggling trying to get to the bottom of this bug in the latest meteor stable and RC 10 and 11 that also occurs when building my application with iOS platform is below. When running on the web, there is no issues or output from the logs. Connects perfectly fine with no issues in a browser. The issue comes when building for iOS and causes the application to hang with this error in the browser. Other times, the application will load but cause the routes to not load so you get the standard no route configured in your app but the most common is stuck at splash screen and this output in the Xcode debug on simulator or live device.
TypeError: undefined is not an object (evaluating 'Package["service-configuration"].ServiceConfiguration'):88:http://meteor.local/

I have tried to add service-configuration with no luck. Still shows up. Also have removed this and found the reference to it in the version file inside .meteor. Removed that and still comes into play. Only things are meteor up is used but rebuilt the application without using MUP to deploy and will generate.
Removing Kadira solved this issue. The only thought is something to do with the development/production level that building is causing this.

also seeing this.
has anyone been able to debug the cause ?
thank you.

How's this related to Kadira?


Enhancement: Self-Containment for non-internet connected environments

I would love to see a version of this where all resources are contained in-instance without any need for external CDNs so that internet connectivity isn't a factor in using this great tool.
Maybe a toggle property so you could prefer the CDN version if there is internet but for those without they could toggle it after install and it would reference locally hosted versions of those items.

Thanks for the feedback. The first versions of Xplore were indeed self contained, however this became a limitation on features and so using other libraries became necessary. While it's possible to import them all into ServiceNow, at the time it didn't make sense.
You could absolutely go through the UI Macro snd_xplore_main yourself and replace all the CDN calls to make them local.
I'll keep open as a reminder for future since I'm sure there are others in this situation.


fix: correct managedPaths description

What kind of change does this PR introduce?

Fix
Did you add tests for your changes?
NA

Does this PR introduce a breaking change?
No

Thanks


Possible diagnostics bug in v<IP_ADDRESS>?

I was helping another user on irc whom also is setup as a windows node due to him getting " Verify TCP 32749	Outbound connection to 32749 failed. Please try unblocking outbound traffic to 32749.  Result	FAILED " so I went to my windows wallet and ran diags knowing I had no issue with and am serving connections.  http://xion.dopeshit.net/~blah/gridcoin/diagerror-v<IP_ADDRESS>-g-research.png and it fails on mine although shows inbound.  The other user has other issues , such as 0 magnitude after last superblock.

I have a fail error on the diagnostics section of my windows client - Verify Tcp 32749.
The Diagnostic Result is Outbound connection to 32749 failed. Please try unblocking outbound traffic to 32749.
32749 is unblocked for both inbound and outbound traffic and has been unblocked since I first installed my wallet/client some 3 months + ago. I have not reset any parameters and there has been no change in my firewall permissions or router permission since then. I fact according to these permissions this port is open inbound and outbound.
I also have a 0 Mag condition on my wallet.

It looks like the external node.gridcoin.us went down about 500 blocks ago and thats the node it tries to perform the test against.   I reset it.  Please try again now.
For 0 magnitude, check the magnitude in the last superblock (list magnitude CPID).  If its 0, then we are waiting for a superblock with your CPID in it.  If thats the case, check the neural network to ensure your future magnitude will be picked up.

The TCP Outbound connection to 32749 is now Passed
Do to 0 magnitude the superblock did change this and solved the issue for us.


timestamp are using incorrect time on created_at and updated_at

I have a model with hasTimestamps: true when created a new object the properties created_at and updated_at are stored like the same, this is good, later when I update the object the property created_at changes
When I create the object

When I create the object and later update it

In the moment of the test my local time is 9:47 (UTC - 5) and I'm using postgres 9.4

Hey @rkmax.
Which version of bookshelf are you using? I changed the behaviour of timestamps between 0.8.1 and the current HEAD, so if try pointing your project at head to see if the problem goes away.
Failing that, could you confirm that the problem is originating from Bookshelf and not your table definition? (ie. you're not accidentally updating with a trigger function or something).
And is this happening whenever you call save() on an object, or just in specific circumstances?

Btw, the reason I asked about the trigger was because of this issue: https://github.com/tgriesser/bookshelf/issues/759
It's not necessarily related though.

I'm using 0.7.9. I dont have any trigger on my tables

Cool. Can you try using bookshelf at HEAD to see if the problem persists?

Any luck, @rkmax? I'm keen to resolve this one.

no, the problem persis

Would you be able to provide a a simplified version of the code that causes this? There's not much to work with here.

I'm thinking the problem is I'm using timestamp and not timestamptz on postgres, so postgres is converting the values. because if you see the first image you can see a 5 hours diff, that is my timezone (UTC-5)

The project leadership of Bookshelf recently changed. In an effort to advance the project we close all issues older than one year.
If you think this issue needs to be re-evaluated please post a comment on why this is still important and we will re-open it.
We also started an open discussion about the future of Bookshelf.js here https://github.com/bookshelf/bookshelf/issues/1600. Feel free to drop by and give us your opinion.
Let's make Bookshelf great again


Hide 'CROSSWALK_APP_TOOLS_CACHE_DIR' for iOS help

As iOS backend don't need to download crosswalk prebuild packages,
the CROSSWALK_APP_TOOLS_CACHE_DIR is useless for now and need to
be hide.
https://crosswalk-project.org/jira/browse/XWALK-4152

@r0b5t4 PTAL, thanks

@jondong If this is a very high priority for you, we can use that patch. Otherwise I'll make platform implementations able to export extra help info, so this does not need to be in the frontend.

@r0b5t4 not in a hurry, I also don't think this fix is appropriate enough. :) I'll wait for your changes to get landed. please keep me posted.


background color segmentation on a particular field

Say you have a log file with some context from component="foo" and some from component="bar", etc. An option to say --segment=component that would pick a background color for the "foo" log records and another for the "bar" log records might be helpful. This could be the default when rendering logs from multiple input files, or when (eventually) handling logs output from multiple containers with docker-compose ... output.

Another example might be separate lambda instances in aws logs tail --follow /aws/lambda/${fnname} output.
...
2021-11-22T23:49:37.474000+00:00 2021/11/22/[$LATEST]0a924d337cb44629a161d8885d0a0f3e 2021/11/22 23:49:37 Received SHUTDOWN event
2021-11-22T23:49:37.474000+00:00 2021/11/22/[$LATEST]0a924d337cb44629a161d8885d0a0f3e 2021/11/22 23:49:37 Exiting
...


Serverless version of the app

Pros: don't have to keep remembering to log in
Cons: Risk of code diverging; right now there's no re-creation of the schema on update (but maybe that's fine for the web version? Maybe we want to just have that happen on a local run of streamlit?); has to be rebuilt for every user (so every user has a longer load time)
Feeling cute, may pull later

Closed because decided to self-host instead (because viewing on Mac Firefox is still broken - more details in #3 ), but will leave the branch in case that ever gets reported as fixed.


feat: use actual vm ressources cost

in  crates/primitives/starknet/src/fees/mod.rs, in  calculate_l1_gas_by_vm_usage
    let vm_resource_fee_costs = BTreeMap::from([
        (String::from("n_steps"), 1_f64),
        (String::from("pedersen_builtin"), 1_f64),
        (String::from("range_check_builtin"), 1_f64),
        (String::from("ecdsa_builtin"), 1_f64),
        (String::from("bitwise_builtin"), 1_f64),
        (String::from("poseidon_builtin"), 1_f64),
        (String::from("output_builtin"), 1_f64),
        (String::from("ec_op_builtin"), 1_f64),
    ]);

all values are set to 1
I think we can use the values defined here instead: https://docs.starknet.io/documentation/architecture_and_concepts/Network_Architecture/fee-mechanism/#general_case

@EvolveArt or am I missing something?

i can take this

Go ahead

would the "output_builtin" amount be equivalent to the keccak amount here?
https://docs.starknet.io/documentation/architecture_and_concepts/Network_Architecture/fee-mechanism/#general_case

the PR I opened assumes output_builtin to be equivalent to the keccak cost. It does cause some tests to fail, which are included in the screenshot on the pr


[ DESIGN ] Credits Screen

Design the art and logic of the credits screen. Includes

[x] Background art;
[x] Game title art;
[x] Names of all those involved in the project and their role/contribution;
[x] Button to skip and go back to the main menu;

Issue resolved. All tasks done. Only waiting for the banner.