Task: PR Preview Environment Build

Refer: https://obr28bfkjv.feishu.cn/docx/QHcFdZL2LoyFGKxp16ec1fVbnJc

fixed by #231


Add support for persistent messages

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


switch on -Wall -Wextra flags

Do you think it's a good idea to start using '-Wall -Wextra' flags instead of specific options? Enabling these will help improve the code quality by preventing common mistakes. Going a step further, and treating all warnings as errors, will force everyone to handle warnings at the time they occur.
Note that this update will require some changes in the source, I think all of them are related to explicitly handling unused variables, but it's worth spending a day or two on making the necessary changes.

What do you mean? All three build systems use at least -Wall -Wextra.  Meson even enables -Werror.

You're correct, sorry. Got confused by the CSP_C_ARGS parameters in the main CMakeLists.txt. I'm closing it.

No problem at all! Thank you for your time and efforts. :smiley:


Fix Android build

Problem
Currently Android CI build doesn't work. Some users have reported similar problems locally.
Details
User report
 ./scripts/build_android.sh config-example.toml
= note: ld: unknown options: --version-script=/var/folders/hj/cgm2qndd02b6qbvv2rc46k080000gn/T/rustcNXwgFX/list --no-undefined-version --as-needed -Bstatic -Bdynamic --eh-frame-hdr -z --gc-sections -z -z
          clang: error: linker command failed with exit code 1 (use -v to see invocation)

error: could not compile `ark-circom` (lib) due to 1 previous error

Failing CI
ELF (EM: 183)
          /usr/bin/ld: /home/runner/work/mopro/mopro/mopro-ffi/target/aarch64-linux-android/debug/deps/ark_circom-0a9603226fc50811.ark_circom.d89761b3e14fbdfb-cgu.0.rcgu.o: Relocations in generic ELF (EM: 183)
          /usr/bin/ld: /home/runner/work/mopro/mopro/mopro-ffi/target/aarch64-linux-android/debug/deps/ark_circom-0a9603226fc50811.ark_circom.d89761b3e14fbdfb-cgu.0.rcgu.o: Relocations in generic ELF (EM: 183)
          /usr/bin/ld: /home/runner/work/mopro/mopro/mopro-ffi/target/aarch64-linux-android/debug/deps/ark_circom-0a9603226fc50811.ark_circom.d89761b3e14fbdfb-cgu.0.rcgu.o: error adding symbols: file in wrong format
          collect2: error: ld returned 1 exit status

error: could not compile `ark-circom` (lib) due to 1 previous error

Latest working
I try to revert to the latest commit (7b2413f) that passes CI
and it can still successfully build for android
so I think we made some changes that cause the CI to fail

@vivianjeng

Other notes
One difference between build_ios and build_android is:
# Update bindings
cd "${PROJECT_DIR}"
./scripts/update_bindings.sh $CONFIG_FILE

in build_ios, perhaps this leads to different behavior when building for android in some circumstances? With the new toml config format.
Acceptance criteria
Android build works locally and on CI.

Also need to adjust target dir to root

I try to revert to the latest commit (7b2413f) that passes CI
and it can still successfully build for android
so I think we made some changes that cause the CI to fail

I didn't notice that the previous CI also don't pass but the error is not caught (so it passed)
I think it is because of the architecture
but when I tried x86_64 it shows
note: /usr/bin/ld: cannot find -llog: No such file or directory
          collect2: error: ld returned 1 exit status

I am still figuring this out

Thanks @oskarth and @vivianjeng -- I managed to resolve the issue by adding a .cargo/config.toml file specifying the exact clang linker to be used, as follows
[target.x86_64-linux-android] linker = "{NDK_PATH}/toolchains/llvm/prebuilt/darwin-x86_64/bin/x86_64-linux-android21-clang"
I noticed that there was a mac popup window (either unpacking or authenticating the binaries) that appeared the first time I compiled successfully.
Separately, in line 97 of config-example-android.toml I had to add ${PROJECT_DIR} in front of
cp ${PROJECT_DIR}/target/${ARCHITECTURE}/${LIB_DIR}/libmopro_ffi.so jniLibs/${FOLDER}/libuniffi_mopro.so

Thank you @ethzanity
I also solved CI with this: https://github.com/rust-lang/rustup/issues/2872#issuecomment-1158238378
See: #82

I guess we can close this issue now


Add contents of CEViewLog to test output

A singularity test got wedged but other than that things look good. Merging


Brief white flash when Chromium starts

Despite closing #36, there is sometimes still a brief white flash when Chromium starts. As noted in that thread, this is likely because either the Chromium application itself has a white background before the user agent stylesheet is loaded, or Chromium/Ozone fills the pixel buffer with white pixels when it first starts.

No further ideas on how to address and only happens during boot up so rarely seen.


⚠ Bofrost.de has degraded performance

In 037e5a1, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 887 ms

Resolved: Bofrost.de performance has improved in cfbfd40.


Add GIF of CML rainfall animation to README

The nice new animation from #62 should be added as GIF to the README as a teaser for the sandbox content.

I recorded a screencast of the animation and converted it to GIF via
 ffmpeg -i OPENSENSE_sandbox_OpenMRG_usecase_animation.mov OPENSENSE_sandbox_OpenMRG_usecase_animation.gif

Here it is 🎉

Closed via #65


fix: lock down max terraform version to <1.6

/run pipeline

:tada: This PR is included in version 2.3.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Documentation logo and title rotation

The documentation logo and title rotate on hover. See the screencast:
https://user-images.githubusercontent.com/1969342/154029311-b947e2d7-662e-41c5-beb4-a6f6f667b05d.mov
There has been no recent theme release. 🤔
https://pypi.org/project/sphinx-wagtail-theme/#history

introduced in #7956 as far as I can tell

Hahaha, I saw that and thought it was a feature, as a nod to our admin easter egg. This is most likely because I "fixed" our custom.css which wasn’t getting loaded, in which case the fix will be to remove all customisations from it except the banner: https://github.com/thibaudcolas/wagtail/blob/53289e045b92643ff117eeb2c0181ddc92809f40/docs/_static/css/custom.css#L1-L53.

@allcaps @zerolab should be fixed in #7990 if either of you can take a look. I’ve also removed other customisations as I assume they’re all undesirable.


Sysinternals Install Errors

Hello,
I've been having trouble getting Flare to install on a Windows 7 x86 vm.  Seems to run normally until the script reaches the Sysinternals installation step, at which point it errors out with the attached text.
I'll be happy to provide full logs if needed, but wanted to see if I was just missing a prereq, or some some other dumb mistake on my part.
Thanks in advance,
Chris
error.txt

@matchstickboy  We recently have a major code change to FlareVM. The side affect is that we start using an environment variable to keep track of some configs, specifically: %FLARE_START% points to "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\FLARE". The environment variable is probably missing from your system.
There are two options now:

We recommend installing FlareVM from scratch to take advantage of the new packages and new features.
Manually set the FLARE_START environment variable, and reinstall sysinternal.

I have checked the chocolateyInstall.ps1 downloade for sysinternals tools and it contains a typo for x86 version:
if (Get-OSArchitectureWidth -Compare 64) {
  $toolProcExp = Join-Path $toolPath "procexp64.exe"
} else {
  $toolProxExp = Join-Path $toolPath "procexp.exe"
}

$toolProxExp should be $toolProcExp, which leads to
2018-11-01 23:28:41,127 2924 [ERROR] - ERROR: Cannot bind argument to parameter 'targetPath' because it is an empty string.
To get the file that was deleted I used capture.bat, that should be a good add to the Flare VM.
Best regards

@h0pp Thank you for debugging the issue. We have pushed a new version to fix this typo.
@matchstickboy  Please reinstall sysinternals.flare on x86 system and let us know if the issue is still there.
Thank you everyone

@htnhan and @h0pp thank you both very much.  Install is now working perfectly.
Cheers 👍
Please consider this issue closed (if not already done).


Remove Bearer from accessToken in Remote MDX Docs

There's an issue in the Setup of Remote MDX documentation here: https://fumadocs.vercel.app/docs/headless/remote/github#setup

The docs mention that the accessToken key must include the whole Authorization header content, including the Bearer prefix.
However, that is not necessary and causes builds to fail because FumaDocs internally adds the Bearer prefix in the fetchTree utility here:
https://github.com/fuma-nama/fumadocs/blob/16d06df180af5822fc59003488600b41195d083d/packages/mdx-remote/src/github/api/fetch-tree.ts#L56
The Authorization header content ends up being Bearer Bearer <access-token> and the builds fail.

Thanks for contributing


KAFKA-3561: Auto create through topic for KStream aggregation and join [WIP]

@guozhangwang can you please take a look at this? It is not close to being done but i'd like some feedback to ensure i'm heading down the right path and understand what this JIRA is asking. The main things to look at are the KStreamImpl.map(...) method I added and the change made to TopologyBuilder.copartitionGroups
There is also a test, KStreamRepartitionMappedKeyTest, that passes with these changes.

Hi @dguy , thanks for the patch. Overall looks good. Here is one general comment:
We should not require serdes in KStream.map() as it is supposed to be non-stateful operators and hence users are not expected to have any materialization JUST FOR this operator. Plus, some other operators like selectKey would also need similar handing if we do this direction.
As about join operations, since the join operators already requires the serdes which would be just reused for the repartition topic, we do not need to require it before hand in map, selectKeys, etc. Similar situation for reduce, which already requires the serdes for original key and value.
Hence the only problem is for aggregate, where the original value serde is not provided. After thinking about it for a bit more, I'm now more towards doing KAFKA-3576 for aggregations as well, i.e. introduce a KGroupedStream which can be generated from KStream.groupBy (which can then require serdes). In addition, KStream.groupBy may also take a Windows spec (we can overload the function with and without this parameter) so that later aggregations do not need to specify it anymore.

A few more suggestions:

As in KGroupedTable KTable.groupBy(..), the repartitioning does not happen at the groupBy operator, but we carry the serde information as well as the select-key mapper along with the KGroupedTable, which can only call aggregations; then the repartitioning is done when aggregate / reduce / etc is really called. We can do the same for KStream.

A few differences of the KGroupedStream though, is that besides the serde and key-select mapper information, we can also allow users to specify the Windows spec so that the KGroupedStream conceptually captures a stream grouped by key and as well as windows (this is from user interfacing point of view only, no correctness issues at all), then its aggregation function do not need to provide any Windowing specs any more.

Also for KGroupedStream.reduce, we do not need to require users provide any more serdes, as they should already be provided in the previous groupBy.

As for joins, we are going to still let users do the pattern of stream1.selectKey().join(stream2, serdes..) or stream1.map().join(stream2, serdes..), but auto-creating the repartition topic inside the join operator; note that again since the serdes are passed in the later join operator, we do not need to enforce users to provide them in previous selectKey or map operator.

Let me know if you have more questions.

Thanks for the clarification


New version of our v3 API docs

@eschallock can you please verify this looks OK? Then, if we're good, this can go live.

Hello @eschallock,Thanks again for the PR! We want to show our appreciation by sending                                              you some swag. Could you please fill out                                              this form so we can send it to you? Thanks!                                             Team DX


[2.0.3] source map urls are a off (map.sources)

Using postcss-loader (only using autoprefixer plugin, no extra configurations) combined with sass-loader, css-loader, and style-loader causes the resource URL for sourcemaps to be strange:
example: http://imgur.com/a/R73hV
scss loader config
{
          test: /\.scss$/,
          use: [{
              loader: 'style-loader',
              options: {
                sourceMap: true,
              }
            },
            {
              loader: 'css-loader',
              options: {
                sourceMap: true,
              }
            },
            {
              loader: 'postcss-loader',
              options: {
                sourceMap: true,
              }
            },
            {
              loader: 'sass-loader',
              options: {
                includePaths: [
                  './src/styles/bootstrap',
                  './src/styles/partials'
                ],
                sourceMap: true,
              }
            },
          ],
          include: [helpers.root('src', 'styles')]
        }

This issue seems to affect multiple loaders. Posted the same issue on all affected loaders:
https://github.com/webpack-contrib/css-loader/issues/529
https://github.com/webpack-contrib/sass-loader/issues/451
https://github.com/webpack-contrib/style-loader/issues/231
https://github.com/postcss/postcss-loader/issues/224

I resolve the source paths for maps https://github.com/postcss/postcss-loader/blob/master/lib/index.js#L151, as according to @ sokra it should be the case, but maybe there is still something wrong. Could you please provide more info the example image is hard to ready (small) && uses bootstrap-loader which I have no context about 😛 . You can't currently debug your CSS in DevTools at all ?

I actually disabled bootstrap loader because I saw it was making the problem even worse.
here's the path I'm getting with the above config:
C:/Users/Dave/_DEV/ModernEra/bdhp_ui/src/styles/C:\Users\Dave\_DEV\ModernEra\bdhp_ui/src\styles\bootstrap\_bootswatch.scss

This is my styles folder

styles.scss:
$fa-font-path: "~font-awesome/fonts";
@import 'variables';
@import '~bootstrap-sass/assets/stylesheets/bootstrap';
@import 'bootswatch';
@import '~font-awesome/scss/font-awesome';

Coud you please provide your webpack.config.js aswell 😛  and maybe tree myProject on the CLI

I wonder why the are concatenated 😟 regradless if relative or absolute

My project is based off this starter project:
https://github.com/AngularClass/angular2-webpack-starter
my configs:
webpack.common.js:
/**
 * @author: @AngularClass
 */

const webpack = require('webpack');
const helpers = require('./helpers');

/*
 * Webpack Plugins
 */
// problem with copy-webpack-plugin
const AssetsPlugin = require('assets-webpack-plugin');
const NormalModuleReplacementPlugin = require('webpack/lib/NormalModuleReplacementPlugin');
const ContextReplacementPlugin = require('webpack/lib/ContextReplacementPlugin');
const CommonsChunkPlugin = require('webpack/lib/optimize/CommonsChunkPlugin');
const CopyWebpackPlugin = require('copy-webpack-plugin');
const CheckerPlugin = require('awesome-typescript-loader').CheckerPlugin;
const HtmlElementsPlugin = require('./html-elements-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const LoaderOptionsPlugin = require('webpack/lib/LoaderOptionsPlugin');
const ScriptExtHtmlWebpackPlugin = require('script-ext-html-webpack-plugin');
const ngcWebpack = require('ngc-webpack');
const ProvidePlugin = require('webpack/lib/ProvidePlugin');

/*
 * Webpack Constants
 */
const HMR = helpers.hasProcessFlag('hot');
const AOT = helpers.hasNpmFlag('aot');
const METADATA = {
  title: 'Big Dogs Huge Paws',
  baseUrl: '/',
  isDevServer: helpers.isWebpackDevServer()
};

/*
 * Webpack configuration
 *
 * See: http://webpack.github.io/docs/configuration.html#cli
 */
module.exports = function (options) {
  isProd = options.env === 'production';
  return {

    /*
     * Cache generated modules and chunks to improve performance for multiple incremental builds.
     * This is enabled by default in watch mode.
     * You can pass false to disable it.
     *
     * See: http://webpack.github.io/docs/configuration.html#cache
     */
    //cache: false,

    /*
     * The entry point for the bundle
     * Our Angular.js app
     *
     * See: http://webpack.github.io/docs/configuration.html#entry
     */
    entry: {

      'polyfills': './src/polyfills.browser.ts',
      'main': AOT ? './src/main.browser.aot.ts' : './src/main.browser.ts',

    },

    /*
     * Options affecting the resolving of modules.
     *
     * See: http://webpack.github.io/docs/configuration.html#resolve
     */
    resolve: {

      /*
       * An array of extensions that should be used to resolve modules.
       *
       * See: http://webpack.github.io/docs/configuration.html#resolve-extensions
       */
      extensions: ['.ts', '.js', '.json'],

      // An array of directory names to be resolved to the current directory
      modules: [helpers.root('src'), helpers.root('node_modules')],

    },

    /*
     * Options affecting the normal modules.
     *
     * See: http://webpack.github.io/docs/configuration.html#module
     */
    module: {

      rules: [

        /*
         * Typescript loader support for .ts
         *
         * Component Template/Style integration using `angular2-template-loader`
         * Angular 2 lazy loading (async routes) via `ng-router-loader`
         *
         * `ng-router-loader` expects vanilla JavaScript code, not TypeScript code. This is why the
         * order of the loader matter.
         *
         * See: https://github.com/s-panferov/awesome-typescript-loader
         * See: https://github.com/TheLarkInn/angular2-template-loader
         * See: https://github.com/shlomiassaf/ng-router-loader
         */
        {
          test: /\.ts$/,
          use: [{
              loader: '@angularclass/hmr-loader',
              options: {
                pretty: !isProd,
                prod: isProd
              }
            },
            { // MAKE SURE TO CHAIN VANILLA JS CODE, I.E. TS COMPILATION OUTPUT.
              loader: 'ng-router-loader',
              options: {
                loader: 'async-import',
                genDir: 'compiled',
                aot: AOT
              }
            },
            {
              loader: 'awesome-typescript-loader',
              options: {
                configFileName: 'tsconfig.webpack.json'
              }
            },
            {
              loader: 'angular2-template-loader'
            }
          ],
          exclude: [/\.(spec|e2e)\.ts$/]
        },

        /*
         * Json loader support for *.json files.
         *
         * See: https://github.com/webpack/json-loader
         */
        {
          test: /\.json$/,
          use: 'json-loader'
        },

        /*
         * to string and css loader support for *.css files (from Angular components)
         * Returns file content as string
         *
         */
        {
          test: /\.css$/,
          use: [{
            loader: 'to-string-loader'
          }, {
            loader: 'css-loader',
            options: {
              sourceMap: true,
            }
          }, {
            loader: 'postcss-loader',
          }],
          exclude: [helpers.root('src', 'styles')]
        },
        // {
        //   test: /bootstrap-sass[\/\\]assets[\/\\]javascripts[\/\\]/,
        //   loader: 'imports-loader?jQuery=jquery'
        // },

        /*
         * to string and sass loader support for *.scss files (from Angular components)
         * Returns compiled css content as string
         *
         */
        {
          test: /\.scss$/,
          use: [{
              loader: 'to-string-loader'
            },
            {
              loader: 'css-loader',
              options: {
                sourceMap: true,
              }
            },
            {
              loader: 'sass-loader',
              options: {
                includePaths: [
                  './src/styles/bootstrap',
                  './src/styles/partials'
                ],
                sourceMap: true,
              }
            },
            {
              loader: 'postcss-loader',
              options: {
                parser: require('postcss-scss'),
              }
            }
          ],
          exclude: [helpers.root('src', 'styles')]
        },

        /* Raw loader support for *.html
         * Returns file content as string
         *
         * See: https://github.com/webpack/raw-loader
         */
        {
          test: /\.html$/,
          use: 'raw-loader',
          exclude: [helpers.root('src/index.html')]
        },

        /*
         * File loader for supporting images, for example, in CSS files.
         */
        {
          test: /\.(jpg|png|gif)$/,
          use: 'file-loader'
        },

        {
          test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/,
          loader: "url-loader?limit=10000&mimetype=application/font-woff"
        },
        /* File loader for supporting fonts, for example, in CSS files.
         */
        {
          test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
          loader: "file-loader"
        }

      ],

    },

    /*
     * Add additional plugins to the compiler.
     *
     * See: http://webpack.github.io/docs/configuration.html#plugins
     */
    plugins: [
      new AssetsPlugin({
        path: helpers.root('dist'),
        filename: 'webpack-assets.json',
        prettyPrint: true
      }),

      /*
       * Plugin: ForkCheckerPlugin
       * Description: Do type checking in a separate process, so webpack don't need to wait.
       *
       * See: https://github.com/s-panferov/awesome-typescript-loader#forkchecker-boolean-defaultfalse
       */
      new CheckerPlugin(),
      /*
       * Plugin: CommonsChunkPlugin
       * Description: Shares common code between the pages.
       * It identifies common modules and put them into a commons chunk.
       *
       * See: https://webpack.github.io/docs/list-of-plugins.html#commonschunkplugin
       * See: https://github.com/webpack/docs/wiki/optimization#multi-page-app
       */
      new CommonsChunkPlugin({
        name: 'polyfills',
        chunks: ['polyfills']
      }),
      // This enables tree shaking of the vendor modules
      new CommonsChunkPlugin({
        name: 'vendor',
        chunks: ['main'],
        minChunks: module => /node_modules/.test(module.resource)
      }),
      // Specify the correct order the scripts will be injected in
      new CommonsChunkPlugin({
        name: ['polyfills', 'vendor'].reverse()
      }),

      /**
       * Plugin: ContextReplacementPlugin
       * Description: Provides context to Angular's use of System.import
       *
       * See: https://webpack.github.io/docs/list-of-plugins.html#contextreplacementplugin
       * See: https://github.com/angular/angular/issues/11580
       */
       new ContextReplacementPlugin(
        // The (\\|\/) piece accounts for path separators in *nix and Windows
        /angular(\\|\/)core(\\|\/)@angular/,
        helpers.root('src'), // location of your src
        {
          // your Angular Async Route paths relative to this root directory
        }
      ),

      /*
       * Plugin: CopyWebpackPlugin
       * Description: Copy files and directories in webpack.
       *
       * Copies project static assets.
       *
       * See: https://www.npmjs.com/package/copy-webpack-plugin
       */
      new CopyWebpackPlugin([{
          from: 'src/assets',
          to: 'assets'
        },
        {
          from: 'src/meta'
        }
      ]),

      /*
       * Plugin: HtmlWebpackPlugin
       * Description: Simplifies creation of HTML files to serve your webpack bundles.
       * This is especially useful for webpack bundles that include a hash in the filename
       * which changes every compilation.
       *
       * See: https://github.com/ampedandwired/html-webpack-plugin
       */
      new HtmlWebpackPlugin({
        template: 'src/index.html',
        title: METADATA.title,
        chunksSortMode: 'dependency',
        metadata: METADATA,
        inject: 'head'
      }),

      /*
       * Plugin: ScriptExtHtmlWebpackPlugin
       * Description: Enhances html-webpack-plugin functionality
       * with different deployment options for your scripts including:
       *
       * See: https://github.com/numical/script-ext-html-webpack-plugin
       */
      new ScriptExtHtmlWebpackPlugin({
        defaultAttribute: 'defer'
      }),

      /*
       * Plugin: HtmlElementsPlugin
       * Description: Generate html tags based on javascript maps.
       *
       * If a publicPath is set in the webpack output configuration, it will be automatically added to
       * href attributes, you can disable that by adding a "=href": false property.
       * You can also enable it to other attribute by settings "=attName": true.
       *
       * The configuration supplied is map between a location (key) and an element definition object (value)
       * The location (key) is then exported to the template under then htmlElements property in webpack configuration.
       *
       * Example:
       *  Adding this plugin configuration
       *  new HtmlElementsPlugin({
       *    headTags: { ... }
       *  })
       *
       *  Means we can use it in the template like this:
       *  <%= webpackConfig.htmlElements.headTags %>
       *
       * Dependencies: HtmlWebpackPlugin
       */
      new HtmlElementsPlugin({
        headTags: require('./head-config.common')
      }),

      /**
       * Plugin LoaderOptionsPlugin (experimental)
       *
       * See: https://gist.github.com/sokra/27b24881210b56bbaff7
       */
      new LoaderOptionsPlugin({}),

      // Fix Angular 2
      new NormalModuleReplacementPlugin(
        /facade(\\|\/)async/,
<EMAIL_ADDRESS>      ),
      new NormalModuleReplacementPlugin(
        /facade(\\|\/)collection/,
<EMAIL_ADDRESS>      ),
      new NormalModuleReplacementPlugin(
        /facade(\\|\/)errors/,
<EMAIL_ADDRESS>      ),
      new NormalModuleReplacementPlugin(
        /facade(\\|\/)lang/,
<EMAIL_ADDRESS>      ),
      new NormalModuleReplacementPlugin(
        /facade(\\|\/)math/,
<EMAIL_ADDRESS>      ),

      new ngcWebpack.NgcWebpackPlugin({
        disabled: !AOT,
        tsConfig: helpers.root('tsconfig.webpack.json'),
        resourceOverride: helpers.root('config/resource-override.js')
      })

    ],

    /*
     * Include polyfills or mocks for various node stuff
     * Description: Node configuration
     *
     * See: https://webpack.github.io/docs/configuration.html#node
     */
    node: {
      global: true,
      crypto: 'empty',
      process: true,
      module: false,
      clearImmediate: false,
      setImmediate: false
    }

  };
}

webpack.dev.js:
/**
 * @author: @AngularClass
 */

const helpers = require('./helpers');
const path = require('path');
const webpackMerge = require('webpack-merge'); // used to merge webpack configs
const webpackMergeDll = webpackMerge.strategy({
  plugins: 'replace'
});
const commonConfig = require('./webpack.common.js'); // the settings that are common to prod and dev

/**
 * Webpack Plugins
 */
const AddAssetHtmlPlugin = require('add-asset-html-webpack-plugin');
const DefinePlugin = require('webpack/lib/DefinePlugin');
const NamedModulesPlugin = require('webpack/lib/NamedModulesPlugin');
const LoaderOptionsPlugin = require('webpack/lib/LoaderOptionsPlugin');

/**
 * Webpack Constants
 */
const ENV = process.env.ENV = process.env.NODE_ENV = 'development';
const HOST = process.env.HOST || 'localhost';
const PORT = process.env.PORT || 3000;
const HMR = helpers.hasProcessFlag('hot');
const METADATA = webpackMerge(commonConfig({
  env: ENV
}).metadata, {
  host: HOST,
  port: PORT,
  ENV: ENV,
  HMR: HMR
});

const DllBundlesPlugin = require('webpack-dll-bundles-plugin').DllBundlesPlugin;

/**
 * Webpack configuration
 *
 * See: http://webpack.github.io/docs/configuration.html#cli
 */
module.exports = function (options) {
  return webpackMerge(commonConfig({
    env: ENV
  }), {

    /**
     * Developer tool to enhance debugging
     *
     * See: http://webpack.github.io/docs/configuration.html#devtool
     * See: https://github.com/webpack/docs/wiki/build-performance#sourcemaps
     */
    devtool: 'cheap-module-source-map',

    /**
     * Options affecting the output of the compilation.
     *
     * See: http://webpack.github.io/docs/configuration.html#output
     */
    output: {

      /**
       * The output directory as absolute path (required).
       *
       * See: http://webpack.github.io/docs/configuration.html#output-path
       */
      path: helpers.root('dist'),

      /**
       * Specifies the name of each output file on disk.
       * IMPORTANT: You must not specify an absolute path here!
       *
       * See: http://webpack.github.io/docs/configuration.html#output-filename
       */
      filename: '[name].bundle.js',

      /**
       * The filename of the SourceMaps for the JavaScript files.
       * They are inside the output.path directory.
       *
       * See: http://webpack.github.io/docs/configuration.html#output-sourcemapfilename
       */
      sourceMapFilename: '[file].map',

      /** The filename of non-entry chunks as relative path
       * inside the output.path directory.
       *
       * See: http://webpack.github.io/docs/configuration.html#output-chunkfilename
       */
      chunkFilename: '[id].chunk.js',

      library: 'ac_[name]',
      libraryTarget: 'var',
      devtoolModuleFilenameTemplate: "webpack:///[resource-path]"

    },

    module: {

      rules: [{
          test: /\.ts$/,
          use: [{
            loader: 'tslint-loader',
            options: {
              configFile: 'tslint.json'
            }
          }],
          exclude: [/\.(spec|e2e)\.ts$/]
        },

        /*
         * css loader support for *.css files (styles directory only)
         * Loads external css styles into the DOM, supports HMR
         *
         */
        {
          test: /\.css$/,
          use: [{
              loader: 'style-loader',
            },
            {
              loader: 'css-loader',
              options: {
                sourceMap: true
              }
            },
            {
              loader: 'postcss-loader',
            }
          ],
          include: [helpers.root('src', 'styles')]
        },

        /*
         * sass loader support for *.scss files (styles directory only)
         * Loads external sass styles into the DOM, supports HMR
         *
         */
        {
          test: /\.scss$/,
          use: [{
              loader: 'style-loader',
            },
            {
              loader: 'css-loader',
              options: {
                sourceMap: true,
              }
            },
            {
              loader: 'sass-loader',
              options: {
                includePaths: [
                  './src/styles/bootstrap',
                  './src/styles/partials'
                ],
                sourceMap: true,
              }
            },
            {
              loader: 'postcss-loader',
              options: {
                parser: require('postcss-scss'),
              }
            }
          ],
          include: [helpers.root('src', 'styles')]
        },
      ]
    },

    plugins: [

      /**
       * Plugin: DefinePlugin
       * Description: Define free variables.
       * Useful for having development builds with debug logging or adding global constants.
       *
       * Environment helpers
       *
       * See: https://webpack.github.io/docs/list-of-plugins.html#defineplugin
       */
      // NOTE: when adding more properties, make sure you include them in custom-typings.d.ts
      new DefinePlugin({
        'ENV': JSON.stringify(METADATA.ENV),
        'HMR': METADATA.HMR,
        'process.env': {
          'ENV': JSON.stringify(METADATA.ENV),
          'NODE_ENV': JSON.stringify(METADATA.ENV),
          'HMR': METADATA.HMR,
        }
      }),

      new DllBundlesPlugin({
        bundles: {
          polyfills: [
            'core-js',
            {
              name: 'zone.js',
              path: 'zone.js/dist/zone.js'
            },
            {
              name: 'zone.js',
              path: 'zone.js/dist/long-stack-trace-zone.js'
            },
          ],
          vendor: [
            '@angular/platform-browser',
            '@angular/platform-browser-dynamic',
            '@angular/core',
            '@angular/common',
            '@angular/forms',
            '@angular/http',
            '@angular/router',
            '@angularclass/hmr',
            'rxjs',
          ]
        },
        dllDir: helpers.root('dll'),
        webpackConfig: webpackMergeDll(commonConfig({
          env: ENV
        }), {
          devtool: 'cheap-module-source-map',
          plugins: []
        })
      }),

      /**
       * Plugin: AddAssetHtmlPlugin
       * Description: Adds the given JS or CSS file to the files
       * Webpack knows about, and put it into the list of assets
       * html-webpack-plugin injects into the generated html.
       *
       * See: https://github.com/SimenB/add-asset-html-webpack-plugin
       */
      new AddAssetHtmlPlugin([{
          filepath: helpers.root(`dll/${DllBundlesPlugin.resolveFile('polyfills')}`)
        },
        {
          filepath: helpers.root(`dll/${DllBundlesPlugin.resolveFile('vendor')}`)
        }
      ]),

      /**
       * Plugin: NamedModulesPlugin (experimental)
       * Description: Uses file names as module name.
       *
       * See: https://github.com/webpack/webpack/commit/a04ffb928365b19feb75087c63f13cadfc08e1eb
       */
      // new NamedModulesPlugin(),

      /**
       * Plugin LoaderOptionsPlugin (experimental)
       *
       * See: https://gist.github.com/sokra/27b24881210b56bbaff7
       */
      new LoaderOptionsPlugin({
        debug: true,
        options: {

        }
      }),

    ],

    /**
     * Webpack Development Server configuration
     * Description: The webpack-dev-server is a little node.js Express server.
     * The server emits information about the compilation state to the client,
     * which reacts to those events.
     *
     * See: https://webpack.github.io/docs/webpack-dev-server.html
     */
    devServer: {
      port: METADATA.port,
      host: METADATA.host,
      historyApiFallback: true,
      watchOptions: {
        aggregateTimeout: 300,
        poll: 1000
      }
    },

    /*
     * Include polyfills or mocks for various node stuff
     * Description: Node configuration
     *
     * See: https://webpack.github.io/docs/configuration.html#node
     */
    node: {
      global: true,
      crypto: 'empty',
      process: true,
      module: false,
      clearImmediate: false,
      setImmediate: false
    }

  });
}

project tree
C:.
├───.github
├───.vscode
├───config
│   ├───github-deploy
│   └───html-elements-plugin
└───src
    ├───app
    │   ├───header
    │   ├───no-content
    │   └───theme-palette
    ├───assets
    │   ├───css
    │   ├───icon
    │   └───img
    ├───meta
    └───styles
        ├───bootstrap
        └───partials

@DBosley please don't put all code here, create gist or test repo. This prevents reading information about the problem. Thanks!
@michael-ciniawsky seems bugs only for windows users and related to sass-loader.

@evilebottnawi I requested all the fuss, but discussion about it kicked-off in the PostCSS Gitter Channel then, we need to test with a simpler setup (no angular-starter-seed) 😛

@evilebottnawi Yes I am facing the same issue on windows machine (weird path : C:/Projects/test/node_modules/bootstrap/dist/css/C:\scss\utilities\_flex.scss), but it is not related to sass-loader (I am not using sass-loader).
Here are my css loaders:
    {
      loader: 'css-loader',
      options: {
        modules: true,
        importLoaders: 1,
        camelCase: true,
        sourceMap: true
      }
    }, {
      loader: 'postcss-loader',
      options: {
        sourceMap: true
      }
    }

It was working fine @1.3.3, but not @2.x.x

https://github.com/postcss/postcss-loader/blob/master/lib/index.js#L149 is the relevant part that changed between v1.0.0 => v2.0.0
if (map) {
  map.file = path.resolve(map.file)
  map.sources = map.sources.map((src) => path.resolve(src))
}

I'm not on windows, but thought path.resolve() is handling the posix/win32 path.sep by default , so my apologise if that isn't the case 😛

https://github.com/webpack-contrib/css-loader/pull/532


ENH: stats: add Baumgartner-Weiss-Schindler test

[skip ci]

Reference issue
Create BWS test for statistical purposes (both naive and variant [Shan + Murakami] methods) (both one-sided and two-sided)
What does this implement/fix?
The Baumgartner-Weiss-Schindler (BWS) test is a nonparametric test of the null hypothesis that the distribution underlying sample x is the same as the distribution underlying sample y. Unlike the Kolmogorv-Smirnov, Wilcoxon, and Cramer-Von Mises tests, the Baumgartner-Weiss-Schindler test weights the integral by the variance of the difference in CDFs, emphasizing the tails of the distributions, which increases the power of the test for a lot of applications.
Additional information
Continue on https://github.com/scipy/scipy/pull/18317

@chrisb83 requested more information here. I'd suggest answering his question.
Otherwise, I would prefer not to write a task list until it has been decided whether this test should be included in SciPy. So far, I haven't seen any explicit support.
Also, please take a look at the conversation beginning at https://github.com/scipy/scipy/pull/18317#issuecomment-1520727689. If you are using a bot, please disable it so that this doesn't happen again.

@chrisb83 requested more information here. I'd suggest answering his question.
Also, please take a look at the conversation beginning at #18317 (comment). If you are using a bot, please disable it so that this doesn't happen again. If we move forward with this, please do not force push at all.
Otherwise, I would prefer not to write a task list until it has been decided whether this test should be included in SciPy. So far, I haven't seen any explicit support.

Thanks, but as I mentioned earlier in #18317 , bws is commonly used in academia, my recent paper on mining software repository used bws test as well. @mdhaber

Thanks.
@chrisb83, the answer to your question is above.

Thanks. @chrisb83, the answer to your question is above.

Thanks, the papers above don't appear very relevant (e.g., comparing only against KS or Wilcoxon based in the abstracts). But given that there is interest in the test + the original paper reports advantages compared to CVM, there are enough arguments to add it.

@chrisb83 requested more information here. I'd suggest answering his question.
Also, please take a look at the conversation beginning at #18317 (comment). If you are using a bot, please disable it so that this doesn't happen again. If we move forward with this, please do not force push at all.
Otherwise, I would prefer not to write a task list until it has been decided whether this test should be included in SciPy. So far, I haven't seen any explicit support.

Based on the conversation, maybe we can make a task list for this test. This is my first time creating PR on Scipy, wondering how a PR is qualified for a merge. @chrisb83 @mdhaber

For the "protocol", I am -0.5 on adding this test if there are no strong advantages (the authors paper saying it's better is not very convincing to me. OC it's better somehow to publish 😅). Citation counts are not everything, but seems a bit on the low side as well. I am still wondering how this method is really influential and fundamental. And if we do add it (not blocking anything just to be clear), we need to be clear in the doc about why use this and when.
All that being said 😃 @zhimin-z you can find a lot of information in our contributing guides: https://scipy.github.io/devdocs/dev/contributor/contributor_toc.html. And this page is a quick summary with a sort of checklist at the end https://scipy.github.io/devdocs/dev/contributor/development_workflow.html But we don't work with checklist so you can keep this on your side if you want but it will not "help" or do much for the review itself.

For the reason why bws test is better, I would refer to the results from this repo: https://github.com/cran/BWStest. I understand the citation count is low partly due to the permutation test efficiency being low compared to other rank-based tests, but its comparative power is higher when we are examining small datasets.

Thanks for these updates. There are two unresolved comments:

[ ] Add tests (specific recommendations here)
[ ] Justify the need for both variants or offer only one variant (here)

After that is done, I may suggest a few tweaks to the documentation or refactoring with a PR to your branch, but I think it's pretty close.

Thanks for these updates. There are two unresolved comments:

[ ]  Add tests (specific recommendations here)
[ ]  Justify the need for both variants or offer only one variant (here)

After that is done, I may suggest a few tweaks to the documentation or refactoring with a PR to your branch, but I think it's pretty close.

I read the original paper, but it did not offer me a reproducible validation test, instead, they use the permutation sampling test to compare the power of each k-sample test. I wonder how and where I can find data to add tests for variant methods.
The variants method now combines into one single option name shan-murakami.

I read the original paper, but it did not offer me a reproducible validation test, instead, they use the permutation sampling test to compare the power of each k-sample test. I wonder how and where I can find data to add tests for variant methods.

You can compare the output of this implementation against an R package. (Just don't look at the source code.)

The variants method now combines into one single option named shan-murakami.

Yes, I saw. (And I saw that the line variants = {"shan", "murakami", "naive"} was not updated accordingly.) Please see the comment linked from the checklist. The question is why not offer only the "naive" method or only the Shan-Murakami method and eliminate the variant keyword? Why is it so important to include both?

For the variant methods, I got the inspiration from Kendall Tau rank test

Do you think this is a good reason to go?

The fact that kendalltau has two variants is not sufficient support for this test to be added with two variants.
We have variants of kendalltau because it is a very popular function and users requested that other variants be added.

The fact that kendalltau has two variants is not sufficient support for this test to be added with two variants.
We have variants of kendalltau because it is a very popular function and users requested that other variants be added.
If there were a reason for this function to get multiple variants, variant would be a good name for the keyword, though.

I've checked the BWS test in R and found that it has the variant "murakami" in their package.

I also checked the kendalltau test and found the variants has only two options.

What do you suggest to change the name for?

@zhimin-z it sounds like we're misunderstanding one another. Rather than clarify the conversation above, let's start over and pretend that this is a totally new comment that we haven't discussed before.

What is the advantage of "Shan-Murakami" over "Naiive" (or vice-versa)?

Extracted from original paper page 7:

and another paper page 13:

I would add more variants as shown in https://www.tandfonline.com/doi/pdf/10.1080/00949655.2010.551516

I see you added more variants. This is actually what I was trying to prevent. Once you add a variant keyword, it's easy to find more variants that could be added. This complicates the API, review, and future maintenance. (It's hard to argue that there is a proportional benefit to users when only one person has ever asked for the test, let alone all the possible variants.)
I'd suggest focusing on adding the unit tests.

Please consider accepting zhimin-z/scipy#18. After that and a final pass, I think I would be comfortable merging the PR.

@chrisb83 I trimmed down the options and added unit tests so we can get this merged. I think you were the only maintainer to voice interest in adding this, so would you be willing to review it?

@chrisb83 this PR (almost literally) has your name on it. Care to provide a second review? I helped it along because you supported the addition of the function. But because I worked on it a bit, I think it could use an independent set of eyes.

Ok, I can take a look in the next few days!

Thanks @chrisb83. I think I addressed all comments.

Thanks @chrisb83. I think I addressed all comments.

Yes, it looks good now. Test cases against R and the paper are implemented, I don't have other feedback.

Thanks @chrisb83. If you're confident enough to merge, great, or if not, how about the approve button?


Ping in a VRF is Unsupported on IOS XR

Expected Behavior
User can ping an IP in a VRF on IOS XR.
Actual Behavior
User cannot ping an IP in a VRF on IOS XR.
Test Environment
Python Version
> python --version
Python 3.6.7

pyATS Package Versions
> pip freeze | egrep 'pyats|unicon|genie'
genie==3.1.0
genie.abstract==3.1.0
genie.conf==3.1.0
genie.examples==3.1.1
genie.harness==3.1.4
genie.libs.conf==3.1.3
genie.libs.filetransferutils==3.1.0
genie.libs.ops==3.1.5
genie.libs.parser==3.1.11
genie.libs.robot==3.1.6
genie.libs.sdk==3.1.8
genie.libs.telemetry==3.1.2
genie.metaparser==3.1.0
genie.ops==3.1.3
genie.parsergen==3.1.1
genie.predcore==3.1.0
genie.telemetry==3.1.4
genie.utils==3.1.3
pyats==5.0.1
pyats.aereport==5.0.1
pyats.aetest==5.0.0
pyats.async==5.0.0
pyats.connections==5.0.0
pyats.datastructures==5.0.0
pyats.easypy==5.0.2
pyats.examples==5.0.0
pyats.kleenex==5.0.2
pyats.log==5.0.0
pyats.results==5.0.0
pyats.robot==5.0.0
pyats.tcl==5.0.0
pyats.templates==5.0.0
pyats.topology==5.0.0
pyats.utils==5.0.3
unicon==3.4.3

IOS XR Version
RP/0/0/CPU0:ios#show version brief
Sat Dec 15 19:14:09.011 UTC

Cisco IOS XR Software, Version 6.0.1[Default]
Copyright (c) 2016 by Cisco Systems, Inc.

ROM: GRUB, Version 1.99(0), DEV RELEASE

ios uptime is 1 week, 1 day, 15 hours, 21 minutes
System image file is "bootflash:disk0/xrvr-os-mbi-6.0.1/mbixrvr-rp.vm"

cisco IOS XRv Series (Pentium Celeron Stepping 3) processor with 3145215K bytes of memory.
Pentium Celeron Stepping 3 processor at 2393MHz, Revision 2.174
IOS XRv Chassis

1 Management Ethernet
3 GigabitEthernet
97070k bytes of non-volatile configuration memory.
866M bytes of hard disk.
2321392k bytes of disk0: (Sector size 512 bytes).
RP/0/0/CPU0:ios#

Steps to Reproduce
Assuming a management IP of <IP_ADDRESS> with default credentials, configure the IOS XR router as below:
RP/0/0/CPU0:ios#show running-config vrf management
Sat Dec 15 19:15:01.388 UTC
vrf management
 address-family ipv4 unicast
 !
!

RP/0/0/CPU0:ios#show running-config interface mgmtEth 0/0/CPU0/0
Sat Dec 15 19:15:08.347 UTC
interface MgmtEth0/0/CPU0/0
 vrf management
 ipv4 address <IP_ADDRESS> <IP_ADDRESS>
!

RP/0/0/CPU0:ios#

Confirm you have a route and forwarding entry:
RP/0/0/CPU0:ios#show route vrf management ipv4 unicast
Sat Dec 15 19:19:24.200 UTC

Codes: C - connected, S - static, R - RIP, B - BGP, (>) - Diversion path
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
       i - ISIS, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, su - IS-IS summary null, * - candidate default
       U - per-user static route, o - ODR, L - local, G  - DAGR, l - LISP
       A - access/subscriber, a - Application route
       M - mobile route, r - RPL, (!) - FRR Backup path

Gateway of last resort is <IP_ADDRESS> to network <IP_ADDRESS>

S*   <IP_ADDRESS>/0 [1/0] via <IP_ADDRESS>, 02:26:25
C    <IP_ADDRESS>/24 is directly connected, 02:27:59, MgmtEth0/0/CPU0/0
L    <IP_ADDRESS>/32 is directly connected, 02:27:59, MgmtEth0/0/CPU0/0
RP/0/0/CPU0:ios#show cef vrf management <IP_ADDRESS>
Sat Dec 15 19:21:15.532 UTC
<IP_ADDRESS>/0, version 3, proxy default, internal 0x1000011 0x0 (ptr 0xa1447674) [1], 0x0 (0x0), 0x0 (0x0)
 Updated Dec 15 16:52:58.551
 local adjacency <IP_ADDRESS>
 Prefix Len 0, traffic index 0, precedence n/a, priority 3
   via <IP_ADDRESS>/32, 2 dependencies, recursive [flags 0x0]
    path-idx 0 NHID 0x0 [0xa1447c74 0x0]
    next hop <IP_ADDRESS>/32 via <IP_ADDRESS>/32
RP/0/0/CPU0:ios#show cef vrf management <IP_ADDRESS>
Sat Dec 15 19:21:24.641 UTC
<IP_ADDRESS>/32, version 0, internal 0x1020001 0x0 (ptr 0xa1447c74) [2], 0x0 (0xa1413488), 0x0 (0x0)
 Updated Dec 15 17:13:24.047
 local adjacency <IP_ADDRESS>
 Prefix Len 32, traffic index 0, Adjacency-prefix, precedence n/a, priority 15
   via <IP_ADDRESS>/32, MgmtEth0/0/CPU0/0, 6 dependencies, weight 0, class 0 [flags 0x0]
    path-idx 0 NHID 0x0 [0xa0f15250 0x0], Internal 0xa0c8329c
    next hop <IP_ADDRESS>/32
    local adjacency
RP/0/0/CPU0:ios#

Confirm you can ping another IP in that VRF:
RP/0/0/CPU0:ios#ping <IP_ADDRESS> vrf management
Sat Dec 15 19:18:46.872 UTC
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to <IP_ADDRESS>, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms
RP/0/0/CPU0:ios#

Use the following testbed at /tmp/testbed.yaml:
testbed:
  name: vrftest
  tacacs:
    username: admin
  passwords:
    tacacs: admin

devices:
  nxos:
    os: nxos
    type: nxos
    connections:
      ssh:
        protocol: ssh
        ip: <IP_ADDRESS>
  xr:
    os: iosxr
    type: iosxr
    connections:
      ssh:
        protocol: ssh
        ip: <IP_ADDRESS>

NX-OS is here to show that pinging in a VRF works with NX-OS.

Start ipython and enter the following:
from genie.conf import Genie

# Initialize the testbed
Genie.init(testbed='/tmp/testbed.yaml')

# Connect to the XR router
Genie.testbed.devices['xr'].connect()

# Attempt to ping `<IP_ADDRESS>`, note that it never passes the `vrf`
Genie.testbed.devices['xr'].ping('<IP_ADDRESS>', vrf='management')

Example output:
In [2]: from genie.conf import Genie
   ...:
   ...: # Initialize the testbed
   ...: Genie.init(testbed='/tmp/testbed.yaml')
   ...:
   ...: # Connect to the XR router
   ...: Genie.testbed.devices['xr'].connect()
   ...:
   ...: # Attempt to ping `<IP_ADDRESS>`, note that it never passes the `vrf`
   ...: Genie.testbed.devices['xr'].ping('<IP_ADDRESS>', vrf='management')
[2018-12-15 11:27:37,102] +++ xr logfile /tmp/xr-cli-20181215T112737102.log +++
[2018-12-15 11:27:37,102] +++ Unicon plugin iosxr +++
[2018-12-15 11:27:37,114] +++ connection to spawn: ssh -l admin <IP_ADDRESS> -p 22, id:<PHONE_NUMBER>89280 +++
[2018-12-15 11:27:37,115] connection to xr
[2018-12-15 11:27:37,109] ssh -l admin <IP_ADDRESS> -p 22

IMPORTANT:  READ CAREFULLY
Welcome to the Demo Version of Cisco IOS XRv (the "Software").
The Software is subject to and governed by the terms and conditions
of the End User License Agreement and the Supplemental End User
License Agreement accompanying the product, made available at the
time of your order, or posted on the Cisco website at
www.cisco.com/go/terms (collectively, the "Agreement").
As set forth more fully in the Agreement, use of the Software is
strictly limited to internal use in a non-production environment
solely for demonstration and evaluation purposes.  Downloading,
installing, or using the Software constitutes acceptance of the
Agreement, and you are binding yourself and the business entity
that you represent to the Agreement.  If you do not agree to all
of the terms of the Agreement, then Cisco is unwilling to license
the Software to you and (a) you may not download, install or use the
Software, and (b) you may return the Software as more fully set forth
in the Agreement.

Please login with any configured user/password, or cisco/cisco

<EMAIL_ADDRESS>password:

RP/0/0/CPU0:ios#
[2018-12-15 11:27:37,534] +++ initializing handle +++
[2018-12-15 11:27:37,535] +++ xr: executing command 'terminal length 0' +++
terminal length 0
Sat Dec 15 19:27:34.796 UTC
RP/0/0/CPU0:ios#
[2018-12-15 11:27:37,620] +++ xr: executing command 'terminal width 0' +++
terminal width 0
Sat Dec 15 19:27:34.876 UTC
RP/0/0/CPU0:ios#
[2018-12-15 11:27:37,688] +++ xr: config +++
configure terminal
Sat Dec 15 19:27:34.956 UTC
RP/0/0/CPU0:ios(config)#no logging console
RP/0/0/CPU0:ios(config)#line console
RP/0/0/CPU0:ios(config-line)#exec-timeout 0 0
RP/0/0/CPU0:ios(config-line)#absolute-timeout 0
RP/0/0/CPU0:ios(config-line)#session-timeout 0
RP/0/0/CPU0:ios(config-line)#line default
RP/0/0/CPU0:ios(config-line)#exec-timeout 0 0
RP/0/0/CPU0:ios(config-line)#absolute-timeout 0
RP/0/0/CPU0:ios(config-line)#session-timeout 0
RP/0/0/CPU0:ios(config-line)#end
Uncommitted changes found, commit them before exiting(yes/no/cancel)? [cancel]:yes
RP/0/0/CPU0:ios#
[2018-12-15 11:27:38,870] +++ xr: ping +++
ping
Sat Dec 15 19:27:36.136 UTC
Protocol [ipv4]:
Target IP address: <IP_ADDRESS>
Repeat count [5]:
Datagram size [100]:
Timeout in seconds [2]:
Interval in milliseconds [10]: 0
Extended commands? [no]: n
Sweep range of sizes? [no]: n
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to <IP_ADDRESS>, timeout is 2 seconds:
UUUUU
Success rate is 0 percent (0/5)
RP/0/0/CPU0:ios#
---------------------------------------------------------------------------
SubCommandFailure                         Traceback (most recent call last)
<ipython-input-2-c597290ef041> in <module>
      8
      9 # Attempt to ping `<IP_ADDRESS>`, note that it never passes the `vrf`
---> 10 Genie.testbed.devices['xr'].ping('<IP_ADDRESS>', vrf='management')

~/.virtualenvs/netdevops/lib/python3.6/site-packages/unicon/bases/routers/services.cpython-36m-x86_64-linux-gnu.so in unicon.bases.routers.services.BaseService.__call__()

~/.virtualenvs/netdevops/lib/python3.6/site-packages/unicon/bases/routers/services.cpython-36m-x86_64-linux-gnu.so in unicon.bases.routers.services.BaseService.get_service_result()

SubCommandFailure: ('sub_command failure, patterns matched in the output:', ['Success rate is 0 percent'])

Verify this works with NX-OS:
from genie.conf import Genie

# Initialize the testbed
Genie.init(testbed='/tmp/testbed.yaml')

# Connect to the NXOS switch
Genie.testbed.devices['nxos'].connect()

# Attempt to ping `<IP_ADDRESS>`, note that it passes the VRF and the ping is successful
Genie.testbed.devices['nxos'].ping('<IP_ADDRESS>', vrf='management')

Example output showing that it works on NXOS:
In [1]: from genie.conf import Genie
   ...:
   ...: # Initialize the testbed
   ...: Genie.init(testbed='/tmp/testbed.yaml')
   ...:
   ...: # Connect to the NXOS switch
   ...: Genie.testbed.devices['nxos'].connect()
   ...:
   ...: # Attempt to ping `<IP_ADDRESS>`, note that it passes the VRF and the ping is successful
   ...: Genie.testbed.devices['nxos'].ping('<IP_ADDRESS>', vrf='management')
   ...:
[2018-12-15 11:34:38,998] +++ nxos logfile /tmp/nxos-cli-20181215T113438998.log +++
[2018-12-15 11:34:38,999] +++ Unicon plugin nxos +++
[2018-12-15 11:34:39,005] +++ connection to spawn: ssh -l admin <IP_ADDRESS> -p 22, id:<PHONE_NUMBER>96144 +++
[2018-12-15 11:34:39,012] connection to nxos
[2018-12-15 11:34:39,006] ssh -l admin <IP_ADDRESS> -p 22
User Access Verification
Password:

Bad terminal type: "xterm-256color". Will assume vt100.
Cisco NX-OS Software
Copyright (c) 2002-2018, Cisco Systems, Inc. All rights reserved.
Nexus 9000v software ("Nexus 9000v Software") and related documentation,
files or other reference materials ("Documentation") are
the proprietary property and confidential information of Cisco
Systems, Inc. ("Cisco") and are protected, without limitation,
pursuant to United States and International copyright and trademark
laws in the applicable jurisdiction which provide civil and criminal
penalties for copying or distribution without Cisco's authorization.

Any use or disclosure, in whole or in part, of the Nexus 9000v Software
or Documentation to any third party for any purposes is expressly
prohibited except as otherwise authorized by Cisco in writing.
The copyrights to certain works contained herein are owned by other
third parties and are used and distributed under license. Some parts
of this software may be covered under the GNU Public License or the
GNU Lesser General Public License. A copy of each such license is
available at
http://www.gnu.org/licenses/gpl.html and
http://www.gnu.org/licenses/lgpl.html
***************************************************************************
*  Nexus 9000v is strictly limited to use for evaluation, demonstration   *
*  and NX-OS education. Any use or disclosure, in whole or in part of     *
*  the Nexus 9000v Software or Documentation to any third party for any   *
*  purposes is expressly prohibited except as otherwise authorized by     *
*  Cisco in writing.                                                      *
***************************************************************************
nxos#
[2018-12-15 11:34:40,521] +++ initializing handle +++
[2018-12-15 11:34:40,522] +++ nxos: executing command 'term length 0' +++
term length 0
nxos#
[2018-12-15 11:34:40,535] +++ nxos: executing command 'term width 511' +++
term width 511
nxos#
[2018-12-15 11:34:40,542] +++ nxos: executing command 'terminal session-timeout 0' +++
terminal session-timeout 0
nxos#
[2018-12-15 11:34:40,550] +++ nxos: config +++
config term
Enter configuration commands, one per line. End with CNTL/Z.
nxos(config)# no logging console
nxos(config)# line console
nxos(config-console)# exec-timeout 0
nxos(config-console)# terminal width 511
nxos(config-console)# end
nxos#
[2018-12-15 11:34:40,830] +++ nxos: ping +++
ping
Vrf context to use [default] :management
Target IP address or Hostname: <IP_ADDRESS>
Repeat count [5] :
Packet-size [56] :
Timeout in seconds [2] :
Sending interval in seconds [0] :
Extended commands [no] : n
Sweep range of sizes [no] : n
Sending 5, 56-bytes ICMP Echos to <IP_ADDRESS>
Timeout is 2 seconds, data pattern is 0xABCD

64 bytes from <IP_ADDRESS>: icmp_seq=0 ttl=254 time=1.085 ms
64 bytes from <IP_ADDRESS>: icmp_seq=1 ttl=254 time=0.821 ms
64 bytes from <IP_ADDRESS>: icmp_seq=2 ttl=254 time=0.839 ms
64 bytes from <IP_ADDRESS>: icmp_seq=3 ttl=254 time=0.887 ms
64 bytes from <IP_ADDRESS>: icmp_seq=4 ttl=254 time=0.834 ms

--- <IP_ADDRESS> ping statistics ---
5 packets transmitted, 5 packets received, 0.00% packet loss
round-trip min/avg/max = 0.821/0.893/1.085 ms
nxos#
Out[1]: 'ping\r\r\nVrf context to use [default] :management\r\nTarget IP address or Hostname: <IP_ADDRESS>\r\nRepeat count [5] : \r\nPacket-size [56] : \r\nTimeout in seconds [2] : \r\nSending interval in seconds [0] : \r\nExtended commands [no] : n\r\nSweep range of sizes [no] : n\r\nSending 5, 56-bytes ICMP Echos to <IP_ADDRESS>\r\nTimeout is 2 seconds, data pattern is 0xABCD\r\n\r\n64 bytes from <IP_ADDRESS>: icmp_seq=0 ttl=254 time=1.085 ms\r\n64 bytes from <IP_ADDRESS>: icmp_seq=1 ttl=254 time=0.821 ms\r\n64 bytes from <IP_ADDRESS>: icmp_seq=2 ttl=254 time=0.839 ms\r\n64 bytes from <IP_ADDRESS>: icmp_seq=3 ttl=254 time=0.887 ms\r\n64 bytes from <IP_ADDRESS>: icmp_seq=4 ttl=254 time=0.834 ms\r\n\r\n--- <IP_ADDRESS> ping statistics ---\r\n5 packets transmitted, 5 packets received, 0.00% packet loss\r\nround-trip min/avg/max = 0.821/0.893/1.085 ms\r\n\r'

In [2]:

Hopefully I've missed something simple and this is user error on my part.  Please let me know if I can provide additional information.  Thanks!

I was able to fix this locally by modifying the unicon package.
I added the following to unicon/plugins/iosxr/service_implementation.py:
from unicon.plugins.generic.service_implementation import Ping as GenericPing

class Ping(GenericPing):
    def call_service(self, addr, command="", *, vrf=None, **kwargs):
        command = command if command else \
            "ping vrf {vrf}".format(vrf=vrf) if vrf else "ping"
        super().call_service(addr=addr, command=command, **kwargs)

I added the following to unicon/plugins/iosxr/__init__.py:
class IOSXRServiceList(ServiceList):
    def __init__(self):
        self.ping = svc.Ping

This was essentially a copy/paste of the IOS-XE implementation, so it would probably be better to subclass the XR implementation from the XE implementation.

Just confirmed that subclassing from the XE implementation works fine.  Instead of the above modifications, you can simply do this in unicon/plugins/iosxr/__init__.py
from unicon.plugins.iosxe.service_implementation import Ping as IosXePing

class IOSXRServiceList(ServiceList):
    def __init__(self):
        self.ping = IosXePing

Thanks for reporting this limitation and proposing a fix!
We will take care of this on Monday. Should be able to release a new version this week.

Awesome!  Looking forward to it.  Thanks for the rapid response!  <3

The fix has been merged in. Thanks for the great bug report/fix.
This is not a blocker for you right now as you applied your local fix, right?
We would release it this week, however we will be off during the holiday and just to make sure no hidden issue slip in right before, if its not a blocker, we will release once back in office.  Around January 2-4.

Thanks for the update!  I'm just now kicking the tires, so it's not blocking anything at all.  Enjoy the holidays!

@supertylerc to confirm fix in latest version of unicon


akka configuration support

#33

Hi @michalmisiewicz ,
Your request feels very specific to your use case and I'm not yet convinced your change belongs to this library. Can you elaborate a bit more about what you want to achieve?. As far as I recall when calling ActorSystem("name"), it will load the configuration as specified in the application.conf. So I think that if you would change your application.conf settings in your own project to include akka.daemonic=on it would pick this up. I haven't tested this, so please confirm this.
Cheers,
Bas


[EBPF-232] Add entry count to ebpfcheck

What does this PR do?
This adds a new metric (ebpf.maps.entry_count) to the ebpfcheck program. Only supports hash/LRUHash programs for now.
Motivation

Additional Notes

Per-cpu maps not included due to cilium/ebpf doing allocations internally for each iteration
Certain types cannot have a valid count: e.g., an Array map always returns the max number of entries, there's no way to know which entries are set and which aren't.
The batch API is used to reduce the number of syscalls. However, we cannot use cilium/ebpf wrappers: we cannot pass the types the library expects when we only know the key/value sizes at runtime. To solve that, I've copied the syscall code directly adapting it to our use case. While it duplicates code, it's not too much and we also can prune a lot of operations that aren't needed for this use case.

Possible Drawbacks / Trade-offs

Describe how to test/QA your changes

Unit tests
Manual tests calling the HTTP system-probe check endpoint
Manual tests checking the agent reported telemetry

Reviewer's Checklist

[ ] If known, an appropriate milestone has been selected; otherwise the Triage milestone is set.
[ ] Use the major_change label if your change either has a major impact on the code base, is impacting multiple teams or is changing important well-established internals of the Agent. This label will be use during QA to make sure each team pay extra attention to the changed behavior. For any customer facing change use a releasenote.
[ ] A release note has been added or the changelog/no-changelog label has been applied.
[ ] Changed code has automated tests for its functionality.
[ ] Adequate QA/testing plan information is provided. Except if the qa/skip-qa label, with required either qa/done or qa/no-code-change labels, are applied.
[ ] At least one team/.. label has been applied, indicating the team(s) that should QA this change.
[ ] If applicable, docs team has been notified or an issue has been opened on the documentation repo.
[ ] If applicable, the need-change/operator and need-change/helm labels have been applied.
[ ] If applicable, the k8s/<min-version> label, indicating the lowest Kubernetes version compatible with this feature.
[ ] If applicable, the config template has been updated.

Consider running the image from this custom branch in a load-test environment with medium/prod load scenarios to understand the memory overhead

I'm getting 20-30% memory overhead with this branch compared to main. I'll investigate a little bit more and see if I can bring it down before merging.

After some tests, I've settled on the current solution:

A structure, with the same lifetime as the probe, that allows buffers for the keys/values/cursors to be reutilized between calls to hashMapNumberOfEntries, avoiding allocations for each map.
This structure only increases the size of the buffers to have enough space for each map iteration, depending on the key/value sizes and number of entries. If the buffer is bigger than needed, no allocations/deallocations are made, the buffer can just be reused.
After all maps have been iterated in the probe check, the buffers are dereferenced so that the GC can collect them. However, the structure keeps track of the latest size they were.
When a new check request comes, the buffers will be allocated with that latest size directly. This avoids extra reallocations, as the most likely situation is that we will have to allocate up to that size nevertheless.

I've tested in the system-probe load test environments, and this is the solution that increases the average memory usage the least. In the following screenshot, A is the version with permanent buffers, B is the version with resets after each check. The extra memory usage is 24MB. I think anything below than that is not feasible with the batch lookup approach, there's no way around having buffers big enough to hold all keys/values from the biggest map found.

/merge


Documentation for vm extension set lacks important details

az vm extension set supports:
    --protected-settings  : Protected settings or a file path with such contents.     --settings            : Public settings or a file path with such contents.
This is a really unhelpful comment.  We need to denote what the format for settings is and (ideally), and users need a way to determine what settings are available for a given extension.  (This probably can't be via the docs, but I see no way to get that information via commands.)

I will improve the argument description. Note, this command does provide an example in the help
Examples
    Add a new linux user
        az vm extension set -n VMAccessForLinux --publisher Microsoft.OSTCExtensions --version 1.4
        --vm-name myvm --resource-group mygroup --protected-settings '{"username":"user1",
        "ssh_key":"ssh_rsa ..."}'


Docs: tutorial notebook with high-level interface

Should this perhaps just be a quickstart guide (for v0.1)?


regions with num>= 10 are display in grey in the table, even if it is not their color

Added default colors (now 13). They re now assigned to regions cyclically (% 13). Pb with "color chips in Datatables" remaining. See ticket.


Enable skipped tests

PR Summary

Replace $PSDefaultParameterValues with $global:PSDefaultParameterValues to correctly restore skipping settings.
Skip FileSystem Provider Extended tests on Linux because Hidden flag is not supported on Linux in .Net 5 Preview. The tests should be fixed in follow PR.

Also two tests fail in Get-Process.Tests.ps1 - I do not find when we ruined it and how to fix it.
PR Context
I discovered that CIs skip silently many tests which run after the Clipboard tests.
I have more general concern - I saw that tests was skipped on Linux but not on Windows and MacOS and I don't understand how this can be. My concern is that there is a bug. I hope MSFT can investigate this.
PR Checklist

[x] PR has a meaningful title

Use the present tense and imperative mood when describing your changes

[x] Summarized changes
[x] Make sure all .h, .cpp, .cs, .ps1 and .psm1 files have the correct copyright header
[x] This PR is ready to merge and is not Work in Progress.

If the PR is work in progress, please add the prefix WIP: or [ WIP ] to the beginning of the title (the WIP bot will keep its status check at Pending while the prefix is present) and remove the prefix when the PR is ready.

Breaking changes

[x] None
OR
[ ] Experimental feature(s) needed

[ ] Experimental feature name(s):

User-facing changes

[x] Not Applicable
OR
[ ] Documentation needed

[ ] Issue filed:

Testing - New and feature

[ ] N/A or can only be tested interactively
OR
[x] Make sure you've added a new test if existing tests do not effectively test the code changed

Tooling

[ ] I have considered the user experience from a tooling perspective and don't believe tooling will be impacted.
OR
[ ] I have considered the user experience from a tooling perspective and enumerated concerns in the summary. This may include:

Impact on PowerShell Editor Services which is used in the PowerShell extension for VSCode (which runs in a different PS Host).
Impact on Completions (both in the console and in editors) - one of PowerShell's most powerful features.
Impact on PSScriptAnalyzer (which provides linting & formatting in the editor extensions).
Impact on EditorSyntax (which provides syntax highlighting with in VSCode, GitHub, and many other editors).

Please investigate test failures

@TravisEz13 two tests fail in Get-Process.Tests.ps1 - I do not find when we ruined it and how to fix it.

@PoshChan please rerun windows

@TravisEz13, successfully started rebuild of PowerShell-CI-Windows

/azp help

/azp run powershell-ci-macos

/azp run powershell-ci-linux

@TravisEz13 @SteveL-MSFT I found why Linux tests fail. It is https://github.com/dotnet/runtime/issues/33673.
I hope we get the fix in next .Net 5 Preview. While I put the tests in pending state.

Please file an issue to track re-enabling the tests.

I have found a solution to #12908. I would like to contribute.


Integrating AdminLTE to this

So, I'm using your code and AdminLTE to create a web site for work.  I noticed that you use Username as the Email address.  So if I register a new person, I'm just going by email address.  I will create an Admin page where I can edit these empty First, Middle and Last name and phone numbers.  I would also like to add policy/claims to these accounts.  Keep up the good work.

I'm glad that my code has been helpful to you. I didn't use email as a username, but of course, you can use email as a username, as there are no restrictions in the code.


fix: tableName is empty if wfc.session != nil

TODO: Say why you made your changes.
TODO: Say what changes you made.
TODO: Say how you tested your changes.
TODO: Attach screenshots if you changed the UI.
Fixes #10888

Can you test it out and confirm it's working after the change?


Implementing access policies

Most real-life applications have the need of implementing access policies to check whether a client is allowed to perform a certain request. As a basic example: A web application which provides an admin backend. A user should not be able to access any of the endpoints of the admin backend without prior authentication.
Other use cases might include things such as rate limiting (eg. only 100 requests per day).
This should be functionality baked into malloy.
I think it would be best to have some sort of security-policy-check interface in the endpoint class. This might be something as simple as:
struct access_policy
{
    /**
     * Checks whether a request satisfies the policy constrains.
     *
     * @return `true` if the request is clear. `false` if not. The response will be sent back to the client if `false`.
     */
    [[nodiscard]]
    virtual
    std::pair<bool, std::optional<response<>>>
    check(const request<>& req) = 0;
};

The router would check the policy constrains on each request. If the check passes (returns true), the endpoint handler will be invoked. If the check fails (returns false), the endpoint handler will not be invoked and the router instead responds with the response provided by the checker. This allows a user of the library to respond in whatever way is sensible for the application.
This is just to illustrate the idea roughly. The interface might look differently - it's mainly about functionality at this point.
Especially the cost of doing this via virtual functions might not be desirable in this case.
Also std::pair<bool, std::optional<response<>>> is most likely not the way to go. Again: just for illustrating functionality.
A router should have the capabilities of getting a "default security policy" assigned which will be propagated/used by all endpoints if an endpoint didn't receive a specific policy.
@0x00002a thoughts?

Not sure if I'm misunderstanding but what would the advantage of this be over the user simply changing their response in the route handler? The file serving endpoint might benefit from this but I can't think of any other cases, am I missing something?

The advantage is exactly that: An application using malloy will not have to manually perform this check on every endpoint.
Think of a simple CMS (eg. something like WordPress): The admin backend can be implemented using it's own sub-router on /admin. Every time that sub-router receives a request the developer needs to make sure that the application specific policy check is performed to prevent access to admin-relevant functionalities to an unauthorized user (client). If there's even just one endpoint in that sub-router (and nested sub-routers) where that check was omitted (bug) a user can get access to that endpoint without being authenticated.
Having some sort of access policy baked into malloy allows to simply set an access policy on the /admin sub-router and the router will automatically call the access policy checker (which is implemented by the application) on every endpoint request.
The application can implement this access policy checker in a way that it checks for the user authentication. If it passes, the router will simply continue handling the request by invoking the corresponding endpoint's handler. If the authentication check fails, the application can provide a corresponding http::response which might be something along the lines of "Access Denied - Not authenticated".

I see your point. Why not something like how preflights are currently done then? iirc django allows defining an authentication backend, we could do that with a template (and then some type hiding), which could be registered in the same way preflights are currently. Adding a callable could work I guess, that would let us define preset backends which just overloaded ()

Would you care to draft up some code snippets?
I'm not sure how the add_preflight() paradigm would work in this case as multiple endpoints might exist on the same resource with different authentication requirements (eg. GET /gallery might have a different authentication requirement than POST /gallery).

hmm, that could be done at the implementation level. e.g.:
struct post_auth {
    auto operator()(const malloy::http::request_header<>& h) const -> std::optional<malloy::http::response<>> {
        if (h.method() != malloy::http::method::post) return std::nullopt;

        / * do some authentication */
    }
};

Potentially the return type of this could be the same as for the route handlers, just wrapped in an optional (allowing any type of bodies to be used). I've used std::optional rather than a bool pair since an empty optional is falsy anyway.
It also might be better to have this as something like router::add_check, or something, since it is not necessarily just for authentication, and ideally it would try to match all from the most specific to the least specific but I'm not sure if that can be done with std::regex.

I see the following possibilities:

Per end-point policies: That would probably be the approach providing the most flexibility. Not sure how the interface for setting an endpoints policy would look like.  The router would have a list of these policies and check every incoming request against that policy list/table/what ever. The interface would probably look something like router::add_policy(std::string&& resource, policy&& p);. The resource could be a regex again. There might also be an additional overload to specify the HTTP method. This might still provide the user with the opportunity to screw up by providing an incorrect resource introducing very hard-to-spot security problems.
only sub-router level policies: We could keep it simple and only have per-sub-router policies.

I like 2 personally, it fits best with the existing interface imo.
I agree we need some sort of polymorphism on the policies, but I suggest we do the type erasure as an implementation detail. Let the user pass a concept to add_policy (or whichever method is used to register them), rather than needing to inherit.

I like 2 personally, it fits best with the existing interface imo.

I was hoping you'd say that - I fully agree.
Shall we start a branch for this? Do you feel like drafting up the necessary code? :)

Shall we start a branch for this? Do you feel like drafting up the necessary code? :)

hmm, I wouldn't mind doing it but I was going to work on #55 and #70 so this is gonna have to wait a bit if I'm doing it :p.
Also, not sure if we should offer stuff like web tokens out of the box, but I certainly think the API needs to be built with cases like it in mind. I think for starters we should just offer http auth and then have an example using something more complex.

hmm, I wouldn't mind doing it but I was going to work on #55 and #70 so this is gonna have to wait a bit if I'm doing it :p.

That's completely fine of course :)
I do think #55 shouldn't take too much work anymore. With MinGW I am able to build & use shared libraries successfully in the current configuration (eg. main branch). I do think that MSVC needs the export macros but I leave that one up to you as discussed in #55.

Also, not sure if we should offer stuff like web tokens out of the box, but I certainly think the API needs to be built with cases like it in mind. I think for starters we should just offer http auth and then have an example using something more complex.

Yeah I fully agree. Having different built-in authentication methods such as JWT is certainly what I'm after.

Right so the current implementation plan is:

interface like add_policy with policy invocable passed. Invocable takes the http method and request header and returns an optional
Policies are checked before being handed off to the route handlers, if the response is non std::nullopt then its written to the peer and message processing stops. This also means however that we never read the body of the message which may be an issue. If we do end up reading the body the policy should specify how much max imo, for optimisation and to stop possible attacks

Anything I'm missing before I start implementing this?

This also means however that we never read the body of the message which may be an issue

Which scenario do you see this becoming a problem? Reading the body might often not be necessary by a policy implementation.
I am thinking of an extreme case where one adds a policy that just always returns generator::bad_request(). No need to read the request body ever.

If we do end up reading the body the policy should specify how much max imo, for optimisation and to stop possible attacks

This one I do see. However, that too should be left to be up to the policy implementation.

I'm working on this but I've run into a bit of an issue. I need base64 decoding for basic http authentication. I suppose I could implement it myself but I'd rather not, its a real pain and I don't really want to be responsible for testing it and such. OpenSSL has base64 support iirc but that'd make basic http auth support dependend on building with TLS which seems a little weird. We could always just depend on a base64 lib, but casually adding dependencies isn't something I like to make a habit of.
I could also just not add the basic http auth support for now, and leave it up to users to create themselves.
Thoughts?

I understand that base64 decoding is required for HTTP basic auth. However, I don't understand why this would be a requirement to implement the policy interface? The idea would be to have an interface as discussed above which allows a user to implement their own policy (or rather: policy access checks). Therefore, it shouldn't be necessary to do the HTTP basic auth checking.
For the future it might be nice to have some default policies built into the library. Something like HTTP basic auth might be useful but that would be on top of the interface itself.
Once we get there I think it's a decent approach to just have an interface/hook for base64 decoding so the user can supply his own implementation.
I'm doing something similar in an application which uses malloy. In that particular application, I am using botan which also provides base64 capabilities. Therefore, it would be as simple as using the built-in HTTP auth policy supplied by malloy and simply adding/implementing the provided interface for base64 decoding which would in that case be done via botan.

I could also just not add the basic http auth support for now, and leave it up to users to create themselves.
Exactly :)
Although I would still have a built-in policy for HTTP basic auth - just with an interface for the base64 decoding. I agree that at least of today it would be outside of the scope of malloy to manage this.

Or am I missing / misunderstanding something?


Add option to leave out hostname from path in git get

This is a great tool, thank you! I would suggest that sometimes the hostname is redundant in the tree structure, and it might be nice to have an option to ignore it. So instead you'd just have <root>/<user>/<repo> rather than <root>/<host>/<user>/<repo>

Thanks! I was thinking about something similar. If a tree node doesn't have any siblings, it won't be added as a new node but as a suffix to its parent.
So instead of:
/my/repos
  - github.com
    - user1
      - repo1
    - user2
      - repo2

it would show:
/my/repos/github.com
    - user1
      - repo1
    - user2
      - repo2

Does it make sense? If so, I'll add it next week.

That makes sense in the tree view, I was thinking for git get when actually checking out the repositories.


Batching multiple graphs in a Data

❓ Questions & Help
I have a dataset that emits two graphs of different type for each record (graph_x & graph_v with edges_x and edges_v). The current Batch class expects a list of Data objects and Data objects expects a single graph type. To get around this I am performing a Cartesian Product on the two graphs to merge as one. However I would like my model to perform convolutions on graph_v before merging the two.
Should I go ahead an write my own Batch class to handle tuples of Data or is there a better way? Also, should a Cartesian Product function be part of pytorch geometric (If I write the function should I send a PR)?

Dupe of #781


self.forward() -> self()

Before submitting

[x] Was this discussed/approved via a Github issue? (no need for typos and docs improvements)
[x] Did you read the contributor guideline, Pull Request section?
[x] Did you make sure to update the docs?
[ ] Did you write any new necessary tests?
[x] If you made a notable change (that affects users), did you update the CHANGELOG?

What does this PR do?
Fixes #1209
PR review
Anyone in the community is free to review the PR once the tests have passed.
If we didn't discuss your PR in Github issues there's a high chance it will not be merged.
Did you have fun?
Make sure you had fun coding 🙃

@jeremyjordan what about the TPU issue?

can’t edit the title on mobile but this is WIP until TPU issue is resolved

@williamFalcon can you share more details about the TPU issue you ran into? i tried running the lightning_mnist_tpu notebook with this branch (and changing self.forward() to self() in the notebook) and it's running fine for me

@Borda  any idea what's up with the mergify bot?

@jeremyjordan we have there the following rule:
(on head branch) $ git rebase base
(on head branch) # Wait for CI to go green
(on head branch) # Squash all commits
(on base branch) $ git merge --ff head

looking to the master, it seems that there is some conflict with rebasing
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".


OT SVG support - patches included

Is your feature request related to a problem? Please describe.
Would you considering adding the patches to your fork?
https://github.com/HinTak/chromium-mod-CI
Describe the solution you'd like, including relevant patches or source
Patches included.
Additional Notes
See the qt web engine filing also.
You have a chance to be better than both chrome, Firefox, and Safari in terms of colour font support.

First of all, thank you very much for your work. Also, have you tried submitting these patches you wrote to Google for review?

The last comments in both threads are mine :
https://bugs.chromium.org/p/chromium/issues/detail?id=306078
https://issues.chromium.org/40336440 . In addition, I am in some other mailing lists where the relevant google engineers frequent too. Consider the work is mostly done by them and the patches do very little beyond flipping some options, I think their choice is more a strategy against Firefox and Webkit than technical. (As in make it work only as a competitive target to try to do a better(?) alternative).

Have you verified that the relevant support actually takes effect after applying these patches?  In addition, I took a look at the patches you wrote, and there seem to be some inconsistencies in them that do not comply with Google's coding standards.
@HinTak

You only need to use the git cl format command after editing the Chromium source code to automatically reformat the code and comply with Google's coding standards.  The prerequisite for running the above command is that you need to deploy Chromium's depot_tools.

Okay, thanks for the tips. I only work with skia in git; chromium against snapshot tar balls. I 'll think about how to do the formatting on github ci.

I probably should put these two links next to the patches (they are on the minimal web browser script README) - just visit them before and after applying the patches to see the difference:
https://pixelambacht.nl/chromacheck/
https://yoksel.github.io/color-fonts-demo/
(Or with a different browser - Firefox/ webkitgtk both handle OT-SVG quite well, but missing COLRv1 and others which chrome supports)

If you have a git repo handy, can you git cl format then post the result? If it is just white space,  I 'll up date the patches.

We don't need to reformat the code yet, I just gave you a reminder.  I saw in your patches that the files that need to be modified involve components such as ots, skia, and blink. Have you discussed it with the developers of ots, skia, and blink before or submitted patches to them?

The relevant people are all CC'ed on those two issue URLs, as well as subscribers of a few mailing lists on which I posted the work. This has been going on for 8 months. If they want to say something, they'd have done so by now.

The skia part of the part has gotten into skia-python 6 months ago (and I have been invited as co-maintainer/releases since).


Eyram

Reset Form added and some formatting done.
Also html mod for just running

workout array as obejcts and calling from local storage


re-enable tests

Found a FIXME comment on line 1 of file crates/nu-json/tests/main.rs

Duplicate, closing it.


Magnetic pogo pins

I am having a hard time locating the magnetic pogo pins from the BOM I spent about 2 hours searching aliexpress with little to no luck. I am also having a hard time figuring out what the other two parts that are missing are. Are you able to provide any insight into this?

it is the magnetic connector 6pin; I think it is on line 21 in the current
revision. Also, are you sure you are going to order everything before I
upload the build series and instructions?
On Fri, May 20, 2022 at 8:28 PM jmsether @.***> wrote:

[image: image]
https://user-images.githubusercontent.com/5393103/169626946-9cb854a4-56bb-41c2-bac4-054210e2f03e.png
I am having a hard time locating the magnetic pogo pins from the BOM I
spent about 2 hours searching aliexpress with little to no luck. I am also
having a hard time figuring out what the other two parts that are missing
are. Are you able to provide any insight into this?
—
Reply to this email directly, view it on GitHub
https://github.com/KRALYN/PositronV3/issues/1, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AP6KUFKLOB4QXB4TM6H4T3TVLAU3XANCNFSM5WQ7L5UQ
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

Also, DO NOT SMT Solder the connector! De select them. You are going to
solder wires to the pads.
On Fri, May 20, 2022 at 8:59 PM KRALYN 3D @.***> wrote:

it is the magnetic connector 6pin; I think it is on line 21 in the current
revision. Also, are you sure you are going to order everything before I
upload the build series and instructions?
On Fri, May 20, 2022 at 8:28 PM jmsether @.***> wrote:

[image: image]
https://user-images.githubusercontent.com/5393103/169626946-9cb854a4-56bb-41c2-bac4-054210e2f03e.png
I am having a hard time locating the magnetic pogo pins from the BOM I
spent about 2 hours searching aliexpress with little to no luck. I am also
having a hard time figuring out what the other two parts that are missing
are. Are you able to provide any insight into this?
—
Reply to this email directly, view it on GitHub
https://github.com/KRALYN/PositronV3/issues/1, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AP6KUFKLOB4QXB4TM6H4T3TVLAU3XANCNFSM5WQ7L5UQ
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

I made BOM more clear in this regard.

When you say connector, are you talking about U7? And I was planning on getting the board made and things milled and cut from the file. I can handle some of the milling and all the 3d printing.


bring up to date with current Portal UI

Names and labels have changed.

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

ID: 754dcf9b-e64a-922b-6108-bd1152a758f0
Version Independent ID: 58247335-c4e9-705b-297d-97637b872c02
Content: Configure deployment credentials - Azure App Service
Content Source: articles/app-service/deploy-configure-credentials.md
Service: app-service
GitHub Login: @cephalin
Microsoft Alias: cephalin

@cephalin Thanks for the feedback! I have assigned the issue to the content author to investigate further and update the document as appropriate.

Fixed in https://github.com/MicrosoftDocs/azure-docs-pr/pull/147055. #please-close


new language: ukrainian

to_the_moon is available in ukrainian, but lgogdownloader doesn't know about this language.

Ukrainian is now supported in 6c6cad4


Option - Set rewards wallet, send claim to wallet

Is your feature request related to a problem? Please describe.
Currently you need to claim rewards, then send to another wallet if you don't keep them local.
Describe the solution you'd like
Give option to save a 2nd wallet for rewards, Give option to send claimed rewards to saved wallet
Describe alternatives you've considered
Manually do this every single time I claim for my entire existence.
Additional context
Contributed by Rastaman on Discord

Woah, this is done! v1.6.0!


Change interface from byte[] to Memory

It would be great if the interface didn't take plain byte arrays. The reason being that you can't really allocate those easily from a block based system. Memory on the other hand is wrapper (like Span<>) around parts of memory that can be passed around between functions and stored in fields/properties. It supports pinning just like basic arrays do and byte[] should just be convertible to Memory so users of your library shouldn't be impacted by the API change.

Not sure but since we're in Unity-land anyway, wouldn't it suffice to use NativeArray instead for the same benefits? This way we would not need the extra dependency.