Potential UI improvements

First of all, @dupontgu thank you for this amazing project.

What do you think to add a potential UI for switching output for music playback, such as audio jack, bluetooth. Perhaps this can be added to music playback section with a custom action such as holding home button for 2 or more seconds?
What do you think to add another root menu option called settings, where the user can pair bluetooth accessories, or other personalized options, like wifi and other properties of the device?

For the first point - I love that idea, though I'm not sure I would keep it in the main branch until a standard hardware setup solidifies a bit more.  People can feel free to add something like that themselves.
Re: settings menu, I would love to see this. I think I would start with Wifi creds and Spotify creds, and maybe an option to select another Spotify Connect device on the user's account for playback. Bluetooth would be great but I'm unsure of a simple way to do it.

For the first point - I love that idea, though I'm not sure I would keep it in the main branch until a standard hardware setup solidifies a bit more.  People can feel free to add something like that themselves.
Re: settings menu, I would love to see this. I think I would start with Wifi creds and Spotify creds, and maybe an option to select another Spotify Connect device on the user's account for playback. Bluetooth would be great but I'm unsure of a simple way to do it.

I know just enough about python to be dangerous, but I found a python extension module that allows access to system Bluetooth resources that is called PuBluez
I don't know if that is any help to anyone

@EvanClements Evan, thank you for your contribution, I am pretty sure this would help us, when we decide to add the feature. I am pretty sure that there is a safe way to achieve bluetooth and wifi configuration without compromising device security.


external

is the external icon meant to have a extra row of pixels on part of the bottom right?

No! Good catch, I'll fix it. Thank you


[feature] Add support for event notifications

Motivation
When building interfaces for smart-contract-based applications it's pretty common to want it to react to changes in the contract state in order to make the UI accurately represent the current state. Examples of this could be an exchange that wants to remove an outstanding buy order from the interface when such order is taken or withdrawn, or a game that would display the moves of an opponent the moment they happen.
Right now this can only be achieved through constant querying of the RPC nodes or by creating a custom solution, but something that would serve this need much better would be a system that would allow a developer to subscribe to a smart contract and be notified of event triggers on it, essentially a publish-subscribe system.
As a data point, on Ethereum, a system like this is integrated into all the major libraries and used by almost all dApps. Note that I'm not advocating for this library to become a copy of web3, but pointing out that in a similar network this kind of feature has seen a lot of usage.
Feature
Integrate a publish-subscribe framework that enables developers to subscribe to a smart contract in order to receive events triggered on it, an example of such api could be:
import { api } from "@cityofzion/neon-js";

api.pubsub.subscribe(address, (event)=>doSomething(event));

where the second argument is a callback function that would be called every time an event in that contract is triggered.
This is just an idea to illustrate the concept tho, the actual implementation can follow other designs.
Infrastructure
Unless we turn neon-js clients into nodes capable of interacting with the p2p network and executing scripts on the NeoVM, integrating this feature into neon-js will require some extra infrastructure that collects events being triggered inside smart contracts and broadcasts them to subscribed clients, essentially the publisher of pubsub architecture.
I've written, maintain and run a server that could serve that purpose. In it's current form it broadcasts events triggered on all neo smart contracts and messages received through the p2p network. Furthermore, the architecture it uses consists of a single neo node that collects events and messages and broadcasts these to a dynamic set of servers running on heroku (this set can scale with demand) which maintain websocket connections with all the subscribers and rebroadcast everything to them, resulting in a highly scalable system, which should be able to support heavy loads.
The system could be made more scalable by using AWS IoT to relay the messages, but I don't think it will reach a load where that is necessary, and if we do then we can migrate it over there.

Source code: https://github.com/corollari/neo-PubSub/
Showcase page: https://corollari.github.io/neo-PubSub/

Extra
Something that might also be interesting to implement is some mechanism that allows a developer to know when a transaction has been finalised, that is, has been included into a block.

Sounds like a good feature to pickup, i dont imagine there is much work behind this as its just implementing a events handler. Not sure if there is any extra support required for websockets.
Notes:

This sounds like a possible plugin on the c# side. Do we have a standard on that side? If it is possible to rope in and get a consensus on a common API interface, it would be easier to buy in.

I noticed that the endpoints were designed as domain/?channel=type. I would like to know if there is any reasoning behind this API design. Conventional API design would put the resource names as part of the url (domain/channeltype) and leave the query params as additional filtering syntax. This will conform nicely to many API tooling and allow us to strongly type each endpoint.

Are the payload schemas from c# side? There are some inconsistencies across the payloads (like txid vs txID). Would love to clean it up if possible.

Yes, implementation should be pretty simple as it's just a wrapper over websockets. I can do it myself (will send a PR in the following days).

This sounds like a possible plugin on the c# side. Do we have a standard on that side? If it is possible to rope in and get a consensus on a common API interface, it would be easier to buy in.

I don't think I really understood what you are referring to, but, if you're talking about the source of the events, it is indeed a plugin for the C# client which obtains the events as NotifyEventArgs.State.ToParameter().ToJson().ToString() and then sends them to a redis queue from which they are picked up and broadcasted.
The source code for the plugin I'm currently using is https://github.com/safudex/smartbnb/tree/master/NeoPubSub, which is a fork of https://github.com/CityOfZion/neo-plugins-coz/tree/master/NeoPubSub and shares the same interface.
Regarding the interface itself, at the moment we are just broadcasting the internal representation that neo-cli uses, for which there's no standard for. Nevertheless it's been quite stable so far and if there's changes to it in the future I believe that we will be able to adapt them to the current interface.

endpoints

There's no reasoning behind it, I just followed the convention used by the tool that I forked. I agree with your proposal here and will change the urls to something closer to normal standards.

Are the payload schemas from c# side?

Some of them, transaction information comes from the RPC interface and some parts are just set by my code, I will iron these out to have something more consistent.

Progress being tracked in https://github.com/corollari/neo-PubSub/pull/1

Closing because this has already been merged in #514


Icons Missing 404 Error when running live-server

Hey, thanks for producing this.
I have tried setting this up today following your instructions and I hit issues with the icons. I had to redownload the fontawesome icon set as per #127 but I also had to manually download from your repo icons (icon-code-html.svg, icon-code-description.svg, icon-code-css.svg ).

Closed with https://github.com/devbridge/Styleguide/commit/bfb67d61d6ac98f3f342a692ca83986a3e4ef39f


TextField does not fire required message in form.

Example code:
<Form onSubmit={function(event, data) {console.log("event: ", event); console.log("data: ", data);}}>
	  <TextField small placeholder="Email" required type="email" name="email"></TextField>
	  <TextField small placeholder="Password" required type="password" name="password"></TextField>
	  <TextField small placeholder="Confirm Password" required type="password" name="confirm"></TextField>
	  <Button type="submit">Submit</Button>
	</Form>

Broken in pr: https://github.com/DigitalRiver/react-atlas/commit/b7f848019c8b9776583ce7e110f33d72290e08bd

Fixed by https://github.com/DigitalRiver/react-atlas/pull/515


qr does not connect,

hi,
i have install whaticket in vps ubuntu 20.04
I hope you can help me, when I connect the QR with the WhatsApp cell phone app, the cell phone has an active session but in Whaticket the connection status does not change

Hey hello, you already tried this? https://github.com/canove/whaticket-community/issues/643#issuecomment-2234014586
i use ubuntu-20.04.6-live-server and it works

Rally i now try it and its work!!!!  thank you!!


postifxadmin port 4443 unavailable

I had this all functional until i tried to upgrade rancher/docker... fail.... so i started over from scratch now im running into issues, however i see the postfix db resolution has been resolved.
seems looking at the nginx postfixadmin config it shows postfixadmin container should be listening on 8000 and 4443, however using the docker-compose.yml postfixadmin container is only listening on port 80
I also noted that when i go to https://postifxadmin.optimcloud.com i actually get rainloop webmail
as is the same for https://webmail.optimcloud.com goes to rainloop

never mind.... always use compose.. seems rancher-compose did the trick, it is functional now.


Ethereum Balance Missing/ Stolen

Hi,
Fisrt of all I need to clarify that I'm very new to this and don't know exactly how it works. My situation is simple, though... I transferred 6.800531 ETH to my wallet 0x454CB9C1BeE2BDC72C24678Feffd123BC498430B and never did anything else. Now I see all my balance has been transferred to wallet 0x9cc216ea10922d01787e982257eef85bc02f4aa0 without my knowledge.
Could you please confirm what has happend? Have my ETH been stolen???? How can I get it back?
Thanks!
Edgar G. Ditzend

Handling via email.


Language pack recommendation - Pseudolanguage and RTL system languages

Testing #167105
Went through the steps and again, after setting the primary language to Arabic, and setting the locale to "qps-ploc" I started VS Code and I got a notification to install the Pseudolanguage Language Pack. After I installed it, and restarted VS Code, the display language switched to Pseudolanguage.
The traffic light does appear on the left, but I am only seeing the "red light".

Verification steps:

On macOS, set the system language to Arabic.
Do a full system restart.
Open VS Code
Confirm that the traffic lights are on the right side and that all three of them are visible.
There is a bug where the traffic lights are on top of the layout controls, but that is already being tracked by https://github.com/microsoft/vscode/issues/164397


Changes lost in python notebook on undo

Does this issue occur when all extensions are disabled?: Unable to verify

VS Code Version:  Version: 1.79.0-insider (Universal) Commit: 2575777b9d3cdb865d61f9f1dfaac1fea9e1bde6
OS Version: MacOS 13.3.1 (a) (22E772610a)

Steps to Reproduce:

Work in a python notebook
Hit cmd+z with cell not focused
Sometimes cell disappears completely from notebook and there is no way restore it

Sorry for the bad bug report, I've not been able to reproduce this consistently but it is incredibly frustrating and happens often enough that I regularly loose work to this bug even though it has made me develop a compulsive save spamming habit. Filing this in the hopes that someone with a better idea on how/why this could happen will investigate.
This bug is also present in the current stable version of VSCode and I've experienced it ever since I started using notebooks in VSCode around 6 months ago.

Just want to bump this because it happens to me multiple times despite being aware of this behaviour.


Added Dockerfile with minimal install on Linux.

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

Thanks for adding this, @RudiP4t1qbit! I'm having some trouble getting it to work locally when testing, and wanted to check if I was running it wrong before bringing in the PR. In particular, using the command listed in README.md, the kernel dies with the error 'No executable found matching command "dotnet-iqsharp".' Thanks for the contribution and for your help!

@cgranade I wasn't able to reproduce this on my or Valentin's computer. That executable is installed in /root/.dotnet/tools, so the only time I've seen this break is when I accidentally mounted a directory to /root instead of a subdirectory the executable was gone.
If you reproduce that, can you post the output of echo $PATH? It should contain /root/.dotnet/tools. The directory should also contain an executable.

I'm a bit confused, as when I use docker run -it rudip4t1qbit bash, I can run dotnet iqsharp --version fine, and can confirm that /root/.dotnet/tools is on $PATH (see below), but I still get the same failure when running the notebook itself.
cgranade@MyDockerVM:~/Source/Repos/Quantum/DockerImages$ docker run -it rudip4t1qbit bash
[root@d3128c630ba3 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/.dotnet/tools
[root@d3128c630ba3 ~]# dotnet --version
2.2.104
[root@d3128c630ba3 ~]# dotnet iqsharp --version
Language kernel: 0.5.1902.2802
Jupyter core: <IP_ADDRESS>
[root@d3128c630ba3 ~]#

One approach to help fix the issue I've been running into might be to update the IQ# kernel to use the latest Microsoft.Jupyter.Core package (v1.1), as we've added a new option with Microsoft/jupyter-core#14 to allow for explicit paths when adding kernelspecs. We added that installation option to help with issues we saw in CI, where it can be hard to get $PATH and .NET Global Tools to play along in a hosted environment.
(Adding @anpaz-msft to the thread for awareness.)

Hey @cgranade, I haven't been able to reproduce this issue. Which version of Docker are you using?

@RudiP4t1qbit: Thank you so much for posting this Dockerfile! Based on that, @anpaz-msft was able to get the binder configuration in #158 working, so we really appreciate the help there. I'm going to go on and close this for now, as your work on the Dockerfile has been included as a part of finishing up #158. Thank you again! 💕


GetProfiles command not working while installing device onvif camera on aws ec2 instance

🐞 Bug Report
Description and Minimal Reproduction [REQUIRED]
I'm running this command curl -s http://host-ip:59882/api/v2/device/name/Camera001/Profiles | jq -r '"profileToken: " + '.event.readings[].objectValue.Profiles[].Token'' and it's giving me the output as null but I have 2 profiles on my UI Dashboard.
can you please help me to solve this issue.
thank you
🔥 Exception or Error

🌍  Your Environment
Deployment Environment:
EdgeX Version [REQUIRED]:
Anything else relevant?

What is the output of the base call without the part that extracts the tokens?
curl -s http://host-ip:59882/api/v2/device/name/Camera001/Profiles | jq .

it's showing this
{
"apiVersion": "v2",
"message": "request failed, status code: 503, err: HTTP request timeout",
"statusCode": 503
}

for others it's working properly to get the device name , etc and it's not working for stream uri as well.
I use this command
curl -s http://host-ip:59882/api/v2/device/name/Camera001/StreamUri?jsonObject=ewogICAiUHJvZmlsZVRva2VuIjogInByb2ZpbGVfMSIKfQ== | jq -r '"streamURI: " + '.event.readings[].objectValue.MediaUri.Uri'' : it's returning Null value

Ok , I need to check that how to connect onvif camera on ec2 instance because the document uses localhost and not server.
do you have any idea or any documentation that I can follow to solve this issue ?

@Shadab995 , are you running EdgeX and camera device service on ec2 instance and trying to connect to camera on a network the ec2 can connect to?

For now I followed the tutorial as mentioned in the latest video of EdgeXFoundry for connecting a device-onvif camera. I bought the same model as well C200 generate the docker file first and replace “<IP_ADDRESS>” with “<IP_ADDRESS>” and assigned the required port numbers to the security group.
so , after running docker..
The edge-ui is running fine .
The commands to get the device name runs good.
The command to fetch the deviceprofile doesn’t work for me
And in the UI when I click on “try” to get the list of data , profiles and other details..it gives me 503 error.

@Shadab995 It sounds like you are trying to access a camera connected to your local WiFi network via an instance of EdgeX installed in the cloud. This is not a currently supported deployment method. You can probably make it work, but it is not recommended for security reasons.
What you should do (if possible) is install EdgeX on a machine (or VM) that is within your same local network.
Here is the not recommended way of getting it to work through the cloud. This will open your camera up publically to the entire internet so be warned.

Get your public ip address of your router. This can also be done by visiting various websites from a machine on your network. https://ipinfo.io/json
Go into your router and port forward 2 ports, one going to port 2020 and another going to 554 of the local ip address of your camera.
Configure the EdgeX device to use the external ip address you found in part 1 and the port you forwarded to port 2020 on your camera.

Thank you sir.
I followed that but then it gave me this error and I'm facing difficulties troubleshooting this.
can you please help me
code: 500 , message: request failed, status code: 500, err: {"apiVersion":"v2","message":"error reading DeviceResourece Profiles for Camera001 -\u003e failed to execute read command -\u003e invalid request for the function 'GetProfiles' of web service 'Media'. Onvif error: fault reason: Authority failure, fault detail: , fault code: SOAP-ENV:Sender ter:NotAuthorized ","statusCode":500}

Hello ,
Any inputs please. it's really important for me
Thank you

Thank you for the response but it's correct because i can connect my camera with those credentials to VLC media player using rtsp and it' working fine.
But , I'll try creating new credentials and redo the process again.
Sir is their anyy other suggestions apart from this that can help me ?

@Shadab995 Go to consul and set Writable.LogLevel to DEBUG.
Also snoop around the InsecureSecrets folders to make sure everything is correct in there.
Send us some of the DEBUG logs after you try with the new password.

Thank you for the support . I looked into log level and found out that the MAC address and Username and Password were not in strings and added ("") to them to make them strings and then used it..Finally got output for some information but for others and for getting the profile token it's still showing error.
Attaching the screenshots for better reference.

@Shadab995 Can you provide us with the DEBUG logs of the docker services?
For example:
docker logs $(docker ps -qf name=device-onvif-camera) > /tmp/onvif_logs.txt

As far as the strings issue, that sounds suspicious, as I do not know why that would happen. In the consul UI, did you modify the values of InsecureSecrets? Because the consul UI has a tendency to try and format the value as json and will complain if it does not have quotes, however you do not want quotes in them.
The reason why some commands may work and others not, is that some commands do not require authentication. I do not know if the ones you called don't or not. Definitely the DeviceInformation one does require it.
Another thing you can try is to change your password on the camera. Maybe there is some special character it does not like.

Hello @ajcasagrande
Yes ,  I changed the password and removed the special char as well.
Here is the log file for your reference.
onvif_logs.txt
It didn't gave  me a response for DeviceInformation for gave it for MetaData.
Thankyou so much for the help. Highly appreciated
I brought the camera just after watching the above video so that it can be easily implemented and also gave the deadline to the people.
Hence I request your support and assistance in understanding the errors so  as to complete this project.
Thank you

@Shadab995 Yes it appears as though the credentials for the camera have not been properly configured within the system.
level=WARN ts=2022-09-14T22:41:38.3330915Z msg="failed to get credentials for camera Camera001, setting AuthMode to none for temporary client"
level=ERROR ts=2022-09-14T22:42:08.3328622Z msg="Failed to retrieve credentials for the secret path credentials001: Error, path (credentials001) doesn't exist in secret store"

Also, note that the quotes you added are messing up the values:
level=WARN ts=2022-09-15T20:29:36.4880022Z msg="Skipping invalid mac address \"28:87:BA:B1:B9:F2\": address \"28:87:BA:B1:B9:F2\": invalid MAC address"

At the root directory of device-onvif-camera, run:

Note: fill in the username and password with actual values. The other options should stay the same.

bin/map-credentials.sh -u "username" -p "password" -P "credentials001" -A usernametoken -M "28:87:BA:B1:B9:F2"

Another thing you can try is within the edgex-compose directory, run the make clean command to stop EdgeX and remove ALL DATA. Then you can start over following the video from the start.

ok .. I'll do it . thanks a lot @ajcasagrande sir

Thanks a lot @ajcasagrande sir , it helped me in setting the proper credentials and it worked fine but while using ffplay and using mplayer as well , i get the error like :
ffplay version 4.2.7-0ubuntu0.1 Copyright (c) 2003-2022 the FFmpeg developers                                                                                built with gcc 9 (Ubuntu 9.4.0-1ubuntu1~20.04.1)                                                                                configuration: --prefix=/usr --extra-version=0ubuntu0.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-nvenc --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared                                   libavutil      56. 31.100 / 56. 31.100                                                                                libavcodec     58. 54.100 / 58. 54.100                                                                                libavformat    58. 29.100 / 58. 29.100                                                                                libavdevice    58.  8.100 / 58.  8.100                                                                                libavfilter     7. 57.100 /  7. 57.100                                                                                libavresample   4.  0.  0 /  4.  0.  0                                                                                libswscale      5.  5.100 /  5.  5.100                                                                                libswresample   3.  5.100 /  3.  5.100                                                                                libpostproc    55.  5.100 / 55.  5.100                                                                                Could not initialize SDL - No available video device                                                                                (Did you set the DISPLAY variable?)  ``
I am trying to solve this from past 2 days but it's not working fine. i installed all the dependencies and the required packages like
vlc , ffmpeg , build-essentials and not able to set the display variable as well.
Please help if possible .
thank you

@Shadab995 , do you still need help with this?

Yes please , it would be really good if ffplay can work in my system .
thank you

@ajcasagrande , fyi.


[WIP] start flatten implementation and add tests

TODO:

implement checks for an argument axis: if less or equal -1 or greater then dimension trigger a wrong user input by throwing std::invalid_argument
add tests for the above
* add a C++ test for a RawArrayOf
finish flatten implementations

@jpivarski - please, comment

Oh, and you probably don't need a test of RawArrayOf<T>. This kind of array is strictly one-dimensional, so flatten would always return an error. That's a simple enough case that it can get away without a test.

I just put in an example of a ListArray that demonstrates its generality. What's allowed and what isn't allowed is described here.
When you enter the flatten implementation, you don't know if the array is in a legal state; the policy is to check as many rules as you need to perform the operation (during the operation).
ListArray is sufficiently general that it will need a new cpu-kernel. That's part of what makes this function a good introduction.  :)

Uh-oh: I didn't intend to merge the whole master branch into this branch, but if I'm reading it right, that's what I did with 5dde95c2da437a110bc9f66422f257c4382ec5c8. If that's a problem, you can roll back that commit—I only did it to make sure that the VERSION_INFO was ahead of the latest release.

Uh-oh: I didn't intend to merge the whole master branch into this branch, but if I'm reading it right, that's what I did with 5dde95c. If that's a problem, you can roll back that commit—I only did it to make sure that the VERSION_INFO was ahead of the latest release.

No problem, I'll update my branch

@jpivarski - it's not finished yet. I just wanted to bring it up-to-date with my local branch. I'm a bit confused with the indices as you can see from the tests :-)

@jpivarski - Could you, please, have a look? I'm not sure if I'm going in the right direction. Besides, I need some help here. If I retrieve the indices for the sliced array, I need an offset:
     array2 = array[2:-1]
-    assert awkward1.tolist(array2.flatten()) == [3.3, 4.4, 5.5]
+    #assert awkward1.tolist(array2.flatten()) == [3.3, 4.4, 5.5]

        array2 = array[2:-1]
>       assert awkward1.tolist(array2.flatten()) == [3.3, 4.4, 5.5]
E       assert [0.0, 1.1, 2.2] == [3.3, 4.4, 5.5]
E         At index 0 diff: 0.0 != 3.3
E         Full diff:
E         - [0.0, 1.1, 2.2]
E         + [3.3, 4.4, 5.5]

First of all, with the ListArray defined as it is in the test code ([[0.0, 1.1, 2.2], [], [5.5], [8.8]] and not [[0.0, 1.1, 2.2], [], [3.3, 4.4], [5.5], [6.6, 7.7, 8.8, 9.9]]), the assertion should be false because array[2:-1] of this array is [[5.5]] and its flattening is [5.5]. It's not an interesting example. (Your ListArray example differs from the ListOffsetArray example because it's missing the 3:5 subarray and the 6:10 subarray has been shortened to 8:9.)
To see this, try running the pure Python flatten function from the top of the test file:
>>> flatten(awkward1.tolist(array))
[0.0, 1.1, 2.2, 5.5, 8.8]
>>> flatten(awkward1.tolist(array[2:-1]))
[5.5]

Bigger troubles
However, you're going to have more difficulty when you get to the next block:
content = awkward1.layout.NumpyArray(numpy.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], dtype=numpy.int64))
starts  = awkward1.layout.Index64(numpy.array([4, 999, 0, 0, 1, 7]))
stops   = awkward1.layout.Index64(numpy.array([7, 999, 1, 4, 5, 10]))
array   = awkward1.layout.ListArray64(starts, stops, content)
assert awkward1.tolist(array) == [[4, 5, 6], [], [0], [0, 1, 2, 3], [1, 2, 3, 4], [7, 8, 9]]

This one not only has gaps, but they're out of order and overlap. Maybe you should concentrate on this one first because of its generality.
Suggested strategy
There are many ways to implement these functions, and I see that you're following a procedure for ListArray that is similar to what was done for ListOffsetArray. Here's a better idea: instead of trying to "fix" the ListArray with a new starts and stops (you can't because of the gaps, overlaps, and out-of-orderness), write a kernel that performs the flattening as an integer array that will be passed on to the next level down.
For instance, with the first ListArray:
>>> awkward1.tolist(array)
[[0.0, 1.1, 2.2], [], [5.5], [8.8]]
>>> flatten(awkward1.tolist(array))
[0.0, 1.1, 2.2, 5.5, 8.8]

Your kernel can create an Index64 named nextcarry that looks like this: [0, 1, 2, 5, 8]. Then when you call
std::shared_ptr<Content> out = content_.get()->carry(nextcarry)

that out array will be [0.0, 1.1, 2.2, 5.5, 8.8]. "Carrying" is an operation that I added to support getitem; it does exactly the same thing as this:
>>> content[[0, 1, 2, 5, 8]]
<NumpyArray format="d" shape="5" data="0 1.1 2.2 5.5 8.8" at="0x55f493797580"/>

("gather" in SIMD and numpy.take in NumPy). It doesn't matter what kind of an array content_ is—it could be records or more jagged arrays or whatever.
Back when all of these things were implemented exclusively in NumPy calls (see old implementation of flatten), we used this trick everywhere: an array of non-negative integers is a partial application of a function on any type of data structure. I came up with this explanation why: considering element-selection from an array (i.e. passing an integer between square brackets) as a function call, treating that array of length n, element type D as a function [0, n) → D, and gather/numpy.take is function composition over those function calls:
(   [0, m) → [0, n)   ) ∘ (   [0, n) → D   ) = (   [0, m) → D   )

Function composition is associative, so we can apply it whenever we like. In getitem, I had to recursively apply an operation that had to carry information from one recursive step to the next, much like carrying a digit in longhand addition, so this operation is called carry. It's only used internally, but ListArray::flatten would make good use of it.
So, given an array like
content = awkward1.layout.NumpyArray(numpy.array([0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9]))
starts  = awkward1.layout.Index64(numpy.array([4, 999, 0, 0, 1, 7]))
stops   = awkward1.layout.Index64(numpy.array([7, 999, 1, 4, 5, 10]))
array   = awkward1.layout.ListArray64(starts, stops, content)
assert awkward1.tolist(array) == [[4.4, 5.5, 6.6], [], [0.0], [0.0, 1.1, 2.2, 3.3], [1.1, 2.2, 3.3, 4.4], [7.7, 8.8, 9.9]]

The task of your new cpu-kernel would be to generate this Index64:
[4, 5, 6, 0, 0, 1, 2, 3, 1, 2, 3, 4, 7, 8, 9]

and then pass that Index64 as "nextcarry" to
content_.get()->carry(nextcarry)

to get
>>> numpy.asarray(content[[4, 5, 6, 0, 0, 1, 2, 3, 1, 2, 3, 4, 7, 8, 9]])
array([4.4, 5.5, 6.6, 0. , 0. , 1.1, 2.2, 3.3, 1.1, 2.2, 3.3, 4.4, 7.7, 8.8, 9.9])

Actually, you'll need two cpu-kernels: the first one adds up all the stop[i] - start[i] to determine the length of nextcarry before you can allocate it. Then the second cpu-kernel fills it with integers.

@jpivarski - thanks, using the offsets fixed the test. Please, review the PR.

@jpivarski - I think, I'd prefer to open a new PR for axis != 0.
The tests with NumpyArray work, but I couldn't figure out how to test it on the stride tricks - are they are allowed?
>>> a = np.arange(1,10).reshape(3,3)
>>> a
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
>>> np.lib.stride_tricks.as_strided(a, shape=a.shape[::-1], strides=a.strides[::-1])
array([[1, 4, 7],
       [2, 5, 8],
       [3, 6, 9]])

The examples I have in the inline comment, by slicing a e-dimensional array, should provide enough extreme examples of strides.
The stride_trucks function allows you to create arbitrary shape/stride combinations, some of which could even raise segfaults when iterating over the array. (It's one of the few ways to raise a segfault in pure Python.) But slicing can also make some extreme shape/stride combinations, all of which are legal.
The only shape/stride combination I can think of that you can't make with slicing, but can with stride_tricks is an axis with shape != 0 and stride == 0. This effectively duplicates a value from the original array shape times. Is used to broadcast a scalar or single-valued dimension to match a dimension of length shape without actually copying data.
But you don't need the low-level stride_tricks to do this: there are broadcast functions that create such examples more safely.

The examples I have in the inline comment, by slicing a e-dimensional array, should provide enough extreme examples of strides.
The stride_trucks function allows you to create arbitrary shape/stride combinations, some of which could even raise segfaults when iterating over the array. (It's one of the few ways to raise a segfault in pure Python.) But slicing can also make some extreme shape/stride combinations, all of which are legal.
The only shape/stride combination I can think of that you can't make with slicing, but can with stride_tricks is an axis with shape != 0 and stride == 0. This effectively duplicates a value from the original array shape times. Is used to broadcast a scalar or single-valued dimension to match a dimension of length shape without actually copying data.
But you don't need the low-level stride_tricks to do this: there are broadcast functions that create such examples more safely.

Thanks, @jpivarski! I think, I'm done with this PR. What are the next steps?

I just resolved the merge conflict (version number), removed the [WIP] from the name, and I'll wait for the tests to pass before squashing and merging. Are there any intermediate commit states you think are important to save? If not, then the intermediate history will be lost on GitHub, preserved only in our local clones of the repo.
Beyond that, I think it would be time to add axis != 0, which would be a good introduction to what recursion looks like on columnar data. The first case to add would be axis > 0, for which the Python-only flatten is a good illustration. Test examples for this case should be pretty deep, like 3 levels or more. It can be particularly tricky crossing the boundary from Awkward Array nodes like ListArray and RegularArray (each node is at most one "dimension") into NumpyArray nodes (can be more than one dimension). Some examples should have multidimensional NumpyArrays, in which the axis picks out one of the NumPy dimensions.
The axis < 0 case, counting from -1 being the innermost dimension, is hard even to define. For example, is this structure

two-dimensional or three-dimensional (assuming the NumpyArrays here are one-dimensional)? Following the "x" branch, it's a ListOffsetArray64 of a one-dimensional NumpyArray, which looks two-dimensional. Following the "y" branch, it's a ListOffsetArray64 of ListOffsetArray64 of a one-dimensional NumpyArray, which looks three-dimensional.
For a structure like this, should axis=-1 mean that we should flatten the nested array inside "y"? If so, then there would be no way to deal with "x". In other cases (where "x" and "y" are both multidimensional, perhaps to different degrees), such an axis=-1 notation would provide ways of flattening that wouldn't be possible (in one step) if axis=-1 weren't defined this way.
If, instead, axis=-1 means we should only flatten above the RecordArray: removing the outermost ListOffsetArray64 in this example, then it would always be easier to make sense of: it would succeed or fail in the same cases that you've already defined in this PR. However, that would make it impossible to flatten inside of an array—in one step. (The user would have to project the record into its components, flatten each, and recombine them. That sounds annoying, but it's a special case that probably doesn't come up often.)
I'm inclined to define axis=-1 to be above the RecordArray. Since all operations should adhere to the same conventions, this means that subsequent operations should also only descend to the first RecordArray when determining what axis=-1 means. There would need to be a new virtual method, list_depth, beside minmax_depth to do this counting and convert negative axis values into non-negative ones before recursing. All of that would be the subject of the new PR that adds axis != 0 to flatten.

When you're sure that intermediate commits don't have to be preserved, give me the okay and I'll squash-and-merge. Thanks!

When you're sure that intermediate commits don't have to be preserved, give me the okay and I'll squash-and-merge. Thanks!

Thanks, yes, you can squash-and-merge it.


(startallback) Add StartAllBack package

Description

Adds an automatic package for StartAllBack.
Motivation and Context

https://www.startallback.com/ StartAllBack is the Windows 11 Version of StartIsBack.
How Has this Been Tested?

Tested using the chocolatey-test-environment.
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)
[ ] Migrated package (a package has been migrated from another repository)

Checklist:

[x] My code follows the code style of this repository.
[ ] My change requires a change to documentation (this usually means the notes in the description of a package).
[ ] I have updated the documentation accordingly (this usually means the notes in the description of a package).
[x] I have updated the package description and it is less than 4000 characters.
[x] All files are up to date with the latest Contributing Guidelines
[x] The added/modified package passed install/uninstall in the chocolatey test environment.
[x] The changes only affect a single package (not including meta package).

:x: Package verification failed, please review the Appveyor Logs and the provided Artifacts before requesting a human reviewer to take a look.

AppVeyor fails with "The procedure entry point IsWow64Process2 could not be located..." (https://ci.appveyor.com/api/buildjobs/djowbe2coxj434kd/artifacts/installError_startallback.jpg). StartAllBack seems to require Windows 10 1709 / Windows Server 2016 1709 (https://learn.microsoft.com/en-us/windows/win32/api/wow64apiset/nf-wow64apiset-iswow64process2). What version of Windows does AppVeyor use?

StartAllBack seems to require Windows 10 1709 / Windows Server 2016 1709

Can you add that check into the package?

@pauby I'm not much of an expert on this. Would a simple [System.Environment]::OSVersion.Version.Build -ge 16299 check cover all cases?

@kalsowerus If you're asking me can you use that code, then the answer is yes. If you're asking me if that code works and ensures that the package only installs on those OS's you mentioned, I don't know.

:x: Package verification failed, please review the Appveyor Logs and the provided Artifacts before requesting a human reviewer to take a look.

What version of Windows does AppVeyor use?

Based on the config, it looks like server 2016, which is based on windows 1607, which would not work
https://github.com/chocolatey-community/chocolatey-packages/blob/master/.appveyor.yml#L7
https://www.appveyor.com/docs/windows-images-software/

I'm not much of an expert on this. Would a simple [System.Environment]::OSVersion.Version.Build -lt 16299 check cover all cases?

I believe it would for all currently released Windows version, but if in the future Microsoft released a new major version while resetting/decrementing the build version, then this would break. The major and minor versions should also be checked:
https://github.com/chocolatey-community/chocolatey-packages/blob/da3efbc83ddf7fb6f1ba1a0671cfe0a9c0dbe4ca/automatic/smartftp/tools/chocolateyInstall.ps1#L3-L8

@TheCakeIsNaOH Thanks for the snippet, I updated the install script.

@kalsowerus I'm just looking over this PR and realised it's a new package? Did you raise a discussion or otherwise get agreement that the package would be accepted? I can't seem to find anything, and there is nothing linked in the description.


feat(create-vite): add @node/types to typescript templates

Closes https://github.com/vitejs/vite/issues/18600

If we go in that direction, I think we should also add types to node and app tsconfigs so that node types don't pollute default client code.
It also avoid the need for a vite-env.d.ts which IMO it's cleaner and what I do in my projects

Setting that has a different semantic to a separate file: https://www.typescriptlang.org/tsconfig/#types, so I'm not really sure if we should change that

Yeah I know it's different, but that the goal: you don't want to have process.env be ok for TS in the app files.

you don't want to have process.env be ok for TS in the app files.

We do use a lot of process.env in our frontend code, particularly process.env.NODE_ENV == "development" to switch to a dev rest api url.
Vite also allows process.env in app files https://vite.dev/guide/env-and-mode#node-env-and-modes

While this is supported for compatibility with the ecosystem, Vite way of doing this is import.meta.DEV which avoid using a  Node concept inside a code that will run in browser


Add arm/v7 support

Installing ninja via pip3 fails on arm/v7
https://github.com/andy5995/linuxdeploy-build-helper/blob/747c39a8f42de7c79fa5fa3c57f39170094283a8/Dockerfile#L30
I think I just need to install a newer version of cmake first. https://github.com/scikit-build/ninja-python-distributions/issues/28

Done in https://github.com/andy5995/linuxdeploy-build-helper/commit/5e76cd9db31e03884309a00180e4f4624939c029


Install Lux(TestUtils) manually in DIT test

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 63.36%. Comparing base (af00f53) to head (dda6798).

:exclamation:  There is a different number of reports uploaded between BASE (af00f53) and HEAD (dda6798). Click for more details.
HEAD has 36 uploads less than BASE

Flag
BASE (af00f53)
HEAD (dda6798)

48
12

Additional details and impacted files
@@             Coverage Diff             @@
##             main     #400       +/-   ##
===========================================
- Coverage   96.66%   63.36%   -33.30%
===========================================
  Files         103       74       -29
  Lines        4981     2730     -2251
===========================================
- Hits         4815     1730     -3085
- Misses        166     1000      +834

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


cursors jumps in emacs

Which operating system does the issue occur on?
Linux
If on linux, are you using X11 or Wayland?
X11
On the scrollback branch, commit 23601fb, I'm seeing weird cursors jumps in Emacs 26.1. Note that this is a very (at the time of writing this) recent commit, where master was just merged).
The following two ways seem able to reproduce every time:

hit C-x-f (find file), at the suggested path (could be e.g. ~/, or /tmp), hit C-a. The cursor moves to the beginning of the path. So far so good. Now hit C-e. The cursor should move to the end of the line, but in my case, it jumps forward a single character. After this, it appears the physical position of the cursor and the logical position is no longer synchronized, and hitting e.g. C-a again will move the cursor into the "find file" prompt (which should not be possible).

In an empty buffer (you could for example start Emacs with "emacs /tmp/foo.txt"), type "hello world". At the second 'o' (as in, you've typed "hello w"), the cursor jumps to the first 'o' (in "hello"). If you continue typing, the cursor will jump back. But the resulting text will be "hellr wo ld".

I've tried with various settings for the TERM variable, with no improvements. The same steps to reproduce works (i.e. does not reproduce...) in multiple other terminals (xterm, st, konsole), meaning it shouldn't be a problem with my Emacs setup or similar.
I've also verified the issue is still there when running Emacs without an init file (emacs -q).

Thanks for reporting this. Would you mind testing exactly which commit broke this? It's very unlikely that the commit you've linked is actually the culprit, since that was just some README change. Also if the commit in question is one of the master merge commits, it would be helpful if you could test this against the latest master, to check if this regression was due to an unclean merge or because a regression was introduced on master.

TL:DR PEBKAC
The problem existed in master as well, so I did a bisect there. Turned out to be https://github.com/jwilm/alacritty/commit/650b5a0cbaccc6de2b53240372c2be79739d5d12, which didn't make any sense.
But, it pointed me in the correct direction; turned out to be that I had set tabspaces=4, which apparently was a bad idea.
FYI, st has the following to say about tabspaces:

When you are changing this value, don't forget to adapt the »it« value in
the st.info and appropriately install the st.info in the environment where
you use this st version.
it#$tabspaces,

Sure enough, if I changed tabspaces to 4 in st, without updating the terminfo, st exhibited the exact same problem,
This makes me think that perhaps the tabspaces option should be removed altogether (since we can't update terminfo at run-time), or at least the fact that it will break certain applications could be mentioned in the default configuration file.
I am fine with closing this ticket without doing anything at all, but I think it would be nice if at least the documentation of the tabspaces option could be updated.

Perhaps something like:

Note that changing the default value will break certain applications (for example, Emacs), unless a corresponding terminfo entry is used. If you do not understand what this means, do not change this.

Or is that considered too harsh?

@dnkl I don't think the last sentence If you do not understand what this means, do not change this. does not add much, so I'd just leave it out. It's implicated anyways that when something might break things and you change it, you shouldn't be surprised about breakage.
However, rather than saying that changing this will break certain applications unless a corresponding terminfo entry is used, I'd just say that to make sure applications know about the altered tab width, it might be required to change the terminfo too.
I think something like this would be good:
# Spaces per Tab
#
# This setting defines the width of a tab in cells.
# Changes to this value require a restart to take effect.
#
# Since some applications (like Emacs) rely on knowing about the tab width,
# it might also be required to change the `it` value in the terminfo
# when altering this setting.
tabspaces: 8

Feel free to send a PR if you think this is an improvement. Also feel free to alter my version if you think you've got a better idea, this is just a rough idea of how I would word it.

It's implicated anyways that when something might break things and you change it, you shouldn't be surprised about breakage.

Sometimes people miss implicit things :)
That said, your version is much better.
I'll try to set up a PR "soonish" (as in, not today :) )


Dev-Ledger enhancement

Enhancement and update code for Ledger.

can you use git rebase instead?

Will I rebase master into dev-ledger or dev-ledger into master?


Error with TensorFlow Call

I've tried running the predictive_music_model.py recently and got the error below. It was working at the NIME workshop in June, but suddenly kicked this up. I cloned the latest version and reinstalled all the requirements in a virtual environment.
Edit: I'm on Windows 10
`C:...\imps-master>python predictive_music_model.py --dimension=3 --log
Importing Keras and MDRNN.
Using TensorFlow backend.
Traceback (most recent call last):
File "predictive_music_model.py", line 39, in
import empi_mdrnn
File "C:...\imps-master\empi_mdrnn_init_.py", line 16, in
tf.logging.set_verbosity(tf.logging.INFO)  # set logging.
AttributeError: module 'tensorflow' has no attribute 'logging'`

Ok! That's bad! I think I remember having this but can't remember why. Could you check what your version of TensorFlow is?
Actually, I think I'm going to bump the version of TF to 1.15.0 (last of the V1s...) and remove the Keras requirement (because Keras is now completely within Tensorflow). I'll draft a release now of the current state, so that the NEXT release has the updated TF plan.
This seems like a distraction, but my experience has been that errors like the above are usually an issue with TensorFlow/Keras/Python versions---frustrating, but true. :-(

Hey Charles
It looks like I had 2.0 installed. I downgraded to 1.14.0 and that gave more errors because it wasn't compatible with tensorflow probability. So I upgraded to 1.15.0 and it worked! Sort of...
I was able to collect data, generate the dataset and train. However, on the last epoch of training, it spat out this:
Epoch 00100: val_loss improved from 14.47440 to 14.39295, saving model to models/musicMDRNN-dim3-layers2-units32-mixtures5-scale10-E100-VL14.39.hdf5                                                                                Traceback (most recent call last):                                                                                File "train_predictive_music_model.py", line 159, in                                                                                model.save_weights(model_dir + model_name + ".h5")                                                                                File "C:\Users\lloyd\Documents\Projects\NN_Pedal\imps-master\lib\site-packages\keras\engine\saving.py", line 449, in save_wrapper                                                                                save_function(obj, filepath, overwrite, *args, **kwargs)                                                                                File "C:\Users\lloyd\Documents\Projects\NN_Pedal\imps-master\lib\site-packages\keras\engine\network.py", line 1184, in save_weights                                                                                saving.save_weights_to_hdf5_group(f, self.layers)                                                                                File "C:\Users\lloyd\Documents\Projects\NN_Pedal\imps-master\lib\site-packages\keras\engine\saving.py", line 761, in save_weights_to_hdf5_group                                                                                dtype=val.dtype)                                                                                File "C:\Users\lloyd\Documents\Projects\NN_Pedal\imps-master\lib\site-packages\h5py_hl\group.py", line 139, in create_dataset                                                                                self[name] = dset                                                                                File "C:\Users\lloyd\Documents\Projects\NN_Pedal\imps-master\lib\site-packages\h5py_hl\group.py", line 373, in setitem                                                                                h5o.link(obj.id, self.id, name, lcpl=lcpl, lapl=self._lapl)                                                                                File "h5py_objects.pyx", line 54, in h5py._objects.with_phil.wrapper                                                                                File "h5py_objects.pyx", line 55, in h5py._objects.with_phil.wrapper                                                                                File "h5py\h5o.pyx", line 202, in h5py.h5o.link                                                                                OSError: Unable to create link (name already exists)

Ok, I'm not sure what the situation is with tensorflow 1.15, things have become a bit complicated with tf2.0 coming out, and I've still been using 1.14. I have a working setup on my machine with these versions:
Keras                  2.2.5
tensorflow             1.14.0
tensorflow-probability 0.7.0
keras-mdn-layer        0.2.2
which you could install with this:
python3 -m pip install tensorflow==1.14.0 tensorflow-probability==0.7.0 keras==2.2.5 keras-mdn-layer==0.2.2
I'm trying to get 1.15 working this weekend :-)

Thanks so much Charles! I installed the versions of the libraries that you mentioned at it ran with no errors, a few warnings about TensorFlow not being compatible with GPUs but that's alright.
I am running into a problem getting the predictions into Max though. I'm listening with a "udpreceive 5001" object and am getting nothing. I then manually specified a port in the call:
python predictive_music_model.py --dimension=3 --modelsize=xs --log -cv --clientport=808
and am listening with "udpreceive 808" but still got nothing. It did seem that it was sending and receiving:
....
User->RNN prediction: [-2.09107488e-04  8.43054844e+01  7.80294328e+01]                                                                                User->RNN prediction: [6.00040677e-03 8.49015706e+01 7.78994170e+01]                                                                                User:<PHONE_NUMBER>.7867973 1.9221211945340876e-37,31.371971130371094                                                                                User:<PHONE_NUMBER>.8046985 1.9221211945340876e-37,31.371971130371094
etc.
Any thoughts?

Hey Lloyd, it seems that the issue was messages going from IMPS-->Max, but that the other way was ok. I think I've found that this is an issue with latest python-osc, could you try:
python3 -m pip install python-osc==1.7.0

I was able to reproduce this on my system with Pd. If you send me your max patch I can try it in max as well.
Moving to pinned packages in the requirements.txt file...

Hi Charles
I installed python-osc 1.7.0 but still couldn't get IMPS to send things to
Max. I've included my patch, please let me know if you manage to get it
working or if there is something else I should do.
Have a great day!
Cheers,
Lloyd
On Sun, Nov 3, 2019 at 9:45 PM Charles Martin<EMAIL_ADDRESS>wrote:

Hey Lloyd, it seems that the issue was messages going from IMPS-->Max, but
that the other way was ok. I think I've found that this is an issue with
latest python-osc, could you try:
python3 -m pip install python-osc==1.7.0
I was able to reproduce this on my system with Pd. If you send me your max
patch I can try it in max as well.
Moving to pinned packages in the requirements.txt file...
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/cpmpercussion/imps/issues/5?email_source=notifications&email_token=AMG5T4F44LHPC3KOYB4FR5DQR6EFJA5CNFSM4JHMSH7KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEC6ENYI#issuecomment-549209825,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AMG5T4CLHDFNKUQH763ZVLTQR6EFJANCNFSM4JHMSH7A
.

{
"patcher" : 	{
"fileversion" : 1,
"appversion" : 		{
"major" : 8,
"minor" : 0,
"revision" : 5,
"architecture" : "x64",
"modernui" : 1
}
,
"classnamespace" : "box",
"rect" : [ 1954.0, 77.0, 1852.0, 929.0 ],
"bglocked" : 0,
"openinpresentation" : 0,
"default_fontsize" : 12.0,
"default_fontface" : 0,
"default_fontname" : "Arial",
"gridonopen" : 1,
"gridsize" : [ 15.0, 15.0 ],
"gridsnaponopen" : 1,
"objectsnaponopen" : 1,
"statusbarvisible" : 2,
"toolbarvisible" : 1,
"lefttoolbarpinned" : 0,
"toptoolbarpinned" : 0,
"righttoolbarpinned" : 0,
"bottomtoolbarpinned" : 0,
"toolbars_unpinned_last_save" : 0,
"tallnewobj" : 0,
"boxanimatetime" : 200,
"enablehscroll" : 1,
"enablevscroll" : 1,
"devicewidth" : 0.0,
"description" : "",
"digest" : "",
"tags" : "",
"style" : "",
"subpatcher_template" : "",
"boxes" : [ 			{
"box" : 				{
"id" : "obj-8",
"linecount" : 2,
"maxclass" : "comment",
"numinlets" : 1,
"numoutlets" : 0,
"patching_rect" : [<PHONE_NUMBER>3502655,<PHONE_NUMBER>00000006, 150.0, 33.0 ],
"presentation_linecount" : 2,
"text" : "Recieve pitch and amplitude info from imps"
}
		}

, 			{
"box" : 				{
"id" : "obj-7",
"linecount" : 2,
"maxclass" : "comment",
"numinlets" : 1,
"numoutlets" : 0,
"patching_rect" : [ 393.0,<PHONE_NUMBER>14920126, 150.0, 33.0 ],
"text" : "Pitch and Amplitude from guitar, send to imps"
}
		}

, 			{
"box" : 				{
"fontname" : "Arial",
"fontsize" : 11.600006,
"id" : "obj-2",
"maxclass" : "newobj",
"numinlets" : 1,
"numoutlets" : 3,
"outlettype" : [ "float", "float", "" ],
"patching_rect" : [<PHONE_NUMBER>99999997,<PHONE_NUMBER>00000004, 166.0, 21.0 ],
"text" : "sigmund~ @hop 512 pitch env"
}
		}

, 			{
"box" : 				{
"id" : "obj-6",
"maxclass" : "gain~",
"multichannelvariant" : 0,
"numinlets" : 1,
"numoutlets" : 2,
"outlettype" : [ "signal", "" ],
"parameter_enable" : 0,
"patching_rect" : [<PHONE_NUMBER>66666515,<PHONE_NUMBER>37733405, 22.0, 140.0 ]
}
		}

, 			{
"box" : 				{
"id" : "obj-5",
"maxclass" : "message",
"numinlets" : 2,
"numoutlets" : 1,
"outlettype" : [ "" ],
"patching_rect" : [ 1017.0,<PHONE_NUMBER>0000002, 162.0, 22.0 ]
}
		}

, 			{
"box" : 				{
"id" : "obj-3",
"maxclass" : "gain~",
"multichannelvariant" : 0,
"numinlets" : 1,
"numoutlets" : 2,
"outlettype" : [ "signal", "" ],
"parameter_enable" : 0,
"patching_rect" : [<PHONE_NUMBER>03283031,<PHONE_NUMBER>14920126, 22.0, 140.0 ]
}
		}

, 			{
"box" : 				{
"id" : "obj-45",
"maxclass" : "newobj",
"numinlets" : 2,
"numoutlets" : 1,
"outlettype" : [ "signal" ],
"patching_rect" : [<PHONE_NUMBER>99999997,<PHONE_NUMBER>99012756, 43.0, 22.0 ],
"text" : "cycle~"
}
		}

, 			{
"box" : 				{
"id" : "obj-46",
"maxclass" : "gain~",
"multichannelvariant" : 0,
"numinlets" : 1,
"numoutlets" : 2,
"outlettype" : [ "signal", "" ],
"parameter_enable" : 0,
"patching_rect" : [<PHONE_NUMBER>99999968,<PHONE_NUMBER>14920126, 22.0, 140.0 ]
}
		}

, 			{
"box" : 				{
"format" : 6,
"id" : "obj-43",
"maxclass" : "flonum",
"numinlets" : 1,
"numoutlets" : 2,
"outlettype" : [ "", "bang" ],
"parameter_enable" : 0,
"patching_rect" : [<PHONE_NUMBER>99999997,<PHONE_NUMBER>85079956, 50.0, 22.0 ]
}
		}

, 			{
"box" : 				{
"id" : "obj-42",
"linecount" : 2,
"maxclass" : "message",
"numinlets" : 2,
"numoutlets" : 1,
"outlettype" : [ "" ],
"patching_rect" : [<PHONE_NUMBER>03283031, 317.0, 91.121497631072998, 35.0 ],
"text" : "/interface 0. 33.256071"
}
		}

, 			{
"box" : 				{
"format" : 6,
"id" : "obj-40",
"maxclass" : "flonum",
"numinlets" : 1,
"numoutlets" : 2,
"outlettype" : [ "", "bang" ],
"parameter_enable" : 0,
"patching_rect" : [<PHONE_NUMBER>99999997,<PHONE_NUMBER>80148315, 50.0, 22.0 ]
}
		}

, 			{
"box" : 				{
"format" : 6,
"id" : "obj-39",
"maxclass" : "flonum",
"numinlets" : 1,
"numoutlets" : 2,
"outlettype" : [ "", "bang" ],
"parameter_enable" : 0,
"patching_rect" : [<PHONE_NUMBER>99999997,<PHONE_NUMBER>85079956, 50.0, 22.0 ]
}
		}

, 			{
"box" : 				{
"id" : "obj-33",
"maxclass" : "newobj",
"numinlets" : 1,
"numoutlets" : 1,
"outlettype" : [ "" ],
"patching_rect" : [<PHONE_NUMBER>99999997,<PHONE_NUMBER>50924683, 32.0, 22.0 ],
"text" : "mtof"
}
		}

, 			{
"box" : 				{
"id" : "obj-31",
"maxclass" : "message",
"numinlets" : 2,
"numoutlets" : 1,
"outlettype" : [ "" ],
"patching_rect" : [<PHONE_NUMBER>3502655,<PHONE_NUMBER>50924683, 50.0, 22.0 ]
}
		}

, 			{
"box" : 				{
"id" : "obj-29",
"maxclass" : "message",
"numinlets" : 2,
"numoutlets" : 1,
"outlettype" : [ "" ],
"patching_rect" : [<PHONE_NUMBER>18132019,<PHONE_NUMBER>0333254, 50.0, 22.0 ]
}
		}

, 			{
"box" : 				{
"id" : "obj-27",
"maxclass" : "newobj",
"numinlets" : 2,
"numoutlets" : 1,
"outlettype" : [ "signal" ],
"patching_rect" : [<PHONE_NUMBER>66666515,<PHONE_NUMBER>36621114, 43.0, 22.0 ],
"text" : "cycle~"
}
		}

, 			{
"box" : 				{
"id" : "obj-25",
"maxclass" : "newobj",
"numinlets" : 1,
"numoutlets" : 2,
"outlettype" : [ "float", "float" ],
"patching_rect" : [<PHONE_NUMBER>66666515,<PHONE_NUMBER>0000002, 61.0, 22.0 ],
"text" : "unpack f f"
}
		}

, 			{
"box" : 				{
"id" : "obj-21",
"maxclass" : "message",
"numinlets" : 2,
"numoutlets" : 1,
"outlettype" : [ "" ],
"patching_rect" : [<PHONE_NUMBER>4188319,<PHONE_NUMBER>0000002, 156.0, 22.0 ]
}
		}

, 			{
"box" : 				{
"id" : "obj-22",
"maxclass" : "newobj",
"numinlets" : 2,
"numoutlets" : 2,
"outlettype" : [ "", "" ],
"patching_rect" : [<PHONE_NUMBER>66666515,<PHONE_NUMBER>0000002, 95.0, 22.0 ],
"text" : "route /prediction"
}
		}

, 			{
"box" : 				{
"id" : "obj-23",
"maxclass" : "newobj",
"numinlets" : 1,
"numoutlets" : 1,
"outlettype" : [ "" ],
"patching_rect" : [ 760.0,<PHONE_NUMBER>00000006, 97.0, 22.0 ],
"text" : "udpreceive 5000"
}
		}

, 			{
"box" : 				{
"fontface" : 0,
"fontname" : "Arial",
"fontsize" : 12.0,
"id" : "obj-74",
"maxclass" : "newobj",
"numinlets" : 1,
"numoutlets" : 1,
"outlettype" : [ "" ],
"patching_rect" : [ 278.0,<PHONE_NUMBER>13070679, 105.0, 22.0 ],
"text" : "prepend /interface"
}
		}

, 			{
"box" : 				{
"fontname" : "Arial",
"fontsize" : 12.0,
"id" : "obj-58",
"maxclass" : "newobj",
"numinlets" : 2,
"numoutlets" : 1,
"outlettype" : [ "" ],
"patching_rect" : [ 278.0,<PHONE_NUMBER>50924683, 55.0, 22.0 ],
"text" : "pak 1. 1."
}
		}

, 			{
"box" : 				{
"fontname" : "Arial",
"fontsize" : 12.0,
"id" : "obj-53",
"maxclass" : "newobj",
"numinlets" : 1,
"numoutlets" : 0,
"patching_rect" : [ 278.0, 317.0, 138.0, 22.0 ],
"text" : "udpsend <IP_ADDRESS> 5001"
}
		}

, 			{
"box" : 				{
"id" : "obj-19",
"maxclass" : "gain~",
"multichannelvariant" : 0,
"numinlets" : 1,
"numoutlets" : 2,
"outlettype" : [ "signal", "" ],
"parameter_enable" : 0,
"patching_rect" : [<PHONE_NUMBER>47431286,<PHONE_NUMBER>29223735, 22.0, 140.0 ]
}
		}

, 			{
"box" : 				{
"id" : "obj-17",
"maxclass" : "ezadc~",
"numinlets" : 1,
"numoutlets" : 2,
"outlettype" : [ "signal", "signal" ],
"patching_rect" : [<PHONE_NUMBER>99999997,<PHONE_NUMBER>00000006, 45.0, 45.0 ]
}
		}

, 			{
"box" : 				{
"id" : "obj-12",
"maxclass" : "ezdac~",
"numinlets" : 2,
"numoutlets" : 0,
"patching_rect" : [<PHONE_NUMBER>53395081,<PHONE_NUMBER>37733405, 45.0, 45.0 ]
}
		}

],
"lines" : [ 			{
"patchline" : 				{
"destination" : [ "obj-2", 0 ],
"source" : [ "obj-17", 0 ]
}
		}

, 			{
"patchline" : 				{
"destination" : [ "obj-6", 0 ],
"midpoints" : [<PHONE_NUMBER>47431286,<PHONE_NUMBER>29223715,<PHONE_NUMBER>47431286,<PHONE_NUMBER>29223715,<PHONE_NUMBER>47431286,<PHONE_NUMBER>29223715,<PHONE_NUMBER>66666515,<PHONE_NUMBER>29223715 ],
"source" : [ "obj-19", 0 ]
}
		}

, 			{
"patchline" : 				{
"destination" : [ "obj-39", 0 ],
"source" : [ "obj-2", 0 ]
}
		}

, 			{
"patchline" : 				{
"destination" : [ "obj-43", 0 ],
"source" : [ "obj-2", 1 ]
}
		}

, 			{
"patchline" : 				{
"destination" : [ "obj-21", 1 ],
"midpoints" : [<PHONE_NUMBER>66666515,<PHONE_NUMBER>37422964,<PHONE_NUMBER>4188319,<PHONE_NUMBER>37422964 ],
"order" : 0,
"source" : [ "obj-22", 0 ]
}
		}

, 			{
"patchline" : 				{
"destination" : [ "obj-25", 0 ],
"order" : 1,
"source" : [ "obj-22", 0 ]
}
		}

, 			{
"patchline" : 				{
"destination" : [ "obj-5", 1 ],
"midpoints" : [<PHONE_NUMBER>66666515,<PHONE_NUMBER>42539998, 1169.5,<PHONE_NUMBER>42539998 ],
"source" : [ "obj-22", 1 ]
}
		}

, 			{
"patchline" : 				{
"destination" : [ "obj-22", 0 ],
"source" : [ "obj-23", 0 ]
}
		}

, 			{
"patchline" : 				{
"destination" : [ "obj-19", 0 ],
"midpoints" : [<PHONE_NUMBER>66666515,<PHONE_NUMBER>64611878,<PHONE_NUMBER>47431286,<PHONE_NUMBER>64611878 ],
"order" : 1,
"source" : [ "obj-25", 1 ]
}
		}

, 			{
"patchline" : 				{
"destination" : [ "obj-27", 0 ],
"order" : 0,
"source" : [ "obj-25", 0 ]
}
		}

, 			{
"patchline" : 				{
"destination" : [ "obj-29", 1 ],
"order" : 1,
"source" : [ "obj-25", 0 ]
}
		}

, 			{
"patchline" : 				{
"destination" : [ "obj-31", 1 ],
"order" : 0,
"source" : [ "obj-25", 1 ]
}
		}

, 			{
"patchline" : 				{
"destination" : [ "obj-19", 0 ],
"midpoints" : [<PHONE_NUMBER>66666515,<PHONE_NUMBER>32922425,<PHONE_NUMBER>47431286,<PHONE_NUMBER>32922425 ],
"source" : [ "obj-27", 0 ]
}
		}

, 			{
"patchline" : 				{
"destination" : [ "obj-12", 1 ],
"order" : 0,
"source" : [ "obj-3", 0 ]
}
		}

, 			{
"patchline" : 				{
"destination" : [ "obj-12", 0 ],
"order" : 1,
"source" : [ "obj-3", 0 ]
}
		}

, 			{
"patchline" : 				{
"destination" : [ "obj-40", 0 ],
"order" : 2,
"source" : [ "obj-33", 0 ]
}
		}

, 			{
"patchline" : 				{
"destination" : [ "obj-45", 0 ],
"order" : 1,
"source" : [ "obj-33", 0 ]
}
		}

, 			{
"patchline" : 				{
"destination" : [ "obj-58", 0 ],
"midpoints" : [<PHONE_NUMBER>99999997,<PHONE_NUMBER>50924683,<PHONE_NUMBER>99999984,<PHONE_NUMBER>50924683,<PHONE_NUMBER>99999984,<PHONE_NUMBER>50924683, 287.5,<PHONE_NUMBER>50924683 ],
"order" : 0,
"source" : [ "obj-33", 0 ]
}
		}

, 			{
"patchline" : 				{
"destination" : [ "obj-33", 0 ],
"source" : [ "obj-39", 0 ]
}
		}

, 			{
"patchline" : 				{
"destination" : [ "obj-46", 0 ],
"order" : 1,
"source" : [ "obj-43", 0 ]
}
		}

, 			{
"patchline" : 				{
"destination" : [ "obj-58", 1 ],
"midpoints" : [<PHONE_NUMBER>99999997,<PHONE_NUMBER>18002319, 323.5,<PHONE_NUMBER>18002319 ],
"order" : 0,
"source" : [ "obj-43", 0 ]
}
		}

, 			{
"patchline" : 				{
"destination" : [ "obj-46", 0 ],
"midpoints" : [<PHONE_NUMBER>99999997,<PHONE_NUMBER>99012756,<PHONE_NUMBER>99999968,<PHONE_NUMBER>99012756,<PHONE_NUMBER>99999968,<PHONE_NUMBER>14920126,<PHONE_NUMBER>99999968,<PHONE_NUMBER>14920126 ],
"source" : [ "obj-45", 0 ]
}
		}

, 			{
"patchline" : 				{
"destination" : [ "obj-3", 0 ],
"midpoints" : [<PHONE_NUMBER>99999968,<PHONE_NUMBER>14920126,<PHONE_NUMBER>03283031,<PHONE_NUMBER>14920126 ],
"source" : [ "obj-46", 0 ]
}
		}

, 			{
"patchline" : 				{
"destination" : [ "obj-74", 0 ],
"midpoints" : [ 287.5,<PHONE_NUMBER>13070679, 287.5,<PHONE_NUMBER>13070679 ],
"source" : [ "obj-58", 0 ]
}
		}

, 			{
"patchline" : 				{
"destination" : [ "obj-12", 1 ],
"order" : 0,
"source" : [ "obj-6", 0 ]
}
		}

, 			{
"patchline" : 				{
"destination" : [ "obj-12", 0 ],
"order" : 1,
"source" : [ "obj-6", 0 ]
}
		}

, 			{
"patchline" : 				{
"destination" : [ "obj-42", 1 ],
"midpoints" : [ 287.5,<PHONE_NUMBER>06535339,<PHONE_NUMBER>34356029,<PHONE_NUMBER>06535339 ],
"order" : 0,
"source" : [ "obj-74", 0 ]
}
		}

, 			{
"patchline" : 				{
"destination" : [ "obj-53", 0 ],
"order" : 1,
"source" : [ "obj-74", 0 ]
}
		}

],
"dependency_cache" : [ 			{
"name" : "sigmund~.mxe64",
"type" : "mx64"
}
],
"autosave" : 0
}
}

Hi Charles
Hope you're doing well!
Just wanted to make sure this didn't drop through the cyber cracks.
Absolutely no rush though!
Cheers,
Lloyd
On Mon, Nov 4, 2019 at 11:02 AM Lloyd May<EMAIL_ADDRESS>wrote:

Hi Charles
I installed python-osc 1.7.0 but still couldn't get IMPS to send things to
Max. I've included my patch, please let me know if you manage to get it
working or if there is something else I should do.
Have a great day!
Cheers,
Lloyd
On Sun, Nov 3, 2019 at 9:45 PM Charles Martin<EMAIL_ADDRESS>wrote:

Hey Lloyd, it seems that the issue was messages going from IMPS-->Max,
but that the other way was ok. I think I've found that this is an issue
with latest python-osc, could you try:
python3 -m pip install python-osc==1.7.0
I was able to reproduce this on my system with Pd. If you send me your
max patch I can try it in max as well.
Moving to pinned packages in the requirements.txt file...
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/cpmpercussion/imps/issues/5?email_source=notifications&email_token=AMG5T4F44LHPC3KOYB4FR5DQR6EFJA5CNFSM4JHMSH7KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEC6ENYI#issuecomment-549209825,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AMG5T4CLHDFNKUQH763ZVLTQR6EFJANCNFSM4JHMSH7A
.

Hey, It seems to work on my machine (not much comfort, I know!) with the following IMPS call:
python3 predictive_music_model.py -d=3 --modelsize=s --log -c
Messages go from Max to IMPS and back. I'm on MacOS 10.14.6 with Max 7.3.6
One thing to remember is that messages to IMPS should have values strictly between 0-1, I wasn't sure what values you were intended to send and get back.
Did you get any further?


Added Predis driver

The purpose of this PR is to add a Redis driver that supports Predis, which I needed recently. While the included Redis driver is great, it requires that the phpredis extension is installed. Predis is a nice alternative for those that cannot or do not want to install a PHP extension.
I implemented the driver by copying as much as I could from the existing Redis driver. Is there any interest in adding this to the Stash library? Looking forward to any feedback!
P.S. Stash is an excellent library. Really nice work. :)

Coverage decreased (-0.02%) to 91.91% when pulling 2ebe9efe5b01376e288af512d86531b574374907 on jaredtking:predis_driver into 5b830f6a0e4626e5cd02c862d37721ca16820a13 on tedious:master.

Coverage decreased (-28.69%) to 63.25% when pulling 17a6703f43d0781b4f578e16211e9f5bbba1483b on jaredtking:predis_driver into 5b830f6a0e4626e5cd02c862d37721ca16820a13 on tedious:master.

I'm very much interested in this, thank you! We'll need to figure out why this is failing on HHVM before I can include it in a release though.

The HHVM failures seem to be non-deterministic. The most recent build is now green. It seems to be related to the FileSystem driver tests so not sure if it's something I did in this PR...any thoughs?

I figured out the HHVM issues and have them resolved, so that shouldn't hold this ticket up.
However, to keep with convention I'd like a bit of a change. With the Memcache and SQLite drivers, where there are multiple extensions or subdrivers, Stash has one driver that developers access and then subdrivers behind the scenes that get used. I'd like to follow that model here, defaulting to the extension and falling back on the predis driver (with options allowing developers to specify explicitly what they want).

If you'd like a bit of a change can you not make that change yourself? It doesn't make sense to hold up this PR indefinitely over some minutiae.

Have a nice day!


Use symbol link for example

There is some workaround to let metro bundler support symbol link, so that we can directly modify the library code and test them in the example project .

I tried this in my work area, seems to work if I would add the following entry to the end of the module.exports object in example/metro.config.js (thanks to  https://github.com/facebook/metro/issues/286#issuecomment-490458858 and https://github.com/facebook/metro/issues/1#issuecomment-421628147 for pointers to the general idea):
watchFolders: ['.', '../']

(Maybe I should path.resolve as discussed in https://github.com/facebook/metro/issues/1#issuecomment-541642857.)

I just published react-native-module-init which both offers an interactive CLI and uses a symbolic link in the generated example.

[...]
watchFolders: ['.', '../']

Adding watchFolders: ['.', '../'] seems to be enough to work on React Native 0.60; additional resolver.extraNodeModules entry like @sunnylqm has in workaround metro.config.js linked from the description seems to be needed as well on React Native 0.61 & 0.62.
The following resolver entry seems to work for me on React Native 0.61 & 0.62:
  resolver: {
    extraNodeModules: new Proxy(
      {},
      { get: (_, name) => path.resolve('.', 'node_modules', name) }
    )
  }

I think @johnryan deserves credit for the pointers to both workarounds in https://github.com/facebook/metro/issues/1#issuecomment-541642857.
I am working on a new PR with this functionality, which should be ready within the next couple of days or so.

With watchFolders: ['.', '../'] watchman complains that unable to resolve root .: path "." must be absolute
I ended up using watchFolders: [path.resolve(__dirname), path.resolve(__dirname) + '/../']

hey @brodybits
Thanks to your library
I need to use it but my example app is not inside the folder of the library,
is exist beside the app like this structure
mono-repo folder
-- example-app
-- my-library
in my example app, I tried to link to my library but I got an error
in my package.json file of the App
  "dependencies": {
    "my-library": "link:../my-library",

I see in my node-modules is like the folder but when I start the app with
 npx react-native start --reset-cache
I got error
Watchman `watch-project` finished after 16.0s.
Waiting for Watchman `query` (10s).

how I can to fix it to work with my module with react-native metro bundle


NSG logs: give examples on how to query LAW for NSG traffic

The page could do with a few examples on how to query LA workspace for NSG blocks or other traffic.

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

ID: 52db43c4-1dd4-9788-1f8a-e87b690ce77c
Version Independent ID: fad1bd1f-0765-093d-bae7-166fa1520dfc
Content: Diagnostic resource logging for a network security group - Azure Virtual Network
Content Source: articles/virtual-network/virtual-network-nsg-manage-log.md
Service: virtual-network
GitHub Login: @asudbring
Microsoft Alias: allensu

@owingruters , thank you for your feedback. We have assigned this to the content owner/author for review.
@asudbring , for your review.

#assign:halkazwini


[Simple-Fix] docs links/script src and $document>ionic.bundle error

Errors
I was going to view your docs but they were not displaying, I found those simple errors and fixed it, hope it help! Awesome project by the way keep it going :)
GET http://localhost/Ionic-Material/ionic.material.min.css
GET http://localhost/Ionic-Material/ionic.material.min.js

TypeError: $document.getElementsByClassName is not a function
    at new <anonymous> (controllers.js:7)
    at e (ionic.bundle.min.js:67)
    at Object.instantiate (ionic.bundle.min.js:67)
    at $get (ionic.bundle.min.js:107)
    at l.controller.I.appendViewElement (ionic.bundle.min.js:387)
    at Object.l.factory.L.create.H.render (ionic.bundle.min.js:385)
    at Object.l.factory.L.create.H.init (ionic.bundle.min.js:385)
    at l.controller.I.render (ionic.bundle.min.js:387)
    at l.controller.I.register (ionic.bundle.min.js:387)
    at a (ionic.bundle.min.js:389)

Fixes

css and js src pointing to ../

fixed to point to ../dist dir

controller $document giving error when getting element by ID and ClassName in ionic.bundle

fixed using JS document instead of $document on getElements

Hi @Kirkhammetz . Looks great, thanks for finding the bug(s). I'm 90% sure that the $document issue is caused by me forgetting to inject $document as a dependency in Angular. Could you please try injecting $document and keeping things as $document and see if it works?

nevermind, I didn't realise that the $document references were in the docs not the ionic material library source. I've looked at your code and can confirm its suitability. Thanks.

Sorry for not answering before was working, I'm glad I've helped!


Exclude files from Scala's library-aux to prepare for 2.13.14.

Since Scala 2.13.14, the stdlib's source jar contains the files of their library-aux directory. These files are not meant to be processed by the regular compiler (only by Scaladoc). We must therefore exclude them from the compilation of the scalalib.
In the process, we remove the exclusion of /scala/util/parsing/ which has been dead code since we dropped support for Scala 2.11.

Locally tested with the "RC" 2.13.14-bin-a527019.

Upstream change: https://github.com/scala/scala/pull/10714


CustomOIDC auth provider docs does not describe where to put CLIENT_SECRET

Is some content missing, wrong or not clear?
CustomOIDC auth provider docs does not describe where to put CLIENT_SECRET
Describe the solution you'd like
Additional context

I think the helm chart does not support it too but I'm not sure.

@akash-jain-10 @ayush-shah can you double check this

Hello @hsnprsd . Generally, we do not require a client secret to configure SSO for customOIDC auth provider configuration.
You should be able set up SSO using the following docs section - https://docs.open-metadata.org/v1.2.x/deployment/security/custom-oidc
Closing the ticket! Thanks.


create a quality checking step that precedes any processing

Currently, files that are uploaded do not get read until preprocessing. So if a user uploads a wrong file format or a wrong image modality with the correct file name, then everything will seem fine until they try to run preprocessing.
Once #78 is done, they will at least see errors coming from the preprocessing.
But ideally there should be a quality checking step that happens first, right after upload.
It would read the files and report basic information about them such as whether the image can be read, the image dimensions, voxel size, and the modality (if that info is available). Then, at this step, the user should be able to delete some of their uploaded files so that they can recover the PendingUpload for those images and upload some different files.

By the way here is an example notebook that could help generate some ideas on what to include in quality checking: https://github.com/SimpleITK/TUTORIAL/blob/master/03_trust_but_verify.ipynb


chore: extract release-it config to own file

To avoid overcomplicating the package.json file, we extract release-it configuration block to its own file.

#web


How to get font data? eg.Font names, sizes, and colors

Thanks for your great job!
How to get font data of TypeLayer? eg.Font names, sizes, and colors.

@canghaiyunfan Check the documentation

@kyamagu I have found it. Thank you.


TFLITE Flower Classification codelab not working on own model it's always crashed

System information

Have I written custom code (as opposed to using a stock example script provided in TensorFlow):
OS Platform and Distribution (Ubuntu 20.04 ):
Mobile device (OPPO A37fw)
TensorFlow installed from (source or binary):
TensorFlow version (2.2.0):
Python version:3.7

Describe the current behavior
I changed the model.tflite and label.txt on my own model and labels but it's not working. Using the default tflite model and label.txt work though.
Describe the expected behavior

@gabbygab1233
Please share a simple stand alone code to replicate the issue or share a colab gist.


Enable experimental parser round-trip in test cases that no longer need it

Also, track all remaining uses of -disable-experimental-parser-round-trip by issues.

@swift-ci Please test

@swift-ci Please smoke test

@swift-ci Please test Windows


Update client-go to 1.26.5 and switch to fork

Followup to https://github.com/cilium/cilium/pull/26250

/test

/test-backport-1.13

I can give this a rubber stamp from tophat perspective but there's clearly more background that presumably goes into why it's appropriate to make this change in Cilium v1.13. I can't assess that based on the PR description. I've pinged @aanm since he triggered the CI, so I guess maybe you have some background here?

turning into draft while it gets rebased


Drop support for Python < 3.6

Updated pypy to pypy3. CI is now green.

I would not drop Py2. There is no maintenance effort and it just makes people's life harder at this point.
On Thu, Dec 24, 2020, at 12:01, Hugo Barrera wrote:

Updated pypy to pypy3. CI is now green.

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub https://github.com/untitaker/python-atomicwrites/pull/58#issuecomment-750847829, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAGMPRMY5FV752B3GVDDLQLSWMNQHANCNFSM4VIBRTHA.

makes people's life harder at this point.

Users of EOL'd versions of Python already need to pin old versions of most dependencies anyway.

That's true and I observed this firsthand. There's still no reason to drop Python 2 that would serve anyone.


Add game "Way of Rhea"

@MasonRemaley r?

Thanks

Ah just saw this, thank you for adding me to the list!! That's the picture I would've chosen too. :)


Fixes multi-language support in header

For https://github.com/kimcc/hugo-theme-noteworthy/issues/18. This fixes the header in multi-lang mode.

Thanks for your contribution!


Bot loading stale state

We have developed our bot using Microsoft Bot Composer 2.1.2 in C#. We have installed the app in Slack. We use Slack Adapter(package : Bot.Builder.Community.Adapters.Slack, version 4.13.5) to post messages from Slack to the bot. However, we are facing an issue in which the bot's response does not appear in the order it has been designed in the composer. For ex:
Slack User :  help                                                                       -- Begin Turn 1
Bot : Do you want to login? Enter the email address               -- Bot State 1
Slack User<EMAIL_ADDRESS>                                                      -- Begin Turn 2
_Bot: OTP has been emailed to you. Enter the OTP. _                -- Bot State 2
Slack User: 123456                                                                     -- Begin Turn 3
Bot : The email address is invalid. Re-enter the valid email address.   -- Bot State 3
During Turn 3, the Bot instead of loading Bot State 2, loads Bot State 1 and expects an email address. Slack sends payloads of type Activity.Message and Activity.Event to the bot.
In the Microsoft.Bot.Builder project, SaveChangesAsync method of BotState.cs, I added some code to dump the BotState in a json file
`
public virtual async Task SaveChangesAsync(ITurnContext turnContext, bool force = false, CancellationToken cancellationToken = default(CancellationToken))
{
        BotAssert.ContextNotNull(turnContext);
        var cachedState = GetCachedState(turnContext);

        using (StreamWriter writer = new StreamWriter("/Users/krithikavenugopal/Documents/Continube/BotCode/monkrit/cache-bot-state.json", append: true))
        {
            if (cachedState != null && cachedState.State != null && cachedState.State.ContainsKey("DialogState"))
            {
                writer.WriteLine("=================START OF DATA SAVE INFO====================");
                string docStr = $"Activity = {turnContext.Activity.Type} and message = {turnContext.Activity.Text}";
                writer.WriteLine(docStr);

                docStr = Newtonsoft.Json.JsonConvert.SerializeObject(cachedState);
                writer.WriteLine("Cached State is : " + docStr);
            }

            if (cachedState != null && cachedState.State != null && cachedState.State.ContainsKey("DialogState")
                        && cachedState.IsChanged())
                writer.WriteLine("Cached State Change Status is : " + ((cachedState.IsChanged()) ? "changed" : "Unchanged"));

            if (cachedState != null && (force || cachedState.IsChanged()))
            {
                if (cachedState != null && cachedState.State != null && cachedState.State.ContainsKey("DialogState"))
                    writer.WriteLine("Cached State is : " + ((cachedState.IsChanged()) ? "changed" : "not changed"));

                var key = GetStorageKey(turnContext);
                var changes = new Dictionary<string, object>
                {
                    { key, cachedState.State },
                };
                if (cachedState != null && cachedState.State != null && cachedState.State.ContainsKey("DialogState"))
                    writer.WriteLine ("Changes are : " + Newtonsoft.Json.JsonConvert.SerializeObject(changes));

                await _storage.WriteAsync(changes, cancellationToken).ConfigureAwait(false);
                cachedState.Hash = CachedBotState.ComputeHash(cachedState.State);
                if (cachedState != null && cachedState.State != null && cachedState.State.ContainsKey("DialogState"))
                    writer.WriteLine("Hash is " + cachedState.Hash);
                return;
            }
            if (cachedState != null && cachedState.State != null && cachedState.State.ContainsKey("DialogState"))
                writer.WriteLine("=====================END OF DATA SAVE INFO================");
        }
    }

`
In the output below, we can see the Bot state with  'eventCounter:17' is being loaded after  bot state 'eventCounter: 19' has been written to the storage layer.
=====================================START OF DATA SAVE INFO====================
Activity = message and message =<EMAIL_ADDRESS>Cached State is : {"State":{"DialogState":{"dialogStack":[{"id":"MyBotApp","state":{"action":"MAIN_MENU","eventCounter":19,"_adaptive":{"actions":[{"dialogId" ....
Cached State Change Status is : changed
Cached State is : changed
Changes are : {"slack/conversations/Z890LNRSMT":{"DialogState":{"dialogStack":[{"id":"MyBotApp","state":{"action":"MAIN_MENU","eventCounter":19,"_adaptive":{"actions":[{"dialogId": ...
Hash is {"DialogState":{"dialogStack":[{"id":"MyBotApp","state":{"action":"MAIN_MENU","eventCounter":19,"_adaptive":{"actions":[{"dialogId": ...
=====================================START OF DATA SAVE INFO========================
Activity = message and message =<EMAIL_ADDRESS>Cached State is : {"State":{"DialogState":{"dialogStack":[{"id":"MyBotApp","state":{"action":"MAIN_MENU","eventCounter":19,"_adaptive":{"actions":[{"dialogId": ....
=====================================END OF DATA SAVE INFO==============================
=====================================START OF DATA SAVE INFO============================
Activity = event and message =
Cached State is : {"State":{"DialogState":{"dialogStack":[{"id":"MyBotApp","state":{"action":"MAIN_MENU","eventCounter":17,"_adaptive":{"actions":[{"dialogId": ...
Cached State is : changed
Changes are : {"slack/conversations/Z890LNRSMT":{"DialogState":{"dialogStack":[{"id":"MyBotApp","state":{"action":"MAIN_MENU","eventCounter":17,"_adaptive":{"actions":[{"dialogId": ....
Hash is {"DialogState":{"dialogStack":[{"id":"MyBotApp","state":{"action":"MAIN_MENU","eventCounter":17,"_adaptive":{"actions":[{"dialogId": ....
=====================================START OF DATA SAVE INFO=============================
Activity = event and message =
Cached State is : {"State":{"DialogState":{"dialogStack":[{"id":"MyBotApp","state":{"action":"MAIN_MENU","eventCounter":17,"_adaptive":{"actions":[{"dialogId": ...
=====================================END OF DATA SAVE INFO===============================
Every event is always reading the cached state of ConverstationState from it's TurnContext.TurnState. Should we not have a SetCachedState in BotState.cs along with the existing GetCachedState.cs. GetCachedState should read from the memory instead of TurnContext's TurnState. When the bot responds to an event, it should compare the 'EventCounter' parameter of the ConverstationState in the TurnContext.TurnState and in memory cache and load the latest.
Please let us know how to solve this issue. When trying to debug, asynchronous threads run causes the debugging point to shift from one thread to another.
We are new to the bot code implementation and this level of asynchronous programming
Thanks

Every event is always reading the cached state of ConverstationState from it's TurnContext.TurnState. Should we not have a SetCachedState in BotState.cs along with the existing GetCachedState.cs. GetCachedState should read from the memory instead of TurnContext's TurnState. When the bot responds to an event, it should compare the 'EventCounter' parameter of the ConverstationState in the TurnContext.TurnState and in memory cache and load the latest.
We are new to the bot code implementation. Kindly help us.

I think the adapter needs updates as I see some other issues with it: https://github.com/BotBuilderCommunity/botbuilder-community-dotnet/issues/547 and the https://github.com/BotBuilderCommunity/botbuilder-community-dotnet/issues/535 seems related
Looks like the adapter doesn't function properly, probably due to Slack API updates

Thanks @OEvgeny.
The adapter's ProcessAsync method is getting called when the message is posted by the user as well as the bot. When the bot posts multiple messages for a query, the ProcessAsync method gets called that many times..
For ex: Bot : Waiting to log you in..
Bot : You are successfully logged in.
Bot : What would you like to do
Bot : 1. Access XYZ service
2. Access ABC service
Bot : Please enter the option number
In the case above, bot posts 5 messages and Process Async gets called 5 times.
When I try to return just return an empty message in the Adapter's ProcessAsync without calling the bot's OnTurnAsync method whenever ProcessAsync is invoked for a message posted by the bot, I don't have any issues.
But, I am not sure if there could be any issues in production down the line.
Shouldn't the bot be resilient in handling its state irrespective of number of events/messages etc triggered?
Thanks,

Shouldn't the bot be resilient in handling its state irrespective of number of events/messages etc triggered?

It should. And I believe the issue mentioned is the acapter issue, not Composer issue. If you're able to reproduce the issue with Composer only, please contact us.
Looks like botbuilder-community-dotnet haven't receive updates for a while, so there is a high chance something got changed with the Slack API preventing the adapter from working correctly

Closing due to inactivity. Feel free to reopen


Add mcclient archiveLoad command

This reads the tarball generated by mcclient archive and sends the statement ndjson to the /import API endpoint, and sends batches of data objects to /data/put

It might be nicer to have load and dump commands as subcommands of archive?
ie, instead of archive and archiveLoad, let's have archive dump and archive load

yeah, that sounds better to me too


Docker: Move docker setup into docs

Fixes #646

@claremacrae I moved the docker stuff into ./docs.

On Mac when I run ./docker_start I get:
+ docker run --rm -it --volume /Users/clare/Documents/develop/Obsidian/claremacrae/obsidian-tasks/docs:/docs:Z --publish 4000:4000 localhost/obsidian-tasks-docs:latest
Unable to find image 'localhost/obsidian-tasks-docs:latest' locally

docker-compose up no longer works:
ERROR:
        Can't find a suitable configuration file in this directory or any
        parent. Are you in the right directory?

        Supported filenames: docker-compose.yml, docker-compose.yaml, compose.yml, compose.yaml

Hi @schemar Sorry to be the bearer of bad news, but this is a regression for me - I can no longer run the docs locally.
I've got my previous version on the branch for the current PR so that will do for now.

On Mac when I run ./docker_start I get:

+ docker run --rm -it --volume /Users/clare/Documents/develop/Obsidian/claremacrae/obsidian-tasks/docs:/docs:Z --publish 4000:4000 localhost/obsidian-tasks-docs:latest

Unable to find image 'localhost/obsidian-tasks-docs:latest' locally

Hm, weird. Sorry.
Did it first build the image? Can you try removing the localhost/ part from the last line in the docker_start script and see if that helps?

The last line should only read $TAG

I may have run into a podman feature that doesn't exist in docker.

One thing I was curious about is whether the script defaults to always using the local version of the docs. I was curious about what the tag did….

Just curious... What was the motivation for the reworking of the scripts?

(I mean more than changing the paths due to different working directory...)

The last line should only read $TAG

OK That fixed it. Brilliant - thank you very much! I'm back in business! 🎉
I'll create a tiny PR to push that change...
     --volume "$PWD:/docs:Z" \
     --publish 4000:4000 \
-    "localhost/${TAG}"
+    "${TAG}"

One thing I was curious about is whether the script defaults to always using the local version of the docs. I was curious about what the tag did….

Answering my own question: yes, it does pick up changes in the local directory... 🎉

Yeah. For this simple use case, docker compose is not really necessary. It's just a container with a mounted volume. Docker compose is not necessarily part of a docker install and may be an additional dependency.

Yeah. For this simple use case, docker compose is not really necessary. It's just a container with a mounted volume. Docker compose is not necessarily part of a docker install and may be an additional dependency.

Thank you. That's good to know.


fix typo in aerosol budget printout

Fixing a typo in the aerosol budget table. Sinks should have units of Tg/yr (as the rest). Marking as draft as I don't know if you accept PRs. Feel free to cherry pick or fix as you see fit.

Nice catch! Thank you @mahf708. I will review once the PR is ready.

Thanks for the sanity check @mahf708 It is concerning that derived global mean from 3D mass concentration data would deviate from the BURDENxx output so much. And more mysterious the relative difference changes with species. Other than difference in the column integration and global averaging. Could it be that there is missing terms in these burden output? Also, I don't seem to find "BURDENBC", "BURDENDUST", "BURDENMOM", "BURDENSOA", "BURDENSO4", "BURDENPOM", "BURDENSEASALT" in standard output.

@mahf708 Thanks for your valuable input! Here is how column integration is done. The alternative you suggested should be straightforward to implementation, but I still hope to understand if there are discrepancies between 2d BURDEN terms and derived from 3d Mass  other than the vertical integration difference. It would be the best to use the same source terms when compare across models.

@mahf708 I think at the last aersol working group call, with Mingxuan's new PR, I think your simulation have both BURDEN_ and Mass_* variables. Would you share your path for climatology data, and I can try do a comparison.

@mahf708 , this column integration example is for total column ozone (TOZ), and aerosol's should be similar except the units conversion. Look at lines 1057-1062.
https://github.com/E3SM-Project/v3atm/blob/NGD_v3atm/components/eam/src/chemistry/mozart/mo_chm_diags.F90#L1063

Results show 2d BURDEN* output versus 3d MASS* using e3sm_diags using @mahf708's run: F2010.PD.NGD_v3atm.0096484.compy and ANN average.

e3sm_diags*
BURDEN*
MASS*

BC (Tg)
0.199
0.202

DUST (Tg)
31.144
31.663

MOM (Tg)
0.073
0.079

SOA (Tg)
5.082
5.467

SO4 (Tg)
0.999
1.015

POM (Tg)
1.818
1.864

SEASALT (Tg)
2.917
2.970

There does seem to be discrepancies between two methods. Consistent with Naser's results, using MASS* output always gives slightly higher numbers, and for some species the difference could be large, in this case SOA numbers deviates about 7%.  It is expected that there will be difference due to that the BURDEN* case, use the model column integration routine,  the burden is computed in e3sm_diags with MASS* output. It remains unclear if all components of each species are taken in account for both BURDEN and MASS output.

I was particularly interested in the sea salt difference... In any case, the PR is merged! Thanks again for all the input and your kind words.


Amplify v2 codegen nodownload

Is this feature request related to a new or existing Amplify category?
No response
Is this related to another service?
No response
Describe the feature you'd like to request
I'm migrating to Amplify v2 graphql API and I need to generate models from a local schema file but I can't find what should be the equivalent command for the old amplify codegen --nodownload that generates AppSync models.
I found amplify codegen models but it gives me the error No Amplify backend project files detected within this folder
Describe the solution you'd like
Being able to generate models from a local schema file with amplify codegen models --nodownload like the old amplify codegen --nodownload
Describe alternatives you've considered
None so far :(
Additional context
No response
Is this something that you'd be interested in working on?

[ ] 👋 I may be able to implement this feature request

Would this feature include a breaking change?

[ ] ⚠ This feature might incur a breaking change

hey @gevartosky ,👋 thanks for raising this! I'm going to transfer this over to our API repo for better assistance 🙂


Talk to jupyter kernel of over unix socket

Have to connect to jupyter notebook from vscode that has unix-socket exposed.
Have multiple notebook running, mapping ports is difficult; can have socket with different names.

Have multiple notebook running, mapping ports is difficult; can have socket with different names.

Not sure what you mean by mapping ports is difficult
Can you share more information about what you mean by mapping, as far as I know users do not need to know anything about these ports.
As for using unix sockets, I personally do not see us supporting this as we've not had such requests in the past and feels like a very edge case requirement.

Thanks for responding @DonJayamanne, yes understandable might be edge case requirement.
So for me structure is, want to create multiple notebooks in one repo & have separate dependencies in their own folder. Have docker-compose in each folder to start the jupyter kernel for those dependencies. Entire thing is running on local machine.
- root
  - folder1
    -> notebook1.ipynb
    -> notebook2.ipynb
    -> requirements.txt
    -> docker-compose.yaml(new port which isn't conflict, to tell VSCode how to connect to it)
    -> Dockerfile

  - folder2
    -> notebook1.ipynb
    -> notebook2.ipynb
    -> requirements.txt
    -> docker-compose.yaml(new port which isn't conflict with folder1, to tell VSCode how to connect to it)
    -> Dockerfile

Right now have docker-compose in each folder(with multiple notebooks & with requirements.txt) & whenever I'm creating new folder have to create find which port aren't already used & then create connection so there is no conflict(because there are multiple notebooks, & some are running in parallel).
Solution:
If unix socket is supported, can have unix-socket based on folder-names & do docker-compose up & connect with vscode connection based on socket path.

Understandable with bandwidth restriction, if you can guide can make changes for this.


Remove cppipc layer from SFrame

The cppipc layer becomes unnecessary once unity_server is "inproc". Removing the cppipc layer entirely will by pass data structure serialization, provide a tighter integration with python, and speed up all object passing between python and glc.

CPPIPC layer is still necessary for pylambda_worker.