Could not get models from the server

Actions before raising this issue

[X] I searched the existing issues and did not find anything similar.
[X] I read/searched the docs

Steps to Reproduce
Hello,
Im trying to deploy the YOLOv5 with nucilo to use it with CVAT in order to do auto annotation. I tried to deploy Yolov5, same as the YoloV7 ONNX which already exist in the Cvat documentation. I have managed to successfully deploy the YoloV5 onnx with their original weight file (yolov5l.onnx). However when I try to deploy with my custom weight file, the CVAT or Nuclio cannot find the weight file.

Could not get models from the server

I have checked inside the container and my weight file is there and Im sure is nothing wrong with my onnx file since I did the test outside of docker and works fine. I have also use the docker logs to see if there is any error but no error.
This is my function.yaml
metadata:
  name: pth-ultralytics-yolov5-anfp
  namespace: cvat
  annotations:
    name: YOLO v5
    type: detector
    framework: onnx
    spec: |
      [
        { "id": 0, "name": "Adidas", "type": "rectangle" },
      ]
spec:
  description: YOLO v5
  runtime: 'python:3.8'
  handler: main:handler
  eventTimeout: 30s
  build:
    image: cvat.onnx.ultralytics.yolov5-anfp
    baseImage: ubuntu:20.04
    directives:
      preCopy:
        - kind: USER
          value: root
        - kind: RUN
          value: apt update && apt install --no-install-recommends -y wget python3-pip
        - kind: RUN
          value: apt update && apt install --no-install-recommends -y libglib2.0-0
        - kind: RUN
          value: apt-get update && apt-get install ffmpeg libsm6 libxext6  -y
        - kind: RUN
          value: pip install onnxruntime opencv-python-headless pillow pyyaml torch torchvision numpy onnx onnx-simplifier tqdm scipy gitpython matplotlib
        - kind: WORKDIR
          value: /opt/nuclio
        - kind: RUN
          value: wget xx.onnx
        - kind: RUN
          value: ln -s /usr/bin/python3 /usr/bin/python

  triggers:
    myHttpTrigger:
      maxWorkers: 2
      kind: 'http'
      workerAvailabilityTimeoutMilliseconds: 10000
      attributes:
        maxRequestBodySize: 33554432 # 32MB

  platform:
    attributes:
      restartPolicy:
        name: always
        maximumRetryCount: 3
      mountMode: volume

Here is my main file:
import base64
import io
import json

import yaml
from model_handler import ModelHandler
from PIL import Image

def init_context(context):
    context.logger.info("Init context...  0%")

    # Read the DL model
    model = ModelHandler()
    context.user_data.model = model

    context.logger.info("Init context...100%")

def handler(context, event):
    context.logger.info("Run YoloV5 ONNX model")
    data = event.body
    buf = io.BytesIO(base64.b64decode(data["image"]))
    image = Image.open(buf)

    results = context.user_data.model.infer(image, 0.5)

    return context.Response(body=json.dumps(results), headers={},
        content_type='application/json', status_code=200)

Here is a part of my model handler

import cv2
import numpy as np
import onnxruntime as ort
import torch
import torchvision
class ModelHandler:
    def __init__(self):
        self.is_inititated = None
        self.names = None
        self.stride = None
        self.meta = None
        self.output_names = None
        self.session = None
        self.load_network(model="xxyolov5l.onnx")

    def load_network(self, model):
        device = ort.get_device()
        cuda = True if device == 'GPU' else False
        try:
            providers = ['CUDAExecutionProvider', 'CPUExecutionProvider'] if cuda else ['CPUExecutionProvider']
            so = ort.SessionOptions()
            so.log_severity_level = 3

            self.session = ort.InferenceSession(model, providers=providers, sess_options=so)
            self.output_names = [x.name for x in self.session.get_outputs()]
            self.meta = self.session.get_modelmeta().custom_metadata_map
            # self.input_details = [i.name for i in self.session.get_inputs()]
            if "stride" in self.meta:
                self.stride, self.names = int(self.meta["stride"]), eval(self.meta["names"])
            self.is_inititated = True
        except Exception as e:
            raise Exception(f"HIYOOOO Cannot load model {model}: {e}")
    def letterbox(self, im, new_shape=(640, 640), color=(114, 114, 114), auto=True, scaleup=True, stride=32):
        shape = im.shape[:2]  # current shape [height, width]
        if isinstance(new_shape, int):
            new_shape = (new_shape, new_shape)

        r = min(new_shape[0] / shape[0], new_shape[1] / shape[1])
        if not scaleup:  # only scale down, do not scale up (for better val mAP)
            r = min(r, 1.0)

        new_unpad = int(round(shape[1] * r)), int(round(shape[0] * r))
        dw, dh = new_shape[1] - new_unpad[0], new_shape[0] - new_unpad[1]  # wh padding

        if auto:  # minimum rectangle
            dw, dh = np.mod(dw, stride), np.mod(dh, stride)  # wh padding

        dw /= 2  # divide padding into 2 sides
        dh /= 2

        if shape[::-1] != new_unpad:  # resize
            im = cv2.resize(im, new_unpad, interpolation=cv2.INTER_LINEAR)
        top, bottom = int(round(dh - 0.1)), int(round(dh + 0.1))
        left, right = int(round(dw - 0.1)), int(round(dw + 0.1))
        im = cv2.copyMakeBorder(im, top, bottom, left, right, cv2.BORDER_CONSTANT, value=color)  # add border
        return im, r, (dw, dh)

    def xywh2xyxy(self, x):
        # Convert nx4 boxes from [x, y, w, h] to [x1, y1, x2, y2] where xy1=top-left, xy2=bottom-right
        y = x.clone() if isinstance(x, torch.Tensor) else np.copy(x)
        y[:, 0] = x[:, 0] - x[:, 2] / 2  # top left x
        y[:, 1] = x[:, 1] - x[:, 3] / 2  # top left y
        y[:, 2] = x[:, 0] + x[:, 2] / 2  # bottom right x
        y[:, 3] = x[:, 1] + x[:, 3] / 2  # bottom right y
        return y

    def box_area(self, box):
        # box = xyxy(4,n)
        return (box[2] - box[0]) * (box[3] - box[1])
    def box_iou(self, box1, box2, eps=1e-7):
        # inter(N,M) = (rb(N,M,2) - lt(N,M,2)).clamp(0).prod(2)
        (a1, a2), (b1, b2) = box1[:, None].chunk(2, 2), box2.chunk(2, 1)
        inter = (torch.min(a2, b2) - torch.max(a1, b1)).clamp(0).prod(2)

        # IoU = inter / (area1 + area2 - inter)
        return inter / (self.box_area(box1.T)[:, None] + self.box_area(box2.T) - inter + eps)

    def scale_coords(self, img1_shape, coords, img0_shape, ratio_pad=None):
        # Rescale coords (xyxy) from img1_shape to img0_shape
        if ratio_pad is None:  # calculate from img0_shape
            gain = min(img1_shape[0] / img0_shape[0], img1_shape[1] / img0_shape[1])  # gain  = old / new
            pad = (img1_shape[1] - img0_shape[1] * gain) / 2, (img1_shape[0] - img0_shape[0] * gain) / 2  # wh padding
        else:
            gain = ratio_pad[0][0]
            pad = ratio_pad[1]

        coords[:, [0, 2]] -= pad[0]  # x padding
        coords[:, [1, 3]] -= pad[1]  # y padding
        coords[:, :4] /= gain
        self.clip_coords(coords, img0_shape)
        return coords

    def clip_coords(self, boxes, shape):
        # Clip bounding xyxy bounding boxes to image shape (height, width)
        if isinstance(boxes, torch.Tensor):  # faster individually
            boxes[:, 0].clamp_(0, shape[1])  # x1
            boxes[:, 1].clamp_(0, shape[0])  # y1
            boxes[:, 2].clamp_(0, shape[1])  # x2
            boxes[:, 3].clamp_(0, shape[0])  # y2
        else:  # np.array (faster grouped)
            boxes[:, [0, 2]] = boxes[:, [0, 2]].clip(0, shape[1])  # x1, x2
            boxes[:, [1, 3]] = boxes[:, [1, 3]].clip(0, shape[0])  # y1, y2

    def non_max_suppression(self, prediction,
                            conf_thres=0.25,
                            iou_thres=0.45,
                            agnostic=False,
                            max_det=300):
        bs = prediction.shape[0]  # batch size
        xc = prediction[..., 4] > conf_thres  # candidates
        # Settings
        # min_wh = 2  # (pixels) minimum box width and height
        max_wh = 7680  # (pixels) maximum box width and height
        max_nms = 30000  # maximum number of boxes into torchvision.ops.nms()
        redundant = True  # require redundant detections
        merge = False  # use merge-NMS
        output = [torch.zeros((0, 6), device=prediction.device)] * bs
        for xi, x in enumerate(prediction):  # image index, image inference
            # Apply constraints
            # x[((x[..., 2:4] < min_wh) | (x[..., 2:4] > max_wh)).any(1), 4] = 0  # width-height
            x = x[xc[xi]]  # confidence
            # If none remain process next image
            if not x.shape[0]:
                continue

            # Compute conf
            x[:, 5:] *= x[:, 4:5]  # conf = obj_conf * cls_conf

            # Box (center x, center y, width, height) to (x1, y1, x2, y2)
            box = self.xywh2xyxy(x[:, :4])

            # Detections matrix nx6 (xyxy, conf, cls)
            conf, j = x[:, 5:].max(1, keepdim=True)
            x = torch.cat((box, conf, j.float()), 1)[conf.view(-1) > conf_thres]
            # Apply finite constraint
            # if not torch.isfinite(x).all():
            #     x = x[torch.isfinite(x).all(1)]

            # Check shape
            n = x.shape[0]  # number of boxes
            if not n:  # no boxes
                continue
            elif n > max_nms:  # excess boxes
                x = x[x[:, 4].argsort(descending=True)[:max_nms]]  # sort by confidence

            # Batched NMS
            c = x[:, 5:6] * (0 if agnostic else max_wh)  # classes
            boxes, scores = x[:, :4] + c, x[:, 4]  # boxes (offset by class), scores
            i = torchvision.ops.nms(boxes, scores, iou_thres)  # NMS
            if i.shape[0] > max_det:  # limit detections
                i = i[:max_det]
            if merge and (1 < n < 3E3):  # Merge NMS (boxes merged using weighted mean)
                # update boxes as boxes(i,4) = weights(i,n) * boxes(n,4)
                iou = self.box_iou(boxes[i], boxes) > iou_thres  # iou matrix
                weights = iou * scores[None]  # box weights
                x[i, :4] = torch.mm(weights, x[:, :4]).float() / weights.sum(1, keepdim=True)  # merged boxes
                if redundant:
                    i = i[iou.sum(1) > 1]  # require redundancy

            output[xi] = x[i]
        return output

    def _infer(self, inputs: np.ndarray):
        try:
            img = cv2.cvtColor(inputs, cv2.COLOR_BGR2RGB)
            image = img.copy()
            image, ratio, dwdh = self.letterbox(image, auto=False)
            image = image.transpose((2, 0, 1))
            image = np.expand_dims(image, 0)
            image = np.ascontiguousarray(image)

            im = image.astype(np.float16)
            im /= 255
            #im = im.astype(np.float16)
            # ONNX inference
            output = list()
            bboxs, confs, clss = [], [], []
            detections = self.session.run([self.session.get_outputs()[0].name], {self.session.get_inputs()[0].name: im})[0]
            detections = torch.from_numpy(detections).to(torch.device('cpu'))
            pred = self.non_max_suppression(detections, conf_thres=0.25, iou_thres=0.45, agnostic=False, max_det=1000)
            print('pred: ', pred)
            for i, det in enumerate(pred):
                det[:, :4] = self.scale_coords(im.shape[2:], det[:, :4], img.shape).round()
                for *xyxy, conf, cls in reversed(det):
                    c = int(cls)
                    #labels = self.names[c]
                    x1, y1, x2, y2 = [int(x.cpu().numpy()) for x in xyxy]
                    bboxs.append([x1, y1, x2, y2])
                    clss.append(self.names[c])
                    confs.append(conf.cpu().numpy())
            output = [bboxs, clss, confs]
            return output

        except Exception as e:
            print(e)

    def infer(self, image):
        image = np.array(image)
        image = image[:, :, ::-1].copy()
        h, w, _ = image.shape
        detections = self._infer(image)
        results = []

        if detections:
            boxes = detections[0]
            labels = detections[1]
            scores = detections[2]
            for label, score, box in zip(labels, scores, boxes):
                results.append({
                    "confidence": str(score),
                    "label": label,
                    "points": box,
                    "type": "rectangle",
                })

        return results

Expected Behavior
I expect the code works with custom weight model same as original model since I just changed the class labels and the weight file name. the rest of the code is same. I cannot find out why the Nuclio cannot find the my weight file which is in the same location of the original weight file. Any help would be appreciate to understand why my code is working perfectly with original weight file and not custom weight file.
Thanks
Possible Solution
No response
Context
No response
Environment
No response

In my local deployment, I can't see option of model in Navbar

My Issue Resolved :+1:

@PrashantDixit0 Good for you!! Didnt they teach you to not jump to other ppl conversation or the thing is not related to you!!!

I am working on integrating YOLOv5 with CVAT, Is there any help required?

Yes there is a problem and thats why I open a issue here!! Cvat can find the original Yolov5 model but not custom pretrained model and I get "Could not get models from the server"

I'll let you know once I am done with custom model integration :+1:

@Auth0rM0rgan I can deploy the Yolov5 model successfully, Please refer to this resource
<EMAIL_ADDRESS>

Hii @Auth0rM0rgan Does the issue persist?
I got it solved, for my case.
Maybe something went wrong when deploying a new function through nuctl.
To solve it, remove the directory that was created at /etc/nuclio/store/functions/nuclio in the nuclio-local-storage-reader container.

Python code is:
self.load_network(model="xxyolov5l.onnx")

Build code is:
        - kind: RUN
          value: wget xx.onnx

I do not know how it may work (at least if to believe to provided files).
Different names, and.. what to you expect command wget xx.onnx to do?

@bsekachev,
The part of the
model= "xxyolov5l.onnx"  and value: wget xx.onnx names are correct in my local code. I just changed them here since I cannot share the onnx file. I use the wget to download the file from my github to the home folder of the Nucilo. I also checked the container folder after deploying and I can confirm the onnx file is there and the naming is correct.

So this also happens if some other model you have deployed is not found, then also it gives same error

You told, that:

However when I try to deploy with my custom weight file, the CVAT or Nuclio cannot find the weight file.

So, if you 100% sure in this, it only means that the file is missing on the specified path.
Maybe it is in another directory, have another name, but it is not found.  I do not expect any magic here. Look at many other models in serverless directory. The same logic in all of them.


Design the Html page using bootstrap or vanilla css

Description / User Story:
We need to add styles to the Html page, so the user can have a nice user interface(UI) on the webpage.
Acceptance Criteria:
The webpage must have a nice user interface features using the bootstrap or vanilla css to add different styles to the webpage and also make the webpage responsive for a mobile view.
QA (quality assurance) / testing:
All the above met.

Description / User Story:
We need to add styles to the Html page, so the user can have a nice user interface(UI) on the webpage.
Acceptance Criteria:
The webpage must have a nice user interface features using the bootstrap or vanilla css to add different styles to the webpage and also make the webpage responsive for a mobile view.
QA (quality assurance) / testing:
All the above met.

FYI that applies only to mainPage.html

@d-sholaakanbi are QA testing this? If so I leave it on you. Unless I can have a look of it. Thanks


Segmentation fault ctl:ruleRemoveTargetById without target

Leaving out the target for ctl:ruleRemoveTargetById causes segmentation faults.
This has already been reported and fixed for ctl:ruleRemoveTargetByTag: https://github.com/SpiderLabs/ModSecurity/issues/1353.
My guess is that ctl:ruleRemoveTargetByMsg is affected as well but I did not test this.
Steps to reproduce the behavior:
Add a rule exclusion containing ctl:ruleRemoveTargetById=941130 instead of ctl:ruleRemoveTargetById=941130;ARGS:xxxx

ModSecurity 2.9.3
Apache 2.4.38
Linux

What is the status on this issue, do you need any more information?

Hi, @studersi
We don't have an ETA to fix this yet. It should be fixed, although the priority is not high as this does not directly impact run time. This seems to be a very welcome task to someone that wants to learn a little bit more about ModSecurity internals.

This was fixed in https://github.com/SpiderLabs/ModSecurity/pull/2189. Closing the issue.


WIP: sketching API for RandBLAS

This is a work-in-progress PR for prototyping an API for the C++ version of RandBLAS. While the implementations use Python functions, the function signatures and logic ports pretty directly to C++ using only structs and pointers to arrays.
This PR won't be merged anytime soon. I'm just opening it to discuss API design with @burlen and @TeachRaccooon.

As of now, the main limitation of this approach is that it's hard to utilize submatrices of a sketching operator. I don't know if there's a clean polymorphic way around this.

In the dense case, the only way to do this in a non-error-prone way is to generate the operator explicitly and then use it in gemm, since that exposes a starting pointer and the stride of the leading dimension.
In the sparse case we don't even have a "starting pointer and stride" convention to select a submatrix. Then there's the problem that a submatrix of a structured sparse operator generally won't have the same sparsity structure. (E.g., selecting a subset of rows of a wide SASO will remove the "fixed number of nonzeros per column" property.)

The move here might be to figure out a viable "starting pointer and stride" convention for sparse-times-dense matrix multiplication. Maybe they did that in the old sparse BLAS standard?


Helix Pi should never degrade in fitness if the scenarios are unchanged

I just realized that the weighting I implemented will definitely impact this. I disabled it and it degraded less often and less significantly, but not entirely fixed.
This might not be that big of a deal and may actually benefit diversity. I think I should implement committing and come back to this.


Make Enigma decompile unpicked by default

Currently there is a yarnUnpicked task in addition to the regular yarn task. Because unpicking is now generally stable, it should be made the default behavior.

unpick was separate not only because it was experimental but it was slightly slower.

I agree it should be the default, but due to the slight difference in start time perhaps the not-unpicked task should still remain. Not sure what it would be called though.

yarnWithoutUnpick would be fine, I guess.


Fix triplestore fetching all data

Currently, when triplestore fetches all data for a query, it uses an arbitrary limit argument for the query. Even though in practice the limit is probably never exceeded as it's a very big number, the query should be done so that it checks the count of items first and then all the pages if the count is larger than the limit argument.

Decided to not implement the pagination, because it would require doing extra queries: it's impossible to deducts from the result is the whole data, so the count must be fetched separately.
I implemented this in the branch triplestore-lazy-pagination but decided not to merge it because of the raised complexity in it.


test: pass through methods for Repo

Reason for Change

We missed adding these tests when adding the pass through methods from the Collection to the Repository

Proposed Changes

Reorder test to be alphabetical
Test all previously untested methods in Repository

Type of Change

[ ] ✨ New feature (non-breaking change which adds functionality)
[ ] 🛠 Bug fix (non-breaking change which fixes an issue)
[ ] ❌ Breaking change (fix or feature that would cause existing functionality to change)
[ ] 🧹 Code refactor
[ ] ✅ Build configuration change
[ ] 📝 Documentation
[ ] 🗑 Chore

Checklist

[ ] Readme Updated
[ ] Example project updated
[x] Tests added/updated
[ ] Changelog updated
[ ] Pubspec version updated

Testing Slack Integration


Add :backspace to send_keys

Extension of #878 to add :backspace key to send_keys.

Would you mind putting together a test along with this change?

Done.

Thanks!


Small fixes

Hi,
I see you work hard. Here is the current file I have for 2.0 branch. I forgot to update the git repo. My apologies.
Please copy paste what you did before missing strings. Please add your name and branding on the top, as official contributor
Thanks
Eric

Le 6 nov. 2018 à 22:16, demlasjr<EMAIL_ADDRESS>a écrit :
You can view, comment on, or merge this pull request online at:
https://github.com/myEric/mmanager-localization/pull/7 https://github.com/myEric/mmanager-localization/pull/7
Commit Summary
Small fixes
File Changes
M language/english/application_lang.php https://github.com/myEric/mmanager-localization/pull/7/files#diff-0 (70)
Patch Links:
https://github.com/myEric/mmanager-localization/pull/7.patch https://github.com/myEric/mmanager-localization/pull/7.patch
https://github.com/myEric/mmanager-localization/pull/7.diff https://github.com/myEric/mmanager-localization/pull/7.diff
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub https://github.com/myEric/mmanager-localization/pull/7, or mute the thread https://github.com/notifications/unsubscribe-auth/AE3KUu0ISNgx1q66aM9x-hR8jZxLdu1Wks5usfxEgaJpZM4YRSli.

Uhmmm...sorry, where is the 2.0 branch ? I don't see it yet.

Uhmmm...sorry, where is the 2.0 branch ? I don't see it yet.

:-) this is the 2.0 branch

Oh, I thought that there are missing strings which are not yet translated, I don't understand your "Please copy paste what you did before missing strings.". Sorry, probably I'm tired.
I'll add my name on the top.

Yes, because you changed many things, idea is check the last string of your translation and copy from my file the whole missing portion :-)
Thanks.
Eric Claver AKAFFOU

Le 6 nov. 2018 à 22:48, demlasjr<EMAIL_ADDRESS>a écrit :
Oh, I thought that there are missing strings which are not yet translated, I don't understand your "Please copy paste what you did before missing strings.". Sorry, probably I'm tired.
I'll add my name on the top.
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub, or mute the thread.

Oh got it! You mean differences between the english and spanish version of file, I just diff'ed the files!
But there are also lines which are available in spanish version but not on english version. Should I merge both with the missing strings or just the spanish one?

Yes, i saw also. You can merge. I will update all files next days.
Thanks.
Eric Claver AKAFFOU

Le 6 nov. 2018 à 22:59, demlasjr<EMAIL_ADDRESS>a écrit :
Oh got it! You mean differences between the english and spanish version of file, I just diff'ed the files!
But there are also lines which are available in spanish version but not on english version. Should I merge both with the missing strings or just the spanish one?
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub, or mute the thread.

People sometimes remove what they don’t need, so I copy paste as I can :-)
Cordialement
Eric Claver AKAFFOU

Le 6 nov. 2018 à 22:59, demlasjr<EMAIL_ADDRESS>a écrit :
Oh got it! You mean differences between the english and spanish version of file, I just diff'ed the files!
But there are also lines which are available in spanish version but not on english version. Should I merge both with the missing strings or just the spanish one?
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub, or mute the thread.

Great 👍🏿 ! Many people worked on the file and sometimes they remove what they did not use. Thanks

That's great mate, I've checked the demo and looks good so far but there are still some string missing in the menu :(
https://i.imgur.com/ndp2pA1.png

Thanks. If you want i can setup a ftp access to language folder for live edit. Let me know.

That's great. Then I will only need to know the strings name in order to traslate, but tomorrow I plan to buy the script already so I can help to the development

Ok thanks man! This night I will import the change for the Spanish surcharge. I was wondering how to implement it: automatic detection when company address is « Spain » but you told me Canadian 🇨🇦 need the same and maybe other countries. So I don’t know. Manual setup and option to enable maybe. Let me know your thoughts

Sorry for the late answer and not having bought the script already, I just reached my home after a hard day.
First, yes, I think the manual way will be just great, since geoip free database isn't always accurate and the other solution will be an installer, when you first configure the script, to enable or not those features, but again, there are others countries which can use it and we need to find out which ones apart Spain and Canada.
The manual solution I guess is the great and the easiest but maybe you should add an option to enable one or both of the options and maybe rename them, since in Canada it's called differently than in Spain, so a final user can rename it easily without editing translations files.
Tomorrow I try to buy, install and finish the translations, but I cannot promise since I still have a lot of things to do (I'm late after the health issues I had) and this weekend I'm teaching people repairing electronics. If I will cannot do it, Monday I will do it for sure.
Thanks.
Regards,
Laszlo

Hi,
I hope you are fine. Just a quick message to inform that the system is almost done. Just to need to build reports. You can test if you have time.
Thanks
Eric

Le 9 nov. 2018 à 02:13, demlasjr<EMAIL_ADDRESS>a écrit :
Sorry for the late answer and not having bought the script already, I just reached my home after a hard day.
First, yes, I think the manual way will be just great, since geoip free database isn't always accurate and the other solution will be an installer, when you first configure the script, to enable or not those features, but again, there are others countries which can use it and we need to find out which ones apart Spain and Canada.
The manual solution I guess is the great and the easiest but maybe you should add an option to enable one or both of the options and maybe rename them, since in Canada it's called differently than in Spain, so a final user can rename it easily without editing translations files.
Tomorrow I try to buy, install and finish the translations, but I cannot promise since I still have a lot of things to do (I'm late after the health issues I had) and this weekend I'm teaching people repairing electronics. If I will cannot do it, Monday I will do it for sure.
Thanks.
Regards,
Laszlo
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub https://github.com/myEric/mmanager-localization/pull/7#issuecomment-437214747, or mute the thread https://github.com/notifications/unsubscribe-auth/AE3KUgqjIWF0lryD_2BttPAk2Zgieeleks5utNangaJpZM4YRSli.


[BUG] [<IP_ADDRESS>] chiptool fails to load somes CD certificates

Reproduction steps

Download the matter-stack (connectedhomeip) using v<IP_ADDRESS> tag
Build chiptool

At this point:

Do a random command with --cd-trust-store-path to check that when you use the path credentials/development/cd-certs it's okay:

./chip-tool pairing unpair 1 --cd-trust-store-path "/path_to/connectedhomeip-v<IP_ADDRESS>/credentials/development/cd-certs"

Create a temporary directory and copy (only) the CSA_Matter_CD_Signing_Key_*.cert.der files to this directory:

rm -rf /tmp/tmp-cd && mkdir /tmp/tmp-cd
cp credentials/development/cd-certs/CSA_Matter_CD_Signing_Key_00*.der /tmp/tmp-cd/

Run chip-tool again using this new directory:

./chip-tool pairing unpair 1 --cd-trust-store-path "/tmp/tmp-cd"

At this point you will get this message:
CHIP:TOO: Warning: no CD signing certs found in path: /tmp/tmp-cd, only defaults will be used

The warning appear because only Chip-Test-CD-Cert.der and CSA_Matter_Certificate_and_Testing_Root.cert.der are successfully parsed using chip::Credentials::LoadAllX509DerCerts(cdTrustStorePath). The certificates CSA_Matter_CD_Signing_Key_*.cert.der are not recognised.
The problem is that in VerifyAttestationCertificateFormat(), the function X509_get_pathlen(x509Cert) returns 0.
I don't know if it's normal or not, it's not really clear to me.
Attached you will find the CD certificates that we get from DCL that are also not "recognised":
certs.zip
Bug prevalence
100%
GitHub hash of the SDK that was being used
181b0cb14ff007ec912f2ba6627e05dfb066c008
Platform
other
Platform Version(s)
No response
Anything else?
No response

Why are we ever running VerifyAttestationCertificateFormat() on non-attestation certs?


activewindow can return an empty result, crashing pypr

Need some guards around these cast values (and probably anywhere else this assumption is made).
expose::run_expose(()) failed:
'address'
Traceback (most recent call last):
  File "/usr/lib/python3.11/site-packages/pyprland/command.py", line 119, in _run_plugin_handler
    await getattr(plugin, full_name)(*params)
  File "/usr/lib/python3.11/site-packages/pyprland/plugins/expose.py", line 44, in run_expose
    focused_addr = aw["address"]
                   ~~^^^^^^^^^^^
KeyError: 'address'
expose::run_expose(()) failed:
'address'
Traceback (most recent call last):
  File "/usr/lib/python3.11/site-packages/pyprland/command.py", line 119, in _run_plugin_handler
    await getattr(plugin, full_name)(*params)
  File "/usr/lib/python3.11/site-packages/pyprland/plugins/expose.py", line 44, in run_expose
    focused_addr = aw["address"]
                   ~~^^^^^^^^^^^
KeyError: 'address'

When this happened during expose I had to manually move all my windows back to their original workspaces from the expose workspace.

I don't think it's expected that a window have no address, I'll have a look at this code to see how to make it more robust. Thank you for the report!


Fixed message about adaptive state handling

Fixed misleading message regarding adaptive state handling.
States are reduced from 100% to the $scalingfactor value, NOT by the value.
Optionally, this could be fixed by subtracting the scaling factor from 100%.

Please see https://docs.netgate.com/pfsense/en/latest/development/pull-request.html


Linux installation: cannot verify get.docker.com's certificate

The recommanded installation procedure on Linux with wget is failing:
wget -qO- https://get.docker.com/ | sh

returns no error (exit 0) but nothing happen either.
Trying a simple wget https://get.docker.com reveals an SSL certificate verification issue:
--2015-07-15 10:44:50--  https://get.docker.com/
Resolving get.docker.com (get.docker.com)... <IP_ADDRESS>, <IP_ADDRESS>, <IP_ADDRESS>
Connecting to get.docker.com (get.docker.com)|<IP_ADDRESS>|:443... connected.
ERROR: cannot verify get.docker.com's certificate, issued by `/C=US/O=GeoTrust Inc./CN=RapidSSL SHA256 CA - G3':
  Unable to locally verify the issuer's authority.
To connect to get.docker.com insecurely, use `--no-check-certificate'.

So, unfortunately, passing the --no-check-certificate option to grab the script is the only way to go at the moment.

Hi!
Please read this important information about creating issues.
If you are reporting a new issue, make sure that we do not have any duplicates already open. You can ensure this by searching the issue list for this repository. If there is a duplicate, please close your issue and add a comment to the existing issue instead.
If you suspect your issue is a bug, please edit your issue description to include the BUG REPORT INFORMATION shown below. If you fail to provide this information within 7 days, we cannot debug your issue and will close it. We will, however, reopen it if you later provide the information.
This is an automated, informational response.
Thank you.
For more information about reporting issues, see https://github.com/docker/docker/blob/master/CONTRIBUTING.md#reporting-other-issues

BUG REPORT INFORMATION
Use the commands below to provide key information from your environment:
docker version:
docker info:
uname -a:
Provide additional environment details (AWS, VirtualBox, physical, etc.):
List the steps to reproduce the issue:
1.
2.
3.
Describe the results you received:
Describe the results you expected:
Provide additional info you think is important:
----------END REPORT ---------
#ENEEDMOREINFO

BTW,
GNU Wget 1.13.4 built on linux-gnu.

does not work but wget 1.15 does not complain at all and fetches the script.

Just for the record, with
$ wget --version

GNU Wget 1.16.3 built on linux-gnu
installation works fine for me.

Seems like wget < 1.14 (2012) lacks SNI support (TLS extension added on 1.14+):

bug report: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=653267
wget 1.14 ChangeLog: http://savannah.gnu.org/forum/forum.php?forum_id=7323

So maybe this version requirement should be stated in the install docs at some point.

For example,
Ubuntu 12.04.5 LTS is supported until April 2017 and comes with wget 1.13.4.

I don't feel like a change is needed, other than to use curl in the docs, b/c curl is of course superior in every way :)
cc @moxiegirl

@cpuguy83 So, we went round on this a bit in email way back and came up with this: https://github.com/docker/docker/issues/11023 and ended up with wget because Google. (Also this https://github.com/docker/docker/issues/7422_
Maybe I should just show both wget/curl and let folks decide?

@moxiegirl yep. And if we keep the wget command in the install docs, I think a note on minimum required version should be appended.

Hey @moxiegirl, I went through #11023 and #7422 and did not find a compelling reason to use curl over wget. I agree with @cpuguy83, we should use curl because of the wget versioning issue.
wget -qO- https://get.docker.com/ | sh    -->   curl -sSL https://get.docker.com/  | sh
I'll be happy to update the docs if we can agree on it.

@ankushagarwal this move to wget seems to cause more issues than the original so I'm all for curl if there is consensus there.  Have at it @ankushagarwal thanks for the review.

Tagging infrastructure maintainers for feedback and consensus : @jfrazelle @crosbymichael
TLDR : We want to change install docs to use curl instead of wget because wget lacks SNI support for versions < 1.14 and hence installation fails because it cannot verify get.docker.com's certificate.

I like curl better than wget, seems fine to me.

https://docs.docker.com/linux/step_one/ is not updated yet

@aaronmarzi I opened a pull request here: https://github.com/docker/tutorials/issues/68


access to download detections (training & testing set)

Thanks for your great work. May I ask for your help to get access to download detections (training & testing set)?

I've changed the permissions and it's now available for download via the link in readme, or click here

thanks very much

Sorry, it seems that the link of kitti detection actually download the waymo detection.  Is it correct?

Ok, thank you for pointing out this problem, I updated again. The tracking performance on Waymo dataset is also released in readme, currently ranks third in waymo leadboard.

Got it. The KITTI is available now. Thanks again.


zap-cli: "Could not retrieve version from .version.json"

Commit: c0a2dfc986db47cbfba9d470df59c1b0d0925874
Anything run from zap-cli always results in that json output: {"level":50,"time":1679635807340,"pid":1859675,"hostname":"<hostName>","name":"zap","msg":"Could not retrieve version from .version.json"}
This is just one of the things that prevents connectedhomeip/examples/all-clusters-minimal-app/nrfconnect from building:
...
NRF_802154_CARRIER_FUNCTIONS_ENABLED=0
[8/828] Generating gen/app-zapgen/zapgen/app-templates/z.../app-templates/zap-generated/IMClusterCommandHandler.cpp
FAILED: gen/app-zapgen/zapgen/app-templates/zap-generated/access.h ...

<pathTo>/connectedhomeip/examples/all-clusters-minimal-app/nrfconnect/out/build/nrf52840dongle_nrf52840/gen/app-zapgen/zapgen/app-templates/zap-generated/IMClusterCommandHandler.cpp
...
<pathTo>/connectedhomeip/scripts/tools/zap/generate.py ...
...
Searching for zcl file from <pathTo>/connectedhomeip/examples/all-clusters-minimal-app/nrfconnect/../all-clusters-common/all-clusters-minimal-app.zap
Failed to find `Version: ....` line from ['<pathTo>/zap-cli'] --version
[13/828] Building CXX object modules/openthread/build/src/cli/CMakeFiles/openthread-cli-ftd.dir/cli.cpp.obj
ninja: build stopped: subcommand failed.

here is my output , what versions are you using?
paregan@mac0015027 zap-mac % ./zap-cli --version
Version: 2023.3.27
Feature level: 94
Hash: 15f96c4f997301da1174ef29156c1c7d442f5d44
Date: 2023-03-27T17:20:50.000Z
Mode: binary
Executable: ./zap-cli

Master commit c0a2dfc986db47cbfba9d470df59c1b0d0925874
$ ./zap-cli --version
{"level":50,"time":1680023424069,"pid":2468062,"hostname":"computerName","name":"zap","msg":"Could not retrieve version from .version.json"}
Version:
Feature level: 94
Hash: 0
Date:
Mode: binary
Executable: ./zap-cli

Same result with master commit 15f96c4f997301da1174ef29156c1c7d442f5d44.

https://github.com/project-chip/zap/actions/runs/4534769426 1.) download this zip for whatever OS you're using
2.) unzip
3.) cd into the folder
4.) execute ./zap-cli --version
I just did it and it worked.

I get that, but it's just that I should be able to do it myself. It's what I do with everything that I can.
Not to mention, I'd need to d/l 150+MB everytime I'd be upgrading this vs just fetching small commits and only updating shared node packages (eg packages that may be used for other projects as well).
Currently d/ling your pre-built, and will report back...


Implement execution trace

Overview
We must implement a mechanic that allows us to capture the execution trace as a block is executed. The ExecutionTrace struct should follow the following structure:
pub struct ExecutionTrace {
    /// Accessed accounts and associated storage slots.
    pub accounts: HashMap<Address, HashSet<U256>>,
    /// Accessed codes.
    pub codes: HashSet<B256>,
    /// Block numbers for which block hashes have been accessed.
    pub block_hashes: HashSet<u64>,
}

closed by #3


Sample not found

The google play sample cannot be found

Indeed. The application is being uploaded to Google Play right now, it will
be a matter of hours.
When available, I will send you an email to more easily.
Thanks!
El 27/8/2015 16:32, "Bernat Borrás Paronella"<EMAIL_ADDRESS>escribió:

The google play sample cannot be found
—
Reply to this email directly or view it on GitHub
https://github.com/DavidPizarro/PinView/issues/1.

Hi again!
The sample application is now available on Google Play:
https://play.google.com/store/apps/details?id=com.dpizarro.libraries.pinview
Now, I'm uploading the library to Maven Nexus to make use of it with Gradle
or Maven.
Regards,
2015-08-28 9:27 GMT+02:00 David Pizarro<EMAIL_ADDRESS>
Indeed. The application is being uploaded to Google Play right now, it
will be a matter of hours.
When available, I will send you an email to more easily.
Thanks!
El 27/8/2015 16:32, "Bernat Borrás Paronella"<EMAIL_ADDRESS>escribió:

The google play sample cannot be found
—
Reply to this email directly or view it on GitHub
https://github.com/DavidPizarro/PinView/issues/1.


added my intro webblock proj

Zero To Mastery - Webblocks 2022 📦📦
PR contains:

My second webblocks project titled Intro

Breaking changes

None.

Screenshots

I think I messed up by accidentally merging ZTM with my branch.


Customize admin import forms problem

Following the docs (getting started) in the last section I got a problem.
Everything works fine and the Author form shows normally but when I select the author and send an .xlsx file it doesn't update the author field even after I confirm the import, it doesn't update the author field.
and this's the code that I'm talking about from the docs :
from import_export.admin import ImportMixin
from import_export.forms import ImportForm
from import_export.forms import ConfirmImportForm
from django import forms

class CustomImportForm(ImportForm):
    author = forms.ModelChoiceField(
        queryset=Author.objects.all(),
        required=True)

class CustomConfirmImportForm(ConfirmImportForm):
    author = forms.ModelChoiceField(
        queryset=Author.objects.all(),
        required=True)

class BookResource(resources.ModelResource):

    class Meta:
        model = Book

class CustomBookAdmin(ImportMixin, admin.ModelAdmin):
    resource_class = BookResource

    def get_import_form(self):
        return CustomImportForm

    def get_confirm_import_form(self):
        return CustomConfirmImportForm

    def get_form_kwargs(self, form, *args, **kwargs):
        # pass on `author` to the kwargs for the custom confirm form
        if isinstance(form, CustomImportForm):
            if form.is_valid():
                author = form.cleaned_data['author']
                kwargs.update({'author': author.id})
        return kwargs

admin.site.register(Book, CustomBookAdmin)```

Can you be more specific about what the issue is?  I tried an Author import (xlsx) using the example app and it imported fine.  I also checked that an Author update from the file worked ok.
Can you prove that it's not working using the example app? If so, can you supply the steps to reproduce?

Hi, I have similar issue.
My problem that a get form class but not form class instance onto the form argument of get_form_kwargs method.

Exactly the same for me, did you find something?

Using Django 3.0.4 I am having the same issue.
When I did a bit of debugging, I found that if isinstance(form, CustomImportForm): was always returning False in the above example, so the author would never get passed in and updated.

Interesting. I was working on another lib a few weeks ago, and ran into an issue with isinstance usage. I had to also use issubclass. Could it be related?

Interesting. I was working on another lib a few weeks ago, and ran into an issue with isinstance usage. I had to also use issubclass. Could it be related?

@andrewgy8 I just did the same as your solution here:
    def get_form_instance(self, attribute):
        try:
            if isinstance(attribute, CustomImportForm):
                subscription = attribute
            elif issubclass(attribute, CustomImportForm):
                subscription = attribute()
            else:
                return None
        except TypeError:
            # If attribute is not a class, TypeError is raised when testing issubclass
            return None
        return subscription

    def get_form_kwargs(self, form, *args, **kwargs):
        # pass on `user_type` to the kwargs for the custom confirm form
        print(isinstance(form, CustomImportForm))
        subscription = self.get_form_v1(form)
        if subscription and subscription.is_valid():
            user_type = subscription.cleaned_data['user_type']
            kwargs.update({'user_type': user_type.id})
        return kwargs

And I can confirm it seems to go farther this time. This time, it does not skip the kwargs and passes in (in this case) the user_type id. The behaviour seems to be the same, but with a different path. The kwargs now have the id within it, but its not updating the confirmation screen with the value. Ill try modifying the resources.

I got this working a while back....by monkey patching a large method within the library. We have sense moved on from using this library, but I would suggest waiting until: django-import-export/django-import-export#1185
is pulled in or something similar since its a bit old.

django-import-export v3 refactored the hooks for extending admin forms.  The documentation is here.  Since there have been no recent updates on this issue I will close it.  If anyone can reproduce (or confirm it's working) please add a comment.


Error using MiniZinc.jl on WSL2

Hi, I installed MiniZinc.jl following the instructions on the README and I got an error while trying to run my script in WSL2 using Ubuntu. I reproduced my steps below.
1. Install package
(@v1.10) pkg> ] add MiniZinc
2. Create and Run Script
Then, I created the following script in a file called matrix.jl:
using JuMP
using MiniZinc

# Only need this for Windows.
# ENV["JULIA_LIBMINIZINC_DIR"] = "C:\\Program Files\\MiniZinc"

function find_matrix(mat_sum)
    n = length(mat_sum[1, :])
    model = Model(() -> MiniZinc.Optimizer{Float64}("highs"))
    @variable(model, 1 ≤ x[1:n, 1:n] ≤ n^2, Int)
    @constraint(model, vec(x) in MOI.AllDifferent(n^2))
    for i in 1:n
        @constraint(model, sum(x[i, :]) == mat_sum[1, i])
        @constraint(model, sum(x[:, i]) == mat_sum[2, i])
    end
    optimize!(model)
    display(value.(x))
end

find_matrix([12 18 15; 9 18 18])
find_matrix([33 21 43 39; 24 36 41 35])
find_matrix([43 79 58 60 85; 76 66 44 70 69])

3. Output
And I got the following output after running julia matrix.jl:
Config exception: no solver with tag highs found
minizinc: MiniZinc driver.
 Maybe I'm missing something obvious, but it says that the highs solver is not installed, even though it should have been when the MiniZinc package was installed. I have also installed HiGHS in Julia along with JuMP, so I don't think that's the problem. Any help would be appreciated.
System information:
WSL version: <IP_ADDRESS>
Kernel version: <IP_ADDRESS>-2
WSLg version: 1.0.61
MSRDC version: 1.2.5326
Direct3D version: 1.611.1-81528511
DXCore version: 10.0.26091.1-240325-1447.ge-release
Windows version: 10.0.22631.4169

What is the result of
julia> import Pkg; Pkg.status()

This is what I get:
Status `~/.julia/environments/v1.10/Project.toml`
  [a93c6f00] DataFrames v1.6.1
⌃ [31c24e10] Distributions v0.25.109
  [38e38edf] GLM v1.9.0
  [87dc4568] HiGHS v1.9.3
  [0e44f5e4] Hwloc v3.3.0
⌃ [7073ff75] IJulia v1.24.2
  [41ab1584] InvertedIndices v1.3.0
  [4076af6c] JuMP v1.23.2
  [b8f27783] MathOptInterface v1.31.2
⌃ [a7f392d2] MiniZinc v0.2.1
⌃ [6fe1bfb0] OffsetArrays v1.14.0
  [14b8a8f1] PkgTemplates v0.7.52
⌃ [91a5bcdd] Plots v1.40.4
⌃ [c3e4b0f8] Pluto v0.19.42
⌃ [295af30f] Revise v3.5.14
⌃ [90137ffa] StaticArrays v1.9.4
  [2913bbd2] StatsBase v0.34.3
  [bd369af6] Tables v1.12.0
Info Packages marked with ⌃ have new versions available and may be upgradable.

⌃ [a7f392d2] MiniZinc v0.2.1

Please update your packages with import Pkg; Pkg.update(). You have an old version of MiniZinc.jl installed.

After updating, it worked! It's strange it installed an older version. Thank you for the help!


⚠ Bofrost.lu has degraded performance

In ab9287a, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 1849 ms

Resolved: Bofrost.lu performance has improved in 4c40b66 after 6 minutes.


luci-base: show wifi chip identification on overview

@jow-   Need you opinion on this. I am not sure how expensive the extra call to iwinfo is here.
Show the correct wifi chip identification in case iwinfo recognises the chip.
So far the wifidev.get_i18n function has practically always returned just "Generic", but use iwinfo.hardware_name to fetch the name.
In case the default "Generic MAC80211" is returned from iwinfo, use just "Generic" to avoid double 80211 in the final string.

Until now, the network/wireless page has shown the correct ID, but the frontpage overview has shown just "Generic mac80211...".
References:

iwinfo returns "Generic MAC80211" by default, leading into a need of polishing the output a bit. https://git.openwrt.org/?p=project/iwinfo.git;a=blob;f=iwinfo_nl80211.c;h=de5d2b4baabb3772d2a0ea70915a33ec667dabb1;hb=HEAD#l2773
(note that the same polishing should likely be done for network/wireless, where the double output 80211 can be seen, as the both iwinfo and LuCI get_i18n add 80211 to the final string in case the chip is not recognised)
https://github.com/openwrt/luci/blob/ac2210376dd294f7a69589de79ea5f4845787db5/modules/luci-base/luasrc/model/network.lua#L1430
call to iwinfo.hardware_name in network/wireless: https://github.com/openwrt/luci/blob/2685855d778f8ca55a5c88a24779dfa1dca78c48/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_overview.htm#L35

Overview page:

If the chip is unknown, the output is as earlier "Generic mac80211..."

Double 80211, which is not corrected by this change.

@jow-
while writing this change, I all noticed a difference in wifi band listing. See line 1442:

status/overview page uses network.lua and wifidev.get_i18n, so presence of "ac" band removes all other bands from the list: https://github.com/openwrt/luci/blob/ac2210376dd294f7a69589de79ea5f4845787db5/modules/luci-base/luasrc/model/network.lua#L1442
network/wireless uses its own function and "ac" is additive like other other bands: https://github.com/openwrt/luci/blob/2685855d778f8ca55a5c88a24779dfa1dca78c48/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_overview.htm#L32

So, front page shows 802.11ac, while wireless page shows 802.11nac
(and for third radio in WRT3200ACM, 802.11ac vs. 802.11bgnac  (as the third radio supports all bands).
This discrepancy might be fixed at the same time, but I am not sure which is better,

just "ac"
"nac" or "bgnac" if other bands are supported, too.

any update?

Note that @jow- has also pushed some chip  ID strings into iwinfo source repo itself, but as the iwinfo package in Openwrt has not yet been updated, those strings do not reach the general populace, yet.

iwinfo change (adding chips in R7800 and WRT3200ACM) has been committed to master, so it makes sense to merge also this.


Create any kind of notification if dependent applications are broken

As IRS user,
I want to get notified if dependent applications for IRS have issues,
so that i know if the results of the IRS can be unexpected.
Hints / Details

As an example the submodel servers restart several times per month. Therefore IRS requests run without submodels in result and the testdata has to be uploaded to the desired environment. There is no notification about the restart and it is necessary to check the logs of submodel servers to make sure this was the issue.

after Start of a submodel server testdata is beeing loaded automatically.

Outcome / Acceptance Criteria
Outcome
Acceptance Criteria

If submodel server restarted test data has been updated/ uploaded on startup
...

Out of Scope

...

@ds-alexander-bulgakov I need some more information regarding this issue.
Which submodelservers?
What kind of notification are we talking about?

Could probably be discussed or combined in #412.

We close the ticket as we propose status information over Grafana


Prepair split of diva-react

Preparations to split diva-react into a separate repository and separate npm package.
This PR contains a few changes:

Imports changed to root of diva-react
baseUrl configured outside diva-react (optional and defaulting to '/api')
README.md / documentation on how to use diva-react in another frontend than this one

After this PR is merged, the folder diva-react can be moved to another repository. Then we only need to make all the imports absolute and add diva-react to package.json.

Don't forget to look at the new README.md: https://github.com/Alliander/diva-js-reference-3p-frontend/pull/31/files#diff-9530512035d608b1b2918f4d48ed41f6 (which Github doesn't render by default because of the large diff)


Shortcut to hide titlebar

Description of the new feature / enhancement
Helou!
Is it possible to develop a utility with shortcut to hide the title bar of any window? Option in utility "Always in front"?
Thanks for all, and sorry for my English!
Scenario when this would be used?
Develop enviroment with a lot of windows
Supporting information
No response

/dup #9276


[Question]

Question
Hi everyone,
I configure 2 interfaces by shenyu-bootstrap, called /a and /b.They are work while single,but /b does not work until timeout while invoked by /a.After timeout, /b works again.Who can help me?

My shenyu.netty is default configurations.

OH,this problem only occurs when concurrency.

Is your API functioning normally when accessed directly without going through Shenyu?

yes，it works


GEOMESA-702 Support for 'exists' predicate

Note: will run a full table scan

Signed-off-by: Emilio Lahr-Vivaz<EMAIL_ADDRESS>

In terms of the full-table scan, is there a way to use an attribute index for this?
Is exists the same as "not null"?  (And vice versa for does-not-exist?)

exists seems to be implemented that the simple feature type contains the descriptor with the appropriate name. As such, I think it would return true for every feature in a schema. does-not-exist is the opposite... they don't seem very useful for actually querying, so I figure as long as we have nominal support we're ok.
scala> val filter = ECQL.toFilter("name EXISTS")
filter: org.opengis.filter.Filter = [ PropertyExists('name') = true ]
scala> val sft = SimpleFeatureTypes.createType("foo", "name:String")
sft: org.opengis.feature.simple.SimpleFeatureType = SimpleFeatureTypeImpl foo identified extends Feature(name:name)
scala> val sf = new ScalaSimpleFeature("0", sft, Array("name"))
sf: org.locationtech.geomesa.features.ScalaSimpleFeature = ScalaSimpleFeature:0
scala> filter.evaluate(new ScalaSimpleFeature("0", sft, Array("not null")))
res0: Boolean = true
scala> filter.evaluate(new ScalaSimpleFeature("0", sft, Array(null)))
res1: Boolean = true


Updated for Llama 3.1

Added Converse API and PostgreSQL
Issue #, if available:
Description of changes:
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Merging Llama 3.1 notebooks


Capture Stdin so that we can work with WinAppDriver

We have a setup of selenoid (disable-docker, custom build) <> WinAppDriver running for past couple of years. There were small changes needed to make it work, one of them is capturing Stdin of the WinAppDriver process. Not sure if CaptureDriverLogs is the right place for it, but I did not find any place that looked better. Looking forward to the comments and happy to dicuss/adjust the PR as needed.

@georgy capture driver logs is enabled when -capture-driver-logs flag is passed to Selenoid. This is not always true. Could you please provide a documentation for WinAppdriver, where it is required to pass stdin to driver? Usually a web-driver is expected to implement a W3C Webdriver standard which is a regular HTTP REST API. https://www.w3.org/TR/webdriver2/


Getting Started Documentation

Description of Issue
We want to add documentation on how to get started with terra components. There should be documentation on:

[x] Installing components
[x] Setting up webpack
[x] Importing components
[x] Setting up i18n
[ ] Creating a simple page

Resolved in #37


unify build instructions

we have build instructions in both README.txt and BUILD.
BUILD appears to be from the addition of the Oracle NoSQL datastore. It gives instructions for working around them not having a maven presence. We should treat them the same as e.g. voldemort.

Obviated by the combination of #493 and #598


Message from verifier references non-existent task index

Running the verifier, I got this in the output:
Checking the given plan ...
Task id=0 has itself as a subtask.
IDs of subtasks used in the plan exist: false

But there is not task with id=0 in the input plan.
See this gist for all of the inputs.
Note that validation should fail here, it's just that this error message doesn't seem to make sense.

This is strange. I have just downloaded your gist - and I get a completely different output from the verifier:
pandaPIparser is configured as follows
  Colors in output: true
  Mode: plan verification
  Verbosity: 0
  Lenient mode: false
  Ignore given order: false

Checking the given plan ...
IDs of subtasks used in the plan exist: true
Task with id=2 and task name "have_image" is not declared in the domain.
Task with id=5 and task name "take-image_t" is not declared in the domain.
Task with id=12 and task name "take_image_a" is not declared in the domain.
Task with id=13 and task name "have_image" is not declared in the domain.
Task with id=16 and task name "take-image_t" is not declared in the domain.
Task with id=20 and task name "take_image_a" is not declared in the domain.
Task with id=21 and task name "have_image" is not declared in the domain.
Task with id=24 and task name "take-image_t" is not declared in the domain.
Task with id=28 and task name "take_image_a" is not declared in the domain.
Tasks declared in plan actually exist and can be instantiated as given: false
Methods don't contain duplicate subtasks: true
Methods don't contain orphaned tasks: true
Plan verification result: false

The not declared in the domain issues arise from a difference in spelling. In the plan they are written as have_image, but the domain declares them as have-image.


Feature-Request: poke-images with service account with restricted permissions (DeployServiceAccount/RBAC)

Command

[ ] archive
[ ] check-image-updates
[ ] delete
[ ] deploy
[ ] diff
[ ] downscale
[ ] helm-pull
[ ] helm-update
[ ] list-images
[ ] list-targets
[X] poke-images
[ ] prune
[ ] render
[ ] seal
[ ] validate
[ ] version

Who are you?
Matze, Platform Engineer at Hellmann
What do you want to do?
I would like to use a service account for running the kluctl poke-images command from pipelines. That service account should only have admin permissions for a specific namespace. Even better would be only the right to manipulate deployments in the namespace. The command currently fails to execute in the step
✗ Getting remote objects by commonLabels
with missing permissions to list like
fieldexports.services.k8s.aws is forbidden: User "system:serviceaccount:ep-test-services:ep-admin-sa" cannot list resource "fieldexports" in API group "services.k8s.aws" at the cluster scope
and the worst:
secrets is forbidden: User "system:serviceaccount:ep-test-services:ep-admin-sa" cannot list resource "secrets" in API group "" at the cluster scope
Could we introduce the possibility to skip the remote objects step for poke-images?
Command I run:
kluctl poke-images -I services -t dev --fixed-image=myimage=myimage:master-42
Why do you need that?
I would like to create the ability to enable simple image deployment for DEV/TEST environments without using GitOps aka Flux.

Right now we help ourselves by running simple kubectl deployment patch commands with service accounts only for a specific namespace


starrocks-connector-for-kettle

By extending StarRocks' connectivity with Kettle, users can not only achieve more convenient data imports but also leverage Kettle's operational component library to provide a more streamlined and flexible approach to data manipulation and import. This enables users to easily extract data from various sources and, through Kettle's data processing workflow, import the processed data into StarRocks.

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


[Feature]Add includeOnlySubsets prop to enable emojis filtering by Unicode version

Relate to any issue?
https://github.com/sskhandek/react-native-emoji-input/issues/5
It is a temporary workaround that would allow user of this library to avoid missing emojis being render as X
Breaking change?
Nope, by default all emojis will be rendered as before.
What this PR does?
Adds new includeOnlySubsets prop allowing user to pass an array of strings being Unicode versions and filters possible emojis by that Unicode Versions.
Example of usage:
<EmojiInput
      includeOnlySubsets={['6.0']}
      onEmojiSelected={this.handleEmojiSelected}
      ref={emojiInput => this._emojiInput = emojiInput}
      resetSearch={this.state.reset}
      loggingFunction={this.verboseLoggingFunction.bind(this)}
      verboseLoggingFunction={true}
/>

Change Preview:
Before on my Huawei P8Lite running Android 6.0:

After enabling only 6.0 Unicode:

Seems like Your Travis is broken currently?

I don't think we have an effective travis.
I like the idea, but could you make it more general. Can we pass an array of filter functions to the component instead of specifying only the unicode version?

How would you see implementation? The filter function would take an param that is an emoji entry in lib and upon returning true it would be included in rendered list?
Like (example of changing my unicode only implementation to external filter function):
Let's assume that this is part of my component and state.unicode is an array containing such entries: ["6.0", "6.1"]
And emoji param is passed from EmojiInput component
filterFunction = emoji => {
    return this.state.unicode.indexOf(emoji.lib.added_in) !== -1
}

And pass it to EmojiInput via prop like:
<EmojiInput filterFunction={this.filterFunction} />

And component calls the external filter function like so:
        this.filtered =
            this.props.filterFunction
               ? _.pickBy(emoji, value => this.props.filterFunction(value))
               : emoji

Am I on track with what you have in mind?

Yeah that's just my thought. I think this approach can bring more flexibility to the component. You can even use an array of filter functions.
<EmojiInput filterFunctions={[ this.filterFunction ]} />

defaultProps = {
    filterFunctions: []
}

this.filtered = _.filter(emojis, emoji => _.every(this.props.filterFunctions, fn => fn(emoji)));

@rijn Nice idea, I will push change with that around end of the week. :+1:

Have to close this one in favor of:
https://github.com/sskhandek/react-native-emoji-input/pull/34
Since I don't have access anymore to organization account from which I have created original PR and I can't push there.


feat(express-tools): allow error handling for over ruling scopes

close #36

👍

The changes in requireScopesMiddleware should be documented in the readme right?, other then that it looks nice :)

See #46

👍

:+1:


left-sidebar: Add setting to display organization name in left sidebar.

Issue #20044
We add setting to display organization name in left sidebar under Personal settings > Display settings > Advanced for user and Organization > Default user settings > Advanced for admin to control the default for new users.

Documentation:

I referred the page for 'Change your language', made few changes and added documentation for admins too.
For new screenshots, I updated the first comment in this PR.

@anurastogiji could you please split off the help center page into a separate commit?

You can drop the display-organization-name-new-users page altogether, as it's covered by https://zulip.com/help/configure-default-new-user-settings. We don't need to document it separately.

@timabbott should we try it out on CZO and see how we like it? @laurynmm or I can do a polish pass on the documentation once we know we're happy with the feature.

@anurastogiji could you please split off the help center page into a separate commit?

Done.

Did few minor edits:
diff --git a/static/styles/zulip.css b/static/styles/zulip.css
index a637f4fcce..961621edd3 100644
--- a/static/styles/zulip.css
+++ b/static/styles/zulip.css
@@ -429,7 +429,7 @@ p.n-margin {
             vertical-align: top;
             font-size: 1rem;
             font-weight: 600;
-            cursor: pointer;
+            cursor: text;
             max-width: $left_sidebar_width;
             padding-right: 10px;
             padding-left: 10px;
diff --git a/templates/zerver/help/include/sidebar_index.md b/templates/zerver/help/include/sidebar_index.md
index faeb1d813e..eb8812389a 100755
--- a/templates/zerver/help/include/sidebar_index.md
+++ b/templates/zerver/help/include/sidebar_index.md
@@ -55,7 +55,6 @@
 * [Display organization name](/help/display-organization-name)
 * [Manage your uploaded files](/help/manage-your-uploaded-files)

-
 ## Sending messages
 * [Open the compose box](/help/open-the-compose-box)
 * [Resize the compose box](/help/resize-the-compose-box)

LGTM!


Added useItemOnNpc(itemId, NPC)

Add useItemOnNpc with NPC as params.
Fixed typo in descriptor statements in Interact Method, (Name replaced with Names)

Also Added Spirit Tree Support in the Transport class.

Are you still working on this PR. Please don't leave this open for to long, merging will get difficult

If the latest new commits are acceptable, please accept PR.
I was going to try bundle fairy Rings in as well, but it needs a bit more refinement, thx :)

There are still code comments to be resolved before I can merge this

should be g2g


Google Calendar Reminders not visible

What steps will reproduce the problem?

Basic use of the extension, the reminders calendar is not an option for viewing in the extension

What is the expected result?
Please add this calendar to the extension
What happens instead?
Screenshot URL:
Logs:
System Information:
(This can be captured automatically if you click on Report Issue from the Chrome extension)

Version:
Language:
Timezone Offset:
User Agent:

[ ] I have read and performed all the steps listed under the Troubleshooting section:
https://github.com/manastungare/google-calendar-crx/wiki/Troubleshooting

The Calendar API does not make the Reminders calendar available. Please make a request in the Google Calendar Product Forums.
https://productforums.google.com/forum/#!forum/calendar


Register Engine, OS, ProjectSettings, and Time singletons in time for for INITIZATION_LEVEL_CORE

This PR registers the Engine, ProjectSettings, OS, and Time singletons to ClassDB earlier so that GDExtensions can access them during INITIALIZATION_LEVEL_CORE. Previously, these were only accessible in INITIALIZATION_LEVEL_SCENE and later.
Addresses GIP#9134.
This is done by:

Using GDREGISTER_CLASS and calling Engine::add_singleton for the 4 singletons before register_core_extensions().
Setting Engine and OS values earlier when possible (e.g., Engine::set_project_manager_hint.
Adding a null check for TextServerManager::get_singleton in OS_Windows::get_system_font_path_for_text to prevent a crash since Windows needs the TextServerManager to get the text direction, which is not created until after INITIALIZATION_LEVEL_CORE.

Caveats:
While the exposed singleton methods are all safe to call, they may not return the expected value if they depend on later setup. These exceptions include:

The order of GLOBAL_DEF, etc. calls for project settings unrelated to the 4 singletons is mostly untouched, meaning many defaults are not set until after INITIALIZATION_LEVEL_CORE (e.g., rendering/* settings from RenderingServer::init()).
OS::has_feature will still return false for any server feature until RenderingServer has been created.
OS_Windows::get_system_font_path_for_text depends on the TextServer and will return the empty string until it is created.

Notes on dependencies and code-paths of exposed singleton methods: [Google Sheets Link]

Thanks!
I'm all for this change at a high-level: it would solve a number of long-running issues that many folks have had with GDExtension. I linked to some of the old issues where this was discussion in a comment on the proposal.
It's unfortunate that this requires so many little changes throughout main.cpp and the non-obvious one to os_windows.cpp. That makes me think there's probably going to a bunch of other little regressions that will come out of merging this, that it doesn't catch. So, if we decide to go for this in Godot 4.4, we should probably do it soon: we're still early enough in 4.4's cycle that we could cause and fix a few regressions (but not before 4.4-dev4 since there's already so much merged for that one).
Skimming through the changes, they seem fine to me.

It's unfortunate that this requires so many little changes throughout main.cpp and the non-obvious one to os_windows.cpp. That makes me think there's probably going to a bunch of other little regressions that will come out of merging this, that it doesn't catch.

That is probably my biggest concern with this. I traced all the affected code-paths I could find and I have a GDExtension+project that tests the loading, but I only have a PC and an older Mac to test on. I can clean up my test project and share it here if that would help people with their review, but, even if those tests pass on all devices, I'd still be worried about edge-cases.
All that is to say: I am fine waiting until the next version in order to ensure 4.4's stability.

I tested this with some GDExtensions on both Linux and Android, including actually using the ProjectSettings singleton in INITIALIZATION_LEVEL_CORE in the 'godot_openxr_vendors' extension (the use-case there is to not request OpenXR extensions at all if certain project settings aren't enabled -- currently, we have to always request them, but then just avoid using them).

The default for the XR project settings are not set until shortly before INITIALIZATION_LEVEL_SERVERS, so I suspect this would fail if the extension was somehow added before the project settings were saved for the first time. That is the case for a few hundred project settings (particularly the rendering settings) since I only moved up the settings needed for initialization and the 4 singletons.
Most of those look safe to move earlier, but I have avoided touching them because it would affect many more parts of the Engine (e.g., many rendering/ project settings defaults are set by the RenderingServer). Still, if people prefer, I can move some or as many as possible earlier.

The default for the XR project settings are not set until shortly before INITIALIZATION_LEVEL_SERVERS, so I suspect this would fail if the extension was somehow added before the project settings were saved for the first time. That is the case for a few hundred project settings (particularly the rendering settings) since I only moved up the settings needed for initialization and the 4 singletons.

These are project settings coming from the GDExtension, not from Godot. So, it worked fine in my testing :-)

Discussed at GDExtension meeting: we think this one will improve this long-standing issue with GDExtension. It could cause subtle bugs that we won't notice until later, so it probably makes sense to merge early in the 4.4 cycle, and we can partially revert or fix issues as the come up before release. ProjectSettings is a little tricky because not all settings are available right away, but there is no caching, so they can be requested later; this isn't any worse than ProjectSettings not being available at all.

OS::has_feature will still return false for any server feature until RenderingServer has been created.

Not sure if this would be a big deal in practice. However, we may still want to have an early has_server_feature_callback() that in debug builds, if verbose enabled, with a WARN_PRINT_ONCE or something similar stating that the query can't fall back to the servers at that point. That may help debugging some issues where a maintainer doesn't understand why they are getting false. Not sure. Just an idea.

Besides my little two comments, overall this looks good and indeed a good tradeoff between benefit and risk of regressions.

Thank you for the review!
I've implemented the verbose-debug warning for OS::has_feature and commented the TextServerManager check as you suggested.
I've also adjusted the fix from #99149 since this PR calls Engine::set_max_fps earlier but we still need RenderingDevice to propagate the max FPS after it is created.

Thanks! Congratulations on your first merged contribution! 🎉


Works on Apple Silicon if...

...the use of objc_msgSend_stret() is eliminated, as it's not available on macOS ARM.
Very nice job.

@sparkylein thanks for reporting the issue. I have come up with a quick fix in this PR. I don't have a macOS Apple Silicon device right now, so I couldn't test it. Would you mind taking the PR and testing if it works?

The V compiler wants a return at the end of fn get_msg_send_fn[R]() FnSendMsgGeneric.
Suppose there needs to be a default return after the $if block.
This is how the function looks on my end:
fn get_msg_send_fn[R]() FnSendMsgGeneric {
	// issue #1. Always use objc_msgSend for Apple Silicon chips.
	$if arm64 {
		return C.objc_msgSend
	} $else {
		// WARNING: this is a very naive way to decide calling objc_msgSend or objc_msgSend_stret.
		// If the size of the return type is less or equal than the C pointer size, it assumes the value
		// can be saved in registers and hence the objc_msgSend is used. Otherwise, objc_msgSend_stret
		// is used. It is only tested on x86_64 and may not work on other architecture.
		ptr_size := sizeof(voidptr)
		if sizeof(R) <= ptr_size {
			return C.objc_msgSend
		} else {
			return C.objc_msgSend_stret
		}
	}

	return C.objc_msgSend
}

This compiles fine.
Awesome!

Yeah, I am on the latest V version too.
This sounds a little bit weird to me.

The $if-$else block always has a return statement, no matter which platform it is on. So V compiler should not fail.
I replaced arm64 with x86 so it should have the same effect on my laptop as that on yours. I didn't see V compiler error but the unit tests failed, which is expected.

Would you please paste the V compiler error you got after running make?
At the same time, I have added the  return C.objc_msgSend statement at the end, as you did above. I have merged the PR to unblock your usage. :)

Here the error message:
objc % make build
v -shared .
src/message.v:192:1: error: missing return at end of function `objc.get_msg_send_fn`
  190 |
  191 | // get_msg_send_fn determines which objc_msgSend* function to call based on `R`.
  192 | fn get_msg_send_fn[R]() FnSendMsgGeneric {
      | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  193 |     // issue #1. Always use objc_msgSend for Apple Silicon chips.
  194 |     $if arm64 {
make: *** [build] Error 1

Suppose this happens because after the $if block there is no return, as the compiler is not smart enough to recognize the 2 return in the $if block.
Besides, shouldn’t this error message show up on any OS?

Yeah, that's my understanding that it should have the same error message in any OS. But it didn't happen on my laptop with an Intel processor.


remove generated frontend code

@Marcarrian
so: we're talking about which code? frontend entities directory, I think. admin maybe too (metrics etc.. that shit doesn't scale anyways)? no backend code in my opinion.
my main issue is, I don't want to lose it (entities) in case we need it later. see this comment. so either we tag a commit, then remove it. or we use kind of an "archive" branch. what do you think is best?

steps to take:

[ ] cleanup entities
[ ] migrate to shared
[ ] cleanup admin

migrate to shared: wontfix.


inserting data from csv file into existing hyper file

Hi, I'm creating a data frame & csv file from pulling data from a SQL data base and then write the same into an existing hyper file. But when ever I do it, it is just replacing the data in the hyper file rather then inserting new data along with the existing ones.
def create_hyper_file_from_csv(dataframe):
print("Load data from CSV into table in new Hyper file for ACE Dashboard")

process_parameters = {
    # Limits the number of Hyper event log files to two.
    "log_file_max_count": "2",
    # Limits the size of Hyper event log files to 100 megabytes.
    "log_file_size_limit": "100M"
}

with HyperProcess(Telemetry.DO_NOT_SEND_USAGE_DATA_TO_TABLEAU, 'Tabloader', parameters=process_parameters) as hyper:

    connection_parameters = {"lc_time": "en_US"}

    with Connection(endpoint=hyper.endpoint, database=PATH_TO_HYPER,
                    create_mode=CreateMode.CREATE_AND_REPLACE, parameters=connection_parameters) as connection:

        connection.catalog.create_table(ace_dashboard_table)

        with Inserter(connection, ace_dashboard_table) as inserter:
            for index, row in dataframe.iterrows():
                try:
                    inserter.add_row(row)
                except Exception as e:
                    print("An error occured at row {index}: {e}")

            inserter.execute()

        #insert_csv_data = connection.execute_command(
        # ) command=f"COPY {ace_dashboard_table.table_name} FROM {escape_string_literal(PATH_TO_CSV)} with "
        #    "(format csv, NULL 'NULL', delimiter ';', header true)")

    print("The connection to the Hyper file is closed.")
#print(f"Loaded {insert_csv_data} rows.")
os.remove(PATH_TO_CSV)

Hi @ramananravishankar,
when creating the connection to the Hyper file, you specify
create_mode=CreateMode.CREATE_AND_REPLACE
which will create a new hyper file and replace the existing one. If you want to insert into the existing file, you need to just connect to the file and not create a new one. To do that, either use CreateMode.NONE (which will throw an error if the file does not exist) or CreateMode.CREATE_IF_NOT_EXISTS (which will create the file if it does not exist).
You can find the API reference here: https://help.tableau.com/current/api/hyper_api/en-us/reference/py/tableauhyperapi.html#api-reference
Cheers
Jonas

I have tried both of them earlier. It shows an error saying the file already exists and does not update with the new data.

Can you please try again. If it fails again, please attach the exact code you used + the output.
Thanks
Jonas

Below is the full code.
import mysql.connector
import pandas as pd
import csv
import os
import json
import sys
import datetime
from datetime import date, datetime, timedelta
from mysql.connector import Error
from tableauhyperapi import HyperProcess, Connection, TableDefinition, SqlType, Telemetry, Inserter, CreateMode, connection,
escape_string_literal, HyperException, NULLABLE, tabledefinition
PATH_TO_CSV = r"ACE_DB_Output_" + str(date.today()) + ".csv"
#PATH_TO_HYPER = r"ACE_DB_Output"+ str(date.today()) + ".hyper"
PATH_TO_HYPER = r"ACE_DB_Output.hyper"
ace_dashboard_table = TableDefinition(
table_name="ACE_Dashboard",
columns=[TableDefinition.Column('Customer', SqlType.text(), NULLABLE),
TableDefinition.Column('JID', SqlType.text(), NULLABLE),
TableDefinition.Column('JID_AID', SqlType.text(), NULLABLE),
TableDefinition.Column('Rule', SqlType.text(), NULLABLE),
TableDefinition.Column('Category', SqlType.text(), NULLABLE),
TableDefinition.Column('Change_Type', SqlType.text(), NULLABLE),
TableDefinition.Column('Find', SqlType.text(), NULLABLE),
TableDefinition.Column('Replace', SqlType.text(), NULLABLE),
TableDefinition.Column('Occurrences', SqlType.int(), NULLABLE),
TableDefinition.Column('ProcessedDate', SqlType.date(), NULLABLE)
]
)
ACE_Data_Array = []
def load_config():
try:
with open('config.json', 'r') as f:
config_file = json.load(f)
print("Config file loaded.")
return config_file
except:
message = "Could not read config file."
print("Unexpected error: ", sys.exc_info()[0])
sys.exit(message)
def db_initiate_connection(host_name, user_name, password, db_name):
try:
db_connection = mysql.connector.connect(
host=host_name,
user=user_name,
password=password,
database=db_name
)
if db_connection.is_connected():
db_Info = db_connection.get_server_info()
print("Connected to SQL Server Version ", db_Info)
return db_connection
except Error as e:
    message = ("Error when connecting to the database:", e)
    sys.exit(message)

def fetch_data():
config = load_config()

Current_Date = str(date.today())
Previous_Date = str(date.today() - timedelta(days = 1))

# SQL Query for fetching the JIDs for the specified date
## As of now limited to 5 for testing purpose
#sql_journal_query = "select id from journals where date between '" + Previous_Date + "' and '" + Current_Date +"' limit 5"
sql_journal_query = "select id from journals where date between '2021-11-04' and '2021-11-05' limit 5"

# Initiating database connection
db_connection = db_initiate_connection(
    config['host'], config['user'], config['password'], config['database'])

if db_connection.is_connected():

    print("Database connected.")

    # Fetch JIDs for the specified date and save them in a record
    JournalIdCursor = db_connection.cursor()
    print("Journal Cursor created.")
    JournalIdCursor.execute(sql_journal_query)

    JID_Record = JournalIdCursor.fetchall()
    print("Total number of JIDs fetched: ", JournalIdCursor.rowcount)

    # Closing Journal Cursor
    JournalIdCursor.close()
    print("Journal Cursor is closed.")
    # Closing the data base connection
    db_connection.close()
    print("Database connection ended.")

    # SQL Query to fetch the expected data for ACE Dashboard

    sql_query = 'select cust.name as Customer, j.name as JID, j.aid as JID_AID, r.name as Rule, cat.name as Category, rt.name as Change_Type, prec.find_text as Find, prec.replace_text as "Replace", prec.occurrences as Occurrences, j.date as ProcessedDate from  journals j, rules r, rule_type rt, category cat, precision_entries prec, customer cust where j.customer=cust.id and prec.journal_id=j.id and prec.rule_id=r.id and prec.type_id=rt.id and prec.category_id=cat.id and prec.category_id NOT IN (6,7,8,9) and cust.name!="" and j.id = {}'

    # Initiating database connection
    db_connection = db_initiate_connection(config['host'], config['user'], config['password'], config['database'])

    if db_connection.is_connected():

        print("Database connected.")

        finalcursor = db_connection.cursor()
        print("Final Cursor created.")

        for x in JID_Record:
            finalcursor.execute(sql_query.format(*x))
            finalrecords = finalcursor.fetchall()

            for y in finalrecords:
                ACE_Data_Array.append(y)

        dataframe = pd.DataFrame(ACE_Data_Array, columns=['Customer', 'JID', 'JID_AID', 'Rule', 'Category', 'Change_Type', 'Find', 'Replace', 'Occurences', 'ProcessedDate'])

        # Need to convert the Date and Time as per format/
        # Date - YYYY-MM-DD
        dataframe['ProcessedDate'] = dataframe['ProcessedDate'].astype('datetime64[s]')

        dataframe.to_csv(PATH_TO_CSV, sep=';', encoding='utf=8', index=False)
        print("Fetched data loaded into CSV file.")

        finalcursor.close()
        print("Final Cursor is closed.")
        db_connection.close()
        print("Database connection ended.")
        return dataframe

    else:
        print("No database connection found.")

else:
    print("No database connection found.")

def create_hyper_file_from_csv(dataframe):
print("Load data from CSV into table in new Hyper file for ACE Dashboard")

process_parameters = {
    # Limits the number of Hyper event log files to two.
    "log_file_max_count": "2",
    # Limits the size of Hyper event log files to 100 megabytes.
    "log_file_size_limit": "100M"
}

with HyperProcess(Telemetry.DO_NOT_SEND_USAGE_DATA_TO_TABLEAU, 'Tabloader', parameters=process_parameters) as hyper:

    connection_parameters = {"lc_time": "en_US"}

    with Connection(endpoint=hyper.endpoint, database=PATH_TO_HYPER,
                    create_mode=CreateMode.CREATE_AND_REPLACE, parameters=connection_parameters) as connection:

        connection.catalog.create_table(ace_dashboard_table)

        with Inserter(connection, ace_dashboard_table) as inserter:
            for index, row in dataframe.iterrows():
                try:
                    inserter.add_row(row)
                except Exception as e:
                    print("An error occured at row {index}: {e}")

            inserter.execute()

        #insert_csv_data = connection.execute_command(
        # ) command=f"COPY {ace_dashboard_table.table_name} FROM {escape_string_literal(PATH_TO_CSV)} with "
        #    "(format csv, NULL 'NULL', delimiter ';', header true)")

    print("The connection to the Hyper file is closed.")
#print(f"Loaded {insert_csv_data} rows.")
os.remove(PATH_TO_CSV)

if name == 'main':
try:
df = fetch_data()
create_hyper_file_from_csv(df)
except HyperException as ex:
    print(ex)
    exit(1)

I tried again and still getting the same error stating the file exists already.
Below is the code.
import mysql.connector
import pandas as pd
import csv
import os
import json
import sys
import datetime
from datetime import date, datetime, timedelta
from mysql.connector import Error
from tableauhyperapi import HyperProcess, Connection, TableDefinition, SqlType, Telemetry, Inserter, CreateMode, connection,
escape_string_literal, HyperException, NULLABLE, tabledefinition
PATH_TO_CSV = r"ACE_DB_Output_" + str(date.today()) + ".csv"
PATH_TO_HYPER = r"ACE_DB_Output.hyper"
ace_dashboard_table = TableDefinition(
table_name="ACE_Dashboard",
columns=[TableDefinition.Column('Customer', SqlType.text(), NULLABLE),
TableDefinition.Column('JID', SqlType.text(), NULLABLE),
TableDefinition.Column('JID_AID', SqlType.text(), NULLABLE),
TableDefinition.Column('Rule', SqlType.text(), NULLABLE),
TableDefinition.Column('Category', SqlType.text(), NULLABLE),
TableDefinition.Column('Change_Type', SqlType.text(), NULLABLE),
TableDefinition.Column('Find', SqlType.text(), NULLABLE),
TableDefinition.Column('Replace', SqlType.text(), NULLABLE),
TableDefinition.Column('Occurrences', SqlType.int(), NULLABLE),
TableDefinition.Column('ProcessedDate', SqlType.date(), NULLABLE)
]
)
ACE_Data_Array = []
def load_config():
try:
with open('config.json', 'r') as f:
config_file = json.load(f)
print("Config file loaded.")
return config_file
except:
message = "Could not read config file."
print("Unexpected error: ", sys.exc_info()[0])
sys.exit(message)
def db_initiate_connection(host_name, user_name, password, db_name):
try:
db_connection = mysql.connector.connect(
host=host_name,
user=user_name,
password=password,
database=db_name
)
if db_connection.is_connected():
db_Info = db_connection.get_server_info()
print("Connected to SQL Server Version ", db_Info)
return db_connection
except Error as e:
    message = ("Error when connecting to the database:", e)
    sys.exit(message)

def fetch_data():
config = load_config()

Current_Date = str(date.today())
Previous_Date = str(date.today() - timedelta(days = 1))

# SQL Query for fetching the JIDs for the specified date
#sql_journal_query = "select id from journals where date between '" + Previous_Date + "' and '" + Current_Date +"' limit 5"

## As of now limited to 5 for testing purpose
sql_journal_query = "select id from journals where date between '2021-11-04' and '2021-11-05' limit 5"

# Initiating database connection
db_connection = db_initiate_connection(
    config['host'], config['user'], config['password'], config['database'])

if db_connection.is_connected():

    print("Database connected.")

    # Fetch JIDs for the specified date and save them in a record
    JournalIdCursor = db_connection.cursor()
    print("Journal Cursor created.")
    JournalIdCursor.execute(sql_journal_query)

    JID_Record = JournalIdCursor.fetchall()
    print("Total number of JIDs fetched: ", JournalIdCursor.rowcount)

    # Closing Journal Cursor
    JournalIdCursor.close()
    print("Journal Cursor is closed.")
    # Closing the data base connection
    db_connection.close()
    print("Database connection ended.")

    # SQL Query to fetch the expected data for ACE Dashboard

    sql_query = 'select cust.name as Customer, j.name as JID, j.aid as JID_AID, r.name as Rule, cat.name as Category, rt.name as Change_Type, prec.find_text as Find, prec.replace_text as "Replace", prec.occurrences as Occurrences, j.date as ProcessedDate from  journals j, rules r, rule_type rt, category cat, precision_entries prec, customer cust where j.customer=cust.id and prec.journal_id=j.id and prec.rule_id=r.id and prec.type_id=rt.id and prec.category_id=cat.id and prec.category_id NOT IN (6,7,8,9) and cust.name!="" and j.id = {}'

    # Initiating database connection
    db_connection = db_initiate_connection(config['host'], config['user'], config['password'], config['database'])

    if db_connection.is_connected():

        print("Database connected.")

        finalcursor = db_connection.cursor()
        print("Final Cursor created.")

        for x in JID_Record:
            finalcursor.execute(sql_query.format(*x))
            finalrecords = finalcursor.fetchall()

            for y in finalrecords:
                ACE_Data_Array.append(y)

        dataframe = pd.DataFrame(ACE_Data_Array, columns=['Customer', 'JID', 'JID_AID', 'Rule', 'Category', 'Change_Type', 'Find', 'Replace', 'Occurences', 'ProcessedDate'])

        # Need to convert the Date and Time as per format/
        # Date - YYYY-MM-DD
        dataframe['ProcessedDate'] = dataframe['ProcessedDate'].astype('datetime64[s]')

        dataframe.to_csv(PATH_TO_CSV, sep=';', encoding='utf=8', index=False)
        print("Fetched data loaded into CSV file.")

        finalcursor.close()
        print("Final Cursor is closed.")
        db_connection.close()
        print("Database connection ended.")
        return dataframe

    else:
        print("No database connection found.")

else:
    print("No database connection found.")

def create_hyper_file_from_csv(dataframe):
print("Load data from CSV into table in new Hyper file for ACE Dashboard")

process_parameters = {
    # Limits the number of Hyper event log files to two.
    "log_file_max_count": "2",
    # Limits the size of Hyper event log files to 100 megabytes.
    "log_file_size_limit": "100M"
}

with HyperProcess(Telemetry.DO_NOT_SEND_USAGE_DATA_TO_TABLEAU, 'Tabloader', parameters=process_parameters) as hyper:

    connection_parameters = {"lc_time": "en_US"}

    with Connection(endpoint=hyper.endpoint, database=PATH_TO_HYPER,
                    create_mode=CreateMode.CREATE_AND_REPLACE, parameters=connection_parameters) as connection:

        connection.catalog.create_table(ace_dashboard_table)

        with Inserter(connection, ace_dashboard_table) as inserter:
            for index, row in dataframe.iterrows():
                try:
                    inserter.add_row(row)
                except Exception as e:
                    print("An error occured at row {index}: {e}")

            inserter.execute()

        #insert_csv_data = connection.execute_command(
        # ) command=f"COPY {ace_dashboard_table.table_name} FROM {escape_string_literal(PATH_TO_CSV)} with "
        #    "(format csv, NULL 'NULL', delimiter ';', header true)")

    print("The connection to the Hyper file is closed.")
#print(f"Loaded {insert_csv_data} rows.")
os.remove(PATH_TO_CSV)

if name == 'main':
try:
df = fetch_data()
create_hyper_file_from_csv(df)
except HyperException as ex:
    print(ex)
    exit(1)

You are still using CreateMode .CREATE_AND_REPLACE in the code, which will overwrite the hyper file. Please try CreateMode.NONE.
Another thing that might simplify your process is pantab, see here: https://pantab.readthedocs.io/en/latest/

Sorry, I pasted the old code. I have changed it to CreateMode.NONE in the original file.

pantab makes the job very easy. Thank you so much.

Sounds great, @ramananravishankar. I'll close the issue. Let me know if you have any further questions.
Btw, we have a program dedicated to developers using our APIs: https://www.tableau.com/developer
Amongst others, you get slack access to the developer community, Tableau Online beta access and much more.
Cheers
Jonas


Rebuild for python 3.11

Rebuild for python 3.11. ray 2.6.3 has a hard dependency on gymnasium 0.26.3 and we need it for python 3.11.
Channel: Defaults
Depends on:

https://github.com/AnacondaRecipes/gymnasium-notices-feedstock/pull/2

Linter check found the following problems:
The following problems have been found:
INFO: clone/recipe/meta.yaml:0: output_missing_script: output "gymnasium": Output is missing script.
WARNING: clone/recipe/meta.yaml:19: host_section_needs_exact_pinnings: Linked libraries host should have exact version pinnings.
WARNING: clone/recipe/meta.yaml:20: host_section_needs_exact_pinnings: Linked libraries host should have exact version pinnings.
WARNING: clone/recipe/meta.yaml:21: host_section_needs_exact_pinnings: Linked libraries host should have exact version pinnings.
ERROR: clone/recipe/meta.yaml:29: pip_install_args: pip install should be run with --no-deps and --no-build-isolation.
ERROR: clone/recipe/meta.yaml:29: wrong_output_script_key: It should be outputs/x/script, not outputs/x/build/script
WARNING: clone/recipe/meta.yaml:33: host_section_needs_exact_pinnings: output "gymnasium": Linked libraries host should have exact version pinnings.
WARNING: clone/recipe/meta.yaml:34: host_section_needs_exact_pinnings: output "gymnasium": Linked libraries host should have exact version pinnings.
WARNING: clone/recipe/meta.yaml:35: host_section_needs_exact_pinnings: output "gymnasium": Linked libraries host should have exact version pinnings.
ERROR: clone/recipe/meta.yaml:78: missing_imports_or_run_test_py: output "gymnasium-all": Python packages require imports or a python test file in tests.
ERROR: clone/recipe/meta.yaml:191: missing_imports_or_run_test_py: output "gymnasium-other": Python packages require imports or a python test file in tests.
ERROR: clone/recipe/meta.yaml:191: missing_tests: output "gymnasium-other": No tests were found.
Errors were found

@markan Indeed. Since this an older version, I felt like modifying the recipe too much could introduce unwanted errors.

Linter check found the following problems:
The following problems have been found:
INFO: clone/recipe/meta.yaml:0: output_missing_script: output "gymnasium": Output is missing script.
WARNING: clone/recipe/meta.yaml:19: host_section_needs_exact_pinnings: Linked libraries host should have exact version pinnings.
WARNING: clone/recipe/meta.yaml:20: host_section_needs_exact_pinnings: Linked libraries host should have exact version pinnings.
WARNING: clone/recipe/meta.yaml:21: host_section_needs_exact_pinnings: Linked libraries host should have exact version pinnings.
ERROR: clone/recipe/meta.yaml:29: pip_install_args: pip install should be run with --no-deps and --no-build-isolation.
ERROR: clone/recipe/meta.yaml:29: wrong_output_script_key: It should be outputs/x/script, not outputs/x/build/script
WARNING: clone/recipe/meta.yaml:33: host_section_needs_exact_pinnings: output "gymnasium": Linked libraries host should have exact version pinnings.
WARNING: clone/recipe/meta.yaml:34: host_section_needs_exact_pinnings: output "gymnasium": Linked libraries host should have exact version pinnings.
WARNING: clone/recipe/meta.yaml:35: host_section_needs_exact_pinnings: output "gymnasium": Linked libraries host should have exact version pinnings.
ERROR: clone/recipe/meta.yaml:78: missing_imports_or_run_test_py: output "gymnasium-all": Python packages require imports or a python test file in tests.
ERROR: clone/recipe/meta.yaml:191: missing_tests: output "gymnasium-other": No tests were found.
ERROR: clone/recipe/meta.yaml:191: missing_imports_or_run_test_py: output "gymnasium-other": Python packages require imports or a python test file in tests.
Errors were found


Vite plugin duplicates some styles each time the configuration is updated

Steps:

Run vanilla vite project in dev mode
Looks at the windicss layer base styles
Make some changes to tailwind.config.js. Add extra empty line, or something like that.
Looks at the windicss layer base styles again. You should notice that some rules have started to be duplicated.

You can repeat this many times and the styles will become more and more.
I noticed that styles with preflight and plugins are duplicated. But there may be scenarios when custom styles are also duplicated.
This clogs the debugging:

Fixed in vite-plugin-winidcss v1.4.5


Some fixes to Precache Files with Workbox CLI

What's changed, or what was fixed?
In the "Precache Files with Workbox CLI" article,

Fixed punctuation of a sentence inside parentheses
Added missing punctuation
Fixed some typos

CC: @petele

:tada: This has been pushed live to https://developers.google.com/web/


Agents platform and new CLI

Refactor agents and cli. It is not 100% ready, but it is getting too big. So I propose to merge now, and continue the work.

To prevent unnecessary crashes,before merging we should migrate all the test and deploy code to use the new flags scheme.


Change behavior of PageUp and PageDown keys

The behavior of the PageUp and PageDown keys in RichTextFX is IMO very unusual compared to other editors (Eclipse, IntelliJ IDEA, etc).
Let's say the text is 1000 lines long and there are 50 lines visible.
Pressing PageDown key in RichTextFX moves the caret down 50 lines and then scrolls the caret into the visible area. In case the caret was at the top, RichTextFx scrolls only one line down. The caret is then at the bottom of the visible area.
In other editors, the text always scrolls 50 lines down and the caret is also moved 50 lines down.
Would it be possible to change this in RichTextFX?

Just to be clear, you're saying the new behavior should move viewport so that it goes from displaying lines B to D to displaying lines E to G, correct?
----------- < top of document
|A
|======= < top of viewport
|B       < first line in viewport
|C
|D       < last line in viewport
|======= < Bottom of viewport
|E
|F
|G
|------------- < bottom of document

I've wondered about this myself. I'm ok with changing it. If people want to change it back, they can override the default behavior to what it was before.

Just to be clear, you're saying the new behavior should move viewport so that it goes from displaying lines B to D to displaying lines E to G, correct?

Yes, exactly.

@JFormDesigner mind submitting a PR for this? Shouldn't be too hard.

@JFormDesigner no I'm not working on PR yet, so please go ahead ....


Depreciation Issue

Not sure why but this bug or something similar appears to be affecting this version. Appreciate this repo has no Jquery so unsure as to why.
https://github.com/nathanvda/cocoon/pull/615
Having had a look I think it might be that we don't listen for a turbo:load event, only the old turbolinks one.

@rmaspero thanks, we'll take a look when we have time.