Check for redundant bytes/bytearray unions, etc

https://docs.python.org/3/library/typing.html#typing.ByteString

ByteString is a bit of a dud and I rarely if ever see it used. If we ever decide to use it in typeshed we should confirm type checkers handle it as expected.

Sorry, I should have been clearer. I'm just suggesting that if a user writes bytes | bytearray, or bytes | memoryview, we should tell them to just use bytes instead. I'm not particularly interested in using typing.ByteString, but I think we should be consistent about this sentence in the docs for ByteString:

As a shorthand for this type, bytes can be used to annotate arguments of any of the types mentioned above.

I tried implementing this and it seems like it would be a bad idea, so I'll close this.


shellenv: only echo PATH exports if not already in PATH

[x] Have you followed the guidelines in our Contributing document?
[x] Have you checked to ensure there aren't other open Pull Requests for the same change?
[x] Have you added an explanation of what your changes do and why you'd like us to include them?
[ ] Have you written new tests for your changes? Here's an example.

[x] Have you successfully run brew typecheck with your changes locally?
[x] Have you successfully run brew tests with your changes locally?

Addresses #15525
Checks for inclusion of ${HOMEBREW_PREFIX}/{bin,sbin} in PATH before echoing PATH-altering commands in fish/csh/pwsh/etc

I can't think of anything that would break with two or more non-consecutive instances of Homebrew paths in the same PATH, except perhaps the hearts of OCD users. This, however, takes away the option of simply running brew shellenv again to "put Homebrew first, no matter what's already in PATH", which is a very useful feature when you need it.

Yes, mildly against this change for the reason quoted above. Though I'm also open to trying it to see if someone complains (won't be me). But, it may also just be better to be safe and gate the PATH check behind a flag.

I'd like to export $HOMEBREW_PREFIX specifically because we have people on both Intel and Apple Silicon macs and I'm trying to write scripts for them that run on both and I've been using the shellenv command to set that up instead of maintaining my own logic to do it.

If you just need HOMEBREW_PREFIX, and are willing to assume brew is already in PATH, you can query this using brew --prefix, e.g.,
export HOMEBREW_PREFIX="${HOMEBREW_PREFIX:-$(brew --prefix)}"

Thanks for all the feedback, all. I think I will close this as what I want it to do sounds like a breaking change.
@carlocab to your last point, that is precisely the chicken-and-egg problem I am looking to solve. I am trying to create a bash/zsh profile that my colleagues can use to ensure things like brew, rbenv, pyenv, etc are all set up correctly. I'm trying to design the profile under the assumption that nothing is available.
I'm also a little confused why the script needs to exit early if it detects if it's been run before because I assumed its intent is to be used as part of a shell profile which almost always runs exactly once per session, but I concede that my understanding might be incomplete here.


Patch record types compatibility

Considering the new Patch implementations:
This works: Patch({a:Table({a:1,b:1}),b:Blank()},{b:1})
This doesn't: Patch({a:Table({a:1,b:1}),b:If(false,1)},{b:1})

This was open before the final push.


Prod90

Add statistics for idr0088 as well as combined stats for prod90.
As confirmed by @dominikl and myself, the default stats.py failed on idr0088 as the omero fs usage call errored with a graph exception. I went for the quick approach of getting the raw data numbers (size and number and files) using find -type f | wc -l and du -csb as the raw data is well self-contained.

The figures look plausible to me 👍

Note that Travis took a long time to build so switching to GHA like https://github.com/ome/blog/pull/68 might be coming imminently.


emit to a single module instead of broadcasting

Hi guys,
this is just a question issue about having different instances of the same module and trying to emit an event to an specific instance instead of broadcasting it to all running instances. A way to do it could be achieved by matching the module and the event data in the context.broadcast method with an identifier so it would be possible to ensure than a broadcast is actually sent to an specific instance but not to all of then (which makes it not to actually be a "broadcast"), but it adds extra work. Let me give you an example.

Application.addModule('foo', function(context) {

    const MODULE_ID = context.getElement().dataset.id;

    return {
        messages: ["helloFoo"],
        onmessage: (name, data) => {

            if(!data.id || data.id === MODULE_ID) console.log(data.text);

        },
        init: function() {
            console.log('foo');
        }
    };
});

Application.addModule('bar', function(context) {
    return {
        init: function() {

           // Send to just foo module with id 1
            context.broadcast('helloFoo', {text:'helloFoo', id: "1"});

          // Send to just foo module with id 2
            context.broadcast('helloFoo', {text:'helloFoo', id: "2"});

         // Send to all foo modules
            context.broadcast('helloFoo', {text:'helloFoo'});
        }
    };
});

other possible way could be this ...
Application.addModule('foo', function(context) {

    const MODULE_ID = context.getElement().dataset.id;

    return {
        messages: ["helloFoo.1", "helloFoo.2"],
        onmessage: (name, data) => {

           let [name, id] = name.split('.');

            if(!id || id === MODULE_ID) console.log(data.text);

        },
        init: function() {
            console.log('foo');
        }
    };
});

Application.addModule('bar', function(context) {
    return {
        init: function() {

           // Send to just foo module with id 1
            context.broadcast('helloFoo.1', {text:'helloFoo'});

          // Send to just foo module with id 2
            context.broadcast('helloFoo.2', {text:'helloFoo'});

         // Send to all foo modules
            context.broadcast('helloFoo', {text:'helloFoo'});
        }
    };
});

Sorry guys if I'm missing some basic stuff here, but there's a way to do it  without having to worry about ids, some emit method instead of a broadcast, how do you guys manage this stuff ? or is this approach totally wrong and should it be managed by stopping and starting modules ?
Thanks so much

Messages are specifically designed to not target a single module, so the reason you're having trouble is because this isn't the way the system is designed to work. What you're doing is akin to a remote procedure call that tightly couples the two modules together, and T3 is designed to avoid such tight coupling. If you need that level of direct interaction, you probably want to combine the modules into a single module to keep it self-contained.

Hi @nzakas, thank you for the answer, but do you mean then that modules are designed to be instantiated just once, as a singleton ?  I'm facing the problem of having a module lets call it info that I want to reuse, and then another module save with a save button than will trigger the entity info validation, but I do not want that from triggering validations on all modules.

Entity Name

       <button>Save Entity</button>

Entity Name

       <button>Save Entity</button>

So now, when clicking on Save Entity that shall broadcast a validate message which are going to be received by the entity module, validating it and in case it is right, broadcast another message save received by save module which will save it. This is, as you can figure out, not right as the message will be received by all entity and save modules, so lets combine those modules into one simply named as  entityand manage this by events API instead of message API.

Entity Name

       <button>Save Entity</button>

Entity Name

       <button>Save Entity</button>

But then if in the future, I do need to extend some of those entity modules(see below), I'll be duplicating logic in entity module and another_entity module as both, for instance, need to handle logic for the save button. So here is where behaviours come handy to share that same logic? and message API should be only used to let modules know about something has going on in the system to let them take some action if required. is it right ? sorry if all of this sounds too crappy and thanks again.

Entity Name

       <button>Save Entity</button>

Entity Name

       .... whatever

       <button>Save Entity</button>

Not sure about your usecase, but you could built an API/SDK service that handles save. Then you wouldn't actually broadcast any messages and just use the service directly from whatever module verified your form.
if (verified) {
  api.save(formData);
}

yep, sure, save is managed by a service, but point is where do you call this method from, I do not want to duplicate that service method calls, I guess that behaviours is a good way to put this stuff.
thanks so much for you help!


Update RNWalletModule.m

Fix for presenting view controller on the main thread, was not running on the main thread and not launching initially printing out an error on xcode

Thanks zirkc, can you indent the code in between for readability?


Fix: "Use metric units" toggle has no effect and simplify sensor creation

Fix: https://github.com/DurgNomis-drol/ha_toyota/issues/217

Hi @DurgNomis-drol, it would be great if we could merge this before adding new sensors (e.g. https://github.com/DurgNomis-drol/ha_toyota/issues/222) as it includes some significant improvements to the sensor creation. Especially when dealing with metric vs non-metric units. 😉


Casminst 4289 1.2 Revised password, ssh key, and timezone change for k8s-image and ceph-image

Summary and Scope
CASMINST-4289-1.2 Revised password, ssh key, and timezone change for k8s-image and ceph-image
Revised procedures to change the NCN images (k8s-image and ceph-image) to be done from PIT node or later when PIT node is not available. Both procedures will change the root password, ssh keys and authorized_keys for root, and optionally change the timezone.
The install procedure now refers to this procedure as the security best practices recommended method to change the root password from the PIT node before deploying any of the other NCNs.
Added image changing to the Upgrade procedure and changed non-PIT operational procedure to also do a BSS update and recommend a Rolling Rebuild (if not doing a CSM upgrade)
Issues and Related PRs
This also address timezone procedure issue from CASMINST-3959
And root password change in image issue from CASMINST-4274
Testing
Tested ssh-keygen commands in isolation since that part of the procedure was incorrect.
Tested timezone change commands as part of draft documentation at customer site for CASMINST-3959
Tested on:
Test description:
Risks and Mitigations
Pull Request Checklist

/backport release/1.2.5

/backport main

/backport release/1.2.5

/backport main


Define YP_EXPORTED_FUNCTION as empty

We are currently leaking YARP symbols in Ruby 3.3 (Ruby head):
$ nm libruby.3.3-static.a | grep yp_parser_init
000000000000000c T _yp_parser_init
000000000002a393 s l___func__.yp_parser_init

This is not good because if we use Ruby 3.3 to compile YARP as a C
extension (for example installing the YARP gem), the linker gets
confused and ends up prioritizing the symbol found in Ruby rather than
the one from the Gem.  This means the C extension can end up calling in
to yp_parser_init in Ruby rather than the new one shipped with the
extension.
If I use current Ruby head to compile YARP in this repository, nm will
show that yp_parser_init is not defined:
$ nm lib/yarp.bundle | grep yp_parser_init
                 U _yp_parser_init

This is because the linker got confused about the leaked symbols.
I would like to default all functions to not be external.  This hides
the symbols and fixes the problem with Ruby and YARP as a gem.  If I
apply this patch to Ruby, build Ruby, then build YARP, yp_parser_init
is defined in the Gem:
$ nm lib/yarp.bundle | grep yp_parser_init
00000000000162f8 t _yp_parser_init
000000000002d8ac t _yp_parser_init.cold.1
000000000002d8d4 t _yp_parser_init.cold.2

/cc @flavorjones
Related to #1110

I think at this point with this PR you can just remove the whole macro. If the point is that nothing should be exported let's get rid of the whole thing and just keep visibility hidden.

We need the symbols to be exported for the dynamic library, for Fiddle/FFI: https://github.com/ruby/yarp/pull/1112

Could Ruby define YP_STATIC to avoid exporting the symbols? Or use the librubyparser.a?

Yeah, just for the record: https://github.com/ruby/yarp/pull/1069 set up compilation so that compiling with -DYP_STATIC would hide symbols. This is how librubystatic.a is being built on yarp:main right now.
It seems like we have two options:

upstream in Ruby, make sure YARP is compiled with -DYP_STATIC
make static (hidden symbols) the default (what this PR chooses to do)

I don't care which; but if we choose 2 then we need to make sure librubyparser.so is being built so that symbols are shared, which this PR isn't doing:
$ nm build/librubyparser.so | fgrep yp_parse
0000000000021780 t yp_parse
0000000000021800 t yp_parse_serialize
00000000000216d0 t yp_parser_free
0000000000021440 t yp_parser_init
0000000000005620 t yp_parser_local_depth.isra.0
0000000000005550 t yp_parser_parameter_name_check
00000000000216b0 t yp_parser_register_encoding_changed_callback
00000000000216c0 t yp_parser_register_encoding_decode_callback

Compare that output to what gets built on main right now:
$ nm build/librubyparser.so | fgrep yp_parse
0000000000021830 T yp_parse
00000000000026d1 t yp_parse.cold
00000000000219f0 T yp_parse_serialize
0000000000021780 T yp_parser_free
00000000000214f0 T yp_parser_init
0000000000005820 t yp_parser_local_depth.isra.0
0000000000005750 t yp_parser_parameter_name_check
0000000000021760 T yp_parser_register_encoding_changed_callback
0000000000021770 T yp_parser_register_encoding_decode_callback

Yeah I'd be totally fine to change the default, just as you said the .so should have exported symbols, the rest shouldn't.

2. make static (hidden symbols) the default (what this PR chooses to do)

Yes, I'd like to do this one because I don't really want to modify the build system in Ruby.

Closing since #1110 shipped


Hydrogen pairing is recorded in section 3

Hydrogen pairing is recorded in section 3. This is correct for HELM1, but HELM2 changed the location of hydrogen pairing information. See extract from section 5.3 of the specification below:
In HELM specification 1 and 1.1, the section number 3 was used for the list of hydrogen pairings instead of the polymer groups. The hydrogen pairings are now stored in the connection section (number 2) since hydrogen bonds are now recognized as a special form of connection.

Fixed in 2017-12-1 update

Confirmed fixed. Thanks.


Use FileUploadDenied error instead of InternalError

Jira issue:
https://glia.atlassian.net/browse/MUIC-639
Additional info:
Show proper error message when file uploading for visitor is disabled from Glia Hub side
Screenshots:

Looks good - might need to hide the attachment button if it is disabled in first case?

We will introduce the feature to hide the attachment button based on Site configuration soon.


Cell value limited to 255 characters?

I'm reading data from an .xlsx file. But it seems that all cell values are truncated after 255 characters:
return row[colIndex].Value.ToString();
Is there anything I can do to get all data from my cells?

Can you provide a sample of what you're trying to read. Just did a test and it worked passed 255 characters.

Please include sample code, and an .xlsx file that exhibits this behaviour. I can't reproduce it.

Possible dupe of #150.


Custom Class Annotations

Hello,
Is it possible to add custom annotations to properties within an object? There are a few Microsoft specific properties I need to add to my Open API definition, but it appears that this library does not recognize them, or I am doing it wrong.
Here is my class:

Here is the output OpenAPI JSON:

Ideally, the output would contain special Microsoft properties. Please let me know if this is possible.
Thank you.

@jdusome Do you want these annotations <x-ms-notification-url> to show up as https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#specificationExtensions ? If so you can achieve that my writing a custom filter class that derives from https://github.com/microsoft/OpenAPI.NET.CSharpAnnotations/blob/master/src/Microsoft.OpenApi.CSharpAnnotations.DocumentGeneration/OperationFilters/IOperationFilter.cs
And passing it to the libarary for an example take a look at test case GetTestCasesForPassANewFilterAndShouldReturnCorrectDocument in https://github.com/microsoft/OpenAPI.NET.CSharpAnnotations/blob/master/test/Microsoft.OpenApi.CSharpAnnotations.DocumentGeneration.Tests/OpenApiDocumentGeneratorTests/OpenApiDocumentGeneratorTest.cs

I think that is precisely what I am looking for, I will give that a shot and get back to you if I have any questions regarding the custom filter. Thank you.

@Shwetap05 I was able to successfully use an Operation Filter to get some of the custom Microsoft extensions into the Open API document.  Thank you very much for your response. Is it possible to do something similar for the Schemas that are generated? In my original post, I am referring to the object that is returned from an operation. The library is currently able to import the summary, although it would be really nice if I could also import additional elements as well.

@jdusome can you please provide more details on what additional elements you want included in schema?

Certainly! In the original screenshot, you can see that I created the XML style comments on my PortalUserRegistrationSubscribeRequest object. It generates the second screenshot in the Open API definition, though I would like to generate the following:

(Notice the custom x-ms attributes on the callBackUrl property)
I was able to accomplish this for the operations using an Operation Filter as you suggested, but I would like to accomplish something similar for the Schemas that being generated.


Merge These Example Programs Into The Main Codebase

This library can be somewhat difficult to understand how to use (its not immediately clear how to use the functions in it with only the C++ SDK as a guide (https://docs.microsoft.com/en-us/previous-versions/windows/kinect/dn799271(v=ieb.10)), so additional example programs would be useful for familiarising programmers with the workings of the library. I've included below basic demonstration programs on how to save kinect data, and get 3D positions from pixel values, in the hope that other new starters might find it useful. Would it be possible to incorporate them into the examples folder?
In addition, given this project does not seem to be actively developed, if anyone else has example programs they think new starters might find useful, commenting them here could help make this thread itself a useful resource for people trying to figure out how to use the library.
import numpy as np
import cv2
import pickle
import time
import datetime

from pykinect2 import PyKinectV2
from pykinect2.PyKinectV2 import *
from pykinect2 import PyKinectRuntime

def save_frames(FILE_NAME):
    #records and saves colour and depth frames from the Kinect

    print("Saving colour and depth frames")

    # define file names
    depthfilename = "DEPTH." + FILE_NAME +".pickle"
    colourfilename = "COLOUR." + FILE_NAME +".pickle"
    depthfile = open(depthfilename, 'wb')
    colourfile = open(colourfilename, 'wb')

    #initialise kinect recording, and some time variables for tracking the framerate of the recordings
    kinect = PyKinectRuntime.PyKinectRuntime(PyKinectV2.FrameSourceTypes_Color | PyKinectV2.FrameSourceTypes_Depth)
    starttime = time.time()
    oldtime = 0
    i = 0
    fpsmax = 0
    fpsmin = 100

    display_type = "COLOUR"
    #display_type = "DEPTH"

    # Actual recording loop, exit by pressing escape to close the pop-up window
    while True:

        if kinect.has_new_depth_frame() and kinect.has_new_color_frame() :
            elapsedtime = time.time()- starttime
            if(elapsedtime> i/10):

                #Only for high i try evalutaing FPS or else you get some divide by 0 errors
                if i >10:
                    try:
                        fps =  1/(elapsedtime - oldtime)
                        print(fps)
                        if fps> fpsmax:
                            fpsmax= fps
                        if fps < fpsmin:
                            fpsmin = fps

                    except ZeroDivisionError:
                        print("Divide by zero error")
                        pass

                oldtime = elapsedtime

                #read kinect colour and depth data (somehow the two formats below differ, think one is and one isnt ctypes)
                depthframe = kinect.get_last_depth_frame() #data for display
                depthframeD = kinect._depth_frame_data
                colourframe = kinect.get_last_color_frame()
                colourframeD = kinect._color_frame_data

                #convert depth frame from ctypes to an array so that I can save it
                depthframesaveformat = np.copy(np.ctypeslib.as_array(depthframeD, shape=(kinect._depth_frame_data_capacity.value,))) # TODO FIgure out how to solve intermittent up to 3cm differences
                pickle.dump(depthframesaveformat, depthfile)

                #reformat the other depth frame format for it to be displayed on screen
                depthframe = depthframe.astype(np.uint8)
                depthframe = np.reshape(depthframe, (424, 512))
                depthframe = cv2.cvtColor(depthframe, cv2.COLOR_GRAY2RGB)

                #Reslice to remove every 4th colour value, which is superfluous
                colourframe = np.reshape(colourframe, (2073600, 4))
                colourframe = colourframe[:,0:3]

                #extract then combine the RBG data
                colourframeR = colourframe[:,0]
                colourframeR = np.reshape(colourframeR, (1080, 1920))
                colourframeG = colourframe[:,1]
                colourframeG = np.reshape(colourframeG, (1080, 1920))
                colourframeB = colourframe[:,2]
                colourframeB = np.reshape(colourframeB, (1080, 1920))
                framefullcolour = cv2.merge([colourframeR, colourframeG, colourframeB])
                pickle.dump(framefullcolour, colourfile)

                if display_type == "COLOUR":

                    #Show colour frames as they are recorded
                    cv2.imshow('Recording KINECT Video Stream', framefullcolour)

                if display_type == "DEPTH":

                    #show depth frames as they are recorded
                    cv2.imshow('Recording KINECT Video Stream', depthframe)

                i = i+1

        #end recording if the escape key (key 27) is pressed
        key = cv2.waitKey(1)
        if key == 27: break
    cv2.destroyAllWindows()

if __name__ == "__main__":
    currentdate = datetime.datetime.now()
    custom_name = input("Enter a file name: ")
    file_name = custom_name + "." + str(currentdate.day) + "." + str(currentdate.month) + "."+ str(currentdate.hour) + "."+ str(currentdate.minute)

    #Save colour and depth frames
    save_frames(file_name)

import numpy as np
import pickle
import cv2
import ctypes
import os
parentDirectory = os.path.abspath(os.path.join(os.getcwd(), os.pardir))

from pykinect2 import PyKinectV2
from pykinect2.PyKinectV2 import *
from pykinect2 import PyKinectRuntime

#REMEBER TO HAVE A KINECT CONNECTED (OR KINECT STUDIO REPLAYING A RECORDING) WHEN RUNNING, EVEN THOUGH WE ARE OPERATING OFF SAVED DATA!
def get_3D_coordinates(filename, show_each_frame = False):
    """saves the 3D positions of a list of 2D pixel positions in the colour image. Correspodning depth data stored in DEPTH.filename.pickle"""

    #Define a list of 2D coordinates you want to locate
    colour_image_pixels_to_locate_list = [[880,555], [1440,200]]

    #Start a kinect (NEED TO CONNECT A KINECT or run a recording in kinect studio to make this command work,  even though we are reading saved depth values)
    kinect = PyKinectRuntime.PyKinectRuntime(PyKinectV2.FrameSourceTypes_Color | PyKinectV2.FrameSourceTypes_Depth)

    #Do a bunch of defines required for matching the colour coordinates to their depth later
    color2depth_points_type = _DepthSpacePoint* np.int(1920 * 1080)
    color2depth_points = ctypes.cast(color2depth_points_type(), ctypes.POINTER(_DepthSpacePoint))
    S = 1080*1920
    TYPE_CameraSpacePointArray = PyKinectV2._CameraSpacePoint * S
    csps1 = TYPE_CameraSpacePointArray()

    #load your saved depth data
    depthdatafile = open("DEPTH." + filename + ".pickle", "rb")

    #make list to store the 3D positions in
    pixel_positions_3D_list = []

    #Iterate over each saved frame of depth data
    depth_file_not_finished = True
    while depth_file_not_finished == True:
        try:
            depthframe = pickle.load(depthdatafile) #each call loads a sucessive frame from a pickle file, so we need to do this once per frame

            three_D_pixel_positions_in_frame =[] # list to store the 3D pixel positions from one frame

            #Defines to allow colour pixel mapping to 3D coords to work correctly
            ctypes_depth_frame = np.ctypeslib.as_ctypes(depthframe.flatten())
            L = depthframe.size
            kinect._mapper.MapColorFrameToCameraSpace(L, ctypes_depth_frame, S, csps1)

            #Carry out certain actions if you want an image of where all the tracked points are in the depth data (makes program 20x slower)
            if show_each_frame == True:

                #Note the method on the line below, for finding the corrsponding depth pixel of a single tracked pixel in the colour image, is NOT what I am using to find the 3D position of a colour pixel
                kinect._mapper.MapColorFrameToDepthSpace(ctypes.c_uint(512 * 424), ctypes_depth_frame, ctypes.c_uint(1920 * 1080), color2depth_points)

                cut_down_depth_frame = depthframe.astype(np.uint8)
                cut_down_depth_frame = np.reshape(cut_down_depth_frame, (424, 512))

            #Iterate over the lists of pixel positions in the 2D colour image to locate
            for pixel in colour_image_pixels_to_locate_list:

                #find x and y in pixel position in the 2D colour image
                x = pixel[0]
                y = pixel[1]

                #Find 3D position of each pixel (relative to camera) using Colour_to_camera method, all measurements (x, y and z) in m
                x_3D = csps1[y*1920 + x].x
                y_3D = csps1[y*1920 + x].y
                z_3D = csps1[y*1920 + x].z
                pixel_position_3D = [x_3D, y_3D, z_3D]

                #if show_each_frame flag set,  display the depth data and corresponding points you are reading
                if show_each_frame == True:

                    try:

                        #method below finds 2D depth pixel that corresponds to a 2D colour pixel, for use in the pop up images, to show you what points you are tracking. While it could be used to find 3D joint positions, IT IS NOT THE METHOD I USE OR RECOMMEND FOR FINDING 3D JOINT POSITIONS, as it gives you x and y in pixels not m (z is in mm)
                        read_pos = x+y*1920 -1
                        depth_image_corresponding_x = int(color2depth_points[read_pos].x)
                        depth_image_corresponding_y = int(color2depth_points[read_pos].y)

                        #plot a circle at the pixel in the depth frame that matches the corresponding pixel in the image frame
                        cv2.circle(cut_down_depth_frame, (depth_image_corresponding_x,depth_image_corresponding_y), 5, (255, 0, 255), -1)

                        #note that the value below is NOT used in this code, included just for reference
                        corresponding_depth = depthframe[((depth_image_corresponding_y * 512) + depth_image_corresponding_x)]

                    except OverflowError:
                        #the SDK returns infinity for the depth of some positions, so we need to handle that
                        #I choose to not find the corresponding pixel in the depth image, and so dont plot a circle there, in this case
                        pass

                #Display annotated depth image if flag is set
                if show_each_frame == True:
                    cv2.imshow('KINECT Video Stream', cut_down_depth_frame)

                    #code to close window if escape is pressed, doesnt do anything in this program (as we keep calling for data to be displayed in the window) but included for reference
                    key = cv2.waitKey(1)
                    if key == 27:
                        pass

                #add 3D positions found in this frame to an intermediate list
                three_D_pixel_positions_in_frame.append(pixel_position_3D)

            #add per frame lists of 3D position into a results list
            pixel_positions_3D_list.append(three_D_pixel_positions_in_frame)

       #close loop at end of file
        except EOFError:
            cv2.destroyAllWindows()
            depth_file_not_finished = False

    #return 3D joint position lists
    return pixel_positions_3D_list

if __name__ == '__main__':

    #replace name below with the corresponding section of the name of your saved depth data (for reference, the full name of my saved depth data file was DEPTH.test.<IP_ADDRESS>.pickle)
    three_dimensionsal_positions = get_3D_coordinates('test.<IP_ADDRESS>', show_each_frame =  True)
    print(three_dimensionsal_positions)

Code for stiching saved video frames into video, included for completeness
import cv2
import pickle

def frames_to_video(FILE_NAME):
    """Code to stitch a video based on frames saved in a pickle file"""

    print("stiching colour frames into video")

    #Load first colour frame, to get colour frame properties
    datafile = open("COLOUR." + FILE_NAME + ".pickle", "rb")
    frame = pickle.load(datafile)
    height, width, channels = frame.shape

    #define video properties
    out = cv2.VideoWriter(FILE_NAME + '.avi', cv2.VideoWriter_fourcc(*'DIVX'), 10, (int(width), int(height)))

    #display first frame on a screen for progress (some duplication of later code as first frame needs to be loaded seperately to the rest so we can get the frame dimensions from it)
    out.write(frame)
    cv2.imshow('Stiching Video',frame)

    #Cycle through the rest of the colour frames, stiching them together
    while True:
        try:
            frame = pickle.load(datafile)
            out.write(frame)
            cv2.imshow('Stiching Video',frame)
            if (cv2.waitKey(1) & 0xFF) == ord('q'): # Hit `q` to exit
                break
        except EOFError:
            print("Video Stiching Finished")
            break

    # Release everything if job is finished
    out.release()
    cv2.destroyAllWindows()

if __name__ == '__main__':

    #replace name below with the corresponding section of the name of your saved depth data (for reference, the full name of my saved colour data file was COLOUR.test.<IP_ADDRESS>.pickle)
    frames_to_video('test.<IP_ADDRESS>')

how to plot this 3d points in any scatter plot ?

how to plot this 3d points in any scatter plot ?

Im not sure I understand the question- pixel_positions_3D_list is a list of lists of 3D points. The number of 'sub list's corresponds to the number of colour image pixels specified in colour_image_pixels_to_locate_list. Each individual sublist gives the 3D poistion of said pixel in camera coordinates in each recorded frame.
As for plotting the 3D points in a sublist, you could do that with any common python plotting tool (e.g. https://matplotlib.org/3.1.1/gallery/mplot3d/scatter3d.html)

https://drive.google.com/open?id=1x3xQvYzTp1XmJKhPq-2X2zmJ6dRhRXRL
if you find any error in this then tell me
or any other way of you found then tell me.

I'm somewhat timepressured right now so ive only skimmed through it, but what jumps out at me is that your seem to have defined your own function to find the 3D position from the 2D colour and 1D depth data. The Kinect library has a function for that directly, which I've called in the code above (see             x_3D = csps1[y1920 + x].x
y_3D = csps1[y1920 + x].y
z_3D = csps1[y*1920 + x].z)
It requires a bunch of other things to be defined first, unfortunately i wrote this a while back so I cant recall which of the random things I define at the start of my program were required for this specific function

Check this issue for Creating 3d scatter plots:
https://github.com/Kinect/PyKinect2/issues/82


refactor: get to 100% code coverage

Codecov Report

Merging #14 into master will increase coverage by 1.63%.
The diff coverage is 100%.

@@           Coverage Diff            @@
##           master    #14      +/-   ##
========================================
+ Coverage   98.36%   100%   +1.63%
========================================
  Files           1      1
  Lines          61     58       -3
  Branches       17     15       -2
========================================
- Hits           60     58       -2
+ Misses          1      0       -1

Impacted Files
Coverage Δ

index.js
100% <100%> (ø)

src/index.js

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 f109dee...77e082a. Read the comment docs.


qa_crowbarsetup: Fix debug enablement for proposals

isn't this rather a Fix debug setting for proposals? just confusing because we also have a debug flag for mkcloud itself

@MaximilianMeister good point, changed

thanks, to me it looks good
+1


JsonValue type is extending Array, but it is invalid expression

Bug description

Related issue: https://github.com/samchon/typia/issues/868

Hello, I'm typia developer. For reference, typia is a transformer library which can perform the runtime validation without any extra schema definition. In automatically generates (AoT compilation) the optimal validation logic just by analyzing the TypeScript type in the compilation level.
In today, some user of both typia and Prisma has reported an issue that typia has a bug when validating JsonValue type of Prisma. He said that typia.is<Prisma.JsonValue>([1, 2, 3]) returns false. However, it is not a bug from typia, but a bug from Prisma. Prisma is mis-defining the JsonArray type.
export type JsonValue = string | number | boolean | JsonObject | JsonArray | null;
export type JsonObject = { [Key in string]?: JsonValue };

// THIS IS WRONG TYPE
export interface JsonArray extends Array<JsonValue> {}

Looking at Prisma source code, it is defining JsonArray to extending Array class type.
In that case, TypeScript compiler identifies it as not an Array class type, but an Object type which has some similar methods like Array class (TypeScript calls this type is ArrayLike) with length: number property and [n: number]: JsonValue accessor. Therefore, when user utilizes the JsonArray (JsonValue) type with my typia, bug be occured.
As JsonValue has no Array class type actually in the compiler API side, typia.is<Prisma.JsonValue>([1, 2, 3]) becomes false.
// IF EXTENDS ARRAY
export interface JsonArray extends Array<JsonValue> {}

// SAME MEANING IN THE TYPESCRIPT COMPILER API
export type JsonArray = {
    [n: number]: JsonValue;
    length: number;
};

// AS NO ARRAY TYPE EXISTS, THIS BECOMES FALSE
console.log(typia.is<JsonValue>([1, 2, 3]));

Expected behavior
Hope to change the JsonArray type to be type JsonArray = Array<JsonValue>
This is the right definition, and no problem when running the typia.is<Prisma.JsonValue>([1, 2, 3]) code.
import typia from "typia";

type JsonValue = string | number | boolean | JsonObject | JsonArray | null;
type JsonObject = { [Key in string]?: JsonValue };
type JsonArray = Array<JsonValue>;

console.log(typia.is<JsonValue>([1, 2, 3]));

true

Environment & setup

OS: Windows 11
Database: Postgres
Node.js version: v20.6.1

Prisma Version
prisma                  : 5.3.1
@prisma/client          : 5.3.1
Current platform        : windows
Query Engine (Node-API) : libquery-engine 61e140623197a131c2a6189271ffee05a7aa9a59 (at<EMAIL_ADDRESS>Schema Engine           : schema-engine-cli 61e140623197a131c2a6189271ffee05a7aa9a59 (at<EMAIL_ADDRESS>Schema Wasm             : @prisma/prisma-schema-wasm 5.3.1-2.61e140623197a131c2a6189271ffee05a7aa9a59
Default Engines Hash    : 61e140623197a131c2a6189271ffee05a7aa9a59
Studio                  : 0.494.0

@janpio @Weakky As this issue and related PR had been delayed too much time, I did hard coding on my library.
https://github.com/samchon/typia/pull/1005


Added Windows OS Support

Issue #, if available:
#164
Description of changes:

Added Windows OS Support
Fixed bug that caused autogluon.vision to not detect GPU on Windows, even if CUDA is properly installed
Fixed bug that caused ParallelFoldTraining to not detect GPU on Windows, even if CUDA is properly installed

TODO:

[x] Test CPU + Add CPU install instructions
[x] Test GPU + Add GPU install instructions
[x] Confirm that no pre-reqs are required prior to installing Anaconda (Will do in follow-up, easier to have users test if it is available in pre-release)

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Job PR-1463-1 is done.
Docs are uploaded to http://autogluon-staging.s3-website-us-west-2.amazonaws.com/PR-1463/1/index.html

Job PR-1463-2 is done.
Docs are uploaded to http://autogluon-staging.s3-website-us-west-2.amazonaws.com/PR-1463/2/index.html

Job PR-1463-3 is done.
Docs are uploaded to http://autogluon-staging.s3-website-us-west-2.amazonaws.com/PR-1463/3/index.html

Job PR-1463-4 is done.
Docs are uploaded to http://autogluon-staging.s3-website-us-west-2.amazonaws.com/PR-1463/4/index.html


[AutoPR monitor/resource-manager] typo: monitor/resource-manager/microsoft.insights

Created to sync https://github.com/Azure/azure-rest-api-specs/pull/4717

(message created by the CI based on PR content)

Codecov Report

Merging #3954 into restapi_auto_monitor/resource-manager will not change coverage.
The diff coverage is n/a.

@@                          Coverage Diff                           @@
##           restapi_auto_monitor/resource-manager    #3954   +/-   ##
======================================================================
  Coverage                                     56%      56%
======================================================================
  Files                                       7383     7383
  Lines                                     154597   154597
======================================================================
  Hits                                       86581    86581
  Misses                                     68016    68016

Impacted Files
Coverage Δ

...zure/mgmt/monitor/models/recurrent_schedule_py3.py
50% <ø> (ø)
:arrow_up:

...-monitor/azure/mgmt/monitor/models/response_py3.py
100% <ø> (ø)
:arrow_up:

...re/mgmt/monitor/models/log_search_rule_resource.py
38.46% <ø> (ø)
:arrow_up:

...lert_multiple_resource_multiple_metric_criteria.py
62.5% <ø> (ø)
:arrow_up:

...or/azure/mgmt/monitor/models/recurrent_schedule.py
50% <ø> (ø)
:arrow_up:

...mgmt-monitor/azure/mgmt/monitor/models/response.py
100% <ø> (ø)
:arrow_up:

...tor/azure/mgmt/monitor/models/baseline_response.py
33.33% <ø> (ø)
:arrow_up:

...gmt/monitor/operations/metric_alerts_operations.py
18.32% <ø> (ø)
:arrow_up:

.../monitor/models/calculate_baseline_response_py3.py
55.55% <ø> (ø)
:arrow_up:

...gmt/monitor/models/log_search_rule_resource_py3.py
38.46% <ø> (ø)
:arrow_up:

... and 13 more

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 e16ac3b...3d3321c. Read the comment docs.


Implement query to find times to host a meeting.

query() finds and returns a list of the available times to host a requested meeting by creating time ranges between events and determining whether a meeting can be held in that time.

I love the comments -- they really helped me to understand! What if events are not stored in the order of their start time?

I can't respond to your comment lol but this is a good point! Currently trying to see if I can sort the events in order of start time using TimeRange.ORDER_BY_START. Otherwise, my first commit accounted for events that aren't stored in order but it was a lot less efficient.


ARROW-5100: [JS] Remove swap while collapsing contiguous buffers

Fixes https://issues.apache.org/jira/browse/ARROW-5100
Seems like this is a fairly rare edge case, but really perplexing when it happens. I saw it when manually creating Arrow Columns from data sliced out of an ArrayBuffer pool, and just so happened to get an overlapping + out-of-order set of buffers. I added a test case that demonstrates the issue too.
Description from the issue:

We collapse contiguous Uint8Arrays that share the same underlying ArrayBuffer and have overlapping byte ranges. This was done to maintain true zero-copy behavior when using certain node core streams that use a buffer pool internally, and could write chunks of the same logical Arrow Message at out-of-order byte offsets in the pool.

Unfortunately this can also lead to a bug where, in rare cases, buffers are swapped while writing Arrow Messages too. We could have a flag to indicate whether we think collapsing out-of-order same-buffer chunks is safe, but I'm not sure if we can always know that, so I'd prefer to take it out and incur the copy cost.

Codecov Report

Merging #4102 into master will increase coverage by 2.51%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master    #4102      +/-   ##
==========================================
+ Coverage   87.82%   90.34%   +2.51%
==========================================
  Files         739       74     -665
  Lines       90965     5456   -85509
  Branches     1252     1251       -1
==========================================
- Hits        79894     4929   -74965
+ Misses      10950      519   -10431
+ Partials      121        8     -113

Impacted Files
Coverage Δ

js/src/util/buffer.ts
94.32% <100%> (+0.61%)
:arrow_up:

js/src/ipc/metadata/message.ts
92.99% <0%> (-1.28%)
:arrow_down:

js/src/schema.ts
88.77% <0%> (-1.03%)
:arrow_down:

python/pyarrow/ipc.pxi

cpp/src/arrow/csv/chunker-test.cc

cpp/src/parquet/column_page.h

cpp/src/parquet/bloom_filter-test.cc

cpp/src/arrow/array/builder_decimal.cc

cpp/src/plasma/client.cc

cpp/src/arrow/io/test-common.h

... and 658 more

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 1574b77...0aaf813. Read the comment docs.


created Ray.attachToMesh, Ray.detachFromMesh, Ray.dispose, and fixed …

…issue with Ray.show when ray doesn't have a length
http://www.babylonjs-playground.com/#ZHDBJ#21

http://www.babylonjs-playground.com/#ZHDBJ#22

Just an opinion, but:
Ray is a mathematical concept (at least until now), that was used for culling (hence the place where it is stored). I don't think a render function, dispose, mesh attachment, belongs in the Ray class (maybe a new RayMesh class in the mesh directory).  I haven't followed all changes, so I am not sure when the ray received the render function, but before extending this stand-alone class (that had no dependencies apart from math until now) I think we should consider if it is the right place.

How about I move the show functionality to a RayViewer class and the attachToMesh to Mesh.attachRay?

or instead of AbstractMesh.attachRay, a RayHelper class with attachRayToMesh function?

I think the AbstractMesh class is large enough :)
Why not add an attachToMesh function to the ray(viewer) class? Keep the dependencies (of AbstractMesh) in control?
I like the idea of a RayViewer, I think it is better than adding it to the ray class. For me it is the same difference of Plane (Mesh) and Plane (Math).
But I would wait for other to comment, maybe there is a much better idea I am missing :smile:

Did you see my comment about RayHelper?  I'm liking that idea.

Yeah, I like the idea, I just think that a general user won't find this helper class, so they will never know it exists.
Or, did you mean there is no RayViewer, there is only a RayHelper class? then it is all the same. Just a different name.

then it is all the same. Just a different name.

Right

http://www.babylonjs-playground.com/#ZHDBJ#26


nklib_util:strip fix

nklib_util:strip was only striping (space, CR, LF, TAB) from the front
of a binary or string.  I added a list:reverse then call
nklib_util:striptail that does the same to the end, then returns the
list (reversed again)

It looks like I have included a bunch of files from another sync.
You should reject this one and see if I can do another. :)


iOS/iPadOS Support

Hello!
Are there any plans to support the plugin for iOS/iPadOS? Such a plugin is very lacking :(
Thanks!

hi @soko1  - right now there are no plans for mobile support on either iOS or Android.
i'd like to bring support for this to mobile in the future, but it is a major rewrite, which essentially involves rewriting the entire plugin.
In chatting with the Obsidian maintainers, I'm told that file descriptor based API access like on POSIX-like systems via node is not supported for mobile with Obsidian, so i need to rewrite to use Obsidian's TFile API method and possibly switch the crypto API as well. This means rewriting every function that currently touches a file (most of them) and their tests (almost all tests).
Until i have the time to dedicate to that i won't be able to provide mobile support! Thank you for understanding.


Casecmp order

This should be merged after, or instead of, #2692.

This fixes #2664 so add that in the commit message. But as I wrote in that issue, there are a few more problems that need fixing.
If I change the lower case "a" to an upper case "A" in one of the new spec examples:
    it "autocorrects str.#{selector} == a variable" do
      new_source = autocorrect_source(cop, ['other = "A"',
                                            'str.downcase == other'])
      expect(new_source).to eq(['other = "A"',
                                'str.casecmp(other).zero?'].join("\n"))
    end

it still passes, but that's an auto-correction that changes the semantics of the code.
What I think we should do is to only report an offense if we know that the other value (the one that's not a result of #downcase or #upcase) has the same case. For example:

str.downcase == other.downcase
str.upcase == 'A'

Then we need a new lint cop that warns about expressions such as str.upcase == 'a' always being false.

Then we need a new lint cop that warns about expressions such as str.upcase == 'a' always being false.

This is just one case of thousands where knowledge of what a platform method does can tell you that some expression is redundant. I don't think we can catalog every such case, though. And this particular case does not seem specially significant.

And this particular case does not seem specially significant.

Yes. perhaps you're right about that. A new lint cop might never get anything to report, as it should be a rare phenomenon.

I agree that there are some oddities about the semantics of how this cop works, but it seems as though all oddities are a result of the initial code being bad.
From the earlier example:
    it "autocorrects str.#{selector} == a variable" do
      new_source = autocorrect_source(cop, ['other = "A"',
                                            'str.downcase == other'])
      expect(new_source).to eq(['other = "A"',
                                'str.casecmp(other).zero?'].join("\n"))
    end

This correction will always return false, but that is because the initial code will always return false. It would be nice to be able to warn users about ineffective code, but we would need to come up with a system that is able to infer what kind of object is stored to each variable. Right now, we have no idea what other is, but if we could scan the context of the code, we could determine that it is a string. This could lead to a number of cops being more useful. I have been trying to think of a way to implement a variable lookup for a little while now. My biggest concerns are maintaining context and performance.

This fixes #2664 so add that in the commit message. But as I wrote in that issue, there are a few more problems that need fixing.

Thanks, I didn't know there was an issue for it already. #2692 fixes the issue. This PR adds support for 'a' == str.downcase and handles str.downcase == obj.downcase. I have updated the CHANGELOG accordingly.

it seems as though all oddities are a result of the initial code being bad.

Yes, this has nothing to do with your changes. Sorry I didn't mention that.

It is possible to inline other using clojuresque destructuring:

downcase_eq(node) do |send_downcase, case_method, eq_method, (*, method)|

I like this idea. Unfortunately, this did not produce the same effect as handling the expansion on a separate line, and the line length became too long.

What else bothers me a bit is the name of the variable method. It is not necessary a method, is it? Maybe it should be called maybe_method?

This occurs in many places throughout the RuboCop source. I feel like the majority of the code uses naming that is going to assume the type of the object that we want in the particular place. If we expected method to be a variable, it would probably be named variable instead of maybe_variable

Has to be rebased.


focus: UX on quest

THIS is the most important thing at the moment. Make this work well - and the rest is just a appendix

some improvements done


Only one legend for GridSpace layouts

Issue originally reported in https://github.com/holoviz/hvplot/issues/927
GridSpaces created with hvPlot and with legend are rendered with a legend for every plot of the grid. I think this is because hvPlot sets show_legend=True to every plot of the grid, while it should do it at the GridSpace level only.

Is there any way at all to work around this?

A workaround could be this (but do not sync the muting between the labels)
# Same as #927
import hvplot.pandas
import numpy as np
import pandas as pd

df = pd.DataFrame(
    data=np.random.randn(20, 8),
    index=pd.Index(range(20), name="ind0"),
    columns=pd.MultiIndex.from_product(
        [["lev0_a", "lev0_b"], ["lev1_a", "lev1_b"], ["lev2_a", "lev2_b"]],
        names=["lev0", "lev1", "lev2"],
    ),
)

df = (
    df.stack(level=[0, 1, 2])
    .to_frame()
    .sort_index()
    .rename(columns={0: "col1"})
    .reset_index(level=[1, 2, 3])
)

p = df.hvplot.line(
    x="ind0",
    y="col1",
    by=["lev2"],
    row="lev1",
    col="lev0",
    legend="top",
)

# The workaround
# Remove all legends and make space for legend inside curve
[v.opts(show_legend=False, frame_width=400, responsive=False) for v in p]
# add one legend back inside the curve
list(p)[-1].opts(show_legend=True, legend_position="top_right")
v

o_O interesting. Thanks!
Is there any way at all to sync the muting? Perhaps through Panel instead? I've searched the discourse a bunch but had no luck...

This is a proof-of-concept using pure Bokeh, but it should be possible to use with Holoviews/hvplot, maybe with the use of hooks.
import pandas as pd
from bokeh.io import output_notebook
from bokeh.layouts import column
from bokeh.models import CustomJS
from bokeh.palettes import Spectral4
from bokeh.plotting import figure, show
from bokeh.sampledata.stocks import AAPL, GOOG, IBM, MSFT

output_notebook()

def create_fig():
    p = figure(width=800, height=250, x_axis_type="datetime")
    p.title.text = "Click on legend entries to hide the corresponding lines"

    l = []
    for data, name, color in zip(
        [AAPL, IBM, MSFT, GOOG], ["AAPL", "IBM", "MSFT", "GOOG"], Spectral4
    ):
        df = pd.DataFrame(data)
        df["date"] = pd.to_datetime(df["date"])
        line = p.line(
            df["date"],
            df["close"],
            line_width=2,
            color=color,
            alpha=0.8,
            legend_label=name,
        )
        l.append(line)

    p.legend.location = "top_left"
    p.legend.click_policy = "hide"
    return p, l

p0, l0 = create_fig()
p1, l1 = create_fig()

# Only first plot and first line
l0[0].js_on_change(
    "visible",
    CustomJS(code="dst.visible = src.visible", args=dict(src=l0[0], dst=l1[0])),
)

layout = column(p0, p1)
show(layout)

https://user-images.githubusercontent.com/19758978/230332683-7a8d6794-146a-4f34-8ced-d39e186e2cf5.mp4


dokuwiki: 2023-04-04a -> 2024-02-06

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/dokuwiki/dokuwiki/releases.
meta.description for dokuwiki is: Simple to use and highly versatile Open Source wiki software that doesn't require a database
meta.homepage for dokuwiki is: https://www.dokuwiki.org
Updates performed

Version update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 2024-02-06 with grep in /nix/store/12rbn35xq3cy7f2j5vm1vaapkxj2szxi-dokuwiki-2024-02-06
found 2024-02-06 in filename of file in /nix/store/12rbn35xq3cy7f2j5vm1vaapkxj2szxi-dokuwiki-2024-02-06

Rebuild report (if merged into master) (click to expand)

1 total rebuild path(s)

1 package rebuild(s)

First fifty rebuilds by attrpath
dokuwiki

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/12rbn35xq3cy7f2j5vm1vaapkxj2szxi-dokuwiki-2024-02-06 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A dokuwiki https://github.com/r-ryantm/nixpkgs/archive/0441eb9da3de8b9cfe6e6cc0623e4258f0f405b0.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/0441eb9da3de8b9cfe6e6cc0623e4258f0f405b0#dokuwiki

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/12rbn35xq3cy7f2j5vm1vaapkxj2szxi-dokuwiki-2024-02-06
ls -la /nix/store/12rbn35xq3cy7f2j5vm1vaapkxj2szxi-dokuwiki-2024-02-06/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

dokuwiki

Maintainer pings
cc @1000101 for testing.

@grahamcofborg test dokuwiki

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/dokuwiki/dokuwiki/releases.
meta.description for dokuwiki is: Simple to use and highly versatile Open Source wiki software that doesn't require a database
meta.homepage for dokuwiki is: https://www.dokuwiki.org
Updates performed

Version update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 2024-02-06a with grep in /nix/store/qwhfnxsmcln1656h9wxqvqcdhkkxx16d-dokuwiki-2024-02-06a
found 2024-02-06a in filename of file in /nix/store/qwhfnxsmcln1656h9wxqvqcdhkkxx16d-dokuwiki-2024-02-06a

Rebuild report (if merged into master) (click to expand)

1 total rebuild path(s)

1 package rebuild(s)

First fifty rebuilds by attrpath
dokuwiki

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/qwhfnxsmcln1656h9wxqvqcdhkkxx16d-dokuwiki-2024-02-06a \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A dokuwiki https://github.com/r-ryantm/nixpkgs/archive/f235fcfd5ffa45d9a3e9697473553bc26883710d.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/f235fcfd5ffa45d9a3e9697473553bc26883710d#dokuwiki

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/qwhfnxsmcln1656h9wxqvqcdhkkxx16d-dokuwiki-2024-02-06a
ls -la /nix/store/qwhfnxsmcln1656h9wxqvqcdhkkxx16d-dokuwiki-2024-02-06a/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

dokuwiki

Maintainer pings
cc @1000101 for testing.


Tailwind package safe to use?

Hi this really looks like a fantastic approach to styling components and brings a lot of really good ideas together. I see there's an issue mentioning that the tailwind package will be removed. I'm just wondering if it's advisable to depend on it for a project if that's the case or will it be just moved to another repo. Thanks v much :-)

@allforabit we're planning on removing the Tailwind package from this repo, but I believe @christianalfoni will move it to his personal repo and continue maintaining it from there.

Great thanks @peduarte !


Error caused by empty line in manifest

Issue
A blank line (or even a new line at the end) in a manifest file causes an error in pathlib.Path.glob():
Traceback (most recent call last):
  File "/home/scripsi/project/build/dir2uf2/dir2uf2", line 190, in <module>
    copy_manifest_or_dir(lfs, args.source_dir)
  File "/home/scripsi/project/build/dir2uf2/dir2uf2", line 187, in copy_manifest_or_dir
    copy_files(lfs, source_dir.glob(item), source_dir)
  File "/home/scripsi/project/build/dir2uf2/dir2uf2", line 154, in copy_files
    for src in todo:
  File "/usr/lib/python3.12/pathlib.py", line 1089, in glob
    raise ValueError("Unacceptable pattern: {!r}".format(pattern))
ValueError: Unacceptable pattern: ''

Solution
Test for a non-blank item in the todo list in copy_manifest_or_dir() before passing it to the copy_files() call:
def copy_manifest_or_dir(lfs, source_dir):
    if args.manifest is None:
        print(f"Copying directory: {source_dir}")
        # Walk the entire source dir and copy *everything*
        search_path = os.path.join("**", "*")
        copy_files(lfs, source_dir.glob(search_path), source_dir)

    else:
        print(f"Using manifest: {args.manifest}")
        # Copy files/globs listed in the manifest relative to the source dir
        todo = open(args.manifest, "r").read().split("\n")
        for item in todo:
            if item: # <<< test for non-blank item here!
                parent_dir = pathlib.Path(item).parent
                lfs.makedirs(str(parent_dir), exist_ok=True)
                copy_files(lfs, source_dir.glob(item), source_dir)

System on which error occurred:

Ubuntu 24.04.1 LTS
Python 3.12.3
Cython==0.29.37
littlefs-python==0.12.0
dir2uf2 release 0.0.10

I think this bit me too, I need to work on refining the manifest parsing 😬


Implement memory writing on Windows

https://trello.com/c/MOUVbnjC

Coverage decreased (-6.9%) to 74.737% when pulling f18a1d51b4ab22b4b7ec4058c5c5bbbb3835fa32 on memwrite-w32 into 5e859f1e5631fadc73e79f15658211ded6b1a303 on master.

Coverage decreased (-6.9%) to 74.737% when pulling f18a1d51b4ab22b4b7ec4058c5c5bbbb3835fa32 on memwrite-w32 into 5e859f1e5631fadc73e79f15658211ded6b1a303 on master.

Coverage decreased (-1.6%) to 80.042% when pulling a24f9ffd9a62cb2c14909536b2a0012b2dfce128 on memwrite-w32 into 5e859f1e5631fadc73e79f15658211ded6b1a303 on master.

Coverage increased (+3.003%) to 84.615% when pulling 890bfaed58fe7afbd72a79b8beab4a5f0baf8e48 on memwrite-w32 into 5e859f1e5631fadc73e79f15658211ded6b1a303 on master.


Text garbling happens when the editor's language is set to Japanese

Godot version
4.0alpha15
System information
Windows 10, Vulkan,  NVIDIA Quadro P2000
Issue description
When the editor's language is set to Japanese, some characters are garbled in certain windows, such as:

FileDialog
[
The FileDialog window looks like this in the editor view as well as when you use a FileDialog node in @tool scripts. It doesn't seem to happen when you actually run the scene containing a FileDialog node.

Docs

It's probably due to the font used in these cases not supporting Japanese characters. Also, the issue didn't happen in the older versions.
Perhaps this occurs in some other languages, especially those that use CJK characters, although I haven't tested yet.
Steps to reproduce

Set the editor's language to Japanese and restart the engine
Create a scene, add FileDialog node and see how it looks

Minimal reproduction project
No response

That's a partial duplicate of https://github.com/godotengine/godot/issues/65114 and I think another issue for FileDialog. We have various theme propagation bugs which are being worked on.

#65210 said it will likely fix this issue, but I can still reproduce the FIleDialog issue in 4.0beta1.


Fix mailing list link with relative link

Description
This PR fixes #408
Notes for Reviewers
Signed commits

[X] Yes, I signed my commits.

Your change looks great, @igallup. One small item is to sign-off on your commit. One-time instructions here - https://github.com/layer5io/meshery.io/pull/412/checks?check_run_id=2180969079
Permanent instructions here - https://github.com/layer5io/layer5/blob/master/CONTRIBUTING.md#signing-off-on-commits-developer-certificate-of-origin

Yay, @igallup! 🎈

Thank you!


suite: disable KNP tests when endpoint routes and IPv6 are enabled

disable:

client-ingress-knp
echo-ingress-knp
client-egress-knp
client-egress-expression-knp

as the tests are currently failing with this configuration.
Issue tracked in https://github.com/cilium/cilium-cli/issues/1585.
test run on Cilium main branch: https://github.com/cilium/cilium/actions/runs/4914096880/jobs/8775022204?pr=25194

Asking for an ack from @jschwinger233 given https://github.com/cilium/cilium-cli/issues/1585#issuecomment-1538171255.


Can brackets be optional in if?

if condition {
  instruction;
}

@mhagmajer, isn't it a duplicate of #351 ?


[HTML] Pressing Enter while an input has focus should execute the primary actions

If there is a single primary action (e.g. an single action with its isPrimary property set to true), pressing Enter while an input has focus should execute that action.

See also https://github.com/microsoft/AdaptiveCards/issues/333


Make hovering more consistent

As part of #58, I've been trying to detangle all the state we have and determine valid interactions during different drawing/editing modes. This is a smaller refactoring that changes behavior. I believe it makes it nicer and more consistent, but please evaluate the UX of it.
Before, we draw an outline for stuff on the map when you hover in the sidebar, but not when you hover on the map. And when something is being edited, you can partly change the hover state independently:
https://user-images.githubusercontent.com/1664407/229165708-e1037a25-770a-4e19-89d4-0aa48c9bded6.mp4
With this PR, I'm merging the concept of "currently hovered object" to be just one thing -- whether it's from the sidebar or the map. And when something is being edited, you can't change the hover state.
https://user-images.githubusercontent.com/1664407/229165832-fc4432b2-af68-4ba3-808c-f1854423ffbb.mp4

Also @Sparrow0hawk for review. FYI Robin, Alex doesn't show up in the reviewer list anymore; the new GH teams settings must be wrong

Also @Sparrow0hawk for review. FYI Robin, Alex doesn't show up in the reviewer list anymore; the new GH teams settings must be wrong

Sorry @Sparrow0hawk will update

In terms of improvement to functionality, this is really nice. But thumbs up.

Thanks for the review, going to merge and keep trying smaller incremental steps towards handling draw controls better.


Breps: possible serialisation issues when encoding from Grasshopper?

Might not be an issue, but just to check on this:
Received some breps as a json dump and when deserialising in py, I realised some of the brep value property lists / curve value lists were entirely floats when they should be a mix of floats and ints. I needed to cast to int some of the indices being used to step through the list to deserialise. I haven't had this issue with stuff from Rhino, so am not sure if this is known / expected in GH or not.

I'm guessing we've fixed this already with the new c#/py Brep alignment!! Going to close it but feel free to reopen if i'm wrong.


Add Artis-Lotko to Before I Die

I am adding Artis Lotko to "Before I Die" open source with images and text

Great work, Artis! Thank you for adding your information; it is showing up on the website! I see we are both in the ZTM organization. Right on. Keep learning, and let me know your feedback on this project. Have a great day!


RenderingDataComingFromAPILikeFlatlist

I am trying to render each and every element coming from api in swiper how can I do this? Like flatlist has a Data= {} prop but there is no prop like this in swiper is there a way to do this? kindly help me.

What about something like below?
<Swiper>
     {data.map(item => (
          <View key={item.id}>
               <Text>item.message</Text>
          </View>
     ))}
</Swiper>

What about something like below?
<Swiper>
     {data.map(item => (
          <View key={item.id}>
               <Text>item.message</Text>
          </View>
     ))}
</Swiper>

@MrPocketsss  thanks I will give it a try.

@MrPocketsss  thanks I will give it a try.


Remove and also ignore unnecessary imports

In each library where an import is removed, the library uses some elements
provided by the import, BUT there is another import which provides all of the
same elements, and at least one more which the library uses.
In this change, we remove the imports which can be simply removed in favor of
the other already present imports.
Additionally, I add an ignore to analysis_options.yaml, so that
unnecessary_import can land in Dart. After it lands, we can clean up the
remaining cases in flutter.
See https://github.com/dart-lang/sdk/issues/44569 for more information.
List which issues are fixed by this PR. You must list at least one issue.
https://github.com/flutter/flutter/issues/74381 is improved by this issue. Not fixed.
If you had to change anything in the flutter/tests repo, include a link to the migration guide as per the breaking change policy.
Pre-launch Checklist

[x] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[x] I read the Tree Hygiene wiki page, which explains my responsibilities.
[x] I read and followed the Flutter Style Guide, including Features we expect every widget to implement.
[x] I listed at least one issue that this PR fixes in the description above.
[ ] I added new tests to check the change I am making or feature I am adding, or Hixie said the PR is test exempt.
[ ] I updated/added relevant documentation (doc comments with ///).
[x] I signed the CLA.
[x] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel on Discord.

Failure in Linux flutter_plugins is unrelated.

The check is passing on head, but still failing on a re-run here. This may need a rebase.


Flow can't find 'chai' export expect()/assert()/should()

@samwgoldman if I leverage chai using the customary import for 'expect':
import { expect } from 'chai';

Flow(v0.35.0) carps:
/reusable/utilities/foo.spec.js:14
 14: import { expect } from 'chai';
              ^^^^^^ Named import from module `chai`. This module has no named export called `expect`.

I am leveraging your flow-typed/definitions/npm/chai_v3.5.x/flow_v0.24.0-/chai_v3.5.x.js.
Do I need to add something to that declaration to expose 'expect' or import 'expect' differently?

I have the feeling that flow treats this libdef as a CommonJS module... can you check if you can do:
import chai from 'chai';

const { expect } = chai;

If this works, then we need to declare the module exports differently

@ryyppy I have some good, yet unsatisfactory news.  I can't repeat my issue right now; flow isn't balking at this any longer:
import { expect } from 'chai';

The 'unsatisfactory' part is that prior to attempting your suggestion, I did some npm install.  One of the items I took was<EMAIL_ADDRESS> I went back to<EMAIL_ADDRESS>to see if I could reproduce the issue, but I can't. I'm gonna close this until it happens again.  Thanks for the quick turn around on that.

I guess that's good for now ✨

Hi, I've just hit the same bug today.
I've pushed a branch of a project that exposes it : https://github.com/flegall/monorepo-fullstack-starter/tree/flowtype_482
What's strange is that only the expect function has this problem in my case.
I'm using Jest with Chai Assertions. I've noticed that the behaviour doesn't appear any more when removing the jest definition file (which exposes a global expect method).

I'm running into this issue as well, with the same flow-typed definition. We're using Flow 0.46. Anyone else seeing it?

Deleting jest's flow definition fixed it for me FYI


fix: use websocket to test server liveness before client reload

Description

Closes https://github.com/vitejs/vite/issues/13125
Closes https://github.com/vitejs/vite/issues/16536
Supersedes/Closes https://github.com/vitejs/vite/pull/17768
Related (but this is a separate feature request) https://github.com/vitejs/vite/issues/5675

This PR makes waitForSuccessfulPing more robust by testing Vite server liveness based on websocket connection as suggested in https://github.com/vitejs/vite/issues/5675#issuecomment-1345588419
Testing https://github.com/vitejs/vite/issues/13125

run playground e.g. pnpm -C playground/tailwind dev
run proxy e.g. cloudflared tunnel --url http://localhost:5173/
open a page from proxy e.g. https://arrow-lonely-looks-counsel.trycloudflare.com/
stop playground server and see client keeps pinging (previously client full reloads here and ends up 502 page)
start playground server and see client reloads automatically

Testing https://github.com/vitejs/vite/issues/16536 (this one is added as a test case)

run playground pnpm -C playground/tailwind dev with a following server config  server: {
    // different port for hmr websocket
    hmr: {
      port: 12345
    },
    // cross origin isolation headers
    headers: {
      "Cross-Origin-Embedder-Policy": "require-corp",
      "Cross-Origin-Opener-Policy": "same-origin"
    }

stop playground server and see client keeps pinging
start playground server and see client reloads (previously client fails to automatically full reload here)

My team applied these changes to vite locally and tried it with 5 different Nuxt 3 based applications running behind a traefik based https reverse proxy. This change massively improves the DX for us as we no longer have to constantly full-page reload our apps especially when vite is still booting.
I'd love to see this merged ❤
Thanks @hi-ogawa, this gives us back so much productivity!

Can confirm, this also fixes my issue. I use vite for SSR by adding it to my express server, and I add these CORS headers to my SSR rendered response to get access to performance.now()
        res.status(200).set({
          'Content-Type': 'text/html',
          'Cross-Origin-Opener-Policy': 'same-origin',
          'Cross-Origin-Embedder-Policy': 'require-corp',
        }).end(html);

Before this patch, after a server stop/start or reload, the HMR ping over HTTP would loop forever and fail with a 426 status (what Firefox shows me anyway) and console logs show the request failed due to CORS. I couldn't find any easy way to configure the HMR server to add CORS headers after a solid hour of searching.
Eventually landed here, tried this fix, and it works. Pinging over WS instead of over HTTP certainly makes more sense IMO especially since the target connection is WS anyway; why ping over HTTP when the goal is to get a WS connection set up? Browsers have different rules for HTTP vs WS regarding CORS so pinging over WS removes that entire class of issues.

New test is flaky

Though tests could be flaky, but I added some workaround by skipping some tests and retry.

It passes on my PC even if I enable all tests. Did you try pnpm debug-serve?

/ecosystem-ci run

It passes on my PC even if I enable all tests. Did you try pnpm debug-serve?

On my PC, it happens quite consistently (like 1 in 2 or 3 runs) by running it while sleep 1; do pnpm test-serve playground/client-reload/; done. Also there a few fails on CI before the commit test: retry.
I couldn't figure out a way to debug the issue. What does debug-serve do?

What does debug-serve do?

It'll run playwright in non-headless mode. Maybe you can find out what's happening. Although, it may not reproduce with it.

Hmm, unfortunately it doesn't reproduce with debug-serve. I think I've only seen this fails on ubuntu CI, so it's possible that this is something due to os + headless specific quirks.
Let me tweak the test to only skip on linux.

Well, it just failed on macos as well. I'll re-run a few times and probably I'll put back skip and retry.

I fixed the test fail in 91e7edf4bf9705b67e344142824eea5a0a0f23f9.  I still cannot see it reproduced in the browser, but the fix makes sense!

I did a unsophisticated push and CI debug😅
https://github.com/sapphi-red/vite/commits/fix/test-fix-robost-client-ping-reolad/

Great work! I think it would be good to have this in Vite 6. I added it to the milestone.

@patak-dev why not in v5.x? This is a great bug fix IMO.

It because this PR is not small enough or urgent enough to release in a patch and we don't have a plan to release a minor in v5.

/ecosystem-ci run

nuxt is failing on main branch and the fails have the same errors with the latest scheduled ones so should be fine.


Move processsnapshotting to um

Make sure you also reformat the functions to follow the indentation and linebreak guidelines: https://github.com/retep998/winapi-rs/blob/dev/CONTRIBUTING.md#extern-functions

@retep998 Done

@kichristensen These function declarations don't follow the same order as the header file ProcessSnapshot.h. Please reorder them such that the PssWalkMarker*() functions are after PSS_ALLOCATOR and the other ones are before, following the same order they are listed in the header file.

@Susurrus functions should be reordered now

You appear to have some duplicate functions causing build failures.

@kichristensen Can you rebase and update this PR?

@kichristensen This needs a rebase and to address the blank lines in the Rust files.

@Susurrus @retep998 this is hopefully fixed now

LGTM


itoa within Envoy configuration

Title: Is there an integer-to-string (itoa) function available within Envoy configuration?
Description:

We are using the proxy_protocol.v3.ProxyProtocol listener filter to store the header's TLV in dynamic metadata. This worked great for us so far, and the values just happened to be encoded as ASCII so they were readable in our logs and configuration.
Now we have a usecase to receive and parse a header that is an unsigned 32 bit integer. Is there a way within Envoy configuration to convert this dynamic metadata value to a human-readable string?
Basically, we need an itoa function within Envoy configuration.

[optional Relevant Links:]

https://www.envoyproxy.io/docs/envoy/latest/configuration/listeners/listener_filters/proxy_protocol

I don't think there's a general way to convert binary data in Envoy logs. I'd suggest that the data is sanitized as early as possible, that means the producer of the dynamic metadata should interpret the binary data as integers at the production site. Perhaps, another field in https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/listener/proxy_protocol/v3/proxy_protocol.proto#extensions-filters-listener-proxy-protocol-v3-proxyprotocol-keyvaluepair that indicates the type of the binary data? Strings in protobuf must be UTF-8 so I suspect it's already broken for the raw binary data unless it's using bytes or Base64 encoding.


PlasCom2/advect1d crashes on AMPI with ++local or multiple nodes

Original issue: https://charm.cs.illinois.edu/redmine/issues/1495

Charmrun> charmrun started...
Charmrun> using nodescharm as nodesfile
Charmrun> remote shell (golub331:0) started
Charmrun> remote shell (golub333:23) started
Charmrun> remote shell (golub334:46) started
Charmrun> remote shell (golub335:69) started
Charmrun> node programs all started
Warning: No xauth data; using fake authentication data for X11 forwarding.
Warning: No xauth data; using fake authentication data for X11 forwarding.
Warning: No xauth data; using fake authentication data for X11 forwarding.
/usr/bin/xauth:  error in locking authority file /home/mdiener/.Xauthority
/usr/bin/xauth:  error in locking authority file /home/mdiener/.Xauthority
Warning: No xauth data; using fake authentication data for X11 forwarding.
/usr/bin/xauth:  error in locking authority file /home/mdiener/.Xauthority
Charmrun remote shell(golub333.23)> remote responding...
Charmrun remote shell(golub333.23)> starting node-program...
Charmrun remote shell(golub333.23)> remote shell phase successful.
Charmrun remote shell(golub334.46)> remote responding...
Charmrun remote shell(golub334.46)> starting node-program...
Charmrun remote shell(golub334.46)> remote shell phase successful.
Charmrun remote shell(golub335.69)> remote responding...
Charmrun remote shell(golub331.0)> remote responding...
Charmrun remote shell(golub335.69)> starting node-program...
Charmrun remote shell(golub335.69)> remote shell phase successful.
Charmrun remote shell(golub331.0)> starting node-program...
Charmrun remote shell(golub331.0)> remote shell phase successful.
Charmrun> node programs all connected
Charmrun> scalable start enabled.
Charmrun> adding client 0: “golub331”, IP:<IP_ADDRESS>
Charmrun> adding client 1: “golub331", IP:<IP_ADDRESS>
Charmrun> adding client 2: “golub331”, IP:<IP_ADDRESS>
[...]

Charmrun> Charmrun = <IP_ADDRESS>, port = 38751
start_nodes_ssh
Charmrun> Sending “0 <IP_ADDRESS> 38751 15541 0” to client 0.
Charmrun> find the node program “/home/mdiener/Work/ControlFlow/build.ampi/bin/advect1d” at “/home/mdiener” for 0.
Charmrun> Starting ssh golub331 -l mdiener -o KbdInteractiveAuthentication=no -o PasswordAuthentication=no -o NoHostAuthenticationForLocalhost=yes /bin/bash -f
Charmrun> Sending “1 <IP_ADDRESS> 38751 15541 0" to client 1.
Charmrun> find the node program “/home/mdiener/Work/ControlFlow/build.ampi/bin/advect1d” at “/home/mdiener” for 23.
Charmrun> Starting ssh golub333 -l mdiener -o KbdInteractiveAuthentication=no -o PasswordAuthentication=no -o NoHostAuthenticationForLocalhost=yes /bin/bash -f
Charmrun> Sending “2 <IP_ADDRESS> 38751 15541 0” to client 2.
Charmrun> find the node program “/home/mdiener/Work/ControlFlow/build.ampi/bin/advect1d” at “/home/mdiener” for 46.
Charmrun> Starting ssh golub334 -l mdiener -o KbdInteractiveAuthentication=no -o PasswordAuthentication=no -o NoHostAuthenticationForLocalhost=yes /bin/bash -f
Charmrun> Sending “3 <IP_ADDRESS> 38751 15541 0" to client 3.
Charmrun> find the node program “/home/mdiener/Work/ControlFlow/build.ampi/bin/advect1d” at “/home/mdiener” for 69.
Charmrun> Starting ssh golub335 -l mdiener -o KbdInteractiveAuthentication=no -o PasswordAuthentication=no -o NoHostAuthenticationForLocalhost=yes /bin/bash -f
Charmrun> Waiting for 0-th client to connect.
Charmrun> Waiting for 1-th client to connect.
Charmrun> Waiting for 2-th client to connect.
Charmrun> Waiting for 3-th client to connect.
Charmrun> client 23 connected (IP=<IP_ADDRESS> data_port=57324)
Charmrun> client 46 connected (IP=<IP_ADDRESS> data_port=59532)
Charmrun> client 69 connected (IP=<IP_ADDRESS> data_port=58190)
Charmrun> client 0 connected (IP=<IP_ADDRESS> data_port=35199)
Charmrun> All clients connected.
Charmrun> IP tables sent.
Charmrun> started all node programs in 1.249 seconds.
Charm++> Running in SMP mode: numNodes 4,  23 worker threads per process
Charm++> The comm. thread both sends and receives messages
Converse/Charm++ Commit ID:
Warning> Randomization of stack pointer is turned on in kernel.
Charm++> synchronizing isomalloc memory region...
[0] consolidated Isomalloc memory region: 0x440000000 - 0x7f2ac0000000 (133326848 megs)
Charm++> scheduler running in netpoll mode.
TCHARM> Will trace calls to library ampi
TCHARM> Will trace calls to library ampi
[...]
CharmLB> Load balancer assumes all CPUs are same.
Charm++> Running on 4 unique compute nodes (24-way SMP).
Charm++> cpu topology info is gathered in 0.004 seconds.
------------- Processor 45 Exiting: Caught Signal ------------
Reason: segmentation violation
------------- Processor 89 Exiting: Caught Signal ------------
Reason: segmentation violation
------------- Processor 53 Exiting: Caught Signal ------------
Reason: segmentation violation
Charmrun> error on request socket to node 1 ‘golub331’--
Socket closed before recv

Original date: 2017-04-11 23:58:00

Also worth noting that is appeared to happen in IO. Fortran IO is known to be racy in SMP mode, but PlasCom2 doesn't/shouldn't be doing Fortran IO...

Original date: 2017-04-16 03:08:00

Also crashes on a single computer node on stampede1/golub when using ++local:
$ ./charmrun bin/advect1d +p2 ++local
Charmrun> scalable start enabled.
Charmrun> started all node programs in 0.187 seconds.
Charm++> Running in SMP mode: numNodes 2,  1 worker threads per process
Charm++> The comm. thread both sends and receives messages
Converse/Charm++ Commit ID: v6.8.0-beta1-42-g026a86d
Warning> Randomization of stack pointer is turned on in kernel, thread migration may not work! Run 'echo 0 > /proc/sys/kernel/randomize_va_space' as root to disable it, or try run with '+isomalloc_sync'.
Charm++> scheduler running in netpoll mode.
CharmLB> Load balancer assumes all CPUs are same.
Charm++> Running on 1 unique compute nodes (16-way SMP).
Charm++> cpu topology info is gathered in 0.002 seconds.
------------- Processor 1 Exiting: Caught Signal ------------
Reason: segmentation violation
Suggestion: Try running with '++debug', or linking with '-memory paranoid' (memory paranoid requires '+netpoll' at runtime).
Charmrun> error on request socket to node 1 '<IP_ADDRESS>'--
Socket closed before recv.

Note that it crashes in the same way in non-smp mode.

Original date: 2017-04-16 05:26:26

A workaround is to use AMPI_Fallback_Main() instead of the function pointer passed to MPI_threadstart_t, i.e., using the CMK_AMPI_FNPTR_HACK path in MPI_threadstart_t::start():
<code class="cpp">
  void start(void) {
    char **argv=CmiCopyArgs(CkGetArgv());
    int argc=CkGetArgc();
    // Set a pointer to somewhere close to the bottom of the stack.
    // This is used for roughly estimating the stack usage later.
    CtvAccess(stackBottom) = &argv;

#if CMK_AMPI_FNPTR_HACK
    AMPI_Fallback_Main(argc,argv);
#else
    (fn)(argc,argv);
#endif
</code>

Original date: 2017-04-16 21:01:38

PlasCom2, as well as all other AMPI applications, crash during startup when using the shared library version of charm++. Tracking this issue in #1508.


docs: Updated developer documentation

Description
Please include a summary of the changes and the related issue. Please also include relevant motivation and context. List any dependencies that are required for this change.
Closes #3964
Type of change
(Remember to title the PR according to the type of change)

[x] Documentation update

How Has This Been Tested
(Please describe the tests that you ran to verify your changes.)

[ ] sphinx-autobuild (read Developer Documentation for more details)

Checklist

[x] I added relevant documentation
[ ] I followed the style guidelines of this project
[ ] I did a self-review of my code
[ ] I made corresponding changes to the documentation
[ ] My changes generate no new warnings
[ ] I filled out the contributor form (see text above)
[ ] I have added relevant notes to the CHANGELOG.md file (See https://keepachangelog.com/)

@kursathalat can you make your changes in developer_docs.md?

Hi @kursathalat this is looking fine already.

I think you can add some more context to the general introduction.

Also, something like code formatting should come right after installing the environment.

Additionally, a basic instalment always requires the SDK and Elastic search.

you left a section about troubleshooting the docs after running tests

there is no comprehensive nesting of headers yet

there is duplicate text about building the frontend, I would rather see a reference to associated section

there are some wrong headers

Setup Python environment

Clone the Argilla repository
install dependencies

via pip
via conda

install code formatting

Setup Databases

Vector Database
Relational Database and migrations

Launch the server

default user

Make your contribution

contributor guides
launch server
run tests

Hi @kursathalat, Looking much better now 💪🏽 Some minor nitpicks: I don't see any info w.r.t. re-launching the server during the testing phase. Also, you left a section about troubleshooting the docs after running tests, but this is irrelevant. Did you test and verify each of the steps and does it work for you when you follow them?
Maybe it makes sense to add this as introduction section instead of the current intro? https://docs.argilla.io/en/3964-docs-update-developer-documentation-on-serversdk/index.html#project-architecture
@sdiazlor, could you add some context about the using and running the documentation before I merge this. I think this can become a completely separate header.

Hi @kursathalat, Looking much better now 💪🏽 Some minor nitpicks: I don't see any info w.r.t. re-launching the server during the testing phase. Also, you left a section about troubleshooting the docs after running tests, but this is irrelevant. Did you test and verify each of the steps and does it work for you when you follow them?
Maybe it makes sense to add this as introduction section instead of the current intro? https://docs.argilla.io/en/3964-docs-update-developer-documentation-on-serversdk/index.html#project-architecture
@sdiazlor, could you add some context about the using and running the documentation before I merge this. I think this can become a completely separate header.

Yes, I'll add it, I was waiting for Kursat to finish to avoid disagreements in the branch

handled here: https://github.com/argilla-io/argilla/issues/3977


Update meta.yaml

Recent versions of rio-tiler are failing to build due to missing dependency : httpx. This PR fixes it.

Checklist

[x] Used a personal fork of the feedstock to propose changes
[x] Bumped the build number (if the version is unchanged)
[x] Reset the build number to 0 (if the version changed)
[x] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[x] Ensured the license file is being packaged.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

@conda-forge-admin, please rerender

cc: @lsetiawan @nrweir


Adding tests of protocol V2

Hello,
I merged your PR, but then had to revert it. The v2 test file does not compile (import problem):
[ERROR] symbol:   class InputStreamReader [ERROR] location: class ch.heigvd.res.labs.roulette.net.client.RouletteV2JulienBrechetTest [ERROR] /private/tmp/r/Teaching-HEIGVD-RES-2017-Labo-02/QuizRouletteServer-build/QuizRouletteServer-test/src/test/java/ch/heigvd/res/labs/roulette/net/client/RouletteV2JulienBrechetTest.java:[83,43] cannot find symbol [ERROR] symbol:   class OutputStreamWriter [ERROR] location: class ch.heigvd.res.labs.roulette.net.client.RouletteV2JulienBrechetTest [ERROR] -> [Help 1]
Can you please fix the issue and open a new PR? (in this case, it is not possible anymore to edit the first one). Thanks!


onTap doesn't work

Hello,
onTap doesn't seem to work at all. Checking the source code, it's not set anywhere.

i checked FlushbarRoute, it seems to be set but I still can't get it to work. mainButton has no problem.

it was my mistake, i'm sorry.


Stop transforming textAlign:start/end

Describe the issue
StyleX converts textAlign:start/end into CSS like this, which means those properties don't work correctly inside subtrees using the dir prop. This is a relatively urgent issue internally.

We should remove this transform. (A broader task is to remove the legacy RTL selectors for style sheets altogether.)
Expected behavior
textAlign:start/end work correctly
Steps to reproduce

textAlign:end
See style sheet changed end to right and scoped it to html[dir]

Test case
No response
Additional comments
No response

AFAIK, this only happens in the legacy-expand-shorthands config which is what we use internally. (If this happens in any other config that would be a very urgent issue)
Internally we depend on this behaviour for older browsers but I think there is a way to add fallback styles for older browsers while resolving this issue.

end and start have been available since Chrome 1, so I don't think we need to do anything to these values - https://developer.mozilla.org/en-US/docs/Web/CSS/text-align#browser_compatibility

This is news to me. Let me make this change immediately then.


Using the Uploader class directly fails because of no headers

When using the uploader.py file like so:
from tusclient.uploader import Uploader

my_uploader = Uploader('path/to/file.ext',
                       url='http://master.tus.io/files/abcdef123456',
                       chunk_size=200)

a 'NoneType' object has no attribute 'headers' error is raised. This is because self.headers is never set, resulting in the error when self.getoffset() is called: https://github.com/tus/tus-py-client/blob/master/tusclient/uploader.py#L92

@peixian thank you for reporting. I'll work on this, but please also feel free to submit a PR :)

this issue is fixed here