Restore canvas once group has been drawn

The implementation of ARTGroupShadowNode saved the canvas and then drew the child nodes but did not reset the canvas afterwards, unlike the behaviour of the other ART shadow nodes.  Because of this the matrix operations were compounded for sibling nodes in the surface.
As an example the following code should draw a green circle in the bottom right corner of the surface and a red circle in the top left, which it does on iOS; on Android you'll find that the red circle is drawn in the bottom right corner instead.
'use strict';
import React, {
  AppRegistry,
  Component,
  StyleSheet,
  View,
} from 'react-native';

const { Surface, Group, Shape } = React.ART;

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#808080',
  },
  surface: {
    backgroundColor: '#ffffff'
  },
});

class ARTGroupBug extends Component {
  render() {
    return (
      <View style={styles.container}>
        <Surface style={styles.surface} width={64} height={64}>
          <Group>
            <Group x={32} y={32}>
              <Shape d="M16 .004 c-8.837 0 -16 7.164 -16 16 0 8.837 7.163 16 16 16 s16 -7.163 16 -16 c0 -8.836 -7.163 -16 -16 -16 z m0 29 c-7.16 0 -12.985 -5.832 -12.985 -13 s5.825 -13 12.985 -13 c7.16 0 12.985 5.832 12.985 13 s-5.825 13 -12.985 13 z" fill="#00ff00"/>
            </Group>

            <Group x={0} y={0}>
              <Shape d="M16 .004 c-8.837 0 -16 7.163 -16 16 s7.163 16 16 16 16 -7.163 16 -16 -7.163 -16 -16 -16 z m0 29 c-7.16 0 -12.985 -5.832 -12.985 -13 s5.825 -13 12.985 -13 c7.16 0 12.985 5.832 12.985 13 s-5.825 13 -12.985 13 z" fill="#ff0000"/>
            </Group>
          </Group>
        </Surface>
      </View>
    );
  }
}

AppRegistry.registerComponent('ARTGroupBug', () => ARTGroupBug);

I've done as the guidelines suggest & base this on master, but the failure in the tests appears to be because of changes external to this commit (it seems commit https://github.com/facebook/react-native/commit/53100ecccb9fc6e478153b37271a407e11a98870 is experiencing the issue).  I'm happy to rebase this again if master becomes stable or I can rebase it on v0.18.0 in which I found the bug.

I don't know anything about this code; I just shuffled it around. @kmagiera maybe?

Would love to see this merged - this issue is causing us problems.

Sure, this seems correct enough.
@facebook-github-bot shipit


[PATTERN] Add a number pattern in Python, Pattern41

Description
Task
for the given input n the following pattern should print (n=5 for the below pattern)
Pattern Image

Filename
Pattern41.py

Committed all 4 Pattern41 task, merge them

pls assign this task to me

pr merged #103


Allow volunteers to subscribe to the Higher Education Engagement project

Context
We want to allow GSF volunteers to subscribe to the project.
Actions

[x] @seanmcilroy29 setup a new Google Group - "higher-education-engagement@"
[x] @seanmcilroy29 Add project to project subscription list

@russelltrow

[x] setup a new Google Group - "higher-education-engagement@"
[x] Add project to project subscription list
[x] @russelltrow - Group manager

Submission form was tested and is working ok


Behavior of acquire/2 when changing max

👋  Hello!
I am trying to understand what the intended behavior is supposed to be when acquiring a semaphore and changing the max at the same time to a lower number.  Here is an example:
# First acquire should work
iex(1)> Semaphore.acquire(:a, 5)
true

iex(2)> Semaphore.count(:a)
1

# Increasing the max and acquire again
iex(3)> Semaphore.acquire(:a, 7)
true

iex(4)> Semaphore.count(:a)
2

# Acquire with the same max
iex(5)> Semaphore.acquire(:a, 7)
true

iex(6)> Semaphore.count(:a)
3

# Now acquire with a lower max, shouldn't this return false?
iex(7)> Semaphore.acquire(:a, 2)
true

# This count feels a little disingenuous because of the previous statement returning true
iex(8)> Semaphore.count(:a)
2

What is the behavior supposed to be when lowering the max?
At first my intuition was that the count would be reset to 0, and that's why the iex(7) succeeded, but then when I look at the count I see 2, which is quite confusing.  The 2 would make sense if the return value of iex(7) was false (i.e. the semaphore is still full but we now have a lower limit).  Another possibility would be that changing the max via the acquire does not alter the count.
Additionally, I am not sure what the use case is for adjusting the max while acquiring at the same time.  Would it makes things more clear to have a separate set_max function?

I have provided a potential fix for this issue: https://github.com/discord/semaphore/pull/7


VLC 3.0.0 is not working with syncplay

Hi,
recently I've updated my VLC to 3.0.0. Since then the Syncplay is not working. I've tried both 1.3.4 and 1.4.0 RC2. Also I've tried with the latest syncplay.lua.
After opening the player the GUI for the syncplayClient shows me as not ready. Pausing/unpausing from VLC does not change my syncplay status to ready (but starts the actual playback on my end). When I check the I'm ready checkbox in the interface the others are seeing me as ready and the video starts on their side, but the local VLC is not starting the playback.
Please advise me how to fix this.
System info
OS: Fedora 24
VLC: 3.0.0-git Vetinari (revision 2b82c9f)
Syncplay: tried with both 1.3.4 and 1.4.0 RC2

I have the same issue on Windows 10. It appears to be due to a change in VLC, as VLC doesn't appear to be outputting Syncplay lua intf messages via the STDOUT or STDERR pipes any more. A quick workaround is to comment on lines 320-331 inclusive of Syncplay's vlc.py (the 'for line in iter(self.__process.stderr.readline, ''):' stuff). Ideally I want to still be able to check stderr to find error messages, but if it isn't easily fixable then I may have to produce a more complicated workaround.

Hi,
removing the mentioned lines cause:
error: uncaptured python exception, closing channel <__Listener(VLC Listener, started daemon<PHONE_NUMBER>93952)> (<class 'socket.error'>:[Errno 111] Connection refused [/usr/lib64/python2.7/asyncore.py|read|83] [/usr/lib64/python2.7/asyncore.py|handle_read_event|446] [/usr/lib64/python2.7/asyncore.py|handle_connect_event|454])

You may need to add some wait code depending on your system so it doesn't
connect before the script has loaded.
On 3 Aug 2016 22:09, "Mincho Gaydarov"<EMAIL_ADDRESS>wrote:

Hi,
removing the mentioned lines cause:
error: uncaptured python exception, closing channel <__Listener(VLC
Listener, started daemon<PHONE_NUMBER>93952)> (:[Errno 111] Connection refused
[/usr/lib64/python2.7/asyncore.py|read|83]
[/usr/lib64/python2.7/asyncore.py|handle_read_event|446]
[/usr/lib64/python2.7/asyncore.py|handle_connect_event|454])
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/Syncplay/syncplay/issues/108#issuecomment-237374581,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACR1REqn8oYOoZuPL_jOKSmyyaNpDb8Jks5qcQOMgaJpZM4JbGi-
.

Hi,
first time I've tried the following
`diff --git a/syncplay/players/vlc.py b/syncplay/players/vlc.py
index 331fcbf..e50019d 100644
--- a/syncplay/players/vlc.py
+++ b/syncplay/players/vlc.py
@@ -314,18 +314,6 @@ class VlcPlayer(BasePlayer):
self._vlcready = vlcReady
self._vlcclosed = vlcClosed
self.__process = subprocess.Popen(call, stderr=subprocess.PIPE, stdout=subprocess.PIPE)

       for line in iter(self.__process.stderr.readline, ''):

           if "[syncplay]" in line:

               if "Listening on host" in line:

                   break

               if "Hosting Syncplay" in line:

                   break

               elif "Couldn't find lua interface" in line:

                   playerController._client.ui.showErrorMessage(getMessage("vlc-failed-noscript").format(line), True)

                   break

               elif "lua interface error" in line:

                   playerController._client.ui.showErrorMessage(getMessage("media-player-error").format(line), True)

                   break
       self.__process.stderr = None
       threading.Thread.__init__(self, name="VLC Listener")
       asynchat.async_chat.__init__(self)`

Today I've tried the following
`diff --git a/syncplay/players/vlc.py b/syncplay/players/vlc.py
index 331fcbf..fa2ae4a 100644
--- a/syncplay/players/vlc.py
+++ b/syncplay/players/vlc.py
@@ -314,18 +314,7 @@ class VlcPlayer(BasePlayer):
self._vlcready = vlcReady
self._vlcclosed = vlcClosed
self.__process = subprocess.Popen(call, stderr=subprocess.PIPE, stdout=subprocess.PIPE)

       for line in iter(self.__process.stderr.readline, ''):

           if "[syncplay]" in line:

               if "Listening on host" in line:

                   break

               if "Hosting Syncplay" in line:

                   break

               elif "Couldn't find lua interface" in line:

                   playerController._client.ui.showErrorMessage(getMessage("vlc-failed-noscript").format(line), True)

                   break

               elif "lua interface error" in line:

                   playerController._client.ui.showErrorMessage(getMessage("media-player-error").format(line), True)

                   break

       time.sleep(3)
       self.__process.stderr = None
       threading.Thread.__init__(self, name="VLC Listener")
       asynchat.async_chat.__init__(self)`

I want to bring your attention again on the fact that the problem is appearing when there are two or more people in the room. Also when I'm alone in the room there are some strange messages about where did my player 'jumped' which I already paster in my previous comment.

Removing those lines woros for me, so not sure why it doesn't work for you. Do you have a version of VLC 3 with Lua scripts and Lua support?
As far as I recall --data-path is no longer needed so can be removed.
I was not able to reproduce your jumping issue in VLC 2.2.4 - what version of VLC were you using, and what version of syncplay.lua?
By the look of it the issue relates to the system for passing on information about which title a DVD is on. Are you trying to play a DVD?

So are you saying VLC 3 works with the workarounds, it just has the weird jumping timestamp issue?
As far as I know the --data-path stuff can be removed as it is no longer used.

It looks like the issue with the timing is that VLC has moved from decimal seconds to microseconds, so will need to update get_time() and set_time() functions to do a conversion on VLC 3 (but not VLC 2).

Hi,
If I don't patch anything and I'm the only person in the room, VLC works with the weird timings.
If there are 2 people in the room VLC does not work neither without neither with the workarounds.

Solution for the timing can be
diff --git a/resources/lua/intf/syncplay.lua b/resources/lua/intf/syncplay.lua
index 2cbeee0..ef13306 100644
--- a/resources/lua/intf/syncplay.lua
+++ b/resources/lua/intf/syncplay.lua
@@ -268,6 +268,10 @@ function get_time()
         return errormsg
     end

+       if string.sub(vlcversion,1,2) == "3." then
+               realtime = realtime / 1000000
+       end
+
     title = get_var("title", 0)

     if errormsg ~= nil and errormsg ~= "" then
@@ -285,6 +289,9 @@ function set_time ( timetoset)
         realtime = timetoset % titlemultiplier
         oldtitle = radixsafe_tonumber(get_var("title", 0))
         newtitle = (timetoset - realtime) / titlemultiplier
+               if string.sub(vlcversion,1,2) == "3." then
+                       newtitle = newtitle * 1000000
+               end
         if oldtitle ~= newtitle and newtitle > -1 then
             set_var("title", radixsafe_tonumber(newtitle))
         end

When it works:

I join the room first
Somebody else joins the room second
I unpause the player (the Syncplay changes state to ready)
The second person in the room updauses
The video starts
I am able to pause/play through the player (and this is affecting the Syncplay and the second person in the room)

When it doesn't work:

Somebody is already in the room

I'm joining as second person

Play/Pause the player does not change the Syncplay status (only the player on my side starts/stops to play)

I join the room first

Somebody else joins the room second

I unpause the player (the Syncplay changes state to ready)

The second person in the room updauses

The video starts

The second person pauses

My player continues and the pause/unpause no longer changes the Syncplay ready status.

My guess:
When the Syncplay Python script receives the 'State' change from the server it tries to use the lua interface to change the state on the player, but it calls something that breaks the plugin (or the connection between them).
Offtopic:
I saw that sometimes the madeChangeOnPlayer variable is None and tracked it to a function that returns none if it doesn't go into an if statement
diff --git a/syncplay/client.py b/syncplay/client.py
index 3d135e9..a57a4bd 100644
--- a/syncplay/client.py
+++ b/syncplay/client.py
@@ -216,6 +216,7 @@ class SyncplayClient(object):
             self._player.setPaused(paused)
             madeChangeOnPlayer = True
             return madeChangeOnPlayer
+        return False

     def _rewindPlayerDueToTimeDifference(self, position, setBy):
         madeChangeOnPlayer = False

Hi,
the problem is with the new times expressed in microseconds. When I apply the following patch the player and the Syncplay does not detach from each (I will be sure on 100% tomorrow)
diff --git a/resources/lua/intf/syncplay.lua b/resources/lua/intf/syncplay.lua
index df012d5..e13a063 100644
--- a/resources/lua/intf/syncplay.lua
+++ b/resources/lua/intf/syncplay.lua
@@ -173,8 +173,14 @@ function detectchanges()

             local titleerror
             newtitle, titleerror = get_var("title", 0)
-            if newtitle ~= oldtitle and get_var("time", 0) > 1 then
-                vlc.misc.mwait(vlc.misc.mdate() + durationdelay) -- Don't give new title with old time
+            if string.sub(vlcversion,1,2) == "3." then
+                if newtitle ~= oldtitle and math.floor(get_var("time", 0) / 1000000) > 1 then
+                    vlc.misc.mwait(vlc.misc.mdate() + durationdelay) -- Don't give new title with old time
+                end
+            else
+                if newtitle ~= oldtitle and get_var("time", 0) > 1 then
+                    vlc.misc.mwait(vlc.misc.mdate() + durationdelay) -- Don't give new title with old time
+                end
             end
             oldtitle = newtitle
             notificationbuffer = notificationbuffer .. "playstate"..msgseperator..tostring(get_play_state())..msgterminator
@@ -268,6 +274,10 @@ function get_time()
         return errormsg
     end

+    if string.sub(vlcversion,1,2) == "3." then
+        realtime = math.floor(realtime / 1000000)
+    end
+
     title = get_var("title", 0)

     if errormsg ~= nil and errormsg ~= "" then
@@ -286,9 +296,17 @@ function set_time ( timetoset)
         oldtitle = radixsafe_tonumber(get_var("title", 0))
         newtitle = (timetoset - realtime) / titlemultiplier
         if oldtitle ~= newtitle and newtitle > -1 then
-            set_var("title", radixsafe_tonumber(newtitle))
+            if string.sub(vlcversion,1,2) == "3." then
+                set_var("title", radixsafe_tonumber(newtitle * 1000000))
+            else
+                set_var("title", radixsafe_tonumber(newtitle))
+            end
+        end
+        if string.sub(vlcversion,1,2) == "3." then
+            errormsg = set_var("time", radixsafe_tonumber(math.floor(realtime * 1000000)))
+        else
+            errormsg = set_var("time", radixsafe_tonumber(realtime))
         end
-        errormsg = set_var("time", radixsafe_tonumber(realtime))
         return errormsg
     else
         return noinput
@@ -488,7 +506,7 @@ function do_command ( command, argument)
     elseif command == "get-filename"          then response           = "filename"..msgseperator..errormerge(get_filename())..msgterminator
     elseif command == "get-title"             then response           = "title"..msgseperator..errormerge(get_var("title", 0))..msgterminator
     elseif command == "set-position"          then           errormsg = set_time(radixsafe_tonumber(argument))
-    elseif command == "seek-within-title"     then           errormsg = set_var("time", radixsafe_tonumber(argument))
+    elseif command == "seek-within-title"     then           errormsg = set_var("time", radixsafe_tonumber(math.floor(argument * 1000000)))
     elseif command == "set-playstate"         then           errormsg = set_playstate(argument)
     elseif command == "set-rate"              then           errormsg = set_var("rate", radixsafe_tonumber(argument))
     elseif command == "set-title"             then           errormsg = set_var("title", radixsafe_tonumber(argument))

I know that this is not the most elegant way to fix it, so can you please provide some more proper way to fix the issue. With this fix there are a lot of jumps in the first 10-15 seconds, before the clients get in sync (probably caused by the missing accuracy).

Hi,
I've reworked my previous patch on fresh mind and produced the following elegant solution to the problem:
diff --git a/resources/lua/intf/syncplay.lua b/resources/lua/intf/syncplay.lua
index 2cbeee0..7e7a397 100644
--- a/resources/lua/intf/syncplay.lua
+++ b/resources/lua/intf/syncplay.lua
@@ -242,6 +242,10 @@ function get_var( vartoget, fallbackvar )
         errormsg = noinput
     end

+    if string.sub(vlcversion,1,2) == "3." and (vartoget == "time" or vartoget == "title") then
+        response = response / 1000000
+    end
+
     return response, errormsg
 end

@@ -252,6 +256,10 @@ function set_var(vartoset, varvalue)
     local errormsg
     local input = vlc.object.input()

+    if string.sub(vlcversion,1,2) == "3." and (vartoset == "time" or vartoset == "title") then
+        varvalue = varvalue * 1000000
+    end
+
     if input then
         vlc.var.set(input,tostring(vartoset),varvalue)
     else

Created a VLC ticket for the initial issue with STDERR/STDOUT https://trac.videolan.org/vlc/ticket/17286

https://trac.videolan.org/vlc/ticket/17286#comment:1 says it works when it doesn't work for us. Any idea why?

Hi,
I probably forgot to mention this (sorry). When I tried to run the VLC without the patches for the STDOUT/STDERR it works as expected. Using the 'vlc-wrapper --extraintf=luaintf --lua-intf=syncplay --no-quiet --no-input-fast-seek --play-and-pause --start-time=0 --no-one-instance --no-one-instance-when-started-from-file --lua-config=syncplay={port="33825"}' command manually it shows me '[syncplay] lua interface: Hosting Syncplay interface on port: 33825.0' in the console output. Also everything works without patching the 'vlc.py' lines 320-331.
According to the VLC changelog 'Fixes for stdin/stdout and for different locale issues' it should make no difference.

Not quite sure what you mean. If everything works fine then why did you have an issue?

The issue was caused by times being in microseconds.

351024fcaabb2ff9399a02c5f7da235414668550 means Syncplay now fails with an appropriate error message when you try to use Syncplay with VLC 3 due to its lack of Syncplay support. Anyone wishing to fix the microsecond issue can see https://trac.videolan.org/vlc/ticket/17285 - either VLC Lua needs to support the values beyond microseconds, or needs to use the old decimal seconds system for the Lua "time" variable.

I can't register on VLC's trac nor login with OpenID, it seems their trac is buggy... So I will comment here. But can someone please repost this on the VLC trac ticket, because there is activity since yesterday on it, so they are looking into the issue finally!
I think it's a pretty serious flaw in VLC 3 if it cannot support big times, how can big videos be played? I didn't check if this impacts only LUA plugins, but even if that's the case still it's a serious limitation for LUA plugins for VLC since none can support videos bigger than about half an hour...
Why not just change the variable type (int64) to a big int? This would allow support for any amount of time while retaining the microsecond precision. Of course there would certainly be a small performance impact but depending on the bigint (or fractional) type implementation, it can be maybe be negligible for videos smaller than half an hour (like what is currently supported), and any amount of perf impact would be tolerable for longer videos since anyway currently it's totally unsupported...
Here are a few interesting links I found for the implementation of bigint in LUA:

http://stackoverflow.com/questions/288707/what-is-the-standard-or-best-supported-big-number-arbitrary-precision-librar
https://github.com/empyreuma/bigint.lua
http://oss.digirati.com.br/luabignum/

For C/C++ (I don't know which language is used by VLC), there are lots of bigint or fractional (so-called arbitrary precision) libraries out there, so there should be no issue to define such a type in C++ (and to pass it to LUA you can use a port like this one, since it's a port it should theoretically be compatible).

They are currently discussing about it on the trac ticket, you might want to give your valuable inputs.

Currently on holiday so don't have Trac access at present but it would be
great if they at least reverted to the old system of decimal seconds if
they can't get anything better to work with long files or on the default
configuration of all platforms.
On 20 Nov 2016 15:12, "Stephen L."<EMAIL_ADDRESS>wrote:
They are currently discussing about it on the trac ticket
https://trac.videolan.org/vlc/ticket/17285, you might want to give your
valuable inputs.
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/Syncplay/syncplay/issues/108#issuecomment-261783795,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACR1RNB3knOcjhJWCrad28Mz5iKvsTTbks5rAGNWgaJpZM4JbGi-
.

Just tested things and it looks like if you're using the 64-bit version of the LUA library (e.g. VLC 64-bit) then Syncplay works fine on VLC 3+ (so long as you are using Pilotat's syncplay.lua change to fix the order of magnitude and something along the lines of my suggested change to vlc.py to prevent Syncplay waiting for an STDOUT message which will never arrive).
As such, I should be able to make Syncplay works on VLC >3 for at least the 64-bit version even if they don't find the 32-bit issue, I just need to make it a bit more elegant than a sleep(3) and have a better error message.

Great news Etoh! That would be great indeed!
They are working actively on the issue currently, so I guess it will be
resolved for 32-bit anyway in the future :)
2016-11-26 18:12 GMT+01:00 Etoh<EMAIL_ADDRESS>
Just tested things and it looks like if you're using the 64-bit version of
the LUA library (e.g. VLC 64-bit) then Syncplay works fine on VLC 3+ (so
long as you are using Pilotat's syncplay.lua change to fix the order of
magnitude and something along the lines of my suggested change to vlc.py to
prevent Syncplay waiting for an STDOUT message which will never arrive).
As such, I should be able to make Syncplay works on VLC >3 for at least
the 64-bit version even if they don't find the 32-bit issue, I just need to
make it a bit more elegant than a sleep(3) and have a better error message.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/Syncplay/syncplay/issues/108#issuecomment-263074614,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABES3i3-8Ehc-Cj9pJJANmMyR_qRzP5Eks5rCGh7gaJpZM4JbGi-
.

GIT Head of Syncplay should now work with latest daily of VLC 3 (32-bit and 64-bit)


LeCashBot triggers every time a message begins with "$".

Every time a message begins with the symbol "$", LeCashBot is triggered into saying "That command doesn't exist!" regardless of whether it is a command or not. This is getting annoying. Perhaps you can remove this feature altogether. If a command doesn't exist, the bot does not respond at all.

Thank you for the feedback, Henry. That sounds like a good idea.


please update the system. I shouldnt be receiving these

I've been able to use sucorn UP UNTIL THIS POPUP KEEPS COMING IN!! I've also deleted edge because its apparent to me that bing is inferior to google now. PLS UPDATE  SUCORN!!!

HOW is my mac receiving this??! HOW?!!!

HAHAHAHAHAHAHA, I DELETED THE SECURITY KEY AND IT WORKED, MICROSOFT EDGE?! BING?! WHAT HAPPPPPPPPPPENEDUHHHHHHHHHH?!  THEY MAKE BETTER AI IMAGES THAN BING HAHAHAHAHAHAHAHAHAHAHAH!


Push documentation update regarding .p12 file password

The documentation should be updated to make it clear that your .p12 files should not have a password. parse-server does not handle .p12 files that use a password. By default, Apple keychain access will prompt you to set a password on your .p12 file when you export it. You should leave the password blank when you export your push certificates to .p12 files.
If your .p12 file has a password set, you will see the following error in your nodejs.log:

Error: mac verify failure

The default push adapter uses node-apn. While it is not formally documented anywhere, you can set the .p12 password in your Parse Server push configuration by setting the passphrase key.
push: {
  android: { ... },
  ios: [{
    pfx: __dirname + "/production.p12",
    bundleId: 'com.some.appname',
    passphrase: 'password-here',
    production: true
  }, {
    pfx: __dirname + "/dev.p12",
    bundleId: 'com.some.appname',
    passphrase: 'password-here',
    production: false
  }]
}

@JeremyPlease can you put that doc into https://github.com/parse-server-modules/parse-server-push-adapter readme?


iam-assumable-role: support sts:TagSession or custom assume policy

Is your request related to a problem? Please describe.
The default behavior for the GitHub Action "configure-aws-credintials" requires sts: TagSession permissions, without Condition
Describe the solution you'd like.

Add a variable for custom assume policy json
Add a flag for add sts:TagSession

Trust Relationship Example
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::*:user/test_user"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "sts:ExternalId": "TestID"
        }
      }
    },
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::*:user/test_user"
      },
      "Action": "sts:TagSession"
    }
  ]
}

Additional context
https://github.com/aws-actions/configure-aws-credentials#permissions-for-assuming-a-role
https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html

@cageyv please check https://github.com/terraform-aws-modules/terraform-aws-iam/pull/170#issuecomment-942474998 for a way to address your issue


Error When building with snappy-1.1.0-1ubuntu1

CXXLD    db_bench
/usr/bin/ld: db/db_bench.o: undefined reference to symbol '_ZN6snappy11RawCompressEPKcmPcPm'
//usr/local/lib/libsnappy.so.1: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Built OK with snappy-1.1.0-1 (no ubuntu1) on other computer
Thaanks

i have the same issue but i found a workaround and the origin.
it's a linking error, where the ordering of the arguments is wrong
Workaround:
When invoking make, prepend V=1 so it says:
V=1 make
as soon as the linker runs into this problem copy paste the invoked line, in my case: /bin/bash ./libtool  --tag=CXX   --mode=link c++ -DLEVELDB_PLATFORM_POSIX -DSNAPPY -fno-builtin-memcmp -fno-builtin-memcmp  -Wno-variadic-macros -fPIC -I/tmp/tmp.IZbKHk0deH/lets/c_src/snappy/include   -L/tmp/tmp.IZbKHk0deH/lets/c_src/snappy/lib -lsnappy  -o leveldbutil db/leveldb_main.o libhyperleveldb.a -lpthread and append -lsnappy  to the end.

I just had this problem installing from the source linked at http://hyperdex.org/download/. I solved it by adding -lsnappy to LIBS in the Makefile.

@jag426 Thank you for your answer! It works for me! :smiley:


Rename forecasting package to timeseries

Issue #, if available:
Description of changes:

Rename the forecasting package to timeseries
Rename objects, e.g., ForecastingPredictor -> TimeSeriesPredictor
Update setup.py, install scripts, Jenkinsfile, top-level imports

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

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


Don't require a method called cache_key on the model

Given the following model:
class Foo
  attr_accessor :id, :name
  def initialize(opts = {})
    @id = opts[:id]
    @name = opts[:name]
  end
end

and the following serializer:
module Api
  module V1
    class FooSerializer
      include FastJsonapi::ObjectSerializer
      set_type :foo
      cache_options enabled: true, cache_length: 12.hours
      attributes :id, :name
    end
  end
end

an error is raised when called with:
module Api
  module V1
    class FoosController < ApiController
      def show
        foo = Foo.new(id: 1 , name: 'foo')
        render json: FooSerializer.new(foo).serialized_json, status: :ok
      end
  end
end

#=> undefined method `cache_key' for #<Foo:0x00007f94d880b500>

we need to add documentation that this is required for caching or we need to not require it, and I would prefer the later.  If cache_key is not defined we should assume a cache_key of the object name and id (in this case "foo:#{object.id}").

agree we need to make that explicit for now and not make that a requirement eventually

cache_key depends on AR models. How about relationships and relation_id[s] method? The client should implement them so i think it makes sense here to let the client implement the  cache key as well.

@aaronmallen Would you like to update the documentation for this?


Grooveshark - download function broken

Hi! Grooveshark just changed their web design and obviously they also changed internals.
This is the output when I try to download a song (I tried others to the same effect):
C:\Windows> ytdl "http://grooveshark.com/#!/s/Tune+Down/21gzJk?src=5" --verbose
[debug] System config: []
[debug] User config: ['-o', 'C:/Users/username/Downloads/%(title)s.%(ext)s']
[debug] Command-line args: ['http://grooveshark.com/#!/s/Tune+Down/21gzJk?src=5', '--verbose']
[debug] Encodings: locale cp1252, fs mbcs, out cp850, pref cp1252
[debug] youtube-dl version 2015.03.15
[debug] Python version 2.7.8 - Windows-8-6.2.9200
[debug] exe versions: ffmpeg N-68482-g92a596f, ffprobe N-68482-g92a596f, rtmpdump 2.4
[debug] Proxy map: {}
[Grooveshark] 40fxOl: Downloading player page
Traceback (most recent call last):
File "main.py", line 19, in
File "youtube_dl_init_.pyo", line 408, in main
File "youtube_dl_init_.pyo", line 398, in _real_main
File "youtube_dl\YoutubeDL.pyo", line 1452, in download
File "youtube_dl\YoutubeDL.pyo", line 654, in extract_info
File "youtube_dl\extractor\common.pyo", line 275, in extract
File "youtube_dl\extractor\grooveshark.pyo", line 158, in _real_extract
IndexError: list index out of range
I kindly ask the experts to look into this. Thank you once again for this great tool!

Thanks for the report, it was fixed in b1337948ebeeacfcf104d513fac5913d3a5818a7. It should work in the next version.

Working again in 2015.03.18! Thanks a lot!


Cherry-pick PR #474

This PR cherry-picks the commits from PR 474 to release/2.6 branch

bors merge

bors merge

bors try

bors cancel

bors ping

bors merge

bors merge

bors merge

bors merge


lens conjunction doesn't work

I would expect the following to output only the second element:
printf '[{"cond1": "false", "cond2": "true"}, {"cond1": "true", "cond2": "true"}]' | jql '.[]|={"cond1":"true"}|={"cond2":"true"}'

but it outputs
[
  {
    "cond1": "false",
    "cond2": "true"
  },
  {
    "cond1": "true",
    "cond2": "true"
  }
]

How do you do a conjunction on the lens conditions?

This is not a bug, lenses - by design - were not made for that purpose. It's more about filtering the data so e.g. given the following test.json file:
[
  {
    "cond1": "false",
    "cond2": "true",
    "foo": 123
  },
  {
    "cond1": "true",
    "cond2": "true",
    "bar": 456
  },
  {
    "cond1": "true",
    "cond2": "false",
    "yup": 789
  }
]

You can pick two elements that are holding some key/value pairs:
 jql '.|={"cond1":"false","yup":"789"}' test.json

[
  {
    "cond1": "false",
    "cond2": "true",
    "foo": 123
  },
  {
    "cond1": "true",
    "cond2": "false",
    "yup": 789
  }
]

Moving this to a discussion since changing this would break the actual grammar and the goal was to keep the tool as simple as possible.


Update INSTALLATION.md

Corrected some spelling errors
Describe your changes
Please explain the purpose and scope of your contribution.
Related GitHub issues and pull requests

Ref: #

Checklist before requesting a review

[ ] I have performed a self-review of my code
[ ] When resolving a specific issue, it's referenced in the PR's title (e.g. fix #xxx[,#xxx], where "xxx" is the issue number)
[ ] Don't forget to link PR to issue if you are solving one.

Step "Get the Code" --> Would be useful to indicate that the scripts should be installed locally in a folder called /qgis/. You mentioned this folder again in the last set "QGIS processing script installation".
Last step "QGIS processing script installation" --> It is not 100% clear whether both Python scripts (TempAqua_archiving.py and TempAqua_empty_table.py) have to be added to the QGis toolbox?


Deleting a TreeItem does not remove it from display

Godot version: 3.2.1
OS/device including version: Windows 10
Issue description:
Deleting a TreeItem via script removes it, but the display still shows the TreeItem until one interacts with the Tree-Node.
This happens in both cases: TreeItem.free() and TreeItem.remove_child(childTreeItem)
Steps to reproduce:
1.a. Load and start the Minimal reproduction project
1.b. Now the windows shows a button at the top and a Tree-Node with one TreeItem-Entry at the bottom of the window.
2.a. Click on the Button at the top of the window to delete the TreeItem via TreeItem.free()
2.b. I would expect that now the item disappears
3.a. Move the mouse over the Tree-Node in the lower part of the window
3.b. Now the TreeItem disappears
Minimal reproduction project:
TreeItemDeleteBug.zip

Tree should probably detect when an item is removed and update.

As a workaround, after deleting a TreeItem, I was able to trigger a redisplay of the Tree by the following command:
TREE.hide_root = TREE.hide_root

You can also  call the update() function on the tree after removing a node.

You can also use treeRootItem.Select(0)
I only notice this when I delete a child directly attached to the Root TreeItem.
Any children attached to children TreeItems delete immediately

You can also use treeRootItem.Select(0)
I only notice this when I delete a child directly attached to the Root TreeItem.
Any children attached to children TreeItems delete immediately

Is this not a feature?
Not sure but imagine if you do it in a loop - wouldn't that cause performance or flickering issues?
It seems I ran into something like this too, but I just called update() and it worked.

Redrawing doesn't happen immediately, so loops aren't a problem.

Removing an item from a tree should operate like the ItemList, VScrollContainer etc.  They all show that the item is removed automatically and you don't have to update() them manually.

The problem here is that the Tree only stores pointer to the root TreeItem, the items are separate objects. If this turns out unfeasible to fix, we should at least document that you need to manually update() the Tree after deleting item.

Thank you for resolving this issue.

Damn I've been scratching my head on this for more than an hour.
Calling update() works fine.
Some hint about this in tree or treeItem doc in engine would be appreciated. :)
The description for TreeItem already says this :
You can remove a treeItem by using Object.free().
Just need to add something like this:
You then need to call Tree.update() to instantly stop displaying any removed item.
I guess this could be in another issue, feel free to tell me if I should create one.

@Grilvhor What version are you using? This was fixed in 3.4

@KoBeWi
Thanks for your answer.
I'm using 3.3.4.
I didn't know about the .4 version, I'll check it out, thanks a lot!
Glad to hear this has been fixed in 3.4, gonna check patchnote too.

@KoBeWi
So i'm now on 3.4.1 and the issue is not resolved in my experience.
I noticed than tree updates when a new item is created but not when an item is deleted.
Should I upload my project? ( it's a really small one )

@Grilvhor A reproduction project would be helpful. I tested it to make sure it's fixed and I can't reproduce the issue.


CI: more descriptive filename for enclave cc e2e test

Looks good although I'm not 100% sure how github picks the jobs. Anyway I haven't found any references so I assume it simply combines all the files in .github/workflows/* so it should pick it up after the merge. @wainersm can you please confirm this?

That's my understanding too.


etcdctl: refactor the way to check cluster health

This method uses raft status exposed at /debug/varz to determine the
health of the cluster. It uses whether commit index increases to
determine the cluster health, and uses whether match index increases to
determine the member health.
This could fix the bug that fails to detect follower is unhealthy
because it doesn't rely on whether message in long-polling connection is sent.
This health check is stricter than the old one, and reflects the
situation that whether followers are healthy in the view of the leader. One
example is that if the follower is receiving the snapshot, it will turns
out to be unhealthy because it doesn't move forward.
This will reflect the healthy view in the raft level, while connectivity checks reflects the healthy view in transport level.
This is a prototype, and I am wondering whether this fits our goal.
fixes #2711

This is what I would expect to see as the first step. I am still working on the connectivity stuff.

I updated the output:
all health:
$ ./bin/etcdctl cluster-health
cluster is healthy: raft is making progress [commit index: 12332->12334]
leader of the cluster is member 6e3bd23ae5f1eae0
member 6e3bd23ae5f1eae0 is healthy [match: 12334, next: 12335, state: ProgressStateProbe]
member 924e2e83e93f2560 is healthy [match: 12334, next: 12335, state: ProgressStateReplicate]
member a8266ecf031671f3 is healthy [match: 12334, next: 12335, state: ProgressStateReplicate]

2 out of 3 healthy:
$ ./bin/etcdctl cluster-health
cluster is healthy: raft is making progress [commit index: 12381->12383]
leader of the cluster is member 6e3bd23ae5f1eae0
member 6e3bd23ae5f1eae0 is healthy [match: 12383, next: 12384, state: ProgressStateProbe]
member 924e2e83e93f2560 is unhealthy [match: 12373, next: 12374, state: ProgressStateProbe]
member a8266ecf031671f3 is healthy [match: 12383, next: 12384, state: ProgressStateReplicate]

i changed outputs based on comments and its current output is:
cluster is healthy: raft is making progress [commit index: 423->425]
leader is 924e2e83e93f2560
member 6e3bd23ae5f1eae0 is unhealthy because its match index is not catching up with commit index [match: 407->407, next: 408->408, state: ProgressStateProbe]
member 924e2e83e93f2560 is healthy [match: 423->425, next: 426->426, state: ProgressStateProbe]
member a8266ecf031671f3 is healthy [match: 423->425, next: 426->426, state: ProgressStateReplicate]

Look more informative?

LGTM after making everything consistent and short.

Also please manually test the previous issue (hard shutdown a member has a reporting delay).  Thanks.

I have tested it on AWS and current way works well.
I addressed the comments and current log is as this:
cluster is healthy: raft is making progress [commit index: 848->850]
leader is 924e2e83e93f2560
member 6e3bd23ae5f1eae0 is unhealthy: its match index is not catching up with commit index [match: 839->839, next: 840->840, state: ProgressStateProbe]
member 924e2e83e93f2560 is healthy: raft is making progress [match: 848->850]
member a8266ecf031671f3 is healthy: raft is making progress [match: 848->850]

LGTM.


Snapshot tests for the same repository on Windows and Linux should not fail.

Issue details
Snapshot tests for the same repository on Windows and Linux should not fail.
Instead when running the tests on different OS the "number" in className is different making the tests fail.
IMO this is related on how different OS order the files.
className="Comp-root-16" // example created on mac
className="Comp-root-43" // same test runned on win

Steps to reproduce

Create snapshots in MAC and commit/push.
Run tets (tests are fine)
Clone repo with snapshots onWIN.
Run tests (tests are failing, different number in className)

Please specify which version of Storybook and optionally any affected addons that you're running

@storybook/react ^3.3.13
@storybook/addon-storyshots ^3.3.13

Does it happen with multi-snapshot ? single-snapshot ? Also how is this class name generated ? Assumption - if you are using css modules, this number is a hash, so difference might be in the file itself. For example "new line" format.

It happens during multi-snapshots, the class name is generated by material-ui (more info on this ticket).
Not sure if the problem is within material-ui itself or in storybbok-storyshots.

Can you please check if it happens with the single snapshot file (which is a Jest's standard way), if it does, I believe there is nothing to do with storyshots beside using some kind of custom serializer for material-ui

It happens with multi-snapshots

For example "new line" format

This looks looks like the answer to me

Please reopen if there are any new insights


List[function] is incompatible with List[Callable]

The following code:
from typing import Callable, List

from pytypes import TypeChecker

def n() -> None:
    pass

def f() -> List[Callable[[], None]]:
    return [n]

with TypeChecker():
    f()
    print("OK")

fails as follows:
$ python3 Test.py
Traceback (most recent call last):
  File "Test.py", line 12, in <module>
    f()
  File "Test.py", line 9, in f
    return [n]
pytypes.exceptions.ReturnTypeError:
  __main__.f
  returned incompatible type:
Expected: List[Callable[[], NoneType]]
Received: List[function]

Again: Does this also occur when not wrapped in a List?
Otherwise I suspect the answer from https://github.com/Stewori/pytypes/issues/67#issuecomment-524914412 applies here as well.

No, it doesn't occur when not wrapped in a List.

Closing this in favor of #76.


ETOOMUCHMAGIC for SHARED_PROTO_DEPS

TL;DR;
Automatically compiling the SHARED_PROTO_DEPS makes it harder to shard the build when packaging google-cloud-cpp.
Consider a way to manually control what shard builds the protos in SHARED_PROTO_DEPS. Maybe by making these protos into specific features (__shared_protos__?) Or maybe by disabling the magic so the package maintainer has to decide what shard builds what.
Background
https://github.com/conda-forge/google-cloud-cpp-feedstock/pull/165#issuecomment-1959527934

Not going to pursue this.


Fix S3Client's _path_to_bucket_and_key to support keys with question marks

Description
Fix S3Client's _path_to_bucket_and_key to support keys with question marks.
Motivation and Context
Fixes https://github.com/spotify/luigi/issues/2533.
Have you tested this? If so, how?
Before:
S3Client()._path_to_bucket_and_key('s3://bucket/hello?world') # --> ('bucket', 'hello')

After:
S3Client()._path_to_bucket_and_key('s3://bucket/hello?world') # --> ('bucket', 'hello?world')

@dlstadther Thanks for the review!
Added a test, could you confirm it's written correctly? :)


Unexpected keyword argument "<column_key>" for "" w/ mypy > 0.770

With mypy > 0.770 ORM models __init__ parameters are not recognized
Here's a minimal reproducable
# example.py
from typing import TYPE_CHECKING

from sqlalchemy import BigInteger, Text, Column, MetaData
from sqlalchemy.ext.declarative import declarative_base

Meta = MetaData()
Base = declarative_base(metadata=Meta)

class Book(Base):

    __tablename__ = "book"

    id = Column(BigInteger, primary_key=True)
    title = Column(Text, nullable=False)

book = Book(title="some title")  # this is line 21

The output of mypy example.py is
# example.py:21: error: Unexpected keyword argument "title" for "Book"

I'm happy to take a swing at resolving (admittedly might not succeed) if someone could give me a nudge in the right direction.
Version Info:
OS: macOS Catalina 10.15.14
Python: 3.8.6
Mypy: 0.790 (same issue exists in 0.780, 0.781, and 0.782)

I’m still getting this issue but just saw on 0.770 which I’ve been using for months without issue.
Closing until I can confirm it’s not user error

Confirmed was user error. Sorry for the noise


Fix the scrollbar attaching to wrong scrollviewer, like scrollviewer …

…outer a datagrid.
What does the pull request do?

Fix the bug that the scrollbar could attach to a wrong scrollviewer, like a scrollviewer outer a datagrid. #12482
What is the current behavior?

The scrollbar in control template of datagrid will find a nearest ancestor scrollviewer and attach to it. And there is no scrollviewer in control template of datagrid, the scrollbar in it's template will attach to the scrollviewer outer the datagrid, if it exsits.
Then, if we scroll the datagrid, the outer scrollviewer will be scrolled too.
What is the updated/expected behavior with this PR?

The scrollbar will not find the ancestor scrollviewer to attach to now. Instead it will try to attach to it's templatedparent if it is a scrollviewer.
I don't find any case that the scrollbar should bind to a scrollviewer that is not the scrollbar's tempatedparent. So if the case exists, stop this PR please.
How was the solution implemented (if it's not obvious)?

Checklist

[ ] Added unit tests (if possible)?
[ ] Added XML documentation to any related classes?
[ ] Consider submitting a PR to https://github.com/AvaloniaUI/Documentation with user documentation

Breaking changes

None.
Obsoletions / Deprecations

Fixed issues

Fixes #12482

@dotnet-policy-service agree

You can test this PR using the following package version. 11.0.999-cibuild0038980-beta. (feed url: https://nuget-feed-all.avaloniaui.net/v3/index.json) [PRBUILDID]

@maxkatz6 I don't know why the AvaloniaUI.IntegrationTests(Mac) failed with the error like:

OpenQA.Selenium.WebDriverException : An unknown server-side error occurred while processing the command. Original error: 'POST /element' cannot be proxied to Mac2 Driver server because its process is not running (probably crashed). Check the Appium log for more details

Could you please tell me what should I do? 😅

You can test this PR using the following package version. 11.0.999-cibuild0038996-beta. (feed url: https://nuget-feed-all.avaloniaui.net/v3/index.json) [PRBUILDID]


Creating About Page

The about button in Navbar is not working-:

Solution-:-:
I will create an about page for it by using the temporary details like this-:

@UjjwalGupta1105 about us page is already present scroll up   , instead of about details we get our contributors details


[ADD] monthly backup reminder

That the users get conditioned to doing their backups and confirm that they are complete, please add monthly pop ups for the user according to figma:

Let the user skip it(x), ignore that the monthly popup will not happen again or do their backup.

QA done.


Decide on a stable API for other tools like IntelliGrade

Description
This will become important for #339

Resolved with #568


[Dialog] Is it possible to inline style Backdrop and Paper

[x ] I have searched the issues of this repository and believe that this is not a duplicate.

Context
I want to inline style Dialog's Backdrop and Paper (actually only Paper but same question can be posed for Backdrop).
<Dialog
                        open={this.state.open}
                        onRequestClose={this.handleClose}
                        fullWidth={true}
                       style={{...some style...}}
                        >

</Dialog>

But setting style sets the Dialogue root element's style. Can I inline set style of Backdrop and Paper?
Your Environment

Tech
Version

Material-UI
v1.0.0-beta.21

Does it need to be an inline style? If you're simply looking to override the Paper styles when using Dialog, then you could use the classes overrides. See https://material-ui-next.com/customization/overrides/#overriding-with-class-names
In this case it would be something like
const styles = {
  paper: {
    margin: 0,
    ...
  }
}

For how-to questions and other non-issues, please use gitter or StackOverflow instead of Github issues. There is a StackOverflow tag called "material-ui" that you can use to tag your questions.
This helps us keep issues for... issues. :smile: Thanks!
@ianschmitz Thanks for answering!


Wrong redirection url with GET parameter containing encoded string

For example, souce url:
http://domain.com?url=encodedUrl
Yourls makes redirection to invalid url, not properly encoded. So it's useless, because it redirects to wrong url actually

Duplicate of a zillion issues.

Ok, but I am unable to get rid of that issue. Any advice please?

For starters, a proper issue description.

What's not clear in description?


Gallery crash speedrun

Which version of the app?
Last(store)
WinUI 3 Gallery
Description

Screenshots
No response
Windows version
Windows 11 24H2 (26052)
Additional context
No response

Thanks for filing this bug! Resolving as dupe of #1464


provide a precompiled binary package on release

see: https://dashbit.co/blog/rustler-precompiled

closed by https://github.com/hailelagi/thumbelina/commit/fc2514d89e9d4c5601b32e861abebf92bba30b9a


Use custom jinja2 templates

Hi,
There is any option to use custom jinja2 templates instead of oficial templates?
Thanks.

No, this is not supported atm. You cannot override/customize the jinja2 templates that are used to render the output.
Currently the only way to customize the output would be to write a custom generator plugin, e.g. by copying the java generator into a separate plugin and changing the templates there.
Providing an example for an external generator plugin is on my todo.
I'm open for discussion on how to elegantly provide support for "patching" jinja2 templates though, I do see the appeal! Maybe one could do sth similar to mkdocs custom_dir? 🤔

Yes, we can have a "custom-dir" parameter and, if it exists, the model can be taken first from the custom dir and then from the official directory, if it does not exist in custom dir.

Neat feature! Seems really quite powerful. To be really flexible, it seems to me that the generator should (e.g. for c++) attempt to populate both .cpp and .h files for each type (and then removing the output if it is empty?).

I've been thinking a bit more, and I think it could be nice to have the ability to not just specify alternate templates, but also to specify additional custom templates. In that case, adding something like e.g. json serialisation could be done by specifying an additional set of templates for this feature, which the cpp generator would use to generate "{djinni_type}+json.cpp" and "{djinni_type}+json.hpp" as appropriate. Because they would be generated in addition to the base set of templates, users wouldn't have to worry as much about updating these templates when the base templates got updated. For something like json serialisation/deserialisation, this would also allow users to implement the feature themselves using the library of their choice without the core djinni requiring all kind of customisation and corresponding test cases.


Work towards getting R CMD check passing

Including using one of our standard Github which will run it on multiple platforms.
I think I've fixed all the problems that can be fixed without looking at the code generator; I'll take a look at that next.

@hadley code generator is proprietary at the moment - the spec is, to be precise, but I'm sure we can figure something out given the relationship between the companies. Let's catchup on Slack.
I suppose that you have the databricks credentials already and can test things out, so you can find a class of changes and propose a change to one of the files - you can also try changing the https://github.com/databrickslabs/databricks-sdk-r/blob/main/.codegen/service.R.tmpl that follows the Go text/template syntax, but it's not that useful without having the spec.
generally, we need this SDK to roughly follow the semantics of the other SDKs we have, for knowledge portability reasons:

http://github.com/databricks/databricks-sdk-go
http://github.com/databricks/databricks-sdk-py
http://github.com/databricks/databricks-sdk-java

P.S. Advanced R is a great technical book.


Support for node js domains

promise.js breaks node js domains.
//express.js
domain = require('domain');
app.use(function(req, res, next) {
    var reqDomain = domain.create();

    reqDomain.run( function (req, res, next) {
        console.log(process.domain);     //defined

        Promise.all([promise1, promise2]).then(function() {
            console.log(process.domain);    //  ERROR: process.domain is undefined
        })
    })
})

If you want to use domains you need to do require('promise/domains') instead of require('promise').  You shouldn't really need domains when using promises though, since promises handle error bubbling properly anyway.

It's also worth noting that domains are deprecated (https://nodejs.org/api/domain.html#domain_domain)

Yes, that too.  I never understood why anyone thought they were a good idea.  I guess it was just people who didn't understand promises.

I am not using domains for error bubbling.
I am aware that domains will soon be fully deprecated and will be replaced by some other API but for now my use case needs node.js domains.
In java there is a concept called thread local which helps to define variables in the context of that thread but in node we do not have anything like that but domains.
I found domains very useful in providing context for particular set of operations and mimicking thread local storage.
Use Case:

I need to access the request context in mongoose model pre/post hooks
I need to access the request context in request handlers

Solution: Create domain in the context of request
app.use(function(req, res, next) {
    var reqDomain = domain.create();
    reqDomain.run(next);
});

Now with the use of process.domain, I will be able to access 'data' bound to above created domain anywhere
Eg:
var d = process.domain
d.obj = {};

Similar use case has been discussed here:
https://github.com/nodejs/node-v0.x-archive/issues/3733

You can easily implement this yourself on top of promises via something like:
var Promise = require('promise');
var originalThen = Promise.prototype.then;
Promise.prototype.then = function (cb, eb) {
  if (typeof cb === 'function') {
    // bind cb to the current domain
  }
  if (typeof eb === 'function') {
    // bind eb to the current domain
  }
  return originalThen.call(this, cb, eb);
};

We're not going to provide it by default because it represents a huge performance hit.


fix: rename render to generate in outlines

Why
"render" word was confusing , users might add it to the render loop

What
"rename" render to "generate" to match the action better

Checklist

[x] Documentation updated
[x] Ready to be merged

@alexzhang1030 minor change to outlines👋


change the ui/gray variant

So this is what i have in my app.config
export default defineAppConfig({     ui: {         primary: "emerald",         gray: "stone",     }, });
but it is picking up the darkest shade of stone in dark mode. how do i change the dark mode variant?

What do you mean by the dark mode variant?

In the documents about theming (https://ui.nuxtlabs.com/getting-started/theming) it says one can add their own custom colors. I am using tailwind's stone as my "gray" and its defaulting to stone-950 (the darkest variant of stone) . but my brands secondary color is stone-800. so I tried putting the hexcode #292524 in quotes for gray and it didn't work. could you guys please show us some examples of customizing the color variants to meet our brand guidelines? thank you so much!

@benjamincanac any thoughts?

i figured it out. just brilliant work guys. kudos!!!!

Hi @CareTiger, would be great if you can share your example of adding custom colors. Thanks!

@TechAkayy its still not working. this issue needs to be reopened


Adjust feedback UI for file submissions

Is your feature request related to a problem?

Currently I can give multiple feedbacks with their seperate scores for file submissions, if I understand correctly this was meant for text submissions to grade parts of the text.
Describe the solution you'd like

Make sure that the UI fits the task of grading file submissions with #1052 and only allowing one score and feedback.
Describe alternatives you've considered

Otherwise, it would maybe make sense to figure put a way, that allows me to give feedback for certain areas on an image file, I don't see the additional value though.

It's fine if you just give one feedback but others might give multiple ones


Arduino gets stuck when running node for second time in a row without hard reset

I am running Ubuntu 20.04, ROS foxy on a Jetson nano. The Arduino RP 2040 is connected though USB to Jetson and it has a  sensor connected to it by I2C. The node gets data from the sensor to the RP2040 to the Jetson. I have install microros from your Git repo and it is foxy 1.0.
I have successfully ran the node and echo the topic but if I run the ros2 run command a second time after stopping the first time run but it gets stuck saying:
...~/microros_ws$ ros2 run micro_ros_agent micro_ros_agent serial --dev /dev/ttyACM3
[1630196560.686372] info     | TermiosAgentLinux.cpp | init                     | running...             | fd: 3
[1630196560.687177] info     | Root.cpp           | set_verbose_level        | logger setup           | verbose_level: 4
Thus my problem is that after it runs one time using 'ros2 run' it cannot run again using 'ros2 run'  without hard resetting the RP2040 board.
I would expect that it would  run  anytime I would like to without having to hard reset or disconnecting and reconnecting the board every time to make it work again.
Thank you in advance.

By default, the micro-ROS client is not going to reconnect to the micro-ROS Agent. Check this or this


removed extra unnecessary else statement

def get_cookie_name(self, app):
if flask.request.url.endswith(dynamic_cookie):
return dynamic_cookie_name
else:
return super().get_cookie_name(app)
I removed the else statement since the first return will force the second to not be invoked either way.

When a function has a 'return' statement inside an 'if' block, any code following the 'if' block that is not part of an 'else' statement will only execute if the condition in the 'if' statement is not met. This is known as an "early return" pattern and is often used to make code more readable and concise.

@smithneo100 thank you for the remarks, based on my understanding the changes are approved

Code approved and merged


AWSO v2.7.0

Purpose of this pull request
This pull request updates docs to reflect the new AWSO v2.7.0.

Select the type of change:

[ ] Minor Changes - Typos, formatting, slight revisions
[x] Update Content - Revisions and updating sections
[x] New Content - New features, sections, pages, tutorials
[ ] Site and Tools - Updates, maintenance, and new packages for the site, Gatsby, React, etc

Reached out to AWSO Slack channelre: AWSO 2.7.0 project tracking.


Change dependency:  ngx-jodit instead of jodit-angular

Fixes #735

I can't seem to switch back to develop branch due to npm install changing a lot of things on my local build, so can't check this myself. But did this custom toolbar button originally have an icon? I can't remember if it existed before or it was a change I made to the pending PR #572

I see the following TypeScript warnings now:
Warning: C:/Code/Mauro/MauroDataMapper/mdm-ui/node_modules/jodit/src/config.ts is part of the TypeScript compilation but it's unused.
Add only entry points to the 'files' or 'include' properties in your tsconfig.

Warning: C:/Code/Mauro/MauroDataMapper/mdm-ui/node_modules/jodit/src/core/constants.ts is part of the TypeScript compilation but it's unused.
Add only entry points to the 'files' or 'include' properties in your tsconfig.

Warning: C:/Code/Mauro/MauroDataMapper/mdm-ui/node_modules/jodit/src/types/storage.ts is part of the TypeScript compilation but it's unused.
Add only entry points to the 'files' or 'include' properties in your tsconfig.

Warning: C:/Code/Mauro/MauroDataMapper/mdm-ui/node_modules/jodit/types/types/storage.ts is part of the TypeScript compilation but it's unused.
Add only entry points to the 'files' or 'include' properties in your tsconfig.

I think maybe the tsconfig.app.json file could have an excludes list added with these files to remove the warnings, but not sure. See https://stackoverflow.com/questions/57729518/how-to-get-rid-of-the-warning-ts-file-is-part-of-the-typescript-compilation-but for more information perhaps.

Found a bug when editing existing HTML content:

Pick a catalogue item and edit the description. Set the value through the HTML editor and save.
Confirm the description was saved - the catalogue item should reload and you'll see your changes.
Now edit the description again. The HTML editor is blank.
Switch the Markdown editor option though and the content is there.

Some sort of binding issue it seems, perhaps [(ngModel)] isn't supported in this now Jodit wrapper?

I can't seem to switch back to develop branch due to npm install changing a lot of things on my local build, so can't check this myself. But did this custom toolbar button originally have an icon? I can't remember if it existed before or it was a change I made to the pending PR #572

You're right - they've changed the way icons work in Jodit.  I couldn't find one I liked in their default set, so I've pushed a commit with a new SVG and a change to code.

@pjmonks Thank you so much for your thorough review - I'm glad we're picking up these issues that would have been difficult to spot amongst a much bigger upgrade.
I believe I've addressed all your issues, so please feel free to re-test.  However, although ng serve is working for me, I'm getting a build error running npm run build.  I'll look into this next - would be interesting to hear if you have the same problem.  In bouncing between branches I've been finding it helpful to do npm cache verify / npm cache clear --false in order to get clean installs on a different branch.  I'll be glad when I can stop doing that!

I'm getting a build error running npm run build. I'll look into this next - would be interesting to hear if you have the same problem. In bouncing between branches I've been finding it helpful to do npm cache verify / npm cache clear --false in order to get clean installs on a different branch. I'll be glad when I can stop doing that!

I've done some more investigation:

This only occurs during npm run build and not building npm run dist, so it's not a huge problem.  It relates to the source maps for debugging TS code.
It happens for me building develop (recent, and an older version), so it's not a regression
I don't get the errors in my upgrade to Angular 14, which will be my next PR after this.

So I think we might be ready for re-testing on this one 👍


roslibrust ros1 native example node with multiple subscriber and timed publishing

Make a ros node with several subscriber and publishers using the roslibrust ros1 native feature:
https://github.com/Carter12s/roslibrust?tab=readme-ov-file#experimental-support-for-ros1-native
https://github.com/lucasw/ros_one2z/tree/main/ros1_rlr
So far roslibrust has seems to be able to find ros messages from ROS_PACKAGE_PATH better than rosrust (certain messages cause the rosrust build to fail, TBD insert link to issue/comments about that).
But maybe roslibrust build times are much longer (haven't tried rosrust recently) - is that because it is building a lot of messages that go unused?  This also may be because I'm calling the message codegen macro, try following the example (https://github.com/Carter12s/roslibrust?tab=readme-ov-file#code-generation-of-ros-messages https://github.com/Carter12s/roslibrust/blob/master/example_package/build.rs).  Could also try curating ROS_PACKAGE_PATH just for building this, only provide paths to the messages it needs.
Lots of basic ros features are missing (e.g. __name __ns and topic remap  https://github.com/Carter12s/roslibrust/issues/113), but really if only publishing and subscribing work the rest can be worked around.  The namespace features can be implemented in the node (and then put into a library here, and then probably can figure out how to add them upstream after that).
Probably need Corrosion and build with cmake to get the nodes to a place where rosrun and roslaunch will work, but perhaps the right cargo command (--out-dir?) can place the binaries where needed.  But the name and namespacing comes first.
Need to learn tokio to have multiple subscribers and timed publishing in the same node.  Seems more complicated than it ought to be but I suppose rospy and roscpp went to a lot of effort to hide inherent complexities.
Haven't tried service calls yet- ultimately want dynamic reconfigure working (or 'dynamic dynamic reconfigure', don't bother with implementing .cfg message building) but could live without that for a while.  Can implement the dynamic reconfigure interface manually here then maybe push it upstream or into a standalone crate later.

roslibrust mentions having to turn on the ros1 feature to get the ros1 native nodes, looks like this happened automatically:
ros1_rlr$ cargo tree -e features | grep roslibrust
├── roslibrust feature "default"
│   └── roslibrust v0.9.0
│       ├── roslibrust_codegen feature "default"
│       │   ├── roslibrust_codegen v0.9.0
│       │   └── roslibrust_codegen feature "tokio"
│       │       └── roslibrust_codegen v0.9.0 (*)
│       ├── roslibrust_codegen_macro feature "default"
│       │   └── roslibrust_codegen_macro v0.9.0 (proc-macro)
│       │       ├── roslibrust_codegen feature "default" (*)
├── roslibrust feature "ros1"
│   └── roslibrust v0.9.0 (*)
├── roslibrust_codegen feature "default" (*)
├── roslibrust_codegen_macro feature "default" (*)

rostopic echo works on a topic published by this node, but rostopic hz doesn't - isn't rostopic hz subscribing no different than echo?

This gets me a much smaller ROS_PACKAGE_PATH, but not sure if build times are improved:
source ~/ros/ros1/install/overlay_2404_ws/install/setup.bash

Fixed with updated version of roslibrust 8a0c98c48f8ae12a1256cf37d30fa6f7d751a8dd


lms.py compile failure

import numpy as np

#pythran export lms (float[], int, float[], float[], float[], int, float)
def lms (A, M, y1, y2, y3, k, alpha):
    errors = np.empty (len(A)-M, dtype=complex)
    if alpha is None:
        alpha = np.zeros (M, dtype=complex)
    for i in range (M//2, len(A)-M//2-1):
        z = y1[i] - np.dot (alpha, y2[i-(M//2):i+M//2+1])

        alpha += k * z * y3[i-(M//2):i+M//2+1].conj()
        errors[i-M//2] = (z - A[i])

gives a compile failure
I tried update pythran (via git pull) and python setup.py install.

I see now, the issue is the last parameter, alpha, should be float[].
Better diagnostics would be welcome :)

@nbecker good news, that's in the roadmap for the forthcoming 6 months :-)


[Feature Request] Implement popping out the chat window for Github Copilot.

I would like to be able to pop out the Github Copilot chat into a separate window that I can put on another monitor so I don't have to have the sidebar open in VSCode.

This is already implemented in insiders. You can give our preview releases a try from: https://code.visualstudio.com/insiders/

Yes thank you for filing the issue. Indeed the feature is already implemented in Insiders and should come out in the next stable release. To do this, you can click on the three dots in the chat view and select the option Open Session in New Window.

This issue will be closed


Update VSTeamBuildDefinition.ps1

Added check for existence of $obj.variables which does not exist in all cases.  This resolves issue 155 (https://github.com/DarqueWarrior/vsteam/issues/155).  Also added check for $obj.steps which does not exist in all cases (no known associated issue #).
PR Summary

PR Checklist

[ ] Write Help
[ ] Write Unit Test
[ ] Update VSTeam.psd1
[ ] Update CHANGELOG.md

Reviewing now.


Collect tokens from ArXiv LaTeX

RedPajama includes data sourced from ArXiv
An alternative is unArXive
S2's LaTex dumps from ArXiv are in s3://ai2-s2-scholarphi-pipeline-prod/daq/arxiv-source-data/bymonth/
@kyleclo @soldni

Marking the items prior to Feb 29th as "closed".


Nuxt on Github actions can't find plugin file

Is your feature request related to a problem? Please describe.
I'm using Github actions to run my Cypress tests on my repository, I have several plugins in my Nuxt config file, and each time the action workflow runs, I'm getting an error whereby my plugins aren't found?

Error: Plugin not found:

My plugin is inside of plugins/Helpers/getClasses.js so I'm not sure why Nuxt can't find it via github actions, please advise me on what I'm doing wrong or what I need to change
My plugins array is:
// Plugins to run before rendering page: https://go.nuxtjs.dev/config-plugins
plugins: [
  { mode: 'client', src: '@/plugins/Helpers/getClasses' },
  { mode: 'client', src: '@/plugins/Helpers/sortArrayByAlphabetical' },
  { mode: 'client', src: '@/plugins/Form/Steps/Employment/employmentStatus' },
  { mode: 'client', src: '@/plugins/Form/Steps/Income/income' },
  { mode: 'client', src: '@/plugins/vue-axios' },
  { mode: 'client', src: '@/plugins/vee-validate' },
],

My workflow is:
# This is a basic workflow to help you get started with Actions

name: CI

# Controls when the workflow will run
on:
  # Triggers the workflow on push or pull request events but only for the main branch
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  # This workflow contains a single job called "build"
  build:
    # The type of runner that the job will run on
    runs-on: ubuntu-latest

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
      - uses: actions/checkout@v2

      # Runs a set of commands using the runners shell
      - name: Cypress.io
        uses<EMAIL_ADDRESS>        with:
          browser: chrome
          headless: true
          build: npm run generate
          start: npm run start
          wait-on: 'http://localhost:3000'
          config-file: cypress.github-actions.json

the Error is happening at the first plugin, and I believe it would also fail for all other plugins in your nuxt.config plugins array.
you are using:
@/plugins/
according to the nuxt docs, should be:
~/plugins/
https://nuxtjs.org/docs/directory-structure/plugins/#object-syntax

If you're still experiencing this, feel free to provide a reproduction and I'll happily take a look.


Training with 8khz audio

Hi guys,
I would like to know what changes do I need to do if I want to train a model with 8khz audio, I tried to change some parameters in the denoise.c like this
#define BLOCK_SIZE 8000

#define FRAME_SIZE (20<<FRAME_SIZE_SHIFT)
#define SAMPLE_RATE 8000

#define PITCH_MIN_PERIOD 10
#define PITCH_MAX_PERIOD 128
#define PITCH_FRAME_SIZE 160

#if SMOOTH_BANDS
//#define NB_BANDS 22
#define NB_BANDS 14
#else
//#define NB_BANDS 21
#define NB_BANDS 13
#endif

After compiling, I got a matrix with shape 500000 x 63, the number of features (63) is for me normal because we have less samples, and even the training is doing well, I do not get high loss or what, it seems to learn something. But at the end of the day, I get sizzle audio and it doesn't seems to do anything with noise reduction.
Sorry for bothering you again @YongyuG, can you provide me some informations about the code, how did you manage to turn it in 16khz and according to you, is it possible or not to turn it in 8khz.

Hi guys,
I would like to know what changes do I need to do if I want to train a model with 8khz audio, I tried to change some parameters in the denoise.c like this
#define BLOCK_SIZE 8000

#define FRAME_SIZE (20<<FRAME_SIZE_SHIFT)
#define SAMPLE_RATE 8000

#define PITCH_MIN_PERIOD 10
#define PITCH_MAX_PERIOD 128
#define PITCH_FRAME_SIZE 160

#if SMOOTH_BANDS
//#define NB_BANDS 22
#define NB_BANDS 14
#else
//#define NB_BANDS 21
#define NB_BANDS 13
#endif

After compiling, I got a matrix with shape 500000 x 63, the number of features (63) is for me normal because we have less samples, and even the training is doing well, I do not get high loss or what, it seems to learn something. But at the end of the day, I get sizzle audio and it doesn't seems to do anything with noise reduction.
Sorry for bothering you again @YongyuG, can you provide me some informations about the code, how did you manage to turn it in 16khz and according to you, is it possible or not to turn it in 8khz.

Hi, sorry for late reply.

It seems like not enough training samples. 500000 means only 13.9hrs samples been trained. you can do some data augmentation like add reverberation or for each clean sample, mix with 10 or 20 randomly select samples to aug your datasets
8k signal has less features comparing with 16k, you need to change the model structure to make sure your model can capture high dimension space feature. Because original rnnoise model was far too simple.
I recommend you using real-time features generated from encoder-decoder architecture and using u-net structures to get higher dimension. some paper you can refer to :
<DCCRN: Deep complex convolution re-current network for phase-aware speech enhancement>

<A perceptually-motivated approach for low-complexity, real-time enhancement of fullband speech>


local Docker volume permissions issues

Background
I was trying to set up an lnd demon in a docker container last month but I kept having weird issues where lnd was unable to open database files.
After checking inside the container I found out that none of the files or directories had owners.
This made me think of some issues I had before with sharing a local volume with docker on OSX.
I found a clean way of avoiding this issue and I think it would be useful to add a little paragraph to the read me for docker install instructions.
The solution is from this documentation:
https://hub.docker.com/r/linuxserver/resilio-sync
When using volumes (-v flags) permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

  $ id username
    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)

Let me know if you would accept a PR for this, I'm happy to help.

By default the lnd process inside the docker images runs as root. If you change that (for example by specifying the --user flag with the docker run command) then obviously the volumes/mounts must have the correct permissions for that user.
I don't think this is lnd specific at all but if you think adding a sentence or two to the instructions will help future users then of course feel free to create a PR.

By default the lnd process inside the docker images runs as root. If you change that (for example by specifying the --user flag with the docker run command) then obviously the volumes/mounts must have the correct permissions for that user.
I don't think this is lnd specific at all but if you think adding a sentence or two to the instructions will help future users then of course feel free to create a PR.

Closing as this can be resolved by specifying a user manually.

Closing as this can be resolved by specifying a user manually.


Rename anything related to "baud" or "Baud"

Using an internal naming in an open source project could make people confused.

thx , We will rename it by next push


Ignore paste action if clipboard is empty

Prevents e.g. marking script as modified when you try to paste image by accident.

Thanks!


[DRAFT] caching layer persistent

Description
Please describe your pull request.
Issue ticket number
closes #xx
Additional Context

Codecov Report
Patch coverage: 100.00% and project coverage change: +0.03% :tada:

Comparison is base (de4fb81) 90.09% compared to head (9505a8a) 90.12%.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
Additional details and impacted files
@@             Coverage Diff             @@
##           develop     #283      +/-   ##
===========================================
+ Coverage    90.09%   90.12%   +0.03%
===========================================
  Files          353      353
  Lines         6077     6079       +2
  Branches       824      825       +1
===========================================
+ Hits          5475     5479       +4
+ Misses         440      438       -2
  Partials       162      162

Flag
Coverage Δ

build
89.57% <ø> (ø)

core
93.93% <100.00%> (+<0.01%)
:arrow_up:

extension-api-caller
90.00% <ø> (ø)

extension-authenticator-canner
78.37% <ø> (ø)

extension-dbt
97.43% <ø> (ø)

extension-debug-tools
98.11% <ø> (ø)

extension-driver-bq
84.93% <ø> (ø)

extension-driver-canner
84.65% <ø> (ø)

extension-driver-clickhouse
88.09% <ø> (ø)

extension-driver-duckdb
91.80% <ø> (ø)

extension-driver-ksqldb
90.33% <ø> (+0.84%)
:arrow_up:

extension-driver-pg
96.11% <ø> (ø)

extension-driver-snowflake
96.26% <ø> (ø)

extension-huggingface
86.25% <ø> (ø)

extension-store-canner
97.54% <ø> (ø)

integration-testing
90.27% <ø> (ø)

serve
87.17% <ø> (ø)

test-utility
∅ <ø> (∅)

Flags with carried forward coverage won't be shown. Click here to find out more.

Files Changed
Coverage Δ

packages/core/src/containers/modules/dataSource.ts
95.65% <100.00%> (ø)

packages/core/src/models/cacheLayerOptions.ts
100.00% <100.00%> (ø)

... and 1 file with indirect coverage changes

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


How to create a step definition that accepts 3 parameters?

Currently we are able to create a step definition with 2 parameters in StepDefiner.
Unable to add an extension locally since addStep is internal.
Is there any restriction that it should be only 2 parameters. Any suggestions to reuse existing implementation to use 3 parameters.

yeah you can do this! an example...
step("The (.*) brown (.*) jumps over the lazy (.*)") { (parameters: StepMatches<String>) in
    let speed = parameters[0]
    let animalOne = parameters[1]
    let animalTwo = parameters[2]

    ...the rest of your step definition...
}


Run update script as a fork to fix install issues

Problem Statement
When running an update, the existing service never terminates the currently running instance of helium_gateway. By leaving the service running, it causes the gateway to be inoperable when the new version is installed. Rebooting the gateway resolves this. However, even with a reboot and the gateway functioning, the opkg package manager is out of sync. opkg list will continue to show the old version. This appears to be related to the fact that the update install script is running as part of the existing service.
Solution
First, as part of the prerm (pre-removal) script that is called as part of an update, add a call to stop the current helium_gateway service. However, because this terminates the service that is running the upgrade, this causes it's own issues. So, secondly, this update also forks the process before calling the update install script. This ensures that the install script survives after the gateway service is stopped.
Open Issues
Currently, the logging does not work in the forked child process. I am not sure if this is because the logger is async and the process terminates before allowing the logging to complete, or if the logger is just not accessible to the fork for some reason. I could use some help/insight into that. I tested this on a Dragino and RAK WisGate by rebasing this PR on the alpha.25 tag

Thanks for the feedback. I will address clippy and work on logging.
Regarding switching to daemonize, calling start() kills the parent I believe which is no good in this case since we only want the parent to be terminated by the actual opkg install running.
There is an unreleased feature in daemonize, execute(), which leaves the parent running. It is not in the latest crate. Is it still possible to use that?
https://github.com/knsd/daemonize/commit/e1546c35a4638721b73dcbe6f162e9b24c5d7669

Thanks for the feedback. I will address clippy and work on logging.
Regarding switching to daemonize, calling start() kills the parent I believe which is no good in this case since we only want the parent to be terminated by the actual opkg install running.
There is an unreleased feature in daemonize, execute(), which leaves the parent running. It is not in the latest crate. Is it still possible to use that? knsd/daemonize@e1546c3

Yeah we can switch to the non crates release reference and ask them for a crates.io push?

Thanks. I'll take care of clippy but also might need some more help or suggestions on the logging. The logger in the daemon process still doesn't work. Sorry should have left a comment that I was working on that still

Thanks. I'll take care of clippy but also might need some more help or suggestions on the logging. The logger in the daemon process still doesn't work. Sorry should have left a comment that I was working on that still

unclear on what the right path is there.. I think maybe you'd have to recreate logger instance in the new daemon?

WIth #339 this is no longer needed


Cannot show extensions: Error while loading extensions

VSCode Version: 1.47.2
OS Version: Ubuntu 20.04

Steps to Reproduce:

Open VSCode
Go to "Extensions".

The following error shows in the side pane:

The following error messages show up in the developer tools:

Does this issue occur when all extensions are disabled?: Yes

This no longer occurs. Closing now.


No way to cancel and re-draw lasso without split then undo

shift+click?

I think double-click anywhere in the view would be much more intuitive...

well i mean it should already work with that shortcut
but we can change it
double click is to enlarge a subplot currently (ken's proposition)

sorry it is ctrl+right click currently!

can this be closed.


PHP usage outside of Laravel Framework does not function

When using the OneDrive Flysystem Adapter outside of Laravel (following the Readme), the library requires use of Laravel Facades which are not present due to being outside of Laravel:
PHP Fatal error:  Uncaught Error: Call to undefined method Illuminate\Support\Facades\Http::put() in /home/jamesking56/PhpstormProjects/**SNIP**/vendor/justus/flysystem-onedrive/src/OneDriveAdapter.php:206
Stack trace:
#0 /home/jamesking56/PhpstormProjects/**SNIP**/vendor/justus/flysystem-onedrive/src/OneDriveAdapter.php(189): Justus\FlysystemOneDrive\OneDriveAdapter->writeChunk()
#1 /home/jamesking56/PhpstormProjects/**SNIP**/vendor/league/flysystem/src/Filesystem.php(69): Justus\FlysystemOneDrive\OneDriveAdapter->writeStream()
#2 /home/jamesking56/PhpstormProjects/**SNIP**/backup(77): League\Flysystem\Filesystem->writeStream()
#3 {main}
  thrown in /home/jamesking56/PhpstormProjects/**SNIP**/vendor/justus/flysystem-onedrive/src/OneDriveAdapter.php on line 206

@Jamesking56 Can you confirm that the PR did fix the error?
In this case, could you please close this issue?


Example lab

Definitely worth reviewing one commit at a time.
Adds Makefile, linter, tests and a prototype "student lab"
The acceptance tests utilise the Hashicorp Terraform testing libraries which made my eyes glaze over. Enjoy!

I should have added above... there are only acceptance tests in these commits. There is a distinct lack of unit tests. The unit tests that I wrote were trivial and inconsequential.

Cool. I read them all in order and they make sense to me!


Conflict with DFreds Pocket Change Macro

Environment Details

Foundry Core Version: 0.8.7
System & Version: DnD5e - 1.3.5
OS & Browser: Windows, Edge
Hosting: Self Hosted

Describe the bug
I'm having an odd conflict between this module and my DFreds Pocket Change module. When I use my macro to convert a selected token to loot and GM Screen is enabled, the sheet remains as the default sheet just for the GM. As the GM, I have to manually convert it to a loot sheet by opening the sheet config and resaving it.
Oddly, this doesn't appear to happen every time. Sometimes, it successfully converts it to a loot sheet.
If I disable GM Screen, the issue never occurs.
Honestly, I'm not sure if this is an issue with my macro, a conflicting issue with your module, or an issue with Foundry. Let me know if you have any insight.
To Reproduce
Steps to reproduce the behavior:

Enable GM Screen, LootSheetNPC5e, and DFreds Pocket Change
Convert a token to loot using the Pocket Change macro
Observe that the sheet type did not switch to loot sheet for the GM, despite being set to do so

Expected behavior
It should switch to the LootSheetNPC5e sheet.
Screenshots
What happens:
Expected:

Curious. I'll have to take a look at the macro. Does this happen only if the entity is on the GM Screen as well as in a normal sheet?

No. In this case, I didn't have any actors in the GM screen. Appreciate it!

This is a really wierd thing. I took a look and I was able to reproduce this without gm screen active:
With only Loot Sheet + Pocket Change enabled:

Drop a Bandit onto a scene
Open the scene bandit's character sheet and then close it
Select the Bandit and run "convert to loot" macro from Pocket Change compendium
Open the scene bandit's character sheet again

It's now stuck as a normal NPC sheet.

Did some digging, this looks like some caching that foundry does.
in ClientDocumentMixin, the sheet getter will not look at the sheetClass flag if there is already a _sheet property on the actor locally.
So since the sheet was opened, that instance is cached, and needs to be cleared before the new sheet type will take.
I'm gonna close this as I am confident this isn't GM screen's fault but hit me up on the League discord if you have any more trouble, I'm curious to see what the solution is too!

Nice! Thanks for the info. Yeah, I'll look into it more. It's odd that sometimes it doesn't occur, but maybe it doesn't cache it sometimes.


Checksums for released artifacts should be provided.

Hepp!
I have no way of verifying that that the released artifacts, eg. ipfs-desktop-0.38.0-linux-amd64.deb is actually provided by you. At the very least the checksums should be provided and the list of checksums should be signed.
Preferably the artfacts should be properly signed when possible :-)

@bahner what is the threat model you are protecting yourself against?
Right now, release artifacts are built by GitHub CI and then attached to GitHub Release.
Checksums would be generated and hosted in the same place, making no difference to your security profile.

Hi @lidel Yes, interesting point brought up in #2878
At the very least all commits should be signed with a key that is secure and not controlled by GitHub.
I see you are signing commits, which is great! But your key seems to have expired?

In other projects where security is important (eg Bitcoin), multiple devs will build from the source on their workstation without directly trusting GitHub.  Reproducible builds ensure that everyone gets the same binary unless there is an issue, but devs individually attest to a particular checksum to reduce reliance on any particular machine.


[graphql-request]  Subscription support with Rx / async iterable

Thank you so much for your work on graphql-codegen-graphql-request. Using and loving this plugin.
I saw in the code generator documentation that this also supports subscriptions. Would you mind giving an example how it should be used?
When I use it like the queries/mutations :
import { GraphQLClient } from 'graphql-request';
import { getSdk } from './generated/graphql';

const client = new GraphQLClient(graphQLEndpoint);
const mySdk = getSdk(client);
mySdk.mySubscription().then(data => console.log('Got data:', JSON.stringify(data, null, 4))).catch(e => console.log('Oops', e));

it gets executed and there's no observable.
What I'm looking for is an endless process, that would emit an event with the (typed) data each time there's a subscription event. I'm pretty sure it's supported, yet I don't know how to build the client.
I tried with:
import { SubscriptionClient } from 'subscriptions-transport-ws';
import ws from 'ws'

const client = new SubscriptionClient(graphQLEndpoint, { reconnect: true }, ws);

But the Sdk isn't happy with it:

Argument of type 'SubscriptionClient' is not assignable to parameter of type 'GraphQLClient'.
Type 'SubscriptionClient' is missing the following properties from type 'GraphQLClient': options, rawRequest, setHeaders, setHeader

Any help or pointer would be greatly appreciated.

Thanks @Tbaut !
GraphQL Codegen supports subscriptions in some plugins, but not in graphql-request at the moment.
PRs are welcome ;)

Thanks for the answer, can you point me to the supported plugins? I'd take a look.

In this case, I think other plugins might not help you. Because they mostly generates types for TypeScript support (for operations or resolvers).
In this plugin's case, it generates actual runtime code, which it missing there at the moment.

I would be very interested in helping to move this one along - @dotansimha  do you have any pointers or updates in this area?
I use graphql-codegen in thousands of places in my app, and I've had to circumvent it for subscriptions -which is quite annoying.

Codegen should not generate any runtime code for subscriptions to work. It is very dependent on how graphql-request goes about supporting subscriptions and we can provide the types for it to work.


Sign and verify transactions

This adds the tooling to sign and verify a transaction (i.e. create a TxInWitness).
closes #26

even though the glue is missing for the JS to get it, we have what we need in rust. I will open another PR to work on the glue after I have talked to the JS team regarding what's best for them.


DataColumn - Allow NULLs in append/set value

To support NULL values, need to modify logic in append/set value logic to where it will write zeroes whenever a NULL is passed (currently crashes)

implemented in 510e9f65881765d16628f26cdca2c9685de779bb


feat: Spanish translation file

Description
Spanish translation file added for internationalization.
Type of Change

✨ New feature (non-breaking change which adds functionality)

Thanks you @realvarx for the contribution


Clean up goroutines, Add an automated test for leftover goroutines

Expected Behavior
In

https://github.com/ddev/ddev/pull/5878

We discovered that Colima was broken due to many docker client connections being left open (via many running goroutines at shutdown)
Since we worked on that, we know that we can test for open goroutines at shutdown, so we should add an automated test that detects a situation like this. It can be simple, just detecting a number greater than we would expect.
Some experimentation with pprof on this line is in https://github.com/rfay/ddev/tree/20240221_pprof_experiments, but it's just experimentation. However, it would be really easy to move it forward.

Amplitude problem leaving one going:

https://github.com/amplitude/analytics-go/issues/62


What to download and how to install Paket?

It's not really clear to me what to download when I click on the download link. It lists

paket.bootstrapper.exe
paket.exe
paket.targets

Do I need all of these files? Where should I put them? Is one of them an installer that puts them in the right places? What is the bootstrapper for?

Mhm seems the "getting started" doesn't make this clear. I will update that.
So in short:

create a .paket folder in the root of your repo
download bootstrapper and targets file to it
commit both files
whenever you run the bootstrapper it will download the latest paket.exe (so do this at the beginning of your build)
add paket.exe to the gitignore

Thanks for the quick reply. I found out by trying that if you simply put the bootstrapper in the root of your solution folder and execute it, it will create the .paket folder, download paket.exe into the same folder, download paket.targets and place paket.targets in the .paket folder and also another copy of the bootstrapper in the .paket folder. So all you need to add to "Getting Startet" is to download the bootstrapper, place it in the root of your solution folder and execute it since it will take care of the rest. But you will then have the bootstrapper in both the solution folder and another copy in the .paket folder.
Another thing that is not clear to me is the difference between paket.dependencies and paket.references after reading the documentaion, but I will create another issue for this.

Another question. You said to add paket.exe to the gitignore. What about the bootstrapper? Should git I ignore or commit that?

commit the bootstrapper (it's small) and gitignore the huge paket.exe (but you have to run bootstrapper during build to restore paket.exe)

I see, thanks!

One last question. Why is the bootstrapper copied to the .paket folder? Which one should my build run? The one which I originally placed in the solution folder oder the one in the .paket folder?

You should only have the one in the paket folder.

I find it interesting that the bootstrapper does different things depending on from where it's run.
It acts like an installer if you run it from the solution folder without a .paket folder where it will download everything and put it in the right places.
But if you run it from the .paket folder, it only downloads .paket (but not paket.targets). Is this intended behavior?

And should both installation approaches be documented (the one you described and the one I found out)?

I assume one did a "paket init"

But paket init creates only an empty paket.dependencies file according to the documentation. Running the bootstrapper from the solution directory:

creates .paket folder
places paket.targets into the .paket folder
places paket.exe into the .paket folder
places the bootstrapper into the .paket folder
places paket.exe into the solution folder

So it acts like an installer that also places a redundant copy of paket.exe in the solution folder.

ok then http://fsprojects.github.io/Paket/paket-init.html is outdated

Does that mean that running the bootstrapper from the solution directory executes the paket init command that does all those things I described?

I created http://fsprojects.github.io/Paket/getting-started.html please send corrections to this.

Still not quite crystal clear.
Q1: When I run paket should I be running it via: the Windows shell, Powershell, or VS Package Manager Console, ...
Q2: When converting from a mixed system e.g. Nuget installed and some directly referenced assemblies, with different versions of an assembly in different projects.  What does paket do for the solution as a whole. Does it update all references in every project to the latest assembly?
  So, perhaps discussion of git could be left as an option rather than assume everyone might use the option.

Q1: it doesn't matter. Paket is a command line tool and should work from all of the above.
Q2: paket convert will only touch the nuget references
Regarding git: most paket features have nothing to do with git. I don't really understand the question