Single impl interfaces?

In GWT2 with JavaScriptObject it was possible to have exactly one subclass implement an interface - the compiler would detect this and where necessary devirtualize the calls and dispatch correctly to either plain java implementations or the single native implementation.
With JSO, there were two ways to implement these:

provide a simple native java method which would use JSNI to invoke the true method
provide an overlay method which would then call the appropriate native methods/properties

From the original design doc option 1 is still apparently possible in jsinterop-annotations assuming the interface itself can be modified to be marked as native ("A native @JsType can only extend/implement native @JsTypes."), but option 2 is not possible at all ("A native @JsType class can only have ... Final non-native JsOverlay methods that do not override any other methods").
In the context of GWT2 these limitations may not necessarily make sense, but with j2cl they clearly seem to, since the interface and implementation might be compiled separately, so generating the dispatch mechanism when the interface is transpiled would need to depend on knowing about the implementation.
Are there any suggested patterns to solve these sorts of issues? Ideas I've entertained and their downsides:

Rewrite the interface to be marked as @JsType(isNative=true) and to only have declared members which 100% match the eventual JS implementation - this is not always possible when the interface comes from some upstream source (org.w3c.dom, org.json are some such examples where overlays can bridge the gap and let code share an interface).
"Monkeypatching" the underlying JS object solves the above by avoiding the need for overlays, but clearly adds its own level of ick
Provide a java wrapper per native instance - clearly this adds a bit of runtime overhead, depending on how the interfaces are declared

Unlike earlier interface with single JSO case, you can have interfaces declare @JsOverlay methods that could do whatever you would normally do in the single JSO implementation. The resulting code should be similar to JSO case.
But if you can give a more concrete example of what you are trying to achieve as the end result, I can try to provide better guidance.

Given the option of rewriting the contents of the interfaces (and setting aside the downsides above), we can put @JsOverlay on the interface methods, but this doesn't appear to work. Sample interface, declared explicitly to be a native interface, with an overlay method
@JsType(isNative = true)
public interface SharedInterface {

    @JsOverlay
    String doSomeWork(String param);
}

In both GWT2 and J2CL this fails with and without the @JsOverlay on the inherited method:
@JsType(isNative = true, namespace = JsPackage.GLOBAL)
public class JsImpl implements SharedInterface {

    @JsMethod
    private native int actualUnderlyingMethod(String param);

    @Override
//    @JsOverlay // toggled on and off during testing, ensuring it has at least some effect
    public final String doSomeWork(String param) {
        return "work #" + actualUnderlyingMethod(param);
    }
}

GWT2 without inherited @JsOverlay:
[INFO]    Errors in com/example/JsImpl.java
[INFO]       [ERROR] Line 16: Method 'String JsImpl.doSomeWork(String)' cannot override a JsOverlay method 'String SharedInterface.doSomeWork(String)'.
[INFO]       [ERROR] Line 16: Native JsType method 'String JsImpl.doSomeWork(String)' should be native or abstract.
[INFO]    Errors in com/example/SharedInterface.java
[INFO]       [ERROR] Line 10: JsOverlay method 'String SharedInterface.doSomeWork(String)' cannot be non-final nor native.

GWT2 with inherited @JsOverlay (just in case it needs the hint to be explicit) has one less error, suggesting this could be on the right track:
[INFO]    Errors in com/example/JsImpl.java
[INFO]       [ERROR] Line 16: Method 'String JsImpl.doSomeWork(String)' cannot override a JsOverlay method 'String SharedInterface.doSomeWork(String)'.
[INFO]    Errors in com/example/SharedInterface.java
[INFO]       [ERROR] Line 10: JsOverlay method 'String SharedInterface.doSomeWork(String)' cannot be non-final nor native.

J2CL has the same errors with and without inherited @JsOverlay:
Error:JsImpl.java:16: Native JsType method 'String JsImpl.doSomeWork(String param)' should be native, abstract or JsOverlay.
Error:JsImpl.java:16: Method 'String JsImpl.doSomeWork(String param)' cannot override a JsOverlay method 'String SharedInterface.doSomeWork(String)'.
Error:SharedInterface.java:10: JsOverlay method 'String SharedInterface.doSomeWork(String)' cannot be non-final.

Omitting @JsType(isNative=true) on the interface also results in an error (Native JsType ''JsImpl'' can only implement native JsType interfaces.).
The goal though would be to not have to amend the original interfaces, but if that is supported (and I'm just doing it wrong), it would probably suffice.

You can only have default/private methods to provide method implementation on interfaces; and that's what you need to mark  with @JsOVerlay.
interface A {
   @JsOverlay
   default void foo() {
      // single jso impl logic goes here
   }
}

This is effectively similar to single jso impl in terms of where you could have one implementation in GWT and multiple implementations on server size.

@niloc132, are you confusing SingleImpl with DualImpl? In GWT you are able to have Java interfaces implemented by a JSO and Java class, those are called DualImp interfaces. In such case the GWT compiler generates a trampoline to handle the dispatch to JavaScript. This is not a functionality that is part of jsinterop. SingleImpl scenario, on the other hand, is completely supported, that means that the interface is only implemented by JavaScript objects hence there will not exist any override of that method.@JsOverlay methods cannot have overrides.
You could achieve something similar to dual impl interfaces by using @JsOverlay to write a trampoline code by hand with a little bit of extra code for wiring. But in general you can have a better solution using a native "*", "?" interface. e.g.
Say you have a JavaScript class C that has method m() and you want to have a common interface that is implemented by Java and JavaScript classes without needing to modify C to implement an interface.
@JsType(isNative = true, namespace = GLOBAL, name = "*")
interface DualImplInterface {
  void m();
}

class JavaClass implements DualImplInterface {
  public void m() { ... }
}

HTH.

@rluble you may be right that I'm thinking of something else. I do definitely want an overlay method, defined by the interface, and implemented in plain Java for the actual Java implementation (typically only on the server), and also separately implemented with one or more overlay methods for the JS impl of the method, since the underlying native type doesn't always make sense - in your example, DualImplInterface.m would need to have the behavior defined on it using a default method or be "overridden" in the native JsType with an overlay - in your example, m() would only be the underlying JS method that is used so that the overlay/default method can get its job done, and as @gkdn suggested the @JsOverlay method would invoke it? From my quick testing, it isn't possible to get the last step then of permitting JavaClass to "correctly" override foo() to do the real work?
Updating the example from my last post:
@JsType(isNative = true, namespace = JsPackage.GLOBAL)
public interface SharedInterface {
    @JsMethod
    int actualUnderlyingMethodThatExistsOnlyInJs(String param);

    @JsOverlay
    default String doSomeWork(String param) {
        //overlay impl so that JS can work, would be implemented differently in Java
        return "work #" + actualUnderlyingMethodThatExistsOnlyInJs(param);
    }
}

@JsType(isNative = true, namespace = JsPackage.GLOBAL)
public class JsImpl implements SharedInterface {

    @JsMethod
    public native int actualUnderlyingMethodThatExistsOnlyInJs(String param);
}

Up until now things work, until you have to provide a non-JS implementation of the interface method:
public class JavaImpl implements SharedInterface {
    @Override
    public int actualUnderlyingMethodThatExistsOnlyInJs(String param) {
        throw new UnsupportedOperationException("this doesn't make sense outside of the JS type");
    }

    @Override
    public String doSomeWork(String param) {
        return "foo";// actual java impl of some kind
    }
}

My question is how do you provide both a Java and JS implementation, where the underlying APIs are different. com.google.web.bindery.autobean.shared.Splittable is an example where every method is implemented with overlays (in JsoSplittable), and implemented in plain java differently on both the client and the server (NullSplittable is usable only on the client, JsonSplittable on the JVM).
Assuming that both APIs are identical (org.w3c.dom.Node &co are 99% of the way there), "simply" redefining every interface with annotations could suffice, as long as it is permissible to have two copies of each source file (not ideal, but hopefully done only once?). My concern is when Java wants to redefine the method, either in different subtypes, or just to have an alternative implementation to the provided overlay method.
I'm sorry if this isn't very clear - it didn't seem to be covered in any of the docs I had found so far about JsInterop, and both answers seem tending in different directions. It does appear that I made a mistake about naming here (single vs dual), though the javadoc on com.google.gwt.core.client.SingleJsoImpl seems ambiguous - I agree there is no way for more than one JSO type to implement the interface, but that still leaves room for non-JSOs to implement it as well in the definition - and it appears at least that it is permissible for a SingleJsoImpl to also be a dual, since TypeOracle.computeDualJsoImplData() and JTypeOracle.computeDualJSO() both promote some single impls to also being dual impls.
I've been trying to work out the trampoline idea where overlays are needed - the closest I've gotten is something like three interfaces - one "actual" interface  with default methods, and each default method tests if in JS or Java, and then casts this to one of the other two interfaces and invokes a method there, so that the overlay methods for JS don't end up in Java code and Java's methods don't require that JS changes how it works. This does end up requiring effectively an extra layer of abstraction above the real implementations.

I  am still not sure if I fully understand your goal but in attempt to do my best, If you are simply looking for a way to do dual jso; the solution is still the same; you need to hand write the trampoline that was generated by GWT:
interface Foo {
   default int bar() {
      return (this instanceof ConcreteJavaType) <call something on ConcreteJavaType>
        : <call the thing that would be in the JSO implementation or implement it here>
   }
}

If this still doesn't answer your question; could you give a simple concrete example with your requirements as I asked earlier and how you solved in GWT2?
(The interface that you would like to implement, what is suppose to be implemented in java, what runs on JVM, what runs in JavaScript etc.)

One last point you have to think that @JsOverlay method are a static method that has just a convenient way to call is if it was an instance method. You CANNOT override a @JsOverlay method.  Depending on what you want to do, and the constraints you have (e.g. the JavaScript side is a library that you don't control) there are many ways to do this.
If it is just to have a common API for Java and JavaScript then what @goktug suggested is a way to go (just note that the interface there should be native @JsType and the method bar() should be @JsOverlay).

I understand what an overlay method is (both the gwt2 and jsinterop variety) - and that you sorta-kinda-if-you-squint can override them, but only insofar as you first cast to the type that owns the method you are calling, its no longer dynamic dispatch, but just a static function that looks like an instance method, at least from the plain Java.
My hope was that there was some clever way to end up with the type check "is this object a non-java object? okay, delegate to a specific static method, otherwise call the java method" - sort of the opposite of the instanceof in Foo.bar(), allowing for more than one ConcreteJavaType in the hierarchy:
interface Foo {
  default int bar() {
    return Cast.isJavaScriptObject(this) ? <call overlay for JS impl> : <call "this.bar()" except without this check>
  }
}

To my knowledge this requires whole-world knowledge ("confirm there is exactly one implementation of the interface Foo so that Foo can be compiled with correct dispatch for it"), or that either Foo or Foo's JS impl is annotated in a clear way to reference the other. Likewise anything calling Foo.bar() needs to know to dispatch to this helper method instead of the "real" bar() method declared on the instance, so it probably would need to be in the bytecode for Foo itself.
Splittable from AutoBeans is a good example in GWT2 - any plain JS object can be traversed with splittable. At the same time, other java implementations can exist of the Splittable interface (the NullSplittable singleton I mentioned is one, GXT also has a XmlSplittable that makes the same API work on the browser's DOM types).
Number makes another example - Double has its own doubleValue() which of course just returns this - but J2CL already knows that Number and Double are connected in this way. This is of course a special case, but ends up with the same pattern in compiled code at least.

I understand what an overlay method is (both the gwt2 and jsinterop variety) - and that you sorta-kinda-if-you-squint can override them.

Not sure what you mean that you can override them in J2CL. You can not; if there are cases where you can then that is a bug in the restriction checker.
You could have server code that overrides them though, as long as it is not compiled with J2CL. That would definitely work on server only code, but not on shared code.

My hope was that there was some clever way to end up with the type check "is this object a non-java object?

You could achieve that the following way.
@JsType(isNative = true,...)
interface Foo {
  interface JavaFoo extends Foo {
       void barImpl();
   }
  @JsOverlay
  default void bar() {
      if (this instanceof JavaFoo) {
         ((JavaFoo) this).barImpl();
      } else {
         // code for the javascript case.
      }
   }
}

You could also do more hacky things like checking for the presence of a particular property in your JavaScript object to decide how to resolve the dispatch. But it is intended that scenarios like this be resolved with user code.
There is no clever way to universally distinguish them because J2CL blurs the lines between Java and JavaScript. E.g. there is no way to distinguish between a JavaScript array and Object[], Java class can extend JavaScript classes so they don't extend j.l.Object, etc.

To my knowledge this requires whole-world knowledge ("confirm there is exactly one implementation of the interface Foo so that Foo can be compiled with correct dispatch for it"), or that either Foo or Foo's JS impl is annotated in a clear way to reference the other.

jsinterop design is not only motivated by modular compilation but also by having a simple model that is easy to communicate. Even if there were an easy way to support this we would need a compelling reason to extend the spec. And I don't think there is a clean easy way to support it without extending the spec.
J2CL aims to give a consistent view and seamless (Closure) JavaScript interoperation. Many GWT idioms need to be replaced for more JavaScript like idioms. Instead of a dual impl JSO, it is better to have a JavaScript interface implemented by the native object with a native JsType interface to expose it to Java code.

Splittable from AutoBeans is a good example in GWT2 - any plain JS object can be traversed with splittable.

Splittable is a dual impl interface. A scenario that is not directly supported in J2CL for the reasons above, but you can use one of the many solutions mentioned here in the thread.

Number makes another example - Double has its own doubleValue() which of course just returns this - but J2CL already knows that Number and Double are connected in this way. This is of course a special case, but ends up with the same pattern in compiled code at least.

Yes. Number is special because it is implemented by Double which we represent directly as number. I agree that the pattern is similar in the sense that there is a dispatch trampoline. But in this case there is a way to distinguish number from other Java classes and this is done just as an optimization for the runtime.

The main limitation here is inability to use the same method names in pure Java classes, so you need to come up with 2 contracts; Foo and FooJava interfaces where overlay calls to the Java specific one. I don't see any other natural way to solve this. GWT2 solution is quite magical and it is one of the pieces we were sure that we didn't want to carry over.
Having 2 contracts is not ideal but something you can design an APT for to make it less error prone.
If you need something like isJavaScriptObject, it could be more or less implemented as .constructor == Object.constructor but since you need a second interface for Java you can just check for instance of that.

Well, we just run to each other with Roberto; but it looks like you got nearly same answer in two different wordings :)


polygon not found error is a false error

This failed
renderbook #37: Commit 9aba759 pushed by dpc10ster
But next push with no change in offending file passed
19b-rsm-operating-characteristics.Rmd, line 101-11
passed

But next push with no change in offending file passed
19b-rsm-operating-characteristics.Rmd, line 101-11
passed
renderbook #38: Commit 7805cda pushed by dpc10ster


Exclude none typescripts from execution as user-flows

Files in the collect user-flow path/directory should only be executed if:

they have a ts or js extension
they export a module with the right required keys and rough types

for now lets only validate the shallow of the exported object

closed by #69


TV / Tiles non responsive

Describe Your Problem:
Samsung TV UN65JS8500FXZA.   According to Samsung, this is not Titan OS as when bring up the app screen, it shows the legacy Osray OS.  I was able to successfully add TV to HomeKit.  I am samsungtvht as a child bridge.  I did NOT add the bridge to HomeKit, only added the TV accessory.   But when I go to try turn TV on or off, the device is unresponsive.
Logs:

[30/06/2024, 21:51:57] [Samsung TV] Initializing samsungtvht platform...
[30/06/2024, 21:51:57] [Samsung TV] Initializing child bridge xxxxxxxxxx
[30/06/2024, 21:51:57] Loading 3 accessories...
[30/06/2024, 21:51:59] [Samsung TV] Launched child bridge with PID xxxxx
[30/06/2024, 21:52:00] [Samsung TV] Loaded homebridge-samsungtvht v1.0.14 child bridge successfully
[30/06/2024, 21:52:00] [Samsung TV] homebridge-samsungtvht v1.0.14, node v20.15.0, homebridge v1.8.3
[30/06/2024, 21:52:00] [Samsung TV] Loading device 1: Samsung TV 192.168.1.xx
[30/06/2024, 21:52:00] Homebridge v1.8.3 (HAP v0.12.2) (Samsung TV) is running on port xxxxx.
[30/06/2024, 21:52:00] Samsung TV E87C is running on port xxxxx.
[30/06/2024, 21:52:00] Please add [Samsung TV E87C] manually in Home app. Setup Code: xxx-xx-xxx
[30/06/2024, 21:52:00] Registering platform 'homebridge-denon-tv.DenonTv'
[30/06/2024, 21:52:03] [Samsung TV] Samsung TV: Power changed from 0 OFF to 1 ON
[30/06/2024, 21:52:03] [Samsung TV] Samsung TV: Media state changed from 0 PLAY to 2 STOP
[30/06/2024, 21:52:56] [Samsung TV] Samsung TV: sendKey: KEY_POWEROFF error Samsung Remote Client: Device is off or unreachable
[30/06/2024, 21:52:59] [Samsung TV] Samsung TV: setPower: powerOnCommand: echo 'on 0' | cec-client -s -d 1
[30/06/2024, 21:52:59] [Samsung TV] Samsung TV: setPower: powerOnCommand: /bin/sh: 1: cec-client: not found

Plugin Config:

{
    "name": "Samsung TV",
    "pingCommand": "ping -c 1 -w 20",
    "pingInterval": 3,
    "pingResponseOff": "received, 100% packet",
    "doublePressTime": 250,
    "triplePressTime": 450,
    "doublePressDelayTime": 300,
    "devices": [
        {
            "name": "Samsung TV",
            "ipAddress": "192.168.x.xx",
            "type": "television",
            "manufacturer": "Samsung",
            "powerOnCommand": "echo 'on 0' | cec-client -s -d 1",
            "powerOffButton": "KEY_POWEROFF",
            "viewTvSettingsCommand": "KEY_MENU",
            "inputs": [
                {
                    "inputSourceType": "3",
                    "inputDeviceType": "1"
                }
            ],
            "arrowUpButton": "KEY_UP",
            "arrowUpButtonDoubleTap": "KEY_CHUP",
            "arrowUpButtonTripleTap": "KEY_UP",
            "arrowDownButton": "KEY_DOWN",
            "arrowDownButtonDoubleTap": "KEY_CHDOWN",
            "arrowDownButtonTripleTap": "KEY_DOWN",
            "arrowLeftButton": "KEY_LEFT",
            "arrowLeftButtonDoubleTap": "KEY_REWIND",
            "arrowLeftButtonTripleTap": "KEY_LEFT",
            "arrowRightButton": "KEY_RIGHT",
            "arrowRightButtonDoubleTap": "KEY_FF",
            "arrowRightButtonTripleTap": "KEY_RIGHT",
            "selectButton": "KEY_ENTER",
            "selectButtonDoubleTap": "KEY_SOURCE",
            "selectButtonTripleTap": "KEY_HDMI",
            "playPauseButton": "KEY_PLAY",
            "playPauseButtonDoubleTap": "KEY_PAUSE",
            "playPauseButtonTripleTap": "KEY_STOP",
            "backButton": "KEY_RETURN",
            "backButtonDoubleTap": "KEY_EXIT",
            "backButtonTripleTap": "KEY_RETURN",
            "infoButton": "KEY_MENU",
            "infoButtonDoubleTap": "KEY_INFO",
            "infoButtonTripleTap": "KEY_TOOLS",
            "volupButton": "KEY_VOLUP",
            "voldownButton": "KEY_VOLDOWN",
            "voldownButtonTriplePress": "KEY_MUTE",
            "muteButton": "KEY_MUTE"
        }
    ],
    "platform": "samsungtvht",
    "_bridge": {
        "username": "xx:xx:xx:xx:xx:xx",
        "port": xxxxx
    }
}

Screenshots:

Environment:

Plugin Version: 1.0.14
Homebridge Version: 1.8.3
Node.js Version: 20.15.0
NPM Version:
Operating System: Raspbian

Hi @goshawk2929
This plugin cannot turn the TV on via LAN, as the TV shuts down the ethernet LAN port when it is turned off. It can only turn on via HDMI CEC, which requires your homebridge device to be connected to the TV via HDMI.
As for turning it off, make sure the IP address is correct, and that you have enabled the TV to accept remote control over the LAN. See your TV's menu for this.
If the IP address is correct, the TV accessory should detect power on and off state as it pings the TV and waits for a ping response.

Can you control the TV via the TV Remote Control in the iPhone? If so, then the IP address is correct and the TV can respond to the remote commands

Closing issue as no response from @goshawk2929


[api-minor] Update the minimum supported Safari version to 15.4

This patch updates the minimum supported browsers as follows:

Safari 15.4, which was released on 2022-03-15; see https://en.wikipedia.org/wiki/Safari_version_history#Safari_15

Nowadays we usually we try, where feasible and possible, to support browsers that are about two years old. The reasons for limiting support to a somewhat more recent Safari version include:

Throughout the history of the PDF.js project, Safari has always been the worst browser to attempt to support. Compared to other browsers there's a disproportionate number of bugs affecting Safari, especially on iOS, and in most cases those are browser-specific issues that we simply cannot address.[1]
Safari has often been a lot slower, compared to other browsers, at implementing new web-platform features. Historically this has sometimes blocked usage of new features, for the benefit of the Firefox PDF Viewer, and it's very often meant having to include and maintain polyfills only for Safari.
The current (minimum) supported Safari version lack enough functionality that polyfills placed in the src/shared/compatibility.js file are unfortunately not sufficient, but it also requires a bunch of special-cases in both the gulpfile and in the web/-code.
Given that the built-in Firefox PDF Viewer is the primary development target for the PDF.js library, and the general development pace these days, we need to limit the maintenance "overhead" caused by other browsers.

[1] In a few cases a work-around might be possible, however it'd negatively affect e.g. performance, readability, and/or maintainability of the code.

/botio test

/botio-linux preview


Add UI to edit item permissions

This PR adds ui elements to the new and edit pages of each item to define which group(s) can see and which one(s) can lend this item.
PR checklist

[x] dev-branch has been merged into local branch to resolve conflicts
[x] tests and linter have passed AFTER local merge
[x] localization is supported (Guide)
[ ] another dev reviewed and approved
[ ] if feature-Branch: Teams PO has approved (show via e.g. screenshots/screencapture/live demo)

@benn02 our implementation supports selecting and deselecting groups for the two permission levels, both during creation and editing. The permissions are persisted and shown the next time when editing the item.
https://user-images.githubusercontent.com/49586507/214089523-c9254a32-d245-4729-8004-685cb285e31d.mp4

The UI works as expected. But I think it isn't very intuitive for a user. If I miss click once, I have to reload the form in order to get the old state back. And it is very unclear what happens if I give a user see-permissions and lend-permissions and then revoke the lend-permissions. I think moving the permissions to an extra page, with a searchable list of all groups where I can configure the permissions with radio buttons, would be superior. But I think this is a decision @benn02 has to take.

The UI works as expected. But I think it isn't very intuitive for a user. If I miss click once, I have to reload the form in order to get the old state back. And it is very unclear what happens if I give a user see-permissions and lend-permissions and then revoke the lend-permissions. I think moving the permissions to an extra page, with a searchable list of all groups where I can configure the permissions with radio buttons, would be superior. But I think this is a decision @benn02 has to take.

As Mentioned in the Issue, I want this to get done. I think the proposed solution by @Sohn123 is better, but it is up to you whether you want to rework this since I am also fine with the current version

The UI works as expected. But I think it isn't very intuitive for a user. If I miss click once, I have to reload the form in order to get the old state back. And it is very unclear what happens if I give a user see-permissions and lend-permissions and then revoke the lend-permissions. I think moving the permissions to an extra page, with a searchable list of all groups where I can configure the permissions with radio buttons, would be superior. But I think this is a decision @benn02 has to take.

As Mentioned in the Issue, I want this to get done. I think the proposed solution by @Sohn123 is better, but it is up to you whether you want to rework this since I am also fine with the current version

We can also create a follow up issue, if you really want to get this done quickly. Lukas and I already spend our weekly time on this, so this probably won't be rewritten till next week.

Ok if @benn02 says this is fine, then :shipit:


Secondary Entrypoints

Type of Issue
[x] Bug Report
[ ] Feature Request

Description
Using secondary entrypoints.

Customizing entry file for secondary causes build error.
Empty package.json file causes build error.

How To Reproduce

https://github.com/dherges/clarity/tree/ng-packagr/bug-one
cannot repro any more... :question:

Expected Behaviour
Version Information
ng-packagr: v1.5.0-rc.0
node: v8.4.0
@angular: v4.4.5

@DavidParks8  FYI


[ENG-907] feat: Add Mailchimp connector

Checklist

[x] Ran Linter
[x] Catalog tests passing
[x] Created PR from non-main branch

Catalog variables
workspace which represents the servers hosting the Mailchimp. Used in the api base url.
Notes
Testing
GET

POST

PATCH

DELETE

Pagination
Requesting a paginated results of campaigns. We request a list of campaigns and by default we get 10 campaigns.

From the result above we can see there are 32 campaigns, We use query parameters count and offset to retrieve the remaining campaigns.

I have rebased this and worked on the workspace naming changes. Added the TokenMetadataFields in the other providers as well @RajatPawar


Test issues

node 0.12 travis tests fail around duo-css-compat's anonymous generator syntax barf. That syntax looks like it's causing the issue, but I am not familiar enough with co to give a proper diagnosis.
iojs fails because node-sass is missing its libsass bindings. Perhaps node-sass is not compatible with iojs?

The first point is a duplicate of https://github.com/duojs/duo/issues/433. And nope, node-sass doesn't work with iojs >1.2.0 yet (https://github.com/sass/node-sass/issues/740).


cpu config for code engine doesn't take effect

on lithops release 2.2.14
lithops_config file
code_engine:
    kubectl_config: xxx
    docker_user: xxx
    cpu: 200m

code
import lithops

iterdata = ['Gil', 'Dana', 'John', 'Scott']

def add_value(name):
    return 'Hello ' + name

if __name__ == '__main__':
    lt = lithops.FunctionExecutor(mode="serverless",
            backend='code_engine',
            log_level='DEBUG')
    lt.map(add_value,  iterdata)
    print (lt.get_result())

Check the jobDefinition created by the code automatically
 resources:
          requests:
            cpu: "1"
            memory: 512Mi

I expect the resource.requests.cpu is set to 200m instead of 1 (default value)

@shiyan0109 Some weeks ago, set the cpu size in millicpu units caused problems in code engine. Try using a float value, for example in your case 0.2


Add search/filter in debug pane

I think all panes which have hierarchical trees like the debug pane could have an option/search box to quickly search for an element by name. So by typing a part the name the tree will filter out and display only the matching elements.

Did you already try simply typing while focus is on the Variables pane?

@gjsjohnmurray Thank you for pointing me to this feature. I didn't know about it and it isn't a very intuitive UI feature. I could be more explicit.
Also it doesn't really work in the way I suggest: It is only good for non-hierarchical lists. For example if there are a multiple items in a collapsed hierarchical view in the debug pane, typing the searched item name would neither expand and point to it nor will it hide the unwanted items. So it isn't really very useful at first try.

@Zingam I agree it's a feature that deserves better discoverability. You may want to upvote #70646
Did you notice that if you mouse over the little widget that appeared when you started typing, there are a couple of extra things you can do?

One of them it to toggle to "filter" mode in place of "highlight" mode.

Thanks @gjsjohnmurray
Closing this as a question / duplicate then

@gjsjohnmurray Thank you for letting me know about the widgets.
@isidorn The filtering still doesn't work quite as expected. I'd like that it would expand the hierarchy and show the searched item. Also it is buggy in the current state, please check the last screenshot: I have typed 'flat' and it also includes defaultTargetName in the results. Also on the previous screenshot: there is also an item that shouldn't be there

Why is the ctx displayed in the search results?

@Zingam because it uses the same fuzzy matching as other parts of VSCode do. You may want to upvote #66913


Just a question, not an issue

I am just curious what the roadmap is for flash calculations? Will you be implementing such things as the Tangent Plane Criteria etc and essentially solve for the number of possible phases automatically? Do you need or want help?

Hi Braden,
That's more than any of us! If you can translate your code to Julia, we can refine it over time to get at least a working implementation.
I agree that the flash algorithm is something that's very useful in any thermo modelling software and it's been a gap in our packages we've been meaning to fill for a while...
It's amazing that you had to code it for a course! I'm guessing this was at the DTU?
Best regards,
Pierre


Limit of peaks data that can be passed to load method

In my code, I am generating peaks data on the server. The prerendered peaks data is around ~10000 records. Now, when I try to render these many records with wavesurfer.js load method, it displays only a part of the waveform. Is there any limit to the peaks data that can be passed to load(url, peaks) method?
PS, I see that wavesurfer.js generates peaks around 4600 records for any length file.

you'll have to dig into that particular piece of code of the library?

While looking into previous related issues, I found that there have been some developments in v2.0.0-beta02 as mentioned in #1230 issue and has a related example . which fixes it. But this again fails on the IE11 browser. My main purpose of using peaks data was to support IE11 as it doesn't support WebAudio API. Can anybody help with the permanent fix for this?

Can you try with the latest version (2.0.4 or newer) and paste your code here?

Is there any update on this issue? I have an an hour of peaks data which I have to render. Would like to know how to go about it.

@suresh2110 have you tried the renderer: "MultiCanvas" option?

I am using Multicanvas. I am able to render it.

Thanks for the feedback.


edit upgrade-not-supported notice

Description

Urgency

[ ] Blocker
[ ] High
[ ] Medium

Requirements

Test all commands and procedures.
Build content locally and test for formatting/links.
Add redirects to dcos-website/redirect-files.
Change all affected versions (e.g. 1.7, 1.8, and 1.9).
See the contribution guidelines.

This notice is superseded


Support/Document port configuration

What problem or use case are you trying to solve?
Currently we hard code ports 3000, 3001, and 2222. Some users might need to listen on different ports.
Describe the UX of the solution you'd like
Probably env vars and/or config.toml for each port, and document somewhere
Related: can we stop Vite from searching for the closest available port, and instead fail if the port fails to bind?

This is pretty easy now, just using the -p option with docker run


Docs for UseDeepCloning appear to be wrong

I would have thought if UseDeepCloning was true that it would use deep cloning?
https://github.com/riok/mapperly/blob/0a489aebdd1b302586bdeb9ad03475d9e20a5716/src/Riok.Mapperly.Abstractions/MapperAttribute.cs#L44-L50

It seems that the documentation is the wrong way around and your assumption is correct. Thank you for reporting!


fintuning

There is a problem I have encountered: how to fine-tune the ViTPose model

Hello refer to this issue
https://github.com/JunkyByte/easy_ViTPose/issues/15


Query vectorization.

Implementation of the proposal in #7093.

Very cool, I think both @xvrl and @nishantmonu51 may have taken a hack at this previously as well. There is even https://github.com/metamx/druid/tree/gpudruid if anyone wants to peek at super old code. Looking forward to see how this patch performs

There's some benchmarks in the description (https://static.imply.io/gianm/vb.html) & I have also run some queries on a real cluster and seen similar speedups. Although notably, topN isn't vectorized in this patch, and contributions are welcome on that one 😄. I would expect speedup ratios there similar to groupBy, maybe a bit less since topN already has some optimizations targeted at reducing method call overhead (the monomorphic specialization system).
There's some TeamCity inspections going bump because of unused stuff. Most of it is there for a reason so I'll add some comments that hopefully make the inspections happy.

Updated the top comment to be more proposal-y following discussion on the dev list.

Updated the top comment to be more proposal-y following discussion on the dev list.

I do not think this is going to work, because the updates to the description is something that only authors are doing and there is no tracking for history.
Also take the example of Rejected approach, not sure whom had rejected that ? and whom thought does reflects.
In fact, i might not agree that Apache Arrow is not a good candidate, in fact am looking to see if we can use it to stream bulk data from Druid and expose it a standard interface to export data to another execution engine...

I do not think this is going to work, because the updates to the description is something that only authors are doing and there is no tracking for history.

There is history (click "edited" in the top bar of the comment). I don't think there's anything wrong with edits coming from the author of the proposal, so long as they reflect community discussion.

Also take the example of Rejected approach, not sure whom had rejected that ? and whom thought does reflects.

I used the Kafka template from https://cwiki.apache.org/confluence/display/KAFKA/Kafka+Improvement+Proposals. As I understand it, this section means "rejected by the author of the proposal", and is meant to help reflect the author's thinking in the course of developing the proposal. In the current version it reflects my thinking alone. I would update it to reflect community discussion.

In fact, i might not agree that Apache Arrow is not a good candidate, in fact am looking to see if we can use it to stream bulk data from Druid and expose it a standard interface to export data to another execution engine...

That sounds like a good discussion point!! Would love to hear any more thoughts you have on this topic. As I see it- supporting Arrow as an export interface and using it internally are two different things and could happen independently of each other. There is also a potential case to be made around using Arrow for the later stages of query execution, after per-segment processing, even if it's not used for per-segment processing. Druid doesn't currently always use optimized data structures for this phase (there's a lot of in-heap Java objects involved, and some glaring inefficiencies like representing rows using LinkedHashMaps).
Fwiw, the KIP process suggests the following for discussion,

Start a [DISCUSS] thread on the Apache mailing list. Please ensure that the subject of the thread is of the format [DISCUSS] KIP-{your KIP number} {your KIP heading} The discussion should happen on the mailing list not on the wiki since the wiki comment system doesn't work well for larger discussions. In the process of the discussion you may update the proposal. You should let people know the changes you are making.

If we want to try something similar -- we can do that in comments for this PR.
Do you think that will work?

Some previous discussion on Arrow as an export format in particular: https://github.com/apache/incubator-druid/issues/3891

There is history (click "edited" in the top bar of the comment). I don't think there's anything wrong with edits coming from the author of the proposal, so long as they reflect community discussion.

This is true, but I would like to suggest to use a better tool for easy discussion. I think the proposal will be usually large, which means it's not easy to point some particular parts of the proposal. Probably we can use Github PR for the proposals as well, so that people can easily leave comments.

If we want to try something similar -- we can do that in comments for this PR.

As i said i am not targeting per-say  this PR. Ideally would love to see a formal agreement about the process on the dev mailing list and then maybe start implementing it on this PR if possible.

There is history (click "edited" in the top bar of the comment). I don't think there's anything wrong with edits coming from the author of the proposal, so long as they reflect community discussion.

Thanks i guess i learned new thing today.
FYI as a side note I honestly  prefer a separation between Code reviewing and Proposal reviewing discussion , for the simple reason that when the code review starts it will introduce a lot of noise about the implementation details and therefore all the discussion about design will be lost or not possible to sort out, In fact Github pages becomes unloadable once we get bunch of comments.

Sounds good, let's take that part of the discussion to the mailing list.

I added a "Future work" section that illustrates what would be left to be done before the feature is 'complete'. I don't necessarily think it makes sense to do any of it in the first PR, since the first PR would just be to lay a foundation that allows the other work to happen.

Great PR!!
I do not want to go off topic, but with regard to:

Benchmarks on the code in this PR indicate we could get a 1.3-3x speedup

..., I meant to mention that there is an Israeli startup which is specialising in FPGA accelerations.
 This startup has customised Druid's Query Engine to delegate the aggregation to FPGA hardware and they claim a 35x speedup for mostly-in-memory use-cases.
They might be an interesting technology partner in validating the design of a vectorisation layer and providing an FPGA based extension for it. I'm not affiliated with them in any way, so this is not me advertising or pitching them. I just found it interesting what they are doing and was curious as to whether you guys have heard of them and whether this sort of stuff would be a fit for what you are trying to achieve with this PR.

@sascha-coenen,

I meant to mention that there is an Israeli startup which is specialising in FPGA accelerations.  This startup has customised Druid's Query Engine to delegate the aggregation to FPGA hardware and they claim a 35x speedup for mostly-in-memory use-cases.
They might be an interesting technology partner in validating the design of a vectorisation layer and providing an FPGA based extension for it. I'm not affiliated with them in any way, so this is not me advertising or pitching them. I just found it interesting what they are doing and was curious as to whether you guys have heard of them and whether this sort of stuff would be a fit for what you are trying to achieve with this PR.

It sounds cool, I haven't heard of them. I searched around for a bit and didn't see anything do you have a link? My feeling is that it is useful to optimize performance on CPU (what this patch does) regardless of the existence of specialized hardware. Specialized hardware is still quite interesting though in its own right. And if optimizations geared towards improving performance on CPUs help on other types of hardware too, all the better.

I have moved the proposal to #7093, used the new proposal template, and added a lot of info, including tables detailing changes to interfaces and calling out differences between standard and vectorized versions.

The batch iterators used here use a lot less memory per bitmap iteration as of RoaringBitmap 0.8.2 (see here).

/subscribe

The Travis errors are interesting; the tests run OOM. I got a heap dump and saw that ~78% of the heap is being used by org.apache.maven.plugin.surefire.report.WrappedReportEntry objects. It sounds like https://issues.apache.org/jira/browse/SUREFIRE-1147. It seems like there are too many tests now for surefire to handle!
I'll try updating to the latest 2.x surefire (2.22.2). If that doesn't change anything I'll try bumping up the Xmx in Travis a bit. Right now it's set to 512m. If that doesn't work then I guess we either need to patch surefire, or refactor the tests to not have so many test cases.

Updating surefire didn't help, but I kept the new version anyway. I'll try bumping Xmx to 800m.

It looks like that bump worked… for now :)

Going to merge in #8049 to this branch when it's available, since that should clean up Travis results again. Thanks to everyone that reviewed. @egor-ryashin I think I have addressed all your comments, let me know if you agree. I'm looking to merge this to master soon so we can start building on top of it.

Just pushed up another commit with this change: https://github.com/apache/incubator-druid/pull/6794#discussion_r302651747

Thanks everyone!!


Can i add signature?

Can I print time information, user information or a special message at the bottom of each printed page?

@alprde Not directly, although perhaps solutions like PaperCut might be able to do so?

@alprde A CUPS filter could do this, but at present none of the bundled filters do.

@alprde A CUPS filter could do this, but at present none of the bundled filters do.

So can i write a custom filter and activate it? I tried several methods but it didn't work.

@alprde Which methods did you try? Pykota and other accounting solutions use a custom backend to intercept all print data.

@alprde
if you intend to write a custom filter you may have a look at
this article which is rather old so some details are outdated
but the general ideas should be still vaild for CUPS 2.x:
https://en.opensuse.org/SDB:Using_Your_Own_Filters_to_Print_with_CUPS
To add a special message at the bottom of each printed page
I would insert a custom filter where the data format is known.
Nowadays the original print job data is first converted into PDF
(in contrast to the article that describes the traditional way
where original print job data was first converted into PostScript).
So I would insert a custom filter after the filter that made the PDF.
I think the custom filter would have to change its input PDF
to get the needed free space the bottom of the page
(i.e. scale the page content it a bit down and move it a bit up)
and then add the special message there as PDF text
or alternatively the custom filter may print the special message
simply over what there might be already in the PDF.
So you would need a PDF manipulating program that can do this
play around with it until you understand how it bejhaves with PDFs
and then call that program (with appropriate options) as custom filter.

I added a banner, but I decided that this is not the method I want. Then I tried to call the custom filter I created by adding this code *cupsFilter: "application/vnd.cups-postscript 100 customfilter" to the ppd file of the printer, but it didn't work.
/usr/lib/cups/filter/customfilter
#! /bin/bash echo -en "TEST"
Links I used:
http://technik.blogs.nde.ag/2012/08/28/watermarking-printouts-in-the-linux-world/
https://stackoverflow.com/a/11194723/11497642

@alprde if you intend to write a custom filter you may have a look at this article which is rather old so some details are outdated but the general ideas should be still vaild for CUPS 2.x: https://en.opensuse.org/SDB:Using_Your_Own_Filters_to_Print_with_CUPS
To add a special message at the bottom of each printed page I would insert a custom filter where the data format is known. Nowadays the original print job data is first converted into PDF (in contrast to the article that describes the traditional way where original print job data was first converted into PostScript). So I would insert a custom filter after the filter that made the PDF. I think the custom filter would have to change its input PDF to get the needed free space the bottom of the page (i.e. scale the page content it a bit down and move it a bit up) and then add the special message there as PDF text or alternatively the custom filter may print the special message simply over what there might be already in the PDF. So you would need a PDF manipulating program that can do this play around with it until you understand how it bejhaves with PDFs and then call that program (with appropriate options) as custom filter.

I've looked at this link before, but I couldn't. The main problem is that I have little experience with cups, how should I write the filter, which folder should I add it to and how should I call the filter? I don't know them and I need to learn them.


default order for gene names in extensions on (gene pages, term pages, publication pages)

Where gene names or IDs appear in annotation extensions (e.g. activity substrates), the default should be to order by gene standard name. If possible, list named genes first, then systematic IDs for genes without standard names.

I  think we might want to do something more.  I thing as numbers get larger rit might be better to order   by similar  involved in extension:
i.e
has substrate bbb4, involved in positive regulation of septation initiation signaling
has substrate ddd4, involved in positive regulation of septation initiation signaling
has substrate eee9, involved in negative regulation of mitotic spindle elongation
has substrate ddd4, involved in positive regulation of mitotic spindle elongation
has substrate xxx4, involved in positive regulation of mitotic spindle elongation
has substrate ffff2, involved in negative regulation of conjugation with cellular fusion
perhaps?

I think we could have a configuration for the most biologically meaningful default view.
I have a feeling that if there are lots of "during" annotations, this is the best way to order,
followed by part of/involved_in, and then   substrate.
This needs extending and will differ  for different ontologies....

hmm, this is about this
https://github.com/pombase/website/issues/186
It would be super-cool for interpretation
If the default ordering was by phase extension, so that things which occur together group together

So
mitotic G1 phase
mitotic S phase
mitotic G2 phase
mitotic M phase

mitotic prophase
mitotic prometaphase
mitotic metaphase
mitotic anaphase
mitotic telophase
no phase
(could be expanded for meiosis etc)

This way, where there a lot of annotation, things which occur simultaneously would group together which would make much more sense biologically.

Super clever ordering would defaukt display by

during (order specified in config list)
alphabetically by involved in
3) gene name
(so if you haven't got any 1. or 2. gene name would be the default anyway.....)

During discussion:
Other suggestions included subheadings for phases, phase column

Should I go ahead and change the ordering to this:

during (order specified in config list)
alphabetically by involved in
gene name (so if you haven't got any 1. or 2. gene name would be the default anyway.....

Or does this need discussion first?:

Other suggestions included subheadings for phases, phase column

I think this ordering makes sense, but if anyone else has alternative suggestions we can discuss...

the default should be to order by gene standard name

That's done.  Val suggestion for ordering by during, involved in then gene name isn't done yet.

during (order specified in config list)
alphabetically by involved in
gene name

Is that just for GO and modifications?  What should the order be for phenotypes?

alphabetically by gene name (affecting) I think (  is anything else except  penetrance and expressivity?)

Sorry, I should have read this more carefully.  Which config list do you mean when you say?:

during (order specified in config list)

I think Val means this list, typed out above
mitotic G1 phase
mitotic S phase
mitotic G2 phase
mitotic M phase
mitotic prophase
mitotic prometaphase
mitotic metaphase
mitotic anaphase
mitotic telophase
no phase
(could be expanded for meiosis etc)

Thanks Antonia.  That makes sense.

yes, so we don't have an actual config file for this yet...

I think what we need to do for ordering is done.
This would benefit from a new shiny ticket  for afterwards. There might be other related tickets hanging around too!

and...
If a GP has an substrate +involved_in it should come above anything which has substrate+ phase (only)...more information.

this must be out of date ...


Arm Binaries

Could there be armv7 armv8 binaries?

Python should run crossplatform

Could there be armv7 armv8 binaries?

please
pip install git+https://github.com/datawhores/OF-Scraper.git

but god speed bro :) ez fappennnzzz

The binaries have some system dependencies. Since they are self contained and come with there own python installation.
For example the Mac binary are compiled on a Mac docker. Using a Linux docker would not work for this.
I'm not sure how making a binary for arm would work at the moment.

The binaries have some system dependencies. Since they are self contained and come with there own python installation.
For example the Mac binary are compiled on a Mac docker. Using a Linux docker would not work for this.
I'm not sure how making a binary for arm would work at the moment.

I been using ARM too ... works fine with pip

Since the pip installation works
I think that will have to be good enough for now in terms of arm support
If someone wants to make a pull requests after figuring out how to use pyinstaller to make the binaries, I would be open to that as well


Accept self-signed SSL certificate issued by a non-public CA

I'm using my own CA to sign my home-assistant (and other) SSL certificates. This CA is imported in the androids user "trusted credentials". This works perfect for home assistant via Chrome and other services I use - like nextcloud and their app.
As far as I understand the support of user "trusted credentials" CAs needs to be enabled in the apps security policy:
https://developer.android.com/training/articles/security-config.html
The nextcloud Android App is a working example.
Thx!

I'm somehow against. If I ever connect to AP that will MITM my traffic and will get my certificate SSL traffic broken to get credentials, I wouldn't like to allow such kind of traffic to/from app.
Certificates are there for something... and they are free (with letsencrypt).

Although if there's way to detect if certificate is imported and only allow it when it's there - it's ok. :)

Letsencrypt doesn't work if home-assistant is only accessible from inside my LAN, but I still want it to connect over https.
I have both my CA and the home-assistant certificate imported to my android phone, home-assistant runs in a docker container with its own network where only traefic connects to. traefic (a reverse proxy) does the https. Still got a blank screen after manually inserting the url in the app.
This setup works perfectly with like 10 other apps (one of them is nextcloud), so i would really appreciate it :)

Duplicate of #27 You can look at the discussion there.

Duplicate of #27 You can look at the discussion there.

@BCNelson as far as I understand these are two different things - That's why I opened the request ;-)
In #27 the client also authenticates to the server via a certificate.
In my request the server just uses a non-public CA. This is quite common if you don't want to expose your application to the internet to get a letsencrypt certificate but want to use https without security warnings.

@dickesW My bad thanks for the clarification

Yeah, this is ok.

Yeah, this is ok.

+1.
My HA instance is not exposed to the internet, so I managed a full HTTPS connection 100% compliant with all the browsers (including Chrome above vs 58) through a custom root CA.

We're not going to roll any custom SSL checks. Too dangerous. As long as we can just tweak a config option to allow own certs installed by user, then we can do that.

Got the same issue, white screen after entering url, in my case url is ip (SAN type is IP), but that doesn't matter, since it perfectly works with Chrome and other browsers.
self-signed SSL certificate issued by a non-public CA - @robbiet480 actually this is wrong wording, since SSL certificate is not self-signed, it's signed by CA, which may/may not(intermediate) be self signed but the first CA in the chain is non-public, certainly. The main thing is that android device trusts certificate's full chain and it's impossible to add such CA without user's approval (entering device password). Since chrome trusts it, I don't think excluding user-added CAs will give us more security, just inconvenience.

Letsencrypt doesn't work if home-assistant is only accessible from inside my LAN, but I still want it to connect over https.
I have both my CA and the home-assistant certificate imported to my android phone, home-assistant runs in a docker container with its own network where only traefic connects to. traefic (a reverse proxy) does the https. Still got a blank screen after manually inserting the url in the app.
This setup works perfectly with like 10 other apps (one of them is nextcloud), so i would really appreciate it :)

You can easily use Let's Encrypt even if your HA is only accessible from your LAN. Just use the DNS-01 Challenge. That's what I do.

@patricf I can do many things easily, but this issue is not about that.

Just wanted to add my support for allowing Private Trusted Root CA. Those of us that choose to roll our own PKI do so to improve netsec and not rely on third parties. Allowing this won't compromise the end to end encryption.

This is also a big need for me, and would like to see the PR/MR linked to this once done in order to push it to other app dev (firefly-III <3)
As someone who have is Smart home disconnected from the web, i push my custom CA on every device. I would love to see more than a white screen ;)

Worst thing is that without support for trusted user Root CA, I'm forced to use http instead https because there is no way to bypass (even for testing) an invalid certificate.

We're not going to roll any custom SSL checks. Too dangerous. As long as we can just tweak a config option to allow own certs installed by user, then we can do that.

Posted PR #177. Closed.

For those who are interested on solving this truly, please, consider submitting a new PR, replacing the #177.
@urusha, I'm open to offer my time and skills on this, as an interested one on the solution.

Forked the project and compiled the app for those who want to test the solution on #177 .
Fork: https://github.com/tiagofreire-pt/home-assistant-android
App: https://github.com/tiagofreire-pt/home-assistant-android/blob/master/app-debug.apk
The cleartext option was set to "false", on the network config file.

@tiagofreire-pt works exactly like it should with CA, and no connection (white screen) without CA. Thanks!
One thing is that if CA is removed after login, app prints a connection error and it's fine, but I haven't found a way to change addr/login, except clearing app data. Anyway this is another issue, I don't think it's related to TLS error, it's seems to be about any connection error.

Thank's @tiagofreire-pt. it bother me that i still can't put this on my mother phone because it will not auto-update, but i will have a working version on mine to test :)
I really don't understand what more than the official google doc is needed to have this merged in, someone to dig in android source code to see if it do more than what google claim ? Oo

@urusha and @poofyteddy , thanks for your support.
The patched app is refreshed with the commit fdd71ce from the upstream repository. I'll try to recompile it every other day. Stay tuned on my repository. :)

@tiagofreire-pt Your fork is exactly what is needed.
I think the issue at hand is informing everyone of what this change actually does. Those of use that maintain our own CA know this is no different than trusting a public CA. I could argue that trusting my own CA provides more privacy/security than trusting the list of Root CAs your OS says you should. e.g. The whole Symantec fiasco  or the Lenovo Superfish thing or the eDellRoot certificates I could go on.
I'll put on my WebAppSec hat and play devils advocate to admit, allowing user trust anchors for an app such as this; where the domain name or certs of each users instance can't be configured in the network-config, would allow for any user trusted Root CA to authenticate the connection to their home assistant instance.
Therefore, if a malicious actor or company/organization has been able to install and trust a Root CA on the users android device for the purpose of intercepting traffic, allowing this setting would allow that actor is intercept HA traffic, whereas only trusting the system CA would drop the connection like it is now. If this scenario were to occur the user has already been compromised beyond just communication to their HA instance. Taking this further, beyond just a user trust anchors, when an android device is compromised with the intention of intercepting communications, the device is usually rooted, and the certs are placed in the system trust, and there is background process running to circumvent certificate pinning.
Is it the responsibility of the HA developers to protect you from these scenarios? That's for them to decide, but these are both beyond the scope of HA itself, so not likely. Furthermore that whole scenario is like using a "cannon to kill a fly" since clear text communication is currently allowed!
I'll continue working on outlining the security/threat model of what this change entails and present it with a PR.

@ochlocracy I would validate that if android didn't lock it down for a long time already.
On most device ( won't say all since i can't check all devices. But all of the one i know at least) you have to enable complex lockscreen.
To put it against the user will you eather need to know his lockscreen passcode, or to set one up and give it to him. Plus you have a never dismisable notification telling you that "your network might be monitored"
I think it's fair to say you won't easily enable it without user consent... And i personally don't thrust CA on my Huawei devices anyway.

@tiagofreire-pt Your fork is exactly what is needed.
I'll continue working on outlining the security/threat model of what this change entails and present it with a PR.

Please, @ochlocracy. If you're able to open that PR, compliant with the requirements from the main developers, just do it! :D
This change is that much needed and we're at least 1 month out of service with this app (since its beginning), not allowing configurations on https (with custom root CA). This is a configuration proposed by the HA documentation.
Even so, nothing stops MITM hypothesis to happen even when the user connects to its HA instance through a pure browser (strange argument, as this app reports itself that is based on chrome 79...). MITM attacks, as you already stated, are way beyond the HA scope. It seems to be more about the OS itself.

I agree with everything outlined so far. I've opened a request but it seems it's not accepted as well.
Plus if one wants to execute MTIM its not that hard even with Public CAs especially on a mobile app.
The whole reasoning from the HA devs against enabling this option because of security concern is unjustified to me.
But may be if more people request/need this, eventually it would made into the official app.

Plus you have a never dismisable notification telling you that "your network might be monitored"

@poofyteddy That persistent notification is only for certificates marked for WiFi use. Roots installed for VPN and app use, do not generate that notification.
I agree with you that android makes it extremely difficult for either of those scenarios to happen. But, I outlined them for transparency because it's common for users to have CA Roots for Work or School installed in the user certificate store for the purposes of intercepting TLS traffic for inspection. Therefore the connection to your HA instance could be proxied for inspection while on their network if user certs are trusted in the app security policy. This is probably the most likely scenario that would compromise a users privacy to their HA instance. But again, the user choose to accept this, when they installed those certificates, and choose to use that network. If the user trusts their Work or School then this shouldn't be an issue.
@tiagofreire-pt I'll do what I can but it's ultimately up to the HA owners to decide. I'll layout the realistic security implications of what this change will do with a PR since I think that's ultimately all they are asking for in order to make their decision.

The #194 seems to have the same code proposed on #177. Lets see if this is the end for the issue. 💃

@JBassett , thanks for your PR!


Tidy up device creation for full grid scan

Fixes #660
To test:

Confirm tests pass

I like moving to the dictionary for BEAMLINE_PARAMETER_PATHS but I would rather limit the places we pull out the environment variable. Can we reuse either get_beamline_name in dodal or get_beamline_name here? This will also mean we can better handle the simulation case.

Done, now this depends on https://github.com/DiamondLightSource/dodal/pull/66
This will require setting and S03 env var as currently implemented because I didn't want to put S03 as a default in a generic function


Fix manual glucose entry for mmol/L

Prevents mmol/L entry from being forced into having 1 decimal place
Fixes typo that swapped high/low limits from mg/dL and mmol/L
Round down for entry instead of to nearest

Addresses Issue https://github.com/nightscout/Trio/issues/339
Before this PR:
https://github.com/user-attachments/assets/f0651253-9f78-4a15-8cb7-9717c3245d56
After this PR:
https://github.com/user-attachments/assets/371ad5b7-8de6-465d-a690-18d9953cfedb

Can someone check localization?

I tried different languages and did not see the decimal/thousands place delimiters I expected
If confirmed, that should be a separate issue.

It is a little disconcerting to enter 40.0 or 10.0 and have it modify the display to 40 or 10 respectively

The display on the log includes the single decimal point for mmol/L

I agree that it's not great, but unfortunately having it auto-format to a single decimal place is what messed up being able to enter double digits. I played around with it a bunch to make it so minimumFractionDigits defaults to 0, is set to 1 when the user types a decimal point, and is reset to 0 if the decimal point is deleted... but couldn't get it to work right.


Indie / bootstrapped company discount

It's already 50% off for now, but later I'd like to offer discounts for real companies and indie hackers as well.

You shouldn't discount to companies imo. It makes decision makers nervous.
Oh btw, another thing I ran into with the accounts department is that I had to explain in layman's terms what Up does. In the end I think I scribbled they went with "software".

hahah yea fair enough! I'll have to come up with a list of selling points for non-technical people higher up in the companies. Once it's more robust it should be a pretty easy sell if it's saving days or weeks of dev time


Docker Toolbox for Windows (cygwin) proposals

I hope it's the right place to report such issues.
I have two changes to offer to the start.sh script to make it compliant with cygwin :
First after the big text block. Under Windows, the launching shortcut places the working directory in the "Docker Toolbox" dir. But if it's called from a cygwin shell, this does not apply.
So I suggest adding :
cd "$(dirname "${BASH_SOURCE[0]}")"
Second, to make it start fine with cygwin, all that is needed is to add the following three lines after the block which defines the VBOXMANAGE path (STEP="Looking for vboxmanage.exe") :
if [ -n ${CYGWIN_PATH} ]; then
VBOXMANAGE=echo ${VBOXMANAGE}|sed 's/\\\/\//g'
fi
In the end, the only problem that remains is to install and use winpty. But it should be for another post. This one's only aim is to render start.sh compliant with cygwin.

Thanks for suggesting, unfortunately it's not the right location; can you open this in the Docker Toolbox issue tracker instead? https://github.com/docker/toolbox/issues
Thanks!

As I mentioned : "I hope it's the right place to report such issues." So thanks and Sorry.

No worries, no harm done! :+1:


Remove Shadow DOM support from event delegation.

See #216.
Shadow selectors are being removed from the spec therefore we're removing it from Skate. We can still add this at a later point if it ever gets re-introduced, even after a 1.0.
Also moved the event tests to the public API testing area and fixed them in IE.

LGTM other than I think you need to delete test/unit/events.js since its contents are now in test/unit/api/event.js.


Stack dumps from flutter test are overly verbose

Here is the output for a failing test with pub run test:
00:00 +19 -6: parseResult: dot zero
00:00 +19 -7: parseResult: dot zero
  Expected: '.0'
    Actual: '0'
     Which: is different.
  Expected: .0
    Actual: 0
            ^
   Differ at offset 0

  package:test                             expect
  test/number_accumulator_test.dart 172:7  testParseResult.<fn>

Here is the same result when run with flutter test. The information in the stack dump is almost entirely unrelated to the app being tested and is not useful, especially since this test doesn't use Flutter. Note that I am not advocating for the single line stack information output by pub run test above. That is too terse.
00:01 +26 -7: /.../test/number_accumulator_test.dart: parseResult: dot zero
  Expected: '.0'
    Actual: '0'
     Which: is different.
  Expected: .0
    Actual: 0
            ^
   Differ at offset 0

  packages/test/src/frontend/expect.dart 63:30                                          fail
  packages/test/src/frontend/expect.dart 58:3                                           expect
  number_accumulator_test.dart 172:7                                                    testParseResult.<fn>
  packages/test/src/backend/declarer.dart 90:45                                         Declarer.test.<fn>.<fn>.<fn>
  packages/stack_trace/src/stack_zone_specification.dart 134:26                         StackZoneSpecification.registerUnaryCallback.<fn>.<fn>
  packages/stack_trace/src/stack_zone_specification.dart 205:15                         StackZoneSpecification._run
  packages/stack_trace/src/stack_zone_specification.dart 134:14                         StackZoneSpecification.registerUnaryCallback.<fn>
  dart:async                                                                            Future.doWhile.<fn>
  packages/stack_trace/src/stack_zone_specification.dart 134:26                         StackZoneSpecification.registerUnaryCallback.<fn>.<fn>
  packages/stack_trace/src/stack_zone_specification.dart 205:15                         StackZoneSpecification._run
  packages/stack_trace/src/stack_zone_specification.dart 134:14                         StackZoneSpecification.registerUnaryCallback.<fn>
  dart:async                                                                            _CustomZone.bindUnaryCallback.<fn>
  packages/stack_trace/src/stack_zone_specification.dart 134:26                         StackZoneSpecification.registerUnaryCallback.<fn>.<fn>
  packages/stack_trace/src/stack_zone_specification.dart 205:15                         StackZoneSpecification._run
  packages/stack_trace/src/stack_zone_specification.dart 134:14                         StackZoneSpecification.registerUnaryCallback.<fn>
  dart:async                                                                            _Future._asyncComplete.<fn>
  packages/stack_trace/src/stack_zone_specification.dart 205:15                         StackZoneSpecification._run
  packages/stack_trace/src/stack_zone_specification.dart 124:48                         StackZoneSpecification.registerCallback.<fn>
  ===== asynchronous gap ===========================
  dart:async                                                                            _Future.then
  packages/test/src/backend/declarer.dart 90:29                                         Declarer.test.<fn>.<fn>
  dart:async                                                                            Future.Future.sync
  packages/test/src/backend/invoker.dart 175:13                                         Invoker.waitForOutstandingCallbacks.<fn>.<fn>
  dart:async                                                                            runZoned
  packages/test/src/backend/invoker.dart 174:7                                          Invoker.waitForOutstandingCallbacks.<fn>
  dart:async                                                                            runZoned
  packages/test/src/backend/invoker.dart 171:5                                          Invoker.waitForOutstandingCallbacks
  packages/test/src/backend/declarer.dart 89:30                                         Declarer.test.<fn>
  dart:async                                                                            Future.Future.<fn>
  packages/stack_trace/src/stack_zone_specification.dart 205:15                         StackZoneSpecification._run
  packages/stack_trace/src/stack_zone_specification.dart 124:48                         StackZoneSpecification.registerCallback.<fn>
  dart:async                                                                            _CustomZone.bindCallback.<fn>
  packages/stack_trace/src/stack_zone_specification.dart 205:15                         StackZoneSpecification._run
  packages/stack_trace/src/stack_zone_specification.dart 124:48                         StackZoneSpecification.registerCallback.<fn>
  dart:async                                                                            Timer._createTimer.<fn>
  /home/travis/build/flutter/buildbot/src/out/Release/gen/sky/bindings/natives.dart 23  _Timer._Timer.<fn>
  ===== asynchronous gap ===========================
  dart:async                                                                            Future.Future
  packages/test/src/backend/invoker.dart 263:13                                         Invoker._onRun.<fn>.<fn>
  dart:async                                                                            runZoned
  packages/test/src/utils.dart 207:12                                                   runZonedWithValues.<fn>
  dart:async                                                                            runZoned
  packages/test/src/utils.dart 206:10                                                   runZonedWithValues
  packages/test/src/backend/invoker.dart 252:7                                          Invoker._onRun.<fn>
  packages/stack_trace/src/chain.dart 71:24                                             Chain.capture.<fn>
  dart:async                                                                            runZoned
  packages/stack_trace/src/chain.dart 69:12                                             Chain.capture
  packages/test/src/backend/invoker.dart 251:11                                         Invoker._onRun
  packages/test/src/backend/live_test_controller.dart 189:11                            LiveTestController._run
  packages/test/src/backend/live_test_controller.dart 41:31                             _LiveTest.run
  packages/flutter_tools/src/test/remote_listener.dart 150:16                           RemoteListener._handleCommand
  dart:async                                                                            _StreamController.add
  websocket_impl.dart 1091                                                              _WebSocketImpl._WebSocketImpl._fromSocket.<fn>
  dart:async                                                                            _EventSinkWrapper.add
  websocket_impl.dart 320                                                               _WebSocketProtocolTransformer._messageFrameEnd
  websocket_impl.dart 215                                                               _WebSocketProtocolTransformer.add

Neat.  We must be missing an exception handler.

Weird. I wonder how test normally does this. @nex3, any ideas?

We use Chain.foldFrames() to fold out any irrelevant frames—which we define to mean core library frames and frames from the test, stack_trace, and stream_channel packages. Currently we don't have a way of customizing this set of packages, although it's something I've had in the back of my mind for a while. I just filed dart-lang/test#416 to track that.
It looks like the reason your stack traces aren't being fully folded is that they don't use package: URIs. All the frames in packages are listed as file: URIs that begin with packages/. I'm not sure why this is—I assume it's something particular to flutter's build of the VM—but fixing it is probably the most correct way of solving the problem. You could also try to rewrite the stack traces as they're generated, but that would be a fair amount of effort for something that's kind of a hack.

Our handling of package: urls in the engine is implemented here:
https://github.com/flutter/engine/blob/ce3b4547ac579f67a6e473f7f5b5eac4357424ff/sky/shell/dart/dart_library_provider_files.cc#L77
It's possible that we're not implementing it exactly like how the Dart command line VM does and thus not how Chain.foldFrames expects. (FYI @johnmccutchan)

There is a bug in flutter's uri canonicalization. Taking a look at this now.

Will this affect other stack traces from flutter, or just flutter test?  Presumably will require an engine roll before users will see this take effect.

This will affect all stack traces and yes an engine roll is needed.


#91 Update accumulator checkpoints

Calculated accumulator checkpoints every 10k blocks, starting after xION v1 start - rounded to the nearest 10k+20.
Both for mainnet and for testnet.
https://github.com/cevap/ion/issues/91

This pull request is now managed with CodeReviewHub. Refresh.

:shipit:


Sines needs more explanation of gnarlier parameters

Lots of the parameters in fluid.bufsines~ and fluid.sines~ are unexplained in the documentation. We need to find a way to tackle them as it's not done in learn either. I don't even really understand them from tweaking them while I listen! Definitely not good for users.

playing with SPEAR might help understand the track limits and the thresholds.


[Haxe][ASGenerator] Improved callback code generation. (fixes #103)

@Neverbirth please review this PR

@Neverbirth what do you think about this?

It's Saturday 9pm and I'm doing stuff for work XD. But I'm sure this will get merged soon.


[Dependend] Reset chunks from cache if oudated

Motivation and context
Server part must be implemented before merging the pull request: #8348
How has this been tested?

Checklist

[x] I submit my changes into the develop branch
[ ] I have created a changelog fragment
[ ] I have updated the documentation accordingly
[ ] I have added tests to cover my changes
[ ] I have linked related issues (see GitHub docs)
[ ] I have increased versions of npm packages if it is necessary
(cvat-canvas,
cvat-core,
cvat-data and
cvat-ui)

License

[x] I submit my code changes under the same MIT License that covers the project.
Feel free to contact the maintainers if that's a concern.

Summary by CodeRabbit

New Features

Enhanced caching mechanism for frame metadata, ensuring up-to-date information and improved memory management.
Introduced chunks_updated_date to track when frame chunks were last updated.

Bug Fixes

Improved consistency in accessing frame data by refreshing the cache when necessary.

Documentation

Updated documentation to reflect changes in metadata structure and caching behavior.

Codecov Report
Attention: Patch coverage is 52.17391% with 11 lines in your changes missing coverage. Please review.

Please upload report for BASE (zm/validation-management-core@876237d). Learn more about missing BASE report.

Additional details and impacted files
@@                       Coverage Diff                        @@
##             zm/validation-management-core    #8449   +/-   ##
================================================================
  Coverage                                 ?   74.15%
================================================================
  Files                                    ?      396
  Lines                                    ?    43065
  Branches                                 ?     3900
================================================================
  Hits                                     ?    31935
  Misses                                   ?    11130
  Partials                                 ?        0

Components
Coverage Δ

cvat-ui
78.77% <52.17%> (?)

cvat-server
70.22% <ø> (?)


docs: Add ITP's TransitExplorer tool to visualization category

We haven't even sorted a domain name yet, but there is an article explaining TransitExplorer and I'll put a gif below. If anyone wants to try it, or more info, give me a shout :)
...oop the GIF is too big for GH, but you can see it on twitter
Thanks!

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

@markjd84 Thanks for sharing this! Could you clarify if this tool is free to use?

It's not, sorry, though we haven't got fixed pricing in place yet. Anyone who wants to try it is welcome to drop me a line!

@markjd84 Ok - I'm going to hold off merging this for now until you've got a permanent webpage and pricing is determined. Most of the resources on this list are free and open-source, so I just want to make sure that those that aren't are appropriately labeled to avoid confusion. This might entail a new section in the list (similar to "Native Apps (closed source)").

One option would be to add another community-maintained list:
https://github.com/CUTR-at-USF/awesome-transit#community-maintained-lists
...that's "Entities providing GTFS analysis services" or something similar, and capture commercial services like yours there.

Ok, no problem, thanks for info!

I had my covered vaccine Johnson & Johnson however I lost my card I had it in Columbus Ohio at the hilltop Westgate Park at the recreational center back in March to July of 2021 how do I find my proof

@markjd84 are there any updates on this project you can share?


Put gtk the first in PATH environment variable (fixed the issues of running the tool on some windows environments)

related to https://github.com/berthertogen/weasyprint.wrapped/issues/32

closes #32


Updates button styling to sync border widths; updates close button on drawer

Pre-Flight checklist

[X] Screenshots and design review for any changes that affect layout or styling

[X] Desktop screenshots
[X] Mobile width screenshots

[X] Testing

[X] Code is tested
[X] Changes have been manually tested

What are the relevant tickets?
Closes #1292
Closes #1291
What's this PR do?
Updates the styling on the Enroll Now button so the border width doesn't change when you hover into and out of the button.
Updates the close widget to be more like the design.
How should this be manually tested?
Hovering into and out of the Enroll Now button in the Program Drawer should no longer cause the UI to move about.
The close button should be a larger thin X now instead of the × glyph, and the program title should no longer run into it if the title is sufficiently long.
Screenshots (if appropriate)

Updated the drawer title to use margin (and slightly more of it) in https://github.com/mitodl/mitxonline/pull/1296/commits/a4ee9bab579b23cea9135e154a36482d5b87393f; that seems to fix the collision issue:

Regarding the enroll button: I will take care of that in #1297 - disabling the enroll button if there's no course page makes sense (in testing, clicking that resulted in no enrollment at all and a redirect to the dashboard) but there's changes in that PR that will facilitate the change, so better it goes there.


Updated shentu servers

No files changed. I believe these were already merged, quite recently, in fact. Are there any other changes to add here, or can this be closed?

It can be closed, sorry. It just said my branch was still ahead after your initial merges.


[CMR] M3-4509: Remove animation across the app

Description
Combing through the app and removing unnecessary animations
Current changes so far:

Extending the blinking duration for Linode other statuses
Remove the transition for MUI buttons

To Do:

[ ] Select components (current transition involves the border-color changing, not sure if there's more to this)

Type of Change

Non breaking change ('update', 'change')

Note to Reviewers
If you see any other animations that need to be changed, lmk
Also waiting for Jay to see what other animations/transitions he wants gone

Combining this in https://github.com/linode/manager/pull/6938


Remove egg dependency

Egg is a pretty heavy dependency and we haven't actually been using any of the egraphs in it (except as structural hashers / bottom static analyses).  This PR is to remove it and replace all our dependencies with homemade solutions from the lambdas crate.
Todos:

[x] get rewriting under a separate testset working via https://github.com/mlb2251/stitch/issues/153 so that we can fully be identical to claim-2
[x] compare our test set compression to claim-2
[x] test everything on sketch4 (I'm already pretty sure claim-1 claim-2 are similar enough)
[x] finally we can fully merge lambdas/no_egg to lambdas/main and stitch/no_egg to stitch_main

While doing this I found that the old s-expression library was converting things like 2.0 to 2 and -0 to 0. As a solution that maintains our same results as before (so we can detect regression easier and since this is a rather minor change that may impact abstractions but not semantics) I've just gone ahead and changed 2.0 to 2 and so on everywhere. We can revisit this as needed but I think that is fine

claim-1 results look pretty identical

claim-2 results for 3 seeds: These look identical for train set CR, test set CR is 1.0 always bc we havent done rewriting, runtime is actually decently better we shaved off a handful of seconds! And memory is very slightly higher than it was
+--------------+-------------------+---------------+---------------+----------------------+
|    Domain    | Training set C.R. | Test set C.R. |  Runtime (s)  | Peak mem. usage (MB) |
+--------------+-------------------+---------------+---------------+----------------------+
| nuts & bolts |   11.81 +- 0.16   |  1.00 +- 0.00 |  0.15 +- 0.00 |    10.46 +- 0.14     |
|   gadgets    |    3.96 +- 0.01   |  1.00 +- 0.00 |  1.15 +- 0.06 |    25.34 +- 0.34     |
|  furniture   |    4.95 +- 0.06   |  1.00 +- 0.00 |  1.93 +- 0.02 |    31.32 +- 0.20     |
|   vehicles   |    4.26 +- 0.05   |  1.00 +- 0.00 |  0.98 +- 0.01 |    24.66 +- 0.24     |
|   bridges    |    4.36 +- 0.05   |  1.00 +- 0.00 | 11.72 +- 0.61 |   194.77 +- 22.10    |
|    cities    |    3.19 +- 0.04   |  1.00 +- 0.00 | 28.51 +- 0.60 |    468.61 +- 4.43    |
|   castles    |    2.58 +- 0.06   |  1.00 +- 0.00 | 45.97 +- 3.30 |   744.20 +- 10.28    |
|    houses    |    8.76 +- 0.27   |  1.00 +- 0.00 |  8.61 +- 0.17 |    306.90 +- 2.96    |
+--------------+-------------------+---------------+---------------+----------------------+

All the above results were from sketch4

Final checks:

claim-1: all good, almost zero change from paper
claim-3: rough eyeballing looks all good
claim-2: 50 seeds is still running

As soon as claim-2-50 finishes we can merge. Oh wait and also first we should modify the rewriting to allow for zero matches and to check that the followed abstractions were actually found

done, now just waiting on claim-2-50

+--------------+-------------------+---------------+--------------+----------------------+
|    Domain    | Training set C.R. | Test set C.R. | Runtime (s)  | Peak mem. usage (MB) |
+--------------+-------------------+---------------+--------------+----------------------+
| nuts & bolts |   11.56 +- 0.50   | 11.56 +- 0.50 | 0.01 +- 0.00 |    11.17 +- 0.12     |
|   gadgets    |    3.91 +- 0.31   |  3.91 +- 0.31 | 0.09 +- 0.01 |    26.84 +- 0.41     |
|  furniture   |    4.84 +- 0.27   |  4.84 +- 0.27 | 0.11 +- 0.01 |    33.20 +- 0.41     |
|   vehicles   |    4.14 +- 0.25   |  4.14 +- 0.25 | 0.07 +- 0.00 |    25.66 +- 0.31     |
|   bridges    |    4.35 +- 0.16   |  4.35 +- 0.16 | 0.97 +- 0.12 |   209.99 +- 13.63    |
|    cities    |    3.06 +- 0.14   |  3.06 +- 0.14 | 2.31 +- 0.27 |   471.17 +- 10.57    |
|   castles    |    2.55 +- 0.08   |  2.55 +- 0.08 | 4.24 +- 0.56 |   764.57 +- 31.26    |
|    houses    |    8.85 +- 0.57   |  8.85 +- 0.57 | 0.84 +- 0.07 |    309.95 +- 3.43    |
+--------------+-------------------+---------------+--------------+----------------------+

Seems like an 18x speedup (wow... most of the runtime for claim-2 must have been some rewriting related overhead).
memory is about the same, maybe <10% more
all the compression numbers look the same

actually idk the times are more like they used to be when i do make claim-2-3 now so idk

ohhh i just realized the apparent 18x speedup was actually just that my rewriting code was printing the same timing information that was getting picked up by analysis scripts. Which is why the tests were still taking a long time yet their printouts were short times. And since I switched to silent=True that's why it went back to taking the normal length


RM-17-fix-flake-8-violations

Fix Flake8 violations to make future development easier

@Brunope @bcastro-bl I've merged the changes from the other two PRs #180 and #181 in here so that we can merge this one once those other two are in

These are all the "low lift" flake violations. The other ones are of the "{foo} is too complex" sort which I feel like can be handled in another PR.


inclusion of read-only Device identity properties in Twin

I like to access readonly Device Identity [0] Properties like connectionState, lastActivityTime from module twin using Twin class [1]. Currently, it appears I have two choices

Call Twin.toJSON() method, and access .connectionState
Accessing directly with twin.connectionState is working for now, but not documented and may fail in future updates.

I like to check if those fields will be made available on Twin class.

Properties already accessible in Module. Closing.


improve xscalar with implicit conversion operators and empty constructor

@PerretB thanks for raising these issues.

fixes #794 and #793


Simple Direction app not drawing map but status is OK

Hi guys, i would like some help to fix my problem. I use your server api key but problem is still present.
Here is code: https://pastebin.com/uFSMG4GY
Thanks in advance!

You need to generate your own API key from https://console.developers.google.com.

I did, is the second key correct, that one i have to replace with the old one ?

What is the error you are getting? Can you past it here.

No more need to worry, problem is fixed, old key was replaced by new mine and that's fine henceforth =)
Thank you !