[Bug] Watch-DbaXESession - Cannot Convert XEStore To DbaInstanceParameter

Report

When cmdlet is used like Example 1 ( Watch-DbaXESession -SqlInstance sql2017 -Session system_health ) I receive an error like the below. I've run the cmdlet in this fashion on remote servers and on localhost.
Get-DbaXESession : Cannot process argument transformation on parameter 'SqlInstance'.
Cannot convert value "XEStore(Server='localhost')"
    to type "Sqlcollaborative.Dbatools.Parameter.DbaInstanceParameter[]".
Error: "Cannot convert value "XEStore (Server='localhost')"
    to type "Sqlcollaborative.Dbatools.Parameter.DbaInstanceParameter".
Error: "Failed to interpret input as Instance: XEStore Server='ghsmsvmssis1')""
At C:\Program Files\WindowsPowerShell\Modules\dbatools\1.0.147\allcommands.ps1:79139 char:57
+ ...               $status = Get-DbaXESession -SqlInstance $server -Session $sessionname
+                                                           ~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Get-DbaXESession],
           ParameterBindingArgumentTransformationException
    + FullyQualifiedErrorId : ParameterArgumentTransformationError,Get-DbaXESession

Workaround
I am able to work through this by piping the session object from Get-DbaXESession
Get-DbaXESession -SqlInstance localhost -Session system_health | Watch-DbaXESession

Host used

[x] powershell.exe
[x] ISE
[x] VS Code
[x] wt.exe ( powershell.exe )

Errors Received

PSMessageDetails      :
Exception             :
System.Management.Automation.ParameterBindingArgumentTransformationException:
Cannot process argument transformation on parameter 'SqlInstance'.
Cannot convert value "XEStore (Server='localhost')"
to type "Sqlcollaborative.Dbatools.Parameter.DbaInstanceParameter[]".
Error: "Cannot
convert value "XEStore (Server='localhost')"
to type "Sqlcollaborative.Dbatools.Parameter.DbaInstanceParameter".
Error: "Failed to interpret
input as Instance: XEStore (Server='localhost')""
---> System.Management.Automation.ArgumentTransformationMetadataException:
Cannot convert
value "XEStore (Server='localhost')" to type "Sqlcollaborative.Dbatools.Parameter.DbaInstanceParameter[]".
Error: "Cannot convert value
"XEStore (Server='localhost')" to type "Sqlcollaborative.Dbatools.Parameter.DbaInstanceParameter".
Error: "Failed to interpret input as
Instance: XEStore (Server='localhost')"" ---> System.Management.Automation.PSInvalidCastException:
Cannot convert value "XEStore
(Server='localhost')" to type "Sqlcollaborative.Dbatools.Parameter.DbaInstanceParameter[]".
Error: "Cannot convert value "XEStore
(Server='localhost')" to type "Sqlcollaborative.Dbatools.Parameter.DbaInstanceParameter".
Error: "Failed to interpret input as Instance:
XEStore (Server='localhost')"" ---> System.Management.Automation.PSInvalidCastException:
Cannot convert value "XEStore
(Server='localhost')" to type "Sqlcollaborative.Dbatools.Parameter.DbaInstanceParameter".
Error: "Failed to interpret input as Instance:
XEStore (Server='localhost')" ---> System.Management.Automation.PSArgumentException:
Failed to interpret input as Instance: XEStore
(Server='localhost')
   at Sqlcollaborative.Dbatools.Parameter.DbaInstanceParameter..ctor(Object Input) in
D:\Code\Github\dbatools\bin\projects\dbatools\dbatools\Parameter\DbaInstanceParameter.cs:line 636
   at lambda_method(Closure , Object )
   at System.Management.Automation.LanguagePrimitives.ConvertViaConstructor.Convert(Object valueToConvert,
   Type resultType, Boolean recursion,
PSObject originalValueToConvert, IFormatProvider formatProvider, TypeTable backupTable)
   --- End of inner exception stack trace ---
   at System.Management.Automation.LanguagePrimitives.ConvertViaConstructor.Convert(Object valueToConvert,
   Type resultType, Boolean recursion,
PSObject originalValueToConvert, IFormatProvider formatProvider, TypeTable backupTable)
   at System.Management.Automation.LanguagePrimitives.ConversionData`1.Invoke(Object valueToConvert,
   Type resultType, Boolean recurse, PSObject
originalValueToConvert, IFormatProvider formatProvider, TypeTable backupTable)
   at System.Management.Automation.LanguagePrimitives.ConvertTo(Object valueToConvert,
   Type resultType, Boolean recursion, IFormatProvider
formatProvider, TypeTable backupTypeTable)
   at System.Management.Automation.LanguagePrimitives.ConvertScalarToArray(Object valueToConvert,
   Type resultType, Boolean recursion, PSObject
originalValueToConvert, IFormatProvider formatProvider, TypeTable backupTable)
   --- End of inner exception stack trace ---
   at System.Management.Automation.LanguagePrimitives.ConvertScalarToArray(Object valueToConvert,
   Type resultType, Boolean recursion, PSObject
originalValueToConvert, IFormatProvider formatProvider, TypeTable backupTable)
   at System.Management.Automation.LanguagePrimitives.ConversionData`1.Invoke(Object valueToConvert,
   Type resultType, Boolean recurse, PSObject
originalValueToConvert, IFormatProvider formatProvider, TypeTable backupTable)
   at System.Management.Automation.LanguagePrimitives.ConvertTo(Object valueToConvert,
   Type resultType, Boolean recursion, IFormatProvider
formatProvider, TypeTable backupTypeTable)
   at System.Management.Automation.ArgumentTypeConverterAttribute.Transform(EngineIntrinsics engineIntrinsics,
   Object inputData, Boolean
bindingParameters, Boolean bindingScriptCmdlet)
   --- End of inner exception stack trace ---
   at System.Management.Automation.ArgumentTypeConverterAttribute.Transform(EngineIntrinsics engineIntrinsics,
   Object inputData, Boolean
bindingParameters, Boolean bindingScriptCmdlet)
   at System.Management.Automation.ParameterBinderBase.BindParameter(CommandParameterInternal parameter,
   CompiledCommandParameter
parameterMetadata, ParameterBindingFlags flags)
   --- End of inner exception stack trace ---
   at System.Management.Automation.ExceptionHandlingOps.CheckActionPreference(FunctionContext funcContext,
   Exception exception)
   at System.Management.Automation.Interpreter.ActionCallInstruction`2.Run(InterpretedFrame frame)
   at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)
   at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)
   at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)
   at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)
TargetObject          :
CategoryInfo          : InvalidData: (:) [Get-DbaXESession], ParameterBindingArgumentTransformationException
FullyQualifiedErrorId : ParameterArgumentTransformationError,Get-DbaXESession
ErrorDetails          :
InvocationInfo        : System.Management.Automation.InvocationInfo
ScriptStackTrace      : at Watch-DbaXESession<Process>,
C:\Program Files\WindowsPowerShell\Modules\dbatools\1.0.147\allcommands.ps1:
    line 79139
                        at <ScriptBlock>, <No file>: line 1
PipelineIterationInfo : {}

Steps to Reproduce

Run the below.
Watch-DbaXESession -SqlInstance localhost -Session system_health
Expected Behavior

I expect continuous event output.
Actual Behavior

I received an error.
Environmental information
🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨
Please provide the output of the below script
PowerShell Version        : 5.1.18362.1171
dbatools latest installed : 1.0.147
Culture of OS             : en-US

SQL Server:
Occurs on the below versions
Microsoft SQL Server 2012 (SP4) (KB4018073) - 11.0.7001.0 (X64)
                Aug 15 2017 10:23:29
                Copyright (c) Microsoft Corporation
                Enterprise Edition: Core-based Licensing (64-bit) on Windows NT 6.3 <X64>
                (Build 9600: ) (Hypervisor)

Microsoft SQL Server 2016 (SP2-CU12) (KB4536648) - 13.0.5698.0 (X64)
                Feb 15 2020 01:47:30
                Copyright (c) Microsoft Corporation
                Enterprise Edition: Core-based Licensing (64-bit) on Windows Server 2016 Standard 10.0 <X64>
                (Build 14393: ) (Hypervisor)

Microsoft SQL Server 2017 (RTM-CU21) (KB4557397) - 14.0.3335.7 (X64)
                Jun 12 2020 20:39:00
                Copyright (C) 2017 Microsoft Corporation
                Enterprise Edition: Core-based Licensing (64-bit) on Windows Server 2016 Standard 10.0 <X64>
                (Build 14393: ) (Hypervisor)

All with the same language.
us_english

After looking at it a little bit more. I think the issue may be related to the $server variable being reset in the foreach loop on line 79082 in the allcommands.ps1 file. Or maybe Get-DbaXeSession isn't able to process the $xesession.Parent.
Here is a link to the function ps1 file.
https://github.com/sqlcollaborative/dbatools/blob/de024aaa616fe37de7c8eedb796a2352ab08529a/functions/Watch-DbaXESession.ps1#L89

Does it work if you don't use localhost and the actual server's hostname instead?

This may not be something we can properly support and instead need to require a session be provided. Based on how the XEStore works
https://docs.microsoft.com/en-us/dotnet/api/microsoft.sqlserver.management.xevent.xestore?view=sql-smo-150

Parent is not something that is kept local, it is implied from the keychain The concept of a parent is really about the hiearchy up and under the root if we only do this via parents then we will not be able to instantiate objects with only lightweight SfcKeyChain sets

Does it work if you don't use localhost and the actual server's hostname instead?

It doesn't work if I use the hostname either.

This may not be something we can properly support and instead need to require a session be provided. Based on how the XEStore works
https://docs.microsoft.com/en-us/dotnet/api/microsoft.sqlserver.management.xevent.xestore?view=sql-smo-150

Parent is not something that is kept local, it is implied from the keychain The concept of a parent is really about the hiearchy up and under the root if we only do this via parents then we will not be able to instantiate objects with only lightweight SfcKeyChain sets

Hmm. I don't quite understand that XEStore class. Isn't there a way to just pass in the SqlInstance name instead on failed line where it starts with $status instead of XEStore.Parent? I may misunderstand the way the function is working though.

The Microsoft.SqlServer.Management.XEvent.Session namespace has the Parent property that is the proper instance name. If you pass in the SqlInstance then we are building an XEStore object:
https://github.com/sqlcollaborative/dbatools/blob/de024aaa616fe37de7c8eedb796a2352ab08529a/functions/Watch-DbaXESession.ps1#L82-L86
Purely on the class documentation it does not appear the Microsoft.SqlServer.Management.XEvent.XEStore property for Sessions that we output at the end of the above block is the same type. That is likely where the issue is but without debugging could not say how that can be fixed right off.

Just a wild guess, but with #7284 we introduced a .Clone() at the end of $SqlConn = $server.ConnectionContext.SqlConnectionObject to prevent some problems with another command. Maybe that would help here as well.

From the message Cannot convert value "XEStore(Server='localhost')" to type "Sqlcollaborative.Dbatools.Parameter.DbaInstanceParameter[]" I would think that $server is not a Server SMO as expected but of type "XEStore". So line $server = $xesession.Parent is ok for piped in output from Get-DbaXESession, but not from the code if lines 82 to 86.
My lab is down as it is weekend, but we could use Get-DbaXESession instead of the lines 82 to 86 and see if that works. Only drawback: Get-DbaXESession does more work than needed here.

One last thing: As the errror is raised trom the ctahc block, it would be interesting where the error originally happend. Prpbably line 117 with $server.ConnectionContext.ConnectionString.

I added some debug messages and they show that the parent of $xesession is of type "Microsoft.SqlServer.Management.XEvent.XEStore" and not a Server SMO as expected.

The .Parent is added here:
https://github.com/sqlcollaborative/dbatools/blob/048a3d8dd9d343125e6c474ce095924c5bbd5f39/functions/Get-DbaXESession.ps1#L106
So I think we should use Get-DbaXESession inside of Watch-DbaXESession to handle piped input the same way as parameter input. Will open a pull request for that.


cataclysm: Add option to save user generated data in home dir

Currently reinstalling the HEAD version will prune
templates, configs and save files. Allowing
users to store those files in $HOME will prevent this.

Perhaps this should be the default, or only option? User data is generally better kept in the user home directory, especially under Homebrew's sandboxed model. Seems to me like this should be the default, unless there are cataclysm-specific compatibility issues, in which case we should probably introduce a pkgshare-based data directory.

I also think it should've been the default. But changing it silently could confuse users so I didn't do it that way... what's the policy in brew about BC breaks?

It's really a judgment call. Depends on how many existing users we think there are of the Homebrew package, and the extent of the breakage. Hard to say here.
@mistydemeo, you're the author on many of the previous cataclysm commits. What do you think?

Since most people will currently lose their saves on an update anyways, I'll update the PR to use $HOME as default.

That makes sense.

updated :)

this should be merged.

Oh I just saw that the tests fail... :/ will need another update sigh

It works with this commit, I don't know why it failed.

@BrewTestBot test this please

Error: 1 problem in 1 formula
homebrew/games/cataclysm:
  * Don't negate 'build.with?': use 'build.without?'

Ping

Closing due to lack of response, but please feel free to reopen!


Ignore /notes in git-generated .zip archives

Inspired by @barryvdh's comment in #268. This dramatically decreases the
size of the generated archive (a little more than a 50% size reduction).
$ git log --oneline -n 1
e29c7b6 bumped version to 5.3.2-DEV
$ git archive -o without_patch.zip HEAD .
$ echo "/notes export-ignore" >> ./.gitattributes
$ git ci -am "Ignore /notes in git-generated .zip archives"
$ git archive -o with_patch.zip HEAD .
$ du -h with{,out}_patch.zip
428K    with_patch.zip
1.0M    without_patch.zip

Is including the RFCs worth a 100% size increase for most developers?

Thank you @ciarand.


Teach build-script to build Foundation Dependencies (Zlib, libxml2, LibCurl)

This PR teaches build-script to build libxml2, curl, and zlib, which are dependencies for building foundation.

@swift-ci please test

Heh, interesting, this could certainly help with cross-compiling Foundation. Any reason you left the libicu dependency out?

Heh, interesting, this could certainly help with cross-compiling Foundation. Any reason you left the libicu dependency out?

Indeed. build-script-impl already knows how to build libicu. Someone could come along and migrate it to a python product, but that's not my goal today anyway.
https://github.com/apple/swift/blob/ef2c999c7a8c9004ca107ce4242a055874e089e6/utils/build-script-impl#L2617-L2670
And it's hooked into foundation here;
https://github.com/apple/swift/blob/ef2c999c7a8c9004ca107ce4242a055874e089e6/utils/build-script-impl#L2495-L2516

Oh, my mistake, forgot about that. 🤓

@swift-ci please test

@swift-ci please test

@swift-ci please test

@swift-ci please test Linux


Support Jupytext (MyST-Markdown flavoured) notebooks in NotebookLite, JupyterLite, and Voici directives

Problem

jupyterlite-sphinx does not yet support Jupytext (Markdown) notebooks in its directives. Markdown notebooks are a wonderful solution to existing notebook tooling designed for IPyNB notebooks, which are hard to conquer for traditional version control systems like Git. One of the advantages of notebooks as text-based formats is that they pair up nicely with Markdown-based documentation tooling along with Sphinx and are supported for execution and for other standards in the ecosystem as well.
Proposed Solution

This feature request is copied over from the proposal added in https://github.com/jupyterlite/jupyterlite-sphinx/pull/180#issuecomment-2192628783 as a corollary to the functionality provided and now available since v0.16.0 (release):
The Jupyter extension, Jupytext, provides an API in addition to its CLI. Another worthwhile feature to add to jupyterlite-sphinx would be to allow the .. notebooklite::, ..jupyterlite::, and the ..voici:: directives to accept text-based Markdown notebooks – jupytext as a dependency can then be used with its API to convert the notebook from .md at jupyterlite-sphinx's runtime (maybe even by default, and not opt-in), and then pass/copy it as .ipynb to JupyterLite.
It is to be noted that the JupyterLite interface does have support for Jupytext, but I am not sure if the Markdown notebook is currently runnable – it is not supported right now, based on this discussion: https://github.com/jupyterlite/jupyterlite/discussions/731, so this conversion from .md to .ipynb at build time could be a reasonable temporary solution for notebook authors until JupyterLite itself can gain support. We can instruct users in the documentation and let them be aware through the means of an admonition that their notebooks are available in the JupyterLite interface as IPyNB, even if they pass them in their directives as Markdown. Some use cases are available in the "Additional context" section below.
Additional context

jupyterlite-sphinx is increasingly used in Scientific Python documentation, as are Markdown notebooks. This feature can potentially resolve the problem of having extra targets/phonies in the docs Makefiles implemented in https://github.com/scipy/scipy/pull/20303, providing advantageous cleanup; and
this also removes the addition of a custom Sphinx extension connecting to the config-inited event in https://github.com/PyWavelets/pywt/pull/741, which should also help make the docs directory cleaner at the time of rebuilds, since Markdown-based notebooks will subsequently not be required to be paired with their IPyNB counterparts (which may have been git-ignored or excluded from inclusion in Sphinx).
Jupytext has an emphasis on round-trip conversion, which means that there is no potential loss of metadata (and data) when converting notebooks from one format to another (and back) – which can be used as a motivator towards this feature, even if it might be a temporary ask.

cc @melissawm and @steppi

Also, since jupyterlite-sphinx has not had a v1 release yet, we could make this an experimental feature by mentioning it as such in the documentation and enabling it only via a jupyterlite_experimental boolean config value in conf.py – similar to how scikit-build-core enables experimental features in pyproject.toml, therefore making this opt-in instead of opt-out in the meantime while Jupytext support matures.


TextField controller prevents content from being pushed up

Steps to reproduce

Create a Scaffold and use the following structure as the body: Container - SingleChildScrollView - Column
Divide the screen into two containers
Fill the bottom container with a TextField-Widget
Add a TextFieldController to the TextField-Widget
Click on the TextField-Widget

Expected results
Both containers are pushed upwards so that there is enough space for the keyboard below the container with the TextField-Widget.
Actual results
The keyboard appears but is displayed on top of the content. Nothing is pushed up. When I remove the TextFieldController, everything works just as expected.
Code sample
Code sample
This one doesn't push anything up:
@override
  Widget build(BuildContext context) {
    textFieldController = TextEditingController();
    double screenWidth = MediaQuery.of(context).size.width;
    double screenHeight = MediaQuery.of(context).size.height;
    return Scaffold(
      body: Container(
        color: Colors.green,
        child: SingleChildScrollView(
          child: Column(
            children: [
              Container(
                height: screenHeight*0.85,
                width: screenWidth,
                color: Colors.red,
                child: Column(
                  children: [
                    Text("fewefwe"),
                    Text("fewefwe"),
                    Text("fewefwe"),

                  ],
                ),
              ),
              Container(
                padding: EdgeInsets.only(
                  top: screenHeight*0.05
                ),
                height: screenHeight*0.15,
                color: Colors.green,
                child: TextField(
                  controller: textFieldController,
                ),
              )
           ],
          ),
        ),
      ),
    );
  }

This one does push everything up:
@override
  Widget build(BuildContext context) {
    textFieldController = TextEditingController();
    double screenWidth = MediaQuery.of(context).size.width;
    double screenHeight = MediaQuery.of(context).size.height;
    return Scaffold(
      body: Container(
        color: Colors.green,
        child: SingleChildScrollView(
          child: Column(
            children: [
              Container(
                height: screenHeight*0.85,
                width: screenWidth,
                color: Colors.red,
                child: Column(
                  children: [
                    Text("fewefwe"),
                    Text("fewefwe"),
                    Text("fewefwe"),

                  ],
                ),
              ),
              Container(
                padding: EdgeInsets.only(
                  top: screenHeight*0.05
                ),
                height: screenHeight*0.15,
                color: Colors.green,
                child: TextField(
                ),
              )
           ],
          ),
        ),
      ),
    );
  }

Screenshots or Video

Screenshots / Video demonstration
[Upload media here]

Logs
Logs
[Paste your logs here]

Flutter Doctor output
Doctor output
    • DevTools version 2.28.2

[√] Windows Version (Installed version of Windows is version 10 or higher)

[!] Android toolchain - develop for Android devices (Android SDK version 33.0.1)
    • Android SDK at C:\Users\Marc\AppData\Local\Android\Sdk
    • Platform android-33, build-tools 33.0.1
    • ANDROID_HOME = C:\Users\Marc\AppData\Local\Android\Sdk
    • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)
    ! Some Android licenses not accepted. To resolve this, run: flutter doctor --android-licenses

[√] Chrome - develop for the web
    • Chrome at C:\Program Files (x86)\Google\Chrome\Application\chrome.exe

[√] Visual Studio - develop Windows apps (Visual Studio Community 2022 17.8.4)
    • Visual Studio at C:\Program Files\Microsoft Visual Studio\2022\Community
    • Visual Studio Community 2022 version 17.8.34408.163
    • Windows 10 SDK version 10.0.22621.0

[√] Android Studio (version 2021.3)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)

[√] IntelliJ IDEA Ultimate Edition (version 2020.2)
    • IntelliJ at C:\Program Files\JetBrains\IntelliJ IDEA 2020.2.3
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart

[√] VS Code (version 1.85.2)
    • VS Code at C:\Users\Marc\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension can be installed from:
       https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter

[√] Connected device (4 available)
    • sdk gphone x86 64 (mobile) • emulator-5554 • android-x64    • Android 13 (API 33) (emulator)
    • Windows (desktop)          • windows       • windows-x64    • Microsoft Windows [Version 10.0.19045.3930]
    • Chrome (web)               • chrome        • web-javascript • Google Chrome 121.0.6167.140
    • Edge (web)                 • edge          • web-javascript • Microsoft Edge 121.0.2277.98
    ! Device emulator-5562 is offline.

[√] Network resources
    • All expected network resources are available.

Thanks for the report @Gauerdia
I think the behavior you are seeing could be due to your code implementation, as, your widget structure is SingleChildScrollView -> Column -> Container -> Column. So I think the Container you have could be triggering the behavior you are seeing.
Can you elaborate what is your use case and trying to achieve ?

You may try to search for similarly built features and check if they help in your case or not. One such example is this that you can go through and see if it matches with your case and implementation or not.


Fixes #557 Scrollbars bouncing

Fixes #557
Changed the loader - the previous one was too large and thus created an element larger than the screen.

Deployed to: http://staging.quran.com:33100

Deployed to: http://staging.quran.com:33113


Lili edits jan2021

Address some points discussed in the slack platform:

Adding definitions for the CDNO NCF terms (e.g. dietary nutritional component, dietary fibre etc)
Fixing non-standard characters (which aren’t compiling in protege) in the template google sheet, e.g.: γ-linolenic acid where the γ doesn’t work. Maybe we can change to gamma-.
Checking label extensions e.g. flavonoid c6--c3--c6 in chebi it’s just flavonoids do we want the extra c6-- stuff?Once steps 2-3 are done we can (very easily) make the whole set of concentration terms. Then begin mapping the concentration terms  to INFOODS USDA etc (i’ve made another tab in the spreadsheet for mappings).
Find appropriate parents for the dangling terms that should be under dietary nutritional component (e.g. glycerol, vitamin K etc).

Thanks @kaiiam, I think the problem was that I was opening the csv files before saving them in Libreoffice in linux. Now I just saved them directly, I changed "," for "|" thanks.
I think sugar derivatives might be a tricky one, I don't know how the original files had purls at the end? I don't get that when I download and save the file, I run all the steps from https://github.com/Southern-Cross-Plant-Science/cdno/wiki/Intermediate-CDNO-Compile-Instructions but I don't know how they have those purls at the end of the line.

Thanks @kaiiam, I think the problem was that I was opening the csv files before saving them in Libreoffice in linux. Now I just saved them directly, I changed "," for "|" thanks.
I think sugar derivatives might be a tricky one, I don't know how the original files had purls at the end? I don't get that when I download and save the file, I run all the steps from https://github.com/Southern-Cross-Plant-Science/cdno/wiki/Intermediate-CDNO-Compile-Instructions but I don't know how they have those purls at the end of the line.

Thanks @LilyAndres, looking at the sugar derivatives and ncf sheets everything is still deleted and re-written. I'm not sure if it's because of linux/unix vs windows, or it's because there are so many changes to the csvs that it's interpreting them as replacements. 🤷♂
You can see the problem I'm describing in the following image of the github differences for the sugar derivatives in this PR. Green is addition/kept lines red is deleted. Deleting and re-writing everything like this makes it really hard to review.

Since this is really the first real release I say we can just go for it for now, but in the future we should move away from hosting the master copy in google docs (their not as stable solution long term as github is). At which time we should be more careful with this i.e. if we only add a few term or changes in a pull request making sure it's not deleting and re-writing the whole file like it's doing now for sugars and ncf.

I think sugar derivatives might be a tricky one, I don't know how the original files had purls at the end?

Don't worry about the last column of urls (not purls, purls are permanent urls), this was my doing. I had added that extra column in the csv but then later removed it in the google docs (as we didn't end up needing it) but I didn't add the change from the google doc to the github version. For now we're treating the google doc as the source of truth, but once we have the release done or sometime in the future we should switch to having the github csv files be the source of truth. I had originally said that I think we'd keep the google doc as the source of truth but after conversations with various colleagues I'm now convinced we should have the edit versions be the github csvs at least in the long term. For now we can keep the google doc for the first release/your thesis.
We can go ahead and merge this.

Thanks @LilyAndres, looking at the sugar derivatives and ncf sheets everything is still deleted and re-written. I'm not sure if it's because of linux/unix vs windows, or it's because there are so many changes to the csvs that it's interpreting them as replacements. 🤷♂
You can see the problem I'm describing in the following image of the github differences for the sugar derivatives in this PR. Green is addition/kept lines red is deleted. Deleting and re-writing everything like this makes it really hard to review.

Since this is really the first real release I say we can just go for it for now, but in the future we should move away from hosting the master copy in google docs (their not as stable solution long term as github is). At which time we should be more careful with this i.e. if we only add a few term or changes in a pull request making sure it's not deleting and re-writing the whole file like it's doing now for sugars and ncf.

I think sugar derivatives might be a tricky one, I don't know how the original files had purls at the end?

Don't worry about the last column of urls (not purls, purls are permanent urls), this was my doing. I had added that extra column in the csv but then later removed it in the google docs (as we didn't end up needing it) but I didn't add the change from the google doc to the github version. For now we're treating the google doc as the source of truth, but once we have the release done or sometime in the future we should switch to having the github csv files be the source of truth. I had originally said that I think we'd keep the google doc as the source of truth but after conversations with various colleagues I'm now convinced we should have the edit versions be the github csvs at least in the long term. For now we can keep the google doc for the first release/your thesis.
We can go ahead and merge this.

Thanks @kaiiam, I think that was me just copying and pasting what I had in the google docs. Sorry, from now on I will just make small changes and not copying and pasting everything from google docs. I like google docs but I can adapt to the don't use it for the next step.

Like I said we can use the google docs for now as you did, but once we've got the first version done, (or some time in the future) we should treat the github csvs as the working copy. The google docs are really convenient I agree and we should use it now while were making lots of changes, but once it's done moving away is better long term (several years down the line etc). Lots of stories about lousing access to your google docs after graduating etc. It's just not a good long term plan.

True! Ok, we will do that, thanks.


Add Default Code for each Language

PS: I would like to work on this issue.

PS: I would like to work on this issue.
Hi @jainaayush01 , thank you for taking out the time to create this issue.

I've assigned this to you. Please go ahead and make a PR.
Happy Coding🚀

Okay

@kothariji I am having my exams till 13th March and  I need to prepare for that. If there is some deadline or you need this feature earlier you can go ahead and assign it to anyone else.
Do let me know.
Regards,
Aayush

@kothariji I am having my exams till 13th March and I need to prepare for that. If there is some deadline or you need this feature earlier you can go ahead and assign it to anyone else.
Do let me know.
Regards,
Aayush

No issues @jainaayush01. Focus on exams and after that you contribute 😄
btw All the best for exams 👍 🚀 😉

Thank you :)

I will be working on this from tomorrow onwards.
and wow I didn't know that this is gonna be a part of GSSoC'21.
Amazing @kothariji, I am also a participant would love to work on this.

@jainaayush01
Since, you said you have exams, I wanted to try this as my first contribution. So will you give me a day time to complete this. If I am not able to complete within tonight, you may take it
@kothariji

I will be working on this from tomorrow onwards.
and wow I didn't know that this is gonna be a part of GSSoC'21.
Amazing @kothariji, I am also a participant would love to work on this.

Sure

Hey, @rohithmsr, thank you for showing interest 🚀
We appreciate🙏 your dedication and efforts towards our project, but according to our contributing guidelines, Issues are assigned on the First Come First Serve basis.
Anyways feel free to check out other unassigned issues, or create an Issue if you spot one🎯.
Thank you😊, and Sorry for the inconvenience caused 🙌

Sure @Akash-Salvi


[SR-7291] Swift local refactoring: adding Hashable conformances automatically

Previous ID
SR-7291

Radar
None

Original Reporter
@nkcsgexi

Type
New Feature

Status
Closed

Resolution
Won't Do

Additional Detail from JIRA

Votes
0

Component/s
Source Tooling

Labels
New Feature, Refactoring, StarterBug

Assignee
@nkcsgexi

Priority
Medium

md5: b321df4bfee75aa02d940890c1269ac4

relates to:

SR-7293 Swift local refactoring: Customize Equatable Conformance

Issue Description:
Developers use Hashable conformances a lot and many hashable implementations fall into patterns. A local refactoring can be implemented to help developers save some manual typing effort, e.g.
// Right click on the name "Animal"
class Animal {
  var age = 0
}

An available refactoring "add hashable conformance" shows up when users right-click on "Animal". After applying the refactoring, we change the code example to:
// Right click on the name "Animal"
class Animal: Hashable {
  var age = 0
  // Auto-generated code
  var hashValue: Int = <#value#>
  static func == (lhs: Animal, rhs: Animal) -> Bool {
    return lhs.hashValue == rhs.hashValue
  }
  // Auto-generated code
}

Notice this refactoring may require little semantic information so that we can implement it by using libSyntax APIs in Swift.

@nkcsgexi Do you remember what the resolution here was? Was the refactoring implemented or revoked in favor of derived conformances?


Ghidra decompiler crashes when Pcode injection returns an empty array

Describe the bug
Returning an empty array from a Pcode injection causes the decompiler to crash.
To Reproduce
Steps to reproduce the behavior:

Install this skeleton language module, which contains a custom Pcode injection library: https://github.com/nneonneo/ghidra-skeleton-language
Create a new project
Import test/prog1.skeleton - it should automatically load using the Skeleton loader
Open the program and run the default analyses
Open function2 in the decompiler

Expected behavior
The function does nothing; therefore, the decompilation should resemble
void function0()
{
  return;
}

Observed behavior
The decompiler dies and the following message is shown in the decompiler pane:
Exception while decompiling 12000000: Decompiler process died

No other debugging information is present in the logs.
Screenshots

Attachments
If applicable, please attach any files that caused problems or log files generated by the software.
Environment (please complete the following information):

OS: macOS 11.4
Java Version: 11.0.2
Ghidra Version: 10.0.2
Ghidra Origin: official GitHub release

Additional context
The offending Pcode injection class:
public class InjectPayloadSkeletonEmpty extends InjectPayloadCallother {

	public InjectPayloadSkeletonEmpty(String sourceName) {
		super(sourceName);
	}

	@Override
	public PcodeOp[] getPcode(Program program, InjectContext con) {
		return new PcodeOp[0];
	}
}

This issue is fairly easily worked around by always returning at least one PcodeOp, but since there is no explicit NOP PcodeOp, you have to invent one (e.g. r0 = COPY r0).

I've also hit this issue. And, emitting an PcodeOp.UNIMPLEMENTED also causes a decompiler crash

Traced the crash to this bit of code in Ghidra/Features/Decompiler/src/decompile/cpp/flow.cc in FlowInfo::doInjection:
  PcodeOp *lastop = xrefControlFlow(iter,startbasic,isfallthru,fc);

  if (startbasic) {		// If the inject code does NOT fall thru
    iter = op->getInsertIter();
    ++iter;			// Mark next op after the call
    if (iter != obank.endDead())
      data.opMarkStartBasic(*iter); // as start of basic block
  }

  if (payload->isIncidentalCopy())
    obank.markIncidentalCopy(firstop, lastop);
  obank.moveSequenceDead(firstop,lastop,op); // Move the injection to right after the call

xrefControlFlow is allowed to return NULL if there are no ops at all, but doInjection does not check that lastop is NULL before passing it to moveSequenceDead; moveSequenceDead immediately accesses lastop->insertiter and segfaults. Should be an easy fix: add a suitable null check to this function. Unfortunately, I am not sure what parts should be guarded with that check.

@toshipiazza Your crash appears to be different; it's caused by this bit of code in Ghidra/Features/Decompiler/src/decompile/cpp/funcdata_op.cc:
void Funcdata::opSetOpcode(PcodeOp *op,OpCode opc)

{
#ifdef OPACTION_DEBUG
  if (opactdbg_active)
    debugModCheck(op);
#endif
  obank.changeOpcode(op, glb->inst[opc] );
}

In this case, it looks like glb->inst[opc] is NULL (probably because it's an undefined opcode?) which results in a null pointer dereference inside PcodeOpBank::changeOpcode (specifically, inside PcodeOp::setOpcode when it attempts to call t_op->getFlags()).


Please, can you add HGZB-20-UK support ?

Device description
Power plug on/off
Zigbee2mqtt page
https://www.zigbee2mqtt.io/devices/HGZB-20-UK.html
MQTT message with device information
Prise zegbee 00	HGZB-20-UK	Power plug	Router	0x00158d000176b9c0
MQTT messages from device
2020-10-13 18:14:54.366 (Zigbee) MQTT message: zigbee2mqtt/Prise zegbee 00 {'linkquality': 55, 'state': 'ON'}
2020-10-13 18:14:54.366 (Zigbee) This plugin does not support zigbee device with model "HGZB-20-UK" yet
2020-10-13 18:14:54.366 (Zigbee) If you would like plugin to support this device, please create ticket by this link: https://github.com/stas-demydiuk/domoticz-zigbee2mqtt-plugin/issues/new?labels=new+device&template=new-device-support.md
Merci :)

Please consider switching to the next version of the plugin #458.
Reopen this issue in case of any issues.


Upgrade to pip 9.0.3

We're currently pinned to pip 9.0.1. It was a great release! It was the lead release for more than a year! But 9.0.3 is now out; we should use that if we can (and if we can't we have problems).

Alternatively, pip 10 is right around the corner...

I'd say let's wait for 10. Let's keep the infrastructure stable as is while a release branch is being cut and released.

Looks like pip 10 is out: https://blog.python.org/2018/04/pip-10-has-been-released.html


[feat] Store template data into Postgres

Add template image data ( data in Postgres ) and hash to Postgres through the backend. For now, other fields can be set to 0 or empty values.
References

Postgres table
Backend path 1
Backend path 2

May I please take this and resolve it ?

I will love to work on this

@addegbenga and @Xaxxoo , I am going to start only allowing one issue at a time per person. So if you can complete your other issues and get them merged, I will assign you to these other issues.

hi @b-j-roberts
please i would love this to be assigned to me

Awesome @Dprof-in-tech ! Welcome to the project. Let me know if you have any questions!

i sure will.

Hello @b-j-roberts , i'm so sorry but I won't be able to resolve this issue because I have so minimal a knowledge on Go. Please unassign me from this task, thank you

Alright @Dprof-in-tech , thanks for getting back to me and letting me know.
I'd be happy to help you with the Go side in Office hours, but understand if you'd rather drop the issue.
There will be more frontend tasks coming soon, would you like me to ping you then and you can try and take one?

I already have parts of the code that should fill it up written out.
We could complete it together, at least, I'd get more familiar with Go
On Thu, Apr 18, 2024, 3:06 PM ptisserand @.***> wrote:

HI @b-j-roberts https://github.com/b-j-roberts , can I work on this one
?
—
Reply to this email directly, view it on GitHub
https://github.com/keep-starknet-strange/art-peace/issues/48#issuecomment-2063950386,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A3W3TPK4XLCY7JYNBPC4EE3Y57HNJAVCNFSM6AAAAABGIWGJHCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDANRTHE2TAMZYGY
.
You are receiving this because you were mentioned.Message ID:
@.***>

Hi @b-j-roberts can I be assigned this?

I'll assign @ptisserand for now, if you'd like you can try and collaborate with @Dprof-in-tech . But no pressure there
@Dprof-in-tech & @Joy-Adah , I'll have more issues before next week. If you'd like to keep an eye out, you can also watch the project to get updates

That's okay Chief. Thanks for the heads up
On Thu, Apr 18, 2024, 6:48 PM Brandon R @.***> wrote:

I'll assign @ptisserand https://github.com/ptisserand for now, if you'd
like you can try and collaborate with @Dprof-in-tech
https://github.com/Dprof-in-tech . But no pressure there
@Dprof-in-tech https://github.com/Dprof-in-tech & @Joy-Adah
https://github.com/Joy-Adah , I'll have more issues before next week.
If you'd like to keep an eye out, you can also watch the project to get
updates
—
Reply to this email directly, view it on GitHub
https://github.com/keep-starknet-strange/art-peace/issues/48#issuecomment-2064727969,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A3W3TPIFVNZNFMM6K4VOBI3Y6ABOHAVCNFSM6AAAAABGIWGJHCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDANRUG4ZDOOJWHE
.
You are receiving this because you were mentioned.Message ID:
@.***>

Hi @b-j-roberts I'm wondering which value should we use for primary key?
Should the caller specify the primary key ?

@ptisserand
Things have changed with template images now, so it would probably be best to create a new table in the postgres TemplateData, which just tracks hash and data fields. Then this can be joined to the Templates table if/when needed.

@ptisserand
Things have changed with template images now, so it would probably be best to create a new table in the postgres TemplateData, which just tracks hash and data fields. Then this can be joined to the Templates table if/when needed.

Do you mean a table like:
CREATE TABLE TemplateData {
  key integer NOT NULL PRIMARY KEY,
  hash text NOT NULL,
  data bytea NOT NULL,
};

And so insert will be done with addTemplateData ?

@ptisserand Yes, that table looks good. You can make the key auto-incrementing too. There are auto-incrementing keys in init.sql you can find.
The insert will be done at both linked backend locations in the description.


Add a parameter classifier to the Function definition scheme

What would you like to be added:
A way to classify the parameter in the function definition (optional) so implementations could have a hint of how to handle the parameter when executing a given function.
For example a given operation state:
 "functions": [
        {
            "name": "userAuthServiceCall",
            "resource": "http://authservice.com",
            "type": "rest",
            "parameters": [
                {"name": "user", "classifier": "querystring"},
                {"name": "token", "classifier": "header"}
            ],
            "metadata": {
                "method": "GET"
            }
        }
]
(...)

Why is this needed:
With the classifier, implementations would know how to handle these parameters on a REST call scenario for instance.

I think that we are ok in this regard. Function definitions can be used to enforce openapi / swagger, it really depends on the impl of course but I will add examples for rest invokes that look like for example:
"functions": [
{
"name": "getUserByName",
"resource": "https://petstore.swagger.io/v2/swagger.json"
}
]

We will require use openapi spec for all function definitions.  More to come on this soon :)

Closing this one since #145 will solve this requirement


PHPCBF introduces new lines when fixing MultipleStatementAlignment.DoubleArrowNotAligned

It looks like PHPCBF has unintended side-effects when fixing WordPress.Arrays.MultipleStatementAlignment.DoubleArrowNotAligned violations.
If I run phpcs against something like this:
$sessions = new WP_Query( array(
	'post_type' => 'wcb_session',
	'orberby' => 'title',
	'order' => 'DESC',
	'posts_per_page' => -1,
) );

...then it correctly warns about the misalignment.
And then if I manually fix it, it stops warning:
$sessions = new WP_Query( array(
	'post_type'      => 'wcb_session',
	'orberby'        => 'title',
	'order'          => 'DESC',
	'posts_per_page' => -1,
) );

But, if instead of manually correctly, I run phpcbf, then the code is converted to this:
$sessions = new WP_Query(
	array(
		'post_type'      => 'wcb_session',
		'orberby'        => 'title',
		'order'          => 'DESC',
		'posts_per_page' => -1,
	)
);

PHPCBF moved the array constructor to it's own line, rather than leaving it on the same line as the WP_Query constructor.
The standard doesn't say it has to be on a new line, and has examples where it's not. So, I think it should be left as-is, and only the items should be aligned.

PHPCS 3.2.2
WPCS master @ cf6b310caad735816caef7573295f8a534374706
PHP 7.1.12

This is completely unrelated to the WordPress.Arrays.MultipleStatementAlignment sniff, but has to do with the PEAR.Functions.FunctionCallSignature sniff.
For the discussion on why it was decided to let the fixer of that sniff run, please see #968.
If you want to just and only fix the double arrow alignment, you can run PHPCBF like so:
phpcbf . --standard=WordPress --sniffs=WordPress.Arrays.MultipleStatementAlignment

Huh, I'm confused by the conclusion on that ticket at first glance, since code that is correctly formatted according to the standard will be mangled by the fixer. I would think the desired outcome would be for the array items to be aligned, but everything else left untouched.
I'll admit that I haven't dug too deep into the discussion or original issue, though, so it's very possible that I'm missing some things.
Since it sounds like this isn't actually a bug from WPCS's perspective, I'll go ahead and close this. Thanks for pointing out #968, though, that (and some of your comments on related upstream issues)  helped me find a solution for the codebase I'm working on:
<exclude phpcbf-only="true" name="WordPress.Arrays.MultipleStatementAlignment.DoubleArrowNotAligned" />
<exclude phpcbf-only="true" name="PEAR.Functions.FunctionCallSignature.ContentAfterOpenBracket" />
<exclude phpcbf-only="true" name="PEAR.Functions.FunctionCallSignature.CloseBracketLine" />

This way, phpcs will warn about the mis-aligned items, but phpcbf won't try to fix them. I can just fix them manually instead. Thanks!

I can just fix them manually instead.

@iandunn You may want to give the command I showed above a try instead of doing it manually: phpcbf . --standard=WordPress --sniffs=WordPress.Arrays.MultipleStatementAlignment :wink:

The reason I'd prefer a phpcs.xml solution is that it fits my workflow better. Having to remember to run multiple commands with verbose and exacting syntax each time I want to clean up a file is inconvenient. Fixing them as part of the normal phpcs process is simple, though; I just highlight the lines in PHPStorm and hit Cmd + Alt + L.
You're right that excluding all of FunctionCallSignature is enough, though:
<exclude phpcbf-only="true" name="PEAR.Functions.FunctionCallSignature" />
I'd added DoubleArrowNotAligned because it was necessary when excluding ContentAfterOpenBracket and CloseBracketLine individually, but the side-effects of excluding all of FunctionCallSignature are probably less bad than the side-effects of excluding DoubleArrowNotAligned; the issues around the latter are more frequent in this codebase. Thanks :)


[FLINK-18938][tableSQL/API] Throw better exception message for quering sink-only connector

What is the purpose of the change
1.Throw better exception message for quering sink-only(source-only) connector.
2.Add tips(support as source or sink) following the identifier when 1 heppens.
Brief change log

Throw better exception message for quering sink-only(source-only) connector.
For example, when we are quering a sink-only connector ,if we have a dependency jar in the classpath ,return the following excception message:
before:
Caused by: org.apache.flink.table.api.ValidationException: Could not find any factory for identifier 'elasticsearch-7' that implements 'org.apache.flink.table.factories.DynamicTableSourceFactory' in the classpath.
now:
Caused by: org.apache.flink.table.api.ValidationException: The connector named 'elasticsearch-7' is only supported as sink,can n't be used as a source.
Add tips follow the identifier when 1 heppens.
before:
Available factory identifiers are:
datagen
now:
Available factory identifiers are:
datagen (DynamicTableSourceFactory,DynamicTableSinkFactory)
elasticsearch-7 (DynamicTableSinkFactory)
test-connector (DynamicTableSourceFactory)

Verifying this change
This change added tests and can be verified by  running unit test :
testAvailableFactoryTipsNoDependencyJarForFormat()
testAvailableFactoryTipsDependencyJarForFormat()
testAvailableFactoryTipsNoDependencyJarForConnector()
testAvailableFactoryTipsDependencyJarForConnector()
Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): ( no)
The public API, i.e., is any changed class annotated with @Public(Evolving): ( no)
The serializers: (no)
The runtime per-record code paths (performance sensitive): (no)
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Kubernetes/Yarn/Mesos, ZooKeeper: (no)
The S3 file system connector: (no)

Documentation

Does this pull request introduce a new feature? ( no)

Hi @wuchong , The changes we discussed have been completed. Looking forward to your reply.

@wuchong  The following changes have been made.
1.Keep FactoryUtil#discoverFactory  is still a generic method for all kinds of factories.
2.Adding a new method  OptionalFailure discoverOptionalFactory
and using this method to check whether the connector/format is avaible and throw better exception in getDynamicTableFactory  and discoverOptionalFormatFactory.
Looking forward to your reply.

Hi @pyscala , thanks for the updating.
However, the new added discoverOptionalFactory method still no generic method for all kinds of fatories. What I mean was that you can just call discoverFactory and catch the exception in discoverOptionalFactory. And wrap the pretty exception message in getDynamicTableFactory. In getDynamicTableFactory you can use discoverOptionalFactory to discover for source and sink both and throw better exception if it is source-only but discovering sink or vise-versa.

@wuchong Sorry for later reply.
Wrap the pretty exception message in getDynamicTableFactory and Keep FactoryUtil#discoverOptionalFactory is  a generic method for all kinds of factories.
However, because the abnormal judgment logic is more complicated, methed named isMatchingFactoryEmpty and getAvailableFactoryTips have been added to assist.

Hi @pyscala , thanks for the updating and sorry for the late reviewing. I helped to improve the code and will merge it once build is passed.


Suggest: Link to data-editor in issue description

Oops, wasn't careful enough with the review. Encoding issue fixed in: https://github.com/datenanfragen/backend/commit/fc55b3def0c050d2dfaa67279d308e8b9eb29d59


java version

Hello Sir.
In history
java version properties in pom.xml
8 => 12 => 8
and README.md
8 > 13 but still 8
Is any reason for this?

Hi,
Thanks for reaching out :-) !
Yes there is a reason. Actually there are 2 reasons.
Firstly: According to our Java driver team, Java 8 is the most used version so I wanted to make sure I support this version as well as the newest version of the JDK.
So to prevent myself from using any of the Java 9-13 features, I set the pom.xml to Java 8 so the compiler will tell me instantly if I use one of the new features.
Secondly: On my computer I'm up to date and I'm using the latest JDK 13 but most people still don't have it installed so if I put java 13 in the pom.xml, it would only compile and run for the people with JDK 13 installed.
By choosing to set java 8 in the pom.xml, it works for both.
But if you don't want to work with JDK 8 anymore and you are happy to use JDK 13, you can update the pom.xml and bump the java version to 13. It will work :-). That's all you have to do.
You will be able to clean a few things in the code like the inner class inferred types for example ;-). If you use IntelliJ they will show in grey as they are not mandatory anymore in JDK 13.
I hope you find this little project helpful.
Cheers,
Maxime.

Thank you for reply.  Very helpful to me.
When you visit Seoul Korea please contact to this email. I will treat.
And you can visit our company.
Thanks a lot.
2019년 11월 13일 (수) 오후 9:16, Maxime<EMAIL_ADDRESS>작성:

Hi,
Thanks for reaching out :-) !
Yes there is a reason. Actually there are 2 reasons.
Firstly: According to our Java driver team, Java 8 is the most used
version so I wanted to make sure I support this version as well as the
newest version of the JDK.
So to prevent myself from using any of the Java 9-13 features, I set the
pom.xml to Java 8 so the compiler will tell me instantly if I use one of
the new features.
Secondly: On my computer I'm up to date and I'm using the latest JDK 13
but most people still don't have it installed so if I put java 13 in the
pom.xml, it would only compile and run for the people with JDK 13 installed.
By choosing to set java 8 in the pom.xml, it works for both.
But if you don't want to work with JDK 8 anymore and you are happy to use
JDK 13, you can update the pom.xml and bump the java version to 13. It will
work :-). That's all you have to do.
You will be able to clean a few things in the code like the inner class
inferred types for example ;-). If you use IntelliJ they will show in grey
as they are not mandatory anymore in JDK 13.
I hope you find this little project helpful.
Cheers,
Maxime.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/MaBeuLux88/java-spring-boot-mongodb-starter/issues/7?email_source=notifications&email_token=ANXEASEGHEMWPRBKP3G7ZJTQTPV2VA5CNFSM4JMVD4LKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOED56KVA#issuecomment-553379156,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ANXEASAWTTE3L7UKDNSNOS3QTPV2VANCNFSM4JMVD4LA
.

--
Disclaimer | 본 이메일은 법령 또는 당사자의 의사에 따라 비밀유지가 필요한 내용을 포함하고 있으며, 의도된 수신자만
열람할 권리가 있습니다. 본 메일을 받으신 분이 의도된 수신인 또는 그 대리인이 아닌 경우, 본 이메일과 첨부파일의 이용, 복제,
배포, 회신 등 일체의 활용은 엄격히 금지 되오니, 잘못 수신되었을 경우 즉시 발신자에게 그 사실을 알려주시고 첨부 파일을 포함한
이메일 전체를 삭제해 주시기 바랍니다. 한편, 발신인은 본 이메일에 허용되지 않은 접근 또는 활용으로 인해 발생하는 손해에 대하여
일체의 책임을 지지 않음을 알려 드립니다.
Disclaimer | Information in this e-mail and
any attachments are from Paygate Co., LTD. and may contain privileged
and/or confidential information. If the reader of this e-mail is not the
intended recipient(s), or the employee or agent responsible for delivering
the message to the intended recipient(s), you are hereby notified that any
dissemination, distribution or copying of this e-mail is strictly
prohibited. If you have received this e-mail in error, please notify the
sender and delete this e-mail and any attachments immediately from your
computer without retaining a copy. The sender holds no liability for any
damages from unauthorized use of this e-mail.


add missing base prefix in dev

closes #4418 — if path.base is /blah and the developer visits /foo in dev, they are redirected to /blah/foo
Please don't delete this checklist! Before submitting the PR, please make sure you do the following:

[x] It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs
[x] This message body should clearly illustrate what problems it solves.
[ ] Ideally, include a test that fails without this PR but passes with it.

Tests

[ ] Run the tests with pnpm test and lint the project with pnpm lint and pnpm check

Changesets

[x] If your PR makes a change that should be noted in one or more packages' changelogs, generate a changeset by running pnpx changeset and following the prompts. All changesets should be patch until SvelteKit 1.0

Is this a good idea? It feels like it's asking for trouble, although I'm admittedly not clear on what that trouble would look like exactly.
In https://github.com/sveltejs/kit/issues/4418#issuecomment-1075481738 I suggest another way of handling this.

Yeah, it does sound like arbitrary /foo redirects could mask broken links and fetches that wouldn't work in production.

Masking broken links is a good reason not to do it. Updated the PR

:+1: The changeset message and the PR title should be updated as well.


Recording command!

Make a command for recording a voice channel. Make The clips avalible through the dashboard

Well my friend, that is what we developers like to call illegal and against the Discord TOS. You can not record a voice channel without consent from all users in the channel. Once you have received consent from all users in the channel, then you can refer to joining a voice channel and also looking into the node fs documentation, specifically fs.createWriteStream. You will also need Prism Media for the opus decoder. As for anything past what I have mentioned here, the rest is on you. Also, please use the Discord server for questions regarding this, not a bug report issue.


[MINOR] fix cdc flake ut

Change Logs
fix cdc flake ut
Impact
none
Risk level (write none, low medium or high below)
none
Documentation Update
Describe any necessary documentation update if there is any new feature, config, or user-facing change

The config description must be updated if new configs are added or the default value of the configs are changed
Any new feature or user-facing change requires updating the Hudi website. Please create a Jira ticket, attach the
ticket number here and follow the instruction to make
changes to the website.

Contributor's checklist

[ ] Read through contributor's guide
[ ] Change Logs and Impact were stated clearly
[ ] Adequate tests were added if applicable
[ ] CI passed

The failed UTs are not related to this change. So loading this.


Enhancement: Scrap last matrices in the chain if bad.

Commit 02d210a improves the stability of the linear programming function, which now replaces any badly specified transition matrix with a new one, obtained through linear interpolation of the two nearest, well-defined, matrices.
However, the interpolation algorithm breaks if the last matrix in the Markov chain is bad (exit flag: -1).
It would be better to return a shorter Markov chain, obtained by scrapping all adjacent bad matrices at the end of the sequence, rather than simply breaking the algorithm and returning a wrong chain.

Commit 7fb3f7a solves the issue.
Now the interpolation algorithm does not break anymore, even when the last transition matrix in the Markov chain is not correctly specified.
Consider, for instance, the case of n = 20, k = 24, gamma = 0.2, T = 1. This problem is interesting because it gives rise to well-defined matrices P[0] to P[6], P[11], P[14], P[15], and P[20], while all the others, including the last one, P[21], are bad.
All intermediate matrices in the chain are replaced with their corresponding interpolated versions; the latter are visible in the figure below (darker areas).
P[21], instead, is scrapped. As a consequence, the time vector is also shortened, so that t[-1] is now 0.96 instead of 1.


Add endpoint for authentication info

Currently, it's up to the BrAPI provider to handle authentication, some will use OAuth, others may use username/password login with Bearer tokens or something else entirely.
While everyone agrees, that BrAPI should not handle the authentication itself, I think it would be hugely beneficial if BrAPI at least provided information about what authentication mechanism is used along with any necessary information to be able to authenticate using that other service. This would make it possible for client applications to query the BrAPI server and find out what authentication mechanism is used to then authenticate using that information.
Whether this is something that could go into /serverinfo or if it should go somewhere else and what exactly the structure of the result should be, I don't know, but I think it's something worth discussing.

There are more auth schemes available, but off the top of my head, this is what I'm thinking. I bet we could cover 90% of use cases if the server could respond with one of these things
  "authProtocol": "Basic",
  "authProtocolConfigURL": null
       // A Basic auth token doesn't need any additional params
       // Its base64 encoded username and password sent as a token with every request

  "authProtocol": "OAuth",
  "authProtocolConfigURL": "https://brapi.org/.well-known/openid-configuration"
       // OIDC Discovery FIle

  "authProtocol": "SAML",
  "authProtocolConfigURL": "https://brapi.org/.well-known/saml-configuration"
       // whatever the SAML equivalent of OIDC is

  "authProtocol": "Custom",
  "authProtocolConfigURL": "https://not-brapi.org/docs/auth-documentation"
       // human readable documentation
       // The client either already has all the info it needs for this custom auth protocol for this server,
       // or it doesn't and a dev has to read the documentation to implement it

I probably should create another ticket with a question, but..
@BrapiCoordinatorSelby,
Has the concept of two-factor authentication (2FA), Multi-factor authentication (MFA), etc, ever been discussed or mentioned in BrAPI? (despite auth not being entirely in the scope of BrAPI), or what would be the implications for a BrAPI implementation in a system that also has MFA.
cc @mcrimi @abatac @lik-83 @clarysabel

@nahuel-soldevilla
It has been discussed, but the discussion was short after deciding that BrAPI is not responsible for Authentication. BrAPI has the Authorization standard header which is designed to transport a token with every request. But how that token is produced or consumed is outside of BrAPI scope.
Some groups may choose the "Basic Auth" protocol where the username and password are Base64 encoded into a token.
Other groups may decide to use a 2FA/MFA scheme that has user credentials, an RSA key, and a Bio-metric scan. But when the user is done with that whole login process, there should still be a token/JWT that comes out and used for subsequent API requests.
BrAPI will work exactly the same for both groups because all it is doing is transporting the token string.
That is one of the reasons why OAuth2/OIDC is so powerful, it hands off control of the login mechanics, and it doesn't care what the user has to do to authenticate as long as you get a token back.

Since @sebastian-raubach raised the subject today on Slack, it made me think about it again. I'm fine with "externalizing" the authentication process (I do it in my implementation). But the question was "how a BrAPI client application would tell her/his user to login somewhere and then get back the token so the user wouldn't have to do some copy & paste?"
In my case (Drupal implementation), if the BrAPI client behaves like a web browser and support cookies, it can display the Drupal login page and my implementation of the BrAPI server gets the access token (bearer) from both the HTTP header and the Drupal session object (if not found in the header). So, my implementation would work with such a client but it's something too specific. A more generic way would be better. Something like a login URL provided to the client by the /serverinfo call. That URL should be web interface using cookies, so the BrAPI client should also be supporting cookies and it could then use another URL to get the access token. It is something that needs to be think and discussed a little more as there might be some issues with cookies but here's how I would see a first (perfectible) approach:

the BrAPI client calls "/serverinfo".
it got the login URL: "https://myserver.com/brapi/authentication"
it displays that page to the user
the user can submit, fail, retry, got authenticated, etc. In the end, the user just got a web page saying "welcome, you're authenticated"... or something similar ;)
the user can now click on a button on the BrAPI client interface saying that "I'm authenticated"
the BrAPI client now calls "https://myserver.com/brapi/authentication/get-token" and that URLs (that will make sure it's from the same user session and not stolen by someone else) will return a JSON with the token
the BrAPI client got the token and can now use it in background for its user

Again, "brainstorming mode". Feel free to propose alternatives or point the approach weakness. ;-)

@guignonv haha no need for alternatives or points of weakness because you are just re-inventing OAuth hahaha
OAuth uses URL parameters instead of cookies, and the "I'm authenticated" button happens automatically, but otherwise you've got it. I'll try to rewrite your example with OAuth.

(optional) The user tells the client application "I'd like to connect to myserver.org"
the BrAPI client application calls myserver.org/brapi/v2/serverinfo
It returns something like this with the OIDC Discovery File

"authProtocol": "OAuth",
"authProtocolConfigURL": "https://myserver.org/.well-known/openid-configuration"

The client now knows the server supports OAuth, and has ALL the details it needs in the openid-congfiguration JSON. This includes the login page URL.
The client redirects the user to the login page WITH a callback URL to get back to the the client app and some other metadata. Real example looks something like this

https://auth.myserver.org/auth? client_id=exampleClient &scope=profile &response_type=token
&redirect_uri=https://clientapp.org/oauth/redirect

the user can submit, fail, retry, got authenticated, etc. In the end, when the user authenticates successfully, they are automatically redirected back to the client application, following the call back URI redirect_uri.
Note here: depending on the OAuth grant type being used ("Authorization Code Grant" or "Implicit Grant") the redirect back to the client app will contain either a one time authorization_code, or jump directly to a user access token

If the client app receives a user access token, then its done (skip to 9.)

If the client app receives an authorization code, then it goes back to the OIDC file for the authorization URL. the authorization code is exchanged for a token.

the BrAPI client got the token and can now use it in background for its user

:) Yup, I love to reinvent the wheel! No worries, I've already implemented applications using oauth (and even an ancestor) and I definitely know how it works! Thanks. :D Since it seemed too complicated for some clients to use oauth, I tried to propose a different approach but not much simpler, I have to agree ...but it would simplify "my implementation" since it's already there like that. For OAuth, I need to add a Drupal module to the server. Not big deal but an additional dependency.
Anyway, I support the approach you gave above.


Show published state in smart content and internal link list

Currently only the published pages are displayed in these kind of lists:

This can be confusing if the user tries to add an unpublished page as a link (because it will never be displayed). Therefore all assigned pages should be shown, and a yellow point like in the column view should indicate that this page is not published.
However, the not published links should currently still not be displayed in the preview.

Mind that internal links to shadow pages are also not shown on the website nor in the content type, whereby this is obviously a wrong behavior.


Installation via HACS does not complete

I'm trying to install the integration via HACS, but it looks like I was installing it and, even after a long time, the installation doesn't complete. I performed the installation manually. How will the update work in this installation mode? It must also be done manually and, consequently, I will have to access the developer's GitHub to find out if new versions are available?

Because of the wrong name: https://github.com/georgezhao2010/midea_ac_lan/blob/master/hacs.json#L6

I appreciate your response.
Could the issue be resolved? Am I to understand that merely due to an incorrect zip file name, it's impossible to download it via HACS? As mentioned earlier, I managed to download it manually and directly installed it in the custom components, and it's operational. My concern lies with future updates; I worry that my setup might become obsolete. Will it automatically update, or at least notify me of a new version, when installed manually?

As you say, it seems like a 404 error due to an error in the name of the zip file. Is there any solution for this?

As you say, it seems like a 404 error due to an error in the name of the zip file. Is there any solution for this?

I just resorted to learning how to install it manually, by downloading the repository and uploading it onto the custom components folder of HA.


Fix DEVSUP-799

Scope & Purpose

Fixed DEVSUP-799: unique vertex getter may point to invalid memory after
being resetted, resulting in undefined behavior for traversals returning
unique vertices from inner FOR loops.

[x] :hankey: Bugfix (requires CHANGELOG entry)
[ ] :pizza: New feature (requires CHANGELOG entry, feature documentation and release notes)
[ ] :fire: Performance improvement
[ ] :hammer: Refactoring/simplification
[x] :book: CHANGELOG entry made

Backports:

[x] Backports required for: 3.6: https://github.com/arangodb/arangodb/pull/14402

Related Information

[x] GitHub issue / Jira ticket number: https://arangodb.atlassian.net/browse/DEVSUP-799

Testing & Verification

[x] The behavior in this PR was manually tested
[x] This PR adds tests that were used to verify all changes:

[x] Added new integration tests (shell_server_aql)

[x] I ensured this code runs with ASan / TSan or other static verification tools

https://jenkins.arangodb.biz/job/arangodb-ANY-windows-packages/1709/

https://jenkins.arangodb.biz/job/arangodb-ANY-windows-packages/1728/

https://jenkins.arangodb.biz/job/arangodb-ANY-windows-packages/1731/

Crash wasn't reproduced.


DevOps：PR  member's  Repo to master Repo when member's Repo changed

In GitLab by @sokril on Apr 8, 2018, 10:18

In GitLab by @wknet123 on Nov 8, 2019, 07:49
Fixed by PR #1189

In GitLab by @sokril on Nov 8, 2019, 08:20
closed

In GitLab by @sokril on Nov 8, 2019, 08:20
assigned to @sokril


error APPX0002: Task 'ValidateAppxManifest' failed ONLY when running from service azure agent

i'm trying to build an UWP .appx
the sln project is generated via Unity3D

if the command below is launched manually, it works just fine, as expected.
if it's launched during a build step from azure on the same machine, same user, but as an azure agent configured to run as a service, the error message is displayed and package creation fails.

C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\VisualStudio\v15.0\AppxPackage\Microsoft.AppXPackage.Targets(2638,5): error APPX0002: Task 'ValidateAppxManifest' failed. Namespace prefix 'm' is not defined. [C:\TFSagent\_work\1\s\MyProject.vcxproj]
(there is not any use of a namespace 'm' in the manifest file, and the package creation works fine when launching same command by hand)
I don't see what's wrong and the error itself doesn't help much in how to solve it...
Steps to reproduce
Command line (same one launched , manually or as a service build step)
"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\MSBuild.exe" "C:\TFSagent\_work\1\s\MyProject.sln" /t:Build /p:Configuration=master /p:Platform=x86"

Expected  behavior
build .appx without any error where as it's launched from a serviec or not
Actual behavior
fails when running as a service
Environment data
msbuild /version output:
Microsoft (R) Build Engine version 15.9.21+g9802d43bc3 for .NET Framework
Copyright (C) Microsoft Corporation. All rights reserved.

<IP_ADDRESS>4

OS info: Windows 10 VM
Microsoft Visual Studio Team Foundation Server Version 16.131.28507.4
within a simple command line build step
agent is configured as a service using a dedicated local user that has admin rights (i've also tried with default NT NETWORK SERVICE user)
Please Help
or redirect me to another more adapted github if necessary (msbuild-task ? azure ? )

msbuild logs as diagnostic verbosity (its 200k lines, so jsut targeting the part concerning the task where the problem is, ask for other parts on demand):
working one:
Task "ValidateAppxManifest"
  Task Parameter:Input=C:\TFSagent\_work\1\s\Unity\Builds\WSAPlayer\build\bin\Win32\Master\AppxManifest.xml
  Task Parameter:SourceAppxManifest=Package.appxmanifest
                  SubType=Designer
  Task Parameter:
      AppxManifestSchema=
          C:\Program Files (x86)\Windows Kits\10\\Include\10.0.18362.0\WinRT\FoundationManifestSchema.xsd
                  NamespaceAlias=m
                  NamespaceUri=http://schemas.microsoft.com/appx/manifest/foundation/windows10
          C:\Program Files (x86)\Windows Kits\10\\Include\10.0.18362.0\WinRT\UapManifestSchema.xsd
                  NamespaceAlias=uap
                  NamespaceUri=http://schemas.microsoft.com/appx/manifest/uap/windows10
  Task Parameter:TargetPlatformVersion=10.0.18362.0
  Task Parameter:TargetPlatformIdentifier=UAP
...Etc...(same on both logs)

non-working one:
2019-06-18T14:07:06.2435158Z Task "ValidateAppxManifest" (TaskId:209)
2019-06-18T14:07:06.2435260Z   Task Parameter:Input=C:\TFSagent\_work\1\s\Unity\Builds\WSAPlayer\build\bin\Win32\Master\AppxManifest.xml (TaskId:209)
2019-06-18T14:07:06.2435361Z   Task Parameter:SourceAppxManifest=Package.appxmanifest
2019-06-18T14:07:06.2435446Z                   SubType=Designer (TaskId:209)
2019-06-18T14:07:06.2435530Z   Task Parameter:TargetPlatformVersion=10.0.18362.0 (TaskId:209)
2019-06-18T14:07:06.2435615Z   Task Parameter:TargetPlatformIdentifier=UAP (TaskId:209)
...Etc...(same on both logs)

so, now : why does the working version does have an extra parameter for this task ?

This task is not really produced out of this repo. I would suggest that you file a VS Feedback item through VS and the issue will be routed to the appropriate team. I don't believe there is a public repo that you can use for it.
Meanwhile, I am going to close the issue here.


Add uncheck_add_character

Mentioned in the docs, this method would add a character without updating the cache.

No longer needed due to 3d0931661f6895dc60962ee6f333e9ffa6cc44a0


[Event Request] Codeunit 80 Sales Post - OnBeforeDeleteInvoiceSpec

Hi, would it be possible to get an event OnBeforeDeleteInvoiceSpec in codeunit 80 Sales Post, in trigger OnRun, like this :

Thanks!

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. We will update this issue with information about availability. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. We will update this issue with information about availability. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.


Possible to access translation labels without context?

Great tutorial on Medium!! Thanks a lot!
Is there a way to eliminate the necessity of passing BuildContext in
final labels = AppLocalizations.of(context);
using GetX? I sometimes have to reference the translation labels also in some of my controller/services classes where I usually try to avoid using BuildContext as much as possible (trying to separate UI and Business Logic).

I actually no longer use AppLocalizations.of(context); in the current version.  I replaced the old translation component with doing it the getX way and I also created a new script to build the localization file.  You can take a look at the readme  for how to use the new translation system.

Great - thank you! For some reason my compiler (Dart 2.12.3) complains about the required keyword in the constructors of LocalizationModel as well as PhraseModel in the update_localizations.dart file with the following message:
The parameter type 'dynamic' is incompatible with the field type 'String'.
Try changing or removing the parameter's type, or changing the field's type.dart(field_initializing_formal_not_assignable)

Once I remove the required keywords it is working fine :-)

Ok are you using null safety in your project?  Maybe that is why as the required keyword is only used if you update your pubspec.yaml to use:
environment:   sdk: '>=2.12.0 <3.0.0'

Ah, thank you for pointing that out! I have indeed not upgraded my project to null safety yet. Will be doing this in the future :-)


Use HTTPS on all formhub download links

And on all absolute links in general.

https://github.com/modilabs/formhub/commit/6112c3e4813a097506f9a8dc791f3cdf53baaed8


[stable/prometheus-operator] servicemonitor are not loaded

Is this a request for help?: Maybe

Is this a BUG REPORT or FEATURE REQUEST? (choose one): BUG REPORT
Version of Helm and Kubernetes:
Helm : 2.11.0
K8s : 1.11.3
On Azure AKS
Which chart: stable/prometheus-operator
What happened:
I created a custom ServiceMonitor in my monitoring namespace where I installed the chart:
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: monitoring-prometheus-oper-influxdb
  namespace: monitoring
spec:
  jobLabel: influxdb
  selector:
    matchLabels:
      app: influxdb
  namespaceSelector:
    matchNames:
      - prod
  endpoints:
    - port: exporter
      interval: 30s

However it is not pick up by Prometheus. After more tant 20 minutes, I still don't see the target on Prometheus web UI.
What you expected to happen:
The target to be created.
How to reproduce it (as minimally and precisely as possible):

Create an AKS cluster
Install the chart with standard values but with rbac disabled
Create any custom servicemonitor resources.

It is not picked up.
Anything else we need to know: None

Prometheus has serviceMonitorSelector that only picks up on service monitors with specific labels. If you didn't customize the values file you will need to add the label to the service monitor that matches the release name of your prometheus operator:
release: <operator_release_name>
Here is an example for nginx-ingress.  My chart release for the operator was called monitoring
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  labels:
    release: monitoring
  name: nginx-ingress
spec:
  selector:
    matchLabels:
      release: nginx
  endpoints:
  - port: metrics

@dojadop : many thanks. It works.
When I read the values.yaml file of the chart, there is a comment above serviceMonitorSelector stating serviceMonitorSelector will limit which servicemonitors are used to create scrape configs in Prometheus. By default all are loaded. So my understanding was that it would load all resources of type servicemonitor per default. Maybe there is a small documentation issue here.

@jbouzekri This is definitely an issue with documentation on this chart, feel free to open PRs for anything that is not correct

Wow @dojadop I spent so long trying to figure out what was wrong with my setup, until I found your comment here about specific labels. Thank you so much!!


Add support for Qingping Cleargrass CGD1

Thank you for your project, I started something similar in the past but without ever finalizing it.
This is the clock I'm talking about: https://www.amazon.com/Bluetooth-Temperature-Ringtones-Adjustable-Backlight/dp/B08NX6BM6X
These are the services and characteristics of the clock:
- Device Name [N R] (0x2A00)
- Appearance [R] (0x2A01)
- Peripheral Preferred Connection Parameters [R] (0x2A04)
Generic Attribute (0x1801)
- Service Changed [I] (0x2A05)
   Client Characteristic Configuration (0x2902)
Device Information (0x180A)
- PnP ID [R] (0x2A50)
Battery Service (0x180F)
- Battery Level [N R] (0x2A19)
   Client Characteristic Configuration (0x2902)
Unknown Service (00010203-0405-0607-0809-0a0b0c0d1912)
- Unknown Characteristic [R WNR] (00010203-0405-0607-0809-0a0b0c0d2b12)
   Characteristic User Description (0x2901)
Unknown Service (00010203-0405-0607-0809-0a0b0c0d2b20)
- Unknown Characteristic [R WNR] (00010203-0405-0607-0809-0a0b0c0d2b21)
   Characteristic User Description (0x2901)
Unknown Service (0000fe95-0000-1000-8000-00805f9b34fb)
- Unknown Characteristic [R] (00000004-0000-1000-8000-00805f9b34fb)
   Characteristic User Description (0x2901)
- Unknown Characteristic [N WNR] (00000010-0000-1000-8000-00805f9b34fb)
   Characteristic User Description (0x2901)
   Client Characteristic Configuration (0x2902)
- Unknown Characteristic [N W] (00000017-0000-1000-8000-00805f9b34fb)
   Characteristic User Description (0x2901)
   Client Characteristic Configuration (0x2902)
- Unknown Characteristic [N WNR] (00000018-0000-1000-8000-00805f9b34fb)
   Characteristic User Description (0x2901)
   Client Characteristic Configuration (0x2902)
- Unknown Characteristic [N WNR] (00000019-0000-1000-8000-00805f9b34fb)
   Characteristic User Description (0x2901)
   Client Characteristic Configuration (0x2902)
   Unknown Descriptor (00002800-0000-1000-8000-00805f9b34fb)
- Unknown Characteristic [WNR] (00000101-0065-6c62-2e74-6f696d2e696d)
Unknown Service (22210000-554a-4546-5542-46534450464d)
- Unknown Characteristic [W] (00000001-0000-1000-8000-00805f9b34fb)
   Characteristic User Description (0x2901)
- Unknown Characteristic [N] (00000002-0000-1000-8000-00805f9b34fb)
   Characteristic User Description (0x2901)
   Client Characteristic Configuration (0x2902)
- Unknown Characteristic [W] (0000000b-0000-1000-8000-00805f9b34fb)
   Characteristic User Description (0x2901)
- Unknown Characteristic [N] (0000000c-0000-1000-8000-00805f9b34fb)
   Characteristic User Description (0x2901)
   Client Characteristic Configuration (0x2902)
- Unknown Characteristic [N] (00000100-0000-1000-8000-00805f9b34fb)
   Characteristic User Description (0x2901)
   Client Characteristic Configuration (0x2902)
- Unknown Characteristic [R] (0000000d-0000-1000-8000-00805f9b34fb)
   Characteristic User Description (0x2901)

It looks like the service UUID and characteristic UUID matches the ones on BT Clock Lite, although I'm not sure if 00000001-0000-1000-8000-00805f9b34fb is also the characteristic for the time on CGD1, too.  I tried to force it to be recognizable in bluetooth-clocks by modifying the code in devices/qingping.py, to the point where the script connected and even wrote data successfully on the device's 00000001-0000-1000-8000-00805f9b34fb characteristic, but nothing happens on the clock (apart from the Bluetooth symbol flashing, as a result of the connection).
I suppose that communication with the clock is encrypted with the BLE key or the token I'm getting by using Xiaomi-cloud-tokens-extractor:
   NAME:     Alarm clock
   ID:       blt.4.195fhgnfggc00
   BLE KEY:  dcbd1d12c64ba3f92793307bbda19ff0
   MAC:      58:2D:34:55:XX:XX
   IP:       79.112.12.XXX
   TOKEN:    92a100ab3d15e366dd825967
   MODEL:    cgllc.clock.dove

but I'm not sure what the encryption algorithm could be.
Have you looked into this product yet? I'm waiting to root my spare Redmi phone (I have to wait for a few days to be able to unlock the bootloader) so I can btsnoop the official app, but if you got any other hint until then, I could try it to see if I get any result.

Surprise, an update to Android 14 re-enabled btsnoop-ing with Wireshark again on my S23! This means I was able to gather a pcap file from Wireshark with the packets sent by the Xiaomi Home app to the clock (see qingping.pcapng.zip).
It looks like the app writes 05090bc94065 two times on the 0000001-0000-1000-8000-00805f9b34fb characteristic, a value which is not far away from what your script writes (050984e74065). Writing the value recorded by Wireshark doesn't set the time back to the time of capture, so maybe there's some sequence which needs to be written on the clock so it accepts setting the time...

Thanks for looking into this! I actually have the same clock, and I tried to figure out the synchronization. I recognized like you that the app writes the time in the same format as for the BT Clock Lite, but I didn't try the data packet the app sent before the time, and without this packet the clock didn't synchronize.
With the results of your investigation, I looked again at the communication between the Qingping+ app and my clock. In my situation, the first command the app sends to the clock is 1102c1d12138900e146a581b80230426aca1, which at least begins with the same two bytes as yours:
11027c14aec1c4c0be574ac49dab345af86a
1102c1d12138900e146a581b80230426aca1

When I send my command and then the same time synchronization command as for the BT Clock Lite, the time synchronizes, like in your case. It looks like it sends the same 18-byte command each time before sending the time synchronization command.
This is progress!
When I send your command and then the time synchronization command, the time doesn't synchronize.
So this seems like some device-specific key you first need to send to the device before being able to synchronize the time.
1102 is the same for our two commands, so I suppose the 32 remaining characters, or 16 bytes, are a 128-bit key. Or what do you think? So now the question is if we can find this device-specific key without sniffing the BLE communication?

Great find with the common 1102! I was hoping this is just 1102 + BLE KEY from above, as the rest of the string and BLE KEY have the same length, but no luck.
So I began to sniff Qingping+ app's traffic over internet and guess what: the key is found in the response for https://qingplus.cleargrass.com/pair/list?, at the link_token key:
{
	"data": {
		"devices": [{
			"version": "1.0.1_0126",
			"link_token": "7c14aec1c4c0be574ac49dab345af86a",
			"state": {
				"empty": 1
			},
			"name": "Bedroom Alarm Clock",
			"id": 809689,
			"rank": 9999,
			"widget_rank": 9999,
			"push_status": 0,
			"pair_type": 0,
			"widget_status": 0,
			"mac": "582D34558A87",
			"model": "Dove",
			"product": {
				"category": "Dove",
				"model": "Dove"
			}
		}],
		"has_alert": false,
		"mqtt": {
			"brokerUrl": "wss:\/\/wss.cleargrass.com\/mqtt",
			"subTopic": "\/2nyOFhsMg\/qinguser_release_276191\/user\/get",
			"pubTopic": "\/2nyOFhsMg\/qinguser_release_276191\/user\/update",
			"options": {
				"username": "qinguser_release_276191&2nyOFhsMg",
				"password": "47c702264953e1bf35c06d6ad9b0fb089099822cc9ae4561f4099cd1377c3979",
				"clientId": "qinguser_release_276191|securemode=3,signmethod=hmacsha256,prefix=,random=server519|"
			}
		},
		"entries": ["snow", "goose-homekit", "goose", "dove", "sparrow", "hodor", "magpie", "duck2", "mall", "parrot", "dany", "chicken"],
		"gateway_entries": ["goose", "dove", "hodor", "magpie", "duck2", "parrot", "chicken"],
		"use_hotfix": false,
		"feedback_unread": false
	},
	"code": 0
}

Obtaining this programmatically is another challenge, as it seems there's a dynamic header named app-timestamp which is the current timestamp and a header named app-sign which, I guess, its changing related to the other headers.

I found a solution. We can set up our own key.
I removed the alarm clock from the Qingping+ app and added it again while sniffing the BLE traffic.
The app sent this sequence of commands to the 0001 characteristic:
1101059d2ae2c46779f074b062d440f130e7
1102059d2ae2c46779f074b062d440f130e7
0509b32d4265

The next time I opened the app, it didn't send the first command. So, it looks like the command beginning with 1101 writes a new key to the device, which is then used by the app afterwards with the 1102 command to authenticate.
I implemented this logic in a test script to write a new key to the alarm clock:

Generate a random 128-bit key with os.urandom(16)
Write b'\x11\x01' + key to the 0001 characteristic
Show bytes.fromhex(key) to the user

Then another test scripts takes a key from the user and:

writes b'\x11\x02' + key to the 0001 characteristic
sends the time command to the 0001 characteristic

This successfully synchronizes the time. So I'm confident that I can now add support for the CGD1. I'll add a command to set a new key, as well as an option to provide the necessary key for synchronizing the time.
I noticed though that the time is off one hour. This is probably a bug related to the time zone or daylight savings time. I'll investigate this further.

Well... this is surprising. I expected this would be some sort of burned-in key or a key negotiated during the pairing process. I tested on my side and I can confirm that writing 1101 + key and then 1102 + key on the characteristic lets me use that key for the future requests. It looks like it's necessary to immediately do the 1102 + key after the 1101 call, otherwise further time syncs will not work.
Here (Romania) the time is off by two hours with your script. I suppose the app writes the timezone on the device and every timestamp after that it's treated as local time, because if I send a UTC timestamp, the time appears correctly on the clock.

Still investigating the time discrepancy.
After the time synchronization command, the Qingping+ app sends the following commands to the 0010 characteristic:
030f0a00
010d

Are these the same for you?

Sorry, I meant 0001 yes.
Ok, I'm not sure what the difference between your 14 and my 0a is (20 vs. 10 in decimal), or whether it is relevant at all. Those commands don't seem to be necessary anyway to set the time.

It's on 000b. If you write this:
1301055802110a0411160008000001008f004886
it will change the timezone to Portugal. If you write this:
130105580211140411160008000101008f004886
it will change the timezone to Romania.

The thing is, I'm in Brussels timezone (GMT+1), not Portugal timezone (GMT).
I haven't seen the Qingping+ app writing to the 000b characteristic in my case.

Try to change the timezone in your phone settings and reinstall the app, that's how I triggered writing on 000b

If you go with writing on 000b, I'd like to point out that this also contains some other settings, like the general switch for the alarms. If you just dump the bytes for the timezone settings, you might cancel or turn on an user's alarms. For example, on my clock this is how I turn off all the alarms:
130105580211140411160008000101008f004886
and this is how I turn on all the alarms:
130105580201140411160008000101008f004886
If might want to get the current settings, and you do this by writing 0102 on 000b and reading the returned value on 000c.

Hi, thank you for all the hard work. Is there any update on this?