Flutter breaking change: didChangeInputControl added to TextInputClient

@matthew-carroll Another breaking change has been made to TextInputClient on the master branch of Flutter (https://github.com/flutter/flutter/pull/76072).  The didChangeInputControl method was added, so the classes in super editor that implement it will be broken.
The point of the breaking change is to add support for virtual keyboards to Flutter, which are keyboards written in Flutter itself as a part of the app (useful for embedded environments with no system keyboard).  I left the implementations empty in this PR, but maybe you'd want super editor to support this, in which case you can probably just do something similar to what EditableText does.
I tried running the super editor example on this branch with the Flutter master channel that contains the breaking change, but it looks like there's an unrelated problem preventing super editor from running on master and beta, if it's not just something weird with my setup.  This PR did seem to fix the errors related to didChangeInputControl, though.

@justinmc thanks for the PR. Are there docs about how this method works? Multiple keyboards have always been usable, right? Just not Flutter keyboards? I'm surprised that there's any signal for this at all. Is there a justification somewhere for why Flutter would want to create a special recognition of Flutter keyboards?

The best docs are on TextInputControl.  We're in the process of reverting and relanding that feature so I'll just link to the docs in the original PR instead of the docs site, but notice there is an example there too: https://github.com/flutter/flutter/pull/76072/files#diff-701a97b414026a5c87a06b546bb38ca70be2aa0ce44cbf170f4b43e8defcc91aR2136
That PR lets you send text input changes to a TextInputClient from the framework, similar to how changes are communicated to the framework from physical keyboards and IMEs via the engine.  That means that you can create buttons at the app level that act as keyboard keys and send their changes to EditableText.
See this issue for how this project came about: https://github.com/flutter/flutter/issues/68988

@justinmc I see that the motivation is embedded systems, because those systems don't have an OS keyboard like iOS and Android.
I'm still curious why the IME client cares about this? Isn't the job of the IME client to handle any given IME state or delta, regardless of source? What is the IME client expected to do with this information? Up to this point, apps might use the standard OS keyboard, GBoard, or Samsung keyboards, and I assume those could change while running an app, but we haven't needed to notify the text input client. Is there a reason that this particular use of, or change of the keyboard is relevant for IME clients?

@justinmc I see that the motivation is embedded systems, because those systems don't have an OS keyboard like iOS and Android.
I'm still curious why the IME client cares about this? Isn't the job of the IME client to handle any given IME state or delta, regardless of source? What is the IME client expected to do with this information? Up to this point, apps might use the standard OS keyboard, GBoard, or Samsung keyboards, and I assume those could change while running an app, but we haven't needed to notify the text input client. Is there a reason that this particular use of, or change of the keyboard is relevant for IME clients?

My understanding is that in the examples you're giving, the OS specific embedding is abstracting this away from Dart based code - so if an Android devices goes from GBoard to Samsung keyboard, the Java code updates its reference internally but does not require that Dart code do the same.
OTOH, the framework patch allows someone to write an IME in Flutter, in which case the control object has a different role and is not getting preserved.
Regardless of whether this is a good design, it would be great to get this patch to a landable state and accept it so we can get the SuperEditor tests back into the customer testing repository and avoid further breakage/divergence. That way we could still iterate on the API design as necessary without as much risk.

Let's not merge bad API decisions

Regardless of whether this is a good design,

I appreciate the desire to get our tests running in the registry again, but I couldn't disagree with this more. We're getting more and more bad design decisions in the critical area of Flutter's text input system. I've mentioned many times before, there's no escape hatch for this part of Flutter. Every Flutter app in the world is stuck dealing with whatever the Flutter team does here. Let's please not ignore the implications and future consequences of bad API design.

That way we could still iterate on the API design as necessary without as much risk

Getting tests to pass doesn't mean "low risk", nor does it mean "low damage". Each time Flutter releases a breaking change, it really does break people. So if Flutter messes with this API once a quarter, Flutter is going to break every earlier release of Super Editor every quarter. That means all of our customers are forced to upgrade every quarter, for no other reason than the Flutter team didn't want to think these things through. What's the point of proposals and design docs if this is where we end up?
Revisiting the technical details
@dnfield you may not be the right person to answer these questions, but despite my best attempts, I can't seem to find anybody who is qualified to answer these questions. Frankly, it's astounding to me that it could be this difficult to get a clear answer as to why the Flutter team approved and merged a new method on a core interface...

so if an Android devices goes from GBoard to Samsung keyboard, the Java code updates its reference internally but does not require that Dart code do the same.

What control object are we talking about? Is this technical issue described in the proposal? If it is, I missed it. I've been trying my best to understand the specific technical requirement for this method, but haven't heard anything concrete. I've gotten high-level wishy-washy responses, and I've been referred to an issue ticket, PR, and proposal, none of which seem to make clear why this method exists, or what it's expected to do.

the framework patch allows someone to write an IME in Flutter

I still don't understand where my initial analysis went wrong. The TextInputClient currently doesn't know, and doesn't care what IME implementation it's working with. It doesn't know the difference between an iOS IME, an Android IME, a web IME, or a desktop IME. It doesn't know when the IME implementation changes. Why would writing an IME in Dart require any additional knowledge in the TextInputClient, whose only job is to process the current state of content editing, and update that state based on user input?
My theory is that this change takes a responsibility that belongs in the framework and pushes that responsibility into every implementation of TextInputClient.
Here's a diagram that shows the information flow that I would expect for a Dart IME:

Here's a diagram that shows the information flow for this particular implementation of Dart IME support:

It seems to me that the implied control flow for a Dart IME is plugging in at the wrong place. The framework boundary should be the place where all input signals plug in. Even the signals that originate in Dart code.
Think about how most of the testing signals work. When you fake touch events, Flutter's test system doesn't call a method directly on a gesture detector that says "Hey, FYI, you're now connected to a Dart gesture signal". No. Instead, the test system injects fake events through the real reporting system, because the point of gesture detectors is to respond to gestures, not to control the source of the gestures, nor to implement different behaviors based on the event origination. In fact, this exact same issue exists in tests for text. What about sending fake IME events in Flutter tests? Is Flutter's test system going to bypass the standard framework reporting mechanism? That sounds like a horror show waiting to happen...
If Flutter creates this watershed division of responsibilities, it's going to lead to a much bigger Frankenstein's monster. Let's not do that, please!
I'll repeat here the questions that I asked on Discord that never got a response:
What, exactly (I mean precisely, and technically, with an example), doesn't work in the absence of this new method?
What other reasonable response could there be to this method than to call show and hide?
Why is this the responsibility of the TextInputClient? We don't receive signals for any other kind of keyboard, so why do we seem to be creating a special snowflake situation for a virtual Flutter keyboard?

AFAIK, both Justin and JP are available on Discord - it may be worth trying to reach out to them there if you're not getting responses here.

I've spoken with Justin at great length. He doesn't have the answers to the above questions.
I posted those questions to JP. Haven't heard anything back yet.
Maybe Chris can finally clarify why this method should exist.

If you are not able to do this, this repo won't be able to be part of the customer testing registry.

You're welcome to quote the policy. You're welcome to kick us out of the registry. I don't see how that's in Flutter's interest. I don't see how that's in the community's interest. Therefore, to the extent that it's difficult or impossible for us to comply, you might look inward to see what Flutter is doing that makes it so difficult to comply. You might compare the number of tests in the registry against the number of projects in the ecosystem. It's probably worth asking why there's such an immense disparity.

That means that additional changes that impact you may take longer for you to become aware of, and it will likely make it that much harder to give feedback before changes like this become more entrenched/part of stable releases.

We were in the registry. Justin came over here to put up this PR because we were in the registry. How's the "feedback" part going? I can't get clear answers to basic questions. I don't how or if we're supposed to even implement this method. I have yet to see my concerns taken seriously by anyone in a position to act on them.
The irony is that this thread right here, right now, is "feedback". But instead of processing the feedback, the message is "adapt to the bad API or get out of our registry".

@matthew-carroll, unfortunately, when the tests were in the registry they didn't cause a test failure when they failed. This is regretful, and was an oversight we all missed, but it does mean that effectively the tests weren't in the registry in the sense that would let us know when a test failed. I urge you to enable the tests again so that we avoid this very specific kind of problem in the future again.
The point of the registry is for us to avoid breaking you by literally fixing your code for you (I'm impressed that we're doing this here even though there are no tests in the registry currently!). Up until https://github.com/superlistapp/super_editor/pull/837#issuecomment-1299388133 this thread seemed to be a healthy discussion of the design, but then the discussion took a weird turn where you started describing the API as "bad", which doesn't seem very friendly or productive. If you want to influence a design, you'll be more successful by leveraging empathy and presenting technical arguments in a friendly way rather than insulting the design. :-)
In any case, the goal of this PR as I understand it is to get your repository back into our test registry ASAP so that we can make sure you are in the loop of future changes. This is orthogonal to whether the API itself is what you would prefer, since it can continue to be changed (at least until it hits stable, after that we want to slow our roll, obviously) even after your tests are back in.


etcdserver: remove legacy range/txn

Needed for 3.0->3.1. Not needed for 3.1->3.2

LGTM

lgtm

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@3a1368d). Click here to learn what that means.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master    #7541   +/-   ##
=========================================
  Coverage          ?   70.44%
=========================================
  Files             ?      320
  Lines             ?    26178
  Branches          ?        0
=========================================
  Hits              ?    18441
  Misses            ?     6283
  Partials          ?     1454

Impacted Files
Coverage Δ

etcdserver/v3_server.go
67.61% <ø> (ø)

Continue to review full report at Codecov.

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


Static content support module.

Resolves #1869
Resolves #1236
Resolves #2631
Signed-off-by: Tomas Langer<EMAIL_ADDRESS>

Shouldn't this PR be targeted for 3.x ? It breaks compatibility right ?

Shouldn't this PR be targeted for 3.x ? It breaks compatibility right ?

I have only created a new module and deprecated the old classes. Everything still works as it used to.

I have only created a new module and deprecated the old classes. Everything still works as it used to.

Will need to incorporate changes from #2686 if we decide to merge them

Will need to incorporate changes from #2686 if we decide to merge them

Check #2631
We should support a fallback to a single file from static content.
Request to /static/webserver/index.html - which does not exist, should return /static/index.html.
This would allow for routing like this:
Routing.builder()
  .register("/static", StaticContentSupport.create("/static")
 .register("/static", SingleFileContent.create("/index.html")

Refactored implementation to have nicer builders, added integration tests to validate implementation.


VS 2017 versions of this sample collection

It seems that only the 01-Login sample was converted, so I would much prefer to not race with Jerrie who will to the others first and wait until Jerrie declares them done.
Since time is of issue to me and I really care about user profiles, rules and authorization, I might be forced to try to convert them myself if Jerrie's schedule is beyond my time limit :-)

Vs2017 samples will be done after VS2017 is released - which is next week.

Good. I am currently trying all samples using the already converted 01-Login as the "template", so I can verify the use of Auth0 in my app

@jerriep assuming that this data will help in getting this new code running:
Adding the Auth0 Setting object line fails with error message shown below

This used to work very recently (three days ago) when I upgraded my dotnet core modules to be:
 <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.Authentication.Cookies" Version="1.1.1" />
    <PackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="1.1.1" />
    <PackageReference Include="Microsoft.AspNetCore.Server.IISIntegration" Version="1.1.1" />
    <PackageReference Include="Microsoft.AspNetCore.Server.Kestrel" Version="1.1.1" />
    <PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="1.1.1" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.2" />
    <PackageReference Include="Microsoft.AspNetCore.Diagnostics" Version="1.1.1" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc.TagHelpers" Version="1.1.2" />
    <PackageReference Include="Microsoft.Extensions.Configuration" Version="1.1.1" />
    <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="1.1.1" />
    <PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="1.1.1" />
  </ItemGroup>

If there is an obvious fix for this, I would appreciate your advice, Jerrie.

@adriatic Can you please check out the VS2017 branch:
https://github.com/auth0-samples/auth0-aspnetcore-sample/tree/vs2017
It contains full working copies of all the quickstart samples converted to VS2017. I tested this and all of them worked.

@jerriep - the code I just pointed to is from the VS2017 branch (I would not make such rookie's mistake to bug you with trivialities) - see https://github.com/auth0-samples/auth0-aspnetcore-sample/blob/vs2017/01-Login/SampleMvcApp/Startup.cs#L44
The only way we could both be right is that your SampleMvcApp.csproj is already behind current (the version that is most likely be released as RTM tomorrow) and that the
Microsoft.Extensions.Configuration" Version="1.1.1"  treats the line
services.Configure<Auth0Settings>(Configuration.GetSection("Auth0"));

(please consider that I deserve more credit than what you were ready to give me 😄 )

@adriatic Thank you. I will leave this for now. After VS2017 is finally released tomorrow I will do a check once again to ensure everything. At this point we are working with pre-release software, so inconsistencies can creep in.
Also, I will be traveling this week, which means I will most likely only be able to ensure all is working at the beginning of this week.
Apologies for the inconvenience with this.

No inconvenience at all - as I would rather use the most recent dotnet core than to downgrade my app to the version numbers that work for you. I really appreciate your readiness to help - thank you!!
This article might be of some help as well http://www.strathweb.com/2016/09/strongly-typed-configuration-in-asp-net-core-without-ioptionst/
It's almost midnight here, so I will look into that tomorrow. If it is of common interest, I will add more data here.

@adriatic I do not know what to tell you about this error.
I updated the 01-Login project to all the latest NuGet packages just now (including Microsoft.Extensions.Configuration" Version="1.1.1") and I do not get the error you are getting.
When you get errors like these, please share your project with us, as it is impossible for us to try and track down the issue from screenshots alone.
That being said, I would appreciate, if possible, it you can wait until after VS2017 is released as right now we are working with a moving target.

I believe that this issue can be closed as the current set of samples that are written for Visual Studio usage work fine with VS 2017 (at least the dotnet core subset)


🚀💻 – Validate sample data against TIDES frictionless specification

User Stories
Describe the feature you want and how it meets your needs or solves a problem

As a transit agency, I'd like to know how to add my sample data.
As a transit agency, I want to know if my data and the scripts that support them conforms to the latests TIDES spec so that I can make any necessary fixes.
As a TIDES contributor, I'd like to know how proposed spec changes affect actual data so I can evaluate their ROI.
As a transit agency or transit technology developer, I'd like to easily review the sample data, scripts, and the context in which they were developed.
As a smaller transit agency or one that isn't yet automatically generating data, I'd like a template folder that can be used for quickly prototyping my TIDES data.
As a TIDES maintainer, I'd like templates to automatically update based on updates to the spec

Proposed Solution
List of Solutions for (relevant user story)
(Checking box indicates consensus achieved on approach)

[x] Documentation which articulates a desired example folder structure (1)
[x] GH Workflow for validation of /TIDES folders (2,4)
[x] Automatic documentation generation for example data (4)
[ ] Fill template directory datapackage.json data with REPLACEME (or similar)
[ ] Template folder with required and suggested directories and files (including datapackage.json) which can be used to quickly generate new examples (5)
[ ] Auto-generation of templates based on updates to the spec (6)

BONUS (or potentially another issue/PR):

Issue generation for failed validations

Proposed example directory structure:
/samples
    /agency-name     # Unique agency name
        datapackage.json  # Basic example information such as agency-name, CAD-AVL vendor, spec version, data maintainer (and their GH handle)
        /TIDES       # Data formatted in TIDES standard (in the future, we could have subfolders for versions if necessary)
        /raw    # Raw input data
        /scripts     # Scripts that turn data-raw to TIDES

Consensus Building
General Agreement

User stories 1-4 are useful and their proposed implementation in PR generally agreed upon

To Discuss
1 - Sources
How should data sources be documented?
Context

We are interested in understanding/daylighting/documenting the products or components the data came from.
datapackage.json allows users to specify where the data came from in the sources field.
sources can be specified at the data-packageor resourcelevel.
There can be more than one source listed in sources.

Options

resource-level: can relate different resources (i.e. fares vs APC) to different sources (preferred by @e-lo)
datapackage-level: simplifying and reducing the data that must be entered and replicated  (preferred by @botanize)
allow option for either: potential compromise (I think fine with both @botanize and @e-lo , but is less opinionated)

Discussed in the unresolved PR comments
note: this would only affect our documentation and template (if used, see below) datapackage.json since we are not developing (at this time) a datapackage profile which would validate this data.
2 - Template Files
Should we have template files (csvs and datapackage.json) and if so, is it useful to have code that auto-generates them based on changes to the spec?
Context

Disagreement on the broad usefulness of user story 5 (and its child, user story 6) as discussed in the unresolved PR comments, but summarized as

As a smaller transit agency or one that isn't yet automatically generating data, I'd like a template folder that can be used for quickly prototyping my TIDES data.
As a TIDES maintainer, I'd like templates to automatically update based on updates to the spec

datapackage.json contains a lot of important information about data expectations which is not validated anywhere since we are not currently using a tabular-data-package profile rather than developing our own profile which could enforce some of these conventions.

Options

that are auto-generated from the spec?  (currently implemented in PR, preferred by @e-lo )
as static files
datapackage.json documented as static text in the README.md, no csv templates (preferred by @botanize)

Thinking out loud here.
We will probably need an "examples" folder at the top level of the repo. Within examples maybe a folder for each agency, recommend using agency NTDID for folder name?
There could be at least two distinct types:

raw-ish data + processing code
output in TIDES format

Maybe the agency folder could contain:

readme.md: information about the sample, e.g., Agency, CAD/AVL vendor, known issues, spec version targeted?
output: (required) the TIDES formatted data
data-raw: (optional) the "raw" CAD/AVL data
scripts: (conditionally required if data-raw provided) the code used to transform data-raw files into output files.

Suppose a sample dataset fails validation, do we automatically create an issue? If the validation is part of a PR, do we block merging until validation passes, or is it added to a sample's known issues, or do we create a new issue for the sample + PR?

I really like your proposal, @botanize - I'm updating the issue description to reflect most of it.
Would you be able to submit a PR on this with the Metro Transit data along with documentation for "adding your data"?
I can work on the validation part once you have the data if you don't have time for that...just LMK

To consider (reflected in my updated issue description):

putting example metadata into structured data (yml, toml, other) so that we can use it if/when we want to auto-generate documentation and/or issues

I believe we're already using INI for flake8, and yaml for mkdocs, so we should probably use TOML or XML for agency metadata just to round things out? J/K. YAML seems fine.

I like this as well. Can we adjust slightly so as not to limit to just transit agencies creating examples.  Vendors, researchers, consultants, etc., all might have example data sets and scripts that they want to share, validate, etc.

not to limit to just transit agencies creating examples. Vendors, researchers, consultants, etc.,

I don't think the current structure is limited to just agencies submitting...but each submittal should have an associated transit service.  So long as top-level folder is unique...

I attempted to validate a small data sample for vehicle_locations.
If I don't specify a schema it's happy.
frictionless validate samples/50027-MetroTransitMN/TIDES/vehicle_locations.csv --limit-rows 2

# -----
# valid: samples/50027-MetroTransitMN/TIDES/vehicle_locations.csv
# -----

## Summary

> reached row limit: 2

+--------------+----------------------------------------------------------+
| Name         | Value                                                    |
+==============+==========================================================+
| File Place   | samples/50027-MetroTransitMN/TIDES/vehicle_locations.csv |
+--------------+----------------------------------------------------------+
| File Size    | 16.4 kB                                                  |
+--------------+----------------------------------------------------------+
| Total Time   | 0.061 Seconds                                            |
+--------------+----------------------------------------------------------+
| Rows Checked | 2                                                        |
+--------------+----------------------------------------------------------+

If I do, then it gives me errors for missing and incorrect labels, presumably because I don't have a field for every field in the spec, even though many are optional.
Does frictionless interpret optional to mean that the field must be present in the data table, but that it doesn't need to have values? That's very different from how most people (and GTFS) would interpret optional.
frictionless validate samples/50027-MetroTransitMN/TIDES/vehicle_locations.csv --limit-rows 2 --schema spec/vehicle_locations.schema.json

# -------
# invalid: samples/50027-MetroTransitMN/TIDES/vehicle_locations.csv
# -------

## Summary

> reached row limit: 2

+------------------+----------------------------------------------------------+
| Name             | Value                                                    |
+==================+==========================================================+
| File Place       | samples/50027-MetroTransitMN/TIDES/vehicle_locations.csv |
+------------------+----------------------------------------------------------+
| File Size        | 16.4 kB                                                  |
+------------------+----------------------------------------------------------+
| Total Time       | 0.022 Seconds                                            |
+------------------+----------------------------------------------------------+
| Rows Checked     | 2                                                        |
+------------------+----------------------------------------------------------+
| Total Errors     | 35                                                       |
+------------------+----------------------------------------------------------+
| Missing Label    | 6                                                        |
+------------------+----------------------------------------------------------+
| Incorrect Label  | 7                                                        |
+------------------+----------------------------------------------------------+
| Constraint Error | 8                                                        |
+------------------+----------------------------------------------------------+
| Type Error       | 2                                                        |
+------------------+----------------------------------------------------------+
| Missing Cell     | 12                                                       |
+------------------+----------------------------------------------------------+

## Errors

+-------+---------+------------------+--------------------------------------------------------------------------------------------+
| Row   |   Field | Type             | Message                                                                                |
+=======+=========+==================+============================================================================================+
|       |      14 | missing-label    | There is a missing label in the header's field "speed" at position "14"                    |
+-------+---------+------------------+--------------------------------------------------------------------------------------------+
|       |      15 | missing-label    | There is a missing label in the header's field "odometer" at position "15"                 |
+-------+---------+------------------+--------------------------------------------------------------------------------------------+
|       |      16 | missing-label    | There is a missing label in the header's field "schedule_deviation" at position "16"       |
+-------+---------+------------------+--------------------------------------------------------------------------------------------+
|       |      17 | missing-label    | There is a missing label in the header's field "headway_deviation" at position "17"        |
+-------+---------+------------------+--------------------------------------------------------------------------------------------+
|       |      18 | missing-label    | There is a missing label in the header's field "in_service" at position "18"               |
+-------+---------+------------------+--------------------------------------------------------------------------------------------+
|       |      19 | missing-label    | There is a missing label in the header's field "schedule_relationship" at position "19"    |
+-------+---------+------------------+--------------------------------------------------------------------------------------------+
|       |       7 | incorrect-label  | Label "latitude" in field device_id at position "7" does not match the field name in the   |
|       |         |                  | schema                                                                                |
+-------+---------+------------------+--------------------------------------------------------------------------------------------+
|       |       8 | incorrect-label  | Label "longitude" in field stop_id at position "8" does not match the field name in the    |
|       |         |                  | schema                                                                                |
+-------+---------+------------------+--------------------------------------------------------------------------------------------+
|       |       9 | incorrect-label  | Label "heading" in field current_status at position "9" does not match the field name in   |
|       |         |                  | the schema                                                                                |
+-------+---------+------------------+--------------------------------------------------------------------------------------------+
|       |      10 | incorrect-label  | Label "speed" in field latitude at position "10" does not match the field name in the      |
|       |         |                  | schema                                                                                |
+-------+---------+------------------+--------------------------------------------------------------------------------------------+
|       |      11 | incorrect-label  | Label "odometer" in field longitude at position "11" does not match the field name in the  |
|       |         |                  | schema                                                                                |
+-------+---------+------------------+--------------------------------------------------------------------------------------------+
|       |      12 | incorrect-label  | Label "schedule_deviation" in field gps_quality at position "12" does not match the field  |
|       |         |                  | name in the schema                                                                         |
+-------+---------+------------------+--------------------------------------------------------------------------------------------+
|       |      13 | incorrect-label  | Label "gps_quality" in field heading at position "13" does not match the field name in the |
|       |         |                  | schema                                                                                |
+-------+---------+------------------+--------------------------------------------------------------------------------------------+
| 2     |       4 | constraint-error | The cell "" in row at position "2" and field "trip_id_performed" at position "4" does not  |
|       |         |                  | conform to a constraint: constraint "required" is "True"                                   |
+-------+---------+------------------+--------------------------------------------------------------------------------------------+
| 2     |       5 | constraint-error | The cell "" in row at position "2" and field "stop_sequence" at position "5" does not      |
|       |         |                  | conform to a constraint: constraint "required" is "True"                                   |
+-------+---------+------------------+--------------------------------------------------------------------------------------------+
| 2     |      12 | constraint-error | The cell "0" in row at position "2" and field "gps_quality" at position "12" does not      |
|       |         |                  | conform to a constraint: constraint "enum" is "['Excellent', 'Good', 'Poor']"              |
+-------+---------+------------------+--------------------------------------------------------------------------------------------+
| 2     |      13 | type-error       | Type error in the cell "Excellent" in row "2" and field "heading" at position "13": type   |
|       |         |                  | is "number/default"                                                                        |
+-------+---------+------------------+--------------------------------------------------------------------------------------------+
| 2     |      14 | missing-cell     | Row at position "2" has a missing cell in field "speed" at position "14"                   |
+-------+---------+------------------+--------------------------------------------------------------------------------------------+
| 2     |      15 | missing-cell     | Row at position "2" has a missing cell in field "odometer" at position "15"                |
+-------+---------+------------------+--------------------------------------------------------------------------------------------+
| 2     |      16 | missing-cell     | Row at position "2" has a missing cell in field "schedule_deviation" at position "16"      |
+-------+---------+------------------+--------------------------------------------------------------------------------------------+
| 2     |      17 | missing-cell     | Row at position "2" has a missing cell in field "headway_deviation" at position "17"       |
+-------+---------+------------------+--------------------------------------------------------------------------------------------+
| 2     |      18 | missing-cell     | Row at position "2" has a missing cell in field "in_service" at position "18"              |
+-------+---------+------------------+--------------------------------------------------------------------------------------------+
| 2     |      19 | missing-cell     | Row at position "2" has a missing cell in field "schedule_relationship" at position "19"   |
+-------+---------+------------------+--------------------------------------------------------------------------------------------+
| 3     |       4 | constraint-error | The cell "" in row at position "3" and field "trip_id_performed" at position "4" does not  |
|       |         |                  | conform to a constraint: constraint "required" is "True"                                   |
+-------+---------+------------------+--------------------------------------------------------------------------------------------+
| 3     |       5 | constraint-error | The cell "" in row at position "3" and field "stop_sequence" at position "5" does not      |
|       |         |                  | conform to a constraint: constraint "required" is "True"                                   |
+-------+---------+------------------+--------------------------------------------------------------------------------------------+
| 3     |       9 | constraint-error | The cell "0" in row at position "3" and field "current_status" at position "9" does not    |
|       |         |                  | conform to a constraint: constraint "enum" is "['Incoming at', 'Stopped at', 'In transit   |
|       |         |                  | to']"                                                                                |
+-------+---------+------------------+--------------------------------------------------------------------------------------------+
| 3     |      11 | constraint-error | The cell "18008" in row at position "3" and field "longitude" at position "11" does not    |
|       |         |                  | conform to a constraint: constraint "maximum" is "180"                                     |
+-------+---------+------------------+--------------------------------------------------------------------------------------------+
| 3     |      12 | constraint-error | The cell "0" in row at position "3" and field "gps_quality" at position "12" does not      |
|       |         |                  | conform to a constraint: constraint "enum" is "['Excellent', 'Good', 'Poor']"              |
+-------+---------+------------------+--------------------------------------------------------------------------------------------+
| 3     |      13 | type-error       | Type error in the cell "Good" in row "3" and field "heading" at position "13": type is     |
|       |         |                  | "number/default"                                                                           |
+-------+---------+------------------+--------------------------------------------------------------------------------------------+
| 3     |      14 | missing-cell     | Row at position "3" has a missing cell in field "speed" at position "14"                   |
+-------+---------+------------------+--------------------------------------------------------------------------------------------+
| 3     |      15 | missing-cell     | Row at position "3" has a missing cell in field "odometer" at position "15"                |
+-------+---------+------------------+--------------------------------------------------------------------------------------------+
| 3     |      16 | missing-cell     | Row at position "3" has a missing cell in field "schedule_deviation" at position "16"      |
+-------+---------+------------------+--------------------------------------------------------------------------------------------+
| 3     |      17 | missing-cell     | Row at position "3" has a missing cell in field "headway_deviation" at position "17"       |
+-------+---------+------------------+--------------------------------------------------------------------------------------------+
| 3     |      18 | missing-cell     | Row at position "3" has a missing cell in field "in_service" at position "18"              |
+-------+---------+------------------+--------------------------------------------------------------------------------------------+
| 3     |      19 | missing-cell     | Row at position "3" has a missing cell in field "schedule_relationship" at position "19"   |
+-------+---------+------------------+--------------------------------------------------------------------------------------------+

I filed a bug with frictionless framework: https://github.com/frictionlessdata/framework/issues/1258

Context

Disagreement on the broad usefulness of user story 5 (and its child, user story 6) as discussed in the unresolved PR comments, but summarized as

As a smaller transit agency or one that isn't yet automatically generating data, I'd like a template folder that can be used for quickly prototyping my TIDES data.
As a TIDES maintainer, I'd like templates to automatically update based on updates to the spec

datapackage.json contains a lot of important information about data expectations which is not validated anywhere since we are not currently using a tabular-data-package profile rather than developing our own profile which could enforce some of these conventions.

Options

that are auto-generated from the spec?  (currently implemented in PR, preferred by @e-lo )
as static files
datapackage.json documented as static text in the README.md, no csv templates (preferred by @botanize)

I think there's a fourth option here, which is related to the second, provide real example files, from either Metro Transit or CalITP.
This would match common practice of providing a working tutorial, test data or template config files that can be used as-is. They would contain real-world data, providing more insight for potential producers than empty, or fake data.
Any significant proposed change to the spec will show up as a validation error in the CI workflow, and could be resolved by the producer as part of the spec change PR, or in a separate PR.
I suggest dropping the templates from #75 and merging what we already agree on as outlined above. Then addressing the need for more documentation in a separate PR that provides example data. I've got a minimal one almost ready to go for Metro Transit, it's currently blocked by the frictionless foreignKey validation in #77, which could be resolved by #81.

Can we split this PR into at least three?
The first two PRs could be merged almost immediately with a few modifications of the contents of this PR:

Documentation of desired samples structure and generation for samples

README.md: replace reference to template with Data Package Spec
docs/index.md
contributors.md
docs/samples.md
main.py
mkdocs.yml
.markdownlint.yaml
requirements.txt
.gitignore
samples/README.md: remove template section

GitHub workflow for sample validation

.github/workflows/validate-data.yml: maybe change name to validate-samples to match workflow name, update paths to match descriptions in documentation.

Datapackage profile and documentation (#93)

Deprecating in favor of PR #100 and #101 and issue #93


Not all pages use HTTPS

See mafagafogigante.org/dungeon and mafagafogigante.org/photo when clicked from the Portfolio page for examples.
This may be related to how GitHub handles project pages.
Possibly, fixing #12 also fixes this.

Invalid. I don't care about this anymore. This is a static website, HTTP is fine.


Document in zh: doesn't recognize T&D section

Given the T&D section isn't called "Terms and definitions" in zh, the gem doesn’t recognize the section and has these consequences:

Creates entries in the index for every term (subsections).
the [.source] keyword doesn't work. (renders as [SOURCE: , modified - 2.9, note-in-zh])

It also doesn't recognize the Scope, Norm References sections:
ISO style: Prefatory material must be followed by (clause) Scope
ISO style: Normative References must be followed by Terms and Definitions
ISO style: Document must contain at least one clause

#111 will address this

It has.


Appending blocks does not work work

a.dt:
doctype html

head
body
    block x

b.dt:
extends a

append x
    h1 b

c.dt:
extends b

append x
    h1 c

Should show b and c when you render c. But it only shows c.

 Just noticed block append [blockname] does not throw an error, whereas simply using append throws an error that the operation has not been implemented yet. If I'm not mistaken, in Jade both operations are identical.


feat(pinia-orm): Pinia setup store syntax support

🔗 Linked issue
Resolves: #1888

📚 Description
It adds support for the pinia setup store. Downside...it also add 4KB to the bundle size...

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

Project coverage is 99.72%. Comparing base (ad91ce6) to head (65ce4b3).

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #1905   +/-   ##
=======================================
  Coverage   99.72%   99.72%
=======================================
  Files          90       90
  Lines        6255     6287   +32
  Branches      524      528    +4
=======================================
+ Hits         6238     6270   +32
  Misses         14       14
  Partials        3        3

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


add leveldbinit command to bash

Adds a command to quickly recreate leveldb after rm -rf /opt/warp10/leveldb/*

PTAL

PTAL

PTAL


[REEF-268] Moved ConfigurationProvider.java into Tang

This moves the ConfigurationProvider.java  file into Tang. The earlier commit only did the refactoring.
JIRA:
REEF-268

Looking at it.


create standalone application for Windows 10

create standalone application for Windows 10

http://www.pyinstaller.org/

https://www.wikivs.com/wiki/GTK_vs_Qt#Portability

https://blog.qt.io/blog/2015/04/29/windows-10-support-in-qt/

Try new Yara Python released July 25....  yara-python-<IP_ADDRESS>

There was some problems using yara-python on windows 10, I was unable to compile a working version of WMS for windows 10, the new release will hopefully address these problems. I will build WMS as soon as I have some free time


[KYUUBI #1008] Implement Hadoop File System Delegation Token Provider

Why are the changes needed?
This PR finishes the work of task #1008
How was this patch tested?

[x] Add some test cases that check the changes thoroughly including negative and positive cases if possible

[ ] Add screenshots for manual tests if appropriate

[ ] Run test locally before make a pull request

Codecov Report

Merging #1029 (c11ba6e) into master (057bac1) will increase coverage by 0.11%.
The diff coverage is 97.50%.

@@             Coverage Diff              @@
##             master    #1029      +/-   ##
============================================
+ Coverage     80.65%   80.77%   +0.11%
  Complexity       14       14
============================================
  Files           159      160       +1
  Lines          5837     5877      +40
  Branches        657      657
============================================
+ Hits           4708     4747      +39
  Misses          734      734
- Partials        395      396       +1

Impacted Files
Coverage Δ

.../credentials/HadoopFsDelegationTokenProvider.scala
96.42% <96.42%> (ø)

...in/scala/org/apache/kyuubi/config/KyuubiConf.scala
95.25% <100.00%> (+0.11%)
:arrow_up:

Continue to review full report at Codecov.

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

@pan3793 @yaooqinn Ready to be reviewed.

#1028 got merged, it excluded all hadoop deps from hudi, pls revert the related changes and rebase on latest master branch

@pan3793 Thanks for the notification. Rebased on the master branch.

@ulysses-you modified according to advice. Ready to be reviewed again.

thanks, merging to master


Error on java.lang.NoSuchMethodError: TreeNode.setChildren

I execute the example code.
public void generateGRCT() {
	// Instantiate a new DependencyParser, i.e., a StanfordParser
	DependencyParser parser = new StanfordParserWrapper();
	parser.initialize();
	// Initialize the label generators for: syntactic nodes, lexical nodes and part-of-speech nodes
	SyntElementLabelGenerator rg = new RelationNameLabelGenerator();
	LexicalElementLabelGenerator ng = new LemmaCompactPOSLabelGeneratorLowerCase();
	PosElementLabelGenerator ig = new OriginalPOSLabelGenerator();

	// Parser a sentence
	DependencyGraph parse = parser.parse("The cat runs over the grass.");

	// Generate the KeLP TreeRepresentation
	TreeRepresentation grctGenerator1 = TreeRepresentationGenerator.grctGenerator(parse, rg, ng, ig);
	String grct1 = grctGenerator1.getTextFromData();
	System.out.println(grct1.replace("(", "[").replace(")", "]"));
}

Here is the bug information.
Exception in thread "main" java.lang.NoSuchMethodError: it.uniroma2.sag.kelp.data.representation.tree.node.TreeNode.setChildren(Ljava/util/ArrayList;)V
	at it.uniroma2.sag.kelp.input.tree.TreeRepresentationGenerator.generateGrctRepresentation(TreeRepresentationGenerator.java:63)
	at it.uniroma2.sag.kelp.input.tree.TreeRepresentationGenerator.generateGrctRepresentation(TreeRepresentationGenerator.java:90)
	at it.uniroma2.sag.kelp.input.tree.TreeRepresentationGenerator.generateGrctRepresentation(TreeRepresentationGenerator.java:90)
	at it.uniroma2.sag.kelp.input.tree.TreeRepresentationGenerator.grctGenerator(TreeRepresentationGenerator.java:48)
	at tw.edu.sinica.iis.iasl.PoliticalTreeExperiment.Test.generateGRCT(Test.java:60)
	at tw.edu.sinica.iis.iasl.PoliticalTreeExperiment.Test.main(Test.java:43)

Maybe there is a new version of TreeNode.java?
Thanks in advance
Wind

Dear Wind,
which KeLP versione are you using?
Up now, you should use the 2.2.1-SNAPSHOT.
Best regards
Danilo

I solved this problem.
Since this issue, I already use 2.2.1-SNAPSHOT for kelp-full.
I downloaded jar files of 2.2.1-SNAPSHOT by Maven at 2017-05-12. There are old jar files in the .m2 directory.
But this project, kelp-input-generator, need the latest version TreeNode.java

I delete the old jar files of "kelp-additional-kernels" and download it again.
Now I get the latest version 2.2.1-SNAPSHOT and the example code works well.
Maybe you can release a new version of kelp-full? :laughing:
Sorry about my bad English.
Best regards
Wind

Dear Wind,
we are planning to release a new version of KeLP in the next days.
Stay tunes and, most importantly, thank you for using KeLP :-)
Best regards
Danilo


Can GAE support edge_weight?

❓ Questions & Help

Hi, I found an example in https://github.com/rusty1s/pytorch_geometric/blob/master/examples/autoencoder.py
It seems now the encoder GCN can support edge_weight, but does any decoder can handle it?

Yes, the encoder can support edge weights, but you need to write your own decoder and loss function, because the inner product decoder and the binary cross entropy loss only work for unweighted graphs.

Yes, is there any examples of this? I think it we can use some regression loss with inner product decoder, am I right?

No, there is no example, but it should be quite trivial to implement by following the code of the autoencoder module. I have never seen an inner product decoder in combination with a regression loss, but it may be worth a try. An alternative would be to simply use an MLP based on source and target node latent features.

"An alternative would be to simply use an MLP based on source and target node latent features." what this means? the MLP input embeddings and output the weight?

Yes, something like:
class MLPDecoder(torch.nn.Module):
    ....
    def forward(self, z, edge_index):
        row, col = edge_index
        return self.mlp(torch.cat([z[row], z[col]], dim=-1))


Addons not loading in game anymore

I was able to download both the d912pxy and radial mod with the version prior to 1.0. I never had any issues with the addons being disabled somehow or performing incorrectly. I had updated the manager to 1.0 and downloaded an update for both mods. At first I was able to use both mods in the game until I quit to the desktop and re logged in a couple of hours later. Both the radial and d912 mods just stopped working.
At first I noticed you had previously suggested to delete the addon and bin folder and reinstall which did fix the issue momentarily and I was able to use the mods when logging into the game. The problem is that every time I quit out of the game and either re log in a couple of minutes or hours the mods just completely stop working.
I initially after this redid the same step of deleting the addon and bin folder but now I can't seem to get either of the two mods working ever. I have tried going to previous versions of the addon manager with no luck. I have also tried running the addon manager in compatibility mode and admin mode with no luck.
I just as of 10 minutes ago reinstalled the addon manager 1.0 version and installed both of the mods and loaded the game up. Neither mod is showing that it is installed or working in game.
The following below is the config file information:
application_version: v1.0.0
loader_version: v0.1
bin_folder: bin64
isupdate: true
game_path: C:\Guild Wars 2
default_configuration:
d3d9_wrapper: false
version:
d3d9_wrapper: v1.0
d912pxy: v2.1h1
gw2radial: v1.2.4_al
installed:
d3d9_wrapper: d3d9_wrapper
d912pxy: d912pxy
gw2radial: gw2radial
disabled:
d3d9_wrapper: false
d912pxy: false
gw2radial: false
Thanks

Apparently renaming the folder to say GW2 instead of Guild Wars 2 fixed the issue. If anything else weird pops up I'll be sure to report it. If you don't mind I'll keep this open for another day just to be sure.

I had to re open this issue as changing the file name is basically a temp fix that only lasts a couple of days. Is there anything that can be permanently done to fix this problem?

Basically if you just keep renaming the folder to GW2 then GW3 it would fix the issue temporarily until it stops working again. I'm not sure if this will help you in tracking the issue down.

Sorry for the late response, got finals week coming up (though tbh just about everything's been cancelled except for a dynamic memory allocator assignment due to the pandemic).
No idea what could be causing this issue, but I'll look into it after finals. I'm guessing it's an addon loader issue, perhaps Megai can shed some light on it.
I have an extended spring break, so hopefully I can clear up my backlog of development stuff then including this.

Yeah no rush take your time. I would rather you spend time on something more important than this. I'll update this if anything else weird pops up but this is basically the only issue related to the addon manager that I'm having.

https://github.com/megai2/d912pxy/issues/38#issuecomment-520420672
use ReShade 4.3.0
Case 1 use arcdps , d912pxy ,ReShade :
    arcdps => /bin64/d3d9.dll
    d912pxy =>/bin64/d3d9_chainload.dll
    ReShade => allfile => Game directory ReShade64.dll => dxgi.dll or d3d12.dll

Case 2 use arcdps , d912pxy ,ReShade, gw2raidal:
    arcdps => /bin64/d3d9.dll
    gw2raidal =>/bin64/d3d9_chainload.dll
    d912pxy =>/bin64/d912pxy.dll
    ReShade => allfile => Game directory ReShade64.dll => dxgi.dll or d3d12.dll

Case 3 use d912pxy ,ReShade, gw2raidal:
    gw2raidal =>/bin64/d3d9.dll
    d912pxy =>/bin64/d912pxy.dll
    ReShade => allfile => Game directory ReShade64.dll => dxgi.dll or d3d12.dll

This is instruction from dx912pxy addon dev.
Gotta make sure that things are properly chain-loaded.
Also, Boon Table/Mechanics addon is no longer maintained, thus it can cause chainload to break.
In addition, Blish Add-on is causing another error.

not getting downloaded via UOAM
not getting installed properly by UOAM
not getting chain loaded properly by UOAM

You might need to totally rewrite how UOAM combines addon files.

NVM on what I commented
Even when I manually installed Add-ons it does not load properly. (Yes I clean reinstalled GW2)
obnoxious.. this must be Anet's problem.

Basically if you just keep renaming the folder to GW2 then GW3 it would fix the issue temporarily until it stops working again. I'm not sure if this will help you in tracking the issue down.

Me and a friend of mine can second this, the addon-manager is always working for a day or two, then it stops working until you change the offical Guild Wars 2 folder name from GW2 to something else. Once you've used a name you can't re-use it afterwards

Can confirm, exact same issue. After removing all addons and going manual nothing loads at all. Ended up renaming the directory to have my addons loaded again with the manual install. Something is being prevented the addons from being loaded even with manual after they stopped working. Is the way the addons being loaded by this manager considered cheating by anet or something?

Potential source of issue: http://reddit.com/r/Guildwars2/comments/f8pq9z/d912pxy_dx12_for_gw2_now_v21/fm3fhvl

I am having the same issue, my add-ons won't load and even when going manual they still won't load. arcdps won't show up even after a clean install.

I am having the same issue, I used the GW2 addon manager to being with then it all stopped working. I tried installing it the normal way through copy pasting the d3d9.dll as well, after re-installing gw2, but the arc settings-window still doesnt pop up on the screen.
Here is also my config:
application_version: v1.0.0
loader_version: v0.1
bin_folder: bin64
isupdate: true
game_path: D:\Spel\Guild Wars 2
default_configuration:
d3d9_wrapper: false
arcdps: true
version:
d3d9_wrapper: v1.0
arcdps: >
0cff00472d7e6566aa684c5e0c1fd93c  d3d9.dll
d912pxy: v2.1.1
gw2radial: v1.2.4_al
installed:
d3d9_wrapper: d3d9_wrapper
arcdps: arcdps
d912pxy: d912pxy
gw2radial: gw2radial
disabled:
d3d9_wrapper: false
arcdps: false
d912pxy: false
gw2radial: false

Same issue here for the past few days. I was able to get d912pxy working by installing it as d3d9.dll, but that only works when installed outside of the bin64 folder.

On my Windows 10 1903 system (Education SKU) after exiting from Guild Wars 2 the following registry key gets created:
Registry::HKEY_USERS<SID OF USER>\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
NoteProperty E:\Guild Wars 2\Gw2-64.exe=$ IgnoreFreeLibrary<d3d9.dll>
This appears to be Windows disabling the loading of d3d9.dll from the GW2 directory due to apparent compatibility issues. This registry key prevents add ons from working until it is removed. Once you remove the registry key after exiting GW2 and starting GW2 addons will work again until the next time you quit the GW2 application.
My workaround is to run the following in powershell before each time I start the GW2 client:
$current_sid = [System.Security.Principal.WindowsIdentity]::GetCurrent().User | Select-Object -ExpandProperty Value

Remove-ItemProperty -Path "Registry::HKEY_USERS\$current_sid\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" -Name *Gw2-64.exe*

Thanks for the update @blocke; do those commands require admin? If not, could I include them as part of the boot or shutdown process of the addon manager and achieve the same effect?

@fmmmlee My user in Windows is in the administrator group but I did not do anything to elevate my privileges. I did not run powershell with any UAC prompt or specific privilege escalation action.
I'm not a Windows admin so I don't know what restrictions Windows places on editing the specific user's HKEY_USERS registry hive. Also I honestly don't know if the registry edit I'm doing is going to cause other problems but so far it Works For Me (tm).

@blocke appreciate the privilege info, thanks. As for the key itself, does modifying the data in the registry key fix the problem, or is deleting it the only solution? If the former is the case, you could just modify the key to fix the problem and then deny edit access for everyone, so that (hopefully) the key remains set to a value that doesn't interfere with loading the addon libraries.

@fmmmlee Playing with registry permissions was a good idea.
I tried leaving the key in place but blanking out the value (setting it to be an empty string). Windows put the IgnoreFreeLibrary back into the key's value after the GW2 app closed.
I set the permissions for AppCompatFlags\Layers for the user I run GW2 under to specifically Deny both Full Control and Read access. I started and quit GW2 five times, rebooted Windows, then tried a couple more times. The permission change survived reboot and the IgnoreFreeLibrary key is not being created anymore. I did not need to modify the read/full control permissions of the administrator group. Denying read/write to the specific user seems good enough.
I think I'll stick with the registry permissions hack as it's probably less invasive than disabling an entirely disabling PCA.
Thanks for your work on GW2 Addon Manager! :)

Huh so that is where the registry was, no wonder I couldn't find it.
I can confirm that I have that registry entry there.
Either way I have been testing with manual addons installed to see if it would happen again. Since the last post here where I said I installed everything manual it had not happened at all. Which leads me to thinking that something in the way the dll's are loaded (so different from manual chainloading) is causing this to happen?
It seems to happen when the command FreeLibrary(..); is used. Which should be in the gw2 client. Since it doesn't happen with manual install I have a feeling it lies in the gw2-addon-loader where the bug is located to cause this behavior. I have been looking through the code but unable to find any clue there..
I have no proof but it could be somewhere where the dll's have conflicts/try to override eachother? Conflicting information, manifests, files, calls.. Something that doesn't happen in chainloading cause the main dll (usually arcdps) is leading and providing the details/manifests/function calls..
Interesting reading sources;
https://docs.microsoft.com/en-us/windows/win32/api/libloaderapi/nf-libloaderapi-freelibrary
https://software.intel.com/en-us/forums/intel-fortran-compiler/topic/606006 linked from https://hero.handmade.network/forums/code-discussion/t/2248-windows_preventing_game_code_dll_unloading
So yeah.. So I would say something is still referencing the dll's when the games down with an error somewhere caused by either the dll's (most likely if it happens every few days minimum) or the game itself maybe?
Fixing with messing the registry is for me only a bandaid solution that should not be used for too long..

@megai2 Any insights on the above?

@megai2 Any insights on the above?

Windows sets this flag when gw2 crashes in d3d9 frequently.
Giving fact that some ppl have crash on exit, that i can't reproduce to properly trace down source of problem, "normal" patch date arc crashes and other crashes - only registry cleaning are viable for now.

@megai2 is there some way to block windows from setting the flag or maybe hide the filename so that when the crashes happen Windows doesn't flag d3d9.dll? I'm guessing probably not but can't hurt to try.
At the moment, though, I'll just update the wiki with instructions and information about this problem and how to work around it with permissions or a script like @blocke uses.

@megai2 is there some way to block windows from setting the flag or maybe hide the filename so that when the crashes happen Windows doesn't flag d3d9.dll? I'm guessing probably not but can't hurt to try.
At the moment, though, I'll just update the wiki with instructions and information about this problem and how to work around it with permissions or a script like @blocke uses.

There was idea to make a manifest, but it ended up not viable.
I was about to make a script for that, but looks like you already got it.

I added changes in loader to handle that case with ignored FreeLibrary, but it should be placed in game root folder. Maybe it will work out.

@megai2 do you think it might be possible to implement the script blocke wrote above inside the addon-loader d3d9.dll itself on application exit? That way, if Windows ever flags d3d9.dll, the flag gets removed when the game is closed. (of course, if it crashed and the script didn't get a chance to run, then the flag got set....yeah, gotta go run it manually)
also, if those changes you mentioned are ready....would be good if you could make a new release of loader-core  :smiley:

@megai2 do you think it might be possible to implement the script blocke wrote above inside the addon-loader d3d9.dll itself on application exit? That way, if Windows ever flags d3d9.dll, the flag gets removed when the game is closed. (of course, if it crashed and the script didn't get a chance to run, then the flag got set....yeah, gotta go run it manually)
also, if those changes you mentioned are ready....would be good if you could make a new release of loader-core 😃

better to put it somewhere in release but with small improvement: make it delete reg entry & start game.
they are ready, but should be tested first

Wanted to add something here.  I've noticed this happening on several computers as well.  Finally decided to spend time digging into this and noticed the issue happens on my account but not other accounts, so therefore it must be something in my user profile.  After quite a while of deleting anything related to GW2 in my profile, searching the registry, etc, I finally found this key:
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\ArenaNet\Guild Wars 2\Src - value was:
"C:\Users\username\AppData\Local\Temp\Gw2-64.exe"
Funny enough, the registry entry itself wasn't in the user profile, but the path was, so it had the same effect.  Not sure why there would be a registry entry pointing to an executable in the temp directory, but deleting it solved the issue with d3d9.dll not loading, at least on my main computer.  Will see if it's the same issue on the others.  Hope this helps someone.

Well it seems that was a temporary fix.    When I loaded the game again, none of the addons loaded.  The registry key mentioned earlier:
Registry::HKEY_USERS\<SID OF CURRENT USER>\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
and mine:
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\ArenaNet\Guild Wars 2\Src both don't exist.  Hunting more...

fixes to loader and d3d wrapper are released. if you have problem with registry key - just move d3d9.dll from bin64 to game root folder

i have encountered the same exact problem, however, whehn i tried the regedit fix, the path ended abruptly at AppCompat and the only thing efter that was a folder thingy named store.

I would no longer recommend playing with permissions on the AppCompatFlags\Layers registry key as revoking write privileges on AppCompatFlags will cause recent versions of the Discord client installer to crash.

Just a small update to this issue... though I am not actually certain that it is the same issue.
All my addons stopped loading for some reason, tried reinstalling and other such fixes before looking around on the internet and finding this thread.
I've looked through the registry and haven't found the AppCompatFlags key. I did find the HKEY_LOCAL_MACHINE src key referencing the wrong install folder, but no change in addon loading after deleting it. Someone else mentioned that renaming the gw2 folder is a temporary fix, but that doesn't seem to work either.
I will say that this doesn't seem to be an issue with addon manager itself as installing manually still results in no addons loaded, but don't really know where else to post for possible help resolving this issue.

Something prevents any of d3d9.dll load in game.
Maybe some 3-rd party overlay or other programs (antiviruses, video capture, some drivers)
Or maybe you somehow running game from another install folder.
Anyway if you don't have any logs that is "witch hunting".
Maybe you can remember what happenned when addons stopped working,
because nothing happens without a reason.

Having the same issue. STILL. I have to rename the dang Guild Wars 2 directory to get this thing to work. There hasnt been a fix yet?


When the same data is pushed to the array, does not trigger the update of the view?

When the same data is pushed to the array, does not trigger the update of the view?

Hi, please make sure to follow the Issue Reporting Guidelines before opening an issue. Thanks!


Add search through posts to the blog

This change addresses the need by:

Adding the Gatsby plugin for FlexSearch, and tweaking its
configuration for searching over blog posts titles, intros and bodies;
Adding a React hook to handle searches using FlexSearch;
Adding a component to handle the search bar (to be customized).

Closing this as the blog will eventually be replaced and this is no longer worth the effort.


System Layer Event Request

Please create an event in the system layer that can be used to trigger a discovery between extensions.
[IntegrationEvent(false, false)]
procedure OnDiscovery(var ReferenceRec: Variant)
begin
end;

Sounds interesting! But I think I need a little (or a lot :-D) more context to evaluate this request. Could you let us know what you are trying to achieve? And how you intend to use this event?

Sure my friend.  I want to be able to have two AL apps that can work together without having compile dependencies.  I am using Json Interfaces to send messages between AL apps but the only thing missing in that pattern is the possibility to trigger a discovery between apps.
Example: if Service Connections was an App.  The discovery event is in the Service Connections app and therefore every App that adds to Service Connections must have dependency on that app.  If this event is in the System Layer then Service Connection App can use this event and we don't need compile dependencies.  Same story with Business Setup.
We have Online Banking Solution that allows functionality and connection interfaces to register via discovery pattern.  The registration it self is done via Json Interface and today we have this Discovery Event in our localization layer.  We can also register into the ReferenceRec using RecRef and FieldRef.
Example subscriber:
  [EventSubscriber(ObjectType::Codeunit, 10000224, 'OnDiscovery', '', false, false)]     local procedure OnRegisterBankConnection(var ReferenceRec: Variant)     var         Setup: Record "ADV Service Auth. Setup";         DataTypeMgt: Codeunit "Data Type Management";         RecRef: RecordRef;     begin         if not DataTypeMgt.GetRecordRef(ReferenceRec, RecRef) then exit;         if RecRef.Number() <> JsonInterfaceMgt.GetTableID('ADV Bank Web Services') then exit; ...

Very interesting indeed! A message bus for extensions. Sounds like something we would have to design carefully! Let me investigate for starters :-)


Document how to build with system libs instead of vendored libs

I'm considering to package OSM Express for NixOS / nixpkgs. As with many Linux distributions, the preferred way is to let applications use common copies of the libraries provided by the distribution, rather each bringing their own copies of those libraries.
It seems like, except for s2geometry, the libraries required by OSM Express are already in nixpkgs:

libosmium
LMDB
Cap’n Proto
CRoaring

(When packaging OSM Express, I would also — separately — package s2geometry.)
However I'm unsure how to tell the OSM Express build system to use the distribution-provided libraries rather than the ones included in the source tree, and in the instructions to build from source I didn't find anything about that, either. Ideally, this can be done by passing arguments to cmake instead of having to modify any files in the source tree.

Is the convention for Nix packages to use dynamic linking instead of static? I have preferred doing as much static linking as possible because it makes my own builds easier.
We can parameterize the CMake file to do one or both of 1) letting the OS defaults handle header search/link paths and 2) prefer dynamic builds for libraries https://github.com/protomaps/OSMExpress/blob/master/CMakeLists.txt#L12
Ideally this isn't specific to NixOS though and works the same way for Debian, for example.
Also, the way the build works is it does depend on a specific minor version of LMDB and capn' proto in order to ensure the binary format is the same across languages. Is that something that NixOS allows?

Is the convention for Nix packages to use dynamic linking instead of static?

Dynamic, as with AFAIK most Linux distributions.

We can parameterize the CMake file to do one or both of 1) letting the OS defaults handle header search/link paths and 2) prefer dynamic builds for libraries https://github.com/protomaps/OSMExpress/blob/master/CMakeLists.txt#L12

That'd be great!

Ideally this isn't specific to NixOS though and works the same way for Debian, for example.

I'm pretty sure all distributions would appreciate the possibility of such parametrization. Specifically Debian AFAIK also prefers dynamic linking and system libraries instead of upstream-vendored ones. Which distributions are at all interested in providing a package for OSM Express I don't know. But the parametrization option might also help unofficial packagers (e.g. Debian/Ubuntu PPAs) to provide and maintain clean packages.

Also, the way the build works is it does depend on a specific minor version of LMDB and capn' proto in order to ensure the binary format is the same across languages.

Ah, that's good to know.

Is that something that NixOS allows?

Yes, NixOS can provide several variants of a software, e.g. several versions, even when they provide binaries of the same name, and other software can depend on specific variants. It's usually avoided to maintain several variants or versions when it can be avoided, but when there's a good reason (such as here), it can be done.

If you comment out most of the include_directories https://github.com/protomaps/OSMExpress/blob/master/CMakeLists.txt#L23
then CMake should look for headers in your system header paths like /usr/local/include, /usr/include, etc I believe. It may be easier to write a new CMakeLists.txt following Nix-specific conventions - maybe using this as a starting point - https://nixos.wiki/wiki/C and then we can figure out how to combine them later.

Any thoughts about using the FetchContent cmake directive for building OSMExpress? From reading the cmake docs, it sounds like this might resolve this issue — depending on configuration variables, cmake would either take system packages or download the needed dependencies over git. However, OSMExpress would have to be built with cmake 3.11 (which was released in 2018) or newer.

I haven't used FetchContent but it's worth a shot. Last I checked the most problematic part was S2 which depends on OpenSSL. Bumping CMake sounds good as well.


Replication not working

I'm not sure if it's just me but the replication between browsers and devices isn't working in the demo.

Works for me. Please make a PR with a test case.


[feature request] When rpi-update invoked from CLI, /var/run/reboot-required is not set?  Can it be?

It would seem like a good idea to set /var/run/reboot-required if a reboot is required, no?  This would mirror the logic apt-get establishes.

Does this file have any effect on a default install of raspbian?
i.e. does it get automatically displayed somewhere?

It's used by various monitoring tools

I under stand why it is set when set, the question is... should it be set when rpi-update runs... IMHO it should be set.  Right now it is not set, so other than a text message on screen warning that the firmware requires a reboot, no notification is set.  This is rather bad form.  Monitoring tools can't tell if firmware is active or not because the standard notification method is not used, as you noted, it is considered a standard for reboot notification.

It's used by various monitoring tools

More specifics would be useful.
rpi-update is designed for raspbian users. What affect does this file have on the standard preinstalled packages? What packages that are optionally installed does it have an effect on?
Now on Ubuntu, if I ssh in I see the contents of /var/run/reboot-required echoed back.
But on raspbian that doesn't occur.

Closely related to #263 ?

Close?  If the /var/run/reboot-required file or /var/run/reboot-required.pkgs files are generated by rpi-update when a reboot if requried, yes.  The issue I pointed out was that rpi-update does not follow the standard method for reboot required notification, and it really should.  There are actually to files that are generated:

/var/run/reboot-required... if the file exists at the given path, a reboot should be done.  Many monitoring solutions leverage the existence of this file, as a notification or warning trigger.  Node-Red, various monitoring tools, etc. leverage this.

/var/run/reboot-required.pkgs... if a file that is created and lists the packages installed, that require a reboot.  So when rpi-update runs, and a reboot is required, not only is /var/run/reboot-required file created, but the /var/run/reboot-required.pkgs file is created, if it does not exist, and "rpi-update" should be in the file.  If the file does exist already, than "rpi-update" should be appended at the end of file.

Clearly the first file is a trigger notification file.  The second file provides detail on why the first exists.  Most Linux distributions, including debian variants rely on these files as noted above.

It looks like this is a 'standard' feature for both Debian and Ubuntu:
https://linux-audit.com/check-required-reboot-on-debian-ubuntu-systems/#:~:text=If the file %2Fvar%2Frun,names%2C but the related packages.&text=In this example we see,used by the Linux kernel
https://www.cyberciti.biz/faq/how-to-find-out-if-my-ubuntudebian-linux-server-needs-a-reboot/
https://serverfault.com/questions/92932/how-does-ubuntu-keep-track-of-the-system-restart-required-flag-in-motd
It would be a nice feature to get implemented if an update has sucessfully taken place IMHO.


Configuration refactor

(TODO: Placeholder)

Codecov Report

Merging #15 into master will decrease coverage by 3.72%.
The diff coverage is 50%.

@@            Coverage Diff             @@
##           master      #15      +/-   ##
==========================================
- Coverage     100%   96.27%   -3.73%
==========================================
  Files           6        6
  Lines         348      376      +28
  Branches       51       60       +9
==========================================
+ Hits          348      362      +14
- Misses          0       13      +13
- Partials        0        1       +1

Impacted Files
Coverage Δ

vcdriver/config.py
65% <50%> (-35%)
:arrow_down:

Continue to review full report at Codecov.

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


Issue #1866 #790 hack for java sapgui

After a lot of troubleshooting I found out the issue is a bug in the embedded browser.
With either a dynamically added form or an existing one, after we do a
form.setAttribute("action", "sapevent:" + action);
post breaks (get would still work, up to 2048 char of payload).
So the proposed solution is:

embed a form with a known ID and dummy action in the page
look it up with a getElementById (fall back to create if not found)
add an extra hidden field with the actual action requested
when the GUI recognizes the dummy action, it extracts it from postdata
passes down a cleaned postdata with the action requested in javascript

PS: just realised I don't handle gets properly, will fix it ASAP, don't bother reviewing before that but please let me know if you think it's too cumbersome for the few java gui users

I did fix the get stuff. Would like someone to test it, perhaps on a mac or other non-linux box (could test myself on windows but didn't yet)

Hmm, seems a bit dangerous and hack, but something like this is probably also needed if Java GUI has to be fixed.
You mention a restriction of 2048 bytes payload, where does this arise? We have pages with textareas for editing code, this data will be more than 2048 bytes.

The current implementation has no size limit AFAIK.
The first hack I tried was to detect java sapgui in JS and force a get (then put the getdata in postdata): worked but had this limitation of 2048 char which is the actual size of getdata.
AFAIK the current solution supports everything and is transparent, but the ABAP code to achieve transparency is an ugly hack
I personally like reusing an existing form more than adding one every time one presses a button (not a big deal anyway, I still do it for gets, as otherwise I would need either a 2nd static form or an even uglier hack for gets).
I think I can get this a bit cleaner (i.e. adding another static form for GETs and refactoring the ABAP code a bit to isolate the hack from the rest of the code).
But wanted to hear from you before: no reason to clean this up if it won't be merged anyway.
Was keen on doing it because I often work on a linux box and this issue was really bothering me.

@christianguenter2 any thoughts on this PR?

Hm, I have mixed feelings about that. On the one hand we should fix things for SAPGui Java on the other hand the hack makes the code more complex. But if it works I would be ok with that.
But it seems that the shortcuts aren't compatible with the hack. E.g. if I press R to refresh.

This should be fixed definitely.

indeed, will look into it

@jfilak what breaks the form is setting its action.
Either we add a different form for every possible action or we work around it

What about this? https://github.com/filak-sap/abapGit/commit/067e1df5f98ef2ad6488416549456db1b2dd7eed

@christianguenter2
I got to the bottom of this.
Current hotkey code uses a hack, sending an action like "repo_refresh?000000000011" as a post action, which ends up with a getdata of<PHONE_NUMBER>11
my hack sends this as a post parameter so it loses the getdata.
The easy way out would be to replace
submitSapeventForm({}, sUiSapEvent, "post");
with
submitSapeventForm({}, sUiSapEvent, "get");
As the parameters are hardcoded to empty, this should be harmless.
The alternative is an even uglier hack in the event handler, messing with getdata too
PS: the whole get query is restricted to ~2000 chars, if we want hotkeys for commit or similar we should review the solution
PS2: hotkeys don't work in webgui

Yes, everything is a hack :)

The easy way out would be to replace
submitSapeventForm({}, sUiSapEvent, "post");
with
submitSapeventForm({}, sUiSapEvent, "get");

I'm ok with that if it works.
PS: Regarding hotkeys I think we can ignore this at the moment.
PS2: Webgui? You mean SAPGui Java?

Yes sorry, sapgui Java.
Another issue I guess, unless I find a trivial fix

@christianguenter2 get didn't work, I sorted it on both sides:

in javascript, as this hack was required to handle parameters in post calls, I use the old method of creating a form then I have none
in abap. I added code to set getdata based on the query attached to the action

I tested both, but until we add parameters in a hotkey call only the js fix will be in use

Please, have a look at the commit I added in my last comment. It fixes the java gui problem while it does not break other stuff.

edit: ZCL_ABAPGIT_GUI_PAGE_REPO_SETT already uses a static form anyway.
The dump was unrelated to my fix, and happens in the current code too

Ok


Cannot get Selector to find anything

I only have one LIFX light so far, so if I leave the Selector blank everything is working exactly as expected, but if I try to specify a filter for the Selector, I get nothing.
I've tried 'Group' (e.g. Group: Bedroom), 'Label' (e.g. Label: Bedroom Lamp), and 'ID' (ID:xxxxxxxxxxxxx) and nothing works. I may be getting the syntax wrong but I've tried just about every combination I can think of.
syntax I've tried (using the Label example):
Label:Bedroom Lamp
Label:"Bedroom Lamp"
"Label":"Bedroom Lamp"
{"Label":"Bedroom Lamp"}
Suggestions?

Sorry for my delayed response.  If you are using the node's configuration panel, you should specify the selector without quotation marks.

Alternatively if you are injecting via a message, you specify the selector as follows:
{     "selector": "label:Hall Near Door" }

Thank you very much. I will try this tonight.
John

On Oct 17, 2018, at 2:17 AM, alisdairjsmyth<EMAIL_ADDRESS>wrote:
Sorry for my delayed response. If you are using the node's configuration panel, you should specify the selector without quotation marks.
https://user-images.githubusercontent.com/11627564/47065777-e4e04900-d22f-11e8-909d-97bd7f607ea7.PNG
Alternatively if you are injecting via a message, you specify the selector as follows:
{ "selector": "label:Hall Near Door" }
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub https://github.com/alisdairjsmyth/node-red-contrib-lifx-api/issues/10#issuecomment-430503218, or mute the thread https://github.com/notifications/unsubscribe-auth/ANl-LzM0UYNTkqjSjnnElYjjD8MUe_Smks5ulsuKgaJpZM4XaXT-.

Works like a charm, thank you. [one comment if you intend to update your docs….remind people that this is case sensitive}
One more question: When using the set-state node I can set color fine with this:
but when I try to add saturation like this (see below) it errors with “color does not have a valid value”
I tried putting a comma or a semicolon between the two attribute settings but got same error each time. How do I get saturation values to work? (note: your documentation points to the LIFX URL which suggests that saturation should work as shown above). What about setting using RGB — how would I provide the parameters in that case?
If you’d like I will do a pull to update all your docs when I have this working properly.
John

On Oct 17, 2018, at 2:17 AM, alisdairjsmyth<EMAIL_ADDRESS>wrote:
Sorry for my delayed response. If you are using the node's configuration panel, you should specify the selector without quotation marks.
https://user-images.githubusercontent.com/11627564/47065777-e4e04900-d22f-11e8-909d-97bd7f607ea7.PNG
Alternatively if you are injecting via a message, you specify the selector as follows:
{ "selector": "label:Hall Near Door" }
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub https://github.com/alisdairjsmyth/node-red-contrib-lifx-api/issues/10#issuecomment-430503218, or mute the thread https://github.com/notifications/unsubscribe-auth/ANl-LzM0UYNTkqjSjnnElYjjD8MUe_Smks5ulsuKgaJpZM4XaXT-.

Color is expressed in terms of hue, saturation, kelvin, and brightness components in a single string.  For example to set the global named Hall Near Door to Deep green at 50% brightness you would use the message payload:
{ "selector": "label:Hall Near Door", "color": "hue:120 saturation:1.0 brightness:0.5" }
or alternatively specify the value hue:120 saturation:1.0 brightness:0.5 in the configuration panel.
The following is an example of using RGB:
{ "selector": "label:Hall Near Door", "color": "rgb:255,255,0" }
I was planning to update the documentation, but I am open to a pull request if you want to contribute.

Thanks again for your prompt help. I haven’t yet tried passing the JSON message (will try later) but in the selector panel this doesn’t work. Hue alone works, but adding anything else to the string in the selector panel generates a “color does not have a valid value” error. Also, please note that you have a separate brightness field in the panel so it doesn’t seem logical to include brightness in the string.
I’ve tried:
hue:240    Works
hue:240 saturation 0.8     doesn’t work
hue:240 saturation 0.8 brightness 0.75   doesn’t work
hue:240 saturation 0.8 kelvin:2500    doesn’t work
Thanks for your continued help.
John

On Oct 19, 2018, at 12:16 AM, alisdairjsmyth<EMAIL_ADDRESS>wrote:
Color is expressed in terms of hue, saturation, kelvin, and brightness components in a single string. For example to set the global named Hall Near Door to Deep green at 50% brightness you would use the message payload:
{ "selector": "label:Hall Near Door", "color": "hue:120 saturation:1.0 brightness:0.5" }
or alternatively specify the value hue:120 saturation:1.0 brightness:0.5 in the configuration panel.
The following is an example of using RGB:
{ "selector": "label:Hall Near Door", "color": "rgb:255,255,0" }
I was planning to update the documentation, but I am open to a pull request if you want to contribute.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub https://github.com/alisdairjsmyth/node-red-contrib-lifx-api/issues/10#issuecomment-431239812, or mute the thread https://github.com/notifications/unsubscribe-auth/ANl-LyIgLpHDRuuuEi_cgUhbY8V917Fvks5umVIugaJpZM4XaXT-.

whoops, I forgot to show the colons in my example below — I do have them correctly written in the panel though, e.g.

hue:240 saturation: 0.8

On Oct 19, 2018, at 6:41 AM, Mesberg John<EMAIL_ADDRESS>wrote:
Thanks again for your prompt help. I haven’t yet tried passing the JSON message (will try later) but in the selector panel this doesn’t work. Hue alone works, but adding anything else to the string in the selector panel generates a “color does not have a valid value” error. Also, please note that you have a separate brightness field in the panel so it doesn’t seem logical to include brightness in the string.
I’ve tried:
hue:240    Works
hue:240 saturation 0.8     doesn’t work
hue:240 saturation 0.8 brightness 0.75   doesn’t work
hue:240 saturation 0.8 kelvin:2500    doesn’t work
Thanks for your continued help.
John

On Oct 19, 2018, at 12:16 AM, alisdairjsmyth<EMAIL_ADDRESS><EMAIL_ADDRESS>wrote:
Color is expressed in terms of hue, saturation, kelvin, and brightness components in a single string. For example to set the global named Hall Near Door to Deep green at 50% brightness you would use the message payload:
{ "selector": "label:Hall Near Door", "color": "hue:120 saturation:1.0 brightness:0.5" }
or alternatively specify the value hue:120 saturation:1.0 brightness:0.5 in the configuration panel.
The following is an example of using RGB:
{ "selector": "label:Hall Near Door", "color": "rgb:255,255,0" }
I was planning to update the documentation, but I am open to a pull request if you want to contribute.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub https://github.com/alisdairjsmyth/node-red-contrib-lifx-api/issues/10#issuecomment-431239812, or mute the thread https://github.com/notifications/unsubscribe-auth/ANl-LyIgLpHDRuuuEi_cgUhbY8V917Fvks5umVIugaJpZM4XaXT-.

I am able to submit the following through the configuration panel of the set state node: hue:240 saturation:0.8; hue:240 saturation:0.8 brightness:0.75; and hue:240 saturation:0.8 kelvin:2500.  Each new state is subsequently visible via the list lights node.
Below is an extract from stdout showing the value of the payload being submitted to the underlying LIFX API.
21 Oct 21:39:31 - [info] [lifx-set-state:Test] {"color":"hue:240 saturation:0.8","fast":false}
21 Oct 21:41:33 - [info] [lifx-set-state:Test] {"color":"hue:240 saturation:0.8 brightness:0.75","fast":false}
21 Oct 21:42:51 - [info] [lifx-set-state:Test] {"color":"hue:240 saturation:0.8 kelvin:2500","fast":false}


Fix test warnings

Mockito is updated to a Version compatible with Java 9
This fixes Issue #12

This is released in v0.2.1, which should hit JCentre shortly. Thanks for the contribution!


Will the PSNR or SSIM measurements involved in the future?

Hello!
Will the PSNR or SSIM measurements involve in your software in the future?

FYI this is a change I added in my branch / fork for some tests I am doing. It incorporates PHASH PHQM metric comparisons realtime across video frames (which mostly works, sometimes slows down / lags)...
https://github.com/svt/vivict/compare/master...bitbytebit-cr:master

Sorry for the late reply.
@Cuberlain it would be nice, but I don't think I will find the time to add it. PRs are welcome of course :) .
@bitbytebit-cr Looks interesting! I will have a look and hopefully merge it into master.


Update README

Resolved merge conflict and fixed a small alignment issue!
Looks great! 2.0 here we come


Can i used this in swift?

I want to use this library in swift, How can i use this?

Sorry, it doesn't support Swift for now. However you can convert it Swift. :]


[DNM]Test log collection

Depends-On: https://review.rdoproject.org/r/c/rdo-jobs/+/50865

recheck PS2

recheck PS4

recheck PS5

From the cell1 config secret:  https://logserver.rdoproject.org/92/192/d2163ba76e0714b0b135e8f8bb79fb6b279a16d6/github-check/data-plane-adoption-github-rdo-centos-9-extracted-crc/b2b3414/controller/ci-framework-data/logs/quay-io-openstack-k8s-operators-openstack-must-gather-sha256-80a1c05105d15da1856bebe02cc17cb39bc0079292f9d69927a542afd346ec76/namespaces/openstack/secrets/nova/nova-cell1-compute-config.yaml  I can only prove that there is transport_url configured but the password masking code removes that actual url during must-gather:
transport_url=**********

For me the most likely issue that the k8s control plane rabbit is not reachable from the compute node.
The first rabbit error says
socket.gaierror: [Errno -3] Lookup timed out

Which means the DNS lookup timed out getaddrinfo not returned in time.
After a minute it is changed to
OSError: [Errno 113] EHOSTUNREACH

which is basically "no route to host".
So once we get a CI node hold we should troubleshoot the network connectivity between the EDPM node and the k8s control plane (especially rabbit)


Allow desc ordering as a default option in the OrderableListMixin

I found a need to change the default ordering in the OrderableListMixin from asc to desc, but I couldn't find a clean way of doing it. Maybe it missed a very simple solution.
Instead I have created a PR (#198) to set the ordering_default. If it is None, asc is assumed and the Mixin behaves as usual. If ordering_default is set to desc, and no query param given, the order will be reversed.
Tests and docs are updated.

+1

+1

closing very old issues


Unit Test GameRegion

Unit Test everything testable in this class.
Cover all edge cases.

base tests for GameRegion added and merged.


Polish and withCompletionHandler

yeah, this is a breaking PR, there are many things being changed around

@kaishh anything left to do before final approval and merge?

I don't seem to be able to merge, can you please do it @kaishh


Appears to cause access violation error in Cyberpunk 2077

Disclaimer: I have not done sufficient testing to properly ascertain whether or not it is caused by DLSSTweaks
I have noticed Cyberpunk 2077 crashing with an access violation after using DLSSTweaks together with the registry setting and DLSS (FG, RR, SS) 3.7.0. After removing DLSSTweaks, reverting the registry entry and restoring the old(er) DLSS files it does not seem to crash anymore.
I will keep this thread updated if I can confirm that it has indeed been caused by DLSSTweaks or not. For now, this is just something to keep on one's radar.
Please also note that the crash does not happen immediately, much rather it happens after 1.5h or so. Thus, it is hard to reproduce it.

https://www.nexusmods.com/cyberpunk2077/mods/7415?tab=files
dxgi.dll

Thanks for the input! Does this mean the access violation is a known issue or is this just a suggestion from your side?

It's just that i know DLSSTweaks sometimes NEEDS his DLL to be renamed instead "only" using the regitry, like RDR2.., seing the nexus premade had this DLL name, i inform you.

@Klemci Thanks, it is definitely appreciated. (I will test this and keep the issue updated)


deleted

Issue #, if available:

Description of changes:

Checklist

[x] :wave: I have added unit tests for all code changes.
[x] :wave: I have run the unit tests, and all unit tests have passed.
[ ] :warning: This pull request might incur a breaking change.

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

I created a wrong pr. Would be great if you can delete it. Sorry for that mistake...


import assertions are not available to plugins

Describe the bug
import { foo } from './foobar' assert { type: 'foobar' };

will drop the assertion, plugins processing the import will not receive type: foobar as an assertion.
Using Rollup with the same configuration will successfully pass the assertions to plugins.
this will work just fine:
await import('./foobar', { assert:  { type: 'foobar' }});

I think this line is responsible?
Reproduction
https://github.com/soultice/vite-import-assertion-repro
Steps to reproduce
run npm install
compare npm run builld with npm run build:rollup
System Info
System:
    OS: Linux 5.4 Ubuntu 20.04.5 LTS (Focal Fossa)
    CPU: (12) x64 Intel(R) Core(TM) i7-8850H CPU @ 2.60GHz
    Memory: 45.99 GB / 62.48 GB
    Container: Yes
    Shell: 5.8 - /usr/bin/zsh
  Binaries:
    Node: 16.15.0 - ~/.volta/tools/image/node/16.15.0/bin/node
    Yarn: 3.3.0 - ~/.volta/tools/image/yarn/3.3.0/bin/yarn
    npm: 8.5.5 - ~/.volta/tools/image/node/16.15.0/bin/npm
  Browsers:
    Chrome: 110.0.5481.100
    Firefox: 109.0.1
  npmPackages:
    vite: ^4.1.0 => 4.1.3

Used Package Manager
npm
Logs
No response
Validations

[X] Follow our Code of Conduct
[X] Read the Contributing Guidelines.
[X] Read the docs.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] Make sure this is a Vite issue and not a framework-specific issue. For example, if it's a Vue SFC related bug, it should likely be reported to vuejs/core instead.
[X] Check that this is a concrete bug. For Q&A open a GitHub Discussion or join our Discord Chat Server.
[X] The provided reproduction is a minimal reproducible example of the bug.

Yeah. Without that line, 3rd-party plugin will receive the right assertion.
https://github.com/vitejs/vite/blob/3551f754a6b141cd843dc061f6b19ea80f5c6497/packages/vite/src/node/plugins/importAnalysisBuild.ts#L283-L286
Why would vite strip import assertions? I didn't find the assertion process logic in source code. Did I miss something? @bluwy @sapphi-red

It's stripped off because Vite would process it the same way otherwise if unstripped, so stripping off gives the benefit wider of browser compatibility, and also because Rollup 2 (Vite 3) used to unable to process them.
Also important to note that there's two of that code in the codebase, the other at
https://github.com/vitejs/vite/blob/91fac1ca1c31dfdd7e0b33186ea23b5e79a1b4cf/packages/vite/src/node/plugins/importAnalysis.ts#L440-L443
which handles the dev part. If we want to support this, we need both to work equally.
In build, it should simply be removing that line in importAnalysisBuild.ts, but dev is trickier as we can't remove it, otherwise the assertion is exposed to the browser, causing a breaking change. To really support in dev, we need some trick to "save" the assertion metadata, and "load" in back when the browser happens to request the module later.
It's tricky but doable though. But also given import assertions dropping back to stage 2 recently, maybe we should see how it'll play out first.

FWIW import assertions has been renamed to import attributes with a different syntax: https://tc39.es/proposal-import-attributes/. So I'm not sure if it's worth the effort continuing this forward, we'd have to wait for the ecosystem to catch up again.

Closing as import assertions is being phased out and it isn't worth continuing this.