Parameteres from build

Please add ability to include in Custom Message parameteres from build. In DSL is avaialble with param[branch_name] f.ex.
Enviroment variables are good but its not what we would like to have. Thanks in advance!

Token macro support has been added in 2.4


Add Multiplexer to a Pro Micro board fails (#926)

Mux selector pins with value <=0 caused the object to be considered as uninitialized (initial values are set to negative numbers); should have correctly been "< 0".
Only affected ProMicro because on other Arduinos pin 0 is reserved and it's not available for assignment.

fixes #926


how to extend to (say) ask user to give name, phone, address and record user input into a database?

really appreciate this being published, I'm hoping to extend this example into asking guest for specific information, even extending to guest identifying themselves with user name and 'password' (say birthday) before giving the guest custom information.

Awesome, I hope you could build a nice project with this :)


Update liner library to include output redirect check fix

Use a fork of the library until the patch to the library in
peterh/liner#75 is merged.

@jwilder this is needed to allow the influx binary to work inside of a docker container.

:+1:


Adding ResNet152 or ResNeXt152?

❓ Questions and Help
Hi,
Detectron supports more models than this package, such as very deep models like ResNet152 and ResNeXt152. It will be much helpful if this package also supports ResNet152 and ResNeXt152. Any plans of adding ResNet152 or ResNeXt152 to this package?

Pre-trained Caffe2 ResNeXt152 support has been added in https://github.com/facebookresearch/maskrcnn-benchmark/pull/405  by @LeviViana


Can I get the callback fuction in vtk iren?

I have a vtk app, and I tend to use the vedo in it.
Can I get the callback fuction from vedo in vtk?
cid=plt.addCallback('KeyPress', onLeftClick)
iren = vtk.vtkRenderWindowInteractor()
iren.AddObserver(cid)
But this seems error...
Thanks

the plt variable is of class Plotter and it already has a vtkRenderWindowInteractor (as plt.interactor) , moreover the callback is already added to it.

Thanks.
For example, how can I get the observer(vtkObserver<PHONE_NUMBER>E26D80)) from a interactor.
print(interactor)->
vtkWin32RenderWindowInteractor<PHONE_NUMBER>DBF070)
Debug: Off
Modified Time: 376531
Reference Count: 2
Registered Events:
Registered Observers:
vtkObserver<PHONE_NUMBER>E26D80)
Event: 12
EventName: LeftButtonPressEvent
Command:<PHONE_NUMBER>223760
Priority: 0
Tag: 90
vtkObserver<PHONE_NUMBER>E27590)
Event: 16
EventName: RightButtonPressEvent
Command:<PHONE_NUMBER>223B60
Priority: 0
Tag: 91
vtkObserver<PHONE_NUMBER>E27620)
Event: 14
EventName: MiddleButtonPressEvent
Command:<PHONE_NUMBER>223A20
Priority: 0
Tag: 92

you should be able to retrieve it from the cid number

from vedo import Plotter
plt=Plotter()
a=plt.interactor
def onLeftClick(evn):
print('hello!')
cid=plt.addCallback('RightButtonPress', onLeftClick)
iren = vtk.vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)
#iren.Enable()
a=plt.interactor.GetCommand(cid)
a.Register(iren)
iren.Start()
But this seems not correct.

you should be able to retrieve it from the cid number
Maybe I should rewrite the observer function in Vtk mainloop?

This seems to do what it is supposed to do..:
from vedo import Plotter, Sphere, interactive

def onLeftClick(evn):
    print('hello!', evn)

plt = Plotter()

cid = plt.addCallback('RightButtonPress', onLeftClick)
print(cid)

plt.show(Sphere(), axes=1, interactive=False)

command = plt.interactor.GetCommand(cid) # vtkCommand
print([command])

interactive() # start interaction

This seems to do what it is supposed to do..:
from vedo import Plotter, Sphere, interactive

def onLeftClick(evn):
    print('hello!', evn)

plt = Plotter()

cid = plt.addCallback('RightButtonPress', onLeftClick)
print(cid)

plt.show(Sphere(), axes=1, interactive=False)

command = plt.interactor.GetCommand(cid) # vtkCommand
print([command])

interactive() # start interaction

from vedo import Plotter
plt=Plotter()
a=plt.interactor
def onLeftClick(evn):
print('hello!')
cid=plt.addCallback('RightButtonPress', onLeftClick)
iren = vtk.vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)
#iren.Enable()
a=plt.interactor.GetCommand(cid)
a.Register(iren)
iren.Start()
After I get the vtkCommand, I try to use it in the vtk interactor, but this seems not be easy.
I found the b.Excecut(iren,cid,None) and the b.Register(iren) and iren.AddObserver(cid,b), and tried then one by one. never success finnally.

sorry, I am not good at vtk as well.

The above example is incomplete so I cannot see what are you aiming at..
Also, you do not need to create instances of vtkRenderWindowInteractor because Plotter already creates it and it's exposed as plt.interactor (or at least I cannot see why you should need a new one..).

Thank you very much, Professor marcomusy
I had write some code many yeas ago with vtk, but I need and


LogicalKeySet Not Working on Linux Environment

Steps to reproduce

Create a new Flutter project.
Implement the Shortcuts widget with a specific key combination.
Test the functionality on a Windows machine (works as expected).
Test the same functionality on a Linux machine (does not work).

Expected results
The shortcuts should trigger the associated actions on both Windows and Linux environments.
Actual results
The shortcuts only trigger the actions on Windows. On Linux, there is no response when the key combination is pressed.
Code sample
The official demo of shortcuts is enough to demonstrate this:
https://dartpad.dev/?embed=true&split=60&run=true&sample_id=widgets.Shortcuts.2&channel=stable
Screenshots or Video

Screenshots / Video demonstration
https://github.com/user-attachments/assets/df74011c-878d-4d09-a61a-f04a16cb286f

Logs
Logs
❯ flutter run
Launching lib/main.dart on Linux in debug mode...
Building Linux application...
✓ Built build/linux/x64/debug/bundle/shortcut_demo

** (shortcut_demo:106985): CRITICAL **: 15:36:29.180: Failed to read XDG desktop portal settings: GDBus.Error:org.freedesktop.portal.Error.NotFound: Requested setting not found

** (shortcut_demo:106985): CRITICAL **: 15:36:29.180: Failed to read XDG desktop portal settings: GDBus.Error:org.freedesktop.portal.Error.NotFound: Requested setting not found

** (shortcut_demo:106985): CRITICAL **: 15:36:29.181: Failed to read XDG desktop portal settings: GDBus.Error:org.freedesktop.portal.Error.NotFound: Requested setting not found

** (shortcut_demo:106985): CRITICAL **: 15:36:29.181: Failed to read XDG desktop portal settings: GDBus.Error:org.freedesktop.portal.Error.NotFound: Requested setting not found

** (shortcut_demo:106985): CRITICAL **: 15:36:29.181: Failed to read XDG desktop portal settings: GDBus.Error:org.freedesktop.portal.Error.NotFound: Requested setting not found

(shortcut_demo:106985): Atk-CRITICAL **: 15:36:29.181: atk_socket_embed: assertion 'plug_id != NULL' failed
Syncing files to device Linux...                                    50ms

Flutter run key commands.
r Hot reload. 🔥🔥🔥
R Hot restart.
h List all available interactive commands.
d Detach (terminate "flutter run" but leave application running).
c Clear the screen
q Quit (terminate the application on the device).

A Dart VM Service on Linux is available at: http://<IP_ADDRESS>:40701/TtwvhbbgA4U=/
The Flutter DevTools debugger and profiler on Linux is available at: http://<IP_ADDRESS>:9102?uri=http://<IP_ADDRESS>:40701/TtwvhbbgA4U=/
Lost connection to device.

Flutter Doctor output
Doctor output
❯ flutter doctor -v
[✓] Flutter (Channel stable, 3.24.1, on NixOS 24.05 (Uakari) 6.11.2, locale en_US.UTF-8)
    • Flutter version 3.24.1 on channel stable at /nix/store/cpgyn3rn3a117nv4s1g7j5ajgbdkplby-flutter-wrapped-3.24.1-sdk-links
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision nixpkgs000 (), 1970-01-01 00:00:00
    • Engine revision c9b9d5780d
    • Dart version 3.5.1
    • DevTools version 2.37.2

[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    • Android SDK at /nix/store/jlm9zzh56f609sxlnzz78n57vj5kk2h9-android-sdk-env/share/android-sdk
    • Platform android-34, build-tools 34.0.0
    • ANDROID_HOME = /nix/store/jlm9zzh56f609sxlnzz78n57vj5kk2h9-android-sdk-env/share/android-sdk
    • ANDROID_SDK_ROOT = /nix/store/jlm9zzh56f609sxlnzz78n57vj5kk2h9-android-sdk-env/share/android-sdk
    • Java binary at: /nix/store/xy53lk4001h814d7dwh8f52wcqxrn7rp-openjdk-17.0.11+9/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.11+9-nixos)
    • All Android licenses accepted.

[✗] Chrome - develop for the web (Cannot find Chrome executable at google-chrome)
    ! Cannot find Chrome. Try setting CHROME_EXECUTABLE to a Chrome executable.

[✓] Linux toolchain - develop for Linux desktop
    • clang version 18.1.8
    • cmake version 3.29.6
    • ninja version 1.12.1
    • pkg-config version 0.29.2

[!] Android Studio (not installed)
    • Android Studio not found; download from https://developer.android.com/studio/index.html
      (or visit https://flutter.dev/to/linux-android-setup for detailed instructions).

[✓] Connected device (1 available)
    • Linux (desktop) • linux • linux-x64 • NixOS 24.05 (Uakari) 6.11.2

[✓] Network resources
    • All expected network resources are available.

! Doctor found issues in 2 categories.

In addition, I'm using Fcitx 5.

Thanks for the report! I'm using iBus keyboard input method and also seeing the issue on Linux app.
The issue doesn't happen on Web app (Chrome) or macOS desktop app.

flutter versions (stable & master)
[✓] Flutter (Channel stable, 3.24.3, on Ubuntu 22.04.4 LTS 6.8.0-40-generic, locale en_US.UTF-8)
    • Flutter version 3.24.3 on channel stable at /home/huynq/Documents/Working/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 2663184aa7 (4 weeks ago), 2024-09-11 16:27:48 -0500
    • Engine revision 36335019a8
    • Dart version 3.5.3
    • DevTools version 2.37.3

[!] Flutter (Channel master, 3.27.0-1.0.pre.47, on Ubuntu 22.04.5 LTS 6.8.0-45-generic, locale en_US.UTF-8)
    • Flutter version 3.27.0-1.0.pre.47 on channel master at /home/huynq/Documents/Working/flutter_master
    ! Warning: `flutter` on your path resolves to /home/huynq/Documents/Working/flutter/bin/flutter, which is not inside your current Flutter SDK checkout at /home/huynq/Documents/Working/flutter_master. Consider adding /home/huynq/Documents/Working/flutter_master/bin to the front of your path.
    ! Warning: `dart` on your path resolves to /home/huynq/Documents/Working/flutter/bin/dart, which is not inside your current Flutter SDK checkout at /home/huynq/Documents/Working/flutter_master. Consider adding /home/huynq/Documents/Working/flutter_master/bin to the front of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision aaccfe6170 (66 minutes ago), 2024-10-15 03:36:42 -0400
    • Engine revision 346565480b
    • Dart version 3.6.0 (build 3.6.0-334.2.beta)
    • DevTools version 2.40.1
    • If those were intentional, you can disregard the above warnings; however it is recommended to use "git" directly to perform update checks and upgrades.

@Losses Thanks for the detailed report.
@huycozy Thanks for confirming it.
I can reproduce this issue too and found that the issue started between Flutter 3.16 and 3.19.
I bisected it to https://github.com/flutter/flutter/pull/136854/files.
The weird thing is that Shorcuts are used intensively on several widgets, especially TextField and DropdownMenu, and the Shortcuts work as expected there (I work mainly on Linux and on those widgets). For the moment, I don't understand how this issue can happen with the code sample but not with those widgets.
Let me investigate this more deeply.

I figured out that the issue only happens when using LogicalKeySet.
It does not happen when using SingleActivator.
Updated code sample (arrowUp is ok, arrowDown is not)
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

/// Flutter code sample for [Shortcuts].

void main() {
  debugPrintKeyboardEvents = true;
  runApp(const ShortcutsExampleApp());
}

class ShortcutsExampleApp extends StatelessWidget {
  const ShortcutsExampleApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('Shortcuts Sample')),
        body: const Center(
          child: ShortcutsExample(),
        ),
      ),
    );
  }
}

class Model with ChangeNotifier {
  int count = 0;
  void incrementBy(int amount) {
    count += amount;
    notifyListeners();
  }

  void decrementBy(int amount) {
    count -= amount;
    notifyListeners();
  }
}

class IncrementIntent extends Intent {
  const IncrementIntent(this.amount);

  final int amount;
}

class DecrementIntent extends Intent {
  const DecrementIntent(this.amount);

  final int amount;
}

class IncrementAction extends Action<IncrementIntent> {
  IncrementAction(this.model);

  final Model model;

  @override
  void invoke(covariant IncrementIntent intent) {
    model.incrementBy(intent.amount);
  }
}

class DecrementAction extends Action<DecrementIntent> {
  DecrementAction(this.model);

  final Model model;

  @override
  void invoke(covariant DecrementIntent intent) {
    model.decrementBy(intent.amount);
  }
}

class ShortcutsExample extends StatefulWidget {
  const ShortcutsExample({super.key});

  @override
  State<ShortcutsExample> createState() => _ShortcutsExampleState();
}

class _ShortcutsExampleState extends State<ShortcutsExample> {
  Model model = Model();

  @override
  Widget build(BuildContext context) {
    return Shortcuts(
      shortcuts: <ShortcutActivator, Intent>{
        const SingleActivator(LogicalKeyboardKey.arrowUp): const IncrementIntent(2), // Works
        LogicalKeySet(LogicalKeyboardKey.arrowDown): const DecrementIntent(2),       // Doesn't work.
      },
      child: Actions(
        actions: <Type, Action<Intent>>{
          IncrementIntent: IncrementAction(model),
          DecrementIntent: DecrementAction(model),
        },
        child: Focus(
          autofocus: true,
          child: Column(
            children: <Widget>[
              const Text('Add to the counter by pressing the up arrow key'),
              const Text(
                  'Subtract from the counter by pressing the down arrow key'),
              ListenableBuilder(
                listenable: model,
                builder: (BuildContext context, Widget? child) {
                  return Text('count: ${model.count}');
                },
              ),
            ],
          ),
        ),
      ),
    );
  }
}

This explains why shortcuts on various widgets works normally as they rely on activators.
I will pursue my investigation and try to file a PR with a fix for LogicalKeySet if possible (because it is Linux only there might something related to the keyboard state on Linux), and I will also update the shortcut example to use a SingleActivator according to LogicalKeySet documentation :
"prefer SingleActivator when possible, whose behavior more closely resembles that of typical platforms".
@Losses Does using SingleActivator works for you?

@Losses Does using SingleActivator works for you?

Yes, it works @bleroux

The reason why LogicalKeySet works on Windows and not on Linux, is that the state of the numlock key is properly managed on Linux. So when numlock is on, LogicalKeySet(LogicalKeyboardKey.arrowDown) will not trigger the intent, I think this work as intended and the solution is either to:

use SingleActivator.
define shortcuts that expect the various combination, for instance:

        LogicalKeySet(LogicalKeyboardKey.arrowDown): const DecrementIntent(2),
        LogicalKeySet(LogicalKeyboardKey.arrowDown, LogicalKeyboardKey.numLock): const DecrementIntent(2),

My plan is to file a PR to fix the example because it should not promote LogicalKetSet over SingleActivator. If possible I will try to improve LogicalKetSet documentation to warn about such cases.

I filed https://github.com/flutter/flutter/pull/156941 to fix the example.
Keeping this issue open because I need more time to understand how the 'lock' keys state is supposed to be work.

Unassigning myself for the moment.
The example was updated in https://github.com/flutter/flutter/pull/156941.
Improving LogicalKetSet documentation based on https://github.com/flutter/flutter/issues/156806#issuecomment-2414191872 would be nice.


New tutorial for TraceSpanDict

Added a tutorial to log TraceSpanDict traces

this is super helpful, I understand it now! If we get a chance, let's add a more detailed/realistic example where the different spans correspond to a meaningful hierarchy.

Agreed, that'd be great


Explorer: change default plot type from line to scatter

Addresses https://github.com/holoviz/hvplot/issues/886

Just to confirm, you are okay with this behavior change in a microrelease?

Yes totally.


Throw error is expire time is set too high

We will now throw an error if passing in an invalid value to the time parameter

I'm also updating the package file to v0.2.0 to account for the merge that was done this morning, #85

what do you think about https://github.com/ptarjan/node-cache/pull/88 instead?

That would work as well.  Make sure to increment the package file version so folks with CI builds can use the newest features


Ensure ports are integers when creating Rule

Fixes https://github.com/projectcalico/calico-kubernetes/issues/131

LGTM


Segfault under cgroup limitation

Running xhprof in a cgroup-limited environment (using cpuset.cpus feature) causes xhprof to be killed by a segfault every time.
How to reproduce : easiest way is to create a lxc container with lxc.cgroup.cpuset.cpus = 0 on a multi-core computer and run scripts/xhprofile.php in it.
-$ pwd
~/xhprof/scripts
-$ ./xhprofile.php xhprofile.php
setaffinity: Invalid argument
Segmentation fault

Expected behavior : it should run. Well, at least, it should not get a segfault.
Environment : debian, kernel 3.12, lxc 0.8

Hi @billietl ,
It seems I encountered the same issue. Did you figure out any workaround for this problem?

ref: https://github.com/lxc/lxcfs/issues/88


Suppressing remaining lint warnings.

Lint warnings for some html files will be left untouched. This is because Komaci's static analysis is too aggressive in enforcing its rule. The code is still valid even with the warnings. We need Komaci to be more flexible instead.
Interesting note. Eslint plugin cannot suppress lint warnings in html using //eslint-disable variants. It may be a feature which we may need to look into in eslint-plugin-lwc-graph-analyzer.

@khawkins FYI, verified that removing template from errorPanel and making it a LWC bundle works.


[builtin-function] Add builtin function: uuid

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.dorianzheng seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


Type error: Don't use {} as a type

Bug report
Describe the bug
With v2 I get this error after having generated types, probably because of TS strict mode:
Don't use `{}` as a type. `{}` actually means "any non-nullish value".
- If you want a type meaning "any object", you probably want `Record<string, unknown>` instead.
- If you want a type meaning "any value", you probably want `unknown` instead.
- If you want a type meaning "empty object", you probably want `Record<string, never>` instead.

due to the generated types including this:
export interface Database {
		Functions: {}
	}
}

To Reproduce
Steps to reproduce the behavior, please provide code snippets or a repository:
TypeScript strict mode probably needs to be enabled.
Run supabase gen types typescript --local > databaseDefinitions.ts
System information

OS: macOS
Version of supabase-js: 2.0.0-rc.6
Version of Node.js: 16.15.0

The error seems to be coming from typescript-eslint. What do you suggest the replacement should be? Record<string, never> is not exactly correct, see https://github.com/microsoft/TypeScript/issues/47486#issuecomment-1015671856

I don't really see why Record<string, never> doesn't fit. It doesn't seem like it's supposed to have any properties, so why would you ever need to access it's properties?

It needs to give a TS error when accessing a property, whereas Record<string, never> allows accessing properties (with value of type never).

Actually, Record<never, never> seems to work. It resolves to {} but seems to fool ts-eslint somehow.


filter against full names/types, not truncated

This patch makes dfc store the original fsname, fstype, and mntdir
in seperate variables before truncating them so that we can use either.
Also, name and type filtering now filters against these newly added
"og" variables.
This is essentially one proposed fix for the issue I point out in https://projects.gw-computing.net/issues/134.
If you would like to get rid of the truncation altogether, thus rendering this patch obsolete, that's also cool with me. 👍
ONLY TESTED ON LINUX
I did not compile and test on bsd or solaris.

Just for clarity, this is the change in behavior introduced by this patch:
# grep long /etc/mtab
/dev/mapper/testvg-very--long--lv--name /tmp/verylongmountdir ext4 rw,relatime,data=ordered 0 0

### BEFORE ###
# dfc -p /dev
FILESYSTEM               (=) USED      FREE (-)  %USED AVAILABLE  TOTAL MOUNTED ON
/dev/mapper/luks-root    [===================-]  94.7%     12.4G 232.7G /
/dev/sda1                [====----------------]  15.7%    815.9M 968.3M /boot
/dev/mapper/luks-root    [===================-]  94.7%     12.4G 232.7G /var/lib/docker/plugins
/dev/mapper/luks-root    [===================-]  94.7%     12.4G 232.7G +lib/docker/devicemapper

### AFTER ###
# bin/dfc -p /dev
FILESYSTEM               (=) USED      FREE (-)  %USED AVAILABLE  TOTAL MOUNTED ON
/dev/mapper/luks-root    [===================-]  94.7%     12.4G 232.7G /
/dev/sda1                [====----------------]  15.7%    815.9M 968.3M /boot
/dev/mapper/luks-root    [===================-]  94.7%     12.4G 232.7G /var/lib/docker/plugins
/dev/mapper/luks-root    [===================-]  94.7%     12.4G 232.7G +lib/docker/devicemapper
+vg-very--long--lv--name [==------------------]   6.3%      1.8G   1.9G /tmp/verylongmountdir

Nice catch! I did not test your patch on BSD or Solaris yet but I see no reason why it would not work since the changes are essentially the same for all platforms and they modify the non-platform specific part of the fsmntinfo structure.
I am indeed planning on removing the truncation feature altogether since it seems that it usually confuses users but I'm unsure yet if I should simply completely get rid of it or make truncation an option switch rather than the default. Any opinion?
I think that in the meantime, I shall go ahead, merge your PR and release 3.1.1.
Oh, you may want to add your name to the list of contributors before I merge :wink:

I'm unsure yet if I should simply completely get rid of it or make truncation an option switch rather than the default. Any opinion?

I think it's simple enough that it would be acceptable to keep it as an option even if there is one guy who would want it, instead of completely removing it.

Oh, you may want to add your name to the list of contributors before I merge

done!

Thanks!


Woff2 font from Google Fonts is broken

Check out this CodePen. If you run it on Chrome you'll get:
Failed to decode downloaded font: https://fonts.gstatic.com/s/notocoloremoji/v1/Yq6P-KqIXTD0t4D9z1ESnKM3-HpFabsE4tq3luCC7p-aXw.0.woff2
OTS parsing error: Unable to instantiate font face from font data.

I got this font URL from here.
I'm not sure whether this is the correct repo to open this issue, I'm sorry if it is not. In any case, my use case is that I just want a smaller version of the noto-emoji font which just contains the country flags. Is it possible with the build system of this repo to do that (and/or is it possible to fix the woff2 from above)?

See this codepen for an example for how you can embed Noto Emoji: https://codepen.io/drott_chrome/pen/xxrvXxa (we've used this example in some presentations on COLRv1). Avoid pointing to static asset URLs but use the Google Fonts API that generates the CSS for you instead. Note that access to the Noto Emoji font through Google Fonts is experimental and things may change in the future.

I just want a smaller version of the noto-emoji font which just contains the country flags

you can try using https://github.com/fonttools/fonttools (which contains among others a fonttools subset --help CLI tool) to subset a font (e.g. you could pass as a --text-file only containing the region flags)

We also have an experimental build of just the flags in https://github.com/googlefonts/color-fonts/blob/main/fonts/noto_flags-glyf_colr_1.ttf (cff and cff2 versions in that directory as well).


Added joypad events and changed event handling complexity from O(n) to O(1)

Added joypad events and changed event handling complexity from O(n) to O(1) as described here.

@Kovak @inclement Could you review this and, if it's okay, merge it? If you don't have time, how long will it normally take till it is done?

@dessant @Zen-CODE  Hello and sorry for the nudge :)
Can I get some feedback regarding this pull request and, if it's the case, why it is ignored? Did I miss something that was mentioned in the Contributing section? I'm fine with this not being used, but I would at least like to know what's wrong.
I've also realized that this change should probably be done in all window*.py files. (e.g. SDL2)
(Also, I don't need to be included in the eternal commit log.)

@snappy66. Sorry, i don't enough technical knowledge on this area to yay or nay. ;-
(

@snapy666 first of all thank you very much for the contribution I definitely like the direction of it. I wanted to give some explanation (make excuses) for why we haven't gotten to this yet. First and foremost, most of the team is heavily involved in trying to roll up 1.9 for release, while we tackle the backlog it may take a bit for us to reach more current contributions. We have not forgotten you and we will get here eventually!
Secondly, we must ensure that these changes work correctly on every platform that has pygame as a provider. For this type of thing it means waiting until we have a couple confirmed people on every OS, and, in this case, with joypad hardware, report the changes working. A simple test application would probably help speed this process up.
Thirdly, kivy really do not care so much for single provider features. Kivy strive to expose a common set of functionality available among every provider we have. Before joypad support can be brought into kivy we need to make sure we have it everywhere. Same for the performance changes with the dispatching of events, these should probably be made for SDL2 as well if necessary, and any other input provider we use. Especially as we are looking to replace pygame with sdl2 backend moving forward.
Finally, technically we have 2 features here. One is the performance refactoring of event handling and the other is the joypad support. It would be conceptually easier and much more streamlined to separate this into 2 separate PR, this way we could probably more quickly tackle the event handling stuff as it does not require a joypad for testing.
One again thank you for the contribution and the refactor of event handling was a good spot!

After some discussion with the other kivy core devs:
There is a concern over the performance implications of the re-factoring of event handling. The cost associated with the added function call over the current situation is most likely not in favor of this change. We would welcome profiling to investigate the situation here, but we are skeptical of the potential benefits. If such a change did prove to be favorable it would require a much larger overhaul throughout the code base to implement the same pattern everywhere the current approach is used. More data is necessary before making such a call.
We would welcome separating out the joypad section and implementing it in the current if then else statement as a separate PR

@Kovak Thank you! I agree with splitting this pull requests, although I'm not sure if I want or could implement this everywhere.
Regarding the concern: The function call is a constant cost, while the if-elif-else statement has a cost that scales with the number of events handled.
I have created such a test to measure the execution time. Here are the results: (You might need to first have a look at the test to understand what the test_ names stand for.)
Every key found in dict or if-elif-else

Name
Execution time in seconds

test_dict_get
8.716617422000127

test_check_key_in_dict
9.00435929500236

test_except_key_error
6.264725733999512

test_default_return_dict
10.186109538000892

test_defaultdict
6.141208559998631

test_if_elif_else
10.721702154998638

50 found / 50 not found

Name
Execution time in seconds

test_dict_get
7.955001826001535

test_check_key_in_dict
7.73699967200082

test_except_key_error
11.682552223999664

test_default_return_dict
14.72374195500015

test_defaultdict
6.099408977999701

test_if_elif_else
17.825281888999598

No key found in dict or if-elif-else

Name
Execution time in seconds

test_dict_get
7.479436647998227

test_check_key_in_dict
6.2445404840000265

test_except_key_error
16.10462998499861

test_default_return_dict
18.835381493998284

test_defaultdict
5.325450674001331

test_if_elif_else
24.779503347999707

@snapy666 Yes, dict lookups are always faster than if/elif. But you're missing the most important point - the original code did not call functions while your code does. Function calls are expensive in Python, and it's unlikely that this is an actual speed up.

@kived Oh.. You're right. Thanks and sorry! :+1:  How could I not see that? I've rectified my post, but I think, the conclusion still pretty much holds true. But if you disagree, that's fine and I'd like to hear that, as I have yet (or always) a lot to learn.
Note that there's still a version of if-elif-else, which I've renamed to test_if_elif_else_with_function_calls, that calls functions, because it is cleaner code and would be preferred by me in other situations.

@Kovak Thank you! :+1:
It makes sense to separate this pull request. I'm already happy with the gamepad API in SDL2, which I didn't knew about that, when I created this. Therefore I won't create a pull request for that. Sorry!
Regarding profiling: I've created a test to measure the execution time. You might first need to have a look at the linked test to understand what the following test_ names stand for.
Every key found in dict or if-elif-else

Name
Execution time in seconds

test_dict_get
7.952993699000217

test_check_key_in_dict
8.647647624000456

test_except_key_error
6.057729496999855

test_default_return_dict
9.819119497999964

test_defaultdict
5.720464381000056

test_if_elif_else
6.831272555999931

test_if_elif_else_with_function_calls
10.540674192000552

50 found / 50 not found

Name
Execution time in seconds

test_dict_get
7.912311480999961

test_check_key_in_dict
8.01090596100039

test_except_key_error
12.802067794000322

test_default_return_dict
14.195735510999839

test_defaultdict
5.764159217999804

test_if_elif_else
13.870207252999535

test_if_elif_else_with_function_calls
17.866621209000186

No key found in dict or if-elif-else

Name
Execution time in seconds

test_dict_get
7.459581842999796

test_check_key_in_dict
6.864278949999971

test_except_key_error
17.304682987999513

test_default_return_dict
18.125663195000016

test_defaultdict
5.079881313000442

test_if_elif_else
20.7206846629997

test_if_elif_else_with_function_calls
24.594715916000496

Note regarding defaultdict
Using defaultdict would be okay as long as the number of events is limited — which is usually the case —, as every item access (dict[key]) for a key that isn't in the dictionary would then be inserted.
Conclusion
Even though the test_defaultdict contains function calls, which are expensive in Python, the defaultdict is still more efficient than using a normal if elif else statement, even though it only consists of 5 conditions. (The if elif elsestatement gets slower for every condition, while the function cost is constant.) Thewindow_pygame.py` has 14 conditions.

@kived Oh.. You're right. Thanks and sorry! :+1:  How could I not see that? I've rectified and improved my post, but I think, the conclusion still holds true. If you disagree, that's great and I'd like to hear why that is, as there's always something to learn.
Note that there's still a version of if-elif-else that calls a function for every key, because it is cleaner code and would be preferred by me in other situations. I've renamed it to test_if_elif_else_with_function_calls.

@Kovak Thank you! :+1:
It makes sense to separate this pull request. I'm already happy with the gamepad API in SDL2, which I didn't knew about, when I created this PR. Therefore, and because SDL2 will probably replace pygame, I won't create a pull request for gamepad support in pygame though. Sorry!

Regarding profiling: I've created tests to measure the execution time. You, the reader, might first need to have a look at the mentioned test to understand what the following test_ names stand for.
For every setup, there is a version with 5 conditions in if-elif-else and one with 13 conditions. For reference, the window_pygame.py has 14 conditions.
They both have slightly different number of elements to test for, which is why, for example, test_dict_get with 5 conditions is faster than test_dict_get with 13 conditions.
Every key found in dict or if-elif-else
5 conditions

Name
Execution time in seconds

test_dict_get
7.952993699000217

test_check_key_in_dict
8.647647624000456

test_except_key_error
6.057729496999855

test_default_return_dict
9.819119497999964

test_defaultdict
5.720464381000056

test_if_elif_else
6.831272555999931

test_if_elif_else_with_function_calls
10.540674192000552

13 conditions

Name
Execution time in seconds

test_dict_get
9.449431921000723

test_check_key_in_dict
10.698207212000852

test_except_key_error
7.381142012000055

test_default_return_dict
11.772208508000404

test_defaultdict
6.93195446900063

test_if_elif_else
13.499845717000426

test_if_elif_else_with_function_calls
17.57994560000043

50 found / 50 not found
5 conditions

Name
Execution time in seconds

test_dict_get
7.912311480999961

test_check_key_in_dict
8.01090596100039

test_except_key_error
12.802067794000322

test_default_return_dict
14.195735510999839

test_defaultdict
5.764159217999804

test_if_elif_else
13.870207252999535

test_if_elif_else_with_function_calls
17.866621209000186

13 conditions

Name
Execution time in seconds

test_dict_get
8.793422193000879

test_check_key_in_dict
8.888842536998709

test_except_key_error
13.854044087998773

test_default_return_dict
15.674793932001194

test_defaultdict
6.432961722000982

test_if_elif_else
35.18961696000042

test_if_elif_else_with_function_calls
39.2035331900006

No key found in dict or if-elif-else
5 conditions

Name
Execution time in seconds

test_dict_get
7.459581842999796

test_check_key_in_dict
6.864278949999971

test_except_key_error
17.304682987999513

test_default_return_dict
18.125663195000016

test_defaultdict
5.079881313000442

test_if_elif_else
20.7206846629997

test_if_elif_else_with_function_calls
24.594715916000496

13 conditions

Name
Execution time in seconds

test_dict_get
8.228163970999958

test_check_key_in_dict
7.519528319999154

test_except_key_error
18.427840266000203

test_default_return_dict
19.96727259399995

test_defaultdict
5.754181506999885

test_if_elif_else
56.88675264700032

test_if_elif_else_with_function_calls
60.5560651199994

Note regarding defaultdict
Using defaultdict would be okay as long as the number of events is limited — which is usually the case —, as every item access (dict[key]) for a key that isn't in the dictionary would then be inserted.
Conclusion
Some of these test options (especially defaultdict) are more efficient than using a if elif else chain, even though the test_defaultdict contains function calls, which have a high, but constant cost in Python. Probably obvious, but the more conditions are added to the chain, the slower it gets.
Using a dictionary not only buys time, it also buys cleaner code, as the handling for every event is in a separate function / method.

@snappy666 ok, this is surprising that the added function does not effect the result as much as the change from if to dict, I didn't not expect this.
Considering the result I guess moving to a dict + function makes sense. Just make sure to avoid functions inside functions, that makes things difficult to debug, read. Looking forward to your new pr.

@snappy666 I hope you don't mind I closed this pr as you agreed to separate the change for move to dict from the joypad changes. Please reopen their pr with the proposed changes. or a new one if you prefer that.

@akshayaurora Okay! :)
Regarding creating a new pull request (for now only window_sdl2.py):

By "Just make sure to avoid functions inside functions" did you mean, that the event handlers should be methods of WindowSDL instead of local functions?

Since you both mentioned these concerns: @kived and @Kovak — Are okay with that too? I don't want to waste my time creating something that will not be used.

If the event name is, for example, mousemotion — should the name be handle_mousemotion or on_mousemotion?

Are you all okay with a defaultdict with the name event_to_handler?

In the case of the following code — is there a reason to keep it? That would mean inserting empty functions into the dictionary for each event.

    elif action in ('fingermotion', 'fingerdown', 'fingerup'):
        # for finger, pass the raw event to SDL motion event provider
        # XXX this is problematic. On OSX, it generates touches with 0,
        # 0 coordinates, at the same times as mouse. But it works.
        # We have a conflict of using either the mouse or the finger.
        # Right now, we have no mechanism that we could use to know
        # which is the preferred one for the application.
        #SDL2MotionEventProvider.q.appendleft(event)
        pass

Should the local key_swap dictionary (defined here) be a member of WindowSDL (or a constant)? I could just leave it like that, but that seems like a waste of time, because the dictionary would be re-created every time.

There are multiple issues with the optimization you proposed. First, though, your test code is needlessly complex and it's hard to know for sure what actually the result means. Here is some simpler test code: https://gist.github.com/matham/7a995c8f9eb7774ee797 showing that for at least 15 test conditions, if/elif is always faster than dict+func.
Among the reasons is that you used floats and strings, but the actual event tests are ints (I'm pretty sure) and for that an if statement is faster. In fact, if we replaced all the
Overall, though, the test code only shows how dict+func compares to if/elif in the test code, you'd have to show that the actual code performs similarly because the actual code has a lot more stuff it is doing so all these optimizations might not even be visible. In particular, in my personal opinion, having a ton of defined functions with a extra layer of indirection which makes the code more complex would only be a justified change if there is a significantly demonstrable performance difference.

@matham window_sdl2.py uses strings.
These are my test results with your code, slightly modified and updated to Python 3:
# number of keys: 15
dict+func    8.917926
if/elif      9.809378

# number of keys: 11
dict+func    8.854053
if/elif      9.827428

# number of keys: 9
dict+func    8.850366
if/elif      9.938295

# number of keys: 6
dict+func    9.078270
if/elif      10.301112

@snapy666 Running your code I get the following result:
('# number of keys:', 15)
dict+func    10.854189
if/elif      10.678702
()
('# number of keys:', 11)
dict+func    10.864527
if/elif      10.576125
()
('# number of keys:', 9)
dict+func    11.082304
if/elif      10.655297
()
('# number of keys:', 6)
dict+func    11.015001
if/elif      10.500294
()

This could be a py2/3 difference.
About why this might not be representative of the actual code. If your changes does not lead to a large perf change in the example, then in the real code you might not see any difference at all. The reason is that the real code does more things when handling the events, which is probably order or magnitudes slower than any effect due to using dict+func or if/elif. So all of this might not make any difference and hence why I said you'd need to show actual performance difference for this particular code to justify adding more complexity to the code.

The reason is that the real code does more things when handling the events, which is probably order or magnitudes slower than any effect due to using dict+func or if/elif. So all of this might not make any difference [...]

Okay, but what you are implying by that is that it indeed has an effect, but it just might be a very small change, barely noticeable. I've never said that it would be an enormous speed improvement.

[...] adding more complexity to the code.
The code complexity added is minimal, but the code is certainly cleaner, because there's no giant if-elif-else chain with lots of elif action == 'eventname'. Every event has it's method. Oh.. I just got an idea: By using a dict, you could replace parts of the event handling without changing the code (if-elif-else).

The time complexity is actually lower. Instead of O(n) we have about O(1) (constant time).

That's a good reason for doing it the way you suggested, if you can formalize it.

@matham Cool.

if you can formalize it

What do I need to do exactly?

@matham Yeah :), and I didn't even think of this, when I created this PR. What do you mean with "formalize"?

@snapy666 I meant make a proper api for updating the dict. But this is not my particular neck of the woods so others may have a better idea about it.

@akshayaurora

Just make sure to avoid functions inside functions

Do you mean that the event handlers should be methods of WindowSDL and not of local functions, right?
If the event name is, for example, mousemotion — should the name be handle_mousemotion or on_mousemotion? Should they be private?
Are you okay with a defaultdict with the name event_to_handler?
Should the local key_swap dictionary (defined here) be a member of WindowSDL (or a constant)? I could just leave it like that, but that seems like a waste of time, because the dictionary is re-created every time.

@kived @Kovak
If I create a new pull request for window_sdl2.py, would each of you accept it? I don't want to spend my time for something, if there's no chance of it being accepted.


What is donated?

Hi,
I was just having a look at the code and in the PagesController there are two actions a home action and a donated action. I was wondering what the significance of donated was?

Hi,
The donated action leads to a page showing all books that have been donated via the site.
Example: https://biblion.se/donated


.global or .window modifier for v-on listeners or new property listeners

What problem does this feature solve?
this solves the issue for components
like keys not being called when it's not focused on the element which leads to doing this
window.addEventListener("keyup",this.event)
then on destroy
window.removeEventListener("keyup",this.event)
this will solve the issue for doing
beforeMount registering of events
and beforeDestroy
so it vue will handle this the Vue way
like handling keycodes
What does the proposed API look like?
we can do the keyup event like this on an input
@keyup.global="close"
or
@keyup.window="close"
or maybe on the vue instance
listeners: {
keyup: [this.event]
}

This can be solved in userland and it actually already exist, we made it together with @shentao 😉
https://github.com/shentao/vue-global-events


[SPARK-14456][SQL][MINOR] Remove unused variables and logics in DataSource

What changes were proposed in this pull request?
In DataSource#write method, the variables dataSchema and equality, and related logics are no longer used. Let's remove them.
How was this patch tested?
Existing tests.

Test build #55212 has finished for PR 12237 at commit 6382368.

This patch fails MiMa tests.
This patch merges cleanly.
This patch adds no public classes.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/55212/
Test FAILed.

Merged build finished. Test FAILed.

retest this please.

Test build #55215 has started for PR 12237 at commit 6382368.

Test build #55215 has finished for PR 12237 at commit 6382368.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/55215/
Test PASSed.

Merged build finished. Test PASSed.

Thanks, merging to master.


OneOf not resolved properly for Client

Hello,
I am trying to generate a Client with following example yaml:
info:
  title: Polymorphic types example
  version: 1.0.0
paths:
  /pets/{id}:
    get:
      summary: Get a pet by ID
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Pet details
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/Cat'
                  - $ref: '#/components/schemas/Dog'
components:
  schemas:
    Pet:
      type: object
      required:
        - petType
      properties:
        petType:
          type: string
      discriminator:
        propertyName: petType
        mapping:
          cat: '#/components/schemas/Cat'
          dog: '#/components/schemas/Dog'
    Cat:
      allOf:
        - $ref: '#/components/schemas/Pet'
        - type: object
          properties:
            name:
              type: string
    Dog:
      allOf:
        - $ref: '#/components/schemas/Pet'
        - type: object
          properties:
            breed:
              type: string

following classes are generated

The API looks like this:

It is using a PetsIdGet200Response Object instead of the "Pet" Parent class. This PetsIdGet200Response Object only includes the fields from the last defined "onOf", in this case the Dog. If i swap the order of cat and dog in the respone schema, the class changes and now has the fields of the "Cat" class.
Is this a known Bug? Or could it be wrong configuration on my side?
Thanks in advance!

For some reason the embedded pictures don't seems to work, any idea why?

@donndorf it's not a known bug, it's known now :)
Can you dig in and send a PR to fix it? Maybe there's a trick in the openapi schema that we are missing. If that's the case we can add a troubleshooting section to the docs explaining how to fix it.

I am not sure where a fix would have to go or where to find it in the codegen package, maybe i'll have a chance to look into it.
In the meantime i tried to generate a client via CLI to have something to compare it to. That helped a bit more in understanding it. Apparently the usage of the PetsIdGet200Response is standard procedure but it seems to be generated wrong when using the plugin.

Hello @ricardozanini,
I am trying to find the source of aforementioned Problem right now and possibly provide a fix. But i have to admit that i don't yet understand how the extension works.
What's the "Entrypoint" for triggering the code generation? How could i make use of a Debugger in this case? When i inspect the imported Library in my IDE i only see annotations, providers, META-INF and a few Config classes.
Any advice to help me get started would be appreciated.

@donndorf you can start here: https://github.com/quarkiverse/quarkus-openapi-generator/blob/main/client/deployment/src/main/java/io/quarkiverse/openapi/generator/deployment/codegen/OpenApiGeneratorCodeGenBase.java#L171
We read from the openapi dir during build time and delegate the generation with custom Qute templates to the underlying generator. You can debug there from the unit tests we have in this very same maven module.
Or you can run mvn command in any integration-tests module with debug active and see how that works during the maven lifecycle.

Update after further testing and debugging:
it seems that the problem might not be the quarkus plugin after all but rather the underlying openapi-generator itself. For some reason it's not able to properly resolve the "oneOf" in some cases.
So unless anyone else has this problem and thinks it's in the quarkus plugin, this can probably be closed.

May be related to https://github.com/OpenAPITools/openapi-generator/issues/15044.

@donndorf Have you tried directly returning the parent schema in the response? (In this case return Pet instead of oneOf). Then, in you sub-schemas, add allOf to reference the parent.
I'm not sure if will work in this case in Quarkus, but I managed to make it work this way in the past directly using the https://github.com/OpenAPITools/openapi-generator/
P.S.  The possible downside is that maybe it's not super clear to the API clients that Pet may be actually abstract. I can't see a way to enforce or indicate it in the YAML, in case it was abstract. If there's a way, I'm happy to know it :)


Is this warning expected?

When running the XOR.hs example, I get the following warning:
AI/Layer.hs:49:59: Warning:
Fields of Layer' not initialised: neuron     In the first argument of return', namely `Layer {..}'
In a stmt of a 'do' block: return (Layer {..})
In the expression:
do { weightMatrix <- get;
biasVector <- get;
return (Layer {..}) }
==> XOR predictions:
** On entry to DGEMM  parameter number 13 had an illegal value
** On entry to DGEMM  parameter number 13 had an illegal value
** On entry to DGEMM  parameter number 13 had an illegal value
** On entry to DGEMM  parameter number 13 had an illegal value
** On entry to DGEMM  parameter number 13 had an illegal value
XOR.hs: different dimensions 1 and 2 in dot product

Hi, I confirm the same issue here:
AI/Layer.hs:49:59:` Warning:
    Fields of ‘Layer’ not initialised: neuron
    In the first argument of ‘return’, namely ‘Layer {..}’
    In a stmt of a 'do' block: return (Layer {..})
    In the expression:
      do { weightMatrix <- get;
           biasVector <- get;
           return (Layer {..}) }
==> XOR predictions:
XOR.hs: different dimensions 1 and 2 in dot product

I'm looking into it right now, hoping to have a fix by the end of the weekend.


QueryStore on database level

I'm thinking of a way to save and load queries to and from a table in the database. From how I understand it at the moment it is only possible to read queries from a folder on the file system. Is it an idea to read queries from a table in the database?
To implement this I'm thinking about using the following approach:

Convert store.go to file_store.go
Add database_store.go
Make a store.go interface with generic methods
Find a way to make a choice between file or database (probably through a command line option)
Inject the correct type (file or database) in the application

The first four options are pretty basic to implement, but I'm struggling at the fifth option. Does anyone have some suggestion on how to inject the correct type?

Yes, queries are pulled from the local files, so its up to the use to provide what they need.
As far as implementation for the db-driven story, there are a few questions/considerations:

What database engine are you targeting here? sqlite? postgres? mysql? This will affect the distribution model quite a bit (cgo/no cgo)
How do you relate the query to a selected database? Any security considerations?
What's the use case for a db-driver query store?

Thanks for your response.
To answer your questions:

postgres
the ConnectBackend option is used, so it is not possible to switch databases in a Session. The query is saved in a table (named saved_queries for example) that is in the database that is based on the Session. Based on a P.o.C. I created there will be extra information stored besides the query, such as a userId.
This is based on a requirement from a stakeholder. Based on the ConnectBackend feature, multi tenancy is implemented, so not every tenant should be able to view saved query's from another tenant, only their own saved query's.

Creating a P.o.C. for this feature, I ran into some issues:

The use cases requires PgWeb to run in read-only mode. Saved query's are stored in the database, so there should be a INSERT statement to save a query. This is bypassed by checking if the table that will be inserted to is equal to saved_queries.
Table to store saved_queries is created manually. Retrieving the rows from this table is also done with a hard coded SQL query that contains the table name and postgres schema.

Do you have some suggestions on refining this issues?

I would advise against creating saved_queries table in user space (ie their databases). There are a few reasons against it:

Lack of permissions. You mentioned read-only mode + a lot of users connect to read-replicas which do not have ability to modify any schema or data.
Polluting user space: no one wants to see some random app's tables. One workaround i can think of is by using a different schema, but again, the client might not be able to create it.
Maintaining table schema for pgweb itself: we need to create table and maintain changes across versions, which means things could break.

Since you already use Connect Backend feature, you can explore an alternative source for the queries - HTTP API. So think of it as a Query Backend: you provide a pgweb-compatible endpoint and pgweb can read and write queries to it, just like it would to a postgres store. IMO it'll work great for your use case: query store is decoupled from any db engine, hidden away from consumers and easy to integrate with since you already provide HTTP endpoint.

Yes, queries are pulled from the local files, so its up to the use to provide what they need.

Hi I didn't understand this reply, apologies if I have any misunderstandings here.
@sosedoff  Do you mean to say the queries we write are stored in local files, instead of localStorage?
I say this because I found our queries are being stored in localStorage, but have never been able to persist these queries anywhere in my local filesystem, and have lost a lot of my previous queries due to this 🥲
Is there a way to enable persistent storage in docker to support persisting our queries in a file?


[SEASK-92] TPDM Starter Kit - Quick Start - Update Sample Data and Claims

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.2 out of 3 committers have signed the CLA.:white_check_mark: vimayya:white_check_mark: markramonDL:x: tbmeador-dlpYou have signed the CLA already but the status is still pending? Let us recheck it.


Rationalise seeding, consensus and observers

Now that we have augmented the IPAM consensus mechanism (in a somewhat piecemeal fashion) with observers and seeding, there is an opportunity to step back and attempt to reverse engineer an encompassing user model that can be used to streamline the overall command syntax, status output and documentation.
Whilst from an implementation perspective there are two 'modes' of initialisation (seeding, and consensus with electors and observers) @rade speculates that it might make more sense to elevate observation for use with either consensus or seeding, resulting in three modes:

Seeded
Consensed
Observed

It is technically possible to mix all three of these in a cluster, but for the sake of sanity we should probably recommend seeded XOR consensus, with optional observers in either case.
Some considerations:

We need a replacement name for weave consense - it does not make sense if it is used on an observer which is connected to seeded peers
Determine whether weave consense should guarantee that a piece of the ring is owned by the calling peer in addition to obtaining a copy of the existing ring. This would make it more useful when adding a new seeded peer which is itself not part of the seed
Determine whether --observer is appropriately named
Determine whether --ipam-seed is appropriately named
Determine a name for the state in which an observer has made a ring request (#2063) but has yet to receive one - analagous to 'awaiting consensus' for an elector
Consider a unified argument to weave launch that selects one of the three modes
Consider whether we use IPAM specific terminology (e.g. --ipam-observer) or leave things generic in case we have other uses for consensus at a later date

Things that will need updating:

Documentation

IPAM troubleshooting status explanations

Log messages (e.g. "Unable to parse IPAM seed")
Flag help (e.g. --observer flag help mentions paxos)

Suggestions for renaming weave consense:
weave sync-ipam
weave init-ipam
weave join-ipam

maybe, weave init-ipam-cluster. It says we're doing initialization, and that it will/may involve all nodes
Or some indicator that this is doing some allocation/assignment of the ipam space.
Cassandra uses the terminology of "initializing a cluster", or possibly "rebalancing the partitioner" if you're already running.

weave reify...

@rade thoughts on a mode selector:
Consensed mode (default for backwards compatibility):
weave launch --mode=consensed [--init-peer-count=n]
Observed mode:
weave launch --mode=observed
Seeded mode (<seed list> defaults to <peername>):
weave launch --name <peername> --mode=seeded [--init-peers=<seed list>]

we want all options to obviously relate to IPAM, perhaps even IPAM initialisation
we want the peer count option and consensus mode to be obviously related
we want the seed list option and seed mode to be obviously related.

Perhaps:
--ipalloc-init=consense[:count]
--ipalloc-init=seed:<list>
--ipalloc-init=observe

(and deprecate --init-peer-count)
And we still need a better name for consense.

And we still need a better name for consense.

--ipalloc-init=vote?

agree? negotiate?

decide?

In terms of meaning, we still haven't found anything that beats consense :(

consense maps closely to the internal implementation, but --ipalloc-init=<mode> maps closer to why the user wants to do the thing

@paulbellamy I don't understand your comment. The proposal is --ipalloc-init=consense[:count].

had misread a previous comment.
I guess my proposal is --ipalloc-init=consensus[:count], or maybe --ipalloc-init=quorum[:count]

The other two modes are seed and observe, which are both verbs (well, one of them definitely is). I guess we could switch to nouns all round...
--ipalloc-init=consensus[:count]
--ipalloc-init=seed:<list>
--ipalloc-init=observer

We could call the command weave ipalloc-init. Or just weave init. Neither are perfect by any stretch.

@bboreham would be good to get your input on this!

What about 'quorum' instead of agree/consense?  We do talk about that concept already.
--ipalloc-init=quorum[:count]
--ipalloc-init=seed:<list>
--ipalloc-init=observe

and the command weave ipalloc-init

weave ready for the command?

weave prime?
verb: to prepare or make ready for a particular purpose or operation.

weave force-init ?

What about 'quorum' instead of agree/consense? We do talk about that concept already.
--ipalloc-init=quorum[:count]
--ipalloc-init=seed:
--ipalloc-init=observe

I think the thinking is that the word after the equals is the name of the mode - that would mean we would refer in the documentation to the three modes as quorum, seeding and observation - consensus would disappear. I'm not necessarily adverse to that, just pointing it out.

Right now my preferred set are:
--ipalloc-init=consensus[:count]
--ipalloc-init=seed:<list>
--ipalloc-init=observer
weave prime
```

+1


Drag-n-drop from Outlook do not work with the 64bit office

I was able to make the sample database work on 64 bits but the drag-n-drop only work for files from Windows explorer but not from Outlook attachment. The 32-bit version works fine.
When you drop the file it fires nothing.

Office 64bit + Outlook attachment bug is now fixed.

Thanks a lot


Distill core::Term::FunType to surface::Term::Arrow if input_name is not bound in output_type

Results in more readable pretty-printing when printing non-dependent function types (eg fun (_: Type) -> Type is now rendered as Type -> Type

This is really awesome! I was a bit stumped on how to do this nicely - thanks for looking into it!


Bit Manipulation problem (Hacker rank certification problem)(HacktoberFest 21)

Description
Please include a summary of the change and which issue is fixed. List any dependencies that are required for this change.
Fixes #(issue_no)
Replace issue_no with the issue number which is fixed in this PR
Type of change
Please delete options that are not relevant.

[x] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[x] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[x] This change requires a documentation update
[ ] Documentation Update

Checklist:

[x] My code follows the style guidelines(Clean Code) of this project
[x] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have created a helpful and easy to understand README.md
[ ] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[ ] I have added tests/screenshots(if any) that prove my fix is effective or that my feature works

plz accept the same with hacktoberfest tag

DS ALGO PROJECTS ARE NOT COUNTED FOR HACKTOBERFEST21 so i will close this PR


Revert "Add Topic/Export capabilities (#1382)"

This reverts commit 97c6f5225f1463159a36f577563622920026383a, which causes a fatal bug when running OpenDreamServer on Linux "[FATL] unhandled: SpaceWizards.HttpListener.HttpListenerException (98): Address already in use" in spite of no port being actually used.
(I don't know how to GitHub)

Already done, whoops


[feature request] Add the possibility to supply an own Gstreamer pipeline to a videosource/gstCamera

Thanks a lot for the great software!
I am currently working with a MIPI CSI-2 camera whose drivers are not yet included in the Jetson kernel and which therefore can only be used as a V4L2src camera. Though I got a kernel driver that debayers the data from the camera and published the images as a BGRx or xRGB stream. It seems that such a use case is currently not modeled by the gstCamera code for the GStreamer pipeline string building. Instead of hacking the gstCamera code, I wondered if it would make sense to add the capability to supply an own GStreamer pipeline to a VideoSource to make the model a bit more flexible. As far as I see that would also nicely fit in with the DeepStream plugins offered by Nvidia.

Hi @wittenator, you aren't wrong about the custom GStreamer pipeline, however the issue is interpreting the open-ended data that comes out of the appsink element.  As you see in the code, now I have specific logic that deals with different formats.
What is the error that you are currently getting with the RGB stream?

Hi, @dusty-nv I ran into a similar issue with USB camera from "The Imagine Source".  While I understand there can be issues with sending arbitrary data into the pipeline, there are a lot of cameras out there that use their own Gstreamer source (in this case tcambin), so it would be nice to be able to specify custom launch string.   I saw someone else asking about Basler cameras (which use pylonsrc) so it seems like it could be useful especially with high-resolution cameras that need scaling or other preprocessing.
I made a simple patch to handle a custom:// URI and then takes whatever is specified by --launch-string.  Please find it attached if useful.
Here is an example:
detectnet custom://  rtp://<IP_ADDRESS>:5406 --headless --threshold=0.35 --launch-string="tcambin ! nvvidconv ! capsfilter caps=video/x-raw(memory:NVMM),format=NV12,width=2880,height=2160"
custom_launch.patch.txt


[jiminy_py] Add jupyter notebook tutorial to document basic usage.

Related to #34
Add a jupyter notebook to show an interactive example of using jiminy and the BasicSimulator class.
Add function in viewer to directly display results of a logfile (without having to manually do the conversion to a state).

@duburcqa There are many other things we could add to this tutorial, but this is already a start.
Ideas:

Adding constants / new variables to a log  - doesn't make much sense on a simple pendulum, but would on a more complex system.
A multi-robot simulation with interesting coupling ?
Contacts ?
Adding sensors, changing the simulation configuration.
Adding flexibilities ?
Illustration of contact constraint: I'm waiting on having a working simulation of a wheel turning -  a segway would be a good example.


Remove tox config from repo

https://github.com/vyahello/pytest-emoji-output/blob/master/tox.ini is not used, thus should be removed.

Already removed


Validate principal ID

If node provider should provide a principal ID, it should be validated that the principal ID is correctly formatted in order to be able to continue.
Note that we can also perfom this check on the "review" step, no strong opinion.

As disussed in #27, validate also other fields.

There is validation for this by the NNS and it is done in the review step


UpdateOperatorMutator is causing Karma to disconnect

Hello,
I am using Stryker on an AngularJS project with the following npm modules:

"grunt-stryker": "0.5.2",
"stryker": "0.6.2",
"stryker-api": "0.5.3",
"stryker-html-reporter": "0.4.2",
"stryker-jasmine": "0.2.2",
"stryker-karma-runner": "0.4.1"

Whenever Stryker mutates native Javscript for/while loops that use increment/decrement operators, those mutations cause Karma to disconnect and mark all remaining mutations as 'survived'. The error message i see in the console looks like:

Mutation testing 31% (ETC 480s) [27 killed] [0 survived] [0 no coverage] [0 timeout] [0 error]
[2017-08-11 15:09:58.742] [TRACE] IsolatedTestRunnerAdapter - 11 08 2017 15:09:58.741:INFO [framework.browserify]: bundle built
[2017-08-11 15:10:01.059] [TRACE] IsolatedTestRunnerAdapter - 11 08 2017 15:10:01.060:WARN [Chrome 56.0.2924 (Windows 10 0.0.0)]: Disconnected (1 times)
[2017-08-11 15:10:01.060] [TRACE] IsolatedTestRunnerAdapter - 11 08 2017 15:10:01.061:INFO [karma]: Restarting Chrome 56.0.2924 (Windows 10 0.0.0) (1 of 5 attempts)
[2017-08-11 15:10:01.068] [TRACE] IsolatedTestRunnerAdapter - [2017-08-11 15:10:01.068] [INFO] KarmaTestRunner - karma run done with  1
[2017-08-11 15:10:01.070] [DEBUG] EventRecorderReporter - Writing event onMutantTested to file reports\mutation\events\00030-onMutantTested.json
[2017-08-11 15:10:01.078] [TRACE] IsolatedTestRunnerAdapter - No captured browser, open http:
[2017-08-11 15:10:01.079] [TRACE] IsolatedTestRunnerAdapter - [2017-08-11 15:10:01.079] [INFO] KarmaTestRunner - karma run done with  1
[2017-08-11 15:10:01.080] [DEBUG] EventRecorderReporter - Writing event onMutantTested to file reports\mutation\events\00031-onMutantTested.json
[2017-08-11 15:10:01.087] [TRACE] IsolatedTestRunnerAdapter - No captured browser, open http://
[2017-08-11 15:10:01.088] [TRACE] IsolatedTestRunnerAdapter - [2017-08-11 15:10:01.089] [INFO] KarmaTestRunner - karma run done with  1
[2017-08-11 15:10:01.090] [DEBUG] EventRecorderReporter - Writing event onMutantTested to file reports\mutation\events\00032-onMutantTested.json
[2017-08-11 15:10:01.097] [TRACE] IsolatedTestRunnerAdapter - No captured browser, open http://

These error messages repeat for a while and then jumps straight to 99% with the remaining mutations marked as 'survived' mutants.
I created a simple angular service and corresponding Jasmine spec file to make sure i could isolate and reproduce the issue i am seeing:
stryker_test.service.js
/*global angular, require*/
require('angular');
(function() {
    'use strict';
    angular.module('stryker_testModule', [])
     .factory('stryker_test', function() {
        var index,
            dataValue = 0,
            testFunction = function() {
                for(index = 0; index < 10; index++){
                    dataValue += 1;
                }
            },

            getDataValue = function() {
                return dataValue;
            };

        return {
            testFunction: testFunction,
            getDataValue: getDataValue
        };
    });
}());

stryker_test.service.spec.js
/*global angular, require, describe, it, afterAll, beforeAll, beforeEach, afterEach, module, expect, inject, spyOn  */
require('angular-mocks');
(function() {
    'use strict';

    describe('stryker test service: ', function() {
        angular.mock.module.sharedInjector();
        beforeAll(angular.mock.module('stryker_testModule'));

        beforeAll(inject(function($injector) {
            this.strykerTestService = $injector.get('stryker_test');
        }));

        afterAll(angular.mock.module('stryker_testModule'));

        describe('When stryker test function is called', function() {

            beforeEach(function() {
                this.strykerTestService.testFunction();
            });

            it('should give the datavalue correct value', function() {
                expect(this.strykerTestService.getDataValue()).toEqual(10);
            });
        });
    });
}());

So far i am able to get around this issue by commenting out the code inside of applyMutations() in the UpdateOperatorMutator.js code:
stryker/src/mutators/UpdateOperatorMutator.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var esprima_1 = require("esprima");
var UpdateOperatorMutator = (function () {
    function UpdateOperatorMutator() {
        this.name = 'UpdateOperator';
        this.type = esprima_1.Syntax.UpdateExpression;
        this.operators = {
            '++': '--',
            '--': '++'
        };
    }
    UpdateOperatorMutator.prototype.applyMutations = function (node, copy) {
        //if (node.type === this.type && this.operators[node.operator]) {
        //    var mutatedNode = copy(node);
        //    mutatedNode.operator = this.operators[node.operator];
        //    return mutatedNode;
        //}
    };
    return UpdateOperatorMutator;
}());
exports.default = UpdateOperatorMutator;
//# sourceMappingURL=UpdateOperatorMutator.js.map

If it helps debug, i am using angular v1.4.7 and Jasmine v2.5.2. I'm not sure if this is a Stryker issue or a Karma issue.
Edit: I also saw this issue and thought it sounded kind of similar to what i am seeing. I'm not using karma-nightmare though.
Edit 2: Changing my for loop to use index+=1 instead of index++ also gets rid of the issue, but i'm pretty sure it's just sneaking past Stryker so i never get into infinite loop scenarios during mutation testing.

@CarlosRosario thanks for reporting this issue.
It seems that the mutant is causing an error of which Stryker is not aware. Causing browsers to disconnect from karma which goes unnoticed by stryker.
Could you please provide more information? What does your karma.conf and stryker.conf look like. What karma plugins do you have installed.
Even better would be a small github project that reproduces this issue. If you set maxConcurrentTestRunners to 0, you should be able to reliably reproduce the issue.

Hi @nicojs ,
Thanks for the quick response. As far as karma plugins i'm using:

"grunt-karma": "2.0.0",
"karma": "1.4.1",
"karma-browserify": "5.1.0",
"karma-chrome-launcher": "2.0.0",
"karma-jasmine": "0.3.5",
"karma-webdriver-launcher": "1.0.4"

My Stryker configuration looks like:
stryker.conf.js
config.set({
        logLevel: 'all',
        files: [
            { pattern: '/path/to/jsFile.js', mutated: true, included: true},
            '/path/to/jsFile.spec.js',
            { pattern: '/path/to/otherNecessaryFiles.js', mutated: false, included: true},
        ],
        testRunner: 'karma',
        testFramework: 'jasmine',
        coverageAnalysis: 'perTest',
        reporter: ['html', 'progress', 'event-recorder'],
        maxConcurrentTestRunners: 6,
        timeoutMs: 240000,
        karmaConfig: {
            singleRun: false,
            browsers: ['chrome'],
            preprocessors: {
                '/path/to/otherNecessaryFiles.js': ['browserify'],
                '/path/to/jsFile.spec.js': ['browserify']
            },
            frameworks: ['browserify', 'jasmine'],

            // I've toyed around with different values for these configurations. I think the ones here are default values, but i'm not too sure.
            retryLimit: 3,
            browserDisconnectTolerance: 3,
            browserNoActivityTimeout: 100000,
            captureTimeout: 180000
        }
    });

I'll work on creating a sample angular project that reproduces this issue. What did you mean by your last comment? I'm currently seeing the issue no matter what i've set maxConcurrentTestRunners to

Here's a sample angular project that reproduces the issue with 1 maxConcurrentTestRunner
https://github.com/CarlosRosario/StrykerInfiniteLoopDemoProject
You should just have to do an npm install and be able to run stryker right away after that. I wasn't able to reproduce the issue happening for more than one concurrent test runner.. i was thinking maybe it's because only a small number of mutants are generated for the small code i wrote.

Hi Carlos, thanks for all the trouble. I think i found the issue.
TL;DR;
We should never let karma handle timeouts. As a work around: remove timeoutMs: 240000 from your stryker config will force Stryker to handle timeouts.
What's wrong
The mutant is causing an infinite loop, which is not a problem normally for Stryker.  The problem is that not stryker, but Karma is reporting the timeout.
Karma itself has a mechanism of reporting timeouts when it hasn't heard from the browser in x time. We assumed that the karma process would still be responsive afterwards, but it is not (never assume anything). I think we should fix this by forcing a timeout to be handled by Stryker.

Just out of curiosity, how come the bug doesn't manifest when there are more than 1 concurrent runners? I tried forcing a couple hundred mutations (just having a function that returned a number multiplied by 1 over and over again).. but i was never able to reproduce the issue with more than 1 concurrent test runner.

@nicojs Is this still a thing or has it been fixed since?

As we haven't heard anything about this so far, I'm closing this issue. If it's still a problem, let us know!


options for disabling confirm, and scrolling behaviours

Allow disabling scrolling and popup features.
tested on chrome+firefox

Honest question: why would you not want to scroll to newly added rows? Seems like it's desired behaviour in pretty much any situation. I just added this, and view it as kind of a mistake that it wasn't in before.


(Re)Introduces Ansible Essential Best Practices deck

Replaced by https://github.com/ansible/lightbulb/pull/334


Example fails on GPU

When running the example from the README:
from soft_dtw_cuda import SoftDTW
import torch
# Create the sequences
batch_size, len_x, len_y, dims = 8, 15, 12, 5
x = torch.rand((batch_size, len_x, dims), requires_grad=True)
y = torch.rand((batch_size, len_y, dims))
# Create the "criterion" object
sdtw = SoftDTW(use_cuda=True, gamma=0.1)
# Compute the loss value
loss = sdtw(x, y)  # Just like any torch.nn.xyzLoss()
# Aggregate and call backward()
loss.mean().backward()

I get a TypeError:
Traceback (most recent call last):
  File "test_dtw.py", line 10, in <module>
    loss = sdtw(x, y)  # Just like any torch.nn.xyzLoss()
  File "/home/dockeruser/env/lib/python3.7/site-packages/torch/nn/modules/module.py", line 722, in _call_impl
    result = self.forward(*input, **kwargs)
  File "/home/dockeruser/soft_dtw_cuda.py", line 352, in forward
    return func_dtw(D_xy, self.gamma, self.bandwidth)
  File "/home/dockeruser/soft_dtw_cuda.py", line 140, in forward
    compute_softdtw_cuda[B, threads_per_block](cuda.as_cuda_array(D.detach()),
  File "/home/dockeruser/env/lib/python3.7/site-packages/numba/cuda/api.py", line 74, in as_cuda_array
    raise TypeError("*obj* doesn't implement the cuda array interface.")
TypeError: *obj* doesn't implement the cuda array interface.

Potentially relevant packages from my env:
Cython                    0.29.24
numba                     0.54.0
torch                        1.6.0
Any suggestions?
BTW. Thanks a lot for porting to cuda!

I also encountered this situation.
win11
cuda10.2, torch==1.9.0+cu102
numba==0.54.1

Sorry for the delay in my response. I'm unable to reproduce this issue. I just setup a new virtualenv on my machine, with the following packages, and after pushing this commit, everything works as expected. Here's my environment;
Ubuntu 20.04
torch 1.10.0+cu113
numba: 0.54.1

@weidenka Are you also running on Windows?

I ran on  Ubuntu 18.04.5

I also encountered.
However, after inserting two lines before sdtw = SoftDTW(use_cuda=True, gamma=0.1), I can run this example.
x = x.cuda()
y = y.cuda()

I also encountered. However, after inserting two lines before sdtw = SoftDTW(use_cuda=True, gamma=0.1), I can run this example.
x = x.cuda()
y = y.cuda()

It worked!! Thank u.

My apologies, I thought the issue was being caused by running the unit test inside soft_dtw_cuda.py, which explains why I was unable to reproduce locally.
@Yutaro-Sanada thanks for your PR. Will review/merge shortly.

#17 is now merged. Closing this issue.


Enable pl011 early printk on Arm64

Introduce an early uart config ARM_VERY_EARLY_CONSOLE which indicates that the CPU can do printk at the very beginning stage.
Enable early printk for uart_pl011 by implementing several necessary functions and select it as a default option.
Note: using z_arm prefix (e.g. z_arm_uart_early_init)  instead of z_arm64 is aiming to be reusable for arm(aarch32) in the future.

I like this very much. Two things though:

Why this is ARM64 specific? This could be very well a generic API like earlycon on Linux
Do we want to keep this in the serial API? Maybe could be worth it to introduce an entirely and separate API for this?

Really nice suggestion

Why this is ARM64 specific? This could be very well a generic API like earlycon on Linux
Do we want to keep this in the serial API? Maybe could be worth it to introduce an entirely and separate API for this?

I was thinking of doing something like earlycon which is apparently a larger work. I am not sure if this is really needed in Zephyr at that time. Now I am going to take a look and try to introduce a more generic API to do this since you think this is useful. :)


[3.7.0-beta] Child class cannot override base member function with arrow function

TypeScript Version:  3.7.0-dev.20190927 (works on 3.7.0-dev.20190926)

Search Terms:
TS2424, member function
Code
class BaseClass {
    foo() {
        return null;
    }
}

class ChildClass extends BaseClass {
    foo = () => null;
}

Expected behavior:
In 3.6.3 and <=3.7.0-dev.20190926, this code would compile without error
Actual behavior:
error TS2424: Class 'BaseClass' defines instance member function 'foo', but extended class 'ChildClass' defines it as instance member property.

8   foo = () => null;
    ~~~

Since our code has to compile down to ES5 (to support IE11), we need to perform some sort of method binding on methods that reference this. With this change, it means we would need to make all possibly-overridable member functions arrow functions
Playground Link: http://www.typescriptlang.org/play/index.html?ts=3.7-Beta#code/MYGwhgzhAEBCkFMDC4rQN4Cho+gMwHsCAKASg21yoCcEAXAV2oDtpmGQQBuSnAX0wDMoSDCQALAJYgAJilHQEADzoJmMmPAjJUMLFUIFoAXmhkTAPjYdugoA
Related Issues:

I looked at the change from TS 3.0 again and found that it was supposed to remove only this error but actually removed it as well as the opposite:
class B {
  foo = () => null
}
class C extends B {
  foo() {
    return null
  }
}

I restored both errors in #33509 while adding new errors -- I noticed dead code and confused an intern's first check-in with a broken change.
I'll take this error (property-overrides-method) back out, but leave in the error for method-overrides-property.

Thanks for the quick fix, @sandersn

Hmm, this was released in TS@next ~ 3 days ago, but since<EMAIL_ADDRESS>the same error appeared again :/


Depth calculation in GVRBaseSensor using hitpoint

This changes the depth calculation based on the hitpoint rather than the center of the scene object.
This gives a more accurate depth order for SensorEvents.

are you able to build the library using command line?

yes.

Looks good. @rahul27 any comments?

Looks good.


Incorrect description of OSS vs. free/libre software

In the section The Open Source community and its governance it reads:

The core principle of re-use is what separates OSS from ‘Free Software’.

and:

The big difference between free software and OSS is that the former must distribute updated versions under the same license as the original, whereas newer versions of OSS can be distributed under different licenses. FOSS combines the best of both worlds.

What I really like about how the module is currently written is that it makes clear that open source is not just about the source being accessible. However, the cited paragraphs are probably misleading in the difference between free software and OSS: It's not about copyleft/re-use. I'll detail that in the following, along with some other suggestions for improvement. The last paragraph contains an idea on how I would explain the difference between free and OSS in this module.
Differentiation between software and license
I think it would be better to differentiate more precisely between the software and its license. Free software, as understood by the FSF, respects the user's freedom. A necessary requirement is that it is accompanied by a free license, because the default is that all rights stay with the author. [It is probably not the only requirement, as some software under a free license still artificially limits its users (example here). For now, let's call software under a free license free and software under a open source license open source.]
Accordingly, for a software license to be free, the license does not need to have a copyleft clause. Take, for example, the MIT license (Expat or X11, to be precise): it's not a copyleft license but still a free software license (source; more about this overlap here).
Differentiation between license requirement and license itself
I think the relationship between license requirements and licenses could also be highlighted more: OSI's OSS definition is a license requirement, as is the FSF's definition of free software (and thus, free software licenses). Various licenses may then be either free, open source, or both. It then can be argued that free may be a subset of open source:
Differences between free and open source software
It is expected by the FSF that all free software should also considered OSS by the OSI. For the other way round, there may be cases where this is not true, but most of the OSS should be free software as well. If requiring free software over OSS is not so much about the amount of software matching that criteria, what else is it about?
Differences between requiring free software vs. OSS
Free software is about protecting the user's freedom. From this perspective, nonfree software is a social problem. OSS instead has a more pragmatic approach, it is centered around the product being better in the end. Nonfree software just cuts efficiency on that road.
This makes clear that requiring free software instead of OSS is about spreading freedom as a value.
FOSS
Now, regarding FOSS: It's a term derived to cover both OSS and free software. Its practical value may be limited, however, as it only adds to the complexity and stays neutral about the actual difference between the two. I certainly wouldn't call it “the best of both worlds”, which sounds as if open source and free are features that can be meaningful combined—and not philosophies with different goals. Free software should (see above) also be OSS, so the only “best of both worlds” would be to choose free software.
Copyleft vs. public domain
While the difference between OSS licenses and free software licenses is not about copyleft clauses, the copyleft vs. public domain conflict may still be worth mentioning.
For someone who believes in the user's freedom, is it better to aim for most permissive licensing (releasing in the public domain) and thus allowing others to limit the users of their derived versions again? Or better make the own work more restrictive in the first place (copyleft), contrary to the higher goal of freedom, but more resistant in the long run?
The OpenStreetMap's wiki has some thoughts about this here.
Further thoughts
Similar to the comparison between open source and free is that between Fecher's and Friesike's Pragmatic School and Democratic School: again, it's about (research) efficiency vs. access to knowledge as a means on its own. These different goals and values may still lead to the same practical behavior.
This actually may be the best way to introduce the reader to the differences without adding to much complexity.
Another interesting comparison is that to Stalder's Commons vs Post-democracy, which are about input and output legitimation. But probably not for this guide ;)

This is super interesting, thank you @fkohrt. Do you think you could submit a PR with any edits that we need to make, and I can port them into the live module ASAP? No worries if this is a bit too much effort.

@Protohedgehog sure, done in #86
I removed the mention of Ubuntu as it is a prominent example of software that can't be considered free. The FSF is relatively strict with operating systems, see here for their current list of GNU/Linux distros that are considered free... the list with nonfree distros is quite longer.

OK, awesome, thanks @fkohrt!


HD channels stop playing

Thank you first of all. I saw a peculiar occurrence. I used to watch comedy Central HD and Sun HD. Sometimes cc hd is not available and during that time I'm able to play Sun HD and vice versa. And when sun HD is unavailable, cc hd is able to play. Even while playing, either channels just stop for sometime (like 1 to 5 sec) in the middle and then start playing again. No prob with the internet. Having 100mbps fibre

I am planning to drop major jiotv+ release with jio cinema integration. Wait until that release and all issue will be solved


[Coverity CID :195867]Memory - corruptions in /arch/posix/core/posix_core.c

Static code scan issues seen in File: /arch/posix/core/posix_core.c
Category: Memory - corruptions
Function: ttable_get_empty_slot
Component: Architectures
CID: 195867
Please fix or provide comments to square it off in coverity in the link: https://scan9.coverity.com/reports.htm#v32951/p12996

False positive, awaiting permission in Coverity to mark it as so.


M68000: Low-level Error: Free varnode has multiple descendants

Works for this binary, code starts at 0x200: X-perts (U) [!].zip

Reproducing the exception. I'm working towards a patch.  Thanks for submitting this.


Add Time type to exports for typescript types

Public-Facing Changes
Adds export of the Time type for typescript type
Description
As far as I can see there is no reason for the Time type not to be exported. Exporting it is a quality of development improvement when writing plugins relying on timestamps used in the other exported types.

Thanks for the PR. I think it makes sense to add Time & Duration to the exports. However, this index.ts is a generated file, so you'd need to update the code that generates it here: https://github.com/foxglove/schemas/blob/dcc3b66c69506258baf46baf08e99791340e33bb/internal/exportTypeScriptSchemas.ts#L34-L37

Thanks @jtbandes for pointing that out, I've started working on the autogeneration as you've reccomended. I have a question though, what is the reason for considering the time and duration types, as FoxglovePrimitive? In the entire code base they require special handling, and it is difficult to consider a type with two fields primitive.
Wouldn't it make more sense to create another type for the two? In addition to FoxglovePrimitive, FoxgloveMessage, and FoxgloveEnum, something like FoxgloveTime? It seems it would allow to make the code more consistent and allow to not have primitives which are themselves composed out of other primitives.

Treating these as primitives was inherited from the ROS 1 msg format where time and duration are primitives, and when we translate our types to ROS 1 .msg we need to keep them as time and duration. The specific way that they are represented in this codebase with type: "primitive" could probably be improved, but it's also sort of immaterial since it's mostly an internal representation that's used while generating the output schemas.

@rachwalk Could you fix up the CI build error and we can take another look. Sorry for the delay on this.

Closing for no response.


Playback.app have .git folder packaged

Just look at Playback.app in Content/Resources/app/.git
IMHO, this folder is not needed in packaged app.
Did not examine build process yet, but maybe some script for packaging can be tuned just to remove this folder.

Ah yea. We should fix this.

I just browsed Playback.app/Content/Resources/app/ folder for version 1.6, and it seems like .git folder is no longer there as a result of adding ignore script at package.json.
Trivial, but I noticed that  .DS_Store file exist in Playback.app/Content/Resources/app/ even though .gitignore specifies .DS_Store. It seems like the file was added to original git repo.
We should close this issue since this is no longer applies on version 1.6.
From electron-packager

Be careful not to include node_modules you don't want into your final app. electron-packager, electron-prebuilt and .git will be ignored by default. You can use --ignore to ignore files and folders via a regular expression. For example, --ignore=node_modules/electron-packager or --ignore="node_modules/(electron-packager|electron-prebuilt)".


Unable to resolve "!!../node_modules/css-loader/index.js!./autocomplete.css" from "node_modules\react-openlayers\dist\react-openlayers.umd.js"

I get the error 'Unable to resolve "!!../node_modules/css-loader/index.js!./autocomplete.css" from "node_modules\react-openlayers\dist\react-openlayers.umd.js"' while running my app, what could be causing this?

Getting the same issue too. Some help would be nice.

Same issue. Need help on this.

I am seeing this same issue.

plz try new version 0.3.0


Add a doc for setting up AWS SSO

...it would also be nice to have a doc that explains the various attributes that users are asked to configure.

@praneetloke Do you mean using AWS SSO with Pulumi, like as a fourth entry in https://www.pulumi.com/docs/guides/saml/?

Do you mean using AWS SSO with Pulumi, like as a fourth entry in https://www.pulumi.com/docs/guides/saml/?

@lukehoban yep that's right. However, I do think the SAML SSO overview doc should help users figure out the values in the absence of an AWS specific configuration doc.


Example 6.1.2 not listed in list of examples

Title
Example 6.1.2 not listed in list of examples
Moderator
@user
Requirement Summary
Example 6.1.2 is not listed in the list of examples. The example has an achor (taxa-ex) but the achor is not listed in toc-extra.adoc.
Technical Proposal Summary
Add the anchor taxa-ex with number 6.1.2. in line 41 (between 6.1. and 6.2.) to toc-extra.adoc.
Benefits
Have  a complete list of examples.
Status Quo
Example 6.1.2 is missing in the list of examples.
Associated pull request
#285
Detailed Proposal
Example 6.1.2 is not listed in the list of examples. The example has an achor (taxa-ex) but the achor is not listed in toc-extra.adoc. Add the anchor taxa-ex with number 6.1.2. in line 41 (between 6.1. and 6.2.) to toc-extra.adoc.
Question
Or should the examples be renamed? Example 6.1.2 is the only example identified by three numbers. Should I create an extra issue for this?

Thanks @neumannd  - merging this defect now (it was actually my fault  - sorry!)


Add prebuilds for Node.js 22

https://nodejs.org/en/blog/release/v22.0.0

https://github.com/WiseLibs/better-sqlite3/pull/1182

(If anyone has time to look into why GHA is crapping out, I'd be delighted for the assist)


update(workflow): delete useless PAT in workflow config

Task Description
Delete useless PAT in workflow config
Solution Description

Passed Regressions

Upgrade Compatibility

Other Information

Release Note

LGTM

LGTM


Can't get the mode of zsl

Hi, I have met the problem that no matter I let the generalized mode to True or False, I always get the result of GZSL. How to change this condition? Thank you!

Hey,
Thanks for pointing out that bug! The problem was in the argument parser. I fixed it now and it should work correctly. Try it out :)


Day1 update

Day 1 update added

Please make a PR only after completing a task. I hope you understand.


Cloud connection

[x] Install ws
[x] Add base connection
[x] Allow users to actually set variables
[x] Let users add their own listeners when message comes/goes

I kind of need help on this part..

Goal 4 is resolved by allowing users to use this.connection so
cloud.connection.on('message', (data) => {
  const received = JSON.parse(data.toString());
  // do whatever you want
});

I think data returns a buffer so that's why you have to .toString() it

a lot of this has been taken from https://github.com/meow-js/meow-js/blob/master/src/classes/CloudConnection.js thank you so much!

custom server support was a bit too hard - I might go back to it one day.


FlatList breaks when using with StackNavigator

Hello, I've run into an issue when using StackNavigator in combination with FlatList that I cannot figure out. As a note, I've read through #2012 and #1898 but the fixes described there have not worked for me.
Here is my screen component that I am trying to render:
class FactoryScreen extends React.Component {
  static navigationOptions = {
    title: 'testing',
  };

  constructor(props) {
    super(props);

    this.state = {
      datasource: [
        {id: 21, machine_key: 'f', clamp_id: 'c0'},
        {id: 22, machine_key: 'f', clamp_id: 'c1'},
        {id: 23, machine_key: 'f', clamp_id: 'c2'}
      ]
    };
  }

  render() {
    return (
      <View>
        <FlatList
          removeClippedSubviews={false}
          style={{backgroundColor: 'white'}}
          data={this.state.datasource}
          renderItem={({item}) => {
            console.log(item);
            return (<Text style={{flex: 1, height: 50}}>{item.clamp_id}</Text>);
          }}
        />
      </View>
    );
  }
}

export default class App extends React.Component {
  render() {
    return (
      <View>
        <FactoryScreen />
      </View>
    );
  }
}

When I put that directly into my app and render it as the root and only element, it displays correctly. However when I put it into StackNavigator as shown below, nothing displays for me, even though no error is shown.
const SimpleApp = StackNavigator({
  Main: {screen: FactoryScreen},
});
export default class App extends React.Component {
  render() {
    return (
      <View>
        <SimpleApp />
      </View>
    );
  }
}

I would expect that the FlatList displays as it did previously, but no dice.  Any help would be appreciated.
I have also attached a snack.expo.io link that shows the issue as well.  If you change FactoryScreen in the root view to the SimpleApp stack navigator component, it then breaks.

software
version

react-navigation
1.0.0-beta.11

react-native
0.45.1

node
6.7

npm or yarn
3.10.3

+1

I'm not sure what the issue is but I have a flatList running inside a stack navigator with no problems.

I was having a problem where it would only show after scrolling the view, but removeClippedSubviews={false} fixed the issue.  It seems you've already added that.

@lorenzsell unfortunately it did not work here. just to confirm, to fix your issue you placed that prop on FlatList and not its children or its parent?

Yes.  This is what mine looks like:
<FlatList
          data={this.props.spaceList}
          renderItem={item => this.renderItem(item, this.props.navigation)}
          keyExtractor={item => item.id}
          removeClippedSubviews={false}
/>

@lorenzsell That did fix my issue! 👍  Thank you :)
Tho don't you think it might affect the performance of the scroll? Since it wont remove clipped subview once they disappear from the screen :/ ?
Even tho the official docs suggest to use  removeClippedSubviews={true} at your own risk Im kind confused if it will affect the scroll much, if items are full width of the screen images and texts, and might be 100+ items ?

Not sure.  Test it and let me know :-)

By adding flex=1 to the exported class view seems to fix the issue.
It is not required to use removeClippedSubviews={true} as well.
Here the snack.
export default class App extends React.Component {

  render() {
    return (
      //The view needs to be flexed
      <View style={{flex:1}}>
        <SimpleApp />
      </View>
    );
  }
}

@fabriziogiordano I've tried that, didnt help :/ All my views have flex:1
Only removeClippedSubviews={false} works. Otherwise as described above, the FlatList or SectionList will only appear after a slight scroll.

@fabriziogiordano unfortunately that did not work for me either. I'm starting to wonder if I have a version mismatch with react-native, react-navigation, or somewhere else. Do you know how to check the library versions with snack.expo?

+1
Same here, non of the above worked for me.

+1
Same here, none of the above worked for me.

Same! :(

@phouse512 the solution to the problem is not to wrap the SimpleApp in the View, ie.
export default class App extends React.Component {

  render() {
    return (
        <SimpleApp />
    );
  }
}

I will close this issue because it is now solved. If the other people still experience problems, I ask them to open another issue and attach a reproduction in a snack.