aad-pod-identity-nmi-xxxxx doesn't start and no matches for AzureIdentity and AzureIdentityBinding in version aadpodidentity.k8s.io/v1

What steps did you take and what happened:
The aad-pod-identity-nmi-xxxxx Pod does not start and no matches for AzureIdentity and AzureIdentityBinding in version aadpodidentity.k8s.io/v1.
What did you expect to happen:
I expected that following the guide, unless I have a wrong parameter somewhere, that the Azure Key Vault and Azure Kubernetes Service integration would work.
Anything else you would like to add:
These are all of the steps I've taken at least three times with the same end result:
# create the resource group
az group create -l westus -n k8s-test

# create the azure container registery
az acr create -g k8s-test -n k8stestacr --sku Basic -l westus

# create the azure key vault and add a test value to it
az keyvault create --name k8stestakv --resource-group k8s-test -l westus
az keyvault secret set --vault-name k8stestakv --name SECRETTEST --value abc123

# create the azure kubernetes service
az aks create -n k8stestaks -g k8s-test --kubernetes-version=1.19.7 --node-count 1 -l westus --enable-managed-identity --attach-acr k8stestacr -s Standard_B2s

# install helm charts for secrets store csi
helm repo add csi-secrets-store-provider-azure https://raw.githubusercontent.com/Azure/secrets-store-csi-driver-provider-azure/master/charts
helm install csi-secrets-store-provider-azure/csi-secrets-store-provider-azure --generate-name

# create role managed identity operator
az role assignment create --role "Managed Identity Operator" --assignee <k8stestaks_clientId> --scope /subscriptions/<subscriptionId>/resourcegroups/MC_k8s-test_k8stestaks_westus

# create role virtual machine contributor
az role assignment create --role "Virtual Machine Contributor" --assignee <k8stestaks_clientId> --scope /subscriptions/<subscriptionId>/resourcegroups/MC_k8s-test_k8stestaks_westus

# install more helm charts
helm repo add aad-pod-identity https://raw.githubusercontent.com/Azure/aad-pod-identity/master/charts
helm install pod-identity aad-pod-identity/aad-pod-identity

# create identity
az identity create -g MC_k8s-test_k8stestaks_westus -n TestIdentity

# give the new identity a reader role for AKV
az role assignment create --role "Reader" --assignee <TestIdentity_principalId> --scope /subscriptions/<subscription_id/resourceGroups/k8s-test/providers/Microsoft.KeyVault/vaults/k8stestakv

# allow the identity to get secrets from AKV
az keyvault set-policy -n k8stestakv --secret-permissions get --spn <TestIdentity_clientId>

The  secretProviderClass.yaml:
apiVersion: secrets-store.csi.x-k8s.io/v1alpha1
kind: SecretProviderClass
metadata:
  name: azure-kvname
spec:
  provider: azure
  parameters:
    usePodIdentity: "true"
    useVMManagedIdentity: "false"
    userAssignedIdentityID: ""
    keyvaultName: "k8stestakv"
    cloudName: ""
    objects:  |
      array:
        - |
          objectName: SECRETTEST
          objectType: secret
          objectVersion: ""
    resourceGroup: "k8s-test"
    subscriptionId: "<subscriptionId>"
    tenantId: "<tenantId>"

And also the podIdentityBinding.yaml:
apiVersion: aadpodidentity.k8s.io/v1
kind: AzureIdentity
metadata:
    name: azureIdentity
spec:
    type: 0
    resourceID: /subscriptions/<subscriptionId>/resourcegroups/MC_k8s-test_k8stestaks_westus/providers/Microsoft.ManagedIdentity/userAssignedIdentities/TestIdentity
    clientID: <TestIdentity_clientId>
---
apiVersion: aadpodidentity.k8s.io/v1
kind: AzureIdentityBinding
metadata:
    name: azure-pod-identity-binding
spec:
    azureIdentity: azureIdentity
    selector: azure-pod-identity-binding-selector

Then just apply them:
# this one executes fine
kubectl apply -f k8s/secret/secretProviderClass.yaml

# this one does not
kubectl apply -f k8s/identity/podIdentityBinding.yaml
unable to recognize "k8s/identity/podIdentityBinding.yaml": no matches for kind "AzureIdentity" in version "aadpodidentity.k8s.io/v1"
unable to recognize "k8s/identity/podIdentityBinding.yaml": no matches for kind "AzureIdentityBinding" in version "aadpodidentity.k8s.io/v1"

$ kubectl get pods
NAME                                                              READY   STATUS             RESTARTS   AGE
aad-pod-identity-mic-7b4558845f-hwv8t                             1/1     Running            0          37m
aad-pod-identity-mic-7b4558845f-w8mxt                             1/1     Running            0          37m
aad-pod-identity-nmi-4sf5q                                        0/1     CrashLoopBackOff   12         37m
csi-secrets-store-provider-azure-1613256848-cjlwc                 1/1     Running            0          41m
csi-secrets-store-provider-azure-1613256848-secrets-store-m4wth   3/3     Running            0          41m

$ kubectl describe pod aad-pod-identity-nmi-4sf5q
Name:         aad-pod-identity-nmi-4sf5q
Namespace:    default
Priority:     0
Node:         aks-nodepool1-40626841-vmss000000/<IP_ADDRESS>
Start Time:   Sat, 13 Feb 2021 14:57:54 -0800
Labels:       app.kubernetes.io/component=nmi
              app.kubernetes.io/instance=pod-identity
              app.kubernetes.io/managed-by=Helm
              app.kubernetes.io/name=aad-pod-identity
              controller-revision-hash=669df55fd8
              helm.sh/chart=aad-pod-identity-3.0.3
              pod-template-generation=1
              tier=node
Annotations:  <none>
Status:       Running
IP:           <IP_ADDRESS>
IPs:
  IP:           <IP_ADDRESS>
Controlled By:  DaemonSet/aad-pod-identity-nmi
Containers:
  nmi:
    Container ID:  containerd://5f9e17e95ae395971dfd060c1db7657d61e03052ffc3cbb59d01c774bb4a2f6a
    Image:         mcr.microsoft.com/oss/azure/aad-pod-identity/nmi:v1.7.4
    Image ID:      mcr.microsoft.com/oss/azure/aad-pod-identity/nmi@sha256:0b4e296a7b96a288960c39dbda1a3ffa324ef33c77bb5bd81a4266b85efb3498
    Port:          <none>
    Host Port:     <none>
    Args:
      --node=$(NODE_NAME)
      --http-probe-port=8085
      --operation-mode=standard
      --kubelet-config=/etc/default/kubelet
    State:          Waiting
      Reason:       CrashLoopBackOff
    Last State:     Terminated
      Reason:       Error
      Exit Code:    255
      Started:      Sat, 13 Feb 2021 15:34:40 -0800
      Finished:     Sat, 13 Feb 2021 15:34:40 -0800
    Ready:          False
    Restart Count:  12
    Limits:
      cpu:     200m
      memory:  512Mi
    Requests:
      cpu:     100m
      memory:  256Mi
    Liveness:  http-get http://:8085/healthz delay=10s timeout=1s period=5s #success=1 #failure=3
    Environment:
      NODE_NAME:         (v1:spec.nodeName)
      FORCENAMESPACED:  false
    Mounts:
      /etc/default/kubelet from kubelet-config (ro)
      /run/xtables.lock from iptableslock (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from aad-pod-identity-nmi-token-8sfh4 (ro)
Conditions:
  Type              Status
  Initialized       True
  Ready             False
  ContainersReady   False
  PodScheduled      True
Volumes:
  iptableslock:
    Type:          HostPath (bare host directory volume)
    Path:          /run/xtables.lock
    HostPathType:  FileOrCreate
  kubelet-config:
    Type:          HostPath (bare host directory volume)
    Path:          /etc/default/kubelet
    HostPathType:
  aad-pod-identity-nmi-token-8sfh4:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  aad-pod-identity-nmi-token-8sfh4
    Optional:    false
QoS Class:       Burstable
Node-Selectors:  kubernetes.io/os=linux
Tolerations:     node.kubernetes.io/disk-pressure:NoSchedule op=Exists
                 node.kubernetes.io/memory-pressure:NoSchedule op=Exists
                 node.kubernetes.io/network-unavailable:NoSchedule op=Exists
                 node.kubernetes.io/not-ready:NoExecute op=Exists
                 node.kubernetes.io/pid-pressure:NoSchedule op=Exists
                 node.kubernetes.io/unreachable:NoExecute op=Exists
                 node.kubernetes.io/unschedulable:NoSchedule op=Exists
Events:
  Type     Reason     Age                    From               Message
  ----     ------     ----                   ----               -------
  Normal   Scheduled  38m                    default-scheduler  Successfully assigned default/aad-pod-identity-nmi-4sf5q to aks-nodepool1-40626841-vmss000000
  Normal   Pulled     38m                    kubelet            Successfully pulled image "mcr.microsoft.com/oss/azure/aad-pod-identity/nmi:v1.7.4" in 14.677657725s
  Normal   Pulled     38m                    kubelet            Successfully pulled image "mcr.microsoft.com/oss/azure/aad-pod-identity/nmi:v1.7.4" in 5.976721016s
  Normal   Pulled     37m                    kubelet            Successfully pulled image "mcr.microsoft.com/oss/azure/aad-pod-identity/nmi:v1.7.4" in 627.112255ms
  Normal   Pulling    37m (x4 over 38m)      kubelet            Pulling image "mcr.microsoft.com/oss/azure/aad-pod-identity/nmi:v1.7.4"
  Normal   Pulled     37m                    kubelet            Successfully pulled image "mcr.microsoft.com/oss/azure/aad-pod-identity/nmi:v1.7.4" in 794.669637ms
  Normal   Created    37m (x4 over 38m)      kubelet            Created container nmi
  Normal   Started    37m (x4 over 38m)      kubelet            Started container nmi
  Warning  BackOff    3m33s (x170 over 38m)  kubelet            Back-off restarting failed container

Which access mode did you use to access the Azure Key Vault instance:
Pod Identity
Environment:

Secrets Store CSI Driver version: (use the image tag):
Azure Key Vault provider version: (use the image tag):
Kubernetes version: (use kubectl version and kubectl get nodes -o wide): 1.19.7
Cluster type: (e.g. AKS, aks-engine, etc): AKS

@cheslijones Could you check the NMI pod logs? AAD Pod Identity is disabled by default for clusters with kubenet. If that's the error, you should see it in the logs. Here is the troubleshooting guide for pod identity:

https://azure.github.io/aad-pod-identity/docs/troubleshooting/
https://azure.github.io/aad-pod-identity/docs/configure/aad_pod_identity_on_kubenet/

@aramase Thanks, I did try to create the cluster a few times over the weekend with the --network-plugin azure flag and ran into a different issue. However, I just tried it again and it works!
I did want to suggest that in the documentation I was following
that this command:
az aks create -n contosoAKSCluster -g contosoResourceGroup --kubernetes-version 1.16.9 --node-count 1 --enable-managed-identity

Should be updated to:
az aks create -n contosoAKSCluster -g contosoResourceGroup --kubernetes-version 1.16.9 --node-count 1 --enable-managed-identity --network-plugin azure

The only reason I came across --network-plugin azure was from reading about Pod identities, but the documentation I referred to didn't mention it so wasn't sure if it was necessary. Turns out it is and that it is actually preferred for production over kubenet.


Physics: improve collision sensitivity

We should clean up the pill offsetting code:

[x] Going too fast sometimes outruns the physics engine in the character controller.
[x] Vertical walls collide vertically, slowing the character, which makes no physical sense.

https://github.com/webaverse/app-wasm/pull/2/commits/2c2ad6b640c38fdc316e245075f02afe42f7fdcb
https://github.com/webaverse/app/commit/3932ec70ada804897f2b4a5360c0fa5c9a096c72

It is more stable now.


Improve sample app UI

Improved and fixed some issues on the sample app.

I'm at Build right now so can't test it but what is this specifically addressing?

Just improved a couple of margin settings and fixed the Settings page title from "Windows Design" to "Settings". Nothing critical.

Maybe I'm just not clear on what was wrong with them in the first place?
Also not sure I get the rename to settings.

For example, in the Windows Control page, the buttons have inconsistent look and spacing. One of them not showing its entire content:

This is how it looks after the change:

I aslso fixed the Settings page title:

to:

This PR has become old. Closing it.


Construct MTex

Updated on 11/28 (GMT+8): Some information in this comment may be outdated. Please see the latest comment.
Motivation
As what I've mentioned in #1677 , recently I'm working on the refactoring of Tex mobject. Manim generates all substrings of a Tex, namely the SingleStringTex objects, and calculates their lengths in order to figure out indices of some certain submobjects. This may cause the program to become slow as a Tex is split into tons of components, which is a usual case for complicated math formulas. And, even worse, symbols composed with a mutable number of symbols in different contexts also prevent us from indexing the mobject correctly.
My little trick is to insert some \color commands into the tex code. For example, Tex("abc", isolate=["a"]) will send "{\color[RGB]{0, 0, 1} a}bc" to be compiled. In most cases, the addition of \color won't change the shapes of glyphs, but the svg output will carry information about colors, which marks out the key glyphs. This can help us finish the indexing work, only with compiling just one tex file.
However, this still doesn't fix all the problems. I'll briefly list pros and cons about this pull request.
Pros

Every Tex corresponds to exactly 1 compilation, which is the greatest benefit and can speed up rendering.
Problems concerned with indexing will no longer happen, and the coloring issue is fixed. For example, \frac command is available when the denominator part is expected to be colored.
The preprocessing part, including balancing brackets, filling in missing parameters, becomes useless and is discarded.
Using the combination of the full tex_string and substrings_to_isolate to generate hash keys, with which to determine whether a Tex should be compiled again. This fixes the issue that two Tex with the same tex_string but different substrings are only compiled once, and the indexing of the later constructed one crashes.

Cons

Still, in some cases the shapes of glyphs will change when \color is inserted. For instance, when x_{0}^{2} becomes {\color[RGB]{0, 0, 1} x_{0}}^{2}, the exponent 2 is shifted rightward.
It's uncertain whether all tex_strings of components actually match them or not. This may happen if a tex_substring actually matches no mobjects, but matches the next group of mobjects according to the program.
The class SingleStringTex is removed, which may cause some old scenes to break. This can be simply fixed by replacing them with Tex.
Without the brackets balancing process, the tex_string and substrings_to_isolate (including isolate and tex_to_color_map) provided must be balanced in brackets, or a compilation error will occur.
All Tex with at least one substrings_to_isolate provided will be remade since the files are inserted with \color commands, which is never seen in previous versions.
mob.get_tex() is preserved in a temporary fashion.

Last but not least, this pull request is newly written, and is far from being tested enough. Any discussion or better strategy to fix this type of thing is welcome!
Test
Code:
from manimlib import *

TEST_STR = """\\lim_{{n} \\to \\infty} \\left\\lfloor
\\sqrt{\\frac{1}{{n} !} \\mathrm{e}^{n} {a}_{n} + b_{n}^{p}} \\otimes
\\sqrt[{n}]{\\sum_{m = 0}^{{n}^{2}} \\tilde{c}_{m \\cdot {n}}^{b_{n}^{p}
\\cos \\left( \\theta \\right)}} \\right\\rfloor""".replace("\n", " ")

class TestScene(Scene):
    def construct(self):
        tex1 = Tex(
            TEST_STR,
            fill_color=TEAL
        )
        tex1.shift(2 * UP)
        tex2 = Tex(
            TEST_STR,
            tex_to_color_map={
                #"\\sum": BLUE_E,
                "b_{n}": LIGHT_PINK,
                "{n}": YELLOW
            },
            fill_color=TEAL
        )
        tex2.shift(2 * DOWN)
        self.add(tex1, tex2)

        # Labels of indices for debugging
        self.add(
            #index_labels(tex1[0]),
            #index_labels(tex2),
            #*[index_labels(submob) for submob in tex2]
        )

Result:

I daren't modify the Tex class as it's deeply rooted in manim, so I've written a new class called MTex for substitute. This class shares some similarities but also some differences with Tex. Why choose "M" as a prefix? Because it means "magic".

MTex takes in exactly one string and has no arg_separator argument. One may simply use join function to cover this problem.
Every MTex needs to be compiled once, no matter how many substrings are specified in isolate and tex_to_color_map. However, they must be a valid tex string when isolated, like {a, \right) are no longer allowed since MTex no longer provides automatic brace balancing.
About coloring:

# One of the main goals of this PR is to avoid wasting time
# finding the indices of mobjects of tex desired to be colored.

# Substrings enclosed by a pair of braces (not escaped characters) are automatically isolated.
# tex1 = Tex("x = \\frac{-b \\pm \\sqrt{b^2-4ac}}{2a}", isolate=["{b^2-4ac}", "{2a}"])
tex1 = MTex("x = \\frac{-b \\pm \\sqrt{b^2-4ac}}{2a}")
# Needn't use `isolate` or `tex_to_color_map`
tex1.get_parts_by_tex("{b^2-4ac}").set_fill(color=YELLOW)
tex1.get_parts_by_tex("{2a}").set_fill(color=BLUE)

# Furthermore, subscripts and superscripts are also automatically isolated.
tex2 = MTex("a^2 + b^2 = c^2")
# Either would be OK:
# tex2.get_parts_by_tex("2").set_fill(color=PINK)
tex2.get_parts_by_tex("^2").set_fill(color=LIGHT_PINK)

# A variable with a subscript and a superscript won't cause problems.
tex3 = MTex("N = p_1^{r_1} p_2^{r_2} \\cdots p_s^{r_s}", tex_to_color_map={
    "p_1": GREEN,
    "p_2": RED,
    "p_s": BLUE,
})

# You can even color a string as long as their substrings are all isolated.
tex4 = MTex("Q = {c_m} \\cdot {m} \\cdot {\\Delta T}", isolate=[" \\cdot "])
tex4.get_parts_by_tex("{c_m} \\cdot {m} \\cdot {\\Delta T}").set_fill(color=RED)

self.add(VGroup(tex1, tex2, tex3, tex4).arrange(DOWN, buff=1))

The result of the code above is shown here:

However, the MTex class isn't able to assign a corresponding to each component, since the tex string doesn't always align well with the svg generated, so the get_tex() method is removed. This will make it unable to work with TransformMatchingTex. This may be fixed in the future.
Lastly, I use full_tex to generate hash keys, so two tex files that should contain different contents must be generated separately.
You are welcome to discuss any bugs or issues encountered with this new class!

Thanks for doing this! It's a clever solution to the problem. I'll take a closer look and see if I can find any edge cases that outweigh the pros, but overall I think replacing Tex with this implementation will be the right way to go.

Let me clarify some main differences between methods of Tex and MTex.
SingleStringTex.get_tex(self)

Tex is made up by a series of SingleStringTex with this method to return a prtial tex string. However, submobjects of MTex don't have such a method. The MTex version may be implenented in the future.
Tex.get_parts_by_tex(self, tex, substring=True, case_sensitive=True)
Tex.get_part_by_tex(self, tex, **kwargs)

The former returns a VGroup containing several submobjects, which are of type SingleStringTex. The latter returns the first submobject matched, or None if nothing can be matched. The tex string can be matched in substring or case_sensitive mode as options.
MTex.get_parts_by_tex(self, tex)
MTex.get_part_by_tex(self, tex, index=0)

The former returns a VGroup with several VGroups of submobjects. Note that in MTex, part is regarded as a VGroup of glyphs, while glyph is regarded as a child component of a submobject, so a part and a submobject at least have the same hierarchy. The latter returns the index-th element of the former result, so it may raise IndexError. The tex string must be able to be decomposed into some substrings that are already isolated.
Tex.index_of_part(self, part, start=0)
Tex.index_of_part_by_tex(self, tex, start=0, **kwargs)

Return the index of the submobject, namely the part. An optional attribute start may be passed.
MTex.slice_of_part(self, part)
MTex.slice_of_part_by_tex(self, tex, index=0)
MTex.index_of_part(self, part)
MTex.index_of_part_by_tex(self, tex, index=0)

The first two return the slice of part in submobjects of MTex. These methods only check the indices of submobjects where the first and last glyphs of part lives (using index_of_glyph()), and return the slice spanned by them. It's assumed the order of submobjects preserve that of tex string (at least in this scope). The latter two return the start attribute of the corresponding slice.
MTex.get_all_isolated_substrings(self)

Returns all substrings that are already isolated. It's implemented here to make the class more user-friendly.

I've just finished implementing the get_tex() method for submobjects of MTex. I have no idea whether this works fluently in many other cases that I haven't tested so far, and it sometimes may assign some meaningless tex_strings to submobjects because of the ordering issue. As an example, a fraction line will be assigned with an empty string if the tex given is \frac{1}{2}.
Anyway, MTex is now almost fully compatible with Tex, at least all methods are implemented.

@3b1b I think the code is ready for reviewing now. Sorry for forgetting marking this as a draft before. This implementation works so far so good based on my LaTeX environment. I wonder whether there're still some bugs remaining in some edge cases...

Hey @YishiMichael! This is a very clever approach which we'd also like to include over at https://github.com/ManimCommunity/manim -- are you either interested in submitting a similar PR there, or are you otherwise okay with someone of the community devs taking care of that for you?
(Inclusion of your new classes as-is should be a more or less straightforward process, replacing of the current default Tex classes could be a completely separate, second step.)

I noticed that its feature that all paired braces are automatically broken up would cause unexpected breakings like \begin{matrix}, \hspace{3em}. So I added unbreakable_commands parameter for users to input some commands, the braces follow which won't be broken up. It's default to be ["\\begin", "\\end"].
@behackl Sorry for replying so lately, for I'm busy with school work these days. Thanks for your approval! I'd prefer someone of the community to help maintain the code, and add more features or make some modifications if necessary. To be honest, some methods in this class may still have space for better implementation, or even have bugs I haven't discovered so far, so I'm glad if someone can come up with ideas and further improve the code.

@3b1b I think it's time to merge this. What about you?

I agree, it looks good to me. I'll merge it, then make a separate PR to replace Tex and TexText with this.

Why I have the following same errors popping up either I use the examples above or input anything in MTex?
----> 1 b = MTex("hello")
d:\appsgrouped\conda\envs\py39\lib\site-packages\manimlib\mobject\svg\mtex_mobject.py in init(self
, tex_string, **kwargs)
283             for submob in tex_hash_to_mob_map[hash_val]
284         ])
--> 285         self.build_submobjects()
286
287         self.init_colors()
d:\appsgrouped\conda\envs\py39\lib\site-packages\manimlib\mobject\svg\mtex_mobject.py in build_submobj
ects(self)
322         self.group_submobjects()
323         self.sort_scripts_in_tex_order()
--> 324         self.assign_submob_tex_strings()
325
326     def group_submobjects(self):
d:\appsgrouped\conda\envs\py39\lib\site-packages\manimlib\mobject\svg\mtex_mobject.py in assign_submob
_tex_strings(self)
400             curr_labels, prev_labels, next_labels
401         ):
--> 402             curr_span_tuple = label_dict[curr_label]
403             prev_span_tuple = label_dict[prev_label]
404             next_span_tuple = label_dict[next_label]
KeyError: -1

@mark-zz That's weird as it totally works on my computer (Windows 10). I guess it could be the different behaviors of LaTeX compilers. Could you give me your svg file generated?
Mine is shown below:
MTex("hello")

<?xml version='1.0' encoding='UTF-8'?>
<!-- This file was generated by dvisvgm 2.11.1 -->
<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='22.707525pt' height='7.291664pt' viewBox='88.501797 -56.729015 22.707525 7.291664'>
<defs>
<path id='g0-101' d='M1.963499-2.425498C2.267998-2.425498 3.044998-2.446498 3.569998-2.666998C4.304997-2.981998 4.357497-3.601497 4.357497-3.748497C4.357497-4.210497 3.958497-4.640997 3.233998-4.640997C2.068499-4.640997 .483-3.622497 .483-1.784999C.483-.714 1.102499 .1155 2.131499 .1155C3.632997 .1155 4.514997-.997499 4.514997-1.123499C4.514997-1.186499 4.451997-1.259999 4.388997-1.259999C4.336497-1.259999 4.315497-1.238999 4.252497-1.154999C3.422998-.1155 2.278498-.1155 2.152499-.1155C1.333499-.1155 1.238999-.997499 1.238999-1.333499C1.238999-1.459499 1.249499-1.784999 1.406999-2.425498H1.963499ZM1.469999-2.656498C1.879499-4.252497 2.960998-4.409997 3.233998-4.409997C3.727497-4.409997 4.010997-4.105497 4.010997-3.748497C4.010997-2.656498 2.330998-2.656498 1.900499-2.656498H1.469999Z'/>
<path id='g0-104' d='M3.013498-7.171495C3.013498-7.181995 3.013498-7.286995 2.876998-7.286995C2.635498-7.286995 1.868999-7.202995 1.595999-7.181995C1.511999-7.171495 1.396499-7.160995 1.396499-6.971995C1.396499-6.845995 1.490999-6.845995 1.648499-6.845995C2.152499-6.845995 2.173498-6.772495 2.173498-6.667495L2.141999-6.457496L.6195-.4095C.5775-.2625 .5775-.2415 .5775-.1785C.5775 .063 .787499 .1155 .881999 .1155C1.049999 .1155 1.217999-.0105 1.270499-.1575L1.469999-.955499L1.700999-1.900499C1.763999-2.131499 1.826999-2.362498 1.879499-2.603998C1.900499-2.666998 1.984499-3.013498 1.994999-3.076498C2.026499-3.170998 2.351998-3.758997 2.708998-4.042497C2.939998-4.210497 3.265498-4.409997 3.716997-4.409997S4.283997-4.052997 4.283997-3.674997C4.283997-3.107998 3.884997-1.963499 3.632997-1.322999C3.548998-1.081499 3.496498-.955499 3.496498-.745499C3.496498-.252 3.863997 .1155 4.357497 .1155C5.344496 .1155 5.732996-1.417499 5.732996-1.501499C5.732996-1.606499 5.638496-1.606499 5.606996-1.606499C5.501996-1.606499 5.501996-1.574999 5.449496-1.417499C5.291996-.860999 4.955997-.1155 4.378497-.1155C4.199997-.1155 4.126497-.2205 4.126497-.462C4.126497-.724499 4.220997-.976499 4.315497-1.207499C4.483497-1.658999 4.955997-2.908498 4.955997-3.517498C4.955997-4.199997 4.535997-4.640997 3.748497-4.640997C3.086998-4.640997 2.582998-4.315497 2.194498-3.832497L3.013498-7.171495Z'/>
<path id='g0-108' d='M2.708998-7.171495C2.708998-7.181995 2.708998-7.286995 2.572498-7.286995C2.330998-7.286995 1.564499-7.202995 1.291499-7.181995C1.207499-7.171495 1.091999-7.160995 1.091999-6.961495C1.091999-6.845995 1.196999-6.845995 1.354499-6.845995C1.858499-6.845995 1.868999-6.751495 1.868999-6.667495L1.837499-6.457496L.5145-1.207499C.483-1.091999 .462-1.018499 .462-.850499C.462-.252 .923999 .1155 1.417499 .1155C1.763999 .1155 2.026499-.0945 2.204998-.4725C2.393998-.871499 2.519998-1.480499 2.519998-1.501499C2.519998-1.606499 2.425498-1.606499 2.393998-1.606499C2.288998-1.606499 2.278498-1.564499 2.246998-1.417499C2.068499-.734999 1.868999-.1155 1.448999-.1155C1.133999-.1155 1.133999-.4515 1.133999-.5985C1.133999-.850499 1.144499-.902999 1.196999-1.102499L2.708998-7.171495Z'/>
<path id='g0-111' d='M4.924497-2.866498C4.924497-3.958497 4.189497-4.640997 3.244498-4.640997C1.837499-4.640997 .4305-3.149998 .4305-1.658999C.4305-.6195 1.133999 .1155 2.110499 .1155C3.506998 .1155 4.924497-1.333499 4.924497-2.866498ZM2.120999-.1155C1.669499-.1155 1.207499-.441 1.207499-1.259999C1.207499-1.774499 1.480499-2.908498 1.816499-3.443998C2.341498-4.252497 2.939998-4.409997 3.233998-4.409997C3.842997-4.409997 4.157997-3.905997 4.157997-3.275998C4.157997-2.866498 3.947997-1.763999 3.548998-1.081499C3.181498-.4725 2.603998-.1155 2.120999-.1155Z'/>
</defs>
<g id='page1'>
<g fill='#000001'>
<use x='88.501797' y='-49.437352' xlink:href='#g0-104'/>
<use x='94.551468' y='-49.437352' xlink:href='#g0-101'/>
<use x='99.440545' y='-49.437352' xlink:href='#g0-108'/>
<use x='102.780139' y='-49.437352' xlink:href='#g0-108'/>
<use x='106.119733' y='-49.437352' xlink:href='#g0-111'/>
</g>
</g>
</svg>

@mark-zz That's weird as it totally works on my computer (Windows 10). I guess it could be the different behaviors of LaTeX compilers. Could you give me your svg file generated?
Mine is shown below:
MTex("hello")

<?xml version='1.0' encoding='UTF-8'?>
<!--    I can't generate using MTex because it keeps popping up the key errors.
I use MikTex too.

@YishiMichael Here is the svg generated by Tex('hello'). I can't generate using MTex because it keeps popping up the key errors. I use MikTex too.

Please open a new issue and attach your .svg file.

@YishiMichael Here is the svg generated by Tex('hello'). I can't generate using MTex because it keeps popping up the key errors. I use MikTex too.

It appears to me that the .svg file is successfully generated, and some error pops up when parsing it. You may look up where you store these intermediate files and find the specific .svg file. I need to check it to figure out whether it's generated in an unexpected style.


PAS-1060:Implement Welsh translated Accessibility Statement 260321

PAS-1060
Implement Welsh translated Accessibility Statement 260321
Implement Welsh translated Accessibility Statement 260321
PR Suggestions

Have you looked at the JIRA story to make sure all Acceptance Criteria has been met?
Have you done a visual check of the changes?
Is there any still commented or unused code? Lingering printlns?
Have things been implemented in a complicated way?
Are the test still over the coverage threshold?
Does the compiler throw a lot of warnings?
Have methods and tests been named clearly?
Were there any changes in the config? Do changes need to be made in app-config-???

Checklist PR Raiser

[x]  I've made every effort to commit high quality, clean code and I have executed relevant static analyses to be sure
[x]  I've included appropriate tests with any code I've added (Unit, Integration, Acceptance etc.)
[x]  I've executed the acceptance test pack locally to ensure there are no functional regressions (Performance tests where relevant)
[x]  I've squashed my commits - including the JIRA issue number in the commit message
[ ]  I've run a dependency check to ensure all dependencies are up to date
[ ]  I've added the links for relevant PRs for AT/PT in description

Checklist PR Reviewer

[ ]  I've made every effort to commit high quality, clean code and I have executed relevant static analyses to be sure
[ ]  I've included appropriate tests with any code I've added (Unit, Integration, Acceptance etc.)
[ ]  I've executed the acceptance test pack locally to ensure there are no functional regressions (Performance tests where relevant)
[ ]  I've squashed my commits - including the JIRA issue number in the commit message
[ ]  I've run a dependency check to ensure all dependencies are up to date
[ ]  I've verified the links for relevant PRs for AT/PT in description before approval

retest this please


Get Node3D.global_rotation from orthonormalized global basis

Fixes #95051.
The previously used Basis::get_euler assumes the given Basis is orthonormal, the article linked in there is about decomposing rotation matrix (so not scaled):
https://github.com/godotengine/godot/blob/3978628c6cc1227250fc6ed45c8d854d24c30c30/core/math/basis.cpp#L457-L461
(not sure about the milestone)

Does this also fix  https://github.com/godotengine/godot/issues/90727?

Does this also fix #90727?

No, #90727 is about Basis.get_euler/Basis.get_scale. This PR changes only how Node3D.global_rotation is calculated.


[DevX] Improve the developer experience by fixing minor issues

Some minor issues I observed while running a sanity check of OMRChecker on my machine.

Unnecessary output folder created: _MULTI_/stack for sample1.
Spacing issue in the output Matching Marker:	 Q1: max_t 0.451	Q2: max_t 0.582	Q3: max_t 0.692Q4: max_t 0.547	Optimal Scale: 0.46. Also the name Q1, Q2, etc. can be changed to something more readable.
Output file naming: need correction in <outputs/sample1/MobileCamera/CheckedOMRs/stack/sheet1.jpg_1_stack.jpg>.
In the output of sample1 and sample4 :  'q8' is not there in excel & q11 is repeated twice.

Noted.


Major improvements - add: gemini, mistral - fix:ollama, long polling -Improve:UI, backend

This PR resolves these issues:
https://github.com/stitionai/devika/issues/2 https://github.com/stitionai/devika/issues/3 https://github.com/stitionai/devika/issues/4 https://github.com/stitionai/devika/issues/6
https://github.com/stitionai/devika/issues/16 https://github.com/stitionai/devika/issues/19 https://github.com/stitionai/devika/issues/27 https://github.com/stitionai/devika/issues/29 https://github.com/stitionai/devika/issues/37 https://github.com/stitionai/devika/issues/43 https://github.com/stitionai/devika/issues/46 https://github.com/stitionai/devika/issues/57 https://github.com/stitionai/devika/issues/102 https://github.com/stitionai/devika/issues/119
Note
if this PR is in the draft, it may still have some unstable code. You can You can try at your own risk.
currently working on improving backend results.
What's updated
Backend

[x] Add Gemini and Mistral models
[x] Handle Ollama error in a better way
[x] Removing long polling. replace with a socket with threading support
[x] add google search
[x] update the backend code for optimization

[x] reformat the imports so everything is running smoothing in threads
[x] Improve the class object initialization method for better management
[x] update the parameter and return type of classes and methods
[x] reformat the code for better visibility

[x] dividing many APIs into flask blueprints
[x] make total token workable with socket so real-time
[x] combine models, projects, and search engine list APIs
[x] prompt and logic improvement

Frontend

[x] update the UI to enhance user experience
[x] remove long polling. replace with socket
[x] Add both settings and logs routes
[x] Update the tailwind class and make it responsive
[x] Try to minimize the API calls
[x] Handle local storage in a better way
[x] Add functionality to delete project
[x] List the model by companies
[x] have the option to select the search engine

overall

[x] add sample.config.toml
[ ] update README.MD
[ ] Improve installation and usage guide

New UI

Setting page:

Log page:

Squash and Merge
Maintainers: If you decide to merge this, please remember to Squash and Merge into a single commit, so the helper script and temporary files created by it will not become part of the record. (Apologies if I'm stating the obvious.)

please commit the changed files to main repo

Still lot to update. I'll give update in the discord.

Hey @Israel-Laguan thanks for your UI review but wait some time. it's old files and didn't align with the current branch. that's why it is still in draft. I push the latest changes soon.

Hey @ARajgor, I see that this PR packs a lot of changes. Isn’t it time to break down newer additions to smaller ones?

I agree, better to make smaller PRs

Agree and would add, that it would be good to used TAGS and a proper iterative release methodology to help users track major updates.

indeed major improvements!
about splitting to smaller PRs, one suggestion would be like:

apis and UI (lots of great improvements)
ollama and agent.py related
google search
gemini, mistral

There's something blocking, once the agent is busy the server is unresponsive.
Ideally we'd use async in such situations. This happens when the agent is browsing websites via Google.
I might take a look tomorrow, thanks for the great work!

@ARajgor This is awesome! Thank you for the PR, I will be reviewing the changes soon and see about merging them. This currently has a lot of merge conflicts to be resolved, will look into it! ❤ 🙌

I would suggest to add the OPENAI_API_BASE parameter to the settings panel so that it can use any compatible OpenAI endpoints, like LMStudio, OLLAMA (this time in a generic way), OpenRouter, DeepSeekCoder, Together.ai and so on.

File "C:\Users\pc\Desktop\devika\.venv\lib\site-packages\playwright\sync_api\_context_manager.py", line 48, in __enter__
    raise Error(
playwright._impl._errors.Error: It looks like you are using Playwright Sync API inside the asyncio loop.
Please use the Async API instead.
Link ::  https://elogic.co/blog/how-to-write-an-ecommerce-website-requirements-specification-document-tips-tricks-and-best-practices/
Exception in thread Thread-26:
Traceback (most recent call last):
  File "C:\Users\pc\AppData\Local\Programs\Python\Python39\lib\threading.py", line 973, in _bootstrap_inner
    self.run()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python39\lib\threading.py", line 910, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Users\pc\Desktop\devika\devika.py", line 97, in <lambda>
    thread = Thread(target=lambda: agent.execute(message, project_name))
  File "C:\Users\pc\Desktop\devika\src\agents\agent.py", line 341, in execute
    search_results = self.search_queries(queries, project_name)
  File "C:\Users\pc\Desktop\devika\src\agents\agent.py", line 91, in search_queries
    browser.go_to(link)
  File "C:\Users\pc\Desktop\devika\src\browser\browser.py", line 22, in go_to
    self.page.goto(url)
  File "C:\Users\pc\Desktop\devika\.venv\lib\site-packages\playwright\sync_api\_generated.py", line 8641, in goto
    self._sync(
  File "C:\Users\pc\Desktop\devika\.venv\lib\site-packages\playwright\_impl\_sync_base.py", line 113, in _sync
    return task.result()
  File "C:\Users\pc\Desktop\devika\.venv\lib\site-packages\playwright\_impl\_page.py", line 500, in goto
    return await self._main_frame.goto(**locals_to_params(locals()))
  File "C:\Users\pc\Desktop\devika\.venv\lib\site-packages\playwright\_impl\_frame.py", line 145, in goto
    await self._channel.send("goto", locals_to_params(locals()))
  File "C:\Users\pc\Desktop\devika\.venv\lib\site-packages\playwright\_impl\_connection.py", line 59, in send
    return await self._connection.wrap_api_call(
  File "C:\Users\pc\Desktop\devika\.venv\lib\site-packages\playwright\_impl\_connection.py", line 509, in wrap_api_call
    return await cb()
  File "C:\Users\pc\Desktop\devika\.venv\lib\site-packages\playwright\_impl\_connection.py", line 97, in inner_send
    result = next(iter(done)).result()
playwright._impl._errors.TimeoutError: Timeout 30000ms exceeded.

The "Save" button in the settings menu isn't working properly. It doesn't transmit any data to the back-end, so I had to manually add the API key to the sample.config.toml file to get Gemini functioning.

I'm going to fix the sync blocking issue and some merge conflicts today.

Have we considered using langchain anywhere?
Langchain aggregates a ton of APIs, it would be cool to let the user choose what LM Service they want to use without us writing API Wrappers for each

I would suggest to add the OPENAI_API_BASE parameter to the settings panel so that it can use any compatible OpenAI endpoints, like LMStudio, OLLAMA (this time in a generic way), OpenRouter, DeepSeekCoder, Together.ai and so on.
I would also suggest to add a custom model name (for openAI models) in the models dropdown list. Using an add custom model name edit field and an add button. And then in the dropdown appear under "Custom Models:" line.

Good idea! If this feature req is open when I write my code, I'll throw it in with the config updates
Last I checked the UI doesn't stream responses, I did see some socket code though. What's that used for @ARajgor?

The "Save" button in the settings menu isn't working properly. It doesn't transmit any data to the back-end, so I had to manually add the API key to the sample.config.toml file to get Gemini functioning.

you have to create config.toml file. sample.config.toml is for reference. check the readme.md file in my pr.

@ARajgor This is awesome! Thank you for the PR, I will be reviewing the changes soon and see about merging them. This currently has a lot of merge conflicts to be resolved, will look into it! ❤ 🙌

sorry for very big and long PR but I keep facing new problems and want add more functionalities and features so I keep added. Next time I'll make sure to push only one module.

Beautiful changes, I hope to use them as soon as possible

`    def search_queries(self, queries: list, project_name: str) -> dict:
results = {}
    def run_search():
        nonlocal results
        knowledge_base = KnowledgeBase()
        if self.engine == "Google":
            engine = GoogleSearch()
        else:
            engine = DuckDuckGoSearch()
        browser = Browser()

        for query in queries:
            query = query.strip().lower()

            """ Check if the knowledge base already has the query learned """
            # knowledge = knowledge_base.get_knowledge(tag=query)
            # if knowledge:
            #     results[query] = knowledge
            #     continue

            """ Search for the query and get the first link """
            engine.search(query)
            link = engine.get_first_link()
            print("Link :: ", link)
            """ Browse to the link and take a screenshot, then extract the text """
            browser.go_to(link)
            browser.screenshot(project_name)

            """ Formatter Agent is invoked to format and learn from the contents """
            results[query] = self.formatter.execute(
                browser.extract_text(),
                project_name
            )

            """ Add the newly acquired data to the knowledge base """
            # knowledge_base.add_knowledge(tag=query, contents=results[query])

        browser.close()

    thread = Thread(target=run_search)
    thread.start()
    thread.join()

    return results`
  By changing the code inside the agent.py file in this way, I think it was solved playwright but there are other bugs.

1-)The screenshot of the sites it searches does not appear
2) file[code] must be integer error
3-) does not follow the written plan in order and gets stuck

Hey @ARajgor, would you be able to resolve all the conflicts in this PR? Will merge this right away! 🙌

Hey @ARajgor, would you be able to resolve all the conflicts in this PR? Will merge this right away! 🙌

have you reviewed the code and new changes?

@ARajgor yes, it looks good to me even though it's a breaking change on almost all components. I might integrate some parts here and there to some changes I am working on myself. Will be posting in this thread as I work on it.

@ARajgor yes, it looks good to me even though it's a breaking change on almost all components. I might integrate some parts here and there to some changes I am working on myself. Will be posting in this thread as I work on it.

okay. I'll do my best to resolve those. currently, I have my thoughts on this project and want to contribute more but right now I am pausing my development and finalizing the main branch.
also small request from my side, the discord server needs some structure. some people wanna help you out in managing the server.

@ARajgor Just reviewed the PR, LGTM. Thank you! ❤ 🙌


Minor grammar fixes to README.md

Removed the duplicate ├── static/ line on the project tree and made minor grammar fixes on README.md

Thank you for your contribution!


Discussion: how to fix text width calculation

See https://github.com/ratatui-org/ratatui/pull/1249#issuecomment-2266337009 and https://github.com/ratatui-org/ratatui/pull/1270#discussion_r1702440545
UnicodeWidthStr::width counts newlines as one unit which is not what we want for terminal rendering. We need to figure out how we want to fix this. Some options:

Slap some one-off fixes in Line/Span. Clearly a bad idea as there are 45 usages of width so things wouldn't be consistent.
Replace width with our own extension (maybe called renderable_width) which does the right thing for ratatui.
Match rendering to whatever width says, e.g. render a space for a newline.

I don't really have a preference between 2 and 3, but I think most people prefer 2?
cc: @joshka @EdJoPaTo

Not sure where the problem is. Rendering ignores graphemes of width 0 and control characters. Only after that the width is relevant for rendering. At that point \n is gone and doesn't influence anything.
The only thing I see here are multiple places of truth, but that should be fixed by reducing the amount of render functions to ideally 1. Currently, set_stringn feels like the most basic one which should be used (indirectly) in all the other places. (For example #1259 starts to get rid of some of them.)

Option 2, but it we don't need an extension. Text/Line/Span::width are just methods. They should return the width that will be rendered, not the width including control characters.

Not sure where the problem is.

I guess my concern is that there a number of usages of UnicodeWidthStr that may or may not be correct. Some examples:

https://github.com/ratatui-org/ratatui/blob/8061813f324c08e11196e62fca22c2f6b9216b7e/src/widgets/scrollbar.rs#L581
https://github.com/ratatui-org/ratatui/blob/8061813f324c08e11196e62fca22c2f6b9216b7e/examples/table.rs#L301
https://github.com/ratatui-org/ratatui/blob/7e1bab049bc5acd4a5cb13189e8f86fec5813ab8/src/buffer/buffer.rs#L369

If we only touch Span, I'm worried it'll be a game of wack-a-mole with the other uses.

I guess my concern is that there a number of usages of UnicodeWidthStr that may or may not be correct. Some examples:

Scrollbar - there's a possibility that it would make sense to make this actually be a Span instead of a string. That would make it possible to do colored scrollbars. Noone has asked for this yet though, and I think it might be difficult to change this easily.
That table code is in the example - which doesn't really need to change for this (though we should make some docs about how unicode width calculates things differently from how they're displayed and add that to the website perhaps)
The buffer change is likely correct, it's acting on symbols that have already been filtered to not contain newlines at that point. It's possible we should do the symbol counting earlier however, and we need to fix this up for better filtering (so we can do things like let ansi codes pass through correctly which is a larger issue than just calculating width).

The other three meaningful places in a simple search are:

Paragraph / Reflow - this probably needs to be thought about a bit regardless
Bar value labels - should probably be Span/Line instead of &str
List highlight symbols - should probably also be Span / Line instead of &str

Off-topic:

there's a possibility that it would make sense to make this actually be a Span instead of a string. That would make it possible to do colored scrollbars.

 If it should use Span, then remove the style options at the same time.

Off-topic:

there's a possibility that it would make sense to make this actually be a Span instead of a string. That would make it possible to do colored scrollbars.

 If it should use Span, then remove the style options at the same time.

I think I'd lean to maybe not there, as these seem still useful as the scrollbar sets will likely still be unstyled, and it's easier to call 4 methods to style the track/thumb/begin/end than to create a whole new object for this. Especially if you just want one of them styled. But that's a weak opinion that would be contradicted by showing that the interface is easier with spans.

Ok, so to summarize everybody would be ok with just fixing Span::width?

Coming back to this after #1385 - related discussion;

https://github.com/unicode-rs/unicode-width/issues/60
https://github.com/unicode-rs/unicode-width/issues/66

To summarize, newlines are treated as 0 length in 0.1 and 1 in 0.2: https://github.com/unicode-rs/unicode-width/commit/9eaafa5f91b737bb5958d46f9647aa11104c6f25#diff-2ad10836ccce5ac2056d5679cc92449d9ff9094d4ff5c5803f65b5dd1d52ef19R426
However, that's not why our CI is currently failing. It's due to https://github.com/unicode-rs/unicode-width/commit/afab363383557c39942706c9441a5670e321b4a0
Simple repro:
assert_eq!("👩".width(), 2); // Woman
assert_eq!("🔬".width(), 2); // Microscope
assert_eq!("👩🔬".width(), 4); // Woman scientist -> should be 4 but it expect 2

Zero width joiner (U+200D) is no longer counted as 1.

So, how should we proceed with this? I see two options:

Upgrade to 0.2 and go with the 2nd option originally suggested above for patching things.
Don't upgrade.

Thoughts?

- assert_eq!("👩🔬".width(), 4);
+ assert_eq!("👩🔬".width(), 2);

This new behaviour is what we want, right?
I would vote for upgrading to v0.2 but pinning the dependency, and manually upgrading every now and then. Is it possible to pin a version like that? It would be nice to not have a minor version upgrade break unexpectedly because we can put the time and effort into solving the problem when we get a chance to plan for it.

This new behaviour is what we want, right?

I don't know if we want it, there is #925 and #75 which are related but I might still be lacking some context.

I would vote for upgrading to v0.2 but pinning the dependency, and manually upgrading every now and then.

Sounds reasonable, but note that we need to update our tests accordingly and this will probably be a breaking change.

Is it possible to pin a version like that? It would be nice to not have a minor version upgrade break unexpectedly because we can put the time and effort into solving the problem when we get a chance to plan for it.

Yup, I think it's possible.

The problem with a pin is that it means that any code that also uses unicode-width will need to also be pinned (I htink). This might lead to a situation where an app calls our code and some other code that calls unicode width expecting certain behavior. I might be wrong about that though. It's worth testing to see what happens there.

Unicode defines Emojis as width == 2. Joined Emojis are width 2. Most Terminals display them by printing the participating emojis rather than the joined one, so it's not a bug of ratatui. (Unicode allows for this case, but its not the one someone should aim for)
Also, unicode-width states:

Relying on any character producing a stable width in this crate is likely the sign of a bug.

Basically: When the implementation details of unicode-width are relevant, then the code is likely wrong.

So does that give us to freedom to just follow unicode-width (thus the unicode standard) and if something happens we lay the blame on unicode 🤔 👀

This might lead to a situation where an app calls our code and some other code that calls unicode width expecting certain behavior. I might be wrong about that though. It's worth testing to see what happens there.

I was not wrong - pinning to a specific point revisions negatively affects our dependents who might make different choices about which point version to pin: https://github.com/zhiburt/tabled/issues/423#issuecomment-2285988660

However this means that you can't use tabled if you have dependencies that also use unicode-width, like ratatui:

error: failed to select a version for `unicode-width`.
    ... required by package `papergrid v0.12.0`
    ... which satisfies dependency `papergrid = "^0.12"` of package `tabled v0.16.0`
    ... which satisfies dependency `tabled = "^0.16.0"`
versions that meet the requirements `=0.1.11` are: 0.1.11

all possible versions conflict with previously selected packages.

  previously selected package `unicode-width v0.1.13`
    ... which satisfies dependency `unicode-width = "^0.1.13"` of package `ratatui v0.28.0`
    ... which satisfies dependency `ratatui = "^0.28.0"`

Moving to 0.2.0 would make it possible to have two versions, but would still run into the same problem if we then pinned the patch version. I think this is probably reasonable though, and we should just make it clear why we're doing this. That perspective is that (for the docs):

It's reasonable for the unicode-width crate to change so that it more closely adheres to the unicode standard, but doing that in patch versions makes our usages of this crate subject to changes that will happen without notice. This can often affect our dependents and any apps they build using Ratatui, and often this means end users of those apps are the first impacted parties, not the app or library developers. So to avoid that we choose to pin unicode-width at a specific patch version.

So I also agree that we should move to 0.2.0 and pin at the latest patch version, we should manually check the changes in each patch version to understand their impact on rendering widgets.

If we vendor a version of unicode-width, that would solve the problem, right? I'm not saying we should do that though because it seems extreme. It would have been nice if there was an alternative to pinning that that basically did the equivalent of "vendor".

I don't like the vendoring approach in general as it has its own set of problems. Not sure that we need to go too deep on the problems of pinning until they rear their head again. Likely it would be better worth our time to spend it on understanding the changes that impact how unicode-width affects rendering.


Container position = absolute

Why container position made "absolute" (On this line)? It make hard to make layout. Is there are exists necessity in this? For positioning "relative" should be fine. I have tried replace to "relative" and it works fine

Hi,
i will check possible side-effects of changing container position style from absolute to relative.

Thank you very much

I've published 0.4.1 version on npm with position: relative for container.


tests broken under OS X - from valgrind fix

re: #688 - since then if setrlimit is higher than maxconns we don't try to change the fd limit. memcached then allocs the connection structure based on the max_fd returned from getrlimit... which under OS X seems to be 2^63-1 by default :)
The original problem is the setrlimit fails under valgrind... but it's hard to detect if you're running under valgrind. so for the debug binary we skip the setrlimit.
Need to:

check again if there's an environment variable we can use to determine if valgrind is running. seems weird there wouldn't be?
If we can't tell: ignore setrlimit failures for the debug binary, but always try to set them.
If we can tell: only skip setrlimit if valgrind is in use.

So... no environment variables. I noted in the other PR that we could check for valgrind at compile time... but if you want to check it at runtime with portable binaries you do need to include a rather large header file.
Which we sort of have a place for now (vendor/) so maybe that's not awful... I'm leaning toward ignoring the errors in debug mode though.

out in 1.6.13


Embedded MWC Node, getting "TOR process is already running." message continuously.

Description:
In Mainnet QT wallet, selected "Embedded MWC Node" with the option "Don't use TOR for MWC Node".
After wallet restart and Syncing being started, getting "TOR process already running." messages continuously.
Please refer to the below screenshots for more details.

@Viv-dev-mwc,  please provide steps to reproduce it reliably.
Such error can occasionally happens. I can't find steps to reproduce it with a current build.
Playing with embedded node and Tor setting option doesn't make it fail.

Steps to follow

Login to QT wallet and select "Embedded MWC Node" with the option "Don't use TOR for MWC Node".
Restart the wallet.
While sync is in-progress I'm getting "TOR process is already running." message continuously.

Yes, that what I do and it works fine for me. I can restart wallet without any issue.


PolymorphismBoxing for Any/Nothing

#453 still occurs unchanged with this.

@phischu Which example was it that should be fixed by this? (I lost track of the failing llvm examples)

@marzipankaiser thanks for the quick fix. Is there a test that would fail before and now passes?

The generated core with hacked-in type info for #453 is:
def main322() =
  def loop324() =
    let _407 = println18("!")

    loop324();
  let x326 = run {let tmp339408 = run {loop324()}

  <>} ///  <- here, we return Nothing, so x326 will be bound with type Nothing

  infixAdd32(x326:Int233, 1)

Here, x326 will not be unboxed (although it is Nothing), since we only look for type mismatches locally, i.e. we do not track an environment of the types of bound variables. However, to detect at the use site of x that this is not an int, we would need to. I wonder, maybe it is possible to construct this with "normal" (parametric polymorphism-related) boxing :thinking:

@marzipankaiser thanks for the quick fix. Is there a test that would fail before and now passes?

I have not found one yet. But I'm open for suggestions.

I believe the cleanest solution for this and transitively for #453 is to add an explicit upcast expression to Core.

Do we need explicit upcasts or is it enough to annotate val bindings with the annotated type? One thing that concerns me about explicit upcasts is how they will interact with optimizations (they need to be able to see through them, but at the same time keep them if necessary).


pulling in bootstrap compoments

hey, is it possible to include only certain elements? e.g. if i don't want to use bootstrap's grid, for example?

See issue #71 for a way to make a local copy of _bootstrap.scss.  You can then comment out whatever @import's you don't want.
The grid is rather pervasive and referenced in many places.  Just search for "span".


Fix appxmanifest

Add uap3ns handler, move Extensions within Application

I had these changes on my PC actually, but this saved me from copying them over :-)


[docs] Generate API docs

Staged https://20181211t022319-dot-polymer-lit-element.appspot.com/api/index.html
typedoc --readme none --mode modules --theme minimal --plugin none --target ES6 --ignoreCompilerErrors --exclude '{**/*test*,**/node_modules/**,**/test/**}' --excludeNotExported --excludePrivate --out ./docs/api ./src/lit-element.ts ./src/lib/*.ts
fixes #339

Can we mark the imported render method private? Currently, the lit-html "render" method shows up as a property and the LitElement render method shows up as a method.
https://20181211t022319-dot-polymer-lit-element.appspot.com/api/classes/_lit_element_.litelement.html#render
Having two methods with the same name that do completely different things, and have different signatures is hella confusing. It doesn't help that the lit-html render method shows up first in the docs.

Also "Constructor" looks really weird here: https://20181211t022319-dot-polymer-lit-element.appspot.com/api/modules/lib_decorators.html#constructor
... and on the same page, "query" and "queryAll" show up as variables with really weird signatures, as opposed to the other decorators that look more or less normal.
UpdatingElement docs include the license header in place of module docs.
Currently, we include all of the HTMLElement docs as inherited, so you can either turn off inherited in LitElement (and not see stuff from UpdatingElement) or turn it on, and see an absolute flood of props, etc. Wonder if we could treat these as external somehow.


Turn off library evolution for stdlib by default, keep it on only for Darwin

Based on the discussion in https://github.com/apple/swift/pull/33443. This PR restricts the usage of -enable-library-evolution for the standard library only to Darwin platforms.

@swift-ci please test

Build failed
Swift Test Linux Platform
Git Sha - 89e19aac8dc2dcd126c0de93f9e437fc5612ce32

I'll be happy to fix tests as needed (I'm using the PR to discover what tests will break).
But your first part is more important: Are you suggesting we should keep using -enable-library-validation for stdlib on Linux?
Note that I'm mostly just a messenger here; I definitely do see your point about causing more divergence between the platforms, and potentially hitting bugs that only exist on one of them. To me, it seems like that a no-LV stdlib should be a supported (and tested) configuration, though — with my motivation being the "mininal" size-optimized stdlib I'm trying to bring up (see https://github.com/apple/swift/pull/33286).

@slavapestov we don't have a stable ABI on Linux... why would we compile the stdlib with resilience?

@swift-ci please test Linux platform

Build failed
Swift Test Linux Platform
Git Sha - 89e19aac8dc2dcd126c0de93f9e437fc5612ce32

I think working through any issues this exposes would be worth it in principle, since it'd be great not to pay the library evolution penalty on platforms where it doesn't buy anything. If it ends up being too much of a quagmire for what @kubamracek is currently working on, we don't have to do it right away though, and maybe we should go back to selectively disabling it for new configurations first.

@swift-ci please test Linux platform

Build failed
Swift Test Linux Platform
Git Sha - 1ce3b3514e201bb243c1e6905c367b9eb8c851d6

@swift-ci please test Linux platform

Build failed
Swift Test Linux Platform
Git Sha - 1ce3b3514e201bb243c1e6905c367b9eb8c851d6

@swift-ci please test Linux platform

Build failed
Swift Test Linux Platform
Git Sha - f5e0acb2b6574df05d3c7e7ccb3293dd447703f3

@swift-ci please test Linux platform

Build failed
Swift Test Linux Platform
Git Sha - ad10e7d8e16e2b00a4c90390fd36f265856cf793

@swift-ci please test Linux platform

I've marked all failing tests as UNSUPPORTED, but that's just an experiment to see if that's really all the fallout from turning off resilience. I don't actually intend to land this PR as it is now.

Build failed
Swift Test Linux Platform
Git Sha - ad10e7d8e16e2b00a4c90390fd36f265856cf793

@swift-ci please test

Build failed
Swift Test OS X Platform
Git Sha - ad10e7d8e16e2b00a4c90390fd36f265856cf793


Use the not identical operator to check if a post starts with an  tag.

Hello @amyquispe, @kylehg, @mikkot,
Please review the following commits I made in branch 'chad-fix-featured-images'.
73ce1773c46d9116c847cc8a006b340fd75b46da (2016-06-06 20:14:04 -0700)
Use the not identical operator to check if a post starts with an  tag.
Fixes https://github.com/Medium/medium-wordpress-plugin/issues/97
R=@amyquispe
R=@kylehg
R=@mikkot

lgtm


Serialisation

Are there any plans yet for adding support for model serialisation?

I haven't formalized anything yet and I think it will be good to address it after reviewing the API for training (as discussed in #120).
With that said the only real criteria is that it works on stable.

Ok, thanks.

To achieve this, it is better to implement de/serialization on Vector and Matrix from rulinalg before.


Add a copy button to copy the generated url

Add a button at the end of the endpoint url bar to copy the url

You can add the add to clipboard button, here is the preline UI that you can use Preline


Pull and rebuild only if Dockerfile changed

Is it possible to pull image generated from given Dockerfile from a registry and rebuild it if and only if Dockerfile changed?
I tried to do just
docker pull mytag && docker build -t mytag .

but it doesn't work, docker tries to rebuild the image. Is it possible to do what I described in docker? If not I think that this feature would be very handy.

No, this won't work. When pulling an image from a registry, you don't pull the build cache that docker uses to speed up builds. Determining if an image(layer) needs to be rebuilt depends on both the Dockerfile, and the build context - the files used to build the image - so Docker needs access to both, to determine if the cache can be used.
The moment you run docker build, the Dockerfile and the build context is sent to the daemon-side builder, and if no rebuild is required for a later, and it's available in the local cache (I.e., you built that layer before on that machine) you'll see "using cache" in the output.
Is there a reason you're pulling the image first, before building it?

@thaJeztah thanks for good explanation!
I have a repository with Jupyter notebooks that require lots of custom libraries. I've created a Dockerfile for building a container with required setup of Jupyer and libraries and set up a run.sh script that executes docker build && docker run, so everyone could run by notebook just by executing this script.
I like in this set up that each modification of Dockerfile or it's context automatically rebuild the container, so I don't have to worry about manually rebuilding of the image, so it simplifies development.
The only problem is that it takes a very long time to run docker build on a new machine, so if someone else try to see my notebooks using this script it would take a long time. So I want to employ dockerhub to allow others run notebooks instantly, but don't want to lose guarantees that run.sh always runs the actual version of container based on current state of Dockerfile and context.

Depending on your exact situation, a good solution could be to split your image into two parts; a "base" image, that contains the parts of your image that don't change much, and an image that contains the code that's dependent on the local changes. For example
(Dockerfile.base)
FROM ubuntu:14.04
RUN apt-get update && apt-get install -y \
  package-a \
  package-b \
  package-c

COPY some-files
RUN some-stuff

and a Dockerfile that needs to be rebuild on local changes;
FROM my-base-image:latest
ADD local-files /somewhere
RUN steps-to-compile/do-whatever

The first image would be built with docker build -t my-base-image:latest -f Dockerfile.base ., and can be pulled from Docker Hub (or your local registry).
The second Dockerfile is what users have to build when they change code.

Base image is good solution IMO. Closing as inactive.


Tests run on a port != 8983... but this is messy.

@afred? This is not really ready to go, but

tests are passing locally
and I'm not sure about the right way of carrying this forward:

blacklight.yml doesn't seem to do interpolation, and I'm not sure if we have much flexibility there, so maybe other bits of code need to pull their data from it?

explore using different cores instead. Closing.


Add roles

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.


How to setup Instagram photo stream (based on hashtag or user)

Hi,
I can't seem to find anything about setting up a instagram photo stream and hoped maybe someone can assist me with setting this up?
Love the project!

@dionsamsoe this is a bit complicated as Instagram don't have an API you can use for this without setting up a developer account and an app etc. I briefly investigated doing it too and couldn't find a simple way, although that was probably a good 9 months ago by now so maybe things have changed (or maybe not, based on your findings!).


Is there any UI tool to create adaptive cards?

Hi @kenyeung128,
The Visualizer here is our primary tool right now
http://adaptivecards.io/visualizer/
We also have a VS Code extension that enables a live preview in the editor
https://docs.microsoft.com/en-us/adaptive-cards/resources/tools#visual-studio-code-extension
Is there another kind of tool you were looking for?

A designer with drag and drop for valid elements, drop down to select "template" as in Live Tile/HTML/Notification/XAML implementations, and responsive sizing tests. - Export the XML/C#/JS code needed.
Maybe overkill, but could be a good Visual Studio feature, along with a future updated XAML designer, When AdaptiveCards become the defacto UWP method for data display.  Could work as a native XAML control, where you load in an XML source also.

Hi, Matt,
Yes, like Martin said, a designer where drag and drop with elements, rather
writing json to design, as it takes quite some time to build different
cards. It would be very helpful with a designer tool.
ᐧ
Ken Yeung
*CEO & Co-founder of *Clare.AI http://clare.ai/
<EMAIL_ADDRESS>| Skype: denmarkken | Mobile: +852 5333 2683
Building Natural Asian Language AI Digital Assistants
On Thu, Aug 10, 2017 at 12:38 AM, Martin Anderson<EMAIL_ADDRESS>wrote:

A designer with drag and drop for valid elements, drop down to select
"template" as in Live Tile/HTML/Notification/XAML implementations, and
responsive sizing tests. - Export the XML/C#/JS code needed.
Maybe overkill, but could be a good Visual Studio feature, along with a
future updated XAML designer, When AdaptiveCards become the defacto UWP
method for data display. Could work as a native XAML control, where you
load in an XML source also.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/Microsoft/AdaptiveCards/issues/538#issuecomment-321311092,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AHOSTgvk615rxIBCjKQKwOc2XVp8RJVhks5sWeBvgaJpZM4OxrDp
.

I think we can consider this done, right @matthidinger?

Yessir! Check out the all-new designer!


modificactions to goedel

@palmskog @Zimmi48
goedel is a great contribution, and is worth maintaining !
Nevertheless, if we want to use it also as a library of primitive recursive functions (for instance in coq-hydra-battles), there is a lot of work to be done.

add documentation (files of examples, coqdoc comments, text), especially for functions defined by interactive proofs.
add tactics
use "modern" coq style (bullets, implicit arguments, type classes, ...)

I created a branch new-stuff for these improvements (which may take a long time)

@Casteran maybe it is worthwhile to organize and package the primitive recursive function theory separately? This would be some kind of inverse of how two separate developments were brought together in hydra-battles. We just got some experience of setting up boilerplate and continuous integration for a monorepo with dependencies (https://github.com/coq-community/topology).

@Casteran maybe it is worthwhile to organize and package the primitive recursive function theory separately? This would be some kind of inverse of how two separate developments were brought together in hydra-battles. We just got some experience of setting up boilerplate and continuous integration for a monorepo with dependencies (https://github.com/coq-community/topology).

@palmskog
Ok, it's also a suggestion from @Zimmi48 .
There are 8/46 modules  which depend on pocklington:
PRreprsentable, chRem, codSysPrf, fixpoint,  goedel1, goedel2,, rosser, and rosserPA.
So, the 38 remaining modules may be in a big theory on PR functions and basis of PA.
The rest would be specific to Gödel's theorem.

@palmskog
Ok, it's also a suggestion from @Zimmi48 .
There are 8/46 modules  which depend on pocklington:
PRreprsentable, chRem, codSysPrf, fixpoint,  goedel1, goedel2,, rosser, and rosserPA.
So, the 38 remaining modules may be in a big theory on PR functions and basis of PA.
The rest would be specific to Gödel's theorem.

@Casteran this kind of split sounds quite straightforward to do, but it takes some fiddling to get the boilerplate files right. What should the namespace and package be called? PrimitiveRecursion and coq-primitive-recursion? Let me know what you think and if we should try it in the new-stuff branch.

@Casteran this kind of split sounds quite straightforward to do, but it takes some fiddling to get the boilerplate files right. What should the namespace and package be called? PrimitiveRecursion and coq-primitive-recursion? Let me know what you think and if we should try it in the new-stuff branch.

@palmskog
Yes, PrimitiveRecursion and coq-primitive-recursion are OK. I like  alst the shorter names Ackermann and coq-ackermann.
What do you think of them?
In new-stuff, the file primRec.v is bulletized and indented, and there is  a small new file : PrimRecExamples.v (under development, but OK).

@palmskog
Yes, PrimitiveRecursion and coq-primitive-recursion are OK. I like  alst the shorter names Ackermann and coq-ackermann.
What do you think of them?
In new-stuff, the file primRec.v is bulletized and indented, and there is  a small new file : PrimRecExamples.v (under development, but OK).

I think Ackermann is a good name, and it fits well together with "Goedel". So, unless there are objections, I will split up new-stuff later tonight.

I think Ackermann is a good name, and it fits well together with "Goedel". So, unless there are objections, I will split up new-stuff later tonight.

There are now Git-based opam packages coq-goedel and coq-ackermann in the extra-dev opam repo that can be depended on in hydra-battles, for example.
While we could do an actual release/tag of the split goedel repo, I'm hesitant to do this right now since we only build the packages with Dune, which is not yet long-term-supported for Coq use.
@Zimmi48 do you have any opinion how this should be handled? We could add boilerplate to make the packages build separately with coq_makefile, but this would mean introducing quite a lot of duplication, just to be Dune-free in the released opam repo. Other projects using Dune will have similar dilemmas.

There are now Git-based opam packages coq-goedel and coq-ackermann in the extra-dev opam repo that can be depended on in hydra-battles, for example.
While we could do an actual release/tag of the split goedel repo, I'm hesitant to do this right now since we only build the packages with Dune, which is not yet long-term-supported for Coq use.
@Zimmi48 do you have any opinion how this should be handled? We could add boilerplate to make the packages build separately with coq_makefile, but this would mean introducing quite a lot of duplication, just to be Dune-free in the released opam repo. Other projects using Dune will have similar dilemmas.

I wouldn't worry about this and publish into released with a dependency on Dune. If early versions of the Coq language happened to be dropped in future Dune versions, we would just need to add an upper bound to the Dune version constraint (but we don't even need to do that yet).
Another suggestion I made is that the content of the goedel repository could be moved to the hydra-battles repository if it allows working on both at once more easily.

I wouldn't worry about this and publish into released with a dependency on Dune. If early versions of the Coq language happened to be dropped in future Dune versions, we would just need to add an upper bound to the Dune version constraint (but we don't even need to do that yet).
Another suggestion I made is that the content of the goedel repository could be moved to the hydra-battles repository if it allows working on both at once more easily.

@palmskog  @Zimmi48
To be more precise, It would be OK to move just Ackermann into hydra-battles, letting the other files as Karl did.
For instance, if I want to prove formally that the Ackermann function is not PR (an "exercise" in Ackerman), I could use an already existing  library hydra-battles/ordinals/Prelude/Iterates.v  (containing monotony properties on iteration).
If you agree, I can experiment on a new branch of hydra-battles, and we see if its OK to change.

@palmskog  @Zimmi48
To be more precise, It would be OK to move just Ackermann into hydra-battles, letting the other files as Karl did.
For instance, if I want to prove formally that the Ackermann function is not PR (an "exercise" in Ackerman), I could use an already existing  library hydra-battles/ordinals/Prelude/Iterates.v  (containing monotony properties on iteration).
If you agree, I can experiment on a new branch of hydra-battles, and we see if its OK to change.

@palmskog @Zimmi48
I created a branch with-ackermann: seems to work nicely (I modified _CoqProject, but not the dune stuff)

@palmskog @Zimmi48
I created a branch with-ackermann: seems to work nicely (I modified _CoqProject, but not the dune stuff)

All the big reshuffling of content appears to be done now. I trust @Casteran will let us know how things go after this point, and if more meta-project discussion is needed.

All the big reshuffling of content appears to be done now. I trust @Casteran will let us know how things go after this point, and if more meta-project discussion is needed.


BMO e2e introduction blog post

We should spread the word about the new BMO e2e tests!
The blog post should mention at least the following:

The e2e tests are meant to be flexible so that they can be run both in VM-based CI and on real hardware
They are much faster than the CAPM3 e2e tests, while still extensively testing BMO
How the CI jobs are set up to work with VMs
That it is possible to run the tests with the fixture provider for quick sanity checks

/triage accepted
/cc @Rozzii

/remove-lifecycle stale

This is not an urgent but still welcomed improvement.
/lifecycle frozen

/assign


IF-314: Fix room count of factory site

Task linked: IF-314 The room count in a factory site counts all rooms of the enterprise not only of that factory site


I get an error when using claude_api.send_message()

/usr/lib/python3.10/json/decoder.py in raw_decode(self, s, idx)
353             obj, end = self.scan_once(s, idx)
354         except StopIteration as err:
--> 355             raise JSONDecodeError("Expecting value", s, err.value) from None
356         return obj, end
JSONDecodeError: Expecting value: line 1 column 1 (char 0)
I can get the conversation_id normally

I got the same error at 10 o 'clock

@KoushikNavuluri Can I help fix it

After a while, it seemed to automatically recover?

My test here was also successful.


Added Buttercup Cafe restaurant, fences.

This restaurant includes many visual assets for the building, tables,
stools and sign.
Added autotiled fences. These are primarily used to decorate the
Buttercup Cafe but can be applied elsewhere as well.

This fixes #78, but a bug in GitHub does not permit linking of old issues and old pull requests.


All the capital cities in a region organised by largest to smallest.

SELECT Name, CountryCode, District, Population
FROM city
WHERE city.ID IN ( SELECT capital FROM country WHERE region = "Caribbean" )
ORDER BY Population DESC


Grid is opaque

I'm not yet fully sure if this is an issue of this crate or a limitation of table::Table.
The grid itself is opaque and therefore it is not possible to have something behind it, like a background image.
I create this issue here to create awareness. Maybe it is even fixable.

It's a peculiarity of the Table widget.
I'm planning to also add another grid widget which uses Taffy's grid for the layout.

I could solve my problem very fast now with a different approach. I've just used a vertical Pack with multiple horizontal Packs full of same sized Frames. I realize that this is not as flexible as your approach and will not suit every situation but for my case it is sufficient as I needed a simple grid of fixed sized cells
So using Packs might also be a viable solution for some cases.

Indeed a pack of packs or flex of flexes should cover most use cases already.  It's what the calculator example in fltk-rs uses :)

I'm terribly sorry for opening this issue then. :-(
But I guess the problem might be still a problem.

No problem. I’ll keep the issue open for people who might run into it.


🐛 | AttributeError: module alsaaudio has no attribute "PCM_FORMAT_S24_3LE"

Bug
What I did
I installed the raspberry pi with current RPi OS bullseye image and ran the installer script
What happened
This error shows up in the jukebox-daemon logs:
pi@phoniebox:~ $ cat RPi-Jukebox-RFID/shared/logs/errors.log
03.06.2022 08:54:57 -  593:plugs.py           - jb.plugin            - MainThread      - ERROR    - Failed to load package: components.jingle.alsawave
03.06.2022 08:54:57 -  615:plugs.py           - jb.plugin            - MainThread      - ERROR    - Ignoring failed package load for 'jingle.alsawave'
03.06.2022 08:54:57 -  616:plugs.py           - jb.plugin            - MainThread      - ERROR    - Reason: AttributeError: module 'alsaaudio' has no attribute 'PCM_FORMAT_S24_3LE'
03.06.2022 08:54:57 -  617:plugs.py           - jb.plugin            - MainThread      - ERROR    - Detailed reason:
Traceback (most recent call last):
  File "/home/pi/RPi-Jukebox-RFID/src/jukebox/jukebox/plugs.py", line 612, in load_all_named
    load(package, load_as, prefix)
  File "/home/pi/RPi-Jukebox-RFID/src/jukebox/jukebox/plugs.py", line 594, in load
    raise e
  File "/home/pi/RPi-Jukebox-RFID/src/jukebox/jukebox/plugs.py", line 585, in load
    _PLUGINS[load_as].module = importlib.import_module(f'{package}', 'pkg')
  File "/usr/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 790, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "/home/pi/RPi-Jukebox-RFID/src/jukebox/components/jingle/alsawave/__init__.py", line 20, in <module>
    class AlsaWave:
  File "/home/pi/RPi-Jukebox-RFID/src/jukebox/components/jingle/alsawave/__init__.py", line 24, in AlsaWave
    3: alsaaudio.PCM_FORMAT_S24_3LE,
AttributeError: module 'alsaaudio' has no attribute 'PCM_FORMAT_S24_3LE'

I expected this to happen
Logs should not contain this error, a sound should be played on jukebox startup.
Further information that might help
syslog.log
Software
Base image and version

Raspberry Pi OS stable lite (bullseye, 64bit)

Branch / Release

Git state: 80710235 [2022-02-10] Release 3.2.0  (HEAD, tag: V3.2.0, origin/future3/main) [V3.2.0-dirty]

Installscript
I followed the Installing Phoniebox future3 documentation:
cd; bash <(wget -qO- https://raw.githubusercontent.com/MiczFlor/RPi-Jukebox-RFID/future3/develop/installation/install-jukebox.sh)

Hardware

Raspberry Pi 3 Model B Plus Rev 1.3
Suptronics x400 Soundcard
MFRC522 RFID Reader

As mentioned by @ChisSoc most likely because of 64bit OS.

3.4 was just released, https://github.com/MiczFlor/RPi-Jukebox-RFID/releases/tag/v3.4.0
Could you check, if your problem was fixed?

The 64Bit issue is tracked in #2041, so closing this issue.


feature request: add record-deployment

Love all these actions! The one thing I have noticed is that the actions use pact_broker while the CLI uses PACT_BROKER_BASE_URL (btw, I very much wish I'd used just PACT_BROKER_URL when I wrote all that code). What are your thoughts on the mismatch Yousaf?

it jars me a little
the naming gets hard I think
https://github.com/pact-foundation/pact_broker-client#record-deployment
Take this
  -b, --broker-base-url=BROKER_BASE_URL
              # The base URL of the Pact Broker
  -u, [--broker-username=BROKER_USERNAME]
              # Pact Broker basic auth username
  -p, [--broker-password=BROKER_PASSWORD]
              # Pact Broker basic auth password
  -k, [--broker-token=BROKER_TOKEN]
              # Pact Broker bearer token

Now if we have an env vars set for PACT_BROKER_BASE_URL / PACT_BROKER_TOKEN, I believe they are picked up by the CLI automatically?
Would I call it

broker-base-url
BROKER_BASE_URL
PACT_BROKER_BASE_URL
pact_broker

First feels right and then if you need to pass it into the CLI tool, you take the option in the GH actions and pop -- before it
I'm happy to go though and rename these for alignment to get parity across the board

Now if we have an env vars set for PACT_BROKER_BASE_URL / PACT_BROKER_TOKEN, I believe they are picked up by the CLI automatically?

Yes
Ugh, I'd forgotten about the "broker" prefix of the CLI. That bugs me a lot. If I was going to start again it would be --pact-broker-url and PACT_BROKER_URL. But it would take more time/effort/confusion to standardise everything now than it is worth, I think.
Just doing a bit of a search on the pact-foundation codebases, we have

140 references to PACT_BROKER_BASE_URL (all these are ignoring case) and 2 references to pactBrokerBaseUrl
13 references to PACT_BROKER_URL and 38 references to pactBrokerUrl
48 references to BROKER_BASE_URL and 0 references to brokerBaseUrl
19 references to BROKER_URL and 24 references to brokerUrl

Oh joy!

I'm happy to update all the cli commands to use --pact-broker-x and alias them to the old names, and use --pact-broker-url instead of base-url. It's still going to cause a bit of pain though, as the docs are not very good at identifying which version they belong to.
I think for these actions, it would be the most consistent with the current recommended usage to use PACT_BROKER_BASE_URL and PACT_BROKER_TOKEN env vars. They're generally going to be set from some secrets management place anyway.

renamed now to PACT_BROKER_BASE_URL and PACT_BROKER_TOKEN and setup a CI pipeline for running the unit tests and set up some e2e tests to test out a flow with the actions 👍🏾
Need to sort out the release process as its manual at the moment - just create a release tag from master, but it'll do for now :)


change createEvent to take CreateGeoCodeRequest objects

Changing createEvent to create the GeoCodes when the Event is created instead of before.

#364


(@Banded Body Press) gen9tsabcamo: tsabcamo

@Banded Body Press: "tsabcamo"
Created via Iolanthe on Wed, 01 May 2024 17:02:41 GMT.

Superseded by https://github.com/OperationTourCode/OTC/pull/480


TypeError: unsupported operand type(s) for +: 'int' and 'str'

I see the following error when running ch04/blei_lda.py
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-2-5511c9e27cd2> in <module>()
     37 for ti in range(model.num_topics):
     38     words = model.show_topic(ti, 64)
---> 39     tf = sum(f for f, w in words)
     40     with open('topics.txt', 'w') as output:
     41         output.write('\n'.join('{}:{}'.format(w, int(1000. * f / tf)) for f, w in words))

TypeError: unsupported operand type(s) for +: 'int' and 'str'

I think, since the frequency, f, and word, w,  are the opposite on words, did you want to write w, f in words instead, as in the following?
     39     tf = sum(f for w, f in words)
     40     with open('topics.txt', 'w') as output:
     41         output.write('\n'.join('{}:{}'.format(w, int(1000. * f / tf)) for w, f in words))

Sorry, I had missed this bug report. Fixed.


Add Event Descriptions

This PR adds Descriptions for items listed in #43

@mxgrey this is ready for review. There were some linker errors when compiling and hence I had to implement rmf_task_sequence::detail::Backup and some inherited functions in rmf_task_sequence::Task. For the latter I have left most of it as TODOs.


MyCobot280pi stops working. Sometimes with Errormessage, sometimes without.

PyMyCobot 3.6.2
When it stops working the only solution is Power off, move all joints of the Cobot and restart, very annoying.
GPIO and ATOM I/O Display is still working.
Sometimes there is no Error Message.
Sometime the Errormessage is
File "/usr/local/lib/python3.8/dist-packages/pymycobot/mycobot280.py", line 328, in sync_send_coords
self.send_coords(coords, speed, mode)
File "/usr/local/lib/python3.8/dist-packages/pymycobot/generate.py", line 202, in send_coords
self.calibration_parameters(class_name=self.class.name, coords=coords, speed=speed)
File "/usr/local/lib/python3.8/dist-packages/pymycobot/error.py", line 564, in calibration_parameters
check_coords(value, robot_limit, class_name, MyCobot280DataException)
File "/usr/local/lib/python3.8/dist-packages/pymycobot/error.py", line 97, in check_coords
raise exception_class(
pymycobot.error.MyCobot280DataException: Has invalid coord value, error on index 2. received -1867 .but angle should be -70 ~ 523.9.

Please check the send_coords(coords, speed, mode) function. What is the coords you passed in? The error message means that the parameter you passed exceeds the machine's range of motion.

Found the Problem.
I use get_angles and get_coords and work with the results, but sometimes the cobot sends totally wrong results.

Please provide the specific values of get_angles and get_coords. In addition, we need to confirm whether the scale lines of each joint are aligned after sending the angle [0,0,0,0,0,0]


How to add flash light during face recognition.

I am not able to add flash light during face recognition

Hi @haraprasad-abstech ,
Could you elaborate a bit on the issue you are facing, what you tried with code snippets to better understand it?

I want to on flash light when I switch to back camera

Sorry for the late reply.
You can use this code for checking the availability of flash in the device:
 context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);

and then turn on the camera flashlight:
Camera cam = Camera.open();
Parameters p = cam.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
cam.setParameters(p);
cam.startPreview();

Thanks Rishit,
I tried that but it is not working,Can you please share the full source code

What is the error?
I also think this question is in no way related to this repository and should rather be posted on StackOverflow.


neg_binomial_2_cdf / neg_binomial_2_ccdf std::vector usage

From @rtrangucci on February 26, 2015 21:39
neg_binomial_2_cdf and ccdf use std::vector internally, while they should use the VectorBuilder template metaprogram
Copied from original issue: stan-dev/stan#1315

From @randommm on February 26, 2015 22:3
If I remember well, I used std::vector there because I call beta_cdf using those vectors, like in
  if (size_n == 1) {
    if (size_phi_mu == 1)
      return beta_cdf(phi_mu[0], phi, np1[0]);
    else
      return beta_cdf(phi_mu, phi, np1[0]);
  }

AFAIK, VectorBuilder wouldn't work this way.

From @betanalpha on February 27, 2015 13:47
The error is in the checking of consistent dimensions — the current
metaprogram treats scalars and vectors of length 1 as inconsistent
which causes the error.  Dan and I argued about this a bit in December
but ended up leaving it as it is.
Really we shouldn’t be calling distributions from distributions — for
optimal performance we need to reimplement everything with the
manipulations needed for each specific parameterization.
On Feb 27, 2015, at 1:15 PM, Marco Inacio<EMAIL_ADDRESS>wrote:

It has to be this way because VectorView inside beta_cdf will treat phi_mu as size 1 vector instead of a scalar (if you look at neg_binomial_2_cdf, phi_mu was constructed using VectorView, therefore, a scalar phi and mu will become a vector phi_mu of size one) which will cause an error.
—
Reply to this email directly or view it on GitHub.

From @randommm on February 27, 2015 13:15
It has to be this way because VectorView inside beta_cdf will treat phi_mu as size 1 vector instead of a scalar (if you look at neg_binomial_2_cdf, phi_mu was constructed using VectorView, therefore, a scalar phi and mu will become a vector phi_mu of size one) which will cause an error.

From @bob-carpenter on February 26, 2015 23:19
For what it's worth, I think it'd be better to replace

if (size_phi_mu == 1)
return beta_cdf(phi_mu[0], phi, np1[0]);
else
return beta_cdf(phi_mu, phi, np1[0]);

with just the final line.  Then, if there's some reason to
treat a size-1 vector differently in beta_cdf, it can be
done inside that function in just one place.
Also, why is there only ever np1[0] being used?  (I realize
I'm only looking at a fragment here.)

Bob

On Feb 27, 2015, at 9:03 AM, Marco Inacio<EMAIL_ADDRESS>wrote:
If I remember well, I used std::vector there because I call beta_cdf using those vectors, like in
if (size_n == 1) {
if (size_phi_mu == 1)
return beta_cdf(phi_mu[0], phi, np1[0]);
else
return beta_cdf(phi_mu, phi, np1[0]);
}
AFAIK, VectorBuilder wouldn't work this way.
—
Reply to this email directly or view it on GitHub.

From @bob-carpenter on February 28, 2015 0:9

On Feb 28, 2015, at 7:12 AM, Marco Inacio<EMAIL_ADDRESS>wrote:
On 2015-02-27 10:47 AM, Michael Betancourt wrote:

The error is in the checking of consistent dimensions — the current
metaprogram treats scalars and vectors of length 1 as inconsistent
which causes the error. Dan and I argued about this a bit in December
but ended up leaving it as it is.

IMHO, I find the current behavior (of not considering a vector of size 1
a scalar) good and consistent, changing this might open a path for bad
usage by users and unexpected behavior like what happens with R's vector
types.
If one knows whats it's doing, then all one needs to do is call the
first element of the vector like normal_log(y, mu[0], sigma), if one
doesn't then normal_log(y, mu, sigma) will cause an error.

That's my position, too.

Really we shouldn’t be calling distributions from distributions — for
optimal performance we need to reimplement everything with the
manipulations needed for each specific parameterization.

Maybe in this case, it would be better to have a beta function, and have
both neg_binomial_2_cdf and beta_cdf call it

On tis I agree with Michael.  And yes, that'd be the right
solution.
In general, you don't want to call more client-facing functions
internally because they typically do a bunch of extra work
validating parameters, which if they fail, then produce error
messages from surprising places in functions the client code never
called.

Bob

From @randommm on February 27, 2015 20:12
On 2015-02-27 10:47 AM, Michael Betancourt wrote:

The error is in the checking of consistent dimensions — the current
metaprogram treats scalars and vectors of length 1 as inconsistent
which causes the error. Dan and I argued about this a bit in December
but ended up leaving it as it is.
IMHO, I find the current behavior (of not considering a vector of size 1
a scalar) good and consistent, changing this might open a path for bad
usage by users and unexpected behavior like what happens with R's vector
types.

If one knows whats it's doing, then all one needs to do is call the
first element of the vector like normal_log(y, mu[0], sigma), if one
doesn't then normal_log(y, mu, sigma) will cause an error.

Really we shouldn’t be calling distributions from distributions — for
optimal performance we need to reimplement everything with the
manipulations needed for each specific parameterization.

Maybe in this case, it would be better to have a beta function, and have
both neg_binomial_2_cdf and beta_cdf call it?

As far as I can tell, this isn't really an issue, so I'm closing.


host documentation on an AWS static website

Update README "Documentation" according to the new address.

Hosted at http://csvreader.ybr.s3-website-eu-west-1.amazonaws.com/api/nightly/#com.github.ybr.csv.package


no need to require gzipped bed file

gzip the bed file as part of the preprocessing workflow

If the user wants to do WES or WGS they don't need to provide a bed file


Add 'react-scripts' as dependency

It was observed that when a code is generated in CodeSandBox, where there is a <></> (fragment) it will give a certain error. Here is the error example:

One of the solutions would be to put in each component that uses it <React.Fragment> or <div>. As in the example below:

However, it can be solved by adding the dependency 'react-scripts', and that way the <></> (fragment) will be recognized in all code generated in CodeSandBox from the Yoga documentation. Example:

Hi, @Dario-Felipe ! Thanks for contributing again!
Despite your contribution seems to be a fix, if we merge your PR into master, we will trigger a new version of Yoga which isn't your purpose, right?.
I would ask you to change your commit message to be docs instead of fix. Just to prevent Yoga bumps.

Before
After

fix(codeblock): add 'react-scripts' as dependency
docs(codeblock): add 'react-scripts' as dependency


Opinionated refactoring of intersection.rs and recorder.rs

Very excited about this project. Refactoring a bit as I familiarize myself with the code. I will keep such refactorings to myself in the future if this PR is rejected.

Awesome, thank you for the quick fixes! Merging.
Feel free to drop into https://join.slack.com/t/abstreet/shared_invite/zt-18kz8fyma-mBoZX2OS6myW__nPZj3jYg


fix: copy url for catalog

Description
This PR fixes #
Notes for Reviewers
Signed commits

[ ] Yes, I signed my commits.

@rishabhsharma1997,
Could you please mention the issue number in your pull request description so that it links correctly? This will help us track the changes more efficiently....


csrutil disable doesn't work when executed from Terminal

Has anyone else gotten this error when running csrutil disable?
csrutil: failed to modify system integrity configuration. This tool needs to be executed from the Recovery OS.

Thanks for filing @raykyri. It looks like https://apple.stackexchange.com/questions/208478/how-do-i-disable-system-integrity-protection-sip-aka-rootless-on-macos-os-x covers how to run the command. I'll update the README

Any the howto slightly differs for Apple M1 (newer machines):

Shutdown mac.
Start it while holding start button until Options is shown.
Select Options->Login->Utilities->Terminal
Run csrutil disable
Login again
Reboot
Done.

tested on Mac mini M1 w/ macos 11.2 & 11.2.2


Add conditional breakpoint from variable explorer or watch window

Feature
I would like have the ability to add a conditional breakpoint to the active line based on the current state of a variable or watch expression.
So from the variable explorer window,
right click -> choose Create Conditional Breakpoint,
That would create a conditional breakpoint at the cursor with the condition where variable == value shown in the variable explorer; or since watch values can be against expressions then I would expect those to be where expression == value
Motivation
While debugging one often reaches a point, where something which happened in the code - often a function call before - has created a bug. If vscode ever gets the ability to backtrack that would be great, but for now, it would be great if we could streamline our ability to add conditional breakpoints.
Bonus Points
Allowing us to multi-select variable and expressions could be nice, but this could also be emulated by the user creating the more complicated multi-valued expressions in the watch.

This feature request is now a candidate for our backlog. The community has 60 days to upvote the issue. If it receives 20 upvotes we will move it to our backlog. If not, we will close it. To learn more about how we handle feature requests, please see our documentation.
Happy Coding!

This feature request has not yet received the 20 community upvotes it takes to make to our backlog. 10 days to go. To learn more about how we handle feature requests, please see our documentation.
Happy Coding!

:slightly_frowning_face: In the last 60 days, this feature request has received less than 20 community upvotes and we closed it. Still a big Thank You to you for taking the time to create this issue! To learn more about how we handle feature requests, please see our documentation.
Happy Coding!