DPG confidence level mechanism

Fixes https://github.com/Azure/autorest.csharp/issues/3557
Fixes https://github.com/Azure/autorest.csharp/issues/3356
Fixes https://github.com/Azure/autorest.csharp/issues/3581 by preventing the generator to generate convenience method for it.
Supersedes https://github.com/Azure/autorest.csharp/pull/3354
Description
For all the types we currently have:

InputLiteralType: literal types are not confident when the underlying type is numbers with names that are not valid C# identifiers, which causes its underlying InputEnumType to be not confident
InputUnionType: union types are always not confident (for now, there might be some exceptions for this but we did not implemented yet)
InputModelType: model types are not confident when any type of its properties is not confident
InputEnumType: InputEnumType should be confident, except when it is used by a InputLiteralType (see InputLiteralType for criteria)
InputListType and InputDictionaryType: these container types do not have its own confident levels, or it should stay the same confident level as its ElementType or its ValueType
Other types are always confident

In this PR, when building the ConvenienceMethod inside the OperationMethodChainBuilder class, we will check if the operation is confident for generating convenience method by checking its parameter types and response types. If any of them is not confident, we will short circuit and hide the corresponding convenience method by making the convenience method internal.
In the meantime, a record for reasons of making convenience method internal is created and the writer will write a message in comment to avoid surprises.
This PR also changes the generated type of unions to object.
Previously the union types in the model will generate from its first type, for instance, if a union is string | int32, in the generated code, we will have string. This PR changes this behavior to generate them as object.
Since it is object, when serializing, it should work properly depending on what type the customer assigns. Some of them are unsupported and exceptions will be thrown.
When deserializing, our SDK has the functionality to properly deserialize it to its correct type based on the value in json. If it is primitive type, a primitive type will return. If it is an array, an array will return. If it is a complex object or dictionary, a Dictionary<string, object> will return.
This PR also introduces a new test projects and corresponding test cases to verify the generated content is expected to have correct accessibility.
Considering the first part of this change will make the operation with unions internal, and the post processor will automatically make the models in use of the operation internal as well, therefore the change to type of object should be acceptable.
In real life, if a service team wants to introduce SDKs with union types, the operation involved with unions will not be public. They need to do either of the following:

write their own method to make it public, and customize the corresponding properties and the related serializations (use CodeGenMemberSerializationHooks for instance)
specify in the client teaspoon so that the union disappears.

Checklist
To ensure a quick review and merge, please ensure:

[ ] The PR has a understandable title and description explaining the why and what.
[ ] The PR is opened in draft if not ready for review yet.

If opened in draft, please allocate sufficient time (24 hours) after moving out of draft for review

[ ] The branch is recent enough to not have merge conflicts upon creation.

Ready to Land?

[ ] Build is completely green

Submissions with test failures require tracking issue and approval of a CODEOWNER

[ ] At least one +1 review by a CODEOWNER
[ ] All -1 reviews are confirmed resolved by the reviewer

Override/Marking reviews stale must be discussed with CODEOWNERS first

@m-nash could you please have a review on this PR?
Now we are detecting the low confident content inside the generator, and also I introduced a cache so that information will not be calculated multiple times.

@m-nash could you take a look at this PR?

One additional comment in the regen preview https://github.com/Azure/azure-sdk-for-net/pull/38181#discussion_r1294882249


Faces in photos

What do you need?
Last one from Andrew Arch:
Put advice for when including an image of a person in a page, that the person's eyes in the image should look towards the content around the image and not away from that content. Why? People's eyes follow the gaze away from the content.
Which entry/section is this related to?
http://content-style-guide.apps.staging.digital.gov.au/az-indexes/i.html#images

@AndrewArch to draft text

@AndrewArch I think this is sitting with you? :)

https://github.com/govau/content-guide/issues/39


Invalid property scope in property mediator.

Description:
The available AXIS2_CLIENT property scope option adds incorrect value axis2_client instead of axis2-client.

Suggested Labels:

Suggested Assignees:

Affected Product Version:
v0.9.24071813
OS, DB, other environment details and versions:
Steps to reproduce:
Related Issues:

The latest pre-release v0.9.24072507 has resolved the issue. Please reopen if the problem persists.


What is the correct way to concat (merge) two audio (or video) files?

Basically, I want to contact two audio files (lets say, file1.mp3 and file2.mp3) , what is the correct code to achieve that?
(as a bonus, will be nice a way t o concat mp4 files too).  [I've only seen this thread, and even closed without answer.]

See the concatDemuxer examples for browser and node.
You'll see it needs to create a temporary text file list to use with concat.
browser: https://github.com/ffmpegwasm/ffmpeg.wasm/blob/master/examples/browser/concatDemuxer.html
node: https://github.com/ffmpegwasm/ffmpeg.wasm/blob/master/examples/node/concatDemuxer.js

@kosso I tried the example however I got this error

I got a very similar error and was able to get the example to work by changing the file name to one with no spaces.

i have the same issue did you solve it yet??

The links are broken. Can you reopen them again please?

i have the same issue did you solve it yet??

Do you have the working code? It was deleted from the branch


Add parameter: targeted autoware version

Allows to comply with their respective header naming convention.

Depends on #26 for CI to pass.

Depends on #26 for CI to pass.

Depends on #26 for CI to pass.

Depends on #26 for CI to pass.


createSuper was not found in '@swc/helpers' is breaking builds

Describe the bug
Suddenly, when compiling a project, we're getting the next error:
"export 'createSuper' (imported as 'swcHelpers') was not found in '@swc/helpers'\n`

Checking @swc/helpers package, it seems that the module is missing but the compiled code is trying to use the createSuper method.
We haven't done any change from our side (no upgrading dependencies).
Input code
import {Entity} from '@s-ui/domain'

export default class SavedSearch extends Entity {}

Output code
import*as swcHelpers from"@swc/helpers";import{Entity as Entity1}from'@s-ui/domain';var SavedSearch=function(Entity){"use strict";swcHelpers.inherits(SavedSearch,Entity);var _super=swcHelpers.createSuper(SavedSearch);function SavedSearch(){swcHelpers.classCallCheck(this,SavedSearch);return _super.apply(this,arguments)}return SavedSearch}(Entity1);export{SavedSearch as default}

Config
module.exports = {
  minify: true,
  jsc: {
    parser: {
      syntax: 'ecmascript',
      jsx: true,
      dynamicImport: true,
      privateMethod: true,
      functionBind: true,
      exportDefaultFrom: true,
      exportNamespaceFrom: true,
      decorators: true,
      decoratorsBeforeExport: true,
      topLevelAwait: true,
      importMeta: true
    },
    transform: {
      legacyDecorator: true,
      react: {
        useBuiltins: true,
        runtime: 'automatic'
      }
    },
    target: 'es5',
    loose: true,
    externalHelpers: true
  },
  env: {
    targets: {
      ie: '11'
    },
    dynamicImport: true,
    loose: true,
    mode: 'entry',
    coreJs: 3
  }
}

Playground link
Playground link is not representable as it doesn't compile the same way.
https://play.swc.rs/?version=1.2.107&code=H4sIAAAAAAAAA8vMLcgvKlGods0rySyprFVIK8rPVVB3KNYtzdRPyc9NzMxT5%2BJKrQArSklNSyzNKVFIzkksLlYITixLTQlOTSxKzlBIrShJzUspVoCYolDNVcsFAGd6ir9ZAAAA&config=H4sIAAAAAAAAA2WQwU4DMQxE%2FyXnXrnsjaogkIB%2FsLKzxSiJI8cpu6r239m0SiniZr3xWOM5u8iJp8UNphU791W8G84ukxZom8qSjGY3OPhIxStnczs3Loki%2B9eYRa17s%2FKJDO%2BwTxk7nGryxpL2nG4Mc7MdMFEN9qwS%2FwofFFEyedxLI7womWj5T%2FaYRPE034cxyW84ITx%2BE98gX%2FJuAelK1m1PKZXNHtuzAUfyy6Ef7jYFeWu61mQcsbVB1SSSsXdrO0J6hLWSysPWThAp%2BP3JoInCC0JGT7%2BuP%2FNS8hZ5AQAA
Expected behavior
The module createSuper is available in @swc/helpers and builds work as expected.
Version
<EMAIL_ADDRESS>&<EMAIL_ADDRESS>Additional context
I'm using swc programatically and not with the cli.

You can update @swc/helpers to fix the issue.

Thanks @kdy1, I guess the moment I compiled, the new package of @swc/helpers wasn't updated yet as I tried to update it! I see now is available.  👍

I forgot adding helpers to @swc/helpers. That's one of the reasons I flattened the project.
I'll merge other core javascript packages into the main repository so I can update them along with changes.

Awesome! Thanks @kdy1!


[Request/Suggestion] Visualization of alignments

I would like to request a feature.
It's nice to be able to easily align various audio files with adalign but it would also be nice to see how the files differ. When you explained the structure of the match dictionary to me I posted a screenshot of an offset graph. Something like this or a graph of wave forms with colored parts that match would be nice. I hope you get what I mean :D
Could you please incorporate something like this into audalign?

That's an interesting idea! I'm not entirely sure how that would work, though. Would this feature be included when plot=true is set in the config or the audalign.plot() function is called? Or, would it be a separate function?
Can you share the code you used for the offset graphs or make a pr?
A graph of color-coded waveforms seems neat, too, but it seems like it would be tough to set defaults. Maybe that would be a lot easier to accomplish in a GUI application?

Sorry, I have not really thought about where or how to incorporate this into audalign 😅. I think a separate function would be OK but having this as an extra graph in audalign.plot() would work too I guess.
Here is the code I wrote back then. I used this as a way to learn how to code a GUI application in Python but I'm not feeling very confident about the outcome.
I fingerprinted two files and sorted the outcome by the x_val (time) in def fingerprint In line 135 I created the plot. It uses a cursor (mplcursors) to show the actual time and offset.
import PySimpleGUI as sg
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import audalign
import os
import pandas as pd
import mplcursors
import threading
import numpy as np
from itertools import groupby

# initialize audalign
ada = audalign.Audalign()

def fingerprint(orignal_filename, new_filename, window):
    # fingerprint files
    #ada = audalign.Audalign()
    ada.fingerprint_file(orignal_filename)
    ada.fingerprint_file(new_filename)

    # recognize new file from fingerprints
    result = ada.recognize(orignal_fingerprint_file, filter_matches=50, locality=5, locality_filter_prop = 0.1)
    _,recognisefilename = os.path.split(new_filename)
    if result != None:
        x_val = []
        y_val = []

        # add up each offset found and sort by x_val (time)
        for numberofoffsets in range(0,len(result['match_info'][recognisefilename]['offset_seconds'])):
            for locality_seconds in result['match_info'][recognisefilename]['locality_seconds'][numberofoffsets]:
                x_val.append(locality_seconds[0])
                y_val.append(result['match_info'][recognisefilename]['offset_seconds'][numberofoffsets])

        temp = sorted(zip(x_val, y_val))
        x_val, y_val = zip(*temp)

        # convert x_val to datetime
        x_val = pd.to_datetime(x_val, unit='s')
        window.write_event_value('-FINGERPRINTING DONE-', (x_val, y_val))
    else:
        window.write_event_value('-FINGERPRINTING DONE-', (None, None))

def convert_to_audio(filename, threadname, window):
    name, extension = os.path.splitext(filename)
    ada.convert_audio_file(filename, name + ".mp3")
    window.write_event_value('-CONVERTING DONE-', threadname)

if __name__ == '__main__':
    # set window theme
    sg.theme("Default1")
    # create ui layout
    layout = [[sg.Text('Choose orignal file:')],
              [sg.In(size=(102, 1), key='-ORIGFILE-', visible=True, enable_events=True),
               sg.FileBrowse('Browse', file_types=(('video file', '*.mp4 *.avi *.mkv *.flv *.mov'), ('audio file', '*.mp3 *.wav'),('all files', '*.*')),key='-ORIGFILE_BTN-')],
              [sg.Text('Choose new file:')],
              [sg.In(size=(102, 1),key='-NEWFILE-', visible=True, enable_events=True),
               sg.FileBrowse('Browse', file_types=(('video file', '*.mp4 *.avi *.mkv *.flv *.mov'), ('audio file', '*.mp3 *.wav'),('all files', '*.*')),key='-NEWFILE_BTN-')],
              [sg.Button('Go'), sg.Button('Clear')],
              [sg.Text('⚫', text_color='grey', key="ORIGFILECONVERTTHREAD", pad=(0,0), font='Default 14'),sg.Text('⚫', text_color='grey', key="NEWFILECONVERTTHREAD", pad=(0,0), font='Default 14'),sg.Text('⚫', text_color='grey', key="FINGERPRINTTHREAD", pad=(0,0), font='Default 14')]
             ]

    # window = sg.Window('Offset Graph', layout, finalize=True)
    window = sg.Window('Offset Graph', layout)

    orignal_fingerprint_file_converted = False
    new_fingerprint_file_converted = False
    orignal_fingerprint_file = ""
    new_fingerprint_file = ""

    # --------------------- EVENT LOOP ---------------------
    while True:
        event, values = window.read()
        if event == sg.WIN_CLOSED or event == 'Exit':
            break
        if event == 'Go':
            if values["-ORIGFILE-"] != "" and values["-NEWFILE-"] != "" and values["-ORIGFILE-"] != values["-NEWFILE-"]:
                window['-ORIGFILE-'].update(disabled=True)
                window['-ORIGFILE_BTN-'].update(disabled=True)
                window['-NEWFILE-'].update(disabled=True)
                window['-NEWFILE_BTN-'].update(disabled=True)

                orignal_fingerprint_file = values["-ORIGFILE-"]
                # convert original file if needed
                original_filename, original_file_extension = os.path.splitext(values["-ORIGFILE-"])
                if not original_file_extension == ".wav" and not original_file_extension == ".mp3":
                    print("Original file is not an audio file. Converting to mp3...")
                    window["ORIGFILECONVERTTHREAD"].update(text_color='red')
                    thread_file1 = threading.Thread(target=convert_to_audio, args=(orignal_fingerprint_file, "ORIGFILECONVERTTHREAD", window,), daemon=True)
                    thread_file1.start()
                    orignal_fingerprint_file = original_filename + ".mp3"
                else:
                    window["ORIGFILECONVERTTHREAD"].update(text_color='green')
                    orignal_fingerprint_file_converted = True
                print("Original file to fingerprint: " + orignal_fingerprint_file)

                new_fingerprint_file = values["-NEWFILE-"]
                # convert newfile file if needed
                newfile_filename, newfile_file_extension = os.path.splitext(values["-NEWFILE-"])
                if not newfile_file_extension == ".wav" and not newfile_file_extension == ".mp3":
                    print("New file is not an audio file. Converting to mp3...")
                    window["NEWFILECONVERTTHREAD"].update(text_color='red')
                    thread_file2 = threading.Thread(target=convert_to_audio, args=(new_fingerprint_file, "NEWFILECONVERTTHREAD", window,), daemon=True)
                    thread_file2.start()
                    new_fingerprint_file = newfile_filename + ".mp3"
                else:
                    window["NEWFILECONVERTTHREAD"].update(text_color='green')
                    new_fingerprint_file_converted = True
                print("New file to fingerprint: " + new_fingerprint_file)
                # start fingerprinting if files are audio files
                if orignal_fingerprint_file_converted == True and new_fingerprint_file_converted == True:
                    print("No conversion necessary")
                    # fingerprint and recognize file
                    window["FINGERPRINTTHREAD"].update(text_color='red')
                    thread_fingerprint = threading.Thread(target=fingerprint, args=(orignal_fingerprint_file, new_fingerprint_file, window,), daemon=True)
                    thread_fingerprint.start()
            else:
                sg.popup('Choose (different) files first!')
        elif event == '-CONVERTING DONE-':
            threadname = values[event]
            window[threadname].update(text_color='green')
            if threadname == "ORIGFILECONVERTTHREAD":
                orignal_fingerprint_file_converted = True
            if threadname == "NEWFILECONVERTTHREAD":
                new_fingerprint_file_converted = True
            if orignal_fingerprint_file_converted == True and new_fingerprint_file_converted == True:
                # fingerprint and recognize file
                window["FINGERPRINTTHREAD"].update(text_color='red')
                thread_fingerprint = threading.Thread(target=fingerprint, args=(orignal_fingerprint_file, new_fingerprint_file, window,), daemon=True)
                thread_fingerprint.start()
        elif event == '-FINGERPRINTING DONE-':
            x_val, y_val = values[event]
            window["FINGERPRINTTHREAD"].update(text_color='green')
            print("Fingerprinting done")
            # plot the results if there are ane xy_vals
            if len(x_val) > 0:
                plt.style.use('bmh')
                fig = plt.figure()
                ax = fig.gca()
                ax.set_title("Offsets graph")
                ax.xaxis.set_major_formatter(mdates.DateFormatter("%H:%M:%S"))
                ax.yaxis.set_major_formatter(matplotlib.ticker.FormatStrFormatter('%.3f'))

                #temp = sorted(zip(x_val, y_val))
                #x_val, y_val = zip(*temp)

                zippedVals = zip(x_val, y_val)
                groupedlist = []
                last_offset = None
                templist = []

                for offset, timestamp in zippedVals:
                    if last_offset == None:
                        templist.append((offset, timestamp))
                    else:
                        if offset == last_offset:
                            templist.append((offset, timestamp))
                        else:
                            groupedlist.append(templist)
                            templist = []
                            templist.append((offset, timestamp))
                    last_offset = offset
                for group in groupedlist:
                    x_val, y_val = zip(*group)
                    print("Group")
                    print(list(x_val))
                    print(list(y_val))
                    # ax.plot(list(x_val), list(y_val))

                # y = np.array(y_val)
                # x = np.array(x_val)
                # for yv in np.unique(y):
                    # if yv != np.nan:
                        # idx = y == yv
                        # ax.plot(x[idx],y[idx]) #,marker='o',linestyle='-',color='b'

                lines  = plt.gca()
                # lines  = ax.plot(x_val, y_val)
                fig.autofmt_xdate()

                # add cursor to plot
                cursor = mplcursors.cursor(lines, hover = True)
                def show_annotation(sel):
                    _, yi = sel.target
                    i = sel.target.index
                    timestamp = x_val[int(round(i))]
                    sel.annotation.set_text("Time: " + timestamp.strftime("%H:%M:%S") + "\n" + "Offset: " + str('%.3f' % yi))
                cursor.connect('add', show_annotation)
                plt.ylabel("Offset [s]")
                plt.xlabel("Time")
                fig.canvas.manager.set_window_title('')
                plt.tight_layout()
                plt.show(block=False)
            else:
                sg.popup('No matches found!')
        elif event == 'Clear':
            # clear paths
            window['-ORIGFILE-'].update(value='')
            window['-NEWFILE-'].update(value='')
            # enable gui elements again
            window['-ORIGFILE-'].update(disabled=False)
            window['-ORIGFILE_BTN-'].update(disabled=False)
            window['-NEWFILE-'].update(disabled=False)
            window['-NEWFILE_BTN-'].update(disabled=False)

All this is probably not efficient and looks complicated. I was just trying to get it to work and I'm not really into programming.
About the color-coded waveforms. I'm always in awe when I see such nice looking plots in an applications like you have in your readme gif but I think matplotlib alone could also work. Even though it's not that simple to handle. It seems like one can color parts of a line or add bars to a plot. An image search for "matplotlib waveforms colored parts" shows some nice plots 😁
Something like this or this but with two or more waveforms having similar parts marked with semitransparent bars would be the optimum I think.
I don't think I'm able to code such features so I just made this post hoping for the best. Thank you for having an open ear.

Thanks for the references and code! It looks pretty solid.
That seems like a really neat feature, so I'll try to get it added in.

Hi everyone, just asked @jhpark16 to evaluate possible collaborations...
Here's a screenshot of his Video Audio Sync for FFMPEG tool:

Hope that inspires.

OT
@stephenjolly of @bbc added AudAlign in Similar Projects section of their audio-offset-finder repo.


Add blacklist to masks

This PR adds a blacklist feature to a mask.
Closes #8.

This solution @nemtsov looks good to you?

I think supporting NOT is a language feature; specifically it’s an addition to the grammar and needs to be done on the compiler.
I’m also used to ! representing NOT, as that’s what’s used in many languages.

I think supporting NOT is a language feature; specifically it’s an addition to the grammar and needs to be done on the compiler.

IMHO,  ! is a filter just like *, so I don't see the purpose of specifying it on the compiler.

I’m also used to ! representing NOT, as that’s what’s used in many languages.

I'm also used to it, so +1 for !.

I understand your reasoning, but I’m not certain it was right to implement the * in the filter in the first place. Why should it live in the filter and not be compiled?


Fix: Submodule diffs are misaligned

Fixes #4328
Test URLs
Link to test this fix : TACC/Core-CMS@c8b7cbe
Link to test that it doesn't break 1639
Screenshot
Before:

After:

How:
Added overwrite to shift the table by text-align: center; to text-align: left;

Did you check that it did not break https://github.com/sindresorhus/refined-github/pull/1639?

I've updated my PR with the link.
Also, I'm sorry I will take care of that next time. (I had disabled it for a while so didn't get a warning)

@fregante Fixed those! Thanks for feedback :)

@fregante Fixed those! Thanks for the feedback :)

Thank you for the fix, @harshgoel05!


[BUG] Fix Rex view service to not use propertyNames when returning an entity

Existing/related issue?
https://github.com/odpi/egeria-react-ui/pull/634
Current Behavior
as per https://github.com/odpi/egeria-react-ui/pull/634 the react ui was looking at the entity for properties - it expected propertyNames to be populated. At Egeria v4 this is not populated. The fields are still being included in the entity but do not contain any content. This field should be removed from the Entity.
Expected Behavior
view service not to send propertyNames field in an entity
Steps To Reproduce
run Rex and view an entity and look at the flow from the view service.
Environment
- Egeria:
- OS:
- Java:
- Browser (for UI issues):
- Additional connectors and integration:

Any Further Information?
No response

does this explain https://github.com/odpi/egeria-react-ui/issues/637 ?
If so I think we need a v4 fix


Request for feedback: Quiz migration

Please give me your feedback on migrating our quizzes to Microsoft Forms. You can test the first pre-quiz here, let me know what you think!
https://forms.microsoft.com/Pages/ResponsePage.aspx?id=v4j5cvGGr0GRqy180BHbR2humCsRZhxNuI79cm6n0hRUNTBMUVdDSFcwTlNTM1RBSDFJQzNMMVM1MS4u

It looks good to me.

good!
If translated quiz are added, can the survey support translation?

not bad

re: translations: https://support.microsoft.com/en-us/office/language-settings-for-microsoft-forms-b282f9aa-0fe4-4290-b1e1-827a8a35ac27 - looks like it's relying on browsers for full translation support. @minwook-shin can you try this for your language?

https://forms.microsoft.com/Pages/ResponsePage.aspx?id=v4j5cvGGr0GRqy180BHbR2humCsRZhxNuI79cm6n0hRUNTBMUVdDSFcwTlNTM1RBSDFJQzNMMVM1MS4u&lang=ko
if use this "&lang=ko", some will be translated. and others text may use the browser's(chromium edge!) translation support.
thanks you!

Good questions in quiz. But in quiz questions will start from simple (easy) -> intermediate (not easy and difficult) -> advanced (difficult question).

I don’t understand your feedback, @sonalisikarwar

I mean in quiz in  starting  or for testing easy questions should be included to build participant's  confidence. It will attract more participants.

@sonalisikarwar our quizzes are carefully designed for two purposes: first, to get the student primed and ready to learn to begin the lesson using the pre-lecture quiz, and second, to check knowledge in the post-lecture quiz. If you would like to fork this curriculum and build out other quizzes for your own purpose, however, please feel free!

The quiz questions are good.

closing this for now, and I will start the migration!


fix aws binlinking

to fix https://github.com/habitat-sh/on-prem-builder/issues/73

Tested and confirmed this locally. Prior to this fix, provisioning will break core CentOS functionality per comment I left in #73

Would be great to add a comment explaining why we're making the change so we don't repeat it later :)  other than that looks great


Replace Distance calculations with SqrMagnitude in NetworkTransform

Save dozens of CPU cycles with this one neat trick CPU manufactures don't want you to know!

Just realized SqrMagnitude takes a single vector. I guess that's what I get for trying to commit directly from Github.

Just realized SqrMagnitude takes a single vector. I guess that's what I get for trying to commit directly from Github.


User.create_marker() returns HTTP 404 Not Found

When I try to create a strean marker with TwitchIO v2.10.0 I get a HTTP 404 Not Found error:
    await self._api._user.create_marker(
  File "/opt/project/venv/lib/python3.12/site-packages/twitchio/user.py", line 750, in create_marker
    data = await self._http.post_stream_marker(token, user_id=str(self.id), description=description)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/project/venv/lib/python3.12/site-packages/twitchio/http.py", line 741, in post_stream_marker
    return await self.request(
           ^^^^^^^^^^^^^^^^^^^
  File "/opt/project/venv/lib/python3.12/site-packages/twitchio/http.py", line 154, in request
    body, is_text = await self._request(route, path, headers, force_app_token=force_app_token)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/project/venv/lib/python3.12/site-packages/twitchio/http.py", line 253, in _request
    raise errors.HTTPException(f"Failed to fulfill the request", reason=resp.reason, status=resp.status)
twitchio.errors.HTTPException: 404: Failed to fulfill the request: Not Found

Possibly this is due to the call from post_stream_marker() is to a wrong Twitch API endpoint, see . It looks like it should be a function of the Stream() object, not the User() or PartialUser() object?

The endpoint is correct and this is supposed to be a PartialUser method.
The reasons for 404 are:

The user is not streaming live.
The ID in the user_id field is not valid (if user is manually created)
The user hasn't enabled video on demand (VOD).

Hi @chillymosh, thank you for your swift reply. In my case it's probably caused by the first reason: the user is not streaming live. I was trying to set the channel's tags before the user begins a livestream.


Fix typo in README

--base-url is not a valid option, but --baseurl is.

Thanks @jhamrick. Congrats on your achievement too!


[meta] Stop publishing development files

This package is currently being published with unnecessary files, such as .eslintrc and the test/ directory.
This removes the following files:

.eslintrc
.github/FUNDING.yml
.nycrc
test/index.js

You can see the difference by comparing the results of npm pack --dry-run.
It does this by replacing .npmignore, a blocklist, with the files property in package.json, an allowlist.

Sounds good. Thanks for taking a look!
Out of curiosity, what's the risk of files? Is the idea that you might forget to publish something, breaking things for people?

Also: should .github/FUNDING.yml be included?

Yes, precisely. The damage caused by breaking people is FAR, far more costly than the damage caused by accidentally publishing an extra file - even if it leaks a credential, that's a quick fix one person can do that only impacts me, compared to a fix that only I can do that impacts millions of people.
It's fair that i could npmignore the FUNDING.yml file, but that's a few bytes, so i typically include it so that funding information is present.


Cannot delete by long pressing the delete button of the floppy disk in the card number input box

Cannot delete by long pressing the delete button of the floppy disk in the card number input box

The icon displayed to the right of the card number text field indicates the card issuer. Sometimes, a generic card icon (I believe that's what you're referring to as "floppy disk") is displayed if the issuer can't be determined by the current numbers the user has entered.
The icon isn't meant to be clicked.

No, when I enter the completed card number, I ca n’t delete by pressing and holding the keyboard delete button

My  huawei P10


Support for 1101-SP16

Hello i have two 1101-S16 units and would also like to use your ESPHOME Splos BMS.
Could you also implement?
i would help with testing.
Thanks.
Regards,
Dominik

I assume it's already supported but untested. Please give it a try an ping me if it doesn't work out of the box.

I assume it's already supported but untested. Please give it a try an ping me if it doesn't work out of the box.

I tired but no entity shows up in HA.
Do i need to put any specific RS485 protocol setting in the BMS?

How did you connect the ESP to the BMS? Does both BMS share the same RS485 bus? It's important to select proper addresses using the dip switches. The same addresses must be used at the configuration YAML:
https://github.com/syssi/esphome-seplos-bms/blob/main/esp8266-example-multiple-battery-banks.yaml#L39-L46

How did you connect the ESP to the BMS? Does both BMS share the same RS485 bus? It's important to select proper addresses using the dip switches. The same addresses must be used at the configuration YAML:
https://github.com/syssi/esphome-seplos-bms/blob/main/esp8266-example-multiple-battery-banks.yaml#L39-L46

Currently i am trying with one single BMS and all dip switches are off.
I will connect the second BMS in a few weeks.
But for the first trial i will try with one single BMS connected this way:

to the RS485 TTL to TTOl module

Where can i display the response of all sensors enabled?

This is the ESPHome log. You can connect to your ESPHome node and view the logs by:
esphome log esp8266-example.yaml

Please enable the debug output of the uart component: https://github.com/syssi/esphome-seplos-bms#debugging
You should see the outgoing and incoming traffic now. Please double check the baudrate setting of the uart component. The BMS models uses different baudrates.

This is the ESPHome log. You can connect to your ESPHome node and view the logs by:
esphome log esp8266-example.yaml

Please enable the debug output of the uart component: https://github.com/syssi/esphome-seplos-bms#debugging
You should see the outgoing and incoming traffic now. Please double check the baudrate setting of the uart component. The BMS models uses different baudrates.

Can i also obtain this wireless?
i don't have the chance to have a linux machine next to my battery pack.hm

Yes. You can obtain the log via the api component or if you use mqtt it will be retrieved from the MQTT broker. Just execute the command above. It will provide a list depending on your configuration YAML.

If i make a plain install in my ESPHome i can get it with api key.
Do i only need to add:
external_components:

source: github://syssi/esphome-seplos-bms@main
To it and then install, is that all? and how can i shoose more battery banks then?
Sorry for noob question.

Or do i need to install it via linux machine.
i am struggling with the first installation.

If this is your first ESPHome node you should use the esp8266-example.yaml as starting point: https://github.com/syssi/esphome-seplos-bms/blob/main/esp8266-example.yaml
Please make sure the RS485 module is connected to GPIO4/GPIO5. To make it more explicit I try to provide a step by step guide:

Use a linux host (if available) and make sure python3 + pip (the python package manage is installed). You could also use a windows machine. If you have the choice please pick a x86 based linux host.
Install the esphome package by pip3 install esphome. The command line interface tool esphome should be available now.
Try to execute the command line tool: .local/bin/esphome

$ ~/.local/bin/esphome
usage: esphome [-h] [-v] [-q] [-s key value] command ...
esphome: error: the following arguments are required: command

Create a working directory for your esphome YAML configurations: mkdir ~/esphome
Goto the working directory (cd ~/esphome) and download the example configuration: wget https://raw.githubusercontent.com/syssi/esphome-seplos-bms/main/esp8266-example.yaml
Create a new file called secrets.yaml and provide your WiFi credentials:

echo "wifi_ssid: WIFI_SSID" > secrets.yaml
echo "wifi_password: WIFI_PASSWORD" >> secrets.yaml

Rename the esp8266-example.yaml to something meaningful: mv esp8266-example.yaml seplos-bms.yaml
Compile and flash the YAML configuration to your ESP: esphome run seplos-bms.yaml
After flashing the esphome tool tries to retrieve the log automatically. If you want to access the ESPHome node without re-flashing you should use esphome logs seplos-bms.yaml.

Thank you very very much.
i got it, here is a part of the output log:
[16:27:11][C][seplos_bms:150]:   Unit of Measurement: 'V' [16:27:11][C][seplos_bms:150]:   Accuracy Decimals: 3 [16:27:11][C][seplos_bms:151]: Cell Voltage 4 'seplos-bms cell voltage 4' [16:27:11][C][seplos_bms:151]:   Device Class: 'voltage' [16:27:11][C][seplos_bms:151]:   State Class: 'measurement' [16:27:11][C][seplos_bms:151]:   Unit of Measurement: 'V' [16:27:11][C][seplos_bms:151]:   Accuracy Decimals: 3 [16:27:11][C][seplos_bms:152]: Cell Voltage 5 'seplos-bms cell voltage 5' [16:27:11][C][seplos_bms:152]:   Device Class: 'voltage' [16:27:11][C][seplos_bms:152]:   State Class: 'measurement' [16:27:11][C][seplos_bms:152]:   Unit of Measurement: 'V' [16:27:11][C][seplos_bms:152]:   Accuracy Decimals: 3 [16:27:11][C][seplos_bms:153]: Cell Voltage 6 'seplos-bms cell voltage 6' [16:27:11][C][seplos_bms:153]:   Device Class: 'voltage' [16:27:11][C][seplos_bms:153]:   State Class: 'measurement' [16:27:11][C][seplos_bms:153]:   Unit of Measurement: 'V' [16:27:11][C][seplos_bms:153]:   Accuracy Decimals: 3 [16:27:11][C][seplos_bms:154]: Cell Voltage 7 'seplos-bms cell voltage 7' [16:27:11][C][seplos_bms:154]:   Device Class: 'voltage' [16:27:11][C][seplos_bms:154]:   State Class: 'measurement' [16:27:11][C][seplos_bms:154]:   Unit of Measurement: 'V' [16:27:11][C][seplos_bms:154]:   Accuracy Decimals: 3 [16:27:11][C][seplos_bms:155]: Cell Voltage 8 'seplos-bms cell voltage 8' [16:27:11][C][seplos_bms:155]:   Device Class: 'voltage' [16:27:11][C][seplos_bms:155]:   State Class: 'measurement' [16:27:11][C][seplos_bms:155]:   Unit of Measurement: 'V' [16:27:11][C][seplos_bms:155]:   Accuracy Decimals: 3 [16:27:11][C][seplos_bms:156]: Cell Voltage 9 'seplos-bms cell voltage 9' [16:27:11][C][seplos_bms:156]:   Device Class: 'voltage' [16:27:11][C][seplos_bms:156]:   State Class: 'measurement' [16:27:11][C][seplos_bms:156]:   Unit of Measurement: 'V' [16:27:11][C][seplos_bms:156]:   Accuracy Decimals: 3 [16:27:11][C][seplos_bms:157]: Cell Voltage 10 'seplos-bms cell voltage 10' [16:27:11][C][seplos_bms:157]:   Device Class: 'voltage' [16:27:11][C][seplos_bms:157]:   State Class: 'measurement' [16:27:11][C][seplos_bms:157]:   Unit of Measurement: 'V' [16:27:13][D][seplos_modbus:163]: Send frame: ~20004642E00200FD37 [16:27:13][D][uart_debug:114]: >>> 7E:32:30:30:30:34:36:34:32:45:30:30:32:30:30:46:44:33:37:0D [16:27:23][D][seplos_modbus:163]: Send frame: ~20004642E00200FD37 [16:27:23][D][uart_debug:114]: >>> 7E:32:30:30:30:34:36:34:32:45:30:30:32:30:30:46:44:33:37:0D [16:27:33][D][seplos_modbus:163]: Send frame: ~20004642E00200FD37 [16:27:33][D][uart_debug:114]: >>> 7E:32:30:30:30:34:36:34:32:45:30:30:32:30:30:46:44:33:37:0D [16:27:43][D][seplos_modbus:163]: Send frame: ~20004642E00200FD37 [16:27:43][D][uart_debug:114]: >>> 7E:32:30:30:30:34:36:34:32:45:30:30:32:30:30:46:44:33:37:0D [16:27:53][D][seplos_modbus:163]: Send frame: ~20004642E00200FD37 [16:27:53][D][uart_debug:114]: >>> 7E:32:30:30:30:34:36:34:32:45:30:30:32:30:30:46:44:33:37:0D [16:28:03][D][seplos_modbus:163]: Send frame: ~20004642E00200FD37 [16:28:03][D][uart_debug:114]: >>> 7E:32:30:30:30:34:36:34:32:45:30:30:32:30:30:46:44:33:37:0D [16:28:13][D][seplos_modbus:163]: Send frame: ~20004642E00200FD37 [16:28:13][D][uart_debug:114]: >>> 7E:32:30:30:30:34:36:34:32:45:30:30:32:30:30:46:44:33:37:0D [16:28:23][D][seplos_modbus:163]: Send frame: ~20004642E00200FD37 [16:28:23][D][uart_debug:114]: >>> 7E:32:30:30:30:34:36:34:32:45:30:30:32:30:30:46:44:33:37:0D [16:28:33][D][seplos_modbus:163]: Send frame: ~20004642E00200FD37 [16:28:33][D][uart_debug:114]: >>> 7E:32:30:30:30:34:36:34:32:45:30:30:32:30:30:46:44:33:37:0D [16:28:43][D][seplos_modbus:163]: Send frame: ~20004642E00200FD37 [16:28:43][D][uart_debug:114]: >>> 7E:32:30:30:30:34:36:34:32:45:30:30:32:30:30:46:44:33:37:0D

And here the first part, i set the Baud to 19200, because it is the ine BMS description:
16:27:10][I][app:102]: ESPHome version 2022.6.3 compiled on Oct  4 2022, 16:15:59
[16:27:10][C][wifi:491]: WiFi:
[16:27:10][C][wifi:353]:   Local MAC: 58:BF:25:D7:2E:93
[16:27:10][C][wifi:354]:   SSID: 'DS17'
[16:27:10][C][wifi:355]:   IP Address: <IP_ADDRESS>
[16:27:10][C][wifi:356]:   BSSID: A4:2B:B0:20:88:8D
[16:27:10][C][wifi:358]:   Hostname: 'seplos-bms'
[16:27:10][C][wifi:360]:   Signal strength: -80 dB ▂▄▆█
[16:27:10][C][wifi:364]:   Channel: 1
[16:27:10][C][wifi:365]:   Subnet: <IP_ADDRESS>
[16:27:10][C][wifi:366]:   Gateway: <IP_ADDRESS>
[16:27:10][C][wifi:367]:   DNS1: <IP_ADDRESS>
[16:27:10][C][wifi:368]:   DNS2: <IP_ADDRESS>
[16:27:10][C][logger:275]: Logger:
[16:27:10][C][logger:276]:   Level: DEBUG
[16:27:10][C][logger:277]:   Log Baud Rate: 115200
[16:27:10][C][logger:278]:   Hardware UART: UART0
[16:27:10][C][uart.arduino_esp8266:102]: UART Bus:
[16:27:10][C][uart.arduino_esp8266:103]:   TX Pin: GPIO4
[16:27:10][C][uart.arduino_esp8266:104]:   RX Pin: GPIO5
[16:27:10][C][uart.arduino_esp8266:106]:   RX Buffer Size: 384
[16:27:10][C][uart.arduino_esp8266:108]:   Baud Rate: 19200 baud
[16:27:10][C][uart.arduino_esp8266:109]:   Data Bits: 8
[16:27:10][C][uart.arduino_esp8266:110]:   Parity: NONE
[16:27:10][C][uart.arduino_esp8266:111]:   Stop bits: 1
[16:27:10][C][uart.arduino_esp8266:115]:   Using software serial
[16:27:10][C][seplos_modbus:129]: SeplosModbus:
[16:27:10][C][seplos_modbus:131]:  RX timeout: 150 ms
[16:27:10][C][seplos_bms:142]: SeplosBms:

This log message indicates outgoing traffic:
[16:28:43][D][uart_debug:114]: >>> 7E:32:30:30:30:34:36:34:32:45:30:30:32:30:30:46:44:33:37:0D

If your BMS does respond you should see incoming traffic:
[16:28:43][D][uart_debug:114]: <<< ...

Could you provide a photo of your RS485 module? Is your RS485 module equipped with a TX and RX led? Does the TX led blink periodically?

I did some research and found out that i should use GPIO 5 and 4 Pin as written in the code.
Before i used TX RX.
Is this in the description, maybe you could higlight it.
Thanks for your awesome work, now i only need to implement it into mi home assistant with any API key.

I would like to add your BMS model as supported. Do you agree?

yes of course


fix unprotected access to _computedValue

Scope & Purpose
AstNodes have a member _computedValue which can contain a pointer to dynamically allocated memory. this memory is owned by the AstNode and is freed when the AstNode is destroyed. this works fine for AstNodes that are dynamically created and destroyed in a query.
However, there were some singleton AstNodes which were created just once for the entire server process and were shared between all queries:

NullNode
FalseNode
TrueNode
ZeroNode
EmptyStringNode

The initialization of the _computedValue attribute for these singleton nodes was not thread-safe, so it multiple queries computed the value for the same singleton node simultaneously, this could have caused races and a (small) one-time memory leak .
The fix now makes nodes per-query singleton nodes, so they can be reused within the same query, but are not shared between queries. in addition, the singleton nodes are all initialized in a query before there is any parallelization. as a bonus, no dynamic memory allocation is now needed
for the _computedValues of these per-query singleton nodes.

[x] Bug-Fix for devel-branch (i.e. no need for backports?)
[x] The behavior in this PR can be (and was) manually tested (support / qa / customers can test it)
[x] The behavior change can be verified via automatic tests

Testing & Verification
This change is a trivial rework / code cleanup without any test coverage.
Test plan:

run scripts/unittest shell_server_aql and scripts/unittest shell_server_aql --cluster true in loops with ASan to see if there are leaks or any memory errors.

http://<IP_ADDRESS>:8080/view/PR/job/arangodb-matrix-pr/10022/

Jenkins run shows unrelated hot_backup test failure.


Feature/fypp src

daily

Daily; Add more multi-precision version function support.

Add more multi-precision version function support


Predefined "get task next"

As I've mentioned in other places (https://github.com/alanvardy/tod/issues/355#issuecomment-1982414379), my workflow involves cataloging, processing, and then working through tasks in a set of predefined filters.
I would love the ability to define (in config) somewhere a list of predefined filters to work through, and Tod would automatically:

Pull the first task in the list, sorted based on the defined config priority & grouping
Give me the option to complete, postpone/reschedule, skip task
Tell me how many are remaining
Automatically move onto the next when ready (with breaks in between groups - similar to a pomodoro).

I'm not sure if this is best included in the existing "tod task next" (perhaps "auto next"), or a seperate command - personally I think it would be pretty cool to have this as a specific separate command and brand it something like "Work!" or "complete-tasks"

I've put some thought into it and think that this is out of scope for the project. Some alternatives that might work for you:

Time blocking with an app like Akiflow
a shell script with sleep , tod task next, and tod task complete.

Feel free to reopen if you think that there is some more context I could use.


Address performance issues found with Google Lighthouse

Lighthouse recommends the following

[x] Eliminate render-blocking resources (specifically calls out the Work+Sans font being loaded from Google Fonts and https://onramp.dev/css/app.css?id=fada00fcb9591cc095a9

[x] Remove unused CSS (same CSS file as before - so maybe that CSS file isn't even needed?)

[ ] Removed unused JS (https://onramp.dev/js/app.js?id=4a4649e3438cff8c7c6c)

We're adding PurgeCSS to the Tailwind config.
I'm not sure why the JS is so bloat-y.. we have almost none. Definitely can trim that down.

Lighthouse score is up to 99 - this feels good enough for now!


Final changes for glvis-4.1

This will be the last PR to be merged before the glvis-4.1 release.
Required Tasks

[x] Propagate glvis/data changes in glvis-js: https://github.com/GLVis/glvis-js/pull/10
[x] Propagate glvis/data changes in pyglvis: https://github.com/GLVis/pyglvis/pull/21
[ ] Merge #189
[ ] Merge #188
[ ] Mention new glvis/data repo in repo and/or website?
[ ] Resolve #182
[ ] Update website https://github.com/GLVis/web/issues/7

Optional Tasks

[ ] Mention xeus-glvis in repo and/or website?
[ ] Merge #170
[ ] Resolve https://github.com/GLVis/pyglvis/issues/5
[ ] Resolve https://github.com/GLVis/pyglvis/issues/7

@tomstitt, should we mention https://github.com/GLVis/xeus-glvis in the CHANGELOG?

@tomstitt, should we mention https://github.com/GLVis/xeus-glvis in the CHANGELOG?

When do you want to do the release by? I'd like to get a working binder example before we mention it. I'll work on that this week

When do you want to do the release by?

The target date for the release is August 31st.


Deathnettles should sting you when you pick them up without gloves.

 Should not happen if the person who picks them up is a slime or wearing: any hardsuit (not eva), Insulated gloves, botany gloves, head specific gloves (Caps gloves, Paper-cut proof gloves)
Additional context
 Deathnettles have 0 downsides other than not piercing Hardsuits, and thats not cool for the most powerful melee weapon in the game by far, since you can get people to crit very very easily as a random civilian. Now only appropriate people will be able to use them.

Credit to tyrfang for the idea, i cant find the original message but its in the deathnettle thread on discord

yes, implement, ss13 had it as a balancing factor and it worked well there

yeah this is funny
rn botany can mass produce deathnettles on warops for every man woman and child, now tiders with no gloves would get trolled

we need this in our lives

Stale cause of #25068


Building Piston on Windows

Post problems with building Piston here.

I'm not sure if this is Windows specific, but I get the following error, trying to build the tutorial on windows:
$ cargo build
    Updating git repository `https://github.com/PistonDevelopers/graphics.git`
    Updating git repository `https://github.com/PistonDevelopers/sdl2_window.git
`
    Updating git repository `https://github.com/PistonDevelopers/opengl_graphics
.git`
no matching package named `piston2d-graphics` found (required by `piston`)
location searched: https://github.com/pistondevelopers/graphics#a7b7abde
version required: = 0.0.4
versions found: 0.0.11```

It seems that some package requires the wrong version?

I guess we can close this. Please open up new issues if there are problems building on windows.


okcoin get_futures_market_trade_history return OTC trades history

"trades.do" should be "future_trades.do" in method def.

yes, thx.
Will get fixed in next commit.


Kiwix Management: Implement User UI for Library

Build out the user interface for end users to see a list of available libraries in UnlockEd. Users will only be able to see a list of libraries that administrators have marked visible to them. Figma for this UI will look very similar to the admin UI for libraries, except it would filter out the cards that are "hidden".
Tasks

[ ] Add navigation UI for the user to click on and visit the library UI
[ ] Build a user-facing library page that shows all libraries (with title and description) that are set to visible. Data is from GET /libraries/visible

Acceptance criteria

The user sees a navigation menu item to take them to open content libraries.
The user sees a listing of libraries that they have access to because of the library's visibility setting.

REMINDERS:

[ ] Remove StaticContentCard.tsx from codebase as this is not used anymore.
[ ] Remove Open content column from student dashboard


added openai gpt4o mini model

blog post

:rocket:
This description was created by Ellipsis for commit 6256a11620b3288e4539e6aecadc32d92d1e5706

Summary:
Added support for the new OpenAI GPT-4o Mini model, including chat setting limits, model definition, and type updates.
Key points:

Added gpt-4o-mini model to CHAT_SETTING_LIMITS in lib/chat-setting-limits.ts with specific temperature, token output length, and context length limits.
Added GPT4oMini model definition to lib/models/llm/openai-llm-list.ts with pricing and other details.
Updated OpenAILLMID type in types/llms.ts to include gpt-4o-mini.

Generated with :heart: by ellipsis.dev

@mckaywrigley please merge this

@mckaywrigley

@mckaywrigley


Cache VEP annotations for ClinVar variants

Caching VEP annotations (instead of re-running VEP on all variants each time) would speed up the ClinVar pipeline. This would be nice for updating ClinVar data more frequently.

Can possibly copy the Hail Table output by the last run of the VEP task before running the VEP task and use that table as the cache.


Add preventCollision option

This option prevents grid items from being moved when collided with. This
is useful functionality for the video sequencer I'm building with
react-grid-layout.

@STRML this feature has gotten a few upvotes, so it might be a useful addition to RGL for more people than just myself! If there's anything I can do to make it easier for you to provide feedback for this PR, just let me know. If you don't see this as fitting in with the library that's fine too.. I can keep using my branch, but it would be nice to be working off of the upstream version.

@nikolas I tried out this branch, and I think it's really promising :sparkles:. However, I ran into two problems that perhaps you might be able to help me solve.

Resizing still nudges other grid items out of the way. I'd love it if the option prevented me from resizing if I were resizing into another grid item.
If I move an item over another item that is close to one of the vertical edges of the grid (x=0, for example), and then move it mostly towards the side of that item that borders the edge, the item I'm moving is placed outside the grid.

Any suggestions on how to fix these issues? Thanks much!

@nikolas So, guys, this fix is not ready yet to master branch?

@nikolas @msiebert @STRML
I test this solution and seems like work but not in all cases. Just an example:
Work fine example:
We have for instance to boxes, named Box1 and Box2. When are dragging Box1 and hit Box2 into lateral side, work fine (not move Box2).
Still not working example:
But if we make to hit Box1 to Box2 from top side to down (like hit the Box1 to top side of Box2 it still are moving in down direction).
Guys, any idea?

@nikolas @STRML
Seems wok fine but if you collide from lateral side, but is still displacement if you hit from the top side of the box (which are collide) this box still are moving (by the box which are you dragging). To resolve that just need to add an extra oldY position. The same way you did which oldX.
I left some comments in the PR to be more clear.
And finally! in that way work in all cases that I test so far!
Thanks!
Please let me know when this PR are merged to master branch.

yeah, this patch has been working for me - I've been using it in production since last fall. if anyone has improvements to it feel free to add them.

@nikolas @STRML @msiebert, I found another case that still not working yet.... on vertical resizing :S. If we have and box in the same column below and your box origin (which are dragging) move down and collide which another box. This collider box still displacement. Any suggestion?

My suggestion is to add a patch to the code that fixes your issue

@nikolas  past the diff here:
--- a/lib/ReactGridLayout.jsx
+++ b/lib/ReactGridLayout.jsx
@@ -50,6 +50,8 @@ export default class ReactGridLayout extends React.Component {
 // A selector for the draggable handler
    draggableHandle: PropTypes.string,

+      preventCollision: PropTypes.bool,
+
    // If true, the layout will compact vertically
    verticalCompact: PropTypes.bool,

@@ -243,7 +245,7 @@ export default class ReactGridLayout extends React.Component {
};
   // Move the element to the dragged location.
-    layout = moveElement(layout, l, x, y, true /* isUserAction */);
+    layout = moveElement(layout, l, x, y, true , this.props.preventCollision);

   this.props.onDrag(layout, oldDragItem, l, placeholder, e, node);

@@ -268,7 +270,7 @@ export default class ReactGridLayout extends React.Component {
 if (!l) return;

    // Move the element here
-    layout = moveElement(layout, l, x, y, true /* isUserAction */);
+    layout = moveElement(layout, l, x, y, true , this.props.preventCollision);

    this.props.onDragStop(layout, oldDragItem, l, null, e, node);

--- a/lib/utils.js
+++ b/lib/utils.js
@@ -217,12 +217,15 @@ export function getStatics(layout: Layout): Array {
-export function moveElement(layout: Layout, l: LayoutItem, x: ?number, y: ?number, isUserAction: ?boolean): Layout {
+export function moveElement(layout: Layout, l: LayoutItem, x: ?number, y: ?number, isUserAction:
?boolean, preventCollision: ?boolean): Layout {
  if (l.static) return layout;

  // Short-circuit if nothing to do.
  if (l.y === y && l.x === x) return layout;

+    const oldX = l.x;
+    const oldY = l.y;
+    const oldH = l.h;
  const movingUp = y && l.y > y;
  // This is quite a bit faster than extending the object
  if (typeof x === 'number') l.x = x;

@@ -241,7 +244,12 @@ export function moveElement(layout: Layout, l: LayoutItem, x: ?number, y: ?numbe
   for (let i = 0, len = collisions.length; i < len; i++) {
     const collision = collisions[i];
     // console.log('resolving collision between', l.i, 'at', l.y, 'and', collision.i, 'at', collision.y);
-
+      if (preventCollision) {
+          l.x = oldX;
+          l.y = oldY;
+          l.h = oldH;
+          return layout;
+      }
     // Short circuit so we can't infinite loop
     if (collision.moved) continue;

Is there any chance, this pull request is getting merged? :)

@Rhjulskov I'm not currently working on this, so I would just open a new pull request with these changes, and include @Jero786's suggestions.

Merged in 121b19d5e9ba68a80c8438fa9617ec69e8fa15db


Fix intermitent failure in transactions BBE test

Purpose
$subject.
Fixes https://github.com/ballerina-platform/ballerina-lang/issues/13607

Codecov Report

Merging #13919 into master will decrease coverage by <.01%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##             master   #13919      +/-   ##
============================================
- Coverage     64.54%   64.53%   -0.01%
  Complexity      426      426
============================================
  Files          2150     2150
  Lines         95393    95393
  Branches      12709    12709
============================================
- Hits          61567    61566       -1
  Misses        28815    28815
- Partials       5011     5012       +1

Impacted Files
Coverage Δ
Complexity Δ

...a/org/ballerinalang/bre/bvm/WorkerDataChannel.java
80.86% <0%> (-3.09%)
0% <0%> (ø)

...llerinalang/stdlib/socket/tcp/SelectorManager.java
70.08% <0%> (-1.71%)
0% <0%> (ø)

...allerinalang/test/util/client/ResponseHandler.java
80.76% <0%> (+15.38%)
0% <0%> (ø)
:arrow_down:

...allerinalang/net/jms/LoggingExceptionListener.java
100% <0%> (+50%)
0% <0%> (ø)
:arrow_down:

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 c2c53f0...fef3cd9. Read the comment docs.


Add option to exclude database sizes

When You have thousands of collections inside MongoDB you get large metrics payload which Sensu RabbitMQ can't handle without custom tuning.
Excluding database sizes You can still get service metrics.
Pull Request Checklist
Is this in reference to an existing issue?
No
General

[ ] Update Changelog following the conventions laid out here

[ ] Update README with any necessary configuration snippets

[ ] Binstubs are created if needed

[x] RuboCop passes

[x] Existing tests pass

New Plugins

[ ] Tests

[ ] Add the plugin to the README

[ ] Does it have a complete header as outlined here

Purpose
Known Compatibility Issues
None

Once CI passes I will merge and release this, thanks for the contribution.

released: https://rubygems.org/gems/sensu-plugins-mongodb/versions/2.1.0


Makes lucid-utils Python 2 and 3 compatible

Should make at least most the library compatible with Python 2 and 3.
Please could you check that all functions, especially the prediction one still work as expected.
Thanks.

Thanks so much!
I love the print statement diff, perhaps I should remove the print("yay") (I have no idea how it got in there...)

And yes, it all works perfectly - the units on the prediction function don't matter, as they're only being compared to each other to find the closest datapoint.


Merge branch 'dev' into davidp_dump_resources_merge4

CI gfxreconstruct build queued with queue ID 207404.

CI gfxreconstruct build # 4322 running.

CI gfxreconstruct build # 4322 passed.

CI gfxreconstruct build queued with queue ID 208020.

CI gfxreconstruct build # 4333 running.

CI gfxreconstruct build # 4333 passed.


Match the behavior of peek_slice to recv_slice

Previously, peek_slice() did not match the behavior of recv_slice() when there is a buffer wrapparound. I believe that by using the read_allocated() method, this will be fixed. I created an issue for this here: https://github.com/smoltcp-rs/smoltcp/issues/833
This is my first time trying to contribute to smoltcp so I've only tested locally a few ways. One is running my program that uses peek_slice() that previously failed (it now succeeds). I also ran:
cargo +stable test --no-default-features --features alloc,socket-tcp,proto-ipv4,medium-ethernet

And the tests completed succesfully. Please let me know if I need to do anything else.

Looks good! Can you add a test asserting the new behavior? ie test that it does return data past the wraparound.


Setup basic application server

Set up basic Hapi server/routes, UserController, testing, monitoring, logging and documentation framework.

Seems fine aside from that.
Is that comment format in Utility.js the convention / common?
This thing:
var abc =
/**
 * Comment line 1 here
 * Comment line 2 here
 */
exports.abc = function(def) {
  ...
};

It feels odd inserting a multiline comment block in the middle like that.

Since I'm not implementing Utility as a "class", It's one of the trick in jsdoc to make it documents the function as a exported static function while making the function available inside the module without documenting it twice. http://usejsdoc.org/howto-commonjs-modules.html
It doesn't decrease readability in my opinion, but if you think there is a better convention then we can change that. Also most other modules beside Utility should be implemented as one constructor a.k.a "class".

@yj-soh I fixed the quotes thing, can merge?

I've also changed to using rfr module instead of using relative paths for requiring modules.

Looks alright.
If that comment format is suggested by the library, go with it.
I'm just concerned because I hadn't seen it before.
On 10 Oct 2015 11:34, "Thien Nguyen"<EMAIL_ADDRESS>wrote:

I've also changed to using rfr module instead of using relative paths for
requiring modules.
—
Reply to this email directly or view it on GitHub
https://github.com/nus-mtp/worldscope/pull/2#issuecomment-147028878.


Code review of [BSIP10] percentage based transfer fee

As @theoreticalbts mentioned in https://github.com/cryptonomex/graphene/issues/570#issuecomment-184495783 I'm now creating this ticket.

The BSIP10 feature requirement/description is here.
My main develop branch is here here.
//Update: the branches below have been merged into the main develop branch (above)

In this branch I implemented a feature: with asset_update_operation the new_options can have a null CER, in this case CER of asset_to_update won't change. It addresses the No. 5 known issue in BSIP10. //Update: branch merged to main develop branch
In this branch I implemented a new operation committee_member_update_core_asset_operation, so committee can change some options of CORE asset. It addresses the No. 3 known issue in BSIP10. //Update: branch merged to main develop branch

@xeroc suggested me to re-base the code so he can merge it to test network easier, but I don't think it's good to do it right now, since it will cause loss of tracking to individual changes(I'm a bit bias here).
Current code is based on bitshares branch (the production branch). I may need to merge new codes from develop branch. Maybe need a new ticket for this? //Update: this job is finished.

Another thing to consider is that for BitShares you need the hardfork logic, while you do not need it for the graphene code base .. (AFAIK)
Not sure how CNX see it, but IMHO it makes sense to have the hardfork logic be a separated commit from the actually feature.

@abitmore : In general, your operations should use an asset_id_type, then fetch the asset_object referred to by the ID in the evaluator.

This percentage transfer fee feature actually needs a great deal of review, as it breaks one of the design principles of the Graphene toolkit, which is that the fee for an operation can be determined only from the operation and the current fee schedule. Now transferring some assets will have a fee which cannot be determined from that information alone (as you'll need to know whether the asset issuer's enabled the percentage-based fee for their asset).

This BSIP also really doesn't "play nice" with the existing machinery which converts the fee. There's really no way for you to tell the blockchain "for this operation, don't convert the fee to BTS" -- it's already converted by the time the op knows about it.

I think the sanest way to do percentage-based transfer fees is to make them an extension on the transfer operation, which basically says "I'm including this extra BTS / asset to be paid according to the BSIP rules," and then have another extension in the asset_update_operation which allows an asset owner to say "transfer of my asset is disallowed unless the transfer op includes the extension with so much on it." Then the main fee's paid into network / referral system as normal and the BSIP is an extra fee can be handled by totally custom logic.

TLDR, use the extension system to add another field to the transfer op, instead of trying to jam it into the existing fee field and have the existing fee handling code get in your way (what you're doing is different enough that it will get in your way).

If I understood correctly, you suggested that we leave current set_fee and get_required_fees API unchanged, and add another API (for example calculate_additional_fee) for applications to calculate additional fees which can be added into extensions maybe with yet another API for example set_additional_fee, or maybe an API for example adjust_fee to adjust the fee field directly.

A benefit of this is it probably can be used by all operations later.
A drawback of this is it will require a bit more changes to client applications to set the additional fee field to extensions, or unnecessarily multiple calls to set a fee;
another drawback is the calculate_fee loop called inside set_fee function become redundant when need to add more data to the transaction/operation after set the fee, but it's required if the client won't call set_additional_fee or adjust_fee.

So I propose that we extend the set_fee API and internally called calculate_fee function directly. With current implementation I added a asset_object parameter, but it probably better to add something smaller and more extendable instead, for example a flat_set<static_variant>. It also can be implemented better (than current implementation) if place a default extended_calculate_fee function in operation class and override it when needed.
Thoughts?

@xeroc : We strongly prefer to have hardfork logic in the Graphene codebase for many reasons:

Allows most testing to be done in Graphene unit tests
Keep the diff between BitShares and Graphene relatively small
Minimize merge work needed when updating BitShares with new code from Graphene
Minimize possibility of bugs that manifest in BitShares but not in Graphene

Ideally a unit test will exist for new hardforking code, which checks the behavior both before and after the hardfork time.

Finished some code refactory, new code is here (will update OP accordingly)

new code is based on develop branch, it can be merge to develop branch and bitshares branch easily
with the help of virtual functions and templates, the code become cleaner, most of special operation checks are removed from generic code including evaluator.cpp, fee_schedule.cpp, database_api.cpp and wallet.cpp
added a new get_operation_fee API to database_api, which is similar to but simpler than the old get_required_fees API

Things yet to be done:

write unit testing code
merge the 2 related branches mentioned in OP

Questions:

is it possible and/or practicable to extend "transfer_operation" directly instead of adding a new operation "tranfer_v2_operation"?

Merged the 2 related branches mentioned in OP.

is it possible and/or practicable to extend "transfer_operation" directly instead of adding a new operation "tranfer_v2_operation"?

Yes, this is what the extensions field is for.  We started defining extensions with the previous release, but currently there is a serialization bug #599 which does not allow them to be used.

The history of this branch is a little messy as far as merge commits go.  Some project management and git usage minutiae:

They are not full of merge commits and merge conflicts, meaning you should start from a checkout of develop and either cherry pick commits, or create a fresh commit by pulling out files.

The committee_member_update_core_asset_operation should be its own ticket.

The asset_update_operation CER semantics change should be its own ticket.

As a rule of thumb, if you introduce new code, then immediately do a cleanup / refactor of the new code, it may be better to squash / fixup into a single commit.  An exception to this rule of thumb is when a change can be decomposed into a cleanup / refactor of old code (retaining equivalent functionality) followed by new code (using extension points which were exposed by the refactoring of the old code).

@abitmore if you're reading this, hold off on fixing this stuff for now until I get a chance to review things more thoroughly.

is it possible and/or practicable to extend "transfer_operation" directly instead of adding a new operation "tranfer_v2_operation"?

Yes, this is what the extensions field is for. We started defining extensions with the previous release, but currently there is a serialization bug #599 which does not allow them to be used.

The real issue is that transfer_operation::fee_parameters_type is lack of an extensions field.

So we need to define a fee extension mechanism in order to implement this feature without adding a new transfer_v2_operation.  Fortunately this is something we've already figured out -- see #554 -- I just haven't gotten around to implementing it yet.

@abitmore if you're reading this, hold off on fixing this stuff for now until I get a chance to review things more thoroughly.

Sorry, I know the commit history is a bit messy. There are not only merges, but also a lot of code refactories -- some codes are added then removed. Please check #605 directly for the final status of code.

I'm actually reviewing the diff which is much more readable than the commit history.  I think the commit history is just too messy to spend effort on fixing, and what we should do instead is simply copy-paste code from the diff into brand-new better-organized commits.
A messy commit history isn't necessarily a bad thing.  I personally usually have an extremely messy and verbose commit history full of tiny commits fixing compile errors, repeated merges, cherry picks, debugging stuff -- but I'm the only person who ever sees any of that, because I do a ton of clean-up work to make the commits I push to Github simple and readable.

Hmm, there is a fundamental issue raised by this feature.  When paying a percentage fee in BTS, you have to have an exchange rate, which means whatever you're using as the exchange rate [1] effectively becomes part of the fee schedule.
I originally thought that a violation of one of the Graphene design principles -- that the fee for an operation can be determined from only the operation and fee schedule -- was merely an architectural problem in the implementation which could be solved with some (possibly large) refactoring of the new code.  But this violation is actually a fundamental part of the feature, and cannot be removed unless you want to remove the ability to use BTS to pay the transfer fee for such an asset.
So there are really two questions here:

Should the specification be revised to require percentage fees to be paid in the asset being transferred?
How do you solve the data flow problem of getting the asset-specific fee parameters into every place where fee parameters need to go?

The second question needs to be squarely addressed in order for both internal chain code and wallets to support percentage fees.  The solution in the code is calculate_fee_extended(), which needs to be revised -- my thoughts on that revision will be forthcoming in another comment.
[1] The BSIP discusses this and eventually comes to the conclusion that the CER should be used as the exchange rate.

#554 should be implemented as a dependency of this feature.
new get_operation_fee() API call is unnecessary, functionality is already provided by get_required_fees() API call immediately above it
Changing get_required_fees_helper to take db as a parameter means that you're making fees dependent on chain state other than the fee schedule.  One of the Graphene design principles is that the fee for an operation can be determined only by the operation and the fee schedule, without reference to any other chain state.  This principle is an assumption baked into the design of the current wallets.  More thoughts in a follow-up comment.
Extensions should use extension<T> mechanism.  This will greatly reduce the amount of needed boilerplate of the form "iterate over all the extensions and see if the one I care about is present", and make get_transfer_fee_mode(), set_transfer_fee_mode(), checking the extension is absent before the hardfork date, and .  Note you will need to merge #599 to fix a serialization bug which keeps extension<T> from working correctly in the BitShares release.
build_extended_fee_parameters() should be a free-floating method which takes a const fee_schedule& instead of being a method on database.
build_extended_fee_parameters() uses a variant which has poor performance and should be avoided in validation code.  This should likely use fc::static_variant instead.
Implementing a new committee_member_update_core_asset_operation is not the way to go.  Instead we should change the owner of CORE to the committee, then verify that only the things we want to allow to be updated are updated.
Any action which requires the committee authority is restricted to proposed tx's and review period, there is no need to enforce this specifically in an evaluator.
For the new null core exchange rate semantics implementation here, copying options into a local variable is unnecessary.  Instead simply set a local variable to the new exchange rate, copy the options to the object, then write the new exchange rate into the object.
Substantial changes are made to account_statistics_object::process_fees() implementation.  It seems that what's going on is pending_fees_to_network, pending_fees_to_non_network and pending_vested_fees_to_non_network are placed on the account object.  This may be merely a refactoring of the existing functionality, if that is the case, there is no reason to have the fields on account_statistics_object when they are merely local bookkeeping for the process_fees implementation.
Transfer fee mode is another thing that will probably be made redundant by #554.  I.e. the implementation is cleaner if both percentage and flat fees are charged for all assets, but the percentage fee may be zero which should exactly emulate the previous functionality.

Should the specification be revised to require percentage fees to be paid in the asset being transferred?

This idea is perhaps due to haven't go through all features/code. Exchange rate is not only used to determine how much the fee should be, but also used to determine a cap and a bottom of the fee. Pay fee in the asset only without checking the rate will make the cap/bottom unable to be calculated, or need per-asset settings which is out of this BSIP's scope (if not well designed, it will cause justice issues between asset issuers and the committee).

new get_operation_fee() API call is unnecessary, functionality is already provided by get_required_fees() API call immediately above it

get_operation_fee is designed as a replacement of several db.current_fee_schdule.set_fee(op) calls inside cli_wallet code (I think it's not good to use an API in this way). The get_required_fees API recursively checks operations inside a proposal, thus is not suitable (and maybe is wrong).

build_extended_fee_parameters() uses a variant which has poor performance and should be avoided in validation code. This should likely use fc::static_variant instead.

Not impossible. Just need a good design and some coding.

Implementing a new committee_member_update_core_asset_operation is not the way to go. Instead we should change the owner of CORE to the committee, then verify that only the things we want to allow to be updated are updated.

Implementing a new special operation is much easier and less possible to mess things up. It's a white-listing feature, only options allowed to be updated can be updated. Current asset permission/flag design is more a black-listing feature, which is always needed to be expanded to define new rules.

Any action which requires the committee authority is restricted to proposed tx's and review period, there is no need to enforce this specifically in an evaluator.

It's just copied from committee_member_update_global_parameters_operation. These may belong to a new ticket.

For the new null core exchange rate semantics implementation here, copying options into a local variable is unnecessary. Instead simply set a local variable to the new exchange rate, copy the options to the object, then write the new exchange rate into the object.

The proposed way need to write database twice, is it good? Another possible way is changing the copy of the object to a member variable of the class, since it have been constructed once in do_evaluate() just some lines above.

Substantial changes are made to account_statistics_object::process_fees() implementation. It seems that what's going on is pending_fees_to_network, pending_fees_to_non_network and pending_vested_fees_to_non_network are placed on the account object. This may be merely a refactoring of the existing functionality, if that is the case, there is no reason to have the fields on account_statistics_object when they are merely local bookkeeping for the process_fees implementation.

No, it's not the case, it's a new feature described in the BSIP10 document: different fee cutting rules. I admit that code probably need to be refactored, but likely we need a new ticket for it.

Transfer fee mode is another thing that will probably be made redundant by #554. I.e. the implementation is cleaner if both percentage and flat fees are charged for all assets, but the percentage fee may be zero which should exactly emulate the previous functionality.

The required feature is not like this. Some assets charge percentage based fee, other assets charge flat fee, no per-asset fee settings right now except a "mode".
I have some thoughts about other questions, will reply after @theoreticalbts made more progresses.

This issue was moved to bitshares/bitshares-core#173


Could we redirect a specific container log an an Index

Could we redirect a specific container log an an Index
Let me know if you need details.

Also for a native log format could we add a field for IndexName
logs:
nginx-access:
from:
file:
path: "/var/log/nginx-containers/host.access.log"
multiline:
firstline: /\d{4}-\d{2}-\d{2}/
sourcetype: "nginx:access"
indexName: "nginx"

fluentd:monitor-agent are only going to default index there are no provision to put an indexName field to it.

Hi aakashbhalla1!
You definitely can, using fluentd filters and our built in jq_transformer, you can dynamically set the index based on various variables that fluentd tags the log with as it moves through the pipeline.
Will work on getting a good reference doc and how-to to help users learn and extend their config, and will see how much of it we can expose via helm, vs directly editing the templates.

Hi,
I'm having the same issue. I see that we can only define sourcetypes in values.yaml. Do you have any examples or documentation that can route different container logs to separate indexes?

Just wanted to follow up on this issue. I was wondering if there were any updates.

resolved as part of #294


add new build format cep

This is a mashup of the boa / rattler-build and conda-build documentation for the new recipe spec.
I am not sure in how far we want to spec out things here since there are two speccable things:

allowed inputs
expected behavior

This is already a bit of both. What's missing is for example a section on run_exports, including the ignore_run_exports_from and ignore_run_exports. However, when specifying these inputs, we probably also want to specify the behavior a little bit?
I also need to expand more on the expected behavior of outputs and how "merging" works with the top-level recipe.
Todo:

[ ] document all build keys
[ ] spec out variant config files and variant evaluation
[ ] document all available selector variables (unix, win, ...)?
[ ] figure out if documenting package hash computation is part of this spec or not
[ ] finish jinja function docs incl. all allowed inputs
[ ] think more about cmp function

I've decided to split the proposal up into multiple sub-proposals, the first one is

About the new YAML format incl. selectors, allowed Jinja, ... #54
The allowed keys / values in the new format (excluding outputs)
The new specification for how outputs should behave

If someone thinks that we should split into more parts let me know! :)

Closing because we've split this CEP into multiple smaller ones :)


Safe Transaction API returns Inconsistent Data

Describe the bug
While using Safe Transaction service to fetch Safes and their Owners, There is inconsistent response between "/owners/{address}/safes/" and "/safes/{address}/".
Also, response of "/safes/{address}/all-transactions/" call (for the same safe as above) mentions 3 of the transactions as not executed, while they have been executed a long time ago. These transactions are missing from Gnosis UI altogether.
To Reproduce
Steps to reproduce the behaviour:

This behaviour is currently observed on safe Address "0x4faFB87de15cFf7448bD0658112F4e4B0d53332c". The List of owners from "/safes/{address}/" call shows the wallet address "0xccC3330A95D9F83e2aFAA68911BB52468E2B26FE" as an owner but the response to "/owners/{address}/safes/" with the same wallet address call returns an empty array.

In the Gnosis UI for the same safe, notice the transactions with nonce from 56 through 58 are missing. When using "/safes/{address}/all-transactions/", these transactions are shown with isExecuted: false. But these transactions are already executed, you can check the same from etherscan [here] (https://etherscan.io/address/0x4faFB87de15cFf7448bD0658112F4e4B0d53332c).

Expected behavior

The Safe Owners details should be consistent between different APIs.
Executed transactions should have isExecuted: true in the API response.

Environment (please complete the following information):

production
Ethereum Mainnet
Web
Chrome

Adding to the issue above,
For the above safe, The  safes_all-transactions_list (/all-transactions/) API seems to be returning Multisig transactions in EthereumTxWithTransfersResponse schema instead of SafeMultisigTransactionWithTransfersResponse. This is happening for all transactions with nonce 56 and above.
All the transactions till nonce 55 are returned in SafeMultisigTransactionWithTransfersResponse schema. This is an issue because EthereumTxWithTransfersResponse schema doesn't have the nonce field and therefore we are unable to distinguish these  transactions on our app.
Can I know the difference between these two schemas and why they are being used?


[Metrics] AUC reorder is unstable

🐛 Bug

When auc(x, y, reorder=True) is called (True is the default) it reorders the xs and ys. It uses torch.argsort on x internally, which is unstable and does not take the second key y into account when sorting. In some cases this leads to reordering that changes the order of ys in an undesirable way resulting in incorrect metric computation.
fpr = torch.tensor([0.4167, 0.5000, 0.5000,
        0.5000, 0.5833, 0.6667, 0.6667, 0.6667, 0.7500, 0.7500, 0.7500, 0.8333,
        0.9167, 0.9167, 0.9167, 1.0000])
tpr = torch.tensor([0.1111, 0.1111, 0.2222,
        0.3333, 0.3333, 0.3333, 0.4444, 0.5556, 0.5556, 0.6667, 0.7778, 0.7778,
        0.7778, 0.8889, 1.0000, 1.0000])

auc_sk = torch.tensor(sk_auc(fpr, tpr)).float()
auc_reorder = auc(fpr, tpr, reorder=True)
auc_no_reorder = auc(fpr, tpr, reorder=False)

print("Sklearn", auc_sk.item())
print("PTL no reorder", auc_no_reorder.item(), "SK==PTL:", torch.allclose(auc_sk, auc_no_reorder))
print("PTL with reorder", auc_reorder.item(), "SK==PTL:", torch.allclose(auc_sk, auc_reorder))
print("unstable argsort: ", torch.argsort(fpr))

>>> Sklearn 0.324056476354599
>>> PTL no reorder 0.324056476354599 SK==PTL: True
>>> PTL with reorder 0.3240675926208496 SK==PTL: False
>>> unstable argsort:  tensor([ 0,  1,  2,  3,  4,  7,  6,  5,  8,  9, 10, 11, 12, 13, 14, 15])

See an example colab. I'm sure there is a more minimal example possible, this is what I encountered when implementing a different issue.

Expected behavior
Either a stable way of sorting across both x and y or removing the reorder argument entirely.
Environment
Colab.

@teddykoker mind have look? :]

Functional metrics... cc. @justusschock @SkafteNicki

With PyTorch it is hard to have a more stable sorting. Currently. Not sure, if we should actually implement it manually or remove it.
@SkafteNicki do you think we actually need this?

IMO we should probably remove it. Moving forward with the metrics package we should only support features that are stable.

You can assign this to me then. Should I just straight remove it or do you want to deprecate it?

I think rather deprecate it first and then remove it in 1.1 or 1.2


persist & display scores & past solutions

This PR:

show solutions on board for puzzles that were previously won
show CLEAR instead of ENTER on keyboard when puzzle is won to give user ability to clear solution
clearSolution will clear board but not history of game state
for puzzles that have been won in the past but cleared, show as yellow in "choose" menu
show score (e.g. 2/6, 6/6, etc.) next to "choose" menu items for solved puzzles

Some of the bigger changes include:

gameStateList is now an array of objects rather than an array of strings, the object contains game state as well as board state
removes the play function in favor of setInitialGameState which allows game state to be set when playDay(i) is called and when the component mounts (in order to load a previous win's board)
calls to updateCellStatuses and updateLetterStatuses have been centralized into a useEffect hook rather than being duplicated from the new logic
Keyboard receives two new props to allow the ENTER key to double as a CLEAR key when a puzzle is won so users can clear past solutions if they want to play again. I made this choice as there didn't seem like another good piece of real estate where a "Clear Solution" button could live without disrupting the flow of the current UI. With the red coloration of the CLEAR key, hopefully this feels intuitive to users. Let me know if you have other suggestions on this.

Thanks! Let me know what you think or if you have any questions.
closes #21
closes #29

@DevangThakkar I'm going to spend some time this evening also implementing #21, however wanted to get this open and get some initial feedback whenever you have the time.
some of the bigger changes include:

gameStateList is now an array of objects rather than an array of strings, the object contains game state as well as board state
removing the play function in favor of setInitialGameState which allows game state to be set when playDay(i) is called and when the component mounts (in order to load a previous win's board)
calls to updateCellStatuses and updateLetterStatuses have been centralized into a useEffect hook rather than being duplicated from the new logic
Keyboard receives two new props to allow the ENTER key to double as a CLEAR key when a puzzle is won so users can clear past solutions if they want to play again. I made this choice as there didn't seem like another good piece of real estate where a "Clear Solution" button could live without disrupting the flow of the current UI. With the red coloration of the CLEAR key, hopefully this feels intuitive to users. Let me know if you have other suggestions on this.

Thanks! Let me know what you think or if you have any questions.

Thanks for working on this! I'll take a look and test it out!

@no-stack-dub-sack I'm getting this error on entering the correct word (or six wrong guesses with 'playing' instead of 'won') .
App.js:400 Uncaught TypeError: Cannot create property 'board' on string 'won'
    at App.js:400
I'm on the no-stack-dub-sack:feat/past-win-history branch.
Have you faced this error before? Can you test it out? If it works for you, can you clear the local storage (running localStorage.clear() in the console is one way) and see if it still works?

@DevangThakkar please try now... when implementing this feature, I only considered the local development experience and naively did not consider the regression impact of the changes I was making (specifically to the shape of gameStateList stored in local storage).
Before my most recent commit, local storage would have needed to be cleared for my changes to work, which obviously would've erased a user's past win history. I've addressed these changes in the easiest way possibly, which is to detect if gameStateList is still an array of strings, and if so, perform a one-time update to the new shape so the rest of the code will work. Obviously if I'd considered this from the beginning, I likely would've added a new local storage item to track board state, so if this "one time update" solution feels icky to you, I can refactor to approach it this way instead. I've done some testing switching from master (with plenty of gameStateList already in local storage) to the new branch and it does seem to be working well.
Some choices were made as far as past wins before this feature was implemented:

If a user solved a puzzle before we tracked board state in local storage, show the answer on the first row (since we don't know how many guesses it took them to win)
Along the same lines, as far as #21 is concerned, if a user solved a puzzle before we tracked board state, don't show the score next the the puzzle in the menu (we'll only show the score for puzzles solved after this was implemented)

I think this looks good - I've tested all potential cases that might cause an issue and I've not found anything that breaks. Thank you so much for working on this, I really appreciate your help!


Labels

Add labels on bars, and tweak colours slightly for a slightly more subdued look.

How about including the master values as well? I know it's redundant but it would make it easier to imagine the diff. Maybe "0.018 -> 0.022". Depending on how long the bar is you could either do it like you do now or move the text inside the bar.

@letmaik I did try that (if you scroll around the closed PR you will see it), but it looked very busy and I did not find a way to fix it. I am now wondering if putting the reference value in the labels on the left would be better/
I'm slightly wary of the -> notation in particular because although that's accurate now, once we move to an ewma it's a bit more complicated than a direct transition.
Putting the text inside the bars is only possible when they are big enough, it involves a bunch of extra computation and means that we won't have a consistent display, so I'm not super fond of it. I can be done though.

OK let's leave it like it is for now. Displaying a single reference value for ewma probably doesn't make much sense anyway.


[feature](alter colocate group) Support alter colocate group replica allocation

Proposed changes
Support alter colocate group's replica allocation.

SQL command:   ALTER COLOCATE GROUP [database.]group SET ("replication_allocation" = "...").

Colocate group belongs to a database, but if its name starts with __global__, then it's a global group, and does not belong to any database;

After alter group schema's replica allocations,  also modify all the group's related tables's  propertities default.replication_allocation and dynamic.replication_allocation,  also modify all the table's existing partitions's replica allocations;

Further comments
If this is a relatively large or complex change, kick off the discussion at<EMAIL_ADDRESS>by explaining why you chose the solution you did and what alternatives you considered, etc...

run buildall

run buildall

run buildall

run buildall

run buildall

run buildall


Issues Templates Ready

Closes #33
There are 5 issue templates-

Bug report issue template
Documentation report issue
Feature request issue
Styling request issue
Other issue

@piyushkdas0611 please review this pull request and requested to merge it under hacktoberfest 2023


Explain how to achieve read-only management user

Explain how to achieve read-only management user. This is the proposed solution to an issue raised in rabbitmq-server https://github.com/rabbitmq/rabbitmq-server/issues/10526 .

I've finished this PR in https://github.com/rabbitmq/rabbitmq-website/commit/f6ad08014d21f976887c6aff6744db0020835eba and merged it manually while @MarcialRosales is away for a couple of weeks.


🎁: SCR add new Change Category value

Expected outcome
Castberg wants to add one more change cateogry

@JoneUE  Need information regarding workflow and roles, same as Transfer to offshore pre/after DG4?

@Jossilainen Same Workflow

Done


Replace URL and use vscode.URI on local paths

This PR fixes #11602
Using Node.js url for reading local paths on macOS and Linux was causing issues.
This PR replaces the Url module and uses vscode uri for reading local paths which is cross platform compatible.

Coverage decreased (-2.5%) to 37.74% when pulling 51ba91c949a6103303c66e92eb8ea8e68767fbfa on bavaldez/dev into 694f34a4cd369b061c74737dc6eeb4c970bd542d on main.


Composer update fails without environment

The php artisan optimize line in composer.json fails when the default database credentials are invalid.
The use case: I've got a 'development' environment set up and am just using that. Because I don't know the production credentials yet, I haven't put anything into /app/config/database.php. When I run composer update, it invokes php artisan optimize, which fails with PDOException: SQLSTATE[28000] [1045] Access denied for user 'root'@'localhost' (using password: NO) because the creds in the default database.php aren't correct. And it's not possible to call composer update with an environment variable set up, as far as I can see...

Thanks taylor otwell's tip, solved my problem here, old topic, but always current problems for those who are starting with this framework, thanks


Fix write permission issue

Signed-off-by: jingfu wang<EMAIL_ADDRESS>Please specify the area for this PR
Index server
What does does this PR do / why we need it:
This PR fixes the write permission issue during the index server startup phase
Which issue(s) this PR fixes:
Fixes https://github.com/devfile/api/issues/458
PR acceptance criteria:

[x] Test (WIP)

[x] Documentation (WIP)

How to test changes / Special notes to the reviewer:

@johnmcollier Can you please quickly review this?


Branching logic and activity not working

Protocol: https://danielmlow.github.io/WellBeingStudy
Reproschema-library (I'm using a fork): https://github.com/danielmlow/reproschema-library
(1) After audio_check it does not advance to Demographics activity when I click Next.

It just hangs here:

If you click on the Demographics activity from the landing page you can access it.
When you finish Demographics activity, it does go to the Mental Health activity. So this tells me the issue is in the Demographics activity, right?
(2) Within Demographics activity, for most of the items that have an Other option, it should open a new item "Please specify" only if the person chooses  "Other". However, it always goes to the "Other" item (value -1). So if you click on one of the responses, it still goes to the "Other" item (value -1) when it shouldn't

Here again:

So I don't think the item.includes(-1) is working.
Possible issues:

item.includes(-1) is not the right way to do it when multipleChoice = true?
valueType: is it supposed to be integer, string, or anyURI? See here
schemaVersion is rc4? see here
Are negative values allowed like -1?

I've played around with this all weekend but can't seem to fix it.
This is pretty urgent.
Thanks!

this is fixed now. please check and close the issue.


Updating a completely empty global-package cache with dotnet nuget push results in an outdated package structure

If the global-package cache directory already contains any folder with a valid NuGet v3 package structure (with a *.nuspec file, etc.) then pushing the new package results in a correct installation of the package in the directory structure.
On the other hand, if the global-package cache directory is empty, then pushing the new package results in a plain copy of the *.nupkg file (flat directory structure ≙ v2).
A flat structure will result in inferior performance (https://docs.microsoft.com/en-us/nuget/hosting-packages/local-feeds).

[x] Will latter packages continue using the v2 structure, or will regular resolved packages use the v3 structure?

dotnet restore results in resolving any package to the v3 structure.

IMHO, a totally empty global-package cache is a rare occurrence. In case of pushing a plain nupkg file, we don't break the global-package cache for further usage.
Therefore, an immediate fix isn't necessary.


Parens Break Link Frag anchoring

Describe the bug
Parenthesis '(' and ')' characters in a Level 2 Heading are not screened out when the link fragment is creating, causing a linting error.
To Reproduce

Create a Level 2 heading with parenthesis i.e. ## Ahead Of Time (AOT) Compilation
Open Command Palette and select Create Table of Contents.
Note the Lint Warning under the new link fragment.

Expected behavior
The '(' and ')' characters must be screened-out when the Link Fragment is generated. The characters are legal in the Heading and in the Link Fragment title.
Screenshots
none.
Environment

Version: 1.93.1 (user setup)
Commit: 38c31bc77e0dd6ae88a4e9cc93428cc27a56ba40
Date: 2024-09-11T17:20:05.685Z
Electron: 30.4.0
ElectronBuildId: 10073054
Chromium: 124.0.6367.243
Node.js: 20.15.1
V8: <IP_ADDRESS>-electron.0
OS: Windows_NT x64 10.0.22631

Additional context
none.

Closed with PR #36


codeql-container MCR / Tag Listing

This codeql-container is a fantastic tool for making the execution of codeql and necessary dependencies simple. However I'd like to pin to a particular version to prevent breaking changes (i.e. such as the introduction of a non-root user). I'm struggling to find the associated tagging strategy... I see some images with dates and iterations: 2022-05-29_07.15
I'm not particular about what the strategy should be, just that I can easily reference and identify tags for specific images when needed. That is difficult today unless you pull down all images (which is a lot and are massive). Tags are not available for reference on Dockerhub... and I was hoping I'd find this in the MCR catalog - but don't see it there either.
Is it possible to get this exposed on MCR to be able to view tags?
https://mcr.microsoft.com/en-us/catalog
Can the tags be associated to releases when publishing a new version to be visible on GitHub (if not available to publish in MCR catalog)?

+1 Experienced breaking changes from the recent update (last 2 weeks) and would appreciate tagged versions of the container to ensure stability downstream.

Agreed, I also experienced two major breaking changes in the last upgrade:

Ubuntu upgrade broke .NET installation
Script permissions were off, failing general usage

That being said, the nature of these "weekly" update cadences for latest queries and CLI does mean we need a regular image tag that is updated that we can pull without updating the image tag all the time. To that end, perhaps some type of semantic versioning can be done with major versions. Weekly updates just push out new patches to that version. We can pin to the major version only (and collect patches automatically as they come out). This would enable a process for breaking changes as well by bumping the major version tag your pinned too.