IPv6 race between pod and guest agent with macvtap-cni

What happened:
When we moved to Multus/macvtap-cni based networking our VMs as reported by kubectl get vmi started showing only IPv6 addresses. It works like that in ~90% of cases, sometimes correct IPv4 address is shown in kubectl get vmi and all IPv4 and IPv6 addresses are visible in kubectl describe vmi.
What you expected to happen:
The ipAddress in VMI status is primary IPv4 address of the VM and other addresses are included in ipAddresses in VMI status.
How to reproduce it (as minimally and precisely as possible):
Create VM with only macvtap-cni based networking.
Check IP reported by kubectl get vmi.
Additional context:
As we found out, since https://github.com/kubevirt/kubevirt/pull/10799 the IP addresses detected by guest agent are ignored if there is any IP information available in virt-launcher pod.
Monitoring VMI startup using kubectl get vmi testvm -o jsonpath="{.status.interfaces}{'\n'}" -w we got:
[{"infoSource":"multus-status","name":"hostnet"}]
[{"infoSource":"multus-status","name":"hostnet"}]
[{"infoSource":"domain, multus-status","mac":"8e:f5:20:f4:fa:df","name":"hostnet","queueCount":1}]
[{"infoSource":"domain, multus-status","mac":"8e:f5:20:f4:fa:df","name":"hostnet","queueCount":1}]
[{"infoSource":"domain, multus-status","mac":"8e:f5:20:f4:fa:df","name":"hostnet","queueCount":1}]
[{"infoSource":"domain, multus-status","mac":"8e:f5:20:f4:fa:df","name":"hostnet","queueCount":1}]
[{"infoSource":"domain, guest-agent, multus-status","interfaceName":"eth0","mac":"8e:f5:20:f4:fa:df","name":"hostnet","queueCount":1}]
[{"infoSource":"domain, guest-agent, multus-status","interfaceName":"eth0","ipAddress":"<IP_ADDRESS>","ipAddresses":["<IP_ADDRESS>","fdfd:5c41:712d:d06f:8cf5:20ff:fef4:fadf","fe80::8cf5:20ff:fef4:fadf"],"mac":"8e:f5:20:f4:fa:df","name":"hostnet","queueCount":1}]

in the "good" few cases. Same VMI usually starts with following output:
[{"infoSource":"multus-status","name":"hostnet"}]
[{"infoSource":"multus-status","name":"hostnet"}]
[{"infoSource":"domain, multus-status","ipAddress":"fdfd:5c41:712d:d06f:5436:1dff:feaa:ac2d","ipAddresses":["fdfd:5c41:712d:d06f:5436:1dff:feaa:ac2d"],"mac":"56:36:1d:aa:ac:2d","name":"hostnet","queueCount":1}]
[{"infoSource":"domain, multus-status","ipAddress":"fdfd:5c41:712d:d06f:5436:1dff:feaa:ac2d","ipAddresses":["fdfd:5c41:712d:d06f:5436:1dff:feaa:ac2d"],"mac":"56:36:1d:aa:ac:2d","name":"hostnet","queueCount":1}]
[{"infoSource":"domain, multus-status","ipAddress":"fdfd:5c41:712d:d06f:5436:1dff:feaa:ac2d","ipAddresses":["fdfd:5c41:712d:d06f:5436:1dff:feaa:ac2d"],"mac":"56:36:1d:aa:ac:2d","name":"hostnet","queueCount":1}]
[{"infoSource":"domain, multus-status","ipAddress":"fdfd:5c41:712d:d06f:5436:1dff:feaa:ac2d","ipAddresses":["fdfd:5c41:712d:d06f:5436:1dff:feaa:ac2d"],"mac":"56:36:1d:aa:ac:2d","name":"hostnet","queueCount":1}]
[{"infoSource":"domain, guest-agent, multus-status","interfaceName":"eth0","mac":"56:36:1d:aa:ac:2d","name":"hostnet","queueCount":1}]
[{"infoSource":"domain, guest-agent, multus-status","interfaceName":"eth0","ipAddress":"fdfd:5c41:712d:d06f:5436:1dff:feaa:ac2d","ipAddresses":["fdfd:5c41:712d:d06f:5436:1dff:feaa:ac2d"],"mac":"56:36:1d:aa:ac:2d","name":"hostnet","queueCount":1}]

In both kinds of cases the virt-launcher pod gets the IPv6 assigned to the podXXX interface.
It looks like if the automatic IPv6 address assignment is fast enough, it can be grabbed as "pod IP" and overrides what guest agent provides.
In all cases querying the guest agent directly with kubectl exec -it virt-launcher-testvm-XXX -- virsh qemu-agent-command 1 '{"execute": "guest-network-get-interfaces"}' returns correct set of IPs.
The k8s cluster has IPv6 disabled and we tried disabling IPv6 completely on the kubevirt node using sysctls but since the virt-launcher pod gets default sysctls and macvlan "bypasses" host network, the pod still got IPv6 assigned automatically.
Environment:

KubeVirt version (use virtctl version): v1.3.0
Kubernetes version (use kubectl version): v1.26.0
VM or VMI specifications:

VM: https://gist.github.com/skazi0/60ff72542edafd5189054da7e0f5fc83
network attachment: https://gist.github.com/skazi0/5af51687bf8bc3d9d9b3898348d7851e
storage class: https://gist.github.com/skazi0/b4be481ec8d2e164a121c1396e523137
macvtap-cni: https://gist.github.com/skazi0/bbd8f41ce912298df7499394250f1d80
macvtap-cni config: https://gist.github.com/skazi0/4d4b0291eb0837534f4704fd5abcd1e2

Cloud provider or hardware configuration: Supermicro SYS-6029TP-HTR/X11DPT-PS
OS (e.g. from /etc/os-release): Flatcar 3510.2.1
Kernel (e.g. uname -a): 5.15.106-flatcar
Install tools: macvtap-cni:v0.11.1, multus-cni:snapshot-thick
Others: N/A

Thank you for raising this issue @skazi0.
We will have a look.
/sig network

To confirm if https://github.com/kubevirt/kubevirt/pull/10799 from kubevirt changes is causing the issue, we performed the following experiment and it confirms the above is the reason causing this issue when ipv6 address is enabled on pod interface and vm interface.
Note:This issue will be seen mostly in the case where podInterface inside the vm pod <pod....> is having an ipv6 address during start up.This address will be stored in podCache during initial update of vmi status.
1.disable the ipv6 address on the pod interface in vm pod
sysctl -w net.ipv6.conf..disable_ipv6 = 1
2.check if there is no ip addresses on pod interface on vm pod
kubectl exec -it  /bin/bash
ip addr show
3.Remove all ip addresses on the eth0/enp1s0 interface of vm guest os
4.step 3, will make sure to wipe all ips for enp1s0 on vmi status (https://github.com/kubevirt/kubevirt/blob/03c48fca9dcb9b1c27518fed20faa9648c04acb5/pkg/network/setup/netstat.go#L282)
5.verify "kubectl get vmi  -o yaml
vmi.Status.Interfaces will show interface eth0/enp1s0 with no ip addresses.
6.Now try to add ip address on the eth0/enp1s0 interface of vm guest os
7.step 6, will trigger updateStatus where vmi should be updated with
ip address received fro qemu-ga.
But we observed the old ipv6 address on the pod interface was again getting
updated on the vmi status.It is due to the following reason.
https://github.com/kubevirt/kubevirt/blob/03c48fca9dcb9b1c27518fed20faa9648c04acb5/pkg/network/setup/netstat.go#L149
The above code will copy the ips from the podCache which was stored the first time
when pod came up.Later when qemu-ga tries to update the vmi status, but since
ifaceStatus.IP == "" its already populated from updateIfacesStatusFromPodCache, ip from qemu-ga will not be updated.
https://github.com/kubevirt/kubevirt/blob/03c48fca9dcb9b1c27518fed20faa9648c04acb5/pkg/network/setup/netstat.go#L282
@orelmisan @EdDev  https://github.com/kubevirt/kubevirt/blob/03c48fca9dcb9b1c27518fed20faa9648c04acb5/pkg/network/setup/netstat.go#L282 has to be revisited as its breaking the case of update from qemu-ga if there are multiple ips or pod interface assigned an ip.

@rrajendran17 thank you for the detailed examination.
There are a few points here that need fixing:

We should ignore IP addresses from tap or macvtap interfaces.
We should consider treating IPv4 and IPv6 independently (but with the same logic).

Are you or your colleges able to contribute such a change?

@EdDev I hope "We should ignore IP addresses from tap or macvtap interfaces" refers only to pod cache and I will still be able to see my VM's macvtap IP in the VMI.

@EdDev "We should consider treating IPv4 and IPv6 independently (but with the same logic)"
Can you please detail on what is needed in this case ?
I can try contributing changes for this, currently I do not have environment in reproduced state to validate if I make changes for this.


Cannot reset wifi credentials without connecting

Is there a way to reset the wifi credentials with the prog and reset buttons?  I was able to connect to our university's wifi, but not able to see the device on the network for some reason.  To clear the credentials and try again, I have to walk outside far away from the wifi then come back in, which is a hassle.  Is there no way to factory reset credentials?
As a side question, I'm also wondering why I can't see it on the uni wifi.  Maybe something with the enterprise-level something or other?  It's a passwordless wifi network.

Hey @nateGeorge, have you tried the "reset" button on the wifi shield?  You might have to hold it down for a bit but it should work.

I tried holding down reset for 10s, also tried holding it down for 10s when turning it on.  Neither reset the credentials.  I think all the reset button does is interrupt the power circuit, so holding it down probably doesn't do anything.  It would probably have to be done with the prog button somehow.  It would also be nice to have the LEDs flash some signal to let you know when it's cleared the creds.

Also after trying the holding down of the reset button, it seems something has broken, because the reset button doesn't seem to properly work any more.  It turns off, but the LEDs don't properly come back on, and the main signal LED stays weakly on.  Don't try holding down the reset button for 10s at a time.


Revisit Functional Test Pattern Part 6: The Purge

Enable DbContext pooling for most of the functional tests
Move all test utilities to M.EFC.TestUtilities
Refactor ITestStoreFactory
Move throwing SaveChanges test from ThrowingMonsterStateManager to OptimisticConcurrencySqlServerTest to avoid using a non-standard service
Fixes #9098

@smitpatel Updated


Popover is always shown down

Bug Report
Ionic Info
Run ionic info from a terminal/cmd prompt and paste the output below.
  ionic (Ionic CLI)          : 4.0.1
   Ionic Framework            : @ionic/angular 4.0.0-beta.3
   @angular-devkit/core       : 0.7.1
   @angular-devkit/schematics : 0.7.1
   @angular/cli               : 6.1.1
   @ionic/ng-toolkit          : 1.0.6
   @ionic/schematics-angular  : 1.0.5

Hello, see the image below

clicking on the button Popover is displayed from the button down, but in this
scenario (without space down) it should be displayed up.
Expected Behavior
Since the user's current view is what matters, the Popover should be displayed upwards when the button is on the bottom half of the screen.

I was about to post the same. I see the issue in the demo too. Weird thing is that if i am on live-reload and i edit a code when reloading it is at the correct position,
popover-arrow is a the correct position but popover-content is created on top instead of on the bottom
Also PopoverOptions is missing some props like : mode...


Use atom-package-deps

It has a method install that handles the notification and all for you. It resolves the promise when all deps are installed and enabled/activated.
Some of the linter providers are using it already, others will do it very soon.

Phew ... thanks a ton! :rose:

Published with 6.0.3 :rose:

Beautiful :rose:


Not working correctly when window is scrolled

To fix that change loupe position from fixed to absolute.
https://github.com/redoPop/loupe/blob/master/loupe.css#L17

Yeah, i confirm this bug in Firefox 50

Thanks for the report, and sorry for the delay in applying this fix. I've updated the example CSS to use position: absolute for version 2.0.1.


[Feature Request] Recurring Reminder Request

For Reminders, understand they are currently based on Odometer and/or Date.  Is there a way to put in recurring reminders (ie. every 5,000 miles, every 15,000 miles, etc)?  The idea would be that once you complete that reminder interval, system would automatically pull the next interval.
Thanks!

+1

+1 on adding a 'maintenance interval' :)

+1

This has now been added, you can now mark a Reminder as Recurring based on either odometer reading or a future date, and once the Reminder becomes past due it will automatically push itself back by the interval.
Note that this requires a lot of diligence from the user to take action on the reminder and not let it lapse.
The reminder becomes "Very Urgent" when it has less than 7 days to due date or less than 50 miles to the target odometer reading, so you'd have to intentionally ignore it for it to become past due.
Next I'm going to be working on a button that will allow users to manually push-back/refresh the reminder if they've done the service ahead of schedule.

Thanks for this.  I (and I am sure speak on behalf of others) appreciate you continuing to make improvements to this project.  It's becoming very useful with managing my home fleet (couple cars).  I DIY and I can stay on top of it and this makes it even more helpful!

Thank you for this feature! Could you change it to custom values? The preset you have set do not cover all my needs.

Next I'm going to be working on a button that will allow users to manually push-back/refresh the reminder if they've done the service ahead of schedule.

One thing that would be great is linking reminders with services so when you do the service it resets the reminder interval.

@bigbadbabey that's actually a really good idea. Also, I just inserted some of the more normal intervals, tbh it's pretty easy for me to add a new interval instead of adding a a custom interval field, so just let me know what interval you need.

At minimum what you have, 20000, 30000, 50000, 100000, and 150000, also 2 years and 3 years.

I know i have odd intervals. My first oil change will be 1000 miles then again at 5k and every 5k after that

Additional intervals added and released.

Can you also add 15000, it slipped my mind the first time.

@bigbadbabey Added :)

Any chance you could add an option for 40000 and 60000 mile intervals?  Some of my services are at those odd intervals instead of just calling it 50k.
Just found this project and love it!  Great work!

@samsclub91 added.

There is now an "Other" field for odometer intervals that will allow users to specify a custom recurring interval for odometer field. Closing this ticket since this feature is delivered.


fix "SyntaxWarning: invalid escape sequence" appearing during the tests

Nice library! While writing a report for your scipost physics codebase submission, I tried running the tests and saw a bunch of syntax warnings: invalid escape sequence ocuring from the latex strings used for MPO generation. I've marked those strings as python raw strings by prefixing them with r, hence suppressing those warnings.
(If I'm not mistaken, those warnings appear only with sufficiently recent Python versions - I tested with Python 3.12.)
Feel free to dismiss this PR if you don't think that's necessary and want to dismiss the warnings.

Thanks!
Those warnings were somewhere far on the todo (with a plan to remove "\s" from the syntax), but this also works!


Add a panel featuring the structure of the document

This is a suggestion, but I'd like to know your opinion on this. This is something that I rarely see in editors, but a panel displaying the outline/structure of the document would be nice. Maybe it could exist as a column to the left of the editor pane, with minimal styles applied. A click on a title would lead to the relevant section in the editor/viewer. Its visibility would be toggle-able, if we want more space for the editor and viewer.

I've had a couple of requests for this. Low priority at the moment but likely.

When I click on a title in the document outline, should it take me to the respective location, as suggested in the OP? The list seems interactive but it doesn't do anything for me. Tried both mouse and Enter.

It should indeed which it does for me here. Don't know what the issue could be.

Oh sorry it does jump, I was just slightly confused by the UI. After selecting the heading and pressing Esc to hide the outline, I was looking for a cursor blinking at the right location which doesn't happen for me. But when I press right arrow, left arrow and right arrow again, all is fine. (Maybe some other key sequence would work as well.)

I'll look into the cursor thing. Sounds like an activation problem.


RecursionError with v0.10.0

psygnal version: 0.10.0
Python version: 3.11.4
Operating System: Windows 11

Description
I found in a specific case, psygnal<0.10 works fine but recursion error occurs in the emission loop with 0.10.0.
What I Did
This is a simple example that class A has an evented property value and class Linker can link the values of different A instances.
from psygnal import SignalGroup, Signal

class Events(SignalGroup):
    value = Signal(int)

class A:
    def __init__(self):
        self.events = Events()
        self._value = 0

    @property
    def value(self):
        return self._value

    @value.setter
    def value(self, val: int):
        self._value = val
        self.events.value.emit(val)

class Linker:
    def __init__(self, objects: list[A]):
        self._objs = objects
        for obj in objects:
            obj.events.value.connect(self.set_values)
        self._updating = False

    def set_values(self, val: int):
        if self._updating:
            return  # avoid recursion error
        self._updating = True
        try:
            for obj in self._objs:
                obj.value = val
        finally:
            self._updating = False

a0 = A()
a1 = A()

linker = Linker([a0, a1])

a0.value = -1
assert a1.value == -1

RecursionError                            Traceback (most recent call last)
File src\psygnal\_signal.py:1014, in _run_emit_loop()

RecursionError:

During handling of the above exception, another exception occurred:

RecursionError                            Traceback (most recent call last)
Cell In[1], line 42
     38 a1 = A()
     40 linker = Linker([a0, a1])
---> 42 a0.value = -1
     43 assert a1.value == -1

Cell In[1], line 18, in A.value(self, val)
     15 @value.setter
     16 def value(self, val: int):
     17     self._value = val
---> 18     self.events.value.emit(val)

File src\psygnal\_signal.py:986, in emit()

File src\psygnal\_signal.py:1017, in _run_emit_loop()

RecursionError: RecursionError in __main__.Linker.set_values when emitting signal 'value' with args (-1,)

Hi @hanjinliu, sorry you've hit this error.
The main change that occurred in #281 was to ensure that, when a signal is emitted, all registered callbacks are called before the next emission event.  This means that if one of the callbacks also triggers an emit event of the same signal (as your value.setter does here) that emission will wait until all callbacks have been called with the first emission.  In other words, it's a bread-first callback pattern instead of a depth first callback pattern.  (more on that in a moment)
One solution that should work for you in both cases is to not emit unnecessary events in your value.setter if the value hasn't actually changed:
        @value.setter
        def value(self, val: int) -> None:
            before, self._value = self._value, val
            if val != before:
                self.value_changed.emit(val)

However, your comment prompted me to go back and check what Qt's default behavior is for calling callbacks.  And I realized it does not do a breadth-first callback pattern.  Emission of a signal immediately invokes all callbacks, even if it happens in the middle of another emit event.  For example:
from qtpy import QtCore

class Emitter(QtCore.QObject):
    sig = QtCore.Signal(int)

def cb1(value: int) -> None:
    print("cb1", value)
    if value != 2:
        emitter.sig.emit(2)

def cb2(value: int) -> None:
    print("cb2", value)

app = QtCore.QCoreApplication([])

emitter = Emitter()
emitter.sig.connect(cb1, QtCore.Qt.ConnectionType.DirectConnection)
emitter.sig.connect(cb2, QtCore.Qt.ConnectionType.DirectConnection)
emitter.sig.emit(1)

So, @Czaki, with #281, we actually changed the behavior of psygnal to be unlike Qt, and possibly be more surprising than the previous behavior.   Can you weigh in on what prompted your PR in #281, and why you think we should be calling all callbacks first before entering the second emission round?

as a slightly deeper example:
from qtpy import QtCore

class Emitter(QtCore.QObject):
    sig = QtCore.Signal(int)

def cb1(value: int) -> None:
    print("calling cb1 with", value)
    if value == 1:
        emitter.sig.emit(2)

def cb2(value: int) -> None:
    print("calling cb2 with", value)
    if value == 2:
        emitter.sig.emit(3)

def cb3(value: int) -> None:
    print("calling cb3 with", value)

app = QtCore.QCoreApplication([])
emitter = Emitter()
emitter.sig.connect(cb1)
emitter.sig.connect(cb2)
emitter.sig.connect(cb3)
emitter.sig.emit(1)

calling cb1 with 1
calling cb1 with 2
calling cb2 with 2
calling cb1 with 3
calling cb2 with 3
calling cb3 with 3
calling cb3 with 2
calling cb2 with 1
calling cb3 with 1

I could confirm that also for native objects the order is same as you spotted:
from qtpy.QtWidgets import QApplication, QListWidget

app = QApplication([])

w = QListWidget()
w.addItems(["a", "b", "c", "d", "e"])
w.currentRowChanged.connect(lambda x: w.setCurrentRow(2))
w.currentRowChanged.connect(lambda x: print("currentRowChanged", x))

w.show()
w.setCurrentRow(1)

gives:
currentRowChanged 2
currentRowChanged 1

The problem is that in such a situation you cannot depend on values emitted by signal, as the last signal contains different value than the current state in the object, that introduces inconsistency in the system.

Thanks @Czaki, your example indeed makes it very clear what the problem is with the default pattern.  So, I think we need an option flag.  There are three places where I can imagine having this (not mutually exclusive).
# defined on the signal level
class Thing:
    sig = Signal(int, depth_first=False)

t = Thing()

# declared at the connection level
t.sig.connect(print, depth_first=False)

# declared at emission time
t.sig.emit(1, depth_first=False)

... option 2 (a connection parameter) would perhaps be the weirdest one, with possibly confusing results and a more difficult implementation, but it would be the only one where the receiver gets to specify how they want to be called.
There's many ways we could go with this, and I think it's a worthwhile feature/switch.
Thoughts?

There is also a need to allow passing such selection to evented model.
I prefer declaration in constructor call Signal(int, depth_first=False)
Also qt is not consistent in order of event emmision
from qtpy.QtWidgets import QApplication, QListWidget
from qtpy.QtCore import Qt

app = QApplication([])

w = QListWidget()
w.addItems(["a", "b", "c", "d", "e"])
w.currentRowChanged.connect(lambda x: w.setCurrentRow(2), Qt.QueuedConnection)
w.currentRowChanged.connect(lambda x: print("currentRowChanged", x), Qt.QueuedConnection)

w.show()
w.setCurrentRow(1)
app.exec_()

provides
currentRowChanged 1
currentRowChanged 2

right, Qt::ConnectionType does give the connector (not the emitter) some degree of control over the order in which they will be called.  so it seems that there is probably at least a user case for both declaration in the signal with Signal(int, depth_first=False), as well as at connection time.
I'll put together a proposal

hi @hanjinliu, I just pushed v0.10.1 which should fix the recursion error you're seeing in your original example.
One can now opt-in to the new behavior with
class Events(SignalGroup):
    value = Signal(int, recursion_mode="deferred")

Hi @tlambert03 , thank you for letting me know.
Yes, it seems fixed now. It's nice that both types of signals are supported!


app crashing

When we put the camera in front of more than one barcode, it begins to crash.
scanner crash logs.txt
https://user-images.githubusercontent.com/10865512/221144835-8964f0ee-8e44-4e11-b15b-e22d32ab95f4.mp4

Thanks for using this package, @Abhinav-Satija.
      controller: MobileScannerController(
        detectionSpeed: DetectionSpeed.noDuplicates,
      ),

You need to add a controller to your code.
This issue is the same as well #32.

I hope that the issue has been resolved, and therefore, I will proceed to close it. However, if you still encounter the same issue, please do not hesitate to reopen it.


Focus issue related to abstract modal when using VoiceOver on iOS

Bug Report
Description
When opening the abstract modal with VoiceOver on iOS, no indication is given that a modal dialog has been opened. It also seems that focus is not shifted into the modal, nor is focus trapped within the modal. Users can continue interacting with the DOM that appears behind the modal.
Steps to Reproduce

Go to terra-ui.com
Select Components
Select Abstract modal
Open first abstract modal example

Expected Behavior
Focus should move to modal and be trapped within modal until it's closed.

Resolved in https://github.com/cerner/terra-core/pull/2017
Tested with VoiceOver on iOS, focus is shifted to modal when it is opened.
Foucs is also trapped inside of modal minus one small bug. It seems you can get the virtual focus to read the text on the npm badge while the modal is open. This really odd as the badge is an <img /> element, so I'm suprised VO is able to read the text from it. I believe this is a bug in Safari / VO, not in our implementation.
Counting this as resolved.


[ENH] remove fit_params kwargs throughout the code base

As pointed out by @Vasudeva-bit, some estimators were still using a fit_params kwarg in _fit.
This is non-compliant with the interface spec, but did not cause any errors since never anything was passed by kwargs.
This PR simply removes any fit_params kwargs and concomitant logic from the code base.
Needs no deprecation, since:

the interface spec is clear and the args occurred only in private functions, with one exception.
evaluate had the arg, but when used it would error out since no fit actually had the arg, so deprecation is also not necessary here (because we are changing from an "error causing argument" to "no argument", hence no one will have relied on it).

Did you check what those params could have been?

As far as I saw, only occurred in compositors, and logic passing the kwargs from composite interfaces to component interfaces.

I checked for Prophet, and yes that **kwargs in _fit() were actually not reachable due to inner call in fit()

@aiwalter, are there any Prophet args which we are missing due to this?

Added prophet to the issue https://github.com/alan-turing-institute/sktime/issues/2344

@aiwalter, this has now come up so often, I've added a paragraph to extension templates in _fit - do you think that's a good idea?

yes, seems many dependency packages are doing this, so we have to add it to constructor. Makes sense to add it to template. Thx


Enter wrong pod when using "global filtering by resource name"

Describe the bug
When I filter pods by pressing f "global filtering by resource name", when I highlight the pod I want to enter with the arrow keys, then press enter to enter the pod, I enter a completely different pod.  It appears that the index from the list of unfiltered pods list is still getting used to select which pod to enter.
To Reproduce
Steps to reproduce the behavior or a screencast

on pod resource pane
apply global filter
highlight pod and note name
Enter
Note pod entered is not the same

Expected behavior
Enter the correct pod
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):

OS and OS version: Debian GNU/Linux 12 (bookworm) on Windows 10 x86_64 Kernel: <IP_ADDRESS>-microsoft-standard-WSL2
Terminal name and version : WSL Relay(32540)
Shell name and version:  bash 5.2.15
Kubectl Client Version: 1.29
Kubectl Server Version: 1.29
KDash version: 0.6.0

I can confirm that the pod that was highlighted before applying the filter is the pod that is entered after applying the filter.  If I use the arrow keys to move the selection highlight one pod down, and enter that pod, I still don't enter into the selected pod shown, but instead enter into the second pod from the un-filtered list of pods.
Therefore, the index or list used to enter into a pod is not getting updated after filtering the list of pods.

Good catch. I'll look into it when I'm free. Thanks for reporting it
Thanks & Regards,
Deepu
On Fri, Mar 8, 2024 at 4:43 PM clayms @.***> wrote:

I can confirm that the pod that was highlighted before applying the filter
is the pod that is entered after applying the filter. If I use the arrow
keys to move the selection highlight one pod down, and enter that pod, I
still don't enter into the selected pod shown, but instead enter into the
second pod from the un-filtered list of pods.
Therefore, the index or list used to enter into a pod is not getting
updated after filtering the list of pods.
—
Reply to this email directly, view it on GitHub
https://github.com/kdash-rs/kdash/issues/445#issuecomment-1985920681,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAIOKF3QB32CLP2QOE3DVGLYXHMA5AVCNFSM6AAAAABEMZ6YMOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSOBVHEZDANRYGE
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>


unknown data

im using google chrome

Hi, thanks for filing this issue.
Can you, please, provide the user agent string from the version of Google Chrome used?
What does the following print in the browser console?
console.log(navigator.userAgent);

Am also having the same issue.. all I see is unknown.

@Filliposniper Can you, please post the value of navigator.userAgent executed in the browser console? Which browser/OS is this problem reproducible with?

Closing the issue since no specific user agent strings were provided/inactivity. Will try to update the library with the most recent user agent strings


Crash with trie when using values >= 128?

This bug was reported previously but I don't think it was fixed.

Looks like this was already fixed in 3b36094612b182fdde81cca79abd23d8dfe72648.


Use h2 on achievements not bold.

This was a mostly-spurious commit to get something onto prod but I see it's already there.


[SURE-9138] rke2-control-plane-system: unable to lookup or create cluster certificates, external certificate not found: secrets "cluster-etcd" not found

SURE-9138
Issue description:
The customer is seeing the following error:
E0916 12:43:13.582966 1 workload_cluster.go:118] "Collecting etcd key pair from remote" controller="rke2controlplane" controllerGroup="controlplane.cluster.x-k8s.io" controllerKind="RKE2ControlPlane" RKE2ControlPlane="rke2test/rke2test-master" namespace="rke2test" name="rke2test-master" reconcileID="b94f1a99-df21-4d73-aaa5-cb7e1a69a1a3"
E0916 12:43:13.603661 1 management_cluster.go:171] "unable to lookup or create cluster certificates" err="external certificate not found: secrets \"cluster-etcd\" not found" controller="rke2controlplane" controllerGroup="controlplane.cluster.x-k8s.io" controllerKind="RKE2ControlPlane" RKE2ControlPlane="rke2test/rke2test-master" namespace="rke2test" name="rke2test-master" reconcileID="b94f1a99-df21-4d73-aaa5-cb7e1a69a1a3"

We told them that this should be a transient error during the provisioning phase [1] but they are reporting that this issue not only during the provisioning phase, but also in stable clusters even weeks after the cluster was deployed.

/cc @Danil-Grigorev - since you did the initial assessment when this bug was initially reported via Slack 😉

@kkaempf As per discussion in slack - this is fixed in 0.7.1 CAPRKE2 release with combination of https://github.com/rancher/cluster-api-provider-rke2/pull/451 and https://github.com/rancher/cluster-api-provider-rke2/pull/453. Users will need to upgrade to this version later, we might need the version pinned in turtles release also.

Turtles release v0.13.0 which under the hood uses CAPRKE2 v0.8.0 (includes bug-fixes that 0.7.1 provides) was released and this could be closed or hold also until it is tested and verified it fixes their issue.

Able to reproduce the issue on turtles v0.10.0 (caprke2 v0.4.1) which was upgraded from turtles v0.7.0 (rke2 v0.2.6)
I1125 08:47:02.524386       1 management_cluster.go:158] "Local secret is not up-to-date, skipping etcd client creation" controller="rke2controlplane" controllerGroup="controlplane.cluster.x-k8s.io" controllerKind="RKE2ControlPlane" RKE2ControlPlane="default/cluster1-control-plane" namespace="default" name="cluster1-control-plane" reconcileID="b89b32ee-db71-4f4a-8f04-2c0b5a3dd7ae"
2024-11-25T08:47:02.524602706Z I1125 08:47:02.524428       1 workload_cluster.go:118] "Collecting etcd key pair from remote" controller="rke2controlplane" controllerGroup="controlplane.cluster.x-k8s.io" controllerKind="RKE2ControlPlane" RKE2ControlPlane="default/cluster1-control-plane" namespace="default" name="cluster1-control-plane" reconcileID="b89b32ee-db71-4f4a-8f04-2c0b5a3dd7ae"
E1125 08:47:02.528014       1 management_cluster.go:171] "unable to lookup or create cluster certificates" err="external certificate not found: secrets \"cluster-etcd\" not found" controller="rke2controlplane" controllerGroup="controlplane.cluster.x-k8s.io" controllerKind="RKE2ControlPlane" RKE2ControlPlane="default/cluster1-control-plane" namespace="default" name="cluster1-control-plane" reconcileID="b89b32ee-db71-4f4a-8f04-2c0b5a3dd7ae"

After upgrading to turtles v0.13.0 (caprke2 v0.8.0) the error is not present in the logs.
@furkatgofurov7 @Danil-Grigorev Please review the issue for closure.

0.13.0 fixes it, and the verification passed? I don’t see issues with closing, that should be with the version 0.8.0 which has the fix.


Detect diseases from close up images of tomatoes

Detect diseases from close up images of tomatoes using transfer learning techniques.
Closes #109

I'll review once you implemented the changes we discussed earlier today @mirceatlx


SyntaxWarning: "is not" with a literal

fresh installation.
docker exec -t waldur-mastermind-worker status
INFO: Running Mastermind status check...
/usr/local/lib/python3.11/site-packages/glanceclient/common/http.py:171: SyntaxWarning: "is not" with a literal. Did you mean "!="?
  if kwargs.get('cacert', None) is not '':
Checking Waldur MasterMind services...
 - Database PostgreSQL connection            [OK]
 - Task runners (Celery workers)             [OK]
 - Queue and cache server (Redis) connection [OK]
API endpoints check skipped

Hi, yes, we are aware - caused by the older openstack dependency that we need to maintain for a some month more.


Update all roles with tags template,service,package

Hello,
We need to add tag in main task.
Regards

Dear @hmeAtos
Thank you for this PR. merging.
Ben


Sample systems should not reference "player" component

looks like this was fixed at some point, cool.


Bug fix: If S3 endpoint is not specified use default resolver

Bug fix: If S3 endpoint is not specified use default resolver.
It is related to PR #422.

Leave a comment


Terminal window content, wordwrapped content is not suitable for "problemsMatcher" integration

VSCode Version: Code 1.16.1 (27492b6bf3acb0775d82d2f87b25a93490673c6d, 2017-09-14T16:38:09.760Z)
OS Version: Windows_NT ia32 10.0.15063
Extensions:

Extension
Author (truncated)
Version

ng-template
Ang
0.1.7

vscode-eslint
dba
1.3.2

githistory
don
0.2.3

gitlens
eam
5.2.0

tslint
eg2
1.0.9

vscode-npm-script
eg2
0.2.1

Angular2
joh
2.7.0

debugger-for-chrome
msj
3.3.0

I have a problem with the multiline problemsMatcher and word wrapped results in the terminal console.
When I integrate jasmine error reports to vscode "problems" tab and my vscode window is small, the reported error lines are cut at the visual width of the terminal window. Because multiline pattern matching works line by line, those wrapped lines doesn't contains whole information and  are not consistent any more with my pattern matching regex expressions.
Is there any way to disable word wrapping in the terminal window or do you have any other workaround maybe ?
I tested with two different terminals (Git Bash and win. PowerShell), because both have the same behavior I think the wrapping is at the vscode side ?
Steps to Reproduce:
I describe whole integration between jasmine and vscode in this blog article

create project with jasmine tests, run jasmine in the terminal successfully, then

create task with the content:
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"command": "run",
"args": [],
"tasks": [
{
"taskName": "test",
"command": "node_modules/.bin/jasmine",
"type": "shell",
"isBackground": true,
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "dedicated"
},
"problemMatcher": {
"owner": "javascript",
"fileLocation": ["absolute"],
"severity": "error",
"pattern": [
{
"regexp": "Message."
},
{
"regexp": "^ ",
"message": 1
},
{
"regexp": "Stack."
},
{
"regexp": "at +.\((.\\*.ts):(\d+):(\d+)\)",
"file": 1,
"line": 2,
"column": 3
}
]
}
}
]
}

run the task with maximized size of the terminal window , pattern matcher does recognize errors and create problem in the problems tab
An error line (where the last regex pattern looks for file, line and column) looks like:

        at UserContext.it (c:\Bisaga\Workspaces\learning\mytest\spec\myapi-spec.ts:16:32)

run the task with very narrow size of the terminal window, pattern matcher does not recognize errors any more because the error line reported from the jasmine is now in 3 lines ...
An error line from jasmine is now in the 3 lines instead of the one :

        at UserContext.it (c:\Bisaga\Worksp
aces\learning\mytest\spec\myapi-spec.ts:16:
32)

Reproduces without extensions: Yes

Duplicate https://github.com/Microsoft/vscode/issues/32042


Switch to newer GPU CI images

[ ] Closes #xxxx
[ ] Tests added / passed
[ ] Passes pre-commit run --all-files

rerun tests

rerun tests

rerun tests


OpenShift not seeing latest driver version

Hello, my OpenShift instance shows version 2.1.0 as the latest and is not detecting 2.1.1. Is there anything I need to do to update to 2.1.1?

Maybe your subscription to OperatorHub isn't updating. I just confirmed 2.1.3 is visible in my 4.8 cluster.

Is it supposed to show automatically, or do I need to uninstall/reinstall/manual upgrade?


Add exit

This PR adds support for the exit command to frawk, which should close out #71
Most of the complexity here is around providing useful semantics for exit when it is invoked from a parallel script. The overall strategy here is that if exit is called from a worker thread it will cut off input for all other threads, leading them to hopefully exit early. At that point, the main thread can do an orderly shutdown with the proper exit code.

Thank you for catching that! Updated the text.


Development: Remove unused knowledge functionality

Checklist
General

[ ] I tested all changes and their related features with all corresponding user types on a test server.
[x] I chose a title conforming to the naming conventions for pull requests.

Server

[x] Important: I implemented the changes with a very good performance and prevented too many (unnecessary) database calls.
[x] I followed the coding and design guidelines.
[x] I documented the Java code using JavaDoc style.

Motivation and Context

I removed unused functionality which is not needed anymore. This simplifies code
I made the deletion of text and modeling exercises more consistent
Additionally, this PR improves server test quality by automatically converting search results instead of using Linked HashMaps.
I prepared some annotations for the Spring Boot 3 / Hibernate 6 update (in particular, DiscriminatorOptions are not needed)

Steps for Testing

Prerequisites:

1 Instructor
1 Student

Create a text and modeling exercise (course)
Participate in the new exercises and check that everything works as usual
Import a text and modeling exercise (course)
Participate in the imported exercises and check that everything works as usual
Delete the exercises and make sure it works without issues

Exam Mode Testing

Prerequisites:

1 Instructor
1 Student

Create a text and modeling exercise (exam)
Participate in the new exercises and check that everything works as usual
Import a text and modeling exercise (exam)
Participate in the imported exercises and check that everything works as usual
Delete the exercises or the exam and make sure it works without issues

Review Progress

Performance Review

[ ] I confirm that the server changes (in particular related to database calls) are implemented with a very good performance

Code Review

[ ] Code Review 1
[ ] Code Review 2

Manual Tests

[ ] Test 1
[ ] Test 2

Exam Mode Test

[ ] Test 1
[ ] Test 2

Test Coverage
no actual changes as mostly code was removed

Codecov Report

Merging #6600 (a176301) into develop (930b704) will decrease coverage by 0.02%.
The diff coverage is 100.00%.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
Additional details and impacted files
@@              Coverage Diff              @@
##             develop    #6600      +/-   ##
=============================================
- Coverage      80.51%   80.50%   -0.02%
- Complexity     13293    13312      +19
=============================================
  Files           2362     2361       -1
  Lines          90526    90659     +133
  Branches       13355    13383      +28
=============================================
+ Hits           72885    72983      +98
- Misses          9710     9728      +18
- Partials        7931     7948      +17

Impacted Files
Coverage Δ

...n/java/de/tum/in/www1/artemis/domain/Exercise.java
86.27% <ø> (ø)

...java/de/tum/in/www1/artemis/domain/Submission.java
76.11% <ø> (ø)

.../java/de/tum/in/www1/artemis/domain/TextBlock.java
100.00% <ø> (ø)

...um/in/www1/artemis/domain/hestia/ExerciseHint.java
100.00% <ø> (ø)

...um/in/www1/artemis/domain/lecture/LectureUnit.java
92.59% <ø> (ø)

.../in/www1/artemis/domain/modeling/ModelElement.java
92.30% <ø> (-1.45%)
:arrow_down:

...www1/artemis/domain/notification/Notification.java
74.19% <ø> (ø)

...w1/artemis/domain/participation/Participation.java
78.78% <ø> (ø)

...w1/artemis/domain/plagiarism/PlagiarismResult.java
100.00% <ø> (ø)

...domain/plagiarism/PlagiarismSubmissionElement.java
75.00% <ø> (ø)

... and 31 more

... and 30 files with indirect coverage changes

Flag
Coverage Δ

client
76.52% <ø> (+0.01%)
:arrow_up:

server
84.93% <100.00%> (-0.05%)
:arrow_down:

Continue to review full report in Codecov by Sentry.

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


browser cookies dont get changed

I have a website that requires change of cookies
(a post request to server and server replies with headers to set cookies )
here is response headers that supposed to be from chrome browser
HTTP/1.1 200 OK
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
user: 8888
lg: 2673
x-frame-options: SAMEORIGIN
x-download-options: noopen
Set-Cookie: BrandingUserLocationGroupID=ic4DUh/NXVp8VOKAtyDgbA==; expires=Fri, 01-Sep-2017 17:01:16 GMT; path=/; secure; HttpOnly
Set-Cookie: .AUTH=A69C1A5EE8A5F3626385F35DA1B104EE7DFF5E5AF549DDB02EE8ED53931A0585C0FBB8299E3FC7B428A982B9826EF68390E659F4A74DCE00E195601F400D6E69F53907DADED4194F32DD08A72BA212DCCD0D23AB7C5BD56171E6C55EF1BE90849E9C81B2DAE23B05CA6E361326F44604; expires=Thu, 03-Aug-2017 17:01:17 GMT; path=/; secure; HttpOnly
Server: Unknown
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Strict-Transport-Security: max-age=31536000;includeSubDomains
Date: Wed, 02 Aug 2017 17:01:17 GMT
Content-Length: 335
here is my post request
browser.session.headers['X-Requested-With']='XMLHttpRequest'
browser.open('https://example.com/test/Users/set-role?id='+role_id+'&__RequestVerificationToken='+token,method='POST')
print browser.response.content
this gives me error response as following
{"RedirectUrl":null,"IsSuccess":false,"Message":"Save Failed","CustomMessage":null,"Errors":[{"Key":"","Value":["An error has occurred. This error has automatically been saved for further analysis. Please contact technical support."]}],"Messages":{},"HasView":false,"ViewHtml":null,"ViewUrl":null,"IsValidationException":false,"IsValidationWarning":false,"ReloadPage":false,"IsSessionExpired":false,"Script":null,"NextWizardUrl":null,"PreviousWizardUrl":null,"ShowDialog":false}
anyone knows how to fix it?
thanks

from robobrowser import RoboBrowser

# Create a RoboBrowser instance
browser = RoboBrowser()

# Open the URL
url = 'https://example.com/test/Users/set-role?id=' + role_id + '&__RequestVerificationToken=' + token
browser.open(url)

# Modify the browser's cookies dictionary with the desired values
browser.session.cookies['BrandingUserLocationGroupID'] = 'new_value_for_BrandingUserLocationGroupID'
browser.session.cookies['.AUTH'] = 'new_value_for_AUTH'

# Perform the POST request again (or your desired action)
browser.open(url, method='POST')

# Print the response content
print(browser.response.content)


[Proposal] Better Documentation About Providers/Cloud Files

Is your feature request related to a problem? Please describe.
Yes, I saw a lot of open Issues about gathering the informations from providers / clouds:
#336
#331
#318
#304
#293
Almost all of them is lack of information or missing column, etc.
I think the root of problem is that providers has many reports types from many places:
Azure:

through the Partner Center portal:

LicenseBasedLineItem
UsageBasedLineItem
UnbilledReconciliationLineItems

through Azure portal:

MOSP Azure subscription invoice
MCA or MPA billing profile invoice
Usage for MOSP billing accounts
Usage for EA customers
Usage for MCA

AWS:

through AWS Billing and Cost Management portal:

CUR 1
CUR 2

GCP:

through Google Cloud Console/Cloud Billing:

Standard usage cost data
Detailed usage cost data
Pricing data

through Partner Sales Console:

(Resellers only) Rebilling data export

Describe the solution you'd like
I believe that we should better document what each transform is related to. Since Providers has many types, from many places.
The issues created probably is because someone doesn't have access to the correct report and are exporting one that is not mapped. It can be solved by providing a better understaing where to gather the information.
Describe alternatives you've considered
Additional context

@varunmittal91 what you think?

I have also encountered the issue of missing columns when retrieving reports from different places within the same cloud provider. I agree with the solution provided by @mirusky. The best approach is to either define a standardized report format for the converter or specify the report type using an input variable (e.g., --report-source) to handle this issue effectively.

Thank you @Viha27 and @mirusky
I am sorry for being away.
I like the idea, can I please request you to create a pr on some dimensions.
We can start with a handful of dimensions (may be even 3) and iron out the details on what the format could looks like.
Also, I was wondering for some dimensions like ListUnitPricing, we would need support for api calls and would need to add
custom calls. So this format could also become a full blown plugin system.
I am also super curious to create this as a template for vendors to be able to pick up this as a base library for general transforms.
I am back and working again, please let me know how can I be helpful.

Hi @varunmittal91
By dimensions what you mean?
For sure I could provide some examples and how each file / API is returning data, what column exists and the ones that doesn't exists. This could help the FOCUS team in development, even the open issues with some kind of workaround.

I am also super curious to create this as a template for vendors to be able to pick up this as a base library for general transforms.

Yeah, this would be amazing. I'm not familiar with python itself, but I can help with some ideas and perhaps test data.

Sorry, @mirusky by dimensions I meant columns.
That will be really awesome, please let me know how can we can collaborate on certain columns/providers.

I suggest is to either select a standardized report format from each cloud provider for the converter or specify the report source using an input variable (e.g., --report-source) to handle this issue effectively. This should lead to a discussion and agreement with a specific vendor on providing cost data reports with particular columns. Otherwise, implementing exception handling for missing data columns will result in non-value/null columns, which is not meaningful.
Why don't we focus on selected API responses instead of report types? We could define specific API endpoint support for converters from particular vendors (e.g., https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Consumption/usageDetails?api-version=2018-03-31&$expand=properties/additionalProperties).

I'll work on GCP today, I will try to map the Standard and Detailed Usage ( they are pretty similar, just a few columns different ).
I'm not sure where should I put the files itself so I'll provide an response here and then we could move on to a PR.

I don't know the current format that is being expected by the converter, so I've just listed it to show the diference between  them.

Current
Standard
Detailed
Resellers

adjustment_info
adjustment_info
adjustment_info

adjustment_info.description
adjustment_info.description
adjustment_info.description

adjustment_info.id
adjustment_info.id
adjustment_info.id

adjustment_info.mode
adjustment_info.mode
adjustment_info.mode

adjustment_info.type
adjustment_info.type
adjustment_info.type

billing_account_id
billing_account_id
billing_account_id
billing_account_id

channel_partner_cost

channel_partner_name

channel_partner_repricing_config_name

cost
cost
cost
cost

cost_at_list
cost_at_list
cost_at_list
cost_at_list

cost_type
cost_type
cost_type
cost_type

credits
credits
credits
credits

credits.amount
credits.amount
credits.amount
credits.amount

credits.channel_partner_amount

credits.customer_amount

credits.full_name
credits.full_name
credits.full_name

credits.id
credits.id
credits.id

credits.name
credits.name
credits.name

credits.type
credits.type
credits.type

currency
currency
currency
currency

currency_conversion_rate
currency_conversion_rate
currency_conversion_rate

customer_correlation_id

customer_cost

customer_name

customer_repricing_config_name

entitlement_name

export_time
export_time
export_time

invoice.month
invoice.month
invoice.month
invoice.month

labels.key
labels.key
labels.key

labels.value
labels.value
labels.value

location.country
location.country
location.country

location.location
location.location
location.location
location.location

location.region
location.region
location.region
location.region

location.zone
location.zone
location.zone
location.zone

payer_billing_account_id

price
price

price.effective_price
price.effective_price

price.pricing_unit_quantity
price.pricing_unit_quantity

price.tier_start_amount

price.tier_start_amount
price.tier_start_amount

price.unit
price.unit

project
project
project

project.ancestors
project.ancestors
project.ancestors

project.ancestors.display_name
project.ancestors.display_name
project.ancestors.display_name

project.ancestors.resource_name
project.ancestors.resource_name
project.ancestors.resource_name

project.ancestry_numbers
project.ancestry_numbers
project.ancestry_numbers

project.id
project.id
project.id

project.labels.key
project.labels.key
project.labels.key

project.labels.value
project.labels.value
project.labels.value

project.name
project.name
project.name

project.number
project.number
project.number

resource
resource

resource.global_name

resource.global_name
resource.global_name

resource.name

resource.name
resource.name

seller_name
seller_name
seller_name
seller_name

service.description
service.description
service.description
service.description

service.id
service.id
service.id

sku.description
sku.description
sku.description

sku.id
sku.id
sku.id
sku.id

subscription
subscription

subscription.instance_id
subscription.instance_id

system_labels.key
system_labels.key
system_labels.key

system_labels.value
system_labels.value
system_labels.value

tags
tags
tags

tags.inherited
tags.inherited
tags.inherited

tags.key
tags.key
tags.key

tags.namespace
tags.namespace
tags.namespace

tags.value
tags.value
tags.value

transaction_type
transaction_type
transaction_type

usage.amount
usage.amount
usage.amount
usage.amount

usage.amount_in_pricing_units
usage.amount_in_pricing_units
usage.amount_in_pricing_units
usage.amount_in_pricing_units

usage.pricing_unit
usage.pricing_unit
usage.pricing_unit
usage.pricing_unit

usage.unit
usage.unit
usage.unit
usage.unit

usage_end_time
usage_end_time
usage_end_time
usage_end_time

usage_start_time
usage_start_time
usage_start_time
usage_start_time

@mirusky did you try the converter with these GCP formats? I am curious about it outputs. I might try with Azure

@bahung I didn't tried to run but I think the standard GCP report is broken because it doesn't contains price.tier_start_amount, resource.global_name and resource.name but the others ( detailed and resellers ) are good.
Azure I didn't have time to gather all the reports types availables to create a similar table. But I would love to see a column mapping between each report type.

@mirusky, sorry for being late. Here is a comparison of Azure EA columns with those outputted by the converter tool.

df_azure_EA
df_azure_out

AccountName
AccountName
AccountName

AccountOwnerId
AccountOwnerId
AccountOwnerId

AdditionalInfo
AdditionalInfo
AdditionalInfo

AvailabilityZone
AvailabilityZone
AvailabilityZone

BilledCost
nan
BilledCost

BillingAccountId
BillingAccountId
BillingAccountId

BillingAccountName
BillingAccountName
BillingAccountName

BillingCurrency
BillingCurrency
BillingCurrency

BillingCurrencyCode
BillingCurrencyCode
BillingCurrencyCode

BillingPeriodEnd
nan
BillingPeriodEnd

BillingPeriodEndDate
BillingPeriodEndDate
BillingPeriodEndDate

BillingPeriodStart
nan
BillingPeriodStart

BillingPeriodStartDate
BillingPeriodStartDate
BillingPeriodStartDate

BillingProfileId
BillingProfileId
BillingProfileId

BillingProfileName
BillingProfileName
BillingProfileName

ChargeCategory
nan
ChargeCategory

ChargeDescription
nan
ChargeDescription

ChargeFrequency
nan
ChargeFrequency

ChargePeriodEnd
nan
ChargePeriodEnd

ChargePeriodStart
nan
ChargePeriodStart

ChargeType
ChargeType
ChargeType

CommitmentDiscountCategory
nan
CommitmentDiscountCategory

CommitmentDiscountId
nan
CommitmentDiscountId

CommitmentDiscountName
nan
CommitmentDiscountName

CommitmentDiscountType
nan
CommitmentDiscountType

ConsumedQuantity
nan
ConsumedQuantity

ConsumedService
ConsumedService
ConsumedService

ConsumedUnit
nan
ConsumedUnit

Cost
Cost
Cost

CostAllocationRuleName
CostAllocationRuleName
CostAllocationRuleName

CostCenter
CostCenter
CostCenter

CostInBillingCurrency
CostInBillingCurrency
CostInBillingCurrency

Date
Date
Date

EffectiveCost
nan
EffectiveCost

EffectivePrice
EffectivePrice
EffectivePrice

Frequency
Frequency
Frequency

InvoiceIssuer
nan
InvoiceIssuer

InvoiceSection
InvoiceSection
InvoiceSection

InvoiceSectionId
InvoiceSectionId
InvoiceSectionId

IsAzureCreditEligible
IsAzureCreditEligible
IsAzureCreditEligible

ListCost
nan
ListCost

ListUnitPrice
nan
ListUnitPrice

MeterCategory
MeterCategory
MeterCategory

MeterId
MeterId
MeterId

MeterName
MeterName
MeterName

MeterRegion
MeterRegion
MeterRegion

MeterSubCategory
MeterSubCategory
MeterSubCategory

OfferId
OfferId
OfferId

PartNumber
PartNumber
PartNumber

PayGPrice
PayGPrice
PayGPrice

PlanName
PlanName
PlanName

PricingCategory
nan
PricingCategory

PricingModel
PricingModel
PricingModel

PricingQuantity
nan
PricingQuantity

PricingUnit
nan
PricingUnit

Product
Product
Product

ProductName
ProductName
ProductName

ProductOrderId
ProductOrderId
ProductOrderId

ProductOrderName
ProductOrderName
ProductOrderName

Provider
nan
Provider

Publisher
nan
Publisher

PublisherName
PublisherName
PublisherName

PublisherType
PublisherType
PublisherType

Quantity
Quantity
Quantity

RegionId
nan
RegionId

ReservationId
ReservationId
ReservationId

ReservationName
ReservationName
ReservationName

ResourceGroup
ResourceGroup
ResourceGroup

ResourceId
ResourceId
ResourceId

ResourceLocation
ResourceLocation
ResourceLocation

ResourceName
ResourceName
ResourceName

ResourceType
nan
ResourceType

ServiceCategory
nan
ServiceCategory

ServiceFamily
ServiceFamily
ServiceFamily

ServiceInfo1
ServiceInfo1
ServiceInfo1

ServiceInfo2
ServiceInfo2
ServiceInfo2

ServiceName
nan
ServiceName

SkuId
nan
SkuId

SkuPriceId
nan
SkuPriceId

SubAccountId
nan
SubAccountId

SubAccountName
nan
SubAccountName

SubscriptionId
SubscriptionId
SubscriptionId

SubscriptionName
SubscriptionName
SubscriptionName

Tags
Tags
Tags

Term
Term
Term

UnitOfMeasure
UnitOfMeasure
UnitOfMeasure

UnitPrice
UnitPrice
UnitPrice

benefitId
benefitId
benefitId

benefitName
benefitName
benefitName

I believe that in addition to better documentation around how to set up the cost export, the conversion process will, at least eventually, need to support the different agreement types and schema versions for Azure.
It looks like the conversion configs for azure were developed against a specific version of the EA (enterprise agreement) schema -evident in the PascalCase field names.
The schema for MCA and a couple others use camelCase.
Also, each agreement schema's versions have different fields. For example, MCA 2019-11-01 does not have ProductName for (which is mapped to the ChargeDescription) but has an equivalent field product. The next MCA version, does have ProductName.
I'm not suggesting adding conversion configs for each historical agreement type, though it would be nice. I suggesting that, going forward, the conversion configs should be made schema-version specific.
Given the current project structure, it would probably be quite a maintenance problem to duplicate the configs for each
provider's schema-versions (I don't know if schema-version issues are isolated to Azure), so perhaps a normalization process should be introduced. Normalization might mean detecting the version of the schema in each file and applying transformations to adjust the incoming data to match the conversion config's ideal provider-schema-version.
Here are a couple of reasons for this approach.

Normalization step - I found that adjusting the configs from their current state to work for a 2019-11-01 schema required only about 6 adjustments, including switching to pascal case. ~6 adjustments per schema would be a lot less to maintain than an entire unique conversion config per schema-version.
Auto-detecting needed adjustments - The suggestion is to use key features of the incoming file to identify its schema-version. I would say that the user should simply pass the schema-version as an arg (e.g., instead of "azure" as the provider, pass "azure-mca-2021-10-01"), however, I have not found an easy way in azure for a user to find the schema version. Short of auto-detecting the version, the next best option might be to provide some documentation, some guidance to help the user figure out the version. For example, "Check the column headers. If the 27 column is Product with an uppercase P, this is version 2019-10-01. If the 27 column is product with a lowercase P, the is version 2019-11-01. If the 27 column is "ProductName" and there are a total of 62 columns, this is version 2021-01-01. etc."


Suggested Changes

Here are some of my suggested changes put into a PR such that you can give some comments line by line with the review tool.
It is not aimed to be merged but it's perfectly fine to do so.

Better read it from the bottom to the top.

沒想到你還真的 merge 了😂

沒想到你還真的 merge 了joy

都是提升代碼質量的改動，正好發佈 0.13.1 就全 merge 了（ww


Cg/test helper

Including test methods that we require from coverage for building a request such as Get, Do, Head, Post, PostForm, and whether json is valid vs invalid.

This looks good. Cleaned up extra files. One thing to take a look at is the rules at the bottom being merged. Not sure if necessary or already done.


Fix and Re-Apply automated Updated

I've just reverted Update https://github.com/gitpod-io/observability/commit/56ea3a7cad6058b8aa4a2b4bcb1d320d32e967a1 because it broke Prometheus on the meta clusters. The Prometheus pods were no longer starting via an error message

create Pod prometheus-k8s-0 in StatefulSet prometheus-k8s failed error: pods "prometheus-k8s-0" is forbidden: PodSecurityPolicy: unable to admit pod: [spec.volumes[1]: invalid value: "projected": projected volumes are not allowed to be used] ".

Du to the error, we do not have monitoring data for the meta clusters from 2022-01-01 18:51 to 2022-01-02 10:07 UTC.

The error messages sounds related to https://github.com/gitpod-io/observability/issues/52

yes, seems to be the same.


quoted/indented messages get garbled in long Re:threads

Describe the bug
corresponding with some mail clients that do indent parent message text results in "infinite" scrolling through single-letter lines. Im essense message gets printed vertically one letter per line.
In particular noticed with Apple Mail
To Reproduce
Steps to reproduce the behavior:

send a message to yourself
reply to yourself multiple times with some 'lorem ipsum' text
at certain point scrolling will reveal single-character lines

Expected behavior
either some word-wrapping or side-scrolling will need to be applied
Screenshots

Environment (please complete the following information):

K-9 Mail version: 5.600
Android version: LineageOS 17.1 (unoficcial build)
Device: Samsung Galaxy S7
Account type: POP3

Additional context
Logs
Please take some time to retrieve logs and attach them here:

Is this still an issue with the latest beta version? See https://forum.k9mail.app/t/how-do-i-become-a-beta-tester/68

Hm not sure which beta is currently in development but I just wanted to add that in version 6.0.0 it's marginally better because it doesn't wrap at every letter anymore but still at every word even though there would be more available space to the right. So it's still not very usable.


TransferOwnership doesnt work correct

Describe the bug
Want to transfer ownership of former employee documents
To Reproduce
Steps to reproduce the behavior:
 Get-GSDriveFileList -User<EMAIL_ADDRESS>| ForEach-Object { Add-GSDrivePermission -User $_.User -FileID $_.Id -Verbose -Type User -EmailAddress<EMAIL_ADDRESS>-TransferOwnership -Confirm:$false -Role Owner }

 Get-GSDriveFileList : Exception calling "Execute" with "0" argument(s): "Google.Apis.Requests.RequestError
Invalid Credentials [401]
Errors [
	Message[Invalid Credentials] Location[Authorization - header] Reason[authError] Domain[global]
]
"
At C:\Scripts\PSGSuite\GSuiteManagement.ps1:61 char:1
+ Get-GSDriveFileList -User<EMAIL_ADDRESS>| ForEach-Objec ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Get-GSDriveFileList

Expected behavior
Just transfer all documents to another user
Environment (please complete the following information):

OS:  WINDOWS 2016
PowerShell Version:    5.1.14393.3053
PSGSuite Version:   2.36.4

Additional context
I think about different domain or something like this, BUT:
Get-GSUserLicense -User<EMAIL_ADDRESS>-CheckAll

 Etags       : "emikGzFKhWQh**********piNz9pFz_4_jwI"
Kind        : licensing#licenseAssignment
ProductId   : Google-Vault
ProductName : Google Vault
SelfLink<EMAIL_ADDRESS>SkuId       : Google-Vault-Former-Employee
SkuName     : Google Vault - Former Employee
UserId<EMAIL_ADDRESS>ETag        : "emikGzFKhWQh**********piNz9pFz_4_jwI"

Two things here @pompushko:

Vault license disables the Drive service for the account, which is why you're getting the Credentials error. You'll need to reinstate the user license first, then reset the license to VFE once transfer is complete.
If you're transferring everything, you're going to have a much easier time using Start-GSDataTransfer:

Start-GSDataTransfer -OldOwnerUserId $oldUserEmail -NewOwnerUserId $newUserEmail -ApplicationId (Get-GSDataTransferApplicationList | Where-Object {$_.Name -like '*Drive*'}).Id -PrivacyLevel SHARED -Verbose

Yeah. Looking good. Thank you!


Add option to emit sub claim for Client Credentials flow

to be compliant with JWT profile

defaults to not send it in v4


Example slack bot

This PR replaces #96
I suppose that the stuff from orbs-client.ts could be moved to orbs-javascript-sdk because it's a duplicate of what we have in E2E.

@netoneko please give me a couple of days to integrate Orbs addresses to the bot (I'll add it as soon as the first PR is merged). I'll also add a "get my address" FTW.


[Browser] Define the support browser runtimes

As part of SDK 2.0 discussion we should define the minimum supported browser type runtime.
ie. Not just the supported browsers but the language feature set for those browser runtimes
This would then include native or frameworks that "provide" a browser style environment and whether it supports the minumum would identify if that environment is supported.
Additional
Based on the current state of Internet Explorer (IE) and when SDK v2.x will be available, I would propose that IE would be an explicit exclusion (list as not supported). So that (if) anyone is still attempting to support IE, it tells them that any issues will be up to them to address with polyfills (if possible) etc

This (should) also require defining the JS runtime support (eg ES5, etc) or specifically listing that we need support for X (things like Promise, Proxy, symbol, etc)

Current think will be that the initial base ES level should be ES2020, so any "older" browsers that don't support at least this level will not be supported.
Open to suggestions on any higher level that we should support (don't really want to go lower as by the time V2 is out it will be several years old and anyone needing to support the older version can continue using v1 in it's experiential state)

I heavily recommend OpenTelemetry instrumentation tries to support as many versions of ES as possible. We don't necessarily have the same security concerns with browser support as we do with something like minimum node version or runtime version, and it feels really bad when instrumentation blocks you from deploying code as an application developer.
Although there is a workaround available for users (using babel/adding polyfills), it does introduce more friction points and makes bundlerless setups less viable. There are also many browser-based runtimes like smart TVs or desktop application web-views where it is really difficult to upgrade browser versions.
I would recommend we adopt ES2018. With ES2018 we get async/await, .includes(), Object.values(), Promise.finally and object rest/spread properties. This means you can write relatively modern JS code, save a lot of bundle size as well with the utilities exposed, and write more performant code at times with usage of async generators and async/await.
ES2019 mostly adds utilities like Array.flatMap and Object.fromEntries, which doesn't seem to add too much value to existing instrumentation. ES2020 does add nullish coalescing, globalThis, and dynamic import() which does have solid benefits, but doesn't seem too groundbreaking in terms of improving instrumentation. Things like import.meta and dynamic import() are often taken care of by bundlers like vite or webpack as well.

@MSNev I just realized that we don't have a short summary letting people know why we're doing this. Would you mind adding it?
@AbhiPrasad I'm not at all a browser expert so this is likely a naive view so I'm just trying to gather some info to chew on right now :slightly_smiling_face:
So a few questions:

Isn't it rather common to have tooling set up for sites already the polyfill and transpile their code if needed?
Let's say we choose ES2020 as the base ES level, and we want to use things like BigInt: from your point of view is there anything that we could do that would smooth that over for people who do/do not have tooling like this set up already? How much work would it be for people to do?
How do other commonly used web libraries/frameworks usually handle this?

Isn't it rather common to have tooling set up for sites already the polyfill and transpile their code if needed?

Yes, but there are a certain percentage of devs who want to use bundleless setups with ESM straight up (no transforms/polyfills). Many people also consume directly from https://unpkg.com/ for example. I'm proposing we try to maximize compatibility for them.
Of course this is a maintenance tradeoff, so I can see the arguments against my reasoning above as well.

Let's say we choose ES2020 as the base ES level, and we want to use things like BigInt: from your point of view is there anything that we could do that would smooth that over for people who do/do not have tooling like this set up already? How much work would it be for people to do?

People would have to adjust their bundler/polyfill generator to accomodate this new setting. This really depends on the setup of someone's configuration, this can really vary across the JavaScript ecosystem.
The nice thing of targeting an ecmascript version instead of arbitrary browser versions is that we can clearly list supported browsers alongside expected JS features used by the OTEL SDKs. Then we can just add a list of this to the docs.

How do other commonly used web libraries/frameworks usually handle this?

Most recommend using https://github.com/zloirock/core-js or setting up a https://github.com/browserslist/browserslist that bundlers like vite/webpack can configure. Next.js is a good example: https://nextjs.org/docs/architecture/supported-browsers
TypeScript picked es2018 for their 5.0: https://github.com/microsoft/TypeScript/pull/51387, but that was because of attempts to maximize API with Node 14. If Node 14 is being kept for the node side of things, this may be useful for contributors (standard set of ES features used across the repo).

FWIW we recently were starting to implement OTEL and ran into browser compatibility issues. Specifically zone.js 13 drops support for some older browser versions (<IOS 16): https://github.com/angular/angular/issues/54867
this isn't something that's easy to find without getting a. bug report for it or doing extensive and expensive browser testing on tons of different devices. Thankfully a customer caught it in our demo environment. We are looking to transpile zone.js or pin the version to restore support to these older browsers.
DocuSigns browser support matrix is surprisingly very similar to next.js's browser support referred to above, if that helps with guiding the decision

Notes on why I'm still thinking that the minimum should be no smaller than (or maybe higher)

BigInt was introduced in ECMAScript 2020 (ES11)

I believe we can close this issue now


BugFix SYIOS-169: Improve MXEvent conversion.

We add some improvements in response handling during server sync v2.

LGTM


Add RFC2616

Hi,
I would like to add this RFC because symfony is based on HTTP.
There is a multiple reference of this RFC (e.g. HTTP request, HTTP response, caching).

Thanks for the PR @lepiaf


Add dependabot config

Missing dependabot configuration in order to maintain dependencies

Imho we don't need that, we don't have CI runs to ensure nothing breaks.


Müller Licht: change standby consumption to certificated consumption

In the EU bulbs have an energy label – usually not really helpful for us – but they have to specify the "networked standby power Pnet" – so I changed my standby measurements to these values with this PR.
While my measurements are pretty accurate, this is still a bit off from real laboratory equipment. Especially on very low "idle consumption" which is only taking a small amount of energy in a fraction of each wave.
This is also an issue with these new "smart" power meters, actually and just a limitation of cheaper electronics:
https://www.augsburger-allgemeine.de/digital/Geraete-Test-Forscher-Smart-Meter-messen-ungenau-id40833181.html

where did you find these "networked standby power Pnet" values?

where did you find these "networked standby power Pnet" values?

They are printed on the packaging of the lights, as part of the required energy label. :)


How to remove templates/static files to make base application an API?

I plan to use cookiecutter-django as an API and want to remove all the extra templates, static files, and other pre-configured files from my project. What specifically do I need to change/remove?
Thanks,
Ankit

You can manually remove all the unnecessary files or consider using something like cookiecutter-django-rest

Going to close this as it's more a question than a bug or feature request. Next time, we would really appreciate if you could follow the relevant template.

First, make sure to examine the docs. If that doesn't help post a question on StackOverflow tagged with cookiecutter-django. Finally, feel free to join Gitter and ask around.


IBMQ Provider RuntimeEncoder can't encode instructions

Information

Qiskit IBM Provider version:
Python version:
Operating system:

What is the current behavior?
Trying to JSON serialize an Instruction using the RuntimeEncoder raises an exception:
Steps to reproduce the problem
import json
from qiskit.providers.ibmq.runtime import RuntimeEncoder
from qiskit.circuit.library import CXGate

gate = CXGate()
json.dumps(gate, cls=RuntimeEncoder)

Raises TypeError: _write_instruction() missing 2 required positional arguments: 'custom_instructions' and 'index_map'
from this line: https://github.com/Qiskit/qiskit-ibmq-provider/blob/master/qiskit/providers/ibmq/runtime/utils.py#L192
What is the expected behavior?
Instructions should be roundtrip serializable.
Suggested solutions
I guess it is invoking qpy serialization incorrectly. I'm not sure how this is supposed to be used for instruction. Maybe @mtreinish knows?

This looks like an issue with the JSON serializer here. The qpy method _write_instruction is for serializing an instruction tuple from the circuit data basically (instruction, qargs, cargs) to a binary pack format. It's what is used to store the body of a circuit object in qpy. https://github.com/Qiskit/qiskit-terra/blob/main/qiskit/circuit/qpy_serialization.py#L834-L936 it takes in the file object, the tuple a dictionary of custom instructions (which is used because this function will end up being recursive if there is a custom object qpy is using) and an index map for classical conditions. This structure has been in place since the first qpy pr.
The IBM runtime encoder is just calling it like _write_instruction(buf, Instruction) which won't work. I'm not sure what the goal is, if you want to try and do a standalone instruction object with qpy and without a classical condition or arguments you could try doing something like: _write_instruction(buf, (Instruction, [], []), {}, {}) but that won't work well for anything outside the standard gate library because for anything that can't be reconstructed from a class name the definition properties for custom gates will be lost.


Android Compatibility: Support for API Level 21

Last September the Android minimum API level was reduced to 21, but as part of the V2 embedding update it was put back to 23. Is this necessary? Can we revert back to v21 for minimum support?

I've added a pull request for this issue.


When tf.image.central_crop taking a tensor as central_fraction argument, it raises OperatorNotAllowedInGraphError.

Please make sure that this is a bug. As per our
GitHub Policy,
we only address code/doc bugs, performance issues, feature requests and
build/installation issues on GitHub. tag:bug_template
System information

Have I written custom code (as opposed to using a stock example script provided in TensorFlow):
OS Platform and Distribution (e.g., Linux Ubuntu 16.04): win10
Mobile device (e.g. iPhone 8, Pixel 2, Samsung Galaxy) if the issue happens on mobile device:
TensorFlow installed from (source or binary): source
TensorFlow version (use command below): 2.4.0-rc3
Python version: 3.8.5
Bazel version (if compiling from source): 3.1
GCC/Compiler version (if compiling from source):
CUDA/cuDNN version: 11.1 / 8
GPU model and memory: rtx 3080 10GB

Colab notebook : https://colab.research.google.com/drive/1owELtE9_mTh1HCx20Yt3fJ3ynXLvds_x#scrollTo=rrehHBjoLUpT
Is it prohibited to pass a tensor to central_fraction argument of tf.image.central_crop function?
It raises OperatorNotAllowedInGraphError.
When used with map of tfdataset, the function raises the error. But using it with a eager tensor doesn't.

I have tried in colab with TF version 2.4, nightly version(2.5.0-dev20201202) and was able to reproduce the issue. Please, find the gist here.Thanks!

Added a PR #45613 for the fix.


example of gulpfile to make css

No clue why package.json seem completely changed, I did not modify it by hand, just used --save-dev fro dependencies.

Looks like it got rewritten with a different indentation.

Seems sensible enough. Is there a reason to use gulp-minify instead of clean-css?

Seems sensible enough. Is there a reason to use gulp-minify instead of clean-css?

DEPRECATED
This package is marked as deprecated. Please use jonathanepollack/gulp-minify-css instead.

Looks like it got rewritten with a different indentation.

Yes, I just don't know why npm would use a different indentation.

Ha, and it's less that specifically recommends clean-css because less's own minification is deprecated. Deprecate all the things!

Yes it make sens, I just copied and pasted an example, thought the same, and got the habit of typing less. renamed.

Commented line was a mistake. Uncommented.

When I run gulp css, it doesn't build the sourcemaps. Do you know what's going on there?

When I run gulp css, it doesn't build the sourcemaps. Do you know what's going on there?

No, but I figured it out. I'll tell you at lunch I want to see your face when I say it.

update to give an explicit path. @min, do you get external sourcemaps  now ?

@Carreau yup.


Add a ScalarUDFImpl::simplfy() API

Which issue does this PR close?

Closes #9289 .
Rationale for this change

What changes are included in this PR?

Are these changes tested?

Are there any user-facing changes?

Thanks @jayzhan211  -- I have some more thoughts on this PR and I hope to share them soon. However it may not be until tomorrow as I have a bunch of other things going on right now so I may run out of time

I ran out of time (again) today, but I will put this at the top of my list for tomorrow

I view this PR as strategically important (as it is needed to unlock the migration of functions out of the core)
I think figuring out how to get SimplifyContext out of datafusion/optimizer is the key. It is a matter of picking in which crates ExecutionProps and VarProvider go -- I can try and help tomorrow.

One question from perspective of #9333, would simplify be available for other function types not just ScalarUDF?

One question from perspective of #9333, would simplify be available for other function types not just ScalarUDF?

Only ScalarUDF is supported in this PR, but it makes sense to support simplify for AggregateUDF or others.

I have some time now so I will take a shot at making the improvements I listed

I pushed some commits to this PR @jayzhan211 -- I hope you don't mind.
Do you think the changes make sense ?

Thank you @alamb , I don't mind that.
I'm not sure why we should avoid returning schema , others make sense to me

I'm not sure why we should avoid returning schema, others make sense to me

I was thinking we should stay true to the design intent on SimplifyInfo that says it was designed to avoid having to create DFSchema objects.
If we were going to require DFSChema I think we could simply get rid of SimplifyInfo entirely 🤔
/// The information necessary to apply algebraic simplification to an
/// [Expr]. See [SimplifyContext] for one concrete implementation.
///
/// This trait exists so that other systems can plug schema
/// information in without having to create `DFSchema` objects. If you
/// have a [`DFSchemaRef`] you can use [`SimplifyContext`]
pub trait SimplifyInfo {

LGTM

I plan to resolve the conflicts with this PR later today and merge this PR unless there are any additional comments.

Here we go 🚀  Thank you again @jayzhan211  for all the help getting this one tee'd up and ready to merge. I think this will be a very powerful (but simple) API


Generate FunSuite and friends that take Assertion as the result type of the test

Hi Chee Seng,
We deprecated FunSuite in 3.1.0 and renamed it to AnyFunSuite, and did this across our style traits. We did it in the process of moving these to new packages to prepare the way for modularizing ScalaTest. For example, we moved org.scalatest.FunSuite to org.scalatest.funsuite.AnyFunSuite. Since we were renaming all the style traits anyway so that we could modularize, we took the opportunity to rename ye olde trait that takes Any as an "Any style". The reason was that we wanted to bring FunSuite and friends back as a style trait that takes Assertion as the test result type.
At one point, before we decided to modularize, we wer thinking of calling the Assertion taking styles "LogicFunSuite," etc. So we did implement a code generator to copy from the ye olde styles that take Any to the Logic styles that took Assertion. So I'd look for that and see if you can just refactor it so it generates FunSuite from AnyFunSuite, etc. The only difference between the two should be the result type, as was the case in the LogicFunSuite days.
This should go into the 3.3.x-new branch.
Thanks.
Bill

@bvenners I think this is already completed in 3.3.x branch, I'll look for the PR as reference.

@bvenners This is the PR that should do this already:
https://github.com/scalatest/scalatest/pull/2011
I would like to propose to close this ticket.


[7.0.1] Please ignore. This is for testing

Forked from #431

Cherry-picked in https://github.com/bazelbuild/bazel/pull/21040

Cherry-pick was attempted, but failed to push. Please check if the branch, cp431-7.0.1, already exists
cc: @bazelbuild/triage


Temperature offset

My aircon is bad at reading the correct temperature, as the result my sensor temperature is never reaching set one, so added the "offset support":
climate:
  - platform: smartir
    name: LivingRoom Aircon
    unique_id: livingroom_aircon
    device_code: 1032
    controller_data:
      controller_type: Broadlink
      remote_entity: remote.ir_blaster1
      delay_secs: 0.5
      num_repeats: 3
    temperature_offset:
      heat: +1
      cool: -1
      auto: 1
    temperature_sensor: sensor.multisensorlivingroom_temperature
    humidity_sensor: sensor.multisensorlivingroom_humidity
    power_sensor: binary_sensor.livingroom_aircon_status

It can be different for both heating and cooling (anything that matches the names of the modes from codes file)

Hello @michalzxc, thank you for your contribution. I did brief review of you PR and if I understand proposed changes correctly, you simply shift input temperature when selecting corresponding command.
While I understand your use case, I am not completely convinced that this has broad usage. Also there are alternative ways of doing it (like shifting commands in the code file itself - specially as this seem to be issue for given device type). So for now I lean towards no inheriting this PR - the ultimate reason is the goal to keep integration as simple as possible.

It is not per device type, more per device itself. All depends where the Aircon internal temperature sensor is located in the room

Thank you for explanation. While I understand your needs and appreciate your effort in the PR, I think, that same functionality could be implemented natively in the HA for example by the template sensor providing modification to the real sensor based on the selected climate mode. Unfortunately I can't implement every function needed by any users, it won't be wise from the long term maintainability perspective. Thank you for your understanding.


README: Add screenshot

This PR adds a screenshot to the README.
Fixes #260
Update: Includes commits to make this test pass also on forked repos:
HowIs::Sources::CI::Travis
  #builds
    returns an Array

Oh, I have incoming information that this is not the latest screenshot. Hold on!

Nice, thanks for the PR! :heart:

bors r+


Moving units .001 inaccuracy

Moving units large distances even when by hand typing in a grid size will have units move 0.001 units too little.

????

This issue is inconsistent atm, when I find a way to reproduce it constantly Ill mention it.


Write CSV data source classes

The CSV data that is read by the Reader class has to come from some kind of source. We represent that source with anything that implements CSVelte\Input\InputInterface. Write this interface and a family of pre-build sources (stream, file, string, etc.)

The interface for this is actually CSVelte\Contracts\Readable. Although there is still work to be done on the readable classes, there are already tickets for each individual task that needs doing, so I'm marking this as complete.


Profile - After the user's address is saved, Address Line 2 is added to Address Line 1

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number: 9.0.9-1
Reproducible in staging?: Y
Reproducible in production?: Y
If this was caught during regression testing, add the test name, ID and link from TestRail: https://expensify.testrail.io/index.php?/tests/view/4738169
Email or phone of affected tester (no customers<EMAIL_ADDRESS>Issue reported by: Applause - Internal Team
Action Performed:

Open App or go to staging.new.expensify.com
Login with any account
Go to Settings > Profile > Private > Address
Add any address in Address Line 1, Line 2 and in other fields
Save address
Open saved address

Expected Result:
All address fields are saved correctly
Actual Result:
Contents of Address Line 2 was added to the end of Address Line 1. Field "Address Line 2" is empty
Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[x] Android: Native
[x] Android: mWeb Chrome
[ ] iOS: Native
[ ] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

Screenshots/Videos
Add any screenshot/video evidence

https://github.com/user-attachments/assets/0cd75c38-e92e-44b3-8f36-5d504f9a45c1
View all open jobs on GitHub

We think that this bug might be related to #vip-vsp

@JmillsExpensify  FYI I haven't added the External label as I wasn't 100% sure about this issue. Please take a look and add the label if you agree it's a bug and can be handled by external contributors

Proposal
Please re-state the problem that we are trying to solve in this issue.
Profile - After the user's address is saved, Address Line 2 is added to Address Line 1
What is the root cause of that problem?
We are saving both street and street2 in street separating with new line
https://github.com/Expensify/App/blob/b8b99d0a994e3ccf8b91564df0f92a7c440aa6c7/src/libs/PersonalDetailsUtils.ts#L214-L215
But we are not extracting street2 properly here
https://github.com/Expensify/App/blob/b8b99d0a994e3ccf8b91564df0f92a7c440aa6c7/src/pages/AddressPage.tsx#L31-L32
What changes do you think we should make in order to solve the problem?

We can start saving them separately by creating street2 prop privatePersonalDetails?.address and then we can displaying them easily by accessing the props
or we can also extract the street2 by assigning the string after newline to street2 like
const {street: bothStreets} = address ?? {};
    const streetArr = bothStreets?.split('/n');
    const street = bothStreets?.split('/n')?.[0];
    const street2 = bothStreets?.split('/n')[1];

What alternative solutions did you explore? (Optional)

Updated to fix a typo \n to /n

Adding this to wave-collect since it's about private addresses, which is used for the bank/reimbursement flow. I'm also opening up to the community.

Hi, I'm still analyzing the backend API, seems it expects the street data in one field, but I will confirm tomorrow

Sorry, no update. I got caught up with some other priorities today

As we move new sign-ups into NewDot and release the Expensify Card project in the coming weeks, fixing this bug in setting a private address is going to be more visible and troublesome. Moving it up into high value polish for September.

Checking it out today again

Did you check it out, @marcochavezf?

Hi @thesahindia, I verified we're intentionally appending these values in the backend into one field, so let's handle the split in the frontend

I agree with @thesahindia's decision, assigning @nyomanjyotisa

Not overdue, PR is WIP

Payment summary:

Contributor: $250 @nyomanjyotisa
Reviewer: $250 @thesahindia

$250 approved for @thesahindia

All contributors paid out, so closing.


Yatin: Watch sites.google.com/view/webfixes1/home (?# this is a test done in Charcoal test. If it does turn up as a pr then please reject)

Yatin requests the watch of the watch_number sites\.google\.com/view/webfixes1/home (?# this is a test done in Charcoal test. If it does turn up as a pr then please reject). See the MS search here and the Stack Exchange search in text, in URLs, and in code.

Rejected by cigien in Charcoal HQ. Reason: 'tried as test from Charcoal Test room: successful'


Add ynab.cr to third-party APIs list

Add ynab.cr, a wrapper for the YNAB API.

@jaredsmithse please follow the contribution guidelines.
Also:

add usage instructions
add CI periodical builds

@vladfaust thanks for pointing this out. I haven't checked the repo :)

@veelenga I added usage instructions and made another release that was not pre-release. I setup Travis to do daily builds as well!
Thanks for the quick feedback 🙂

@jaredsmithse I use the last version of YNAB before the SASS version, I would like to contribute but this is only for the API for the SASS version, correct?

@djdarkbeat correct! I only started using about two years ago. I was aware they converted to SaaS but wasn't even aware of the other API 😅


Support eval (snekbox) file system and attachment display

Support for the new snekbox file system specifications and API changes, adds uploading of file attachments from snekbox.
From issues: https://github.com/python-discord/snekbox/issues/103 and https://github.com/python-discord/snekbox/issues/114
Requires merging of Snekbox PR first: https://github.com/python-discord/snekbox/pull/159
Changes

Supports receiving and rendering most file formats supported by discord itself (images, audio, video, text, etc.)
Some dataclass structure refactoring for snekbox to simplify design and make feature additions easier

Current features:

[x] Upload files returned by snekbox eval, configurable size limit and number of files
[x] All normal !eval usage now will create a main.py target on snekbox to support other file system features such as __file__ and inspect.get_source as well as improved error messages from 3.11 that are currently missing.
[x] An output folder will be created within the /home snekbox current working directory. Any files written within there will be uploaded.

Possible features for future PRs that will be supported with the snekbox changes.

[ ] Support for file attachments to be sent to snekbox
[ ] Support for attaching source files using https://paste.pythondiscord.com/ links
[ ] Support for naming multiple code blocks as different files (can be nice to demonstrate how imports work)

Examples

Per-file size limit of 8MiB (up to 50MiB possible since our bot is in a lv2+ boosted server)

Per-message file limit (currently 10 files)

Refactored #2422 to be compatible and fixed merge conflicts with #2408


secretReveal$ should not be emit transfer failed just because the secret request amount is too small

If a payment is split into multiple transfers, it is possible for a target to send multiple secret requests, each with a slightly larger amount. In that case, receiving a secret request with an amount smaller than the target is not a failure.
https://github.com/raiden-network/light-client/blob/0abfd9ee9d4359b150048f7018dd13fe07175086/raiden-ts/src/transfers/epics/secret.ts#L125-L129
Related to https://github.com/raiden-network/light-client/issues/2036 https://github.com/raiden-network/light-client/issues/2067 https://github.com/raiden-network/raiden/issues/3520

Good point. This was an optimization done to inform the user early when a transfer had failed due to mediators taking more fees than we expected (since it could theoretically still succeed if the target somehow received and sent  an updated amount, but in practice this never happens). Is it correct to think this never happens in practice today, and we should re-evaluate this only when Raiden implements multi-transfer payments?

Is it correct to think this never happens in practice today, and we should re-evaluate this only when Raiden implements multi-transfer payments?

As of raiden==1.1.1 yes, the related issue linked in the issue is the one used to track split payments


Multiple elements

Is it possible to get this working out the box with multiple elements without multiple instances? It seems that when called, on hover of one element, it applies the hover to all elements at the same time.

Yeah it's possible, just use class as a selector.

@ariona Thanks for the reply. I did just that but seems to trigger them all on hover?

@ariona See here: http://codepen.io/anon/pen/gLzmOW

@richgcook see here https://jsfiddle.net/dagsr1rq/

Ah! I see where I've gone wrong.


[firebase_database] Android Firebase RTDB Transactions integration test failure

Times out after 30 seconds.
This is likely the same issue as what was fixed in https://github.com/flutter/plugins/pull/1701

@collinjackson
The issue at https://github.com/flutter/flutter/issues/34422 has been closed and moved here. Future collaboration on this issue will be done here.

Given the age and inactivity of this issue I'm going to close this issue in favour of trying the latest release.