bug: installing OMZP::kubectl doesn't provide completions

Environment
Debian 12
Reproduction steps
1. install omzp::kubectl by putting `zi snippet OMZP::kubectl` in `.zshrc`
2. type `k` and press tab

Expected behavior
1. completions are displayed

Current behavior
completions are not shown, the output is:

❯ k
(eval):1: _kubectl: function definition file not found

Code snippet
# init direnv
# https://github.com/romkatv/powerlevel10k/blob/master/README.md#how-do-i-initialize-direnv-when-using-instant-prompt
(( ${+commands[direnv]} )) && emulate zsh -c "$(direnv export zsh)"

# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
# Initialization code that may require console input (password prompts, [y/n]
# confirmations, etc.) must go above this block; everything else may go below.
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
  source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
fi

(( ${+commands[direnv]} )) && emulate zsh -c "$(direnv hook zsh)"

if [[ -r "/home/rd/.config/zi/init.zsh" ]]; then
  source "/home/rd/.config/zi/init.zsh" && zzinit
fi

# history settings
HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=10000
setopt appendhistory

# powerlevel prompt installation powered by zi (wiki.zshell.dev)
zi ice depth=1; zi light romkatv/powerlevel10k

# pyenv initialization
export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

# LS colors
alias ls='ls --color=auto'
zi ice atclone'dircolors -b LS_COLORS > clrs.zsh' \
  atpull'%atclone' pick"clrs.zsh" nocompile'!' \
  atload'zstyle ":completion:*" list-colors ${(s.:.)LS_COLORS}'
zi light trapd00r/LS_COLORS

# docker completion
zi ice wait lucid; zi light greymd/docker-zsh-completion

# syntax highlighting
zi ice wait lucid; zi light z-shell/F-Sy-H

# patch dl ice modifiers that are required by some zi packages
# https://wiki.zshell.dev/ecosystem/annexes/patch-dl
zi light z-shell/z-a-patch-dl

# fzf
zi pack"binary+keys" for fzf

# gh completions
if command -v gh > /dev/null; then
  zi ice lucid wait as'completion' blockf has'gh'
  zi snippet "$HOME/.local/share/completions/_gh"
fi

# containerlab completions
if command -v containerlab > /dev/null; then
  zi ice lucid wait as'completion' blockf has'containerlab'
  zi snippet "$HOME/.local/share/completions/_containerlab"
fi

# kubectl plugin from ohmyzsh
zi snippet OMZP::kubectl

# disable highlighting pasted text
# https://forums.freebsd.org/threads/bracketed-paste.81314/#:~:text=You%20can%20also%20simply%20disable,zshrc.
zle_highlight=('paste:none')

# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh

autoload -Uz compinit
compinit

zi cdreplay -q # <- execute compdefs provided by rest of plugins

Additional information
❯ zi zstatus
Directories set:
Home: /home/rd/.zi
Binary: /home/rd/.zi/bin
Plugin: /home/rd/.zi/plugins
Snippet: /home/rd/.zi/snippets
Service: /home/rd/.zi/services
Modules: /home/rd/.zi/zmodules
User-land: /home/rd/.zi/polaris
Completions:/home/rd/.zi/completions
Loaded plugins: 6
Light loaded: 2
Downloaded plugins: 6
Compiled plugins: 5
Enabled completions: 7
Disabled completions: 0
Completions available overall: 7
Snippets loaded:
/home/rd/.local/share/completions/_containerlab <single file>, /home/rd/.local/share/completions/_gh <single file>, OMZP::kubectl <single file>

Self-service

[X] I'd be willing to address this documentation request myself.

Have you read the Contributing Guidelines?

[X] I have read the Contributing Guidelines.

Are you familiar with the Contributor Covenant Code of Conduct?

[X] I have read the Contributor Covenant Code of Conduct.

Contact Details
No response

Do completions work for kubectl? The completions for the k alias are working for me. Have you tried adding atload"zicompinit; zicdreplay"?


User-space implementation of js.Array.apply

Continuing my quest against compiler primitives!
js.Array.apply (almost) does not need to be a primitive. It could be implemented in user-space as a pimp (herein called make, but it would be apply):
implicit class MyJSArray(val self: js.Array.type) extends AnyVal {
  @inline
  def make[A](elems: A*): js.Array[A] = elems.toJSArray
}

(or, without requiring the fix of #2265, as:)
@inline
implicit class MyJSArray(val self: js.Array.type) {
  @inline
  def make[A](elems: A*): js.Array[A] = elems.toJSArray
}

Because toJSArray is inlined and specializes the case js.WrappedArray, a call such as
val array = js.Array.make(5, 6, 7)

reduces to:
  var self = $g.Array;
  var array = [5, 6, 7];

(seriously, it does)
The only disappointment is that $g.Array cannot be eliminated. With an AnyVal, the var self = disappears, so only $g.Array remains. But that could have a side-effect is some evil person replaced the global Array variable by a getter on the global object.
Note that this happens because object js.Array is a JS native, and not a Scala object. An alternative would be to turn it into a Scala object instead. (in the next major version, in that case)
Opinions?

I vote for turning js.Array into a Scala object and just forwarding isArray. We can make the raw array object a member of the Scala object or something.

I have changed my mind about this. It makes sense to have a primitive that is guaranteed to generate a JSArrayConstr. Also it only has a ~4 LoC tax on the compiler source code, so it's not like it's a maintenance burden.


Add test for same word in anagram.

Existing test (testIdenticalWordIsNotAnagram) for words only check that it contains the anagram but not that it shouldn't contain the same word.

Can we change the assertion on testIdenticalWordIsNotAnagram so that it asserts the full list of expected results, rather than just that it contains the expected anagram instead of adding a new test?

Updated to compare list containing the only anagram.

I like this--it's a bit simpler than adding an extra test. Thanks!

Merged in 04a082121af34013d0a30e4a50d3d57202734876


automate screencapture

Generate n screenshots and save them into my Downloads

done, will merge and push live in a moment


Uncaught TypeError: $indicator.velocity is not a function

I installed the plugins using npm and bundled it using webpack. The plugin was required as following:
export default class App extends React.Component {
   ...
  componentDidMount() {
    require('materialize-css/dist/js/materialize');
  }

  render() {
    return (

Test 1

Test 2

Disabled Tab

Test 4

Test 1

Test 2

Test 3

Test 4

    );
  }
}

I always got the Uncaught TypeError: $indicator.velocity is not a function error when clicking on Tab . However, if I required the plugin in HTML instead, it worked just fine. I'm not quite sure what's going wrong.

I ran into the same issue. You just need to make sure you attach jQuery to the window when you require it:
window.jQuery = window.$ = require('jquery');

This should be imported before materialize.

Looks like there have to be velocity-animate package installed and exported as following:
window.$.velocity = require('velocity-animate/velocity.js')

only then i get it work

Thanks @benelliott. So many hours of head banging...

Adding
window.jQuery = window.$ = require('jquery');
window.$.velocity = require('velocity-animate/velocity.js')

doesn't fix the velocity bug anymore on v0.97.7 :-1:

@Wifsimster agreed this is no longer a viable fix.

I use it on v0.97.7
// Check for jQuery.
// TODO: Fix $(dom).velocity is not function bug
if (typeof(jQuery) === 'undefined') {
  // var jQuery;
  // Check if require is a defined function.
  if (typeof(require) === 'function') {
    window.jQuery = window.$ = require('jquery');
  // Else use the dollar sign alias.
  } else {
    window.jQuery = $;
  }
}
;

Guys!!  Just delete the JQuery dependency  in materialize  folder  in node_modules/materialize_css/node_modules/JQuery ! :D
this problem is  because  materialize have a JQuery dependency  obsolete

The problem with this approach is that this changes the downloaded dependency, so anyone to re-build the project would have to run the same step (extremely error-prone). I found that this trick fixes the build for me too, but I can't include it into the final build.
I think that jQuery is not really a "dependency" (in NPMs sense) of Materialize.css. Materialize expects global jQuery object and "private" dependency that it is relying on is not imported anywhere.
To me it looks like Materialize CSS is falls into a category of "peer dependencies": https://nodejs.org/en/blog/npm/peer-dependencies/

The only solution I got to work was the @ArtistNeverStop one.
But modify the source code of materialize .js for just this stupid jQuery check break all the automation by using bower / gulp in project release process.
Do I have to fork materialize to fit my build process or a "proper" fix is going to be released ?

window.$ = window.jQuery = require('materialize-css/node_modules/jquery/dist/jquery.js');
require('materialize-css');

I'm experiencing a very similar problem that seems to be fixed by the solution submitted by @ArtistNeverStop. When trying to open a modal box I get this in the Chrome console:
Uncaught TypeError: k.velocity is not a function
I'm using Meteor <IP_ADDRESS> with Blaze templating and the "materialize-css" NPM package at version 0.98.0. If I delete the jquery folder under the "node_modules" directory inside the "materialize-css" package, everything works. Otherwise, I get the above error. Any updates on this issue? I can certainly take the time to fork it and use my own patched version, but that does not seem good long term.
Thanks!

I have managed to get this working by using webpack 2 and explose-loader.  In my vendor.ts I have:
import 'jquery';
import 'materialize-css/dist/js/materialize.js'

In my webpack.config.js I have the following:
module = {
  rules: [
    // jQuery & plugins
    {
        test: require.resolve('jquery'),
        use: [
            {
                loader: 'expose-loader',
                options: 'jQuery'
            },
            {
                loader: 'expose-loader',
                options: '$'
            },
            {
                loader: 'expose-loader',
                options: 'window.jQuery'
            }
        ]
    },
    {
        test: require.resolve('velocity-animate/velocity.js'),
        use: [
            {
                loader: 'expose-loader',
                options: 'window.$.velocity'
            }
        ]
    }
  ]
}

This did the trick for me and it has been successfully working in an Angular 4 project.
NOTE: I haven't deleted the node_modules/jQuery folder inside materialize-css as @ArtistNeverStop suggested.

I'm running into the same error here with key functionalities such as closing a modal tab not working. Here's the error message I get:
core.es5.js:1084 ERROR TypeError: k.velocity is not a function
    at h (materialize.js:3)
    at HTMLAnchorElement.<anonymous> (materialize.js:3)
    at HTMLDocument.dispatch (jquery.js:4737)
    at HTMLDocument.elemData.handle (jquery.js:4549)
    at ZoneDelegate.invokeTask (zone.js:398)
    at Object.onInvokeTask (core.es5.js:4116)
    at ZoneDelegate.invokeTask (zone.js:397)
    at Zone.runTask (zone.js:165)
    at HTMLDocument.ZoneTask.invoke (zone.js:460)

The problem for me was because of jQuery 3 and import, when I changed to jQuery 2.2.4 and imported materialize like:
window.$ = window.jQuery = require('jquery');
var Materialize = require('materialize-css');

it seems to work.

I'm having a similar issue: Uncaught TypeError: tooltipEl.velocity is not a function
I am using webpack and do the following:
import 'materialize-css/dist/css/materialize.css';
import 'materialize-css/dist/js/materialize';

I have not found a solution to this.

Hi everyone,
today i haved the same problem and i solved using it in my javascript entry point
'use strict'
window.$ = window.jQuery = $
require('materialize-css/bin/materialize.css')
require('font-awesome/css/font-awesome.css')
require('styles/app.css')
require('materialize-css/bin/materialize')

I used webpack 2 with this configuration
'use strict'

const webpack = require('webpack')
const ExtractTextPlugin = require('extract-text-webpack-plugin')
const CopyWebpackPlugin = require('copy-webpack-plugin')
const path = require('path')
const merge = require('webpack-merge')

const webpackCommon = {
  entry: {
    app: ['./client/initialize']
  },
  module: {
    rules: [
      {
        test: /\.js?$/,
        exclude: /node_modules/,
        use: [
          {
            loader: 'babel-loader?presets[]=es2015&presets[]=es2016&presets[]=es2017'
          }
        ]
      },
      {
        test: /\.ejs$/,
        use: {
          loader: 'underscore-template-loader'
        }
      },
      {
        test: /\.css$/,
        //exclude: /node_modules/,
        use: ExtractTextPlugin.extract({
          fallback: 'style-loader',
          use: 'css-loader'
        })
      },
      {
        test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/,
        use : {
          loader: "url-loader?limit=80000&minetype=application/font-woff"
        }
      },
            {
         test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
         loader: "file-loader"
      }
    ]
  },
  output: {
    filename: 'app.js',
    path: path.join(__dirname, 'server/public'),
    publicPath: 'server/public/'
  },
  plugins: [
    new ExtractTextPlugin('app.css'),
    new CopyWebpackPlugin([{
      from: './client/assets/views',
      to: path.join(__dirname, 'server/views')
    }]),
    new CopyWebpackPlugin([{
      from: './client/assets/favicon.ico',
      to: path.join(__dirname, 'server/public')
    }]),
    new CopyWebpackPlugin([{
        from: './client/assets/images',
        to: path.join(__dirname, 'server/public/images')
    }]),
    new webpack.ProvidePlugin({
      $: 'jquery',
      _: 'underscore'
    })
  ],
  resolve: {
    modules: [
      path.join(__dirname, './node_modules'),
      path.join(__dirname, './client')
    ]
  },
  resolveLoader: {
    modules: [
      path.join(__dirname, './node_modules')
    ]
  }
};

const env = process.env.NODE_ENV || 'development'
switch (env) {
  case 'development':
    module.exports = merge(webpackCommon, {
      devtool: '#inline-source-map',
      watch: true,
       watchOptions: {
        aggregateTimeout: 3000,
        ignored: /node_modules/,
        poll: 1000
      }
    });
    break;
  default:
    module.exports = merge(webpackCommon, {
      devtool: 'source-map',
      watch: false
    });
    break;
}

The version of materialize-css is 0.98.2 and jQuery is 3.2.1 all seems to work now.
Hope to be helpul to someone.

Really want to use this project, but it's pretty much bricked until this is addressed. It's been an issue off and on since 2015...

Forked updated for version 0.98.2, you can add in package.json dependencies
"materialize-css": "https://github.com/ZiperRom1/materialize/tarball/7a0f549d461f2f512078ca52a19d97445351bf06"
Is Materialize team planned to make this framework natively compatible with webpack2 and jQuery3 without this dirty hack ?

@ZiperRom1 jQuery 3: https://github.com/Dogfalo/materialize/pull/4587

@ZiperRom1 Webpack: https://github.com/Dogfalo/materialize/pull/3782

window.$ = window.jQuery = require('materialize-css/node_modules/jquery/dist/jquery.js');
require('materialize-css');

@patombugua Wrong. Since #4774 materialize shouldn't use the it's own bundled version of jQuery anymore. Are you using the latest version (0.99.0)? @lvarayut can you check if your problem is resolved in the latest version?

I'm using the latest version (0.99.0), and haveng the same error.
Uncaught TypeError: tooltipEl.velocity is not a function

@sergiorighi Can you share your code?

Just this on index.html, whith some tooltips, of course, but just like in the tooltip examples page:

And this is the init.js:
$(document).ready(function () { 	$('.tooltipped').tooltip(); });

@tomscholz, just as an information, I have an application that had an object that was declared as:
var ap = {};
and was working on regular brwosers, but in electron was giving an "undefined variable" error, so I set the object just as:
ap = {};
without the var declaration, and it worked.

I changed the first line of the

This issue seems to be resolved. If not, don't hesitate to open a new issue.


Feature/RelativeConfigurations

Feature:

Mr-Release will search for configurations in the current working directory and all its parents.

Breaking Change:

Initial Configuration will be stored in ~/.mr-release, as there is no extra folder required for a single file.
Configuration file renamed to .mr-release

LGTM 👍


document create_user fabric command in quickstart

Re: conversation in https://github.com/arachnys/cabot/issues/373 this issue is to cover some belated additions to fabric deployment documentation

Closing this per #381.


UX: decide if/how to render unavailable subdatasets

A dataset being accessed in a catalog is aware of its subdatasets, but unaware of whether those subdatasets are included in the same catalog.
On the dataset view, in the Subdatasets tab, a list of subdatasets are shown. These are all the subdatasets that are also included in the catalog and can therefore be navigated to. Currently, unavailable subdatasets, i.e. subdatasets for which no metadata has been added to the catalog, are not shown in the subdataset list in the dataset view.
However:  in the Files tab of the dataset view, the full filetree is shown including all subdatasets (available + unavailable). Current functionality when clicking on subdatasets in the file tree is to do an availability check, and throw error dialog when selecting an unavailable dataset.
TODO:

decide whether to list all subdatasets in subdatasets tab, or only available ones
decide whether to list all subdatasets in files tab, or only available ones
consider using greyed-out styling to display unavailable subdatasets, while disabling interaction with these datasets (i.e. no popup). Probably a more ubiquitous UX.

A related issue: https://github.com/datalad/datalad-catalog/issues/52


adds opt out of monthly email reports checkbox to profile

Closes #1142

I tested this locally and it works, but I am a little confused on the wording + the name of the field.
The name of the field is opt_out_stats_email, which to me, implies that if that value is true (the checkbox is checked), the user is opting out and does not want to receive the monthly email.
However, the text is Receive monthly report on downloads and views, which implies that if the checkbox is checked, they are actually opting in, and want to receive the monthly email.
So maybe this should actually be inverted, and that checking the box should set opt_out_stats_email to false, and unchecking it should set it to true. Or maybe to be less confusing, we should change the name of the field to receive_stats_email to better align with the help text.
What do you think?

I tested this locally and it works, but I am a little confused on the wording + the name of the field.
The name of the field is opt_out_stats_email, which to me, implies that if that value is true (the checkbox is checked), the user is opting out and does not want to receive the monthly email.
However, the text is Receive monthly report on downloads and views, which implies that if the checkbox is checked, they are actually opting in, and want to receive the monthly email.
So maybe this should actually be inverted, and that checking the box should set opt_out_stats_email to false, and unchecking it should set it to true. Or maybe to be less confusing, we should change the name of the field to receive_stats_email to better align with the help text.
We also may need to invert the check in user.rake depending on how we proceed with this: https://github.com/psu-libraries/scholarsphere/blob/develop/lib/tasks/user.rake#L8
What do you think?

Oh you are right, I will invert the checkbox value. Changing the field name would need a migration and it is used in couple place, I think it is easier to just invert the value.

@nicktiberi I ended up just changing the language of the checkbox rather than reversing the logic, seemed cleaner this way.


Fix and enhance the Debug panel

The Debug panel now:

uses the FPS statistics offered by Godot, more accurate and less jittery;
shows when the State refers to a character in mid air;
shows each axis name contained in the Velocity vector;
rounds the values of the displayed Velocity vector to improve legibility.

This PR doesn't really match the style of the rest of the code (this isn't a problem with you or the code that you wrote) but it would seem out of place if I just merged it. I made a commit that contains the changes that also references this PR so you should still get credit for this. Thanks for your contribution.

This PR doesn't really match the style of the rest of the code (this isn't a problem with you or the code that you wrote) but it would seem out of place if I just merged it. I made a commit that contains the changes that also references this PR so you should still get credit for this. Thanks for your contribution.

@ColormaticStudios  I will consider this PR as rejected and never contribute again.

No, you had some good input. I implemented all the changes that you suggested, but in a different style.


Feature/bootstrap update

@mateuszaaa
Please check that

Whitelist phase being equal to zero is fine
Default ratio is correct

3 questions:
what is cancel_bootstrap ?
did you remove the sudo from finalization of bootstrap? Cannot see it.
did you remove limit param in finalization - if not, what is the current default behaviour?


Add support for Android host

Currently, it is possible to compile android apps, for example, in kotlin on an android device without emulating any GNU/Linux system.
I would like to program in flutter from my cell phone, but flutter does not support android on its supported hosts, please, it would be very good to add support to run it on android.

Log:
Flutter crash report.
Please report a bug at https://github.com/flutter/flutter/issues.

## command

flutter

## exception

_TypeError: Null check operator used on a null value

#0      getHomeDirectory (package:unified_analytics/src/utils.dart:81:27)
#1      new Analytics (package:unified_analytics/src/analytics.dart:112:38)
#2      getDefaultAnalytics (package:flutter_tools/src/globals.dart:97:38)
#3      analytics (package:flutter_tools/src/globals.dart:93:56)
#4      run.<anonymous closure>.<anonymous closure> (package:flutter_tools/runner.dart:66:21)
#5      _rootRun (dart:async/zone.dart:1399:13)
#6      _CustomZone.run (dart:async/zone.dart:1301:19)
#7      _runZoned (dart:async/zone.dart:1804:10)
#8      runZonedGuarded (dart:async/zone.dart:1792:12)
#9      runZoned (dart:async/zone.dart:1744:12)
#10     run.<anonymous closure> (package:flutter_tools/runner.dart:63:12)
<asynchronous suspension>
#11     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
<asynchronous suspension>
#12     main (package:flutter_tools/executable.dart:91:3)
<asynchronous suspension>

## flutter doctor

[☠] Flutter (the doctor check crashed)
    ✗ Due to an error, the doctor check did not complete. If the error message below is not helpful, please let us know about this issue at https://github.com/flutter/flutter/issues.
    ✗ UnimplementedError: Host OS not supported.
    • #0      _currentHostPlatform (package:flutter_tools/src/artifacts.dart:753:3)
      #1      CachedArtifacts.getArtifactPath (package:flutter_tools/src/artifacts.dart:482:59)
      #2      FlutterValidator.validate (package:flutter_tools/src/doctor.dart:539:47)
      #3      Doctor.startValidatorTasks.<anonymous closure> (package:flutter_tools/src/doctor.dart:251:72)
      #4      asyncGuard.<anonymous closure> (package:flutter_tools/src/base/async_guard.dart:111:32)
      #5      _rootRun (dart:async/zone.dart:1399:13)
      #6      _CustomZone.run (dart:async/zone.dart:1301:19)
      #7      _runZoned (dart:async/zone.dart:1804:10)
      #8      runZonedGuarded (dart:async/zone.dart:1792:12)
      #9      runZoned (dart:async/zone.dart:1744:12)
      #10     asyncGuard (package:flutter_tools/src/base/async_guard.dart:109:3)
      #11     Doctor.startValidatorTasks (package:flutter_tools/src/doctor.dart:243:9)
      #12     DoctorText._validatorTasks (package:flutter_tools/src/doctor.dart:734:60)
      #13     DoctorText._validatorTasks (package:flutter_tools/src/doctor.dart)
      #14     DoctorText._runDiagnosis (package:flutter_tools/src/doctor.dart:738:53)
      #15     DoctorText.text (package:flutter_tools/src/doctor.dart:730:36)
      #16     DoctorText.text (package:flutter_tools/src/doctor.dart)
      #17     _createLocalCrashReport (package:flutter_tools/runner.dart:245:51)
      #18     _handleToolError (package:flutter_tools/runner.dart:207:31)
      <asynchronous suspension>
      #19     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
      <asynchronous suspension>
      #20     main (package:flutter_tools/executable.dart:91:3)
      <asynchronous suspension>

[!] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
    • Android SDK at /data/data/com.termux/files/usr/opt/android-sdk
    • Platform android-32, build-tools 33.0.0
    • ANDROID_HOME = /data/data/com.termux/files/usr/opt/android-sdk
    • ANDROID_SDK_ROOT = /data/data/com.termux/files/usr/opt/android-sdk/cmdline-tools/latest/bin
    • Java binary at: /data/data/com.termux/files/usr/opt/openjdk/bin/java
    • Java version OpenJDK Runtime Environment (build 17-internal+0-adhoc..src)
    ! Some Android licenses not accepted. To resolve this, run: flutter doctor --android-licenses

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

[☠] Connected device (the doctor check crashed)
    ✗ Due to an error, the doctor check did not complete. If the error message below is not helpful, please let us know about this issue at https://github.com/flutter/flutter/issues.
    ✗ Exception: Platform android is not supported.
    • #0      throwToolExit (package:flutter_tools/src/base/common.dart:10:3)
      #1      findChromeExecutable (package:flutter_tools/src/web/chrome.dart:81:3)
      #2      ChromiumLauncher.canFindExecutable (package:flutter_tools/src/web/chrome.dart:141:41)
      #3      ChromiumDevice.isSupported (package:flutter_tools/src/web/web_device.dart:114:41)
      #4      WebDevices.pollingGetDevices (package:flutter_tools/src/web/web_device.dart:362:25)
      #5      PollingDeviceDiscovery._populateDevices (package:flutter_tools/src/device.dart:563:42)
      #6      PollingDeviceDiscovery.discoverDevices (package:flutter_tools/src/device.dart:549:12)
      #7      DeviceManager.refreshAllDevices (package:flutter_tools/src/device.dart:233:20)
      #8      DeviceValidator.validate (package:flutter_tools/src/doctor.dart:683:55)
      #9      Doctor.startValidatorTasks.<anonymous closure> (package:flutter_tools/src/doctor.dart:251:72)
      #10     asyncGuard.<anonymous closure> (package:flutter_tools/src/base/async_guard.dart:111:32)
      #11     _rootRun (dart:async/zone.dart:1399:13)
      #12     _CustomZone.run (dart:async/zone.dart:1301:19)
      #13     _runZoned (dart:async/zone.dart:1804:10)
      #14     runZonedGuarded (dart:async/zone.dart:1792:12)
      #15     runZoned (dart:async/zone.dart:1744:12)
      #16     asyncGuard (package:flutter_tools/src/base/async_guard.dart:109:3)
      #17     Doctor.startValidatorTasks (package:flutter_tools/src/doctor.dart:243:9)
      #18     DoctorText._validatorTasks (package:flutter_tools/src/doctor.dart:734:60)
      #19     DoctorText._validatorTasks (package:flutter_tools/src/doctor.dart)
      #20     DoctorText._runDiagnosis (package:flutter_tools/src/doctor.dart:738:53)
      #21     DoctorText.text (package:flutter_tools/src/doctor.dart:730:36)
      #22     DoctorText.text (package:flutter_tools/src/doctor.dart)
      #23     _createLocalCrashReport (package:flutter_tools/runner.dart:245:51)
      #24     _handleToolError (package:flutter_tools/runner.dart:207:31)
      <asynchronous suspension>
      #25     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
      <asynchronous suspension>
      #26     main (package:flutter_tools/executable.dart:91:3)
      <asynchronous suspension>

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

! Doctor found issues in 4 categories.

Links:
Flutter SDK Android builds
Dart SDK Android Builds
Android SDK manager for Android
Aditional info
OS: Android 13 aarch64
Host: motorola moto g(6) plus
Kernel: 4.4.302-lineage-geccf0e75105a
Packages: 392 (dpkg), 1 (pkg)
Shell: bash 5.2.15
CPU: Qualcomm SDM630 (8) @ 2.208GHz
Memory: 3736MiB

I would like to program in flutter from my cell phone

@Yisus7u7
why?
(sounds dramatic, but seriously... what's the use case?)

@iapicca
Simply, apart from the fact that many people without a computer will be able to create apps with flutter from their cell phone, it would give me comfort to use neovim on my cell phone and program in flutter while I do not have my computer available. In any case, it is not difficult.

Thanks for the report. Labeling this as a potential proposal.

Thank you for filing this issue! However, I am going to close it as a duplicate of https://github.com/flutter/flutter/issues/75864. Please follow that issue for for more information and updates. Thanks!


Save data into the database

The data are broadcasted via an alert message.
The database should be able to receive it: for now the target has been unwisely chosen to be status_message.p8_alerts.mosquito.
Once the endpoints in the db are created, we can change the target of the alert (which can be set as a field of the config file)

I mentioned this on slack but for the data to make it into the database the message should be sent to sensor_value.<endpoint_name> where <endpoint_name> must match an endpoint which exists in the database. It should be the case that that can be used now, and that the logger service will send an alert saying that it is unable to log the requested value. I'm working on adding support for json data to the database to facilitate this, there is a firefly issue.

This is working now, I will close this issue


What diagramming functionality does Legend Studio currently support and what's on the roadmap for future enhancements?

Currently we support visualizations of models built in the editor as well as some simple drag & drop functionality (e.g. adding classes to the diagram, re-arranging/re-sizing boxes, ...). We do have small improvements in the pipeline (e.g. color options of boxes) but would encourage the community to suggest improvements to the diagramming feature that they would think will be helpful. Please open up GitHub issues with your suggestions and feel free to start contributing to those as well.


drivers/sensors: Adds driver for hyt271 sensore module

Summary
This adds a sensor driver for the hyt271, hyt221, and hyt939 sensor module from
vendor iST (Innovative Sensor Technology). This sensor type is connected via i2c
bus and allows the measurement of relative humidity and temperature.
Each driver instance supports two different character device for each type
(/dev/sensor/tempX and /dev/sensor/humiX).
This driver also supports changing the i2c address of one connected sensor on
the bus. This requires a callback to the platform-specific board logic which
must ensure a power-on reset.
Optional the driver allows setting up a read interval for fetching sensor data.
This is done by a worker thread and can be useful when watching several sensors
via poll() by the userspace application.
Impact
Sensor subsystem
Testing
stm32f103-minimum (Bluepill) connected on I2C bus number 2 (PB10 and PB11).
Signed-off-by: Marco Krahl<EMAIL_ADDRESS>

Hi @Marco-Krahl . You do not need to close the PR if the check fail. Simply make the fix and force push, which will restart the CI tests.


Be able to see the difference between invisible mobs and non invisible mobs?

I was wondering if you could add a setting using mod menu or a / command where you could toggle only being able to see invisible entities partially, like 50% opacity

As much as I'd like to say yes, the way this mod works is that the game checks whether a mob is invisible and if so just skips rendering it entirely, and this mod basically hijacks and overrides that invisibility check when you have the option enabled. I don't actually touch rendering code, and for the purposes of mod compatibility and maintenance I'm not currently interested in adding it. Sorry!


m5stack_fire/m5stack_core2  tested and core-dumped

While trying the template, I connected my m5stack_fire / m5stack_core2 and tried it with real HW.
Unfortunately, both core dumped.
My devices have both gyros of mpu6886 soldered. While initialization with mpu6050 driver, the device type is checked and therefore an exception is thrown.
I modified the mpu6050 library to fit for mpu6886 [https://github.com/oldsheep68/mpu6886.git].
I uploaded it also to crates.io. [https://crates.io/crates/mpu6886]
After that, the little game started to work with m5stack_fire. I didn't try the core2 device.
I do not know, if there are m5stack_fire with different accel/gyro chips soldered out there. The documentation clearly states MPU9250, but on my device, there is the mpu6886 mentioned.

Thank you @oldsheep68 for providing updated driver.
Your solution works out of the box.
MPU6886 generates slightly lower values when compared to MPU6050, so I just added threshold to 0.3 instead of 1.0 to detect tilt in the example to move the sprite around the screen.


Generate log files for Python Profiling cli

This fixes https://github.com/NVIDIA/spark-rapids-tools/issues/1363
In PR-https://github.com/NVIDIA/spark-rapids-tools/pull/1269,  support was added to generate stderr log files for qualification tool and missed profiling tool. This PR adds support to generate log files for profiling tool as well. While doing so, refactor was done to distinguish between profiling and qualification log.
Before this change:
2024-10-01 14:12:00,954 ERROR rapids.tools.submit.onpremLocal: Error removing temporary log4j properties file: remove: path should be string, bytes or os.PathLike, not NoneType

After this change:
New file created rapids_4_spark_profile_stderr.log under rapids_4_spark_profile/ directory
2024-10-01 14:15:10,345 INFO rapids.tools.submit.onpremLocal: Temporary log4j properties file removed: /tmp/tmps69jwl4g.properties

Interesting that no change on the scala side. I remember the log file was created by the QualificationOutputWriter. If that's the case, it means that we cannot generate log file by simply running profiling jar cmd. Or do I miss something?

You can generate log file by providing the log4jc configuration in java command. Since the sample log4j.properties is checked, we can modify the output file path, output file name and other parameters before running the java command.
java -Dlog4j.configuration= /home/dev/spark-rapids-tools/user_tools/src/spark_rapids_pytools/resources/dev/log4j.properties -cp rapids-4-spark-tools_2.12-24.08.3-SNAPSHOT.jar:$SPARK_HOME/jars/* com.nvidia.spark.rapids.tool.profiling.ProfileMain /home/dev/tmp_dir/testing_eventlog


RN fails on iOS 12.2 (Sim & Device) with Xcode 10.2

🐛 Bug Report
Running react-native on iOS 12.2 on physical device or simulator crashes without any error. Sim fails to connect to the Metro bundler at all. No errors during build process. Debug & Production (blocking us to release) both affected.
Downgrading any simulator to iOS 12.1 works as expected.
Previously working project (we are in the App Store) until XCode updated to 10.2
To Reproduce
Run react-native on iOS 12.2
Expected Behavior
Application connects to simulator and runs correctly.
Code Example
AppDelegate.m
#import "AppDelegate.h"
#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>
#import <React/RCTLinkingManager.h>
#import <SpotifyAuthentication/SpotifyAuthentication.h>
#import <SpotifyAudioPlayback/SpotifyAudioPlayback.h>
#import <SafariServices/SafariServices.h>
#import <FBSDKCoreKit/FBSDKCoreKit.h>
#import <Fabric/Fabric.h>
#import <Crashlytics/Crashlytics.h>
#import <discovery-Swift.h>

@implementation AppDelegate

@synthesize oneSignal = _oneSignal;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

  RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
  RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
                                                   moduleName:@"discovery"
                                            initialProperties:nil];

  self.oneSignal = [[RCTOneSignal alloc] initWithLaunchOptions:launchOptions appId:@"xxxxx-xxx-xxx-xxx-xxxxxxx" settings:@{kOSSettingsKeyAutoPrompt: @false}];

  [Fabric with:@[[Crashlytics class]]];

  rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];

  self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
  UIViewController *rootViewController = [UIViewController new];
  rootViewController.view = rootView;
  self.window.rootViewController = rootViewController;

  self.rootViewController = rootViewController;
  [self.window makeKeyAndVisible];

  [[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions];

  if (!SpotifyLoginManager.shared.isLoggedIn) {
    [SpotifyLoginManager.shared renew];
  }

  return YES;
}

- (void)applicationWillTerminate:(UIApplication *)application {
  [[UIApplication sharedApplication] endReceivingRemoteControlEvents];
}

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options {

  if ([url.absoluteString containsString:@"discovery:"]) {
    return [RCTLinkingManager application:application openURL:url options:options];
  }

  BOOL handled = [[FBSDKApplicationDelegate sharedInstance] application:application openURL:url sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] annotation:options[UIApplicationOpenURLOptionsAnnotationKey]];

  if ([SpotifyLoginManager.shared canHandleWithUrl:url]) {return YES;}

  return handled;
}

- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
{
#if DEBUG
  return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
#else
  return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
#endif
}

@end

Environment
React Native Environment Info:
    System:
      OS: macOS 10.14.3
      CPU: (8) x64 Intel(R) Core(TM) i7-7920HQ CPU @ 3.10GHz
      Memory: 168.75 MB / 16.00 GB
      Shell: 3.2.57 - /bin/bash
    Binaries:
      Node: 10.15.0 - /usr/local/bin/node
      Yarn: 1.12.3 - /usr/local/bin/yarn
      npm: 6.5.0 - /usr/local/bin/npm
      Watchman: 4.9.0 - /usr/local/bin/watchman
    SDKs:
      iOS SDK:
        Platforms: iOS 12.2, macOS 10.14, tvOS 12.2, watchOS 5.2
    IDEs:
      Xcode: 10.2/10E125 - /usr/bin/xcodebuild
    npmPackages:
      react: 16.8.3 => 16.8.3
      react-native: 0.59.2 => 0.59.2
    npmGlobalPackages:
      react-native-cli: 2.0.1
      react-native-git-upgrade: 0.2.7

Realized this is a duplicate of #24139


Ingestion Recommendation for Neural Search

Description
Recommendation for bulk size ingestion for neural Search.
Issues Resolved
5175
Checklist

[ ] By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license and subject to the Developers Certificate of Origin.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

@kolchfa-aws - Do you want to review this one, Fanit? Thanks.


Fix typo

Change "deply" to "deploy".

@martincostello : Thanks for your contribution to the Azure documentation! The author, @CarlRabeler, has been notified to review your proposed change.

Thank you Martin
#sign-off
@martincostello


Controlling Transmission Power

Hi, I got one BLED112 and working with that, I'm kind of new to that dongle and BLE, I want to know how can I adjust transmission power via your code to my USB BLE? is there any way to set it in the lowest possible number like -27?
@jrowberg @rkravchik

Did you try HardwareSetTxpower command?

@rkravchik Thanks, is that the same as "ad_tx_power_level = 0" in python code?


granularity in expand property to hashtable

hi guys !
here some example to clarify the feature request
PS C:\> $h = @{
   First = @{
        Second = @{
           Third = @{
               Last = 'End'
           }
        }
   }
}

PS C:\> $h

Name                           Value
----                           -----
First                          {Index, Second}

PS C:\> $h.First

Name                           Value
----                           -----
Second                         {Index, Third}

if we want to expand the last property
PS C:\> $h.First.Second.Third.Last
End

this is awesome but we have 2 problems :
a) its lot of typing
b) what if dont known the names of properties
i suggest one of this 3 suggestion:
1) add another parameter 'expandbydepth' to cmdlet select-object it take the depth number and if depth exceed the number of propertries it return a warning message
PS C:\> $h | Select-Object -ExpandByDepth -1 # Last
End

PS C:\> $h | Select-Object -ExpandByDepth 2
Name                           Value
----                           -----
Third                          {Last}

2) ...or change the behaviour to expandproperty property
PS C:\> $h | Select-Object -ExpandProperty First

Name                           Value
----                           -----
Second                         {Third}

# $h | Select-Object -ExpandProperty First | Select-Object -ExpandProperty second
PS C:\> $h | Select-Object -ExpandProperty First.second

Name                           Value
----                           -----
Third                          {Last}

# $h | Select-Object -ExpandProperty First | Select-Object -ExpandProperty second | Select-Object -ExpandProperty third
PS C:\> $h | Select-Object -ExpandProperty First.second.third

Name                           Value
----                           -----
Last                           End

# $h | Select-Object -ExpandProperty First | Select-Object -ExpandProperty second | Select-Object -ExpandProperty third | select-object -expand last
PS C:\> $h | Select-Object -ExpandProperty First.second.third.last
End

# expand until last property
PS C:\> $h | Select-Object -ExpandProperty .*last
End

# this is great if we don't known the name of properties (expand until the end)
PS C:\> $h | Select-Object -ExpandProperty .*
End

# this is a range expand until third property
PS C:\> $h | Select-Object -ExpandProperty .*Third
Name                           Value
----                           -----
Last                           End

3) expand dot operator ?
# expand until 'third' property
PS> $h.first.*third

# expand until end the property
PS> $h.*

The request looks like XPath for XML.
It was always imprudent how to use it.

The request looks like XPath for XML.
It was always imprudent how to use it.


URLs truncated at line endings

First of all: great tool! I did however come across a problem with URLs that span more than one line. I've attached a PDF that reproduces the problem here:
testpdfx.pdf
Command:
pdfx -v testpdfx.pdf -o testpdfx.txt

The URL in the footnote is extracted as::
http://jpylyzer.openpreservation.org//2016/01/06/Release-of-

Whereas this should be:
http://jpylyzer.openpreservation.org//2016/01/06/Release-of-jpylyzer-1-17-0

I used pdfx version 1.3.1 on Linux Mint.

Hi, I'm not sure if you are still working on this code.  But on the chance that you are, I wanted to let you know that I also experience the same issue in pdfx v 1.3.1 that bitsgalore reported above.

I would love to see a solution to this issue. It is one of two problems that is stopping me from using pdfx for my academic research.

I see the same issue; reported good or 404 URLs are truncated at 20 characters when using the command format:
pdfx testpdfx.pdf -c


Any plans for python3?

You know, python2 will be deprecated and no longer maintained soon.
I can still run this with python2 but do you have any plans for port to python3?
Thanks.

This project will be deprecated soon, in favor of a new port. cc: @thypon

The new project, released soon, will support both python2 and python3


Issue with shardmap when trying to use static arguments

Description
Following from this discussion https://github.com/google/jax/discussions/22353
I made this MWE
from functools import partial
import jax
jax.distributed.initialize()
from jax.experimental.shard_map import shard_map
from jax.experimental import mesh_utils
from jax.sharding import PartitionSpec as P , Mesh

pdims = (2 , 2)
mesh_shape = (8 , 8 , 8)
devices = mesh_utils.create_device_mesh(pdims)
mesh = Mesh(devices, axis_names=('y', 'z'))
sharding = jax.sharding.NamedSharding(mesh, P('y', 'z'))
local_mesh_shape = [mesh_shape[i] // pdims[i] for i in range(len(pdims))]

master_key = jax.random.PRNGKey(0)
key = jax.random.split(master_key)[jax.process_index()]

@partial(shard_map , mesh=mesh , in_specs = (None , P()) , out_specs = P('y', 'z'))
def multi_gpu_impl(shape , key):

    local_mesh_shape = [
        shape[0] // pdims[1], shape[1] // pdims[0], shape[2]
    ]

    return jax.random.normal(key, local_mesh_shape)

out = multi_gpu_impl(mesh_shape , master_key)

print(out.shape)

print(out.addressable_data(0).shape)

I have this error
    out = multi_gpu_impl(mesh_shape , master_key)
ValueError: safe_zip() argument 2 is longer than argument 1

Following what @mattjj did in https://github.com/google/jax/pull/22049
I am not able to use a tuple static arguments
System info (python version, jaxlib version, accelerator, etc.)
jax:    0.4.30
jaxlib: 0.4.30
numpy:  2.0.0
python: 3.10.4 | packaged by conda-forge | (main, Mar 24 2022, 17:38:57) [GCC 10.3.0]
jax.devices (8 total, 8 local): [cuda(id=0) cuda(id=1) ... cuda(id=6) cuda(id=7)]
process_count: 1
platform: uname_result(system='Linux', node='jean-zay-iam02', release='5.14.0-284.55.1.el9_2.x86_64', version='#1 SMP PREEMPT_DYNAMIC Mon Feb 19 16:57:59 EST 2024', machine='x86_64')

$ nvidia-smi
Tue Jul  9 23:13:15 2024
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.54.15              Driver Version: 550.54.15      CUDA Version: 12.4     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA A100-SXM4-80GB          On  |   00000000:07:00.0 Off |                    0 |
| N/A   26C    P0             66W /  400W |     425MiB /  81920MiB |      0%      Default |
|                                         |                        |             Disabled |
+-----------------------------------------+------------------------+----------------------+
|   1  NVIDIA A100-SXM4-80GB          On  |   00000000:0B:00.0 Off |                    0 |
| N/A   27C    P0             69W /  400W |     425MiB /  81920MiB |      3%      Default |
|                                         |                        |             Disabled |
+-----------------------------------------+------------------------+----------------------+
|   2  NVIDIA A100-SXM4-80GB          On  |   00000000:48:00.0 Off |                    0 |
| N/A   26C    P0             67W /  400W |     578MiB /  81920MiB |      0%      Default |
|                                         |                        |             Disabled |
+-----------------------------------------+------------------------+----------------------+
|   3  NVIDIA A100-SXM4-80GB          On  |   00000000:4C:00.0 Off |                    0 |
| N/A   27C    P0             66W /  400W |     425MiB /  81920MiB |      0%      Default |
|                                         |                        |             Disabled |
+-----------------------------------------+------------------------+----------------------+
|   4  NVIDIA A100-SXM4-80GB          On  |   00000000:88:00.0 Off |                    0 |
| N/A   26C    P0             67W /  400W |     425MiB /  81920MiB |      0%      Default |
|                                         |                        |             Disabled |
+-----------------------------------------+------------------------+----------------------+
|   5  NVIDIA A100-SXM4-80GB          On  |   00000000:8B:00.0 Off |                    0 |
| N/A   27C    P0             68W /  400W |     425MiB /  81920MiB |      0%      Default |
|                                         |                        |             Disabled |
+-----------------------------------------+------------------------+----------------------+
|   6  NVIDIA A100-SXM4-80GB          On  |   00000000:C8:00.0 Off |                    0 |
| N/A   27C    P0             66W /  400W |     425MiB /  81920MiB |      0%      Default |
|                                         |                        |             Disabled |
+-----------------------------------------+------------------------+----------------------+
|   7  NVIDIA A100-SXM4-80GB          On  |   00000000:CB:00.0 Off |                    0 |
| N/A   27C    P0             70W /  400W |     425MiB /  81920MiB |      1%      Default |
|                                         |                        |             Disabled |
+-----------------------------------------+------------------------+----------------------+

Thanks for raising this! Definitely looks like a bug; any time you see a safe_zip error it's likely a JAX-internal bug.

Thank you @mattjj,
I have tried a bunch of things, bools PRNGKeys work.
It is only Sequences that seems to cause the issue.

Hmm, I tried to translate to a local CPU repro but this didn't crash:
import os
os.environ['XLA_FLAGS'] = '--xla_force_host_platform_device_count=8'

from functools import partial
import jax
from jax.experimental.shard_map import shard_map
from jax.experimental import mesh_utils
from jax.sharding import PartitionSpec as P , Mesh

pdims = (2 , 4)
devices = mesh_utils.create_device_mesh(pdims)
mesh = Mesh(devices, axis_names=('y', 'z'))
sharding = jax.sharding.NamedSharding(mesh, P('y', 'z'))

master_key = jax.random.PRNGKey(0)
key = jax.random.split(master_key)[jax.process_index()]

@partial(shard_map , mesh=mesh ,
         in_specs = (None , P()) , out_specs = P('y', 'z'))
def multi_gpu_impl(shape , key):
    return jax.random.normal(key, shape)

out = multi_gpu_impl((2, 2) , master_key)

print(out.shape)

print(out.addressable_data(0).shape)

Is that missing something? Could you set the JAX_TRACEBACK_FILTERING=off shell environment variable and re-run your repro, then paste the full traceback?

Ah, I wonder if it's just a version issue: #22353 may only be available at HEAD, ie jax==0.4.31, not in jax==0.4.30. Only jax==0.4.30 has been pushed to pypi, so you'd have to install jax from GitHub.

Can you try running from github HEAD? You might be able to do pip install --upgrade git+https://github.com/google/jax.git@main.

Yeah with 0.4.31 I don't reproduce.
I am going to close then thank you very much.
One question, when to use P() and when to use None
None is fully compatible with static_argnums if the parent has a jit decorater?

One question, when to use P() and when to use None

There's not much of a difference; P() only works for array-likes, whereas None works more generally, and they produce the same result even for arary-like arguments.


Prepare Release 10.2.0

Release 10.2.0
Checklist:

[x] Fix errors in PDF docs
[x] Update packaging/common/khiops/WHATSNEW.txt and packaging/common/khiops/README.txt

[x] Update message about windows support (windows 10 and higher, but should work in windows 7)
[x] Do the same in the website but only windows 10 and higher.

[x] Bump the source's version and commit
[x] Create a temporary tag v10.2.0 in dev
[x] Create a release in GH repo from the temporary tag

[x] Check that visualization packages are signed
[x] Create packages for windows and linux
[x] Sign the windows packages
[x] Test packages
[x] Upload all packages to the release
[x] Update release notes in the GH release page

If there are issues in the packages

[x] Fix them
[x] Repeat from Create temporary tag ...

Otherwise:

[x] Remove tag v10.2.0, merge dev to main and tag v10.2.0 the main branch
[x] Create release v10.2.0

[x] Sign windows installer and upload
[x] Upload linux packages

[x] Create hotfix branch v10.2.0-hotfix
[x] Unblock dependecies (khiops-python, khiops-server, and co.)

All done.


Write reports with streams

Change reports to write using streams, so we don't have to hold on to a 250-MB data structure in memory (which breaks lambda).

Have tested this locally, and it works fine.  Staging report job is currently broken, so the worst this can do is continue to break it.  Merging and we'll see!


uploading 01-copy.sh

pull request for the creation of my 01-copy.sh file

Looks like you had fun with ants!


We need to log in as the organisation

Untested - just a WAG at the moment.
The build failed because it tried to push the container to comit-botty-mc-botface. We need to push to comit-network.

Replaced by


Last change: now ago

onefetch 2.9.1
Very shortly after making a commit and then running onefetch, the "Last change" shows "now ago".
Last change: now ago
The word "ago" should be omitted if the delta time is close enough to be "now" because it doesn't sound right.

I agree, it does sound a bit clumsy :grimacing:
onefetch relies on chrono_humanize for its time formatting.
Looking at this issue, it should be easily fixable by replacing these two lines  with:
let ht = HumanTime::from(dt_with_tz);
format!("{}", ht)

I agree, it does sound a bit clumsy :grimacing:
onefetch relies on chrono_humanize for its time formatting.
Looking at this issue, it should be easily fixable by replacing these two lines  with:
let ht = HumanTime::from(dt_with_tz);
format!("{}", ht)


Baking stops on its own

Running: Bakechain 0.2.0
OS: Win 10 1803 x64
I leave a dedicated machine running bakechain, no sleep allowed, and from time to time I check in on it to see that "Stop Baking" is back at "Start Baking".
I can't find any logs to look at and I doubt it writes to the event viewer.
How can I get to the bottom of this?
Additionally, is there an API I can use to check to see if my baking status changes so I can get alerted when it stops baking? This is only for mitigation but it would be useful in other scenarios also.
Thank you for your hard work, Stephen!

Do you transfer actual Tez into the account to test?

I'll look into it for you. There is no API available, but we will be looking at a notification system in future (which would send out an email if the server doesn't hear from you).

are there any logs to discover why it stops baking on it's own?

Not yet, but will add some in a future release.
On Fri, Jul 6, 2018 at 3:45 AM, gaia<EMAIL_ADDRESS>wrote:

are there any logs to discover why it stops baking on it's own?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/bakechain/bakechain/issues/2#issuecomment-402766606,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ANM_ZYGKdh5xMKCVw5rvznj7XXRCjGfJks5uDjSogaJpZM4VDCWk
.

Hi Stephen, i also have this issue which would be quite a pain when baking starts. can you add a possibility to automaticaly start baker if it stops? Many thanks for your efforts by the way

This should be fixed in the latest version (0.3.0)

Hi ,this problem has not been solved , it seems the software still stop baking on its own after i update to 0.3.0 version. My OS system is windows 2012 server R2 standard.

This still seems to be happening 0.3.0


Fixed bug in canonicalizing xarray data

There is a bug in how xarray arrays are canonicalized which occurs when there is scalar dimension in the dataset which is not referenced in the kdims. This fixes that bug and also fixes another bug that ignores explicitly supplied kdims when constructing an Element from a xr.DataArray.
Fixes bug https://github.com/ioam/geoviews/issues/72

Looks good and the tests are passing. Merging.


Compress the cache registry directory

What happen?

Does the new version not pack and compress the image cache, there are too many small files
Relevant log output?
No response
What you expected to happen?
No response
How to reproduce it (as minimally and precisely as possible)?
No response
Anything else we need to know?
No response
What is the version of Sealer you using?
0.9.3
What is your OS environment?
debian 10
What is the Kernel version?
4.19.0-23-amd64
Other environment you want to tell us?

Cloud provider or hardware configuration:
Install tools:
Others:

@clcc2019 ，yes, registry data is not compressed. Actually ,we are planning to do it in the next sealer version. more to see https://github.com/sealerio/sealer/issues/2100.


Split parsing from validation completely

During the refactoring for Connexion 3, we deduplicated all coerce_type calls during the refactoring and moved them into the uri_parser so it is done in a single place. When looking into #1931 however, I noticed we are still using the uri_parser from more places than we should.
This PR centralizes the parsing further into the ConnexionRequest class. During validation, we now instantiate a ConnexionRequest instead of a Starlette Request, and leverage it instead of calling the uri_parser directly.
I split the parsing and validation in the tests so they can be tested in isolation.

coverage: 94.148% (-0.03%) from 94.179%
when pulling 576e67bad878d6b08954dc9f9d80cde606be535d on feature/split-parsing-validation
into 810a980fe99423013130ff1df4ca9d727e1e9109 on main.

Hi @RobbeSneyders, thanks a lot for looking into my PR and providing this change, which seems to make a lot of change! Trying it out, I found that it only applies to path and query params, and not to header params. Parameter validator gets request.headers, which, on further investigation, is not a property of ConnexionRequest, but only exposes the headers property of the underlying Starlette request object. On this, no type conversion is being done, so I'm now seeing the exact same issue as before.
Trying to fix this by adding a header_params property to ConnexionRequest, I stumbled over more issues. For some reason, I don't know whether that is a bug in Connexion or a misconfiguration on my side, the URIParser used in the ConnexionRequest doesn't have the param_defn from the API spec, so it skips the type conversion. I decided to stop the migration effort here for a while as it's been taking too much time already. This is just to inform you about the things I've noticed.


Link to markdown tags returns 404

Describe the bug
The documentation page https://spacebook.app/getting-started/content/#adding-your-content has the paragraph starting "Your content can include all sorts of markdown tags..." with a link to https://spacebook.app/markdown but this returns a 404 error.

Fixed, thank you!

Fixed, thank you!

this is a 404 again


first class classes

It's currently impossible to render a class from a ReactT. This should be possible with locally or something.
In the best of all worlds you could do something like:
div_ $ do
    someClass
    span_ "this is not a class"

There are a few problems though...

someClass is not ReactT so we can't use do notation here. Okay, we could use RebindableSyntax to make this possible, but I think that's a bad idea. Instead, why not extend locally to take either a ReactT or a ReactClass.
The meaning of a class is not super clear. In the current formulation it's where state is stored in an IORef, but that's an implementation detail, not a means of abstraction. Maybe we don't need classes. Maybe we can figure out a clearer meaning for them. createClass also feels really weird. It's stateful in an unclear way and lives in the IO monad.

Can we have a composition tag reactClass_ to bridge the gap between ReactT and ReactClass in an obvious way?:
haskell
div_ $ do
reactClass_ someClass
span_ "this is not a class"

^ I see your point about createClass living in the IO monad from trying to use the above example, but it doesn't work anyway yet, because the render function associated with foreignClass returns a ReactT, not a ForeignNode. It looks like doRender contain everything we need to convert a ReactT from a ReactClass into a ForeignNode, but it looks like the ReactClass is required because of its reference to the state.
It looks like the Javascript render function on each React class is being short-circuited and it needs to work in order for a React class to work when instantiated using createElement(someClass). Also, it looks like the state is currently associated with each class, whereas it should be associated with each class instance, which should all get created by React. React already has a place for storing state, so wouldn't it be correct to store the Haskell state as a key inside the JS state?
About to do some more hacking........

Where do animations and transitions fit into Javascript React?

Yeah, I think something like reactClass_ is the right way to approach rendering classes. I might want to reuse locally.
With 0.13b1 React.createClass is no longer required, which makes it less awkward to move class creation out of the IO monad.
I'm currently thinking of classes in react-haskell slightly differently than classes in React proper. Each one is sort of a standalone root like you might see in flux controller-views. The idea being you can isolate different parts of the tree so the whole thing doesn't have to rerender.
So react-haskell is much more prescriptive than regular React because it builds in (soon) controller-view components, transitions, and animations. I think in the future I'd like to separate these different things into their own packages (along with routing, etc), but for now it's most convenient to develop them in the same package.
As far as state vs props, they're operationally the same for top level components, but I think it's slightly clearer to use props.
Was that all reasonable?

I've been working on a branch which uses a reactClass_ as a starting point - it can always be done away with later. The unmonadic class creation helps massively. Although, couldn't we just not use the IO monad, since class creation is effectively instant and doesn't have any side effects (I couldn't think of any)?
But surely you still want to be able to compose them? Does a state change in a component cause all of its parent components to rerender?
I think your approach to these extensions is reasonably sound. With animations, I sort of abandoned them in order to get composing classes working. I'll hopefully be able to bring them back in as an extension in a separate module, but this package. I'll need to do that before submitting a pull request because otherwise my hacking would decrease the functionality in this repo.

couldn't we just not use the IO monad, since class creation is effectively instant and doesn't have any side effects

Yep!

But surely you still want to be able to compose them?

Yes. Here's what I'm thinking. reactClass_ and locally are almost equivalent, but the former takes a ReactClass and the latter takes a ReactT.
With locally, you're embedding a "dom fragment". It has no embedded knowledge. The class is still responsible for handling transitions and animations.
With reactClass_, you're embedding a class, which has embedded knowledge. The child class handles its own events like normal. But the parent class also handles events the child class emits. I think this means we need to add another variable to ReactClass so it has a notion of both internal and external signals - ie those signals which it handles and those it emits. Emitting a signal only happens in response to handling a signal (by the way, I'm being sloppy with the terms "signal" and "transition" - I mean the same thing by both). render only renders classes that emit Void - ie never emit signals.

Does a state change in a component cause all of its parent components to rerender?

No. In the formulation I'm picturing a class means two different, but related things:

It's a conceptual whole. An abstraction. Examples: search box, map, etc.
It batches events and animations. It's a hub for state changes that might be contained. In the map example, most interactions and animations are probably handled within that class, without ever alerting the map's parent of user interaction.

My observation is that work (events and animations) can often be contained within an abstraction. Like in the map example - we can contain all that work to within the map. I propose intentionally conflating the two meanings of classdom in ReactClass because more often than not they roughly coincide.
Now, we can limit work to within a class except for when the child emits an event.

Two things I need to think about / come to terms with:
1. uni-directional data flow
In the flux architecture uni-directional data flow feels like an improvement over plain React. We have something similar-ish at the moment, but only because we can't nest classes (which is definitely a bad thing). React-haskell signals and flux actions are roughly the same. They transition the store (there's only one in react-haskell, it's the top-level state).
Now, it feels like an improvement over the current state of affairs to be able to nest classes, selectively emitting events from child classes, hiding irrelevant state. However, if you squint we've arrived right back at the original React architecture, with props being passed in and state within the class. The difference is we're emitting events rather than taking callbacks. But still, I guess that means we've lost uni-directional data flow, since we need to handle signals at every level in the hierarchy.
I don't think the situation is quite as bad as that, which I can elaborate on later when I've thought about it more and am less tired.
2. hidden state
Nesting classes also (if we do it wrong) introduces hidden state, which is definitely not good. One of my design requirements is that you can serialize the entire state of the app. Preferably you can serialize the entire history of the app. Every transition that's ever happened. Would make debugging so much easier.
Note: I've taken a small step away from this world with animations. They're treated as inconsequential state which would be ignored in serialization. I think that's okay.
Where I'm looking for inspiration:

oHm
elm

I took a look at this to get more insight: https://github.com/ianobermiller/nuclearmail/blob/master/src/js/ThreadView.js and made some notes mainly to help my own understanding:
React:

props and handlers flow down the React DOM
state is stored in each React Class
Data can only move up the DOM when event handlers cause a state change higher up.
Data flows down the React DOM through props and state, then at different points in the DOM, it can jump directly upwards into the state of any React Class through events, including its own React Class.

Flux:

props flow down the React DOM, but handlers are not passed down between React Classes.
state is stored externally to the React DOM.
Data can only move up the DOM when the event handlers aka actions trigger the external state to change, which causes the whole React DOM to rerender.

End of notes
Is hidden state required?
If you want to let people use react-haskell in a non-Flux-like way, composing classes, then yes. If you only want to only let people use a Flux-like architecture, then no, unless performance of rerendering the whole React DOM or copying most of a large immutable object is likely to become a problem, in which case yes.
I'd suggest allowing hidden state to exist, and leaving it up to the application as to whether to use it. I'd advocate having a ReactClass that mapped as closely as possible to a JS React Class, and exporting an alternative ReactClass in a module maybe called React.Flux where state could always be (), thereby banning hidden state. An application that used a flux architecture with react-haskell could then more conveniently use React.Flux.ReactClass, not have to worry about state or child handlers, and always be able to serialize its entire state.
This breaks transitions a tiny bit though, because they can no longer just act on the state of the component, instead they have to act the state of some global datastore.


ci: merge opae-libs

Automated changes by create-pull-request GitHub action.
Must be use a normal merge (not squash-merge and not rebase-merge)

Coverage increased (+0.3%) to 62.239% when pulling f7b2096d278fa3de71c0dbe8518edbfa241f21bb on auto/update-libs into 36364178b67b030c1ac62f3a170f1d833c2b0e8f on master.


[spirv] Extract common SPIR-V target functionalities out (NFC)

This commit just extracts some common SPIR-V target functionalities
into a new class so that later we can reuse them for a Metal-SPIRV
compiler target backend. It's pure refactoring plus removing
uncessary header includes and library dependencies, so NFC.

@MaheshRavishankar this conflicts with your existing patches a bit. I'm happy to wait yours to submit first.

do you mind holding off on this till PR #3095 lands. Touches a lot of the same parts and is just waiting on integrate to happen.

Yeah certainly, as said in the above.


fix: UnmarshalJSON of dst not called when gjson.Scan #3769

Fix:  #3769

This PR will affect many of the original unit tests.💔

@wlynxg Hello, thanks for you contribution, but I've commented https://github.com/gogf/gf/issues/3769 for some reason the gjson does not support json.Unmarshaler.


Determine chrome adoption rate. Are we safe to use a function only in chrome v42?

I just got an update for chrome -- v42-- should we push the change for opening the page?
doing so will remove the permission for 'requiring access to history' or whatever it claims... since chrome auto updates, is it possible that people may still be on v41?
https://developer.chrome.com/extensions/runtime#method-openOptionsPage
this would be huge. lots of people are really turned off to DIM because of that permission.

Can you give me access to the google analytics?
On Thu, May 14, 2015 at 10:42 AM kyle shay<EMAIL_ADDRESS>wrote:

I just got an update for chrome -- v42-- should we push the change for
opening the page?
doing so will remove the permission for 'requiring access to history' or
whatever it claims... since chrome auto updates, is it possible that people
may still be on v41?
https://developer.chrome.com/extensions/runtime#method-openOptionsPage
this would be huge. lots of people are really turned off to DIM because of
that permission.
—
Reply to this email directly or view it on GitHub
https://github.com/kyleshay/DIM/issues/117.

done!
here is some info pulled

~10% of the population. Does this cover the past two months? Didn't 42 come
out in this timeframe.
On Thu, May 14, 2015 at 11:11 AM kyle shay<EMAIL_ADDRESS>wrote:

done!
here is some info pulled
[image: img]
https://camo.githubusercontent.com/dd36b0a067e03cb02f0867942a8f7fd65edab305/687474703a2f2f692e696d6775722e636f6d2f4a796e436438322e706e67
—
Reply to this email directly or view it on GitHub
https://github.com/kyleshay/DIM/issues/117#issuecomment-102087903.

Past two weeks, only 1% was been Chrome 41.  Go for it.  btw, what's the
secret sauce that removed the dependency on browser history?
On Thu, May 14, 2015 at 11:24 AM Rick Casey<EMAIL_ADDRESS>wrote:

~10% of the population. Does this cover the past two months? Didn't 42
come out in this timeframe.
On Thu, May 14, 2015 at 11:11 AM kyle shay<EMAIL_ADDRESS>wrote:

done!
here is some info pulled
[image: img]
https://camo.githubusercontent.com/dd36b0a067e03cb02f0867942a8f7fd65edab305/687474703a2f2f692e696d6775722e636f6d2f4a796e436438322e706e67
—
Reply to this email directly or view it on GitHub
https://github.com/kyleshay/DIM/issues/117#issuecomment-102087903.

before:

after:

before we needed to query the open tabs to see if DIM was open (aka "access to your browsing history") so that a new instance isn't opened.
open options page will automatically handle that stuff under the hood.

After 3.0.3 I think this can be closed?

correct!

Incognito mode is broken.  We can remove the tabs permission and still keep the previous opening strategy.  I've restored it dev and master branch.  I'll make v3.0.4 to fix this when you've had a chance to comment @kyleshay.

 We just ran into a similar fringe case at work where Incognito doesn't like you accessing localStorage (Safari though, I think). Bah.

:/

hmm, what's the fix then if we're removing the tabs permission?

Old code works without tabs. Only need tabs if you change the url, favicon,
which we don't.
On Fri, May 15, 2015 at 11:26 AM kyle shay<EMAIL_ADDRESS>wrote:

hmm, what's the fix then if we're removing the tabs permission?
—
Reply to this email directly or view it on GitHub
https://github.com/kyleshay/DIM/issues/117#issuecomment-102452837.

the reason we had tabs was so that we could determine if DIM was already open -- if a user clicks the DIM icon button again it will set that instance to the active tab. Right now every time you click the icon, it opens a new instance of DIM.

I pulled the tabs permission out and it still worked, even after re-installing.

right, but if you click the DIM icon (after DIM is already open) it will open a new instance of DIM.

Are we talking about the checked in version?  Yeah, but the original code works and does the check.  We need to go back to that.

ahhh----- sorry about that. i misunderstood.
just looked at the documentation again-https://developer.chrome.com/extensions/tabs
You can use most chrome.tabs methods and events without declaring any permissions in the extension's manifest file. However, if you require access to the url, title, or favIconUrl properties of tabs.Tab, you must declare the "tabs" permission in the manifest, as shown below:

The code I checked in was just me 'testing' boundaries.  We should revert and push.

Also, google analytics is in the code twice :/
Once in the main.js, and again in app.config.js.  We should remove the main.js one.  The app.config.js is pulling the JS file from Google so it will always be up to date.

yupyup, sounds good!


SpnegoDjangoBackend does not respect hadoop.security.auth_to_local

I've configured Hue (CDH 5.12.1) to use desktop.auth.backend.SpnegoDjangoBackend: the authentication by itself works well, but I'm having issues with authorization to HDFS/Hive/Impala & c.
My user principal name is<EMAIL_ADDRESS>and I've configured HDFS and all other hadoop services to map my principal to<EMAIL_ADDRESS>via hadoop.security.auth_to_local in core-site.xml (see this cloudera guide).
SpnegoDjangoBackend does not respect these rules, using the example above:

I login to my work PC as<EMAIL_ADDRESS>I open Hue in my browser, no password asked I'm automatically logged in as parnigot
Hue proxies my queries to the hadoop services as user parnigot, but all these services know me as<EMAIL_ADDRESS>so everything fails with authorization exception (no hdfs permission, no sentry roles)

Correct me if I'm wrong, but here it always strips the realm section from the username. In my opinion Hue should respect the auth_to_local rules, they are standard in all other hadoop services...

SpnegoDjangoBackend is between your browser and the Hue server. Between Hue and the other services, the auth is with kerberos as the hue user, your username will be proxied as Hue acts as a proxy user. This means you only need to make sure Hue's has a correct ticket and hue is added to the list of hadoop proxy users in core-site.xml

Hi Romain, thanks for the response.
I think I've understood correctly how the proxy user mechanism works: the issue is about Hue using the wrong target user (its behaviour is not consistent with the other tools of the ecosystem).
Continuing with the example above. If I login as<EMAIL_ADDRESS>on a cluster node and I use all the command line tools (hdfs client, beeline, impala-shell) the hadoop.security.auth_to_local maps my username to<EMAIL_ADDRESS>and hdfs and all other services know me by that name.
Instead if I login to Hue with the SpnegoDjangoBackend I'm logged simply as parnigot and that is the username forwarded to the cluster services. And since the username parnigot is different from<EMAIL_ADDRESS>I'm not authorized to view my resources.
This was a common issue with other services in the past, for example Impala had the same problem fixed by IMPALA-2660.


Create Collection with imported plant data

Create "all plants" collection and import data from JSON

Tag invasive with inv ["NY"]

Tag invasives on the list


Jesse: Watch arvo.net

Jesse requests the watch of the watch_keyword arvo\.net. See the MS search here and the Stack Exchange search in text, in URLs, and in code.

arvo\.net has been seen in 1 true positive, 0 false positives, and 0 NAAs.

Approved by Mithical in Charcoal HQ


Non-deterministic proxy config

Recent changes introduced a bug where envoy config is no longer the same on re-list. This is bad since we get non-deterministic bugs. For example, here a request from "a" pod sent to "a" gets routed to another "a" pod. It will be ping-ponged across proxies never coming to the application!
              "virtual_hosts": [
                {
                  "name": "a.default.svc.cluster.local:http",
                  "domains": [
                    "a:80",...
                  ],
                  "routes": [
                    {
                      "prefix": "/",
                      "cluster": "inbound:8080"
                    }
                  ]
                },
                {
                  "name": "a.default.svc.cluster.local:http-alternative",
                  "domains": [
                    "a:8080",...                  ],
                  "routes": [
                    {
                      "prefix": "/",
                      "cluster": "outbound:a.default.svc.cluster.local:http-alternative"
                    }
                  ]
                },

@rshriram I think it's likely your change. Do you want to rollback your change to unblock the tests or fix this?

This explain why #97 fails.

Nope, it doesn't


fix: pad audio arrays to same shape if sample rates differ

Description
Please refer to #1875 for a detailed description of the issue this fixes. When ffmpeg creates subclips of a video sometimes the audio sample rates are inconsistent causing an error due to different size arrays. To fix this the arrays are padded to ensure they are all the same shape before they are parsed as AudioNdArray.

Hey @chrisammon3000 ,
Thanks a lot for the contribution.
However we would ask you to submit a test case to make sure the error case is covered and to make sure that the commits are signed-off to ensure that we can merge the contribution.
Please take a look at our contributing guidelines (https://github.com/docarray/docarray/blob/main/CONTRIBUTING.md)


Video Player

Hi, is there any way to play the video through Avalonia?
I found a project, but it works only on Windows, i would like cross-platform.

To do this in Avalonia itself seems not-super-feasible, because you'd have to either include some kind of cross platform media player (VLC?) with Avalonia, or hook the low level media APIs in every single supported operating system, which wouldn't be super easy as far as i can tell?

Disclaimer: The following commentary is my personal opinion regarding this matter. Any opinion I say in this space is not reflective of The Avalonia Project's current/future plans or endeavors and is also not representative of any consensus or opinion of any other core maintainer.
I think this won't be in our focus for the time-being, as @WamWooWam said, it's a bit tricky to coordinate a sane approach towards media decoding. First off we have a crippling bug for this kind of applications (#2244) because we need to shuttle image data to-&-fro native codecs to managed .NET space. Wrappers like FFMpeg.Autogen will definitely ease it up but for now it'd have to take a backseat.

May be this project can be ported to Avalonia: https://github.com/unosquare/ffmediaelement - it already has wrappers around ffmpeg and some WPF controls which relatively easy can be ported

@Sergey-Terekhin yes I've been aware of that project even before I got into Avalonia, but there are still some showstopper bugs (#2244) that we need to address first. Besides porting that is not for the faint-hearted, trust me coz i tried before and i judged that we're better off learning how it interacts with ffmpeg.autogen instead of porting it outright.

https://github.com/videolan/libvlcsharp/pull/173
Started working on this and hopefully it gets merged in. I've tested it on Windows, MacOS, and Linux (only Ubuntu so far) and it works pretty well.

@shawnallen85 Is there a way to plug your video extension into an Avalonia UI application?

Sorry for the delay -- this is what I have in my code for using the video extension:
In the XAML:
    <Panel>
        <controls:Video MediaPlayer="{Binding MediaPlayer}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
    </Panel>

In the view model:
I have a property for the MediaPlayer (referenced above in the XAML):
public MediaPlayer MediaPlayer { get; }
Then in my functions I control the media player -- that being I start/stop/change the media, etc.
I hope that helps -- let me know.
Happy Thursday!
Shawn

Do you have a simple demo with this in?

Sorry for the delay -- this is what I have in my code for using the video extension:
In the XAML:
    <Panel>
        <controls:Video MediaPlayer="{Binding MediaPlayer}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
    </Panel>

In the view model:
I have a property for the MediaPlayer (referenced above in the XAML):
public MediaPlayer MediaPlayer { get; }
Then in my functions I control the media player -- that being I start/stop/change the media, etc.
I hope that helps -- let me know.
Happy Thursday!
Shawn
Edit:
I just noticed this, but my code is referencing the control before it was integrated into the LibVLC project officially -- controls:Video might actually be controls:VideoView.
I think the rest is the same.

I don't -- I'll see if I can modify the app I was using this in to use the official control and push it to github in the next day or so.

I figured if I didn't knock it out now it wouldn't happen soon :P.
https://github.com/shawnallen85/Homer

Thanks. I will give it a whirl!
From: Shawn Black @.>
Sent: 18 March 2021 16:47
To: AvaloniaUI/Avalonia @.>
Cc: Simon Murrell @.>; Comment @.>
Subject: Re: [AvaloniaUI/Avalonia] Video Player (#2571)
I figured if I didn't knock it out now it wouldn't happen anytime soon :P.
https://github.com/shawnallen85/Homer
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHubhttps://github.com/AvaloniaUI/Avalonia/issues/2571#issuecomment-801988519, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AB7O7J3FEC7ST3B3FOAL53LTEIG7DANCNFSM4HPSWYWQ.

I sucess.
you can read
https://github.com/donandren/vlcsharpavalonia/blob/master/src/LibVLCSharp.Avalonia/NativeVideoPresenter.cs
https://github.com/hudec117/Mpv.NET-lib-/blob/master/src/Mpv.NET.WPFExample/MainWindow.xaml.cs
My Code:
*.csproj add line
<PackageReference Include="Mpv.NET" Version="1.2.0" />

/// <summary>
    /// Avalonia VideoView for Windows, Linux and Mac.
    /// </summary>
    public class VideoView : NativeControlHost
    {
        private MpvPlayer player;
        IPlatformHandle CreateWin32(IPlatformHandle parent)
        {
            //var control = base.CreateNativeControlCore(parent);
            player = new MpvPlayer(parent.Handle, "win-x64/mpv-1.dll")
            {
                Loop = true,
                Volume = 100
            };
            player.Load("http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4");
            player.Resume();

            return parent;// new PlatformHandle(control.Handle, "HWND");

        }

        void DestroyWin32(IPlatformHandle handle)
        {
            player.Dispose();
            base.DestroyNativeControlCore(handle);
        }

        protected override IPlatformHandle CreateNativeControlCore(IPlatformHandle parent)
        {
            if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
                return CreateWin32(parent);
            return base.CreateNativeControlCore(parent);
        }

        protected override void DestroyNativeControlCore(IPlatformHandle control)
        {
            if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
                DestroyWin32(control);

            base.DestroyNativeControlCore(control);
        }
    }

xaml
<UserControl xmlns="https://github.com/avaloniaui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:vlc="clr-namespace:ZTool.Common;assembly=ZTool"
             mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
             x:Class="ZTool.Controls.VideoPlayerView">
	<vlc:VideoView  HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
</UserControl>

Do any of you have a simple VLC demo? I want to use it on raspberry pie, otherwise I can only use pyqt5 it, but I'm familiar with C#

@shawnallen85 There is currently no way to draw something on top of the mediaplayer (because it has no content property) but for LibVLCSharp's WPF implementation it is. Any chance this can be done for Avalonia as well?

Seconding this....I'd really really like to be able to draw on top of the video. Right now event trying to put something on top of it in Z order isn't working (I'm not using full screen mode).  I'd really like to be able to have info about the video thats playing show up in an avalonia window I control while the videos playing

For anyone is interested:
I created an open source repo on Github which tries to overcome some Avalonia LibVlcSharp issues and missed things.
Give a look to YAMP (Yet Another Media Player) here.
I created also the setups (x86 & x64) to install YAMP and test it directly (version <IP_ADDRESS>) here.
It is obviously just a starting point. A lot of work is still needed to have YAMP stable.
Any help, contribution, discussion, improvement ideas or just one coffee together is welcome.
Many thanks for your attention.

I created an open source repo on Github which tries to overcome some Avalonia LibVlcSharp issues and missed things.

As far as I've seen on your project description it does not overcome any of the mentioned issues. It still needs an own window and you still cannot draw elements on top of it. Besides, it is not a control but an application which isn't really what people here are looking for (although they could learn/read the source code). Still thanks for sharing.

@Symbai Yes it doesn't solve the issues, just tries to live with them and have a decent result.

I've spent quite a few hours on this working on a raspberry pi, and here's what I've found (This is all raspberry pi specific, but I find it interesting because it may help others learn what I learned..which is that video is insanely complex)

Even VLC, which is the preferred player for a rapsberry pi bullseye version of Debian...has problems with overlaying...simply turning on subtitles or placing a window on top of it when it's not in full screen mode causes issue
Creating a window in avalonia and then calling 'activate' will bring it over the top of vlc, but again due to point 1...it causes it to perform horribly
If VLC is in full screen mode, nothing can be placed on top of it (avalonia or otherwise), but it performs great
I and my team tried working around this by using the logo feature of VLC, and that cause perf to drop also
Launching VLC 'windowed' and then trying to resize it using width/height command line args doesn't work (7 year old bug they say is fixed in 4.0...but I don't see an arm build and it's in alpha)
I tried using MPV and FFPlay...by using process.start and the correct command lines you can full screen launch them, but they also either fall over when a window is placed over them or aren't GPU accelerated on a pi (I hear I can build a version of them, but then there are reports bullseye broke it, etc)
To make windows transparent on debian using compmgr, use -o.0   when running it and then avalonia transparency works, otherwise you get white backgrounds (this is how you can get a window on top of a video

Note: On windows...this all works flawlessly for me. No perf issues with avalonia or vlc, and you can easily put a window on top of the video using Activate, with it transparent and everything working.
I've tried the VLCcontrol (which I'll continue to use...it's very nice) for Avalonia built upon libvlc, as well as tried shell executiong VLC.
Those are my findings thought they'd be useful for others.  Radiondra if your MPV solution works on arm/debian I could give it a shot, but unless you're using a hardware accleerated version of MPV it wont do me or others much good that are doing this on arm/debian platforms like the pi4

@Geektoolkit YAMP doesn't use MPV, it uses LibVlc mediaplayer.
You did really an interesting job with Raspberry. I'm working with a couple of pi4 for a TinyML project and peraphs I could use one of them to try Vlc&avalonia things there and test. I'lllet you know. The only variable against this is time, which is too short. Anyway, I'll try for sure.

I created 2 repos on Github to show how to use VLC MediaPlayer embedded into Avalonia Windows and UserControls.
Still trying to find the best way to add a UserControl (i.e. media player buttons) on top of MediaPlayer.
The simplest and faster way is to handle a new window (already used in YAMP), but I desire to find a more flexible and integrated way.
Help, suggestions and comments are welcome (obviously).
Thanks.

How to add a UserControl on top of VLC MediaPlayer
I modified the Window  repository to show how to put a UserControl on top of MediaPlayer (VideoView).
To do this I added a Content property to VideoView which will create its own new top window and add the Content to this window.
You can create the Content as a new UserControl (for example, a MediaPlayer set of controls) and add this UserControl to the VideoView content, like in:
<vlcsharp:VideoView
   HorizontalAlignment="Stretch"
   VerticalAlignment="Stretch"
   x:Name="VideoViewer">

   <!-- Content -->
   <Panel
	VerticalAlignment="Bottom"
	Opacity="0.8"
	Background="Gray">
	<controls:PlayerControls/>
   </Panel>
</vlcsharp:VideoView>

In this repo I created a user control with 2 buttons: Play and Stop.
The control position is at bottom and the buttons are shown using PointerEnter/PointerLeave events, with a simple opacity set to 0.8 (Enter) and to 0 (Leave).
I'll modify the UserControl repository too, adding the same feature, even though you could do it by yourselves.
Remember that, even though it works, the code is very basic and could need still a bit of work to be perfect.

EDIT:
Successfully tested on Kubuntu 18.04

Successfully tested on MacOS 10.13 (High Sierra)

Test on Raspberry Pi (Raspbian Stretch)
926MB RAM
As @Geektoolkit said, generated on-top window has no transparency and opacity is not respected. Like @Geektoolkit, I tried every possible combinations of Background and TransparencyLevelHint without any success. Maybe Avalonia has some issues for linux-arm or maybe there are some other settings I don't know.

Having 926MB of RAM only and just 1 CPU, the video is played in jerks. Anyway, it works BUT the transparency and opacity issues.

To get opacity try xcommgr -o.0 to see if that helps with opacity. I got the pi to work using that command/setting

@radiolondra
I can confirm that this approach works just fine with Avalonia.FuncUI(F#)! Thanks for sharing the idea!

New test on Raspberry Pi (DietPi with MATE or Xfce)
It works fine!
Transparency and Opacity are fully honored.
In my opinion, the problem is not Avalonia vs Raspberry, the problem is what is installed or not in Raspberry.
With DietPi OS and MATE (or Xfce) as X, the sample works perfectly.
As root, I installed libx11-dev, libvlc-dev and vlc, copied the published sample (built in Windows 10 with dotnet publish -c release -f net5.0 -r linux-arm), chmod 777 the whole folder content and ran the sample. It has to be ran as root or with sudo.

OMG this would be a game changer for those of us doing video on raspberry pis! I'll give this a try asap...that looks amazing! And from what I'm gathering, the video is playing without stuttering?!

The video is playing per-fec-tly!
DietPi is lighter than whatever else Raspberry OS, but not less complete.
Be sure to install MATE or Xfce, I didn't test yet with the other X options.
Be prepared to swallow a couple of shirts before to have it installed in a clean way. I had to flash it 3 times (on the SD).
At start, it uses the old text installation (it remembers the old RedHat way to install Linux) and it seems not so obvious. After some attempts (you have to manually configure the network too) you will thanks this kind of approach, as it's very powerful.
Remember to use "root" (default password is "dietpi") to install what you need (libx11-dev, libvlc-dev and vlc). Ther's no X pre-installed, so you have to choose which X you want and install it (MATE).
Once X is installed, if you have the default (text) login start MATE with normal "startx" command.
Now copy your published (full) project somewhere (I put mine in  root/Desktop), then add needed libraries above. I don't know if they are the ONLY libs needed, they were for my test project.
You should set exec rights to your project files (I used chmod 777 for all) and start your app as root (or using sudo).
Everything should work.
Avalonia is perfect for Raspberry too.

For anyone is interested:
A sample to apply in the real world the changes I did for LibVLCSharp.Avalonia (Unofficial release here).
I created YAMP2 repository (Yet-Another-Media-Player v2) here which fully uses the new LibVLCSharp.Avalonia.Unofficial lib.
To make tests, build it by yourselves and run.
Enjoy.

The new release of the Unofficial Avalonia LibVLCSharp, allows to display multiple draggable controls over the scene of a video played with LibVLCSharp in an Avalonia app.
For anyone is interested.
Enjoy.

All the links updated
External Links
VLC video player inside an Avalonia Window/UserControl embedding single static customizable control (e.g.player buttons)
LibVLCSharp.Avalonia.Unofficial
VLC video player inside an Avalonia Window/UserControl embedding multiple draggable customizable controls (e.g.player buttons, images,...)
LibVLCSharp.Avalonia.Unofficial.UCanvas
LibVLCSharp.Avalonia.Unofficial Samples
LibVLCSharp.Avalonia.Unofficial.Samples
LibVLCSharp.Avalonia.Unofficial.UCanvas sample
LibVLCSharp.Avalonia.Unofficial.UCanvas.Samples
YAMP 2 - Open source video player sample using LibVLCSharp.Avalonia.Unofficial library
Github sources
Watch YAMP2 in action

The overlapped window which hosts the content will be disappeared if it lost focus on macOS 12.6.3.
I changed some code (add a TextBox) in MainWindow.axaml to produce this problem:
<Grid RowDefinitions="*, 40"  ColumnDefinitions="*">		        <controls:PlayerControl  Name="Player"/>         <Grid Grid.Row="1" >             <TextBox  />         </Grid> </Grid>
the overlapped content will disappear if your click on the TextBox.
Maybe someone has solution. Thanks.

Anyone tried this on a DRM  framebuffer based configuration?

I'm going to move this issue into discussions as there is nothing to do on Avalonia code side


Enable dependabot for this repository

Adds a basic configuration for dependabot

Pull Request Test Coverage Report for Build 195308451

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 91.88%

Totals

Change from base Build 195306773:
0.0%

Covered Lines:
4481

Relevant Lines:
4877

💛  - Coveralls