Make a new release

The latest release is rather old and over 190 commits have been done meanwhile. Would be nice to get a new release including a recent demo application.

@Symbai A new final release needs still some time, but you can look at the appveyor build ci to get the latest (hot) pre-release and the main demo.

@punker76 I would like to help getting the release done, as I really like this framework. Because I dont know what you are working on: On which topic should I work next? I think about #3299 .
Happy coding
Tim


keep Navigation with TileMap up to date

Operating system or device, Godot version, GPU Model and driver (if graphics related):
Linux 64 bit Fedora 26, Godot 2.1.4
Issue description:
Removing a Cell containing NavigationPolygonInstance from the TileMap should update the get_simple_path() function of the Navigation2D node in the same frame. It shouldn't return a path through the removed cell.
Link to minimal example project:
nav.zip

Bug is still existent in Godot 3 Alpha 2. Please add a Milestone
I recreated the project in the new alpha:
nav.zip

(should be) Fixed by #15909.

Note that #20352 made the update of quadrants deferred again, so this issue would technically still be valid. But it's not a bug, it's a design decision that quadrants update should be deferred, otherwise performance takes a great hit. You can call update_dirty_quadrants() manually after using set_cell if needed.


Support for private locations in synthetics agent

With our work on private locations we'll need to add support to the synthetics agent for these new locations.
This means supporting a new private_locations setting in addition to the locations where relevant. This means:

In the init generated config.ts, and included as an option when selecting a default location (it could be at the bottom of the list)
In config.ts
In the DSL

@andrewvc do you mean that this should include a list of private locations when running init (as opposed to just mentioning the existance of a private_locations option)?
The reason I ask is that Synthetics currently parses https://github.com/elastic/synthetics/blob/main/src/dsl/locations.ts to list the locations available, i.e. it’s a static list from the version you’re running init from.  It doesn’t talk to Kibana to get the list.
Although this could be possible, that would mean the user would also have to provide the Kibana URL when running init (like they do when running push).

Although this could be possible, that would mean the user would also have to provide the Kibana URL when running init (like they do when running push).

We investigating an option where users can configure their list of private locations using the location id, without talking to Kibana for v1.

Closing in favor of https://github.com/elastic/synthetics/issues/557


Employ caf::visit to reduce boilerplate when handling arrow data

This is purely a refactoring, leveraging our recently-created sum type
over arrow::Array to double-dispatch on the tuple (VAST type, Arrow type).
:memo: Checklist

[X] All user-facing changes have changelog entries.
[X] The changes are reflected on docs.tenzir.com/vast, if necessary.
[X] The PR description contains instructions for the reviewer, if necessary.

:dart: Review Instructions
It's a single commit / single file change.
Open question: The new implementation of apply_index could be slightly less efficient than the previous one, because we're now calling value_at for every element, instead of dispatching on the array type once and then have a tight loop. This could be fix by re-introducing some boilerplate in the now-defunct index_applier, but I'm not sure it's worth it -- I assume actually maintaining the index on index.append(...) is more expensive.

Nice net-negative PR there. And double-dispatch is so much more readable...

I could do the same refactoring to the "old" (current arrow table slice) code in the legacy namespace.
It is likely even possible to integrate handling old representations into value_at, adding a few lambdas (potentially amending our sum type with some of the legacy variants for address and subnet).

The inversion did slightly lower the indexing performance. I proposed a change inline that makes the API both even easier to use, and should fix that problem.

I'd be interested to learn how you benchmark this. It seems tricky to isolate the indexing, avoiding a benchmark of the entire import process (which may be fine, too).

I'd be interested to learn how you benchmark this. It seems tricky to isolate the indexing, avoiding a benchmark of the entire import process (which may be fine, too).

import csv and import netflow are both super fast and easily get to 500k+ events/sec. The index will always be the slowest part of the import pipeline for these formats and slow them down via back pressure.


guardrails model support

Description
Support remote guardrails model to validate user input or LLM output.
Issues Resolved
https://github.com/opensearch-project/ml-commons/issues/2463
Check List

[ ] New functionality includes testing.

[ ] All tests pass

[ ] New functionality has been documented.

[ ] New functionality has javadoc added

[ ] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Hi team, I am adding more UT and IT in this pr, you can review the feature at first.


configurable annotations for volumeClaimTemplates

I added the option to configure anntoations for volumeClaimTemplates via values, since I needed this for my own setup.

Hey @malte2289, thanks for the PR. Could you please write something about the variable in values.yml, then update README.md as per https://github.com/guerzon/vaultwarden/blob/main/CONTRIBUTING.md? Thanks


face_recognition_knn.py question

Operating System: debian stretch

i want to make a database, that contains about 5.000 of images. I use  	face_recognition_knn.py and it works fine but, how can i organize it, for make recognition faster.
For example i import 1 photo, it search about 30 minutes from 5.000 of images, after that im importing second photo and it also takes 30 minutes. Can i 'index' that 5000 photos or something like that. all 5.000 photos will constantly stay in one folder.   I didnt actually understood how   can i do model retraining.
p.s. sorry for my english

can anybody give an example how can i train model in face_recognition_knn.py
model_save_path = ""   - must be it a path, or a file name please guys  1 example of full working script
trainig and prediction, i didnt understand how to make it works

You just need to keep the training results in a txt file at the first time.
Like this:
knn_clf = train("knn_examples/train", "./model/model.txt")
and then preddict like this:
preds = predict(join("knn_examples/test", img_path), model_save_path="./model/model.txt")
If the training data remains the same, you don't need to training model.

knn_clf = train("knn_examples/train", "./model/model.txt")   - i must put  in the begining of knn.py script or replace model path?

1-As many as u want to train
2- I think, With current code, we have to train again. Would be helpful if someone can comment on this point. Do we need to train whole dataset(ex: 10,000 images) when new observation gets added up ? Is there any pre trained knn model ? Something like transfer learning
3-I think u need to play with  kneighbours

i all most got it my friend , i added the string  "print(closest_distances)"
closest_distances = knn_clf.kneighbors(faces_encodings, n_neighbors=8)
print(closest_distances)
it prints 8 closest neighbors but not their name only distance ((array([[0.        , 0.38515912, 0.81486565, 0.8384682 , 0.8384682 , 0.86994276, 0.93531323, 0.93531323]]), array([[3, 7, 4, 2, 6, 0, 1, 5]])))
like this, please help me to add names )

closest_distances = knn_clf.kneighbors(faces_encodings, n_neighbors=1)
is_recognized = [closest_distances[0][i][0] <= DIST_THRESH for i in range(len(X_faces_loc))]
return [(basename, pred) if rec else (basename, "No match found") for pred, rec in zip(knn_clf.predict(faces_encodings), is_recognized)]

You need to modify these 3 lines of code. In, closest_distances[0][i][0], the first 0 is the array([[0. , 0.38515912, 0.81486565, 0.8384682 , 0.8384682 , 0.86994276, 0.93531323, 0.93531323]])
In, closest_distances[1][i][0], it is array([[3, 7, 4, 2, 6, 0, 1, 5]]))....
So, keep a for loop and get all the nearet neighbours to a is_recognized variable. Later, for all those recogized values, print the names.

sorry, im newbie i didnt understand anything ((
as i understand 0.38515912 - is distance of second most similar face, my problem is in printing his name.
i just want to see

, 0.38515912, 0.81486565, 0.8384682 , 0.8384682 , 0.86994276, 0.93531323, 0.93531323

their names instead of distance.
Sorry for my stupidity.

Can u print your is_recognized and tell me ? the next line of closest_distances

I divided standard face_recognition_knn.py into two parts:
1st to train dataset once:
`from math import sqrt
from sklearn import neighbors
from os import listdir
from os.path import isdir, join, isfile, splitext
import pickle
from PIL import Image, ImageFont, ImageDraw, ImageEnhance
import face_recognition
from face_recognition import face_locations
from face_recognition.cli import image_files_in_folder
ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg'}
def train(train_dir, model_save_path = "", n_neighbors = None, knn_algo = 'ball_tree', verbose=False):
"""
Trains a k-nearest neighbors classifier for face recognition.
:param train_dir: directory that contains a sub-directory for each known person, with its name.

 (View in source code to see train_dir example tree structure)

 Structure:
    <train_dir>/
    ├── <person1>/
    │   ├── <somename1>.jpeg
    │   ├── <somename2>.jpeg
    │   ├── ...
    ├── <person2>/
    │   ├── <somename1>.jpeg
    │   └── <somename2>.jpeg
    └── ...
:param model_save_path: (optional) path to save model of disk
:param n_neighbors: (optional) number of neighbors to weigh in classification. Chosen automatically if not specified.
:param knn_algo: (optional) underlying data structure to support knn.default is ball_tree
:param verbose: verbosity of training
:return: returns knn classifier that was trained on the given data.
"""
X = []
y = []
for class_dir in listdir(train_dir):
    if not isdir(join(train_dir, class_dir)):
        continue
    for img_path in image_files_in_folder(join(train_dir, class_dir)):
        image = face_recognition.load_image_file(img_path)
        faces_bboxes = face_locations(image)
        if len(faces_bboxes) != 1:
            if verbose:
                print("image {} not fit for training: {}".format(img_path, "didn't find a face" if len(faces_bboxes) < 1 else "found more than one face"))
            continue
        X.append(face_recognition.face_encodings(image, known_face_locations=faces_bboxes)[0])
        y.append(class_dir)

if n_neighbors is None:
    n_neighbors = int(round(sqrt(len(X))))
    if verbose:
        print("Chose n_neighbors automatically as:", n_neighbors)

knn_clf = neighbors.KNeighborsClassifier(n_neighbors=n_neighbors, algorithm=knn_algo, weights='distance')
knn_clf.fit(X, y)

if model_save_path != "":
    with open(model_save_path, 'wb') as f:
        pickle.dump(knn_clf, f)
return knn_clf

if name == "main":
knn_clf = train("knn_examples/train", "knn_examples/train/model/model.txt")`
And 2nd to get result:
`from math import sqrt
from sklearn import neighbors
from os import listdir
from os.path import isdir, join, isfile, splitext
import pickle
from PIL import Image, ImageFont, ImageDraw, ImageEnhance
import face_recognition
from face_recognition import face_locations
from face_recognition.cli import image_files_in_folder
ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg'}
def predict(X_img_path, knn_clf = None, model_save_path ="knn_examples/train/model/model.txt", DIST_THRESH = .45):
"""
recognizes faces in given image, based on a trained knn classifier
:param X_img_path: path to image to be recognized
:param knn_clf: (optional) a knn classifier object. if not specified, model_save_path must be specified.
:param model_save_path: (optional) path to a pickled knn classifier. if not specified, model_save_path must be knn_clf.
:param DIST_THRESH: (optional) distance threshold in knn classification. the larger it is, the more chance of misclassifying an unknown person to a known one.
:return: a list of names and face locations for the recognized faces in the image: [(name, bounding box), ...].
    For faces of unrecognized persons, the name 'N/A' will be passed.
"""

if not isfile(X_img_path) or splitext(X_img_path)[1][1:] not in ALLOWED_EXTENSIONS:
    raise Exception("invalid image path: {}".format(X_img_path))

if knn_clf is None and model_save_path == "":
    raise Exception("must supply knn classifier either thourgh knn_clf or model_save_path")

if knn_clf is None:
    with open(model_save_path, 'rb') as f:
        knn_clf = pickle.load(f)

X_img = face_recognition.load_image_file(X_img_path)
X_faces_loc = face_locations(X_img)
if len(X_faces_loc) == 0:
    return []

faces_encodings = face_recognition.face_encodings(X_img, known_face_locations=X_faces_loc)

closest_distances = knn_clf.kneighbors(faces_encodings, n_neighbors=1)

is_recognized = [closest_distances[0][i][0] <= DIST_THRESH for i in range(len(X_faces_loc))]

# predict classes and cull classifications that are not with high confidence
return [(pred, loc) if rec else ("N/A", loc) for pred, loc, rec in zip(knn_clf.predict(faces_encodings), X_faces_loc, is_recognized)]

def draw_preds(img_path, preds):
"""
shows the face recognition results visually.
:param img_path: path to image to be recognized
:param preds: results of the predict function
:return:
"""
source_img = Image.open(img_path).convert("RGBA")
draw = ImageDraw.Draw(source_img)
for pred in preds:
    loc = pred[1]
    name = pred[0]
    # (top, right, bottom, left) => (left,top,right,bottom)
    draw.rectangle(((loc[3], loc[0]), (loc[1],loc[2])), outline="red")
    draw.text((loc[3], loc[0] - 30), name, font=ImageFont.truetype('Pillow/Tests/fonts/FreeMono.ttf', 30))
source_img.show()

if name == "main":
for img_path in listdir("knn_examples/test"):
    preds = predict(join("knn_examples/test", img_path), model_save_path="knn_examples/train/model/model.txt")
    print(preds)
    draw_preds(join("knn_examples/test", img_path), preds)`

Everything works well but am afraid if there will be similar faces i can get wrong result , and wont see some possible results, which can be true

My is_recognized result is [True]

Make your is_recogized to store all the boolean values for all 8 neighbours.
Currently we are not able to print the nearest neighbour names because our is_recognized is set in such a way that it stores only one neigbour.
Thats why only one [True] value is out. If we make is_recognized to store all the nearest neighbours, we could then try to print the names of all those is_recognized neighbouring values.

How can I do it? Can you help

yes, the below line prints all neighbours bool values
is_recognized = [(closest_distances[0][i] <= DIST_THRESH) for i in range(len(X_faces_loc))]
print(is_recognized[0])
Do this step and let me know what it prints out

yes, the below line prints all neighbours bool values
is_recognized = [(closest_distances[0][i] <= DIST_THRESH) for i in range(len(X_faces_loc))]
print(is_recognized[0])
I kept n_neighbours as 2, So it prints out for me as [ True  True]
Later, i am thinking how to parse through this is_recognized and relate it to
for pred, rec in zip(knn_clf.predict(faces_encodings), is_recognized)
pred is the name of the person.
we are almost close. what do u think ?

is_recognized = [(closest_distances[0][i] <= DIST_THRESH) for i in range(len(X_faces_loc))]
print(is_recognized[0])   gives the result^
(array([[0.34390288, 0.41492873]]), array([[3, 7]])) <generator object predict.. at 0x7f259b5a21a8>
[('Obama', (247, 1146, 632, 760))]

Bro, i got it! its really simple. we did too much.
knn_clf.kneighbors return two variables. Just change code like below,
closest_distances, indices = knn_clf.kneighbors(faces_encodings, n_neighbors=2)
Now we have link to the names of the original trianed data through indices :)

can you print whole code? im going crazy editing it million times)

Actually i customized too many parts of it. It leads to more confusion. Can you perhaps print your indices ?

what are indices when i print them in resuslt i see  -  [[3, 7]]    i didnt train anything yet, only examples in knn_examples folder, + copy of them -  8 folders

Copy below code and tell me what happens
from math import sqrt
from sklearn import neighbors
from os import listdir
from os.path import isdir, join, isfile, splitext
import pickle
from PIL import Image, ImageFont, ImageDraw, ImageEnhance
import face_recognition
from face_recognition import face_locations
from face_recognition.cli import image_files_in_folder
X = []
y = []

ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg'}

def train(train_dir, model_save_path = "", n_neighbors = None, knn_algo = 'ball_tree', verbose=False):
    """
    Trains a k-nearest neighbors classifier for face recognition.
    :param train_dir: directory that contains a sub-directory for each known person, with its name.
     (View in source code to see train_dir example tree structure)
     Structure:
        <train_dir>/
        ├── <person1>/
        │   ├── <somename1>.jpeg
        │   ├── <somename2>.jpeg
        │   ├── ...
        ├── <person2>/
        │   ├── <somename1>.jpeg
        │   └── <somename2>.jpeg
        └── ...
    :param model_save_path: (optional) path to save model of disk
    :param n_neighbors: (optional) number of neighbors to weigh in classification. Chosen automatically if not specified.
    :param knn_algo: (optional) underlying data structure to support knn.default is ball_tree
    :param verbose: verbosity of training
    :return: returns knn classifier that was trained on the given data.
    """

    for class_dir in listdir(train_dir):
        if not isdir(join(train_dir, class_dir)):
            continue
        for img_path in image_files_in_folder(join(train_dir, class_dir)):
            image = face_recognition.load_image_file(img_path)
            faces_bboxes = face_locations(image)
            if len(faces_bboxes) != 1:
                if verbose:
                    print("image {} not fit for training: {}".format(img_path, "didn't find a face" if len(faces_bboxes) < 1 else "found more than one face"))
                continue
            X.append(face_recognition.face_encodings(image, known_face_locations=faces_bboxes)[0])
            y.append(os.path.splitext(os.path.basename(img_path))[0])

    if n_neighbors is None:
        n_neighbors = int(round(sqrt(len(X))))
        if verbose:
            print("Chose n_neighbors automatically as:", n_neighbors)

    knn_clf = neighbors.KNeighborsClassifier(n_neighbors=n_neighbors, algorithm=knn_algo, weights='distance')
    knn_clf.fit(X, y)

    if model_save_path != "":
        with open(model_save_path, 'wb') as f:
            pickle.dump(knn_clf, f)
    return knn_clf

def predict(X_img_path, knn_clf = None, model_save_path ="", DIST_THRESH = .5):
    """
    recognizes faces in given image, based on a trained knn classifier
    :param X_img_path: path to image to be recognized
    :param knn_clf: (optional) a knn classifier object. if not specified, model_save_path must be specified.
    :param model_save_path: (optional) path to a pickled knn classifier. if not specified, model_save_path must be knn_clf.
    :param DIST_THRESH: (optional) distance threshold in knn classification. the larger it is, the more chance of misclassifying an unknown person to a known one.
    :return: a list of names and face locations for the recognized faces in the image: [(name, bounding box), ...].
        For faces of unrecognized persons, the name 'N/A' will be passed.
    """

    if not isfile(X_img_path) or splitext(X_img_path)[1][1:] not in ALLOWED_EXTENSIONS:
        raise Exception("invalid image path: {}".format(X_img_path))

    if knn_clf is None and model_save_path == "":
        raise Exception("must supply knn classifier either thourgh knn_clf or model_save_path")

    if knn_clf is None:
        with open(model_save_path, 'rb') as f:
            knn_clf = pickle.load(f)

    X_img = face_recognition.load_image_file(X_img_path)
    X_faces_loc = face_locations(X_img)
    if len(X_faces_loc) == 0:
        return []

    faces_encodings = face_recognition.face_encodings(X_img, known_face_locations=X_faces_loc)

    closest_distances,indices = knn_clf.kneighbors(faces_encodings, n_neighbors=1)

    is_recognized = [closest_distances[0][i][0] <= DIST_THRESH for i in range(len(X_faces_loc))]

    # predict classes and cull classifications that are not with high confidence
    for i in indices[0]:
        print(y[i])#This gives the names of the classdir.

def draw_preds(img_path, preds):
    """
    shows the face recognition results visually.
    :param img_path: path to image to be recognized
    :param preds: results of the predict function
    :return:
    """
    source_img = Image.open(img_path).convert("RGBA")
    draw = ImageDraw.Draw(source_img)
    for pred in preds:
        loc = pred[1]
        name = pred[0]
        # (top, right, bottom, left) => (left,top,right,bottom)
        draw.rectangle(((loc[3], loc[0]), (loc[1],loc[2])), outline="red")
        draw.text((loc[3], loc[0] - 30), name, font=ImageFont.truetype('Pillow/Tests/fonts/FreeMono.ttf', 30))
    source_img.show()

if __name__ == "__main__":
    knn_clf = train("knn_examples/train")
    for img_path in listdir("knn_examples/test"):
        preds = predict(join("knn_examples/test", img_path) ,knn_clf=knn_clf)
        print(preds)
        draw_preds(join("knn_examples/test", img_path), preds)

Traceback (most recent call last):
File "face_recognition_knn.py", line 120, in
knn_clf = train("knn_examples/train")
File "face_recognition_knn.py", line 49, in train
y.append(os.path.splitext(os.path.basename(img_path))[0])
NameError: name 'os' is not defined

Ah, that os error, i forgot to add import os in starting.  I removed draw_pred function and concentrated only on printing names. I commented it out in above code.

when i divide i got this:
Traceback (most recent call last):
  File "face_recognition_knnpredict.py", line 73, in <module>
    preds = predict(join("knn_examples/test", img_path) ,knn_clf=knn_clf)
NameError: name 'knn_clf' is not defined

if i remove knn_clf = train("knn_examples/train") as i did earlier, i get
Traceback (most recent call last):
  File "face_recognition_knnpredict.py", line 71, in <module>
    knn_clf = train("knn_examples/train/model/model.txt")
NameError: name 'train' is not defined

what i understand is you want to keep train in x.py file and predict or preds in y.py file. Dont keep main in both x.py and y.py files. The main() function will always be in one *.py file. Access all other files in to this main *.py file through import statement.
Why do you want to seperate these functions to different files ? It is not that big file. You can keep all in one file if errors keep coming

I want to train once and then compare test faces with my model

u need to seperate thr train function to 3 parts:

Till X, y appending to one function as
def scan() return X,y
Store X,y in to some txt file as
def store() call scan() and dump(X,,y)
3.Retrive X,y details from txt file as
def retrieve() return X,y
4.def Train() with
Call retrive() function
pass X,y to fit and remaning line stay same
def predict()
As @FiveMaster suggested, You just need to keep the training results in a txt file at the first time. Like this: knn_clf = train("knn_examples/train", "./model/model.txt") and then preddict like this: preds = predict(join("knn_examples/test", img_path), model_save_path="./model/model.txt") If the training data remains the same, you don't need to training model.

once u train the model comment out the train function in above code. means, once train function is called, your model.txt file is saved in the path u gave. So, u just need to call preds by giving link to this model.txt file as below.
preds = predict(join("knn_examples/test", img_path), model_save_path="./model/model.txt")

thank you for everything , but im new in python i dont understand anything without example, i decided to use another script and it works well for me:
import face_recognition
import pickle
import numpy as np
from PIL import Image, ImageFont, ImageDraw, ImageEnhance

# Load face encodings
with open('dataset_faces.dat','rb') as f:
	all_face_encodings = pickle.load(f)

# Grab the list of names and the list of encodings
face_names = list(all_face_encodings.keys())
face_encodings = np.array(list(all_face_encodings.values()))

# Try comparing an unknown image
unknown_image = face_recognition.load_image_file("test.png")
unknown_face = face_recognition.face_encodings(unknown_image)
result = face_recognition.api.compare_faces(face_encodings, unknown_face, tolerance=0.5)
names_with_result = list(zip(result, face_names))

with open("file.txt", "w") as file:
	print(names_with_result, file=file)

It takes my early trained file dataset_faces.dat and compares with file test.png , with tolerance 0.5 as a result it creates a file with both true or false results and filename of trained pictures. I think it is enough for me. Can you help me once more? i want that script to print only true results with names of trained pictures. i think its not difficult for you.

result = face_recognition.api.compare_faces(face_encodings, unknown_face, tolerance=0.5)

if result: # Get only True values
  names_with_result = list(zip(result, face_names))
  print(names_with_result)

if result:    ??? and thats all? or i need to put True somewhere


upgrade to git2go/v3 (libgit2 v1.2.0)

Since libgit2 v1.2.0 is now on Homebrew

Codecov Report

Merging #180 (47c0191) into main (ded9d86) will not change coverage.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##             main     #180   +/-   ##
=======================================
  Coverage   68.30%   68.30%
=======================================
  Files          41       41
  Lines        1991     1991
=======================================
  Hits         1360     1360
  Misses        409      409
  Partials      222      222

Impacted Files
Coverage Δ

extensions/internal/git/native/blame.go
67.70% <ø> (ø)

extensions/internal/git/native/stats.go
64.80% <ø> (ø)

extensions/internal/git/native/files.go
66.32% <100.00%> (ø)

Continue to review full report at Codecov.

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


Keptn service template generation from cli

Keptn Service Template Generation from CLI

This project is part of LFX Mentorship Program
Aims to create and fixes #3034

Research Phase
How to initialise the template?
There were two options to be explored:

Clone the template

Would need to have git installed in the developer machine
No need to unzip or download, which may cause issues.
We can either use a system interop call or make use of git implementation written in go, go-git

Download and unzip the contents

Might be ineffective on some machines
maintainance issues
does not need git as a pre-requiste

Conclusion: Cloning the template and inclusion of the go-git as a dependency would be the best way to proceed as we can mock and write unit-testing and would also not require the developer to have git installed as default.
How to replace strings in the template?
The original issue mentions the use of go-template but this would pose some problems such as:

Refactoring of the service-template that is found here and include {} for go-template to work.
User cannot clone the service-template repo directly and work with.

Conclusion: walkdir into the cloned folder and treat the files as string, then you can easily replace certain placeholders as mentioned here
A small POC can be found here
Use of io/ioutil vs io/fs
The new go1.16 comes with the io/fs package that makes it much more easier to interact with files and has deprecated io/ioutil package.Hence it will be a requirement for the developers to have go1.16 installed in order to compile the CLI, however when shipped as a binary this will not post an issue to the developer.

Milestone 1:

Research phase completed and a plan of actions have been created.
CLI Command initialised with the required flags
go-git clone functionality explored.

 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.


Visual editor

Motivation
One of the challenges with developing Mesop applications for Python engineers with limited FE experience is that creating layouts and dealing with styling has a substantive learning curve.
By providing a visual editor, we can lower the barrier to entry and improve the velocity of Mesop app developers.
Prior Art
There's many similar attempts, but perhaps the most relevant example is Puck which is an open-source visual editor for React; it provides a very intuitive user experience. One of the differences, though, is that Puck emits JSON (a data structure of the component tree), but I'd like to emit Python code to close the gap between code produced by the visual editor vs. hand-written.
Design
High-level component structure

Component library (left sidenav) - user can drag a component from the left sidenav and drop it into the center "canvas" area.
Canvas area (main center panel) - this is the droppable area. Also, you can select a component to focus on it.
Outline - similar to the existing component tree in Mesop Dev Tools, this displays the component hierarchy
Editor (right sidenav) - this provides form controls for editing the focused component's value.

Interfaces
Server -> client

// Put in RenderEvent
message ComponentConfig {
  string component_name
  repeated EditorField fields
  string category
}

message EditorField {
  string name
  ParamType type
}

message ParamType {
   oneof type {
      BoolType bool
      IntType int
      StringType string
      StringLiteralType string_literal
      ListType list
      StructType struct
   }
}

message BoolType {
   bool default_value
}

message StructType {
   repeated EditorField fields
}

message IntType {
  int32 default_value
}

message StringType {
  string default_value
}

message StringLiteralType {
   repeated string literals // note: defaults to first element
}

message ListType {
  ParamType type
}

From client to server

update_component_code(source_code_location, component_edit)

message SourceCodeLocation {
  string  module
  int32 line
  int32 col
}

message ComponentEdit {
  SourceCodeLocation location
  string keyword_argument (can be empty, if it's a positional argument)
  string new_value
}

Generating ComponentConfig proto from Python API
Example program:
import inspect
from typing import Callable, Any, Literal

# The button function (for reference)
def button(
    *,
    on_click: Callable[[ClickEvent], Any] | None = None,
    type: Literal["raised", "flat", "stroked", "icon"] | None = None,
    color: str = "",
    disable_ripple: bool = False,
    disabled: bool = False,
    key: str | None = None,
):
    pass

# Function to analyze and serialize the function signature
def serialize_function_to_proto(func):
    sig = inspect.signature(func)
    component_config = {
        "component_name": func.__name__,
        "fields": [],
        "category": "UI Components"  # Example category
    }

    for name, param in sig.parameters.items():
        editor_field = {"name": name}
        param_type = param.annotation

        # Map Python types to proto ParamType
        if param_type in [bool]:
            editor_field["type"] = {"bool": {"default_value": param.default}}
        elif param_type in [str]:
            editor_field["type"] = {"string": {"default_value": param.default}}
        elif param_type == Literal["raised", "flat", "stroked", "icon"]:
            editor_field["type"] = {"string_literal": {"literals": ["raised", "flat", "stroked", "icon"]}}
        # Add more type mappings as needed...

        component_config["fields"].append(editor_field)

    return component_config

# Serialize the button function
serialized_button = serialize_function_to_proto(button)
print(serialized_button)

Flows
When you drag a component, it will create a placeholder component and emit a user event. EditorEvent. Inside EditorEvent, there's three types: 1) create, 2) edit, and 3) delete. After the user event, we will do a hot reload.

User drags component from component library into canvas
User triggers a UserEvent of type EditorEvent (which has three sub-types: 1) create, 2) edit, and 3) delete)
Server checks if dev mode is on. If it's off, then no-op.
Server modifies source code.
This triggers hot reload

Implementation notes

Use Angular Material CDK drag and drop module.
Need a way to emit the source code location of each component instance.

Tasks

[x] Refactor Mesop so that there's three modes/apps: dev, editor and prod. Create a flag for cli.py (--prod) which determines which binary to use.
[x] Rename DevToolsService -> EditorService and have two versions:  a no-op version when in dev mode; and a real impl for editor mode (injected by the root apps).
[x] Create basic shell UI: ComponentLibrary component for left sidenav and ComponentFieldsEditor and ComponentOutline components for right sidenav
[x] Fix the top padding thing
[x] Create a nice background overlay of selected component
[x] Attach source location to component instance in editor mode (instrument component helper with hook to use inspect and get the call-site; the frame before mesop/components)
[x] Send repeated ComponentConfig as part of RenderEvent in editor mode.
[x] When clicking on a component instance in canvas; change "focused_component" in EditorService; based on this display in ComponentFieldsEditor the requisite information to modify it.
[x] Emit UserEvent with EditorEvent.
[ ] Implement handlers in Python server for editor event.
[ ] Handle struct type in editor panel.
[ ] Allow creating an array element from editor panel.
[ ] Provide drag and drop from ComponentLibrary to main canvas.

Nice to haves:

[ ] Create a "plus sign" of new component when hovering
[ ] Show simplified component tree - in particular, for the parent and descendants of the currently highlighted element

Open questions

How do I create a visual placeholder when dropping an item?

Source code manipulation
General process:

Parse source code into AST
Manipulate AST (e.g. visitor)
Print AST back into source code

We can use astor to print AST back to source code.
Example program
Input: me.box(columns=2)
Output: me.box(columns=4)
import ast
import astor

class ModifyColumnsVisitor(ast.NodeTransformer):
    def visit_Call(self, node):
        # Check if the function called is 'me.box'
        if isinstance(node.func, ast.Attribute) and node.func.attr == "box":
            for kw in node.keywords:
                # Check if there is a keyword 'columns' and its value is 2
                if (
                    kw.arg == "columns"
                    and isinstance(kw.value, ast.Constant)
                    and kw.value.value == 2
                ):
                    # Change the value to 4
                    kw.value = ast.Constant(value=4)
        return node

# Original code
code = "me.box(columns=2)"

# Parse the code into an AST
tree = ast.parse(code)

# Modify the AST
modified_tree = ModifyColumnsVisitor().visit(tree)

# Generate the modified code from the AST
modified_code = astor.to_source(modified_tree)

print(modified_code)

Handle issue with overlapping components - how do I detect which component should receive the click?
Potential ideas:

have increasing z-index
use either the first or the last click and capture it via an EditorService#focusComponent

Limitations
If there's any indirection, e.g. using a variable instead of assigning literal values, then this is going to be difficult to programmatically update from the UI. It's technically do-able, (e.g. look up alias reference), but this becomes quite complicated beyond the simplest indirections.
Instead, we'll show a disabled input with a tooltip to explain why it's not editable.
Instead of having shared values; we should steer app developers to instead use theming, which is dependent on Angular Material's new theming to be launched.

Command Dialog
We can provide a flexible way of allowing users to search through commands (inspired by Raycast when they have focused on a component. (We can also later provide a hotkey, e.g. cmd+K, to open the dialog even without a focused component).

v1 When creating a new component, we will open the command dialog.
v2 When focused on a component, we can try to show it as part of a shortcut, e.g. command)
v3 Pop-up when there's no focused component.

This is a flexible way of adding richer, assistive feature into Mesop editor over time while keeping a minimal and consistent UI

Different cases to handle:

[ ] Support struct (e.g. style API)
[ ] Support list struct (e.g. radio option)

[ ] Edit option
[ ] Delete option
[ ] Add option

[ ] Support add component
[ ] Support delete component
[ ] Support copy component


Switch to buildx for github actions

Switch to docker github actions such as (docker/build-push-action) that are more flexible for newer buildkit options (#357)
Use only docker, not docker and podman for quay.io to speed up CI (fixes https://github.com/pangeo-data/pangeo-docker-images/issues/121#issuecomment-1279389501
Cancel concurrent Binder and Test workflows for PRs if multiple commits are made

Time comparisons. Builds for ml-notebook went from 37m54s to 26m1s and pytorch-notebook went from 40m33s to 20m58s!!

Before
After

Nice work @scottyhq! This seems like a huge improvement. Thanks for your maintenance work!


[Bug]

Context / Scenario
Im trying to use the QdrantDb but without using the default collection name
What happened?
I get this error
warn: Microsoft.KernelMemory.MemoryDb.Qdrant.Client.QdrantClient[0]
Qdrant responded with error: NotFound, {"status":{"error":"Not found: Collection default doesn't exist!"},"time":9.137e-6}
warn: Microsoft.KernelMemory.Search.SearchClient[0]
No memories available
Importance
edge case
Platform, Language, Versions
C# using .net 8 on linux
Relevant log output
warn: Microsoft.KernelMemory.MemoryDb.Qdrant.Client.QdrantClient[0]
      Qdrant responded with error: NotFound, {"status":{"error":"Not found: Collection `default` doesn't exist!"},"time":9.137e-6}
warn: Microsoft.KernelMemory.Search.SearchClient[0]
      No memories available

While is not an error the library should allow me to specify the collection name right ?

@DavidNorena could you share a snippet of code to show how to reproduce the error?

When you init the memory with Qdrant there is no way to change the default collection which I believe is something needs improvement

We were not using the default collection in qdrant, so If you dont specify when searching it will throw the warning ...

I believe there should be a way to init the default collection on configuration right ?

I agree it would be nice configuring more details about Qdrant, like the default collection, a prefix, field names etc, and we'd welcome PRs in that sense.
With regard to the logs, those are only warnings, and the connector creates the collection automatically when missing.

thanks @marcominerva for implementing this! see https://github.com/microsoft/kernel-memory/pull/339


Missing AMIs

Description
Sorry if this is the wrong place to report this issue. This is to do with releases and AMIs rather than the OS itself.
I just tried to pull the latest AMI from here and it was not found in AWS
Impact
I have had to revert back to CoreOS
Environment and steps to reproduce

Set-up: We use a script to pull the latest AMI from:

url=`printf "http://%s.release.flatcar-linux.net/amd64-usr/current/flatcar_production_ami_%s_%s.txt" $COREOS_UPDATE_CHANNE $VM_TYPE $AWS_REGION` (stable, hvm and eu-west-1 in this case)

Task: N/A
Action(s): N/A
Error: The AMI returned for eu-west-1 and us-east-1 are not visible in the AWS console.

Expected behavior
We should get a valid AMI returned
Additional information
We have used this method for a few months since moving to flatcar from CoreOS, for the time being I have had to use CoreOS instead but would prefer to go back to FlatCar

Thank you for raising this issue. We are experiencing issues with our image synchronisation service for our ongoing new release and are prioritising effort to resolve this. We'll keep you up to date.

We were able to address the synchronisation issues; affected AMI name text files have been updated. E.g. for eu-west-one it's ami-002db020452770c0f which is available in that region:
$ aws ec2 describe-images --filters="Name=image-id,Values=ami-002db020452770c0f" --region eu-west-1
{
    "Images": [
        {
            "Architecture": "x86_64",
            "CreationDate": "2020-03-27T09:40:39.000Z",
            "ImageId": "ami-002db020452770c0f",
            "ImageLocation": "075585003325/Flatcar-stable-2345.3.1-hvm",
            "ImageType": "machine",
            "Public": true,
            "OwnerId": "075585003325",
            "State": "available",
            "BlockDeviceMappings": [
                {
                    "DeviceName": "/dev/xvda",
                    "Ebs": {
                        "DeleteOnTermination": true,
                        "SnapshotId": "snap-069f02e86b3d06cd6",
                        "VolumeSize": 8,
                        "VolumeType": "gp2",
                        "Encrypted": false
                    }
                },
                {
                    "DeviceName": "/dev/xvdb",
                    "VirtualName": "ephemeral0"
                }
            ],
            "Description": "Flatcar Container Linux stable 2345.3.1 (HVM)",
            "EnaSupport": true,
            "Hypervisor": "xen",
            "Name": "Flatcar-stable-2345.3.1-hvm",
            "RootDeviceName": "/dev/xvda",
            "RootDeviceType": "ebs",
            "SriovNetSupport": "simple",
            "VirtualizationType": "hvm"
        }
    ]
}

Thank you again for reporting this issue, and please pardon the inconvenience.
I'll resolve now - please feel free to re-open should your issue persist.

Thank you for the rapid response! LGTM!


chore(scripts/validate-commits): ignore branch merges

When using the "update" button from github then we merge develop into
the branch.
Thus the commit message is "Merge branch .."

LGTM :+1:


Cargo.lock in a workspace lists an arbitrary package as the "[root]"

In a workspace, whether it includes a root crate or only a "virtual" manifest, the [root] section of Cargo.lock always lists the last package (alphabetically, by name) in the workspace.  For tools like cargo-outdated that parse Cargo.lock and look for the root package, it would be more useful for this section to contain the actual root package if there is one.
For a workspace with no root package, it might be better to omit the [root] section as unnecessary. If that's not possible, then perhaps it should be the first package in the members array, or something else that the developer can control.

The root in the lock file does not carry any meaning and is there only for back compat. Recent Cargo work fine if there is no root section in the lockfile (this was discussed briefly in https://github.com/rust-lang/cargo/issues/3003).
Looks like cargo-outdated should use cargo metadata command instead of parsing lockfiles?

Ah yeah this is an unfortunate compatibility with old lock files (no longer needed), and I think it may just need to be a bug fix in cargo-metadata

Whether this is a bug or not, if it is not "fixed" (according to mbrubeck's suggestion) it would at least be nice if this were better documented somewhere. I was really confused looking at my Cargo.lock where there was a random crate as my root. I just spent 30 minutes double checking http://doc.crates.io/manifest.html and https://doc.rust-lang.org/book/second-edition/ch14-03-cargo-workspaces.html to make sure I hadn't misconfigured anything before I ended up here.

@kardeiz I think we can just remove [root] now, filed https://github.com/rust-lang/cargo/issues/4563

Okay, that's great! Thanks for the response!


Make warning about clashing ports on AWS more clear

Discussed briefly in slack; this is apparently a gotcha that keeps popping up
Signed-off-by: Ashley Davis<EMAIL_ADDRESS>/kind documentation

Adding lgtm with a hold- as I added an optional suggestion. Do unhold if you'd rather merge as is!
/hold
/lgtm

Thanks! This looks good to me 🥳
/hold cancel
/lgtm


[ZEPPELIN-5574] ConcurrentModificationException in JsonResponse.toString() when getNote with restAPI

What is this PR for?
The root cause of this issue is that when Note is serialized to json, it is being modified by another thread. This PR use thread-safe class for Note/Paragraph.
What type of PR is it?
[Bug Fix ]
Todos

[ ] - Task

What is the Jira issue?

https://issues.apache.org/jira/browse/ZEPPELIN-5574

How should this be tested?

Tested it for 2 days in customer's environment and no issue happen again. (Before this PR, this issue happens everyday)

Screenshots (if appropriate)
Questions:

Does the licenses files need update? No
Is there breaking changes for older versions? No
Does this needs documentation? No

@zjffdu
I want to try to solve the concurrent problem in pull request #4252 with a ReentrantReadWriteLock. This solution should also catch this pull request.
Give me some time for the implementation.

@Reamer Sure, let me know whey you are ready

I merged #4252 into master. Please rebase to the current master. I think this PR is still needed.


347 — Parametrized queries are no longer detected as custom URIs

Task/Issue URL: Issue 347
Tech Design URL:
CC:
Description:
Added checkForIntent method to SpecialUrlDetector to check if entered uri is a search query or a request to open another app.
Added a couple of tests for added functionality.
Steps to test this PR:
Custom search query:

Type "foo site:duckduckgo.com"
It opens search page with said query

Custom search query:

Type "myapp:foobar"
It looks for an app waiting for such queries

Internal references:
Software Engineering Expectations
Technical Design Template

Thanks for submitting this, it solves 90% of the issue (see https://github.com/duckduckgo/Android/issues/347 for more info). Our users will appreciate it!


tl.arange indexing implicitly converts to numpy array with TRITON_INTERPET=1

When using TRITON_INTERPET=1 and creating an array usingtl.arange(0, 10)[:, None], it turns into a numpy.ndarray instead of triton.language.core.tensor, causing errors later on.
However, without TRITON_INTERPET=1 it works just fine.
MWE
import triton.language as tl
import triton
import torch

@triton.jit
def copy_kernel(x_ptr, z_ptr, n, bs: tl.constexpr):
    pid = tl.program_id(0)
    offs = pid * bs + tl.arange(0, bs)[:, None]
    mask = offs < n
    x = tl.load(x_ptr + offs, mask)
    tl.store(z_ptr + offs, x, mask)

x = torch.arange(0, 10).unsqueeze(1).cuda().contiguous().float()
z = torch.zeros_like(x)
copy_kernel[(3,)](x, z, n=10, bs=4)

print(x)
print(z)

Output (TRITON_INTERPET=0)
tensor([[0.],
        [1.],
        [2.],
        [3.],
        [4.],
        [5.],
        [6.],
        [7.],
        [8.],
        [9.]], device='cuda:0')
tensor([[0.],
        [1.],
        [2.],
        [3.],
        [4.],
        [5.],
        [6.],
        [7.],
        [8.],
        [9.]], device='cuda:0')

Output (TRITON_INTERPRET=1)
Traceback (most recent call last):
  File "/home/gw66/blitz/triton_copy.py", line 17, in <module>
    copy_kernel[(3,)](x, z, n=10, bs=4)
  File "/home/gw66/blitz/env/lib/python3.11/site-packages/triton/runtime/interpreter.py", line 511, in __call__
    self.fn(**args)
  File "/home/gw66/blitz/triton_copy.py", line 9, in copy_kernel
    offs = pid * bs + tl.arange(0, bs)[:, None]
           ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
  File "/home/gw66/blitz/env/lib/python3.11/site-packages/triton/runtime/interpreter.py", line 371, in <lambda>
    new_member = lambda *args, member=member, **kwargs: (member(*args, **
                                                         ^^^^^^^^^^^^^^^^
  File "/home/gw66/blitz/env/lib/python3.11/site-packages/triton/language/core.py", line 27, in wrapper
    return fn(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^
  File "/home/gw66/blitz/env/lib/python3.11/site-packages/triton/language/core.py", line 552, in __add__
    other = _to_tensor(other, _builder)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/gw66/blitz/env/lib/python3.11/site-packages/triton/language/core.py", line 70, in _to_tensor
    assert False, f"cannot convert {x} of type {type(x)} to tensor"
AssertionError: cannot convert [[0]
 [1]
 [2]
 [3]] of type <class 'numpy.ndarray'> to tensor

Observations
For the TRITON_INTERPRET=1 case:

type(tl.arange(0, bs) is <class 'triton.language.core.tensor'>
type(tl.arange(0, bs)[:, None])is <class 'numpy.ndarray'>
I suspect this should also remain a triton tensor instead of a numpy array.

Simply removing [:, None] will make the MWE work, but it is just a MWE and I need to be able to add dimensions in my actual use case.
Environment
I'm using Python 3.11 with triton==2.2.0 and torch==2.2.0 but the issue also occurs with triton==2.3.0.

@Jokeren

@georg-wolflein Likely it's been fixed in triton/main as I'm not able to reproduce the problem. Please try to build triton from source or install triton-nightly. Feel free to let us know if there's still an issue.


Change last edited date for data privacy declaration

Short Description

We didn't change the last-editied-date for the data privacy declaration when we changed the address

Changes

The address changes went live on Sep 13th, so I changed the date

Feedback

I just reconstructed the date from memory. I'm sure you already told me, but is there a way I can check which image was deployed in a particular production deploy in the Actions tab?

Is there a way I can check which image was deployed in a particular production deploy in the Actions tab?

It's certainly a lot harder than you'd think! You go to the production deploy in question, look at the logs, find the "Run deployment" task, click to expand the details component next to "Run docker run" and scroll down until you see -e IMAGE_TAG='123'…


Fixed #29689 -- Replace os.listdir with os.scandir in FileSystemStorage.listdir

https://code.djangoproject.com/ticket/29689

Did you notice the test failures?

I hadn’t, thanks for amending it. Looks like it passes now.

Yep, just needed to change entry.path to entry.name. Do you have any benchmarks to prove that this improves performance? Did you audit the other os.path.list() calls in Django and confirm that they should remain?

I noticed a substantial speedup while iterating over thousands of files (+50%). The performance advantages of scandir are well documented in PEP 471, as it avoids an additional stat syscall for every entry. If you like, I can isolate that code and do some proper benchmarks.
There is another use of os.listdir in django.forms.fields.FilePathField which could be improved by replacing it with scandir. I have already produced a patch but I would prefer to discuss it separately. Would you like me to bundle those changes here instead?

I think it would be fine to include that change here, perhaps as a separate commit. To confirm my understanding, the additional syscall comes from calling os.path.isdir() for each entry, is that correct? If so, I guess it makes enough sense that we don't need formal benchmarks.

Yes, it avoids an additional syscall from calling os.path.isdir() and also improves memory efficiency by returning an iterator instead of a list of entries.

@timgraham I have added the code for FilePathField in another commit.

@timgraham thanks for cleaning up my mess. I was having trouble running those tests locally.


rule file json code is wrong and will not pass validation

[Enter feedback here]
I followed the example and past the rule json code into display content session and it will keep giving the vc.type not exist error.
the json is wrong as it included vc.type inside attesttations, which should not be.
the docx on TokenHint how-to page had correct rules json to follow. we may want to update this to correct one to prevent user keep getting the error and not realize the schema was wong in the sample json code.
https://docs.microsoft.com/en-us/azure/active-directory/verifiable-credentials/how-to-use-quickstart
this json is correct.

left was this page which is wrong, right is the correct one.
thanks.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: e85be67f-8375-6229-18aa-d687463991f9
Version Independent ID: c494773d-9fcc-d733-6ddb-935a8e545abd
Content: Tutorial - Issue Microsoft Entra Verified ID credentials from an application (preview) - Microsoft Entra
Content Source: articles/active-directory/verifiable-credentials/verifiable-credentials-configure-issuer.md
Service: decentralized-identity
Sub-service: verifiable-credentials
GitHub Login: @barclayn
Microsoft Alias: barclayn

@rextangtw
Thanks for your feedback! We will investigate and update as appropriate.

@rextangtw Thank you so much for your feedback. We are making updates to the articles and the problem you called out will be part of that.  Expect to see changes in the next couple of days.


[Question] There is no LoggingKafka in the PluginList->Logging menu

Question
I downloaded the source code of version 2.5.0, but I could not find the LoggingKafka menu. So I checked the schema.sql, there was no data about loggingKafka either in the resource table.

yes, I have checked mysql not exist

I will fix it right now.

this bug has finished, you can use the new SQL script or generate plugin resources on plugin-list page


code conventions not followed for SimpleDragHandler options

Problems with options in SimpleDragHandler, see related code below.
(1) Missing @param {Object} [options] and @constructor.
(2) The constructor documentation for "allowed options" is our of sync with reality.
(3) And some of the document default values (e.g. start: null) don't exist, they are in fact undefined.
(4) PhET convention is to include all options in the default options hash.  Many are missing.
This should be brought up to coding convention.
Current:
  /**
   * Allowed options: {
   *    allowTouchSnag: false // allow touch swipes across an object to pick it up. If a function is passed, the value allowTouchSnag( event ) is used
   *    dragCursor: 'pointer' // while dragging with the mouse, sets the cursor to this value (or use null to not override the cursor while dragging)
   *    mouseButton: 0        // allow changing the mouse button that activates the drag listener. -1 should activate on any mouse button, 0 on left, 1 for middle, 2 for right, etc.
   *    start: null           // if non-null, called when a drag is started. start( event, trail )
   *    drag: null            // if non-null, called when the user moves something with a drag (not a start or end event).
   *                                                                         drag( event, trail )
   *    end: null             // if non-null, called when a drag is ended.   end( event, trail )
   *    translate:            // if this exists, translate( { delta: _, oldPosition: _, position: _ } ) will be called.
   * }
   */
  function SimpleDragHandler( options ) {
    var self = this;

    options = _.extend( {
      allowTouchSnag: false,
      mouseButton: 0,
      dragCursor: 'pointer',
      tandem: Tandem.required,
      phetioType: SimpleDragHandlerIO,
      phetioState: false,

      // when set to true, the handler will get "attached" to a pointer during use, preventing the pointer from starting
      // a drag via something like PressListener
      attach: false
    }, options );

Recommended (untested):
  /**
   * @param {Object} [options]
   * @constructor
   */
  function SimpleDragHandler( options ) {
    var self = this;

    options = _.extend( {

      start: null, // {null|function(Event,Trail)} called when a drag is started
      drag: null, // {null|function(Event,Trail)} called when the pointer moves
      end: null,  // {null|function(Event,Trail)} called when a drag is ended

      // {null|function} Called when the pointer moves.
      // Signature is translate( delta: Vector2, oldPosition: Vector2, position: Vector2 )
      translate: null, //

      allowTouchSnag: false,

      // allow changing the mouse button that activates the drag listener.
      // -1 should activate on any mouse button, 0 on left, 1 for middle, 2 for right, etc.
      mouseButton: 0,

      // while dragging with the mouse, sets the cursor to this value
      // (or use null to not override the cursor while dragging)
      dragCursor: 'pointer',

      // when set to true, the handler will get "attached" to a pointer during use, preventing the pointer from starting
      // a drag via something like PressListener
      attach: false,

      // phetio
      tandem: Tandem.required,
      phetioType: SimpleDragHandlerIO,
      phetioState: false

    }, options );

I changed as shown above, tested in a couple of sims using fuzzMouse.
@jonathanolson please review.  Feel free to change the documentation for individual options if you prefer different type expressions or verbage.

Looks great to me, thanks!


Allow setting of different app id for ios/android

Problem
The new setting for ADMOB_APP_ID was taking a single variable that would be applied to both the android app's AndroidManifest.xml and the iOS apps plist config. Google issues different app ids for the android and ios version of an app, so it would seem appropriate to have two different settings.
Solution
I split the variable definition of app id into two: one for android and one for ios. I also updated the readme.

Yes, that will work. Thanks for the patch!

hi, many thx for this!
i tried to ad this with
ionic cordova plugin add cordova-plugin-admobpro@latest --save --variable PLAY_SERVICES_VERSION=16.0.0 --variable ADMOB_ANDROID_APP_ID="ca-app-pub-xxxxxx" --variable ADMOB_IOS_APP_ID="ca-app-pub-xxxxxx"
but i fails with:
Error: Variable(s) missing (use: --variable ADMOB_APP_ID=value).
Did i miss something?
kind regards

Came a cross with same issue, @floatinghotpot i believe you should do a version bump in your package.json
@ColDrekken as a quick fix you should update temporarily your cordova-plugin-admobpro dependency in your package.json with the github repo and reinstall the package
In your package.json
"dependencies": {
"cordova-plugin-admobpro": "git+https://github.com/floatinghotpot/cordova-admob-pro.git",

and then npm install  cordova-plugin-admobpro
That worked for me.

Sorry, but I do not know what to do, where else I can contact the developer. I bought license for this plugin on http://rjfun.github.io but do not recieved license key or instructions how to use license, only lost money.
I sent mails to<EMAIL_ADDRESS>and<EMAIL_ADDRESS>but never recieved response (it is more than three months without response). I also  tried to solve it via PayPal, but they can' t send me money back and developer did not respond to ticket.


Specifying templates in PackageLoader(), adding jinja2

Adding jinja2 as a dependency, referring to templates in PackageLoader()
Closes #4 and #5

Nice! Thanks! Have you tested this w.r.t the PackageLoader issue?

Yes, asli_calc -o asl.csv and a.to_csv('asl.csv') now behave as expected, all tests passed etc

Great! I can't say I'm entirely sure why this has worked for me previously without these changes, but I'll put it down to packaging weirdness and move on. Thanks!!


Tests for empty promise array and no arguments.

Without these tests it's possible, easy even, to write promises that never resolve or reject when passed an empty array or no array.
fixes #1400

Thanks @mmmmmrob :+1:


Add a github icon to link back to github repository

Task

[ ] Add a github icon (top left) corner to link back to https://github.com/sitture/commit-status repo.

Please assign it to me.

Are you suggesting to add icon to the left of this title?

@ameybhavsar24 I actually meant on top of the page (not each project row) which links back to this repository. I guess we could add icons to each row also.

Got it. As in to add a reference back to the main GitHub repository.

guess we could add icons to each row also.

I think that could be possible by fetching the owners' profile picture. Could you open a issue for that as well?

@ameybhavsar24 Here you go https://github.com/sitture/commit-status/issues/75


Change sellto.ts to use a new groupConfirm.ts system.

Description:

Add buttons to sellto. Both users needs to confirm the trade. A button to cancel the trade is added, that can be clicked by both the seller and buyer.

Changes:

Add new groupConfirm to KlasaMessage augument;
Change old confirm/buy to the groupConfirm system.

Other checks:

[X] I have tested all my changes thoroughly.

Trade

Trade canceled due to time

Trade canceled because the buyer or seller wanted to

When someone accepts it

Success Trade

I don't think we should do this. A lot of people that either have older phones, and some people even with modern phones and up-to-date software, are unable to use these new confirmation buttons.
We need to be backwards-compatible for at least a while. This is too new, and not fully supported.

Added backwards compatibility. People will not be able to type accept to confirm their trade (including the seller) or cancel to cancel it (including the seller too).


Create install_NGC_en.md

it is the english introduction on installing NGC-Paddle

2022-07-04 21:00:53 Fix End of Files.........................................................Failed
2022-07-04 21:00:53 - hook id: end-of-file-fixer
2022-07-04 21:00:54 + git diff
2022-07-04 21:00:54 diff --git a/docs/install/install_NGC_en.md b/docs/install/install_NGC_en.md
2022-07-04 21:00:54 index b535a90f..aedb06f0 100644
2022-07-04 21:00:54 --- a/docs/install/install_NGC_en.md
2022-07-04 21:00:54 +++ b/docs/install/install_NGC_en.md
2022-07-04 21:00:54 @@ -57,4 +57,3 @@ NVIDIA Data Loading Library (DALI)
2022-07-04 21:00:54  TensorRT
2022-07-04 21:00:54  PaddlePaddle with TensorRT (Paddle-TRT)
2022-07-04 21:00:54  The software stack in this container has been validated for compatibility, and does not require any additional installation or compilation from the end user. This container can help accelerate your deep learning workflow from end to end.
2022-07-04 21:00:54 -
2022-07-04 21:00:54 + commit_files=off

请根据Docs-new的CI链接修改下格式，需要去掉最后一个空行

it will be PRed after further polishing.


Typo in the core.py script

Describe the bug
In the envs/core.py script, some the goals are defined inconsistently.
To Fix

at line 236:

desired_goal_shape = observation["achieved_goal"].shape

=>
desired_goal_shape = observation["desired_goal"].shape

and the line 240-241:

desired_goal=spaces.Box(-10.0, 10.0, shape=achieved_goal_shape, dtype=np.float32),
achieved_goal=spaces.Box(-10.0, 10.0, shape=desired_goal_shape, dtype=np.float32),

=>
desired_goal=spaces.Box(-10.0, 10.0, shape=desired_goal_shape, dtype=np.float32),
achieved_goal=spaces.Box(-10.0, 10.0, shape=achieved_goal_shape, dtype=np.float32),

I found to fix this is very important, especially if we customize some environments, thanks a lot!

thanks for reporting! Do you mind opening a PR to fix this?


Candlestick Chart

Hello,
I really love the work you're doing on this amazing charting library. Right now I find myself implementing a candlestick chart and don't know where to begin. Perhaps you know, or already have implemented a candlestick plugin for chartist as I haven't found any googling around.
Any Help is appreciated.

+1

I love candlestick charts :-) However, would need to wait for 1.0.0 and a more modularized approach.

+1 for candlestick charts!

+1

Got it already: https://github.com/gionkunz/chartist-js/pull/956

@psimonski  Can't find src/scripts/charts/candle.js or any related files in 0.11.0
Was it removed?

@nabtron It's part of my pull request and this has to be reviewed in order to get scheduled for the next release. Maybe gionkunz will find the time somehow soon.

 But why can't this be done as a "plugin" for chartist? All the base classes, utilities and helpers are accessible from outside of the library. I'd recommend that this project is created similarly like a plugin in its own repository and its own NPM package. People who want to use Chartist for candlestick charts can then use your package which has a dependency to Chartist.

+1 for plugin

@gionkunz I thinked about a plugin once again, and I guess, it's not possible because we have to pass series objects which are including four values to create a single candle.
https://en.wikipedia.org/wiki/Candlestick_chart
I considered that within the example-candle-stick.js:
https://github.com/psimonski/chartist-js/blob/4fa7195d3e436df54b61cfa9353ca11128599061/site/examples/example-candle-stick.js
What's next?
Thanks in advance and Best Regards,
Simon

ping ping**

Okay, it seems to be possible to overwrite the createChart() function by my own implementation. This could work. I need coffee ; )


refactor to support filtering

After a lot of experimenting, I've settled on what I think is a good approach for filtering. This pull request incorporates all of that. The pipeline now finishes with one file containing all features aggregated and uniquely named and ready to use for training models, and another file containing drug response data, processed and ready for training.
The new run_info section of the config file allows per-run specification of which samples and drugs get into the model. It also allows you to specify arbitrary filtering functions for filtering features and more fine-grained control about which values are used as the response variable.
The filtering page in the docs has more discussion on how things work and why they're set up that way.
I also did some cleanup. For example, instead of runall.snakefile, there's now just Snakefile which is the default filename that snakemake looks for. You can do a run of the pipeline from start to finish using the example data using these two commands:
snakemake prepare_example_data
snakemake

The first unzips the example data, and the second runs the entire pipeline. You can use the -j option for using multiple processors. You can make a PNG of the DAG with:
snakemake --rulegraph | dot -Tpng -Grankdir=LR > dag.png

which looks like this:

Please take a look through the docs and code in this PR and let me know if anything is unclear, not explained well, or doesn't make sense.

One word--wow!!!

Very impressive Ryan.  Do you think its ready for some independent test runs?
Jonathan Keats   |   Assistant Professor   |   Integrated Cancer Genomics Division
Translational Genomics Research Institute (TGen)
jkeats<EMAIL_ADDRESS> |   www.keatslab.orghttp://www.keatslab.org/
445 N. Fifth Street   |   Phoenix, AZ 85004
(W)<PHONE_NUMBER>   |   (M)<PHONE_NUMBER>

This electronic message is intended to be for the use only of the named recipient, and may contain information that is confidential or privileged, including patient health information. If you are not the intended recipient, you are hereby notified that any disclosure, copying, distribution or use of the contents of this message is strictly prohibited. If you have received this message in error or are not the named recipient, please notify us immediately by contacting the sender at the electronic mail address noted above, and delete and destroy all copies of this message. Thank you.
On Oct 2, 2015, at 10:21 AM, Ryan Dale <notifications<EMAIL_ADDRESS>wrote:
After a lot of experimenting, I've settled on what I think is a good approach for filtering. This pull request incorporates all of that. The pipeline now finishes with one file containing all features aggregated and uniquely named and ready to use for training models, and another file containing drug response data, processed and ready for training.
The new run_infohttp://daler.github.io/Pharmacogenomics_Prediction_Pipeline_P3/configuration.html#run-info section of the config file allows per-run specification of which samples and drugs get into the model. It also allows you to specify arbitrary filtering functions for filtering features and more fine-grained control about which values are used as the response variable.
The filteringhttp://daler.github.io/Pharmacogenomics_Prediction_Pipeline_P3/filtering.html#filtering page in the docs has more discussion on how things work and why they're set up that way.
I also did some cleanup. For example, instead of runall.snakefile, there's now just Snakefile which is the default filename that snakemake looks for. You can do a run of the pipeline from start to finish using the example data using these two commands:
snakemake prepare_example_data
snakemake
The first unzips the example data, and the second runs the entire pipeline. You can use the -j option for using multiple processors. You can make a PNG of the DAG with:
snakemake --rulegraph | dot -Tpng -Grankdir=LR > dag.png
which looks like this:
[a]https://cloud.githubusercontent.com/assets/115406/10252759/9a8e6cfe-6907-11e5-8f48-6b7aa7c88554.png
Please take a look through the docs and code in this PR and let me know if anything is unclear, not explained well, or doesn't make sense.

You can view, comment on, or merge this pull request online at:
https://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15
Commit Summary

add response.snakefile
add docs-building script
add docs for new build-docs.sh method
clean up files from hackathon; runall.snakefile is now Snakefile
add drug_response_process script from @ammhub; integrate into main snakefile
more comments and docs in Snakefile
s/filtered/cleaned/g to be more clear about what's happening
dos2unix on drug_response_process.R
rm response.snakefile
dictionary output sections now required
output files in snakefiles reflect new dictionary requirement in config.yaml
generic filtering functions
add name resolver function so we can specify filter funcs in config
helper to get target filtered output based on run and config.yaml
add filtering to main Snakefile
add filterfuncs module
make feature snakefiles use the now-required output dict format
s/filter_function/feature_filter/g
use .dropna() in filter function
for actual data use var > 0
pipeline_helpers.stitch now uses data_col
add helper function to aggregate all features together
update config.yaml for new filtering mechanism
samples list is now configured per-run
drug response values now inferred from per-run config values
targets, rule, and input function for aggregating features
rule and input function for aggregating responses
put run output in prefix dir
lots of comments and docs describing the new filtering mechanisms
add SIDs.txt for example data
edit demo output files in docs to point to new "cleaned" path

File Changes

A SIDs.txthttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-0 (5)
M Snakefilehttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-1 (372)
A build-docs.shhttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-2 (47)
M config.yamlhttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-3 (43)
M doc/custom_dot.pyhttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-4 (8)
M doc/source/configuration.rsthttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-5 (65)
M doc/source/features.rsthttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-6 (30)
A doc/source/filtering.rsthttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-7 (119)
M doc/source/images/all.dothttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-8 (145)
M doc/source/images/all_dag.pdfhttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-9 (0)
M doc/source/images/all_dag.pnghttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-10 (0)
M doc/source/images/cnv.dothttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-11 (30)
M doc/source/images/cnv_dag.pdfhttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-12 (0)
M doc/source/images/cnv_dag.pnghttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-13 (0)
M doc/source/images/cpdb.dothttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-14 (34)
M doc/source/images/cpdb_dag.pdfhttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-15 (0)
M doc/source/images/cpdb_dag.pnghttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-16 (0)
M doc/source/images/exome_variants.dothttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-17 (6)
M doc/source/images/exome_variants_dag.pdfhttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-18 (0)
M doc/source/images/exome_variants_dag.pnghttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-19 (0)
M doc/source/images/go.dothttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-20 (30)
M doc/source/images/go_dag.pdfhttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-21 (0)
M doc/source/images/go_dag.pnghttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-22 (0)
M doc/source/images/msigdb.dothttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-23 (36)
M doc/source/images/msigdb_dag.pdfhttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-24 (0)
M doc/source/images/msigdb_dag.pnghttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-25 (0)
M doc/source/images/normed_counts.dothttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-26 (6)
M doc/source/images/normed_counts_dag.pdfhttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-27 (0)
M doc/source/images/normed_counts_dag.pnghttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-28 (0)
M doc/source/images/zscores.dothttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-29 (10)
M doc/source/images/zscores_dag.pdfhttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-30 (0)
M doc/source/images/zscores_dag.pnghttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-31 (0)
M doc/source/index.rsthttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-32 (1)
M doc/source/metadoc.rsthttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-33 (25)
M doc/source/topic-snakefiles.rsthttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-34 (12)
M features/cnv.snakefilehttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-35 (26)
M features/cpdb.snakefilehttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-36 (4)
M features/gene_ontology.snakefilehttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-37 (2)
M features/msigdb.snakefilehttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-38 (4)
M features/normed_counts.snakefilehttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-39 (2)
M features/variants.snakefilehttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-40 (6)
M features/zscores.snakefilehttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-41 (2)
A filterfuncs.pyhttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-42 (20)
D runall.snakefilehttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-43 (64)
D settings.yamlhttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-44 (40)
A tools/drug_response_process.Rhttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-45 (100)
M tools/pipeline_helpers.pyhttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15/files#diff-46 (101)

Patch Links:

https://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15.patch
https://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15.diff

—
Reply to this email directly or view it on GitHubhttps://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15.

Almost -- let me hook it up to the model training R code, and then it'll be ready for a test run. That'll be pretty straightforward and I'm aiming to have that done early next week.

Way too cool, Ryan!
On Fri, Oct 2, 2015 at 4:39 PM, Ryan Dale<EMAIL_ADDRESS>wrote:

Almost -- let me hook it up to the model training R code, and then it'll
be ready for a test run. That'll be pretty straightforward and I'm aiming
to have that done early next week.
—
Reply to this email directly or view it on GitHub
https://github.com/NCBI-Hackathons/Pharmacogenomics_Prediction_Pipeline_P3/pull/15#issuecomment-145149511
.

--

Looks great, Ryan!  The data flow diagram is really useful, too.


#1901 Added logic to run init when new source is downloaded

Updated flow to create .terragrunt-init-required in WorkingDir when a new source is downloaded, which will flag that init is required to be executed, if init is successfully executed  - .terragrunt-init-required is removed
# terragrunt.hcl
terraform {
  source = "git::git@github.com:denis256/terraform-test-module.git//modules/test-file?ref=v0.0.4"
  //source = "git::git@github.com:denis256/terraform-test-module.git//modules/test-file?ref=v0.0.1"
}

Before:
$ terragrunt apply --terragrunt-log-level debug --terragrunt-debug
...
DEBU[0001] Running command: terraform init
DEBU[0004] Running command: terraform apply
...

# comment change commented source
$ terragrunt init --terragrunt-log-level debug --terragrunt-debug
...
DEBU[0001] Running command: terraform apply
...

With this change, init is executed when tag is changed:
$ terragrunt init --terragrunt-log-level debug --terragrunt-debug
DEBU[0002] Running command: terraform init
DEBU[0009] Running command: terraform apply
...
# change commented source
$ terragrunt init --terragrunt-log-level debug --terragrunt-debug
DEBU[0002] Running command: terraform init
DEBU[0009] Running command: terraform apply
...

Fix for: https://github.com/gruntwork-io/terragrunt/issues/1901

Build passed, so will go ahead to merge this in!


Add Unit-ed values to JSX Styling

What
When styles are generated, they look for framework specific units. However, there was nothing in the JSX styling that did the same. This adds that.

Ok, I'm not entirely clear on how to do that but we can just chat more specifically about it when I encounter it again


Adding temporary legacy import to allow integrators to migrate.

We will delete this right before 2.0.0 is cut.
Signed-off-by: Scott Nichols<EMAIL_ADDRESS>

Now I understand what you said in the call @n3wscott !!! I REALLY REALLE appreciate you doing this.
This will gain us sometime while @nlopezgi gets all the PubSub bits using the new Binding way.


Request for request #3327, allowing res.download to supply options to res.sendFile

Added an "options" field to res.download, allowing for options to be passed into sendFile
Options will include the existing Content-Disposition header by default, unless explicit headers are provided
Added tests for the new res.download functionality - with blank options, with allowed dotfiles, and with a custom Content-Disposition

I've chosen to follow option 2 from the thread, "Merge the headers, where the generated content-disposition overwrites whatever the user gave." Ignore that quick commit in the middle hahaha, it should all work nicely now. Thanks for your help with this!


Using bugfixed cilium/ebpf commit to show full verifier output

What does this PR do?
The current cilium/ebpf release shows truncated verifier errors. A recently merged branch fixes this problem, and this commit uses that bugfix: https://github.com/cilium/ebpf/pull/851
Motivation
What inspired you to submit this pull request?
Additional Notes
Anything else we should know when reviewing?
Describe how to test your changes
Write here in detail how you have tested your changes and instructions on how this should be tested.

I think this needs to be rebased on main after #75 was merged.

I'm OK with using a unreleased version of cilium/ebpf since they keep the main branch working and there isn't a predefined cadence to their releases.

#86 updated to a later version


Accept elasticsearch clients other than v8, vendor a stripped down esapi

Alternative to #146
Do not depend on go-elasticsearch v8 esapi. Vendor a stripped down esapi to ensure v7 and v8 compatibility specifically for bulk request.
Both v7 and v8 are tested with integration tests.
Unfortunately v7 and v8 deps are in go.mod because of tests.

I'm not convinced this is better than https://github.com/elastic/go-docappender/pull/146. I'd be more inclined to keep the other PR and add integration tests that show it works with both v7 and v8, when you use the v7 transport.

Closing in favor of #146


Clarify use in Spark

The section "Can I read change feed from Spark?" is not clear. The linked document and video do not mention the change feed. Could you please add a worked-out description and sample?

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: fdcc897a-d6df-3305-e9cb-01889a3c5d4f
Version Independent ID: 739a9fc7-3782-a860-ac6d-4194fd1ce2e8
Content: Working with the change feed support in Azure Cosmos DB
Content Source: articles/cosmos-db/change-feed.md
Service: cosmos-db
GitHub Login: @rafats
Microsoft Alias: rafats

@algattik Thanks for the feedback! I have assigned the issue to the content author to investigate and update as appropriate.

@algattik we are in the process of revamping the spark connector documentation. The content is currently under review, A sample to read change feed should be published to this doc: https://docs.microsoft.com/en-us/azure/cosmos-db/spark-connector in the next couple of days.
#please-close

@algattik We will now proceed to close this thread. If there are further questions regarding this matter, please reopen it and we will gladly continue the discussion.


Help running sample.

@estiller First, let me say thank-you so much for providing this awesome example.  This is exactly what I want to do, but I'm running into issues trying while to implement your sample.
Since your example sets up the whole environment, I assume my environment is setup correctly, and I'm just missing configuration.
Assuming this is the case, the only thing missing is some documentation explaining what goes where in the configurations (maybe some real-world examples or comments describing what should go where)
So I've managed to get working up to the Client.RequestCertificate, and here is where I hit a wall.  I have questions about what goes into these settings.
{   "ClientId": "CLIENT_ID",   "TenantId": "TENANT_ID",   "CertificateAuthorityScope": "CERTIFICATE_AUTHORITY_SCOPE",   "BaseUrl": "BASE_URL",   "DeviceName": "MyDevice"  }
Client/Tenant IDs seem self explanatory.  I put the function URL into the "BaseUrl" (I think that goes there), but I'm at a loss for what goes in the CertificateAuthorityScope?
I tried using https://graph.microsoft.com/.default as the CertificateAuthorityScope, which got me farther along, but then I get a 401 when attempting the var responseMessage = await client.PostAsync(".auth/login/aad", httpContent);
Any help is greatly appreciated!

Hi @VagyokC4, thank you for the compliments! I agree that this sample needs much better documentation.
It's been a long while since I used this sample, so I'm not sure I remember everything. I just looked at my personal environment. It looks like the AD application representing the "RequestCertificate" client was given a user_impersonation permission on the CA application to access it. The above SCOPE is the ID of this permission.
Granting this permission might NOT be automated, though I'm not sure. I'll try and have a look at it later today and update.
In the meanwhile, this image might give you a hint regarding what to look at:

Hi @estiller, this is the perfect solution for what I am trying to achieve.  But like @VagyokC4 I am seriously struggling with the meaning/source of some of the configuration properties.  If you have time, perhaps you could create a small dictionary of the meaning of each, and perhaps where to find it.
I have spent a couple of days working through it, and got a sort of working version but basically had to discard the Ad sign-in on the client app to get the token, I just could not get that to work.
I am guessing there were a few more stages in the setup, namely security/permissions on the API that were not set in the setup app, but are required to make it work.
I appreciate, this was something you create a while ago, and that you are no doubt extremely busy.  But it really would help me get this excellent project working correctly.
Many thanks
Mark

Hi @MarkLFT, thank you for your kind words. I'll try and get to documenting this sample better and maybe give it an overhaul. However, it's just not something that I'll be able to get to in the next few days. Perhaps if someone would like to take it upon themselves, then I can definitely help.

@estiller, many thanks.  I get that you have moved on to other projects, and this is a little old now.  So thanks in advance for any assistance that you, or anyone else can provide.


Export Driver

Most SQL driver packages either export the driver struct directly, or export an instance of the driver struct. Note that database/sql package does not provide a way to obtain a driver.Driver for a given driver name outside of the sql package itself.
This is useful as it allows packages like instrumentedsql to wrap a driver to add instrumentation. For example https://github.com/luna-duclos/instrumentedsql/blob/f5ba2826f7af02db3068b0261754cb828a704237/examples/sql_example_test.go#L20 leverages the exported sqlite3.SQLiteDriver struct to create a new driver instance to wrap. This same pattern is used by the postgres driver pq where the struct is pq.Driver, go-mssqldb where the struct is mssqldb.Driver, and mysql as mysql.MySQLDriver. Oddly the go-oci8 library takes the approach of exporting an instance of the driver at oci8.Driver rather than the struct, but this still works fine as long as a sql driver.Driver can be obtained.
I'm not sure which of the two options is the most idiomatic, but more do seem to opt for exporting the struct itself rather than exporting an instance of the driver.

Hi,
I would do what mysql and postgresql drivers do.
I'll change the needed letter and push it to master.

I've exported SybaseDriver (in the master branch). Can you please let me know if it's ok for you?

Looks good to me, cheers!


Presigned links broken as of 0.32

Describe the bug
Presigned links are deemed invalid by AWS as of version 0.32.
They worked fine in version 0.31.
To Reproduce
Generate a presigned link in 0.32.
See the following error message back from AWS:
<Error>
InvalidToken
<Message>
The provided token is malformed or otherwise invalid.
</Message>

Expected behavior
works
Environment

Rust version: latest stable
lib version: 0.32.1

Additional context
Looks like at least the X-Amz-Security-Token variable is not properly urlencoded in 0.32, while it does get properly urlencoded in previous versions.

This would be the culprit:
https://github.com/durch/rust-s3/commit/530e0c27cf781ed20fed41ee82dc044821499a87#diff-fe2e216f9675ca137d41284ea89c484ba7b74ecae726ba79119e6a8f50346b96

Shouldn't we also make a release and yank the corresponding versions?

We should, and we will :)


GenerativeModel does not support multiple grounding tools

Description of the bug:
We have a datastore that contains the knowledge articles which I would like to ground the model on. In addition, for the things it cannot find on there, I am trying to provide an additional tool using Google Search. However, I get a HTTP400 when I add both the tools. If I take out one of the tools, it returns fine.
google_search_tool = Tool.from_google_search_retrieval(grounding.GoogleSearchRetrieval())
data_store_path = f"projects/{__project_id__}/locations/{__data_store_region__}/collections/default_collection/dataStores/{__maestro_datastore_id__}"
        datastore_tool = Tool.from_retrieval(
            grounding.Retrieval(grounding.VertexAISearch(datastore=data_store_path))
        )
self.tools = [
            datastore_tool, google_search_tool
        ]
self.llm = GenerativeModel(model_name)
user_prompt_content= Content(
            role="user",
            parts=[
                Part.from_text("Who is John Galt?"),
            ],
        )
response = self.llm.generate_content(
            user_prompt_content,
            tools=self.tools,
            generation_config=self.generation_config,
            safety_settings=self.safety_settings,
        )

Actual vs expected behavior:
  File "/Users/dandab/codespaces/moltin/maestro-chat-service/app/routers/chat.py", line 41, in chat_gen
    res = chat_service.chat_gen(chat_request)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/dandab/codespaces/moltin/maestro-chat-service/app/services/maestro_chat.py", line 347, in chat_gen
    chat_response = self.chat_gen_service.chat(question=chat_request.question,chat_history=chat_history,output_type=output_type)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/dandab/codespaces/moltin/maestro-chat-service/app/services/gemini_generation_service.py", line 156, in chat
    response = self.llm.generate_content(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/dandab/.pyenv/versions/3.12.2/envs/search-env/lib/python3.12/site-packages/vertexai/generative_models/_generative_models.py", line 407, in generate_content
    return self._generate_content(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/dandab/.pyenv/versions/3.12.2/envs/search-env/lib/python3.12/site-packages/vertexai/generative_models/_generative_models.py", line 496, in _generate_content
    gapic_response = self._prediction_client.generate_content(request=request)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/dandab/.pyenv/versions/3.12.2/envs/search-env/lib/python3.12/site-packages/google/cloud/aiplatform_v1beta1/services/prediction_service/client.py", line 2125, in generate_content
    response = rpc(
               ^^^^
  File "/Users/dandab/.pyenv/versions/3.12.2/envs/search-env/lib/python3.12/site-packages/google/api_core/gapic_v1/method.py", line 131, in __call__
    return wrapped_func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/dandab/.pyenv/versions/3.12.2/envs/search-env/lib/python3.12/site-packages/google/api_core/grpc_helpers.py", line 78, in error_remapped_callable
    raise exceptions.from_grpc_error(exc) from exc
google.api_core.exceptions.InvalidArgument: 400 Request contains an invalid argument.

I would have expected it to use both tools like it normally does but seems to have an issue with multiple tools.
Any other information you'd like to share?
google-generativeai -> 0.6.0
python 3.12

Hi, you're using vertex. That's https://pypi.org/project/google-cloud-aiplatform/, not this package. This is the non-vertex gemini API, we don't have search grounding at all yet.


How to put max date in datepicker

##Help

to put maximum date selection in date picker?

for dob it is taking future dates also.
Please help me to find where to put the condition for max date, min date and initial date etc.

Hello, i've proposed a solution for a similar issue and hope it will help :
https://github.com/jamesfwz/materialize-form/issues/4
instead of translation, you can just pass your parmeters
sorry if it is to late
have a nice day


kirigami module missing?

file:///home/myuser/.local/share/plasma/plasmoids/org.kde.olib.thermalmonitor/contents/ui/main.qml:12:1: module "org.kde.kirigami" version 2.20 is not installed
i get the above when i try to use this widget instead of the original by kotelnik...
Kubuntu 22.04.4 LTS
KDE Plasma : 5.24.7
KDE Frameworks : 5.92.0
Qt : 5.15.3
Graphics Platform : X11
GPU : GeForce RTX 2060
i did load muon and search for kirigami... found a couple seemingly related to mobile use... installed kirigami-gallery with no luck then realized it is version 21.12.3-0ubuntu1 and not the 2.20 the error message is complaining about not finding...
also noted the error message talking about org.kde.kirigami but i have qml-module-org-kde-kirigami2 version 5.92.0-0ubuntu2 installed by default i think...

The KF5 version of the plasmoid requires KDE Frameworks 5.95, which provides Kirigami 2.20.
What you can do is replace any instances (in the plasmoid's qml files) of:
import org.kde.kirigami 2.20 as Kirigami

with:
import org.kde.kirigami 2.19 as Kirigami

This should work fine, though I won't be releasing any new versions of the plasmoid.
The files, as noted in the error, were installed to /home/myuser/.local/share/plasma/plasmoids/org.kde.olib.thermalmonitor/contents/ui/.

thank you... i did change the number from 2.20 to 2.19 in 5 files... rebooted and immediately saw a much better thermometer image on the widget... however, adding a new one to the desktop and trying to configure it shows a blank Sensors page...
i appreciate the response and attempt to fix but apparently it isn't for my system... thank you for trying!

Sorry to hear it - feel free to give it another go if you update to the next LTS.

Sorry to hear it - feel free to give it another go if you update to the next LTS.

thanks... i likely will try it again when i next update...


Fixed Docker Volume in new Docker Compose Version

Thank you for building this project, it fits my use case perfectly while being minimal and sleek. 😊
While deploying as in your docs I found this problem with the Docker Volumes.
I remember that back then you could map files as Volumes, but in the current version you should map only folders.
So nobody gets miss leaded into using your/our software I decided to fork and PR.
Great project, keep going.
Cheers 🤜

👋 @joaoofreitas
💖 Thanks for opening this pull request!
Please follow the contributing guidelines. And we use semantic commit messages to streamline the release process.
Examples of commit messages with semantic prefixes:

fix: interval for sending a request in the base service
feat: add new NAME service
docs: example of using the NAME service

👋 @joaoofreitas Congrats on merging your first pull request! 🎉


C# 7.3: auto-implemented property field-targeted attributes

This feature would enable this syntax:
[field: SomeThingAboutFieldAttribute]
public int SomeProperty { get; set; }

The attribute SomeThingAboutFieldAttribute would be applied to the compiler generated backing field for SomeProperty
See dotnet/csharplang#42
This likely does not introduce any new articles. Instead, it will be looking at where we discuss Attributes and updates any locations where we say this isn't allowed.

The following files will need to be updated for this feature:
docs/csharp/properties.md
docs/csharp/programming-guide/concepts/attributes/attributeusage.md
docs/csharp/programming-guide/concepts/attributes/index.md
docs/csharp/programming-guide/concepts/serialization/walkthrough-persisting-an-object-in-visual-studio.md
docs/csharp/programming-guide/concepts/serialization/index.md

The updated proposal is here

This will get completed in Sprint 135.
Current status: All the files listed in the comment above have been reviewed, and updated. All the samples have been migrated to the Samples repo.


Add a codeclimate/GitLab output formatter

Hi, I was trying to use deptrac with GitLab CI and while it works when using JUnit formatter, dependency violations show up as test results.

It would be a better experience if violations would show up with code examples and priorities within their code analysis/report (see) like this:

GitLab needs a specific report format specified by codeclimate:
https://github.com/codeclimate/platform/blob/master/spec/analyzers/SPEC.md#data-types
https://docs.gitlab.com/ee/user/project/merge_requests/code_quality.html
Let me know if this is something you want to support, I'd be happy to deliver a solution.

Thanks again for your contribution. I am closing this issue as this is released.


Indentation issue

Hello! I'm new to haskell. Great plugin, but I have an issue with indentation. I have this code:
fizzbuzz = map fizzbuzzify [1..]
  where fizzbuzzify n = if words == "" then show n else words
         where words = "" ++
                (if mod n 3 == 0 then "Fizz" else "") ++
                (if mod n 5 == 0 then "Buzz" else "")

(which I indented myself) but when I type it into vim while using the plugin I get this:
fizzbuzz = map fizzbuzzify [1..]
  where fizzbuzzify n = if words == "" then show n else words
          where words = "" ++
                (if mod n 3 == 0 then "Fizz" else "") ++
                (if mod n 5 == 0 then "Buzz" else "")

The indentation of the code in parens is not indented far enough and haskell doesn't compile. I tried with both 4-space tabs and 2-space tabs. Help?
Edit: The indentation is initially correct when I press enter, but it messes itself up when I then type a (

I think the case is fixed in the latest version.