new TokenFactory module

Hello!
Now you can create new tokens easily and do it in any place of your application; code for generating tokens is in one place. Also TokenFactory provides few auxiliary methods. Other details are discovered below.
Example:
token = DeviseTokenAuth::TokenFactory.create
#<struct DeviseTokenAuth::TokenFactory::Token client_id="G8IuSUUPnQZdupRwBhFU2w", token="vOHeUtLKj3Y5rQS6NHhoQQ", token_hash="$2a$10$RwsqMnz7twQlMEACI8vYPeuuJYqByt6yZb82BQfzpCn/cEcB6NHz.", expiry=1519306978>

DeviseTokenAuth::TokenFactory.valid_token_hash?(token.token_hash) # =>  true
DeviseTokenAuth::TokenFactory.token_hash_is_token?(token.token_hash, token.token) # => true

1. TokenFactory
require 'bcrypt'

module DeviseTokenAuth
  # A token management factory which allow generate token objects and check them.
  module TokenFactory
    # For BCrypt::Password class see:
    # https://github.com/codahale/bcrypt-ruby/blob/master/lib/bcrypt/password.rb

    # Creates a token instance. Takes an optional lifespan and cost options.
    # Example:
    #   DeviseTokenAuth::TokenFactory.create
    #   => #<struct DeviseTokenAuth::TokenFactory::Token client_id="tElcgkdZ7f9XEa0unZhrYQ", token="rAMcWOs0-mGHFMnIgJD2cA", token_hash="$2a$10$wrsdlHVRGlYW11wfImxU..jr0Ux3bHo/qbXcSfgp8zmvVUNHosita", expiry=1518982690>
    #
    #   DeviseTokenAuth::TokenFactory.create(lifespan: 10, cost: 4)
    #   => #<struct DeviseTokenAuth::TokenFactory::Token client_id="5qleT7_t9JPVcX9xmxkVYA", token="RBXX43u4xXNSO-fr2N_4pA", token_hash="$2a$04$9gpCaoFbu2dUKxU3qiTgluHX7jj9UzS.jq1QW0EkQmoaxARo1WxTy", expiry=1517773268>
    def self.create lifespan: nil, cost: nil
      obj_client_id  = client_id
      obj_token      = token
      obj_token_hash = token_hash(obj_token, cost)
      obj_expiry     = expiry(lifespan)

      Token.new(obj_client_id, obj_token, obj_token_hash, obj_expiry)
    end

    # Generates a random URL-safe client_id.
    # Example:
    #   DeviseTokenAuth::TokenFactory.client_id
    #   => "zNf0pNP5iGfuBItZJGCseQ"
    def self.client_id
      secure_string
    end

    # Generates a random URL-safe token.
    # Example:
    #   DeviseTokenAuth::TokenFactory.token
    #   => "6Bqs4K9x8ChLmZogvruF3A"
    def self.token
      secure_string
    end

    # Returns token hash for a token with given cost. If no cost value is specified,
    # the default value is used. The possible cost value is within range from 4 to 31.
    # It is recommended to not use a value more than 10.
    # Example:
    #   DeviseTokenAuth::TokenFactory.token_hash("_qxAxmc-biQLiYRHsmwd5Q")
    #   => "$2a$10$6/cTAtQ3CBLfpkeHW7dlt.PD2aVCbFRN5vDDJUUhGsZ6pzYFlh4Me"
    #
    #   DeviseTokenAuth::TokenFactory.token_hash("_qxAxmc-biQLiYRHsmwd5Q", 4)
    #   => "$2a$04$RkIrosbdRtuet2eUk3si8eS4ufeNpiPc/rSSsfpniRK8ogM5YFOWS"
    def self.token_hash token, cost=nil
      cost ||= DeviseTokenAuth.token_cost
      BCrypt::Password.create(token, cost: cost)
    end

    # Returns the value of time as an integer number of seconds. Takes one argument.
    # Example:
    #   DeviseTokenAuth::TokenFactory.expiry
    #   =><PHONE_NUMBER>
    #   DeviseTokenAuth::TokenFactory.expiry(10)
    #   =><PHONE_NUMBER>
    def self.expiry lifespan=nil
      lifespan ||= DeviseTokenAuth.token_lifespan
      (Time.now + lifespan).to_i
    end

    # Generates a random URL-safe string.
    # Example:
    #   DeviseTokenAuth::TokenFactory.secure_string
    #   => "ADBoIaqXsEDnxIpOuumrTA"
    def self.secure_string
      # https://ruby-doc.org/stdlib-2.5.0/libdoc/securerandom/rdoc/Random/Formatter.html#method-i-urlsafe_base64
      SecureRandom.urlsafe_base64
    end

    # Returns true if token hash is a valid token hash.
    # Example:
    #   token_hash = "$2a$10$ArjX0tskRIa5Z/Tmapy59OCiAXLStfhrCiaDz.8fCb6hnX1gJ0p/2"
    #   DeviseTokenAuth::TokenFactory.valid_token_hash?(token_hash)
    #   => true
    def self.valid_token_hash? token_hash
      !!BCrypt::Password.valid_hash?(token_hash)
    end

    # Compares a potential token against the token hash. Returns true if the token is the original token, false otherwise.
    # Example:
    #   token = "4wZ9gcc900rMQD1McpcSNA"
    #   token_hash = "$2a$10$ArjX0tskRIa5Z/Tmapy59OCiAXLStfhrCiaDz.8fCb6hnX1gJ0p/2"
    #   DeviseTokenAuth::TokenFactory.token_hash_is_token?(token_hash, token)
    #   => true
    def self.token_hash_is_token? token_hash, token
      BCrypt::Password.new(token_hash).is_password?(token)
      rescue
        false
    end

    # Creates a token instance with instance variables equal nil.
    # Example:
    #   DeviseTokenAuth::TokenFactory.new
    #   => #<struct DeviseTokenAuth::TokenFactory::Token client_id=nil, token=nil, token_hash=nil, expiry=nil>
    def self.new
      Token.new
    end

    Token = Struct.new(:client_id, :token, :token_hash, :expiry) do
      # Sets all instance variables of the token to nil. It is faster than creating new empty token.
      # Example:
      #   token.clear!
      #   => true
      #   token
      #   => #<struct DeviseTokenAuth::TokenFactory::Token client_id=nil, token=nil, token_hash=nil, expiry=nil>
      def clear!
        self.size.times { |i| self[i] = nil }
        true
      end
    end
  end
end

As you can see the code of TokenFactory is provided with examples. Let's take a look another changes.
2. Order of Modules
Order of modules should be:

Third-party dependencies.
The main module.
Own modules.

require "devise"

module DeviseTokenAuth
end

require "devise_token_auth/engine"
require "devise_token_auth/controllers/helpers"
require "devise_token_auth/controllers/url_helpers"
require "devise_token_auth/url"
require "devise_token_auth/token_factory"

3. Token Cost
As you notice now the value of token cost is changable. If cost is not provided BCrypt uses default cost that is 10. DeviseTokenAuth used this value. In this way this value is left as default value for token_cost parameter if no another specified. Behavior of DeviseTokenAuth and our expectations have not changed.
devise_token_auth/lib/devise_token_auth/engine.rb
  self.token_cost = 10

For testing default value of token cost is set to 4 which is minimum value of token_cost. For current projects DeviseTokenAuth initialization file should be updated. The next code should be added:
config.token_cost = Rails.env.test? ? 4 : 10

On a PC tests were passed in 00:01:18 before TokenFactory implementation were made, but after tests are passed in 00:00:15. Wow!
Thanks @yury-dymov for his suggestion.
4. Need for Speed
To understand how server load grows in dependence of cost and compare time for each token cost look at further benchmark. Attention! This benchmark will be passed in about 1 hour.
require 'benchmark'

n = 10_000
range = 4..11
token = DeviseTokenAuth::TokenFactory.token

Benchmark.bm do |x|
  range.each do |cost|
    x.report("cost: #{cost}") do
      n.times { DeviseTokenAuth::TokenFactory.token_hash(token, cost) }
    end
  end
end
                user     system      total        real
cost: 4    12.090000   0.000000  12.090000 ( 12.094996)
cost: 5    32.660000   0.020000  32.680000 ( 32.696124)
cost: 6    64.500000   0.000000  64.500000 ( 64.525920)
cost: 7   126.130000   0.020000 126.150000 (126.199861)
cost: 8   250.230000   0.020000 250.250000 (250.334909)
cost: 9   496.750000   0.020000 496.770000 (496.930617)
cost: 10  991.610000   0.070000 991.680000 (991.979662)
cost: 11 1981.270000   0.130000 1981.400000 (1981.973634)

For generating a random URL-safe string TokenFacotry uses SecureRandom.urlsafe_base64. It uses 64 different symbols (A-Z, a-z, 0-9, "-"" and "_") to generate a string which length is 22 symbols by default.
Look at Table 1 on page 10 of A Future-Adaptable Password Scheme. There is provided some data about a password length, a character set, and password searching time. The most accectable case is in column '62 mixed case alphanumeric' of Table 1. To search a password with length of 9 and compiled from 62 character set is needed about 1786 years.
Some calculations(password length ** number of character set):
 9**62          =<PHONE_NUMBER>93068928043467566190278008218249525830565939618481
22**64          =<PHONE_NUMBER>4625049113929522866489193994903509482752292106926951132169536346070980755456
22**62          =<PHONE_NUMBER>12861671722994881955556185939883284055273330799435849446631273442295414784
22**64 - 22**62 =<PHONE_NUMBER>4512187442206527984533637808963626198697018776127515282722905072628685340672

Notice, that 2 symbols got many additional combinations. Keep in mind that token is generating random strings which are not such a predictable as user passwords.
Let's gather all information in one place:

Characteristic
Token
Password*

length
22
9

combinations
22*64
9**62

expire
2 weeks
never

hardware
fast
slow

searching
?
1786 years

*data from Table 1 of the scheme
Do you still think that a 22 length token that is expired in 2 weeks must be encrypted as a weak password that is stored eternity?
Reduce token cost when create a token with short lifespan.
5. new vs clear!
If you need to get a Token object to be empty you should choice clear! instead of creating new object. Carry on using the same Token object.
token = DeviseTokenAuth::TokenFactory.create
token = DeviseTokenAuth::TokenFactory.new

# or

token = DeviseTokenAuth::TokenFactory.create
token.clear!

require 'benchmark'

n = 10_000_000
tokens = []
token = DeviseTokenAuth::TokenFactory.create(cost: 4)
n.times { tokens << token.dup;nil }

Benchmark.bm do |x|

  tokens1 = tokens.dup
  x.report("new") do
    tokens1.each do |token|
      token = DeviseTokenAuth::TokenFactory.new
    end
  end

  tokens2 = tokens.dup
  x.report("clear!") do
    tokens2.each do |token|
      token.clear!
    end
  end
end; nil

            user     system      total        real
new     7.200000   0.000000   7.200000 (  7.201486)
clear!  4.680000   0.000000   4.680000 (  4.686113)

6. Deprecations
Tests and other code are not touched to show that with TokenFactory all test are passed.
There is only one. The method token_lifespan and the tests that covers it. TokenFactory methods accept lifespan parameter directly.
app/models/devise_token_auth/concerns/user.rb
def token_lifespan
  DeviseTokenAuth.token_lifespan
end

7. Override it totally!
You can override any method of TokenFactory. You can even implement any crypto algorithm you like to generate token hash or just generate a token the way you like.
module DeviseTokenAuth
  module TokenFactory

    def self.client_id
      # https://ruby-doc.org/stdlib-2.5.0/libdoc/securerandom/rdoc/Random/Formatter.html#method-i-uuid
      SecureRandom.uuid
    end

  end
end

token = DeviseTokenAuth::TokenFactory.create
token.client_id # => "9c6fa3ae-e54d-4c74-b5f7-bf1345880190"

8. Summary
Now it is only TokenFactory can generate tokens and provides couple methods to validate some token's values. And only TokenFacotry knows how Token works. It returns Struct object and if necessary can be replaced by a class. Also some new methdods may be added and current methods could be overriden. TokenFactory module should considering as a some base for further improvements of DeviseTokenAuth.
Thanks for reading!

@dks17 It's a pity losing your work here, do you plan to rebase it or should we close it?

@MaicolBen Ok. I will rebase it.

@dks17 I guess you want mongo merged before this one, 1.0.0 is out so I can merge these things

@MaicolBen  Ok. I will rebased it after the mongoid support #1209 is merged.

@MaicolBen It's rebased.
It has been also updated. Please see UPDATE section at the top message.

@MaicolBen Fixed and rebased. Looks ready to merge.


quoting fix

Fixes #1114
Note that Windows test is now failing and that is intended, there's a preexisting bug there that we need to fix.
Related: https://github.com/nerdvegas/rez/pull/1111

Continuing https://github.com/nerdvegas/rez/pull/1116#issuecomment-893049448 here. :)
In #1116, I changed the test to match result with shlex joined input, and it passed in Windows but actually failed in other OS.
import subprocess
from shlex import join  # new in Python 3.8, just for quick testing

>>> subprocess.check_output(join(['echo', 'hey you']), shell=True, text=True).strip()
# Windows CMD
"'hey you'"
# In my WSL (Ubuntu)
'hey you'

# however..
>>> join(['echo', 'hey you'])
"echo 'hey you'"  # same result for both platform

So maybe we should match the result with actual shell output plus shlex joined input ? Like
def popen(args, shell=False):
    process = subprocess.Popen(
        args, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
        stderr=subprocess.PIPE, universal_newlines=True, shell=shell
    )
    sh_out = process.communicate()
    return sh_out[0].strip()

a = popen([rez_env_exec, "--", "echo", txt])
b = popen(shlex_join(["echo", txt]), shell=True)

self.assertEqual(a, b)

Kind of stupid but seems fair ?
Just for proving the concept, I have updated my branch and CI testing passed in both Ubuntu and Windows.

I dunno, that seems oddly circular... all we're really doing at that point is verifying that rez-env is running the given command in a shell. Also isn't there no guarantee that the current shell (ie whatr raw subprocess will use if shell=True) will match the shell rez is using?
I'm starting to think we simply need a cmd caveat here.

Yeah.. :(
Or, how about just validate the test cases with hard coded results ? Like..
    @per_available_shell()
    @install_dependent()
    def test_rez_env_output(self):

        cases = {
            "hey": {},
            "hey you": {"cmd": '"hey you"'},
            ...
        }

        def _test(txt):
            ...
            expect = cases[txt].get(config.default_shell, txt)
            self.assertEqual(sh_out[0].strip(), expect)

        _test("hey")  # simple case
        _test("hey you")  # with a space


fix outputs of Kernel.#puts and IO#puts when args include Array class or subclass

According to ISO/IEC 30170 <IP_ADDRESS>.13, if args of Kernel.#puts and IO#puts include Array instance each element should output indivisually.
But mruby seems to output a result of to_s method similarly other Object.
example:

Ruby 2.6.5 on Ubuntu 18.04.3 LTS

$ ruby -e 'puts "foo", "bar", "baz"'
foo
bar
baz

$ ruby -e 'puts ["foo", "bar", "baz"]'
foo
bar
baz

$ ruby -e 'puts "foo", ["bar", "baz"]'
foo
bar
baz

mruby (master branch: 8710a22c31a5094627e33156d72dbd610893c3f4) on Ubuntu 18.04.3 LTS

$ bin/mruby -e 'puts "foo", "bar", "baz"'
foo
bar
baz

$ bin/mruby -e 'puts ["foo", "bar", "baz"]'
["foo", "bar", "baz"]

$ bin/mruby -e 'puts "foo", ["bar", "baz"]'
foo
["bar", "baz"]

mruby (this PR was patched) on Ubuntu 18.04.3 LTS

$ bin/mruby -e 'puts "foo", "bar", "baz"'
foo
bar
baz

$ bin/mruby -e 'puts ["foo", "bar", "baz"]'
foo
bar
baz

$ bin/mruby -e 'puts "foo", ["bar", "baz"]'
foo
bar
baz

@matz What do you think about this CRuby incompatibility?
(I talked to @matz about this incompatibility yesterday and found this pull request just now. :-)

I consider this behavior as a design mistake in the early stage. I need more time to make a big decision to follow the ISO or fix the mistake. For the moment, please use puts *ary.


flutter analyze fails on v1.1.8

After upgrading to v1.1.8 and running analyze, the analyze is failing with the following error:
flutter analyze
Analyzing my-flutter...

  error - Target of URI doesn't exist: 'package:blue_thermal_printer/' - lib\generated_plugin_registrant.dart:8:8 - uri_does_not_exist
  error - Undefined name 'BlueThermalPrinterPlugin' - lib\generated_plugin_registrant.dart:25:3 - undefined_identifier

flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel stable, 2.5.1, on Microsoft Windows [Version 10.0.19043.1266], locale en-GB)
[√] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
[√] Chrome - develop for the web
[√] Android Studio (version 2020.3)
[√] Connected device (3 available)

• No issues found!

I'm not sure what this file does but seems very web related:
The generated file looks like this:
//
// Generated file. Do not edit.
//

// ignore_for_file: directives_ordering
// ignore_for_file: lines_longer_than_80_chars

import 'package:blue_thermal_printer/';
import 'package:firebase_auth_web/firebase_auth_web.dart';
import 'package:firebase_core_web/firebase_core_web.dart';
import 'package:firebase_messaging_web/firebase_messaging_web.dart';
import 'package:fluttertoast/fluttertoast_web.dart';
import 'package:google_maps_flutter_web/google_maps_flutter_web.dart';
import 'package:image_picker_for_web/image_picker_for_web.dart';
import 'package:package_info_plus_web/package_info_plus_web.dart';
import 'package:shared_preferences_web/shared_preferences_web.dart';
import 'package:url_launcher_web/url_launcher_web.dart';
import 'package:video_player_web/video_player_web.dart';
import 'package:wakelock_web/wakelock_web.dart';

import 'package:flutter_web_plugins/flutter_web_plugins.dart';

// ignore: public_member_api_docs
void registerPlugins(Registrar registrar) {
  BlueThermalPrinterPlugin.registerWith(registrar);
  FirebaseAuthWeb.registerWith(registrar);
  FirebaseCoreWeb.registerWith(registrar);
  FirebaseMessagingWeb.registerWith(registrar);
  FluttertoastWebPlugin.registerWith(registrar);
  GoogleMapsPlugin.registerWith(registrar);
  ImagePickerPlugin.registerWith(registrar);
  PackageInfoPlugin.registerWith(registrar);
  SharedPreferencesPlugin.registerWith(registrar);
  UrlLauncherPlugin.registerWith(registrar);
  VideoPlayerPlugin.registerWith(registrar);
  WakelockWeb.registerWith(registrar);
  registrar.registerMessageHandler();
}

you can try and exclude generated_plugin_registrant.dart from analysis, this worked fine for me.
just add in project root a file named analysis_options.yaml with the following content:
analyzer:
  exclude: [lib/generated_plugin_registrant.dart]

reference: https://betterprogramming.pub/dont-panic-when-flutter-generates-a-bad-file-for-you-e5e314c2b01

I've just updated flutter. The issue remains in 2.5.2 too:
flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel stable, 2.5.2, on Microsoft Windows [Version 10.0.19043.1266], locale en-GB)
[√] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
[√] Chrome - develop for the web
[√] Android Studio (version 2020.3)
[√] Connected device (3 available)

• No issues found!

This issue was even causing me in building the android app as well not letting me to build my web also. I contacted the developer of this package and he upgraded the version from 1.1.9 to 1.2.0 and now everything works fine. Thanks to the developer for his wonderful support.


Remove exit statuses that are never returned

Change
The README describes exit status 2, 3, 4 for each error. But the code to return those statuses have disappeared at https://github.com/x-motemen/git-pr-release/commit/7afcbc47b0ffc36f4cdd69537b7e911948b8e191 and they are never returned since v1.2.0.
Therefore, I'd say the description on README is obsolete and should be updated.

Yes, we can remove it. Thanks.
Currently, when a request fails, an exception is raised, a stack trace is displayed, and the error ends. As a future enhancement, it would be better to handle them and check the response status to make the error easier to understand.

thanks!


Update scala3-library to 3.1.3-RC1

Updates org.scala-lang:scala3-library from 3.1.2-RC3 to 3.1.3-RC1.
GitHub Release Notes - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.scala-lang", artifactId = "scala3-library" } ]

labels: library-update, early-semver-pre-release, semver-spec-pre-release, commit-count:1

Superseded by #1133.


Bugfix - Add asset helper to background images

Resolves #13
Notes:

Also adds the required asset helper to some background images

Going to rename branch and create a new PR


Old unused-localtype-defs warning now trips up on Clang 3.6

From a prior email discussion:
``Re: OpenImageIO Release-1.4.15
Oh, I get it!
In the main CMakeLists, circa line 88 in RB-1.4 (and line 94 in master), it says
add_definitions ("-Wunused-local-typedefs")

But this is backwards. I think we want
add_definitions ("-Wno-unused-local-typedefs")

Richard, can you give that a quick try on your end and see if it suppresses the warnings? If so, I'll add it on my end.''
With the release of Clang 3.6 the same GCC 4.8 warnings suppressed are now happening with Clang.
I added:
add_definitions ("-Wno-unused-local-typedefs")
under the CMakeLists.txt line 95
if (CMAKE_COMPILER_IS_GNUCC AND (NOT CMAKE_COMPILER_IS_CLANG) AND (NOT ${GCC_VERSION} VERSION_LESS 4.8))
# suppress a warning that Boost::Python hits in g++ 4.8
add_definitions ("-Wno-error=unused-local-typedefs")
add_definitions ("-Wno-unused-local-typedefs")  // Line 95
Now everything compiles cleanly, including the testing tree and all tests. Python/Python3 with boost compiles cleanly now with libboost 1.55 Debian.
//Compile with clang libc++
USE_LIBCPLUSPLUS:BOOL=OFF
Will keep lib++ use off until that's resolved.

Good lord. Pulling trunk and you still don't have the following added to CMakeLists.txt
add_definitions ("-Wno-unused-local-typedefs")
Without it and Clang 3.6 and newer craps the bed on BOOST PYTHON.

PR to fix this in #1182.

Committed the fix to master and RB-1.5.


Xnero: Watch Minnit Chat

Xnero requests the watch of the watch_keyword Minnit Chat. See the MS search here and the Stack Exchange search in text, in URLs, and in code.

Rejected by tripleee in Charcoal HQ. Reason: 'sorry, I was too quick again'

Minnit Chat has been seen in 1 true positive, 0 false positives, and 0 NAAs.


Round duration for provider ingestion completion message

Fixes

Fixes #373 by @zackkrida
Description

This PR rounds the duration value for successful provider runs to 2 decimal places. These runs are usually on the order of minutes/hours/days, so we don't need more than centisecond resolution.
I also added some tests, which might be a bit overkill, but it couldn't hurt :woman_shrugging:
Before
*Provider*: `staten_museum`
*Media Type*: `image`
*Number of Records Upserted*: 46102
*Duration of data pull task*:<PHONE_NUMBER>2899894

* _Duration includes time taken to pull data of all media types._

After
*Provider*: `staten_museum`
*Media Type*: `image`
*Number of Records Upserted*: 46102
*Duration of data pull task*: 162.37

* _Duration includes time taken to pull data of all media types._

Testing Instructions

just test
Optionally, run the Staten Museum DAG to completion (should only take a couple of minutes) and observe that the message produced in report_load_completion is appropriately rounded.
Checklist

[x] My pull request has a descriptive title (not a vague title like Update index.md).
[x] My pull request targets the default branch of the repository (main) or a parent feature branch.
[x] My commit messages follow best practices.
[x] My code follows the established code style of the repository.
[x] I added or updated tests for the changes I made (if applicable).
[ ] I added or updated documentation (if applicable).
[x] I tried running the project locally and verified that there are no visible errors.

Developer Certificate of Origin

Developer Certificate of Origin
Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.

Minor nit, could we add a unit like 's' or 'seconds' for folks?

That's a great point! Adding that now!

Okay, I've actually taken a bit of a different tack here and instead humanized the entire duration value. The results now look like this:

The flip side is that we lose all sub-second resolution which, again, I don't really foresee being an issue (and if we want to do fine-grain analysis, we'll have the full floats stored in the XComs table anyway). What do you think @zackkrida @stacimc ?

New values look great, I think that's all the resolution we need 🚀


Adding tracking of properties with relevant events.

This is mostly a second take on the Environment Variables PR which I'm sure will soon be abandoned.
This change introduces opt-in functionality that will track property usage and generate three events:

Environment Variables Read  (new)
Uninitialized Properties Read (new)
Property Reassigned (already exists)

Opt-in is via the environment variable, MsBuildLogPropertyTracking set to "1".
It's implemented via a new class named PropertyTrackingEvaluatorDataWraper that implements IEvaluatorData<> and wraps the Evaluator's instance of IEvaluatorData<> to intercept get and set property calls.
Resolves #3432
Related to #2713

@KirillOsenkov FYI

Some big questions before diving into the details:

Does this really need to be opt-in? I expected these to be produced all the time. Is the tracking extremely expensive?
Did you investigate the scope option we discussed earlier? Why did you go this different route?

Thanks for responding, Rainer.
For opt-in, we didn't want each project to be storing a hashset of up to 1K properties each for this. This includes not just environment reads, but reads of uninitialized properties and it adds up.
For scope, we never discussed what you meant by "Build a scope environment" in our mail thread. I asked for clarification but didn't receive a response. In the meantime, @jeffkl , @cdmihai , @AndyGerlicher , @smera , and I contributed to what you see here. Can you explain what you had in mind?

I think using the existing scope mechanisms would resolve the impact-of-tracking concerns, especially if the uninitialized-property code follows the existing flag.
MSBuild doesn't have much notion of a scope, since all properties and items within a project are accessible almost all the time. But there is one:
https://github.com/microsoft/msbuild/blob/404539a96a51ab801862fefad5e987ee6b93e9ec/src/Build/BackEnd/Components/RequestBuilder/Lookup.cs#L20-L54
The actual Scope is later but that comment is much more informative:
https://github.com/microsoft/msbuild/blob/404539a96a51ab801862fefad5e987ee6b93e9ec/src/Build/BackEnd/Components/RequestBuilder/Lookup.cs#L1290
It's not clear to me offhand whether that can be directly used at evaluation time, or a separate related implementation would be required.

AB#1550971


Ores

i decided to give this mod a try but soon after start i found i cant even mine any mod ore. they just not harvestable with anything - i tried pickaxe, shovel, just hands and got nothing, ores just do not drop anything. this is intended to be so?

I guess I forget to add a proper harvest tool for them.
However... school work is always annoying. I will try to release a new versions in next few days...

Just a reminder: you'll gonna need iron shovel for carnallite, iron pick for dewalquite and fluorapaitite.

i see you already commit a fix for ores, but are you going to make new build with this (and other) fix any time sone?

Still fixing other issues. New version will be released soon (tm)

https://github.com/FrogCraft-Rebirth/FrogCraft-Rebirth/releases/tag/0.11.0


Duplicate mails for alerts

We have setup several rules for alerts that should send a mail whenever it is triggered.
However, whenever a rule is triggered, it sends out 2 to 4 identical mails. The number of matches or hits reported does not match the number of mails send (sometimes it can, but other times there are eg 4 matches/hits with only 2 mails, or 4 mails with only 1 match/hit).
Both aggregation and realert (on the log-field) are set to 1 min and work "properly" because multiple alerts are combined into a single mail (that is repeated 2 to 4 times) and for matches with the same log-filed, no new alert is sent within a minute. The number of alerts bundled by the aggregation is also irrelevant (eg 1 alert is sent 4 times, while 10 alerts are only sent twice).
All our rules are configured similary to this:
name: alertRule1
index: logstash-*
type: any
filter:
- and:
    - query:
        query_string:
            default_field: 'log'
            query: '*someQuery* AND NOT some filters'
realert:
    minutes: 1
query_key: 'log'
aggregation:
    minutes: 1
alert:
- "email"
alert_subject: 'ElastAlert: ALERT!'
email<EMAIL_ADDRESS>
The different rules only differ in query and name.
We are running the latest ElastAlert pulled from the master branch (1 instance) with 3 ES instances.
run_every is configured to 1 minute and buffer_time is globally configured to 15 minutes.
ElastAlert is however throwing a bunch of errors:
17, 15:14:57.000	    ProcessController:  ERROR:root:Failed to delete alert AV3wU03_0hgSx0jSdpKp at 2017-08-17T13:13:57.598681Z
August 17th 2017, 15:14:57.000
August 17th 2017, 15:14:57.000
August 17th 2017, 15:14:57.000	    ProcessController:  WARNING:elasticsearch:DELETE http://elasticsearch-logging.tools.svc.cluster.local:9200/elastalert_status/elastalert/AV3wU03_0hgSx0jSdpKp [status:404 request:0.032s]
August 17th 2017, 13:11:29.000	11:11:29.861Z  INFO elastalert-server: Routes:  Successfully handled GET request for '/rules'.
August 17th 2017, 12:30:47.000	10:30:47.905Z ERROR elastalert-server:
August 17th 2017, 12:30:47.000	10:30:47.988Z ERROR elastalert-server:
August 17th 2017, 12:30:47.000	    ProcessController:  WARNING:elasticsearch:DELETE http://elasticsearch-logging.tools.svc.cluster.local:9200/elastalert_status/elastalert/AV3vvQb20hgSx0jSaWe8 [status:404 request:0.008s]
August 17th 2017, 12:30:47.000
August 17th 2017, 12:30:47.000	    ERROR:root:Error fetching aggregated matches: TransportError(404, u'{"found":false,"_index":"elastalert_status","_type":"elastalert","_id":"AV3vve-ZzdiriMCxjrjC","_version":3,"_shards":{"total":2,"successful":2,"failed":0}}')
August 17th 2017, 12:30:47.000	    ERROR:root:Failed to delete alert AV3vvQb20hgSx0jSaWe8 at 2017-08-17T10:29:49.006693Z
August 17th 2017, 12:30:47.000
August 17th 2017, 12:30:47.000	    ProcessController:  WARNING:elasticsearch:DELETE http://elasticsearch-logging.tools.svc.cluster.local:9200/elastalert_status/elastalert/AV3vve-ZzdiriMCxjrjC [status:404 request:0.012s]
August 17th 2017, 12:28:48.000	        raise HTTP_EXCEPTIONS.get(status_code, TransportError)(status_code, error_message, additional_info)
August 17th 2017, 12:28:48.000	    ProcessController:  ERROR:root:Error writing alert info to Elasticsearch: TransportError(400, u'illegal_argument_exception', u'[elasticsearch-logging-v1-1][<IP_ADDRESS>:9300][indices:data/write/index]')
August 17th 2017, 12:28:48.000	      File "elastalert/elastalert.py", line 1377, in writeback
August 17th 2017, 12:28:48.000	      File "/usr/local/lib/python2.7/dist-packages/elasticsearch/client/utils.py", line 73, in _wrapped
August 17th 2017, 12:28:48.000	        self._raise_error(response.status_code, raw_data)
August 17th 2017, 12:28:48.000	      File "/usr/local/lib/python2.7/dist-packages/elasticsearch/connection/base.py", line 125, in _raise_error
August 17th 2017, 12:28:48.000
August 17th 2017, 12:28:48.000	        doc_type=doc_type, body=body)
August 17th 2017, 12:28:48.000	      File "/usr/local/lib/python2.7/dist-packages/elasticsearch/transport.py", line 312, in perform_request
August 17th 2017, 12:28:48.000	      File "/usr/local/lib/python2.7/dist-packages/elasticsearch/connection/http_requests.py", line 90, in perform_request
August 17th 2017, 12:28:48.000	        status, headers, data = connection.perform_request(method, url, params, body, ignore=ignore, timeout=timeout)
August 17th 2017, 12:28:48.000
August 17th 2017, 12:28:48.000	10:28:48.974Z ERROR elastalert-server:
August 17th 2017, 12:28:48.000	    Traceback (most recent call last):
August 17th 2017, 12:28:48.000	      File "/usr/local/lib/python2.7/dist-packages/elasticsearch/client/__init__.py", line 298, in index
August 17th 2017, 12:28:48.000	        _make_path(index, doc_type, id), params=params, body=body)
August 17th 2017, 12:28:48.000	        return func(*args, params=params, **kwargs)
August 17th 2017, 12:28:48.000	10:28:48.975Z ERROR elastalert-server:
August 17th 2017, 12:28:48.000	    ProcessController:  WARNING:elasticsearch:POST http://elasticsearch-logging.tools.svc.cluster.local:9200/elastalert_status/silence [status:400 request:0.011s]
August 17th 2017, 12:28:48.000	    RequestError: TransportError(400, u'illegal_argument_exception', u'[elasticsearch-logging-v1-1][<IP_ADDRESS>:9300][indices:data/write/index]')
August 17th 2017, 12:28:47.000	    ProcessController:  WARNING:elasticsearch:POST http://elasticsearch-logging.tools.svc.cluster.local:9200/elastalert_status/silence [status:400 request:0.009s]
August 17th 2017, 12:28:47.000	        return func(*args, params=params, **kwargs)
August 17th 2017, 12:28:47.000	        _make_path(index, doc_type, id), params=params, body=body)
August 17th 2017, 12:28:47.000	    Traceback (most recent call last):
August 17th 2017, 12:28:47.000	        doc_type=doc_type, body=body)
August 17th 2017, 12:28:47.000	      File "/usr/local/lib/python2.7/dist-packages/elasticsearch/transport.py", line 312, in perform_request
August 17th 2017, 12:28:47.000	        self._raise_error(response.status_code, raw_data)

August 17th 2017, 12:28:47.000	    ProcessController:  ERROR:root:Error writing alert info to Elasticsearch: TransportError(400, u'illegal_argument_exception', u'[elasticsearch-logging-v1-0][<IP_ADDRESS>:9300][indices:data/write/index]')
August 17th 2017, 12:28:47.000	      File "/usr/local/lib/python2.7/dist-packages/elasticsearch/client/__init__.py", line 298, in index
August 17th 2017, 12:28:47.000	10:28:47.670Z ERROR elastalert-server:
August 17th 2017, 12:28:47.000	        raise HTTP_EXCEPTIONS.get(status_code, TransportError)(status_code, error_message, additional_info)
August 17th 2017, 12:28:47.000	      File "elastalert/elastalert.py", line 1377, in writeback
August 17th 2017, 12:28:47.000	      File "/usr/local/lib/python2.7/dist-packages/elasticsearch/client/utils.py", line 73, in _wrapped
August 17th 2017, 12:28:47.000	      File "/usr/local/lib/python2.7/dist-packages/elasticsearch/connection/base.py", line 125, in _raise_error
August 17th 2017, 12:28:47.000	    RequestError: TransportError(400, u'illegal_argument_exception', u'[elasticsearch-logging-v1-0][<IP_ADDRESS>:9300][indices:data/write/index]')
August 17th 2017, 12:28:47.000
August 17th 2017, 12:28:47.000	      File "/usr/local/lib/python2.7/dist-packages/elasticsearch/connection/http_requests.py", line 90, in perform_request
August 17th 2017, 12:28:47.000	10:28:47.669Z ERROR elastalert-server:
August 17th 2017, 12:28:47.000
August 17th 2017, 12:28:47.000	        status, headers, data = connection.perform_request(method, url, params, body, ignore=ignore, timeout=timeout)
August 17th 2017, 12:27:48.000	      File "/usr/local/lib/python2.7/dist-packages/elasticsearch/connection/base.py", line 125, in _raise_error
August 17th 2017, 12:27:48.000	      File "elastalert/elastalert.py", line 1377, in writeback
August 17th 2017, 12:27:48.000	      File "/usr/local/lib/python2.7/dist-packages/elasticsearch/client/utils.py", line 73, in _wrapped
August 17th 2017, 12:27:48.000	        return func(*args, params=params, **kwargs)
August 17th 2017, 12:27:48.000
August 17th 2017, 12:27:48.000	      File "/usr/local/lib/python2.7/dist-packages/elasticsearch/connection/http_requests.py", line 90, in perform_request

We also use the kibana-plugin from BitSensor, so if it's possible some of the errorlogs above are from that.

@inkromind
Please set the realert:0 and see if you stop getting duplicate emails .

@sathishdsgithub
With realert to 0 we get multiple alerts for similar matches, which is not something we want. We first had this and then we also got duplicate mails.
Isn't the num_events property only relevant when using the frequency-alert type? At least, that's what I get from the docs.
We were using this before and set the num_events property to 1. Also no joy as it had the same effect as the any alert type we are using now.
That said, we have been tweaking the query over the past couple of days to filter out more false positives and somehow (we don't know why) the duplicate mails stopped... it seems that depending on which/how many results you get, the duplicate mails is triggered.

@Inkromind
Can you share the rule here ?

@Inkromind
Can you share the rule here ?

One of the rules started sending out multiple mails again. I did not change anything to the rule.
This is the rule
name: Exception
index: logstash-*
type: any
filter:
- and:
    - query:
        query_string:
            default_field: 'log'
            query: 'container_name:"app" AND namespace_name:"test" AND *Exception* AND NOT "Invalid session ID" AND NOT Session AND NOT "token invalid" AND "java.net.UnknownHostException: local" AND NOT com.atomikos.icatch.RollbackException AND NOT "WARN ForbiddenException" AND NOT org.apache.camel.processor.validation.SchemaValidationException AND NOT com.atomikos.icatch.jta.TransactionImp.rethrowAsJtaRollbackException AND NOT javax.transaction.RollbackException AND NOT com.atomikos.icatch.RollbackException AND NOT "java.lang.IllegalArgumentException: No enum constant" AND NOT org.springframework.orm.jpa.JpaOptimisticLockingFailureException AND NOT org.eclipse.persistence.exceptions.OptimisticLockException AND NOT "One or more objects cannot be updated because it has changed" AND NOT "org.quartz.SchedulerException: Job threw an unhandled exception"'
realert:
    minutes: 1
query_key: 'log'
aggregation:
    minutes: 1
alert:
- "email"
alert_subject: 'ElastAlert: Exception'
email: "<obfuscated>"

HI,
@Inkromind
Was this ever resolved?
If it was, what was the solution?
Thanks :-)


refactor(web): v0.68.0 32-bit crypto backend

Swapping our internal cryptography used in the circuits to use our new decaf377 backend in the web. There's still a performance disparity with the old decaf377 backend that needs to be investigated.
This is currently blocked by https://github.com/penumbra-zone/penumbra/pull/3806.

This will remain as a draft PR and be paused for a few weeks until certain changes to arkworks land.

closing due to performance regressions, and shifting scope to V2 due to stale progress from Arkworks team.


[BACKLOG-36073] Fix dependency scope so all of kettle doesn't get added

to the plugin.

:white_check_mark: Build finished in 1m 36s
Build command:
mvn clean verify -B -e -Daudit -amd -pl pentaho-mongodb-plugin

:exclamation: No tests found!
:information_source:  This is an automatic message


Encode pNext fields without valid extensions as null when encoding

At least one game in the wild passes (partially) uninitialized memory to vkEnumeratePhysicalDeviceGroups; as a result, gfxrecon crashes immediately on startup trying to traverse the invalid pNext chain. This prevents using gfxrecon for driver regression tests, which is one of the acceptable use cases.
Even though the Vulkan spec requires these to be NULL, such errors tend to be overlooked because drivers often just ignore pNext fields where values are not expected.
Even if a spec update adds extension to a struct, it's unlikely that the extension struct is known to us, so just skip encoding pNext if we don't expect one.

Author ishitatsuyuki not on autobuild list. Waiting for curator authorization before starting CI build.

 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.

Are you able to share the names of some of the titles and platforms you've seen this on so we can evaluate whether we need to expand our test coverage?

The app is Quake II RTX (Linux native). You'll need to disable Steam runtime to attach gfxrecon, instructions are as follows:
Right click Steam Linux Runtime - Solider in steam -> browse local file -> edit _v2-entry-point and add:
shift 2
exec "$@"

I'm not aware of any other games that has similar pNext bug. When I wrote the commit message I was under the impression that other tools (Fossilize, RenderDoc) goes through some length to avoid stuff like this but looking at their commit history again I couldn't find anything significant so I might be wrong.

Great that it is open source.
I can confirm that they do not zero out their pNext in this case:
       VkDeviceGroupDeviceCreateInfo device_group_create_info;
	VkPhysicalDeviceGroupProperties device_group_info; // Whoops, struct is not zeroed. <-----------------------

	if(num_device_groups > 0) {
		// we always use the first group
		num_device_groups = 1;
		_VK(vkEnumeratePhysicalDeviceGroups(qvk.instance, &num_device_groups, &device_group_info)); // Reference that struct with undefined value in its pNext <---------------

src/refresh/vkpt/main.c
This must fail validation and also trigger warnings in some C++ compilers.
I raised an issue on their repo but that doesn't mean we shouldn't be robust against such errors.

@ishitatsuyuki Nice diagnosis!
This is definitely invalid Vulkan (https://registry.khronos.org/vulkan/specs/1.3-khr-extensions/html/vkspec.html#VUID-VkPhysicalDeviceGroupProperties-pNext-pNext).  Do the Vulkan Validation Layers print anything?
This PR solves the problem for all implementations based on vk.xml with the same version that GFXR used in its codegen.  But this means we won't try to encode (and skip over) any valid extension structs from newer vk.xml than the built GFXR.  That seems really unlikely to happen in practice, but this is also a lot of change for one broken app (as nice as it is to test Quake II RTX).
I think I'm unlikely to approve this PR in its current form.  Instead, could we wrap this with a runtime variable (something like GFXRECON_DONT_DESCEND_INVALID_PNEXT or something more descriptive and less awkward) and if that's false but a struct with no extensions has a non-nullptr pNext, print a warning describing the situation and that we're likely to crash and if so try again with the variable set to true?

Yeah, after rechecking it does trip validation. Hence such kind of violation in practice might be quite more rare than I thought.
I'll try make this parameterized as you mentioned. Since all options are namespaced right now, maybe a prefix like GFXRECON_WORKAROUND_ would make sense? Don't have a good idea for the concrete name yet, though.

Author ishitatsuyuki not on autobuild list. Waiting for curator authorization before starting CI build.

@ishitatsuyuki - is this still something you have time to work on so we can close it out?


Remove version check for root cmds

Hey guys, this PR contains:

Addi 5 seconds of a timeout to avoid hanging connection
Remove version check for root calls

@christian-kreuzberger-dtx  @warber
FIxing #2505

Codecov Report

Merging #2540 into master will increase coverage by 0.89%.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##           master    #2540      +/-   ##
==========================================
+ Coverage   32.35%   33.24%   +0.89%
==========================================
  Files         204      157      -47
  Lines        9949     8972     -977
  Branches      358      185     -173
==========================================
- Hits         3219     2983     -236
+ Misses       6197     5482     -715
+ Partials      533      507      -26

Flag
Coverage Δ

#moduleA
23.09% <ø> (-0.69%)
:arrow_down:

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

Impacted Files
Coverage Δ

cli/cmd/check_endpoint_status.go
16.66% <0.00%> (-3.34%)
:arrow_down:

cli/cmd/root.go
33.33% <ø> (+11.33%)
:arrow_up:

bridge/client/app/_services/api.service.ts
10.86% <0.00%> (-0.50%)
:arrow_down:

...lient/app/project-board/project-board.component.ts
3.25% <0.00%> (-0.36%)
:arrow_down:

bridge/client/app/app.module.ts
100.00% <0.00%> (ø)

...http-loading-bar/ktb-http-loading-bar.component.ts

...notification-bar/ktb-notification-bar.component.ts

...n/bridge/client/app/_services/clipboard.service.ts

...uation-details/ktb-evaluation-details.component.ts

...tn/keptn/bridge/client/app/_models/notification.ts

... and 44 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 05c86f6...22fff3d. Read the comment docs.

Codecov Report

Merging #2540 into master will increase coverage by 0.89%.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##           master    #2540      +/-   ##
==========================================
+ Coverage   32.35%   33.24%   +0.89%
==========================================
  Files         204      157      -47
  Lines        9949     8972     -977
  Branches      358      185     -173
==========================================
- Hits         3219     2983     -236
+ Misses       6197     5482     -715
+ Partials      533      507      -26

Flag
Coverage Δ

#moduleA
23.09% <ø> (-0.69%)
:arrow_down:

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

Impacted Files
Coverage Δ

cli/cmd/check_endpoint_status.go
16.66% <0.00%> (-3.34%)
:arrow_down:

cli/cmd/root.go
33.33% <ø> (+11.33%)
:arrow_up:

bridge/client/app/_services/api.service.ts
10.86% <0.00%> (-0.50%)
:arrow_down:

...lient/app/project-board/project-board.component.ts
3.25% <0.00%> (-0.36%)
:arrow_down:

bridge/client/app/app.module.ts
100.00% <0.00%> (ø)

...keptn/keptn/bridge/client/app/_utils/date.utils.ts

...tn/keptn/bridge/client/app/_models/result-types.ts

...d/keptn/keptn/bridge/client/app/_models/service.ts

...bridge/client/app/dashboard/dashboard.component.ts

...build/keptn/keptn/bridge/client/app/app.routing.ts

... and 44 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 05c86f6...22fff3d. Read the comment docs.

Codecov Report

Merging #2540 into master will increase coverage by 0.89%.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##           master    #2540      +/-   ##
==========================================
+ Coverage   32.35%   33.24%   +0.89%
==========================================
  Files         204      157      -47
  Lines        9949     8972     -977
  Branches      358      185     -173
==========================================
- Hits         3219     2983     -236
+ Misses       6197     5482     -715
+ Partials      533      507      -26

Flag
Coverage Δ

#moduleA
23.09% <ø> (-0.69%)
:arrow_down:

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

Impacted Files
Coverage Δ

cli/cmd/check_endpoint_status.go
16.66% <0.00%> (-3.34%)
:arrow_down:

cli/cmd/root.go
33.33% <ø> (+11.33%)
:arrow_up:

bridge/client/app/_services/api.service.ts
10.86% <0.00%> (-0.50%)
:arrow_down:

...lient/app/project-board/project-board.component.ts
3.25% <0.00%> (-0.36%)
:arrow_down:

bridge/client/app/app.module.ts
100.00% <0.00%> (ø)

...client/app/_interceptors/http-error-interceptor.ts

...uild/keptn/keptn/bridge/client/app/_models/root.ts

...n/bridge/client/app/_models/http-progress-state.ts

...http-loading-bar/ktb-http-loading-bar.component.ts

...s/ktb-approval-item/ktb-approval-item.component.ts

... and 44 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 05c86f6...22fff3d. Read the comment docs.

Codecov Report

Merging #2540 into master will increase coverage by 0.89%.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##           master    #2540      +/-   ##
==========================================
+ Coverage   32.35%   33.24%   +0.89%
==========================================
  Files         204      157      -47
  Lines        9949     8972     -977
  Branches      358      185     -173
==========================================
- Hits         3219     2983     -236
+ Misses       6197     5482     -715
+ Partials      533      507      -26

Flag
Coverage Δ

#moduleA
23.09% <ø> (-0.69%)
:arrow_down:

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

Impacted Files
Coverage Δ

cli/cmd/check_endpoint_status.go
16.66% <0.00%> (-3.34%)
:arrow_down:

cli/cmd/root.go
33.33% <ø> (+11.33%)
:arrow_up:

bridge/client/app/_services/api.service.ts
10.86% <0.00%> (-0.50%)
:arrow_down:

...lient/app/project-board/project-board.component.ts
3.25% <0.00%> (-0.36%)
:arrow_down:

bridge/client/app/app.module.ts
100.00% <0.00%> (ø)

...n/bridge/client/app/_services/mock-data.service.ts

...idge/client/app/_services/notifications.service.ts

...ild/keptn/keptn/bridge/client/app/_models/stage.ts

...root-events-list/ktb-root-events-list.component.ts

...tn/keptn/bridge/client/app/_models/notification.ts

... and 44 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 05c86f6...85673f5. Read the comment docs.

Looks like unit tests are not working

@christian-kreuzberger-dtx @pedroandrade like so often, global state is evil! The unit test works in isolation but fails when executed together with all other tests, as some of them are fiddling around with the checkEndPointStatusMock variable.
Setting the variable to false before and resetting it to its old state after the test fixes the test.
This obviously is not a  fix for the actual problem - This would be: don't use global state variables at all...
I'll open create an issue for this.

@christian-kreuzberger-dtx and @warber yeah, you're right guys, global state variable is very bad, so for this PR I will set the checkEndPointStatusMock as false to make tests pass properly, but to avoid this behavior, I've got a proposal, and if you like, you can assign to me the new issue, so
it's just a draft:
type Option func(*Options)
type Options struct {
	Timeout time.Durtion
}

func WithTimeout(timeout time.Durtion) Option {
	return func(o *Options) {
		o.Timeout = timeout
	}
}

Type KeptnRequester interface {
  HealthCheck(ctx context.Context, endpoint string) error
}

type KeptnRequest struct {
	Options       Options
}

func NewKeptnRequest(options ...Option) *NewKeptnRequest {
  //Setup default values
	opt := Options{
		Timeout: 5 * time.Second,
	}

	for _, o := range options {
		o(&opt)
	}

	return &NewKeptnRequest{Options: opt}
}

and.. about the tests, we just mock the interface via dependency injection and avoid the global state vars even for timeout.
what do you think?


Cleanup warnings with Microsoft compiler

Just add a few level-4 warnings desactivations for Microsoft compiler to
prevent information spamming when built on Windows. This is particularly
useful when building GLib on Windows for example.

This repo is no longer used, all changes need to be filed against the wrapdb repo.

:+1: Thanks for the info


Wrong number of selected records, when using displayCheck

I'm submitting a ...
[x] bug report => search github for a similar issue or PR before submitting
[ ] feature request
[ ] support request => Please do not submit support request here, post on Stackoverflow or Gitter

Current behavior
When i select ALL, it should be 99 selected / 100 at bottom, as one is excepted by displayCheck
Expected behavior
It shows all 100 selected
Reproduction of the problem
http://swimlane.github.io/ngx-datatable/#chkbox-selection
On all environments and latest version

Any news on this issue?


About - Mr.R的博客 | BY Blog

https://darkeyer.github.io/about/
Every failure is leading towards success.

确认的眼神，是个的dalao_(:з)∠)_

高中搞信安的大佬,我好爱


Add loading circle to nomination page

To show that validator info is loaded from local storage and may not be up to date

can add linear progress as used in join pool to load pools incrementally


Special day prep for 2020

Fix #71
Because. Priorities.

Codecov Report

Merging #72 into master will increase coverage by 0.02%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master      #72      +/-   ##
==========================================
+ Coverage   82.14%   82.16%   +0.02%
==========================================
  Files          16       16
  Lines         801      802       +1
==========================================
+ Hits          658      659       +1
  Misses        143      143

Impacted Files
Coverage Δ

baldrick/plugins/github_pull_requests.py
80.32% <100%> (+0.32%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update bb87540...69657d9. Read the comment docs.

You have got to get the important things done!

@astrofrog , you have slightly less than a year to re-deploy. 😉  Thanks for the review, @Cadair !


Docs: Fix appwrite docs

In the appwrite implementation, it uses writePermissions and readPermissions instead of writeAccess and readAccess:
https://github.com/pankod/refine/blob/master/packages/appwrite/src/index.ts#L141

Thank you! @matipojo


feat: no libraries section

We may use an alternative solution for runtime dependency management, so we don't need Spigot to load libraries for us at this time. We just need libraries.json

Already found an alternative for this, no longer necessary to be merged. Close it if maintainers wish.
https://github.com/AlessioDP/libby/pull/23
Also a great solution.

I made the following project for the libraries section.
https://github.com/vjh0107/plugin-jar


Additional problem - linking hockey app on iOS

If you have the hockey nuget packages linked in the same iOS project as App Center packages, the project will not build. The documentation says:

Don't use any other library that provides Crash Reporting functionality

But I thought this meant to not initialize multiple error reporting systems. It wasn't clear to me that I couldn't even have the nuget packages as part of the project.
This should be added to this section.

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

ID: af635c53-8b58-a6c4-bd0f-cefb71bbfee4
Version Independent ID: c388dd37-6b0c-47f0-b2a1-58590b3d3de5
Content: Xamarin SDK Troubleshooting - Visual Studio App Center
Content Source: docs/sdk/troubleshooting/xamarin.md
Service: vs-appcenter
GitHub Login: @elamalani
Microsoft Alias: emalani

@vchelaru As I understand it, crash libraries generally initialize automatically, so that's why we have that warning. Just having the packages in your app is enough to create the problem. @elamalani please correct me if I'm wrong.

I think the problem may stem from hockey app and app center core libs using the same class names. I don't think it's tied to automatic initialization because the error was compile time, not runtime.

It does mention that, I'm arguing the clarity of the word "integrated" as that could be interpreted to mean "started" , but in this case it more broadly means added as a package.
To support my claim that this is not clear usage, the support person I spoke on the AppCenter chat told me that this is a very common issue that they have. Would be nice to help future users earlier by adding a sentence like (this includes adding nuget packages for other products like HockeyApp).


Adding ulimit nofile flag

Thanks @omerxx looks like it needs gofmt and also the build seems to have issues with a bracket somewhere :)

Looks like this PR is abandoned :/ Let me know if I needs reopened.


Update storage-moving-data.md

Requested by Divya Kamath and Passaree Pasarj.

Hi @JarrettRenshaw, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!

It looks like you're a Microsoft contributor (Jarrett Renshaw). If you're full-time, we DON'T require a Contribution License Agreement. If you are a vendor, please DO sign the electronic Contribution License Agreement. It will take 2 minutes and there's no faxing! https://cla.microsoft.com.

TTYL, MSBOT;

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

#sign-off

@JarrettRenshaw @micurd - Hi, I think you intend the following to be a link, correct?
"See Transfer data with the AzCopy Command-Line Utility to learn more."
But it is not appearing as hot or with URL info. Please include. Thanks!  #hold-off

@JarrettRenshaw @micurd This pull request is maturing, so I'll merge it. If a subsequent update is needed, a new pull request can handle that. Thanks.


refactor: use @ts-expect-error to keep error suppression up to date

Problem
Using @ts-ignore will suppress a type error, but if for some reason the type error no longer occurs in the future, it's difficult to notice this. Typically the @ts-ignore comment is left in the codebase, which can weaken the level of type checking in some cases.
Solution
Use @ts-expect-error instead. It does the same thing but also complains if it is being used to suppress an error that does not exist.
You can read more about it here

https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-9.html#-ts-expect-error-comments
https://dev.to/maafaishal/ts-expect-error-over-ts-ignore-in-typescript-5140

Good point. The snapshots have been updated now - I think this project uses a merge workflow so let me know if you would like me to squash these into one commit manually before merging.

If I understand correctly, some check is failing  because the change is large but the commented lines are not covered in tests.
It's an interesting philosophical issue for sure, but let me know if I can do something to help with it 🙂


CI: don't install scikit-bio with -e

DO NOT MERGE: This should hopefully trigger a failure with travis-ci. See #1061

Automated report from asv run
Benchmark run completed successfully. Results available at
http://powertrip.mggen.nau.edu:5000/runs/jairideout/issue-1061/html/index.html

semper fi

Automated report from asv run
Benchmark run completed successfully. Results available at
http://powertrip.mggen.nau.edu:5000/runs/jairideout/issue-1061/html/index.html

Ready for merge when tests pass and the output of travis has been reviewed

Verified Travis output, fixing issue with coverage/coveralls now

Automated report from asv run
Benchmark run completed successfully. Results available at
http://powertrip.mggen.nau.edu:5000/runs/jairideout/issue-1061/html/index.html

Output looks good! Thanks @jairideout!

Thanks for reviewing!


Add user search

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#137  👈
#136
#135
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @emilpriver and the rest of your teammates on  Graphite


Please add example how to implement security handler

Hi
This is quite newbie issue. there must be better place to aske this but I can't find. I hope someone either helps me with this by adding some documentation or points me to proper place.
I try to add my own security handler. I created default swagger project, and tested it, fine. then edit swagger file,
securityDefinitions:
  mySecKey:
    type: apiKey
    in: query
    name: sec_key

and
to paths; /hello: get: I added:
      security:
        - mySecKey: []

now running
swagger project test
gives me "Error: unknown security handler: mySecKey"
how to implement that without complately rewrite app.js as all examples shows.

This feature is not yet officially supported in swagger-node, but if you need to, you can get access to swagger-tools and register a security handler with it. See: https://github.com/apigee-127/swagger-tools/blob/master/docs/Middleware.md#swagger-security for information. Your app.js will look something like this:
SwaggerExpress.create(config, function(err, swaggerExpress) {
  if (err) { throw err; }

  // install middleware
  swaggerExpress.register(app);

  var options = { mySecKey:
    function (req, authOrSecDef, scopesOrApiKey, callback) {
      ...
    }
  };
  swaggerExpress.runner.swaggerTools.swaggerSecurity(options);

  var port = process.env.PORT || 10010;
  app.listen(port);

  console.log('try this:\ncurl http://<IP_ADDRESS>:' + port + '/hello?name=Scott');
});

This should work, just be aware that swagger-tools is an implementation detail / private API and will not remain under the covers forever.
Scott

The code above didn’t work for me. I was able to get it to recognize the security handler by calling the following within the SwaggerExpress callback, before swaggerExpress.register()
swaggerExpress.runner.config.swagger.securityHandlers = {
    mySecKey: function (req, authOrSecDef, scopesOrApiKey, callback) {
        // ...
    }
}

// install middleware
swaggerExpress.register(app);

Great! Glad you got it working! Same caveats as above apply. :)

thx, solution sohn pointed works.

How do i use passport js with SwaggerExpress, redis and express-session ?
Please, help!

I got the @sohn solution to work but it is messy. When will a cleaner version be available -- maybe using  a x-swagger-security-handler tag?

The new version supports passing in a security handler directly in the config. See: https://github.com/swagger-api/swagger-node/blob/master/docs/release-notes.md

@theganyo: with swagger+sails where do I add the security handler?

@rajeevb2 Oh boy. Sails is a challenge. The only way currently would be to literally edit the plugin. As a Salis user, what would you expect? Maybe we can try to work from there.

@theganyo I got it to work but as you indicated, I had to edit the plugin. Ideally, I would like this to work as a sails policy.

I want to gain access to the res and next handler to properly return 401 or 403 errors.  I added the following to app.js:
swaggerExpress.runner.config.swagger.securityHandlers = {
oAuth: function (req, res, next,authOrSecDef, scopesOrApiKey) {
    //res.sendStatus(403);
    next();
}

}
This works if I drill down and change node_modules/swagger-express-mw/node_modules/swagger-node-runner/node_modules/swagger-tools/middleware/swagger-security.js and change line 149 to :
handler(req,res,next,secDef, getScopeOrAPIKey(req, secDef, name, secReq));
What do you think about giving us access to the req,res and next object so that we can properly short circuit and return 401 or 403?  Thanks.

OK my bad.  dug a little more.  Looks like I can get what I need by passing this to the callback.
cb({message: "Error doing something",
code: "SomeAppCode",
statusCode: 401,
headers: []
});
or cb(); for success

This is my code is working.
app.js:
var config = {
  appRoot: __dirname, // required config
  swaggerSecurityHandlers: {
    api_key: function (req, authOrSecDef, scopesOrApiKey, cb) {
      // your security code
      if ('1234' === scopesOrApiKey) {
        cb(true);
      } else {
        cb(new Error('access denied!'));
      }
    }
  }
};

api/swagger/swagger.yaml:
securityDefinitions:
  api_key:
    type: apiKey
    in: query
    name: api_key
paths:
  /hello:
    get:
      security:
        - api_key: [ ]

I am still interested in a way to specify this inside swagger-sails (as a policy inside config/).
Anyone got this to work?
Rajeev

On Dec 10, 2015, at 5:27 PM, jeonghwan<EMAIL_ADDRESS>wrote:
This is my code is working.
app.js:
var config = {
appRoot: __dirname, // required config
swaggerSecurityHandlers: {
api_key: function (req, authOrSecDef, scopesOrApiKey, cb) {
// your security code
if ('1234' === scopesOrApiKey) {
cb(true);
} else {
cb(new Error('access denied!'));
}
}
}
};
api/swagger/swagger.yaml:
securityDefinitions:
api_key:
type: apiKey
in: query
name: api_key
paths:
/hello:
get:
security:
- api_key: [ ]
—
Reply to this email directly or view it on GitHub https://github.com/swagger-api/swagger-node/issues/228#issuecomment-163805253.

@jeonghwan-kim kudos for the snippet except that there is a tiny bug in the code you posted which causes it to fail with Cannot assign to read only property 'code' of true.
Had to change cb(true); to cb(null); to get it working in swagger-express-mw v0.6.0.
var config = {
  appRoot: __dirname, // required config
  swaggerSecurityHandlers: {
    api_key: function (req, authOrSecDef, scopesOrApiKey, cb) {
      // your security code
      if ('1234' === scopesOrApiKey) {
        cb(null);
      } else {
        cb(new Error('access denied!'));
      }
    }
  }
};

well, I did explore swagger_security fitting and figure out a few options how to activate handlers:
at first you have to define a security module:
// api/helpers/security_module.js

module.exports = {
  // swagger-tools style handler
  security_1: function failure(req, authOrSecDef, scopesOrApiKey, next) {
   /* security checking logic */
  }

  // connect-style handler
  security_2: function failure(req, res, next) {
   /* security checking logic */
  }
};

Now you have 2 options:
I). You can include it in you app.js as mentioned before:
// swaggerSecurityHandlers

const config = {
  appRoot: __dirname, // required config

  // both keys are correct, pick one you likes more ^_^
  securityHandlers: require('./api/helpers/security_module'),
  // or
  swaggerSecurityHandlers: require('./api/helpers/security_module')
};

II). Or you can modify config/default.yaml

add _swagger_security definition:

    _swagger_security:
      name: swagger_security
      securityHandlersModule: api/helpers/security_module

and replace swagger_security to _swagger_security

    # pipe for all swagger-node controllers
    swagger_controllers:
      - onError: json_error_handler
      - auth_mw
      - cors
      - swagger_params_parser
      - _swagger_security
      - _swagger_validate
      - express_compatibility
      - _router

But I did not get a line:
if (fittingDef.securityHandlersModule && !runner.config.securityHandlers)

I found an issue where @osher asked the same question. Can somebody show the reason that checking exists?

To further explain, here is my config object:
var config = {
    appRoot: __dirname, // required config
    swaggerSecurityHandlers: {
        OauthSecurity: function(req, authOrSecDef, scopesOrApiKey, callback) {
            callback.apply(); // Does not return my mock controller
        }
    }
};

Never mind, it was me who made an error in my mock controller.

Here is a working example. This is what worked for me:
let swaggerConfig = {
  appRoot: __dirname, // required config
  swaggerSecurityHandlers: {
    BasicAuth: function (req, res, next) {
      log.info('auth:' + req.headers.authorization);
      let prefix = 'Basic ';
      if (req.headers.authorization && req.headers.authorization.startsWith(prefix)) {
        let value = req.headers.authorization.substr(prefix.length);
      }
      // put your validation somewhere here
      // 403 is the default error code, feel free to override with, e.g 401
      next({code: 'Custom_application_error_code', statusCode: 401});
    }
  }
};

What I had in my default yaml (order may be significant):
    swagger_controllers:
      - onError: json_error_handler
      - cors
      - swagger_params_parser
      - swagger_security
      - _swagger_validate
      - express_compatibility
      - _router

In my swagger definition:
securityDefinitions:
  BasicAuth:
    type: basic
security:
-  BasicAuth: []

Tested with swagger-express-mw 0.7.0

I have the exact same setup as above, except with the apiKey auth type. It works great!

I think we need to move all these insights to the wiki

Global security definitions are not working with "swagger-express-mw": "^0.7.0"
TypeError: Cannot read property 'type' of undefined
  at getScopeOrAPIKey (/usr/src/app/node_modules/swagger-express-mw/node_modules/swagger-node-runner/fittings/swagger_security.js:80:26)

@b4dnewz , provide more code, show your swagger definition file and and security handlers.

This piece of code should add the global security definition to all paths. @evilive3000
security:
 - Bearer: []
securityDefinitions:
  Bearer:
    type: apiKey
    in: header
    name: Authorization

But when the security handler is called it fails with the error posted above, see this discussion.

yeap, unfortunately it is nothing we can do until @whitlockjc update sway on npmjs.
But the package was not updated since 2016.

OK my bad. dug a little more. Looks like I can get what I need by passing this to the callback.
cb({message: "Error doing something",
code: "SomeAppCode",
statusCode: 401,
headers: []
});
or cb(); for success

@chrisfelix82  👍  NICE!, I want to customize status code from 403 to 401.  Don't know where to do this and finally Googled here !!!! This saves me! Thank you.


(merge bug) Generate without duplicates

Prerequisites

[x] Plugin is in the latest version

Description

@bluelovers Thanks for the report!
Fixed and released with v3.1.1


Issue with ignore files in .gitignore

I'm a Vim newbie here, so I apologize if this is a dumb question. I'm tying to configure CtrlP to ignore files in my .gitignore file without much luck. I'm using Thoughtbot's .vimrc file, and I copied the following line into my .vimrc.local file from the readme:
let g:ctrlp_user_command = ['.git/', 'git --git-dir=%s/.git ls-files -oc --exclude-standard']

When I try to open Vim, I get this error:
Error detected while processing /Users/landon/.vimrc.local:
line   38:
E706: Variable type mismatch for: g:ctrlp_user_command
Press ENTER or type command to continue

I'm using Vim 7.4.1063 and the latest version of CtrlP from vim-plug. Here's my full .vimrc.local file:
" Enable text wrapping

set textwidth=105
set formatoptions+=t
set formatoptions-=l
set linebreak
set breakindent
set breakindentopt=shift:2

" Remap the default movement keys to work with wrapped lines
nmap <buffer> <silent> k gk
nmap <buffer> <silent> j gj
nmap <buffer> <silent> 0 g0
nmap <buffer> <silent> ^ g^
nmap <buffer> <silent> $ g$

" Prevent the cursor from jumping when joining lines
nnoremap J mzJ`z

" Center the cursor when jumping positions
nnoremap n nzz
nnoremap } }zz

" Make Vim's search case-sensitive, but only when the search string contains an uppercase letter
set smartcase

" Make Y's behavior match D and C
nnoremap Y y$

" Add wildcards for CtrlP and Vim to ignore
set wildignore+=*/tmp/*,*.zip,*/build/*,*.png,*.gif,*.jpg
let g:ctrlp_custom_ignore = {
\  'file': '\v\.(zip,png,gif,jpg)$',
\  'dir': '\v(build|tmp|log)'
\ }

" Ignore .gitignore files in CtrlP
let g:ctrlp_user_command = ['.git/', 'git --git-dir=%s/.git ls-files -oc --exclude-standard']

Thanks in advance!

@LandonSchropp Hello, this isn't really the right place to ask. In future, I'd confine general plugin questions to reddit's r/vim or irc channels. The issue tracker is just for vim-plug specific problems, whereas this is just a ctrlp usage question.
That said, I like CtrlP and so shall reply. The main problem is you made the user_command variable a simple list, whereas what I believe you were trying for is the dictionary type configuration where you specify a default command and specific ones for certain VCS like git. You should also have a fallback. I've made it from things I've seen. You probably don't need all the ignores I've put.
 My bad. Still, thanks for replying!

@LandonSchropp No problem. :)


xdag was MIT licensed, is now GPL licensed; action needed

Commit 1a88c7cbc5be9565a06986b154dd60ab396e15fa has merged in support for Readline.
This project is MIT licensed. However, Readline is GPL. Binaries built with this software, and distribution of this software in source or binary form, must comply with the GPL license. This is more restrictive than the MIT license. Because of these restrictoins, this commit should be immediately reverted.
Any unrelated fixes should be recommited per task without being merged into a single commit.
An alternate method for command history or completion should be devised.

@trueserve
Fixed in https://github.com/XDagger/xdag/pull/186


Support for Multiple Worker Types

I see there's only one type of Concourse worker defined in the bosh deployment. Is there any way to easily add more worker types?
If I wasn't using concourse-up I guess I would just modify the bosh deployment to have another worker entry, but if I do that manually concourse-up will probably kill it when it auto-updates or someone tries to scale with the cli, right?
The primary use case here is to have some GPU nodes with a custom worker name so that you can use them for some but not all concourse jobs. Another desirable might be network or disk optimized workers.

Hi karlkfi,
You can use the --workers and --worker-size flags on concourse-up deploy to configure the number and type of workers. Supported values for worker types can be found in the docs.
You are correct that setting a custom type would be overwritten by concourse-up if you deployed again. We currently only support t2 and m4 type vms but we would be interested to learn about use cases for other worker types.

The use case would be to exercise ML models on GPU instances, like g3 or p3, as part of a pipeline that includes other work on normal m4 instances, like compiling, release building, unit tests, etc.

This is not currently something on our roadmap. It is possible to modify the manifest/cloud config to allow whatever vm types are required but this will remove the ability to use concourse-up to update/manage that Concourse going forward as it would revert the manual changes.


Fixing FIRWARE files/directories loading

Currently the firmware path defined in the Module CR is copied into the /var/lib/firmware host path, including the the rightmost directory. Since customed firmware base loading directory for kernel modules is /var/lib/firmware, it means that kernel modules that are expecting their firmware to be located unnder base path (/var/lib/firmware) cannot be run, since current implementation will always contain at leas one additional directory under /var/lib/firmware. This PR changes implementation, so that, if needed, firmware file can be copied directly under the base path (/var/lib/firmware)

Codecov Report
Base: 74.39% // Head: 74.39% // No change to project coverage :thumbsup:

Coverage data is based on head (3d71552) compared to base (314e398).
Patch coverage: 100.00% of modified lines in pull request are covered.

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #213   +/-   ##
=======================================
  Coverage   74.39%   74.39%
=======================================
  Files          27       27
  Lines        2820     2820
=======================================
  Hits         2098     2098
  Misses        619      619
  Partials      103      103

Impacted Files
Coverage Δ

internal/daemonset/daemonset.go
97.93% <100.00%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.

/lgtm


Can't switch off entertaiment area after adding the area without relogin

Hi,
Thank you for your work on this awesome extension !
my setting
(everything is fine, i have succesfuly removed and readded my bridge to make entertainment works) I just set up a new extension area names "Cinema-t":

Description
When I click on this button:

Expected result:

The screen sync (or whatever effect choosen) goes off
So i can apply a scene for exemple, or soft switch off the lights

Current result:

The screen sync is still on
I can't change scene or soft switch off lights

I think all of this was launched by this:

I now try with

and let you know asap (brb 30 sec to relog on)

Thank you @cm-t for your exhausting report. Unfortunately, I wasn't able to reproduce it yet.
IMHO, between those two steps:

in the entertainement tabs i select sync screen and Cinema-t
a notification tells me to unpaire and pair it again

I would expect an important middle step... Selecting the entertainment area on the entertainment tab should not invoke the notification.
I was able to find and fix a bug in the code, that could cause the issue you have described. The bug I discovered could work regardless of the settings in the entertainment tab. I can not verify the fix fixes your issue. I do not consider this issue to be fixed, I will investigate more.
In case you would be able to reproduce the error, please enable the logging of debug messages on the tab advanced and try to enable/disable the sync. The debug msgs will be stored in the gnome-shell log.

You are probably right for the middle step, i was just trying to remember the steps at a moment i didn't know i should remember it.
As you said, if I can reproduce it again, I will enable the log !
Thank you

I found and fixed the issue. The trouble was in getting stuck in the 'starting' state of synchronization with the entertainment area autostart enabled.

Resolved.


Fix heightmap := make([]float64, w, h)

heightmap := make([]float64, w*h)

Good catch, thank you.


Added gitignore for IDEA. Can be extended.

It's so annoying anytime to add this line to the project.
Please let's support this out of the box.
It can be extended for other IDE-s.

This should really be in your ./.gitignore_global. Adding this for every editor out there would cause the file to be bloated.
(also, have you tried vscode?)

@eddiemonge IDEAs product for now still feels better (imho), at least when you work not only with js

This should really be in your ./.gitignore_global. Adding this for every editor out there would cause the file to be bloated.
(also, have you tried vscode?)

 Try using IDEA for 1 week and you will never return to vscode.
Regarding first notice, I'll configure it for now, but in case I switch between PC-s, it's still not convenient. Such a great projects like Angular, NestJS include IDE-s in the gitignore, and it didn't bloat nothing.


Comment out recursive useMedia usage in useUploader

Comment out recursive useMedia usage in useUploader.
MediaProvider uses useUploader which uses useMedia, which causes resetWithFetch to be null. useContextSelector throws an exception which makes this bug more noticable, so commenting this out until the issue is fixed.

This is going to be break the functionality of refreshing media library. Until the is a solution, just commenting this out doesnt seem like a great idea.

This is going to be break the functionality of refreshing media library. Until the is a solution, just commenting this out doesnt seem like a great idea.

This PR is a no-op - resetFromFetch is always null because of a cycle: MediaProvider uses useUploader which uses useMedia, which causes resetWithFetch.
This PR just makes this existing bug more obvious and attaches an issue to it.

This is not really how we work on this project. For the most part we never comment code out. No one would approve a PR that doesn't a fix. I would say this PR and fix the bug for good in another PR.

@cvolzke4 @spacedmonkey I agree with this. Let's see if we can come up with the partial or complete fix here. If we can't - we can rip the code out completely and refile the feature issue or a bug that addresses the original purpose behind the problematic method.

@cvolzke4 @spacedmonkey I agree with this. Let's see if we can come up with the partial or complete fix here. If we can't - we can rip the code out completely and refile the feature issue or a bug that addresses the original purpose behind the problematic method.

Thanks Jonny / Dima.
I'll go ahead and remove the code. The reason I didn't do that in the beginning is because 'refreshLibrary' would also need to be removed, which may be tricky to re-add later. But it looks like refreshLibrary isn't needed anyway, as a refresh isn't necessary after an upload, see:
https://github.com/google/web-stories-wp/pull/1848

Somewhat related issue, is then the WP media picker is closed, it also refreshes the library. https://github.com/google/web-stories-wp/blob/855850f438e5f86d49869db7ac54751d524c7d22/assets/src/edit-story/components/library/panes/media/mediaPane.js#L155


Add proxy support and the ability for clients to override the HTTP timeout

/kind bug

Which area this bug is related to?

/area library
/area registry
Bug Summary
Describe the bug:

Dev console is running into issues creating an app in a disconnected cluster with a proxy using our Go devfile sample.  The problem is with the parent devfile reference which the parser needs to read but because the HTTP client we construct does not contain proxy support, this action fails.   We should also allow clients to override the default http request/response timeouts - default timeout of 30s has shown to be way too long of a wait (true for both the parser and registry library)
To Reproduce:

Expected behavior

Any logs, error output, screenshots etc? Provide the devfile that sees this bug, if applicable.

Additional context

Any workaround?

Suggestion on how to fix the bug

re-opening for backports


YAML Frontmatter header support?

https://docs.zettlr.com/en/core/yaml-frontmatter/
https://pandoc.org/MANUAL.html#extension-yaml_metadata_block
https://assemble.io/docs/YAML-front-matter.html
https://help.obsidian.md/Editing+and+formatting/Properties

Samples:
---
created: 2017-12-07T21:11:43.610Z
modified: 2020-11-19T19:42:30.000Z
---

---
created: 2023-08-10T21:02:16-07:00
modified: 2023-08-10T21:02:59-07:00
---
First line of note
the `---` is the actual first line in the file.

https://github.com/eyeseast/python-frontmatter


replace quic.clemente.io by localhost in the client unit tests

Codecov Report

Merging #1577 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master    #1577   +/-   ##
=======================================
  Coverage   87.49%   87.49%
=======================================
  Files          95       95
  Lines        6116     6116
=======================================
  Hits         5351     5351
  Misses        545      545
  Partials      220      220

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update f0354c0...ce257f3. Read the comment docs.


Review / refactor ENTIRE test suite

While writing up #1411 it occurred to me that we have a lot of old tests that are probably sub-optimal. Our Travis builds now takes almost 5 minutes, which is really far too long for an app of our complexity and a test suite of our size. I'd like to completely overhaul the test suite, focusing on building a nice test pyramid and avoiding DB hits as much as possible through mocks / stubs.
This is going to be a fairly massive undertaking, so if others are interested in improving their testing skills we can definitely split it up.

diff: 13

hahaha - we should crank it up to 11 :smile:

We also really need to start using test doubles, they're so much faster than creating db-backed objects, it's insane (see #1433). We could probably cut our test suite time in half just by correctly using them.

This might be both useful and painful :stuck_out_tongue:.

Under the default configuration, there are 1947 offenses detected by rubocop-rspec on master

Sounds like a party :smile:. All these sub-issues are great, we should also remember to use CodeClimate as a guide for better code (ties in #1097).


HTTP 301 returned when using any command

I'm getting HTTP response code 301 for any operation, including listing tunnels, creating new tunnel, etc.
Same thing happens in Visual Studio.

I'm trying it on company PC, which has ZScaler proxy. Maybe it breaks it.
Shouldn't this tool follow address provided in response Location header?

Ok, it will not work as it is actually blocked by company policy.


Implement java.util.function.Consumer.

This PR implements java.util.function.Consumer. I implemented the class based on the Java 8 Javadocs and did not look at any existing implementations. The tests are patterned after the existing Scala.js tests for Predicate.
The motivation for implementing the class is that it is required by the Akka.js CircuitBreaker, which is required to implement circuit breakers in Lagom.js.

Thanks for the PR. Could you please target it to the 0.6.x branch instead of master? We periodically merge 0.6.x into master, but never the other way around.

Change the target branch of the PR (at the top of this page)
Rebase your commit on top of 0.6.x, taking care not to carry over any other commit from the master branch
Force push

Thanks.
The CI got confused because you changed the base branch only after force-pushing. You can fix the situation by doing a no-op git commit --amend then force-pushing again :)

Glad to contribute, thanks for reviewing.


Fix Statistics

Pull Request Test Coverage Report for Build 2860a83c6ac23bdc33a86d2a807b4299534be715-PR-211

1 of 21 (4.76%)  changed or added relevant lines in 5 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-1.6%) to 66.351%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

lib/athena/inventory/event/order_overview.ex
0
1
0.0%

lib/athena_web/frontend/live/location/stats_live.ex
0
3
0.0%

lib/athena/inventory.ex
0
6
0.0%

lib/athena_web/frontend/live/dashboard/item_stats_live.ex
0
10
0.0%

Totals

Change from base Build 75fcea28870b9e489e167662101518f7efb528a5:
-1.6%

Covered Lines:
491

Relevant Lines:
740

💛  - Coveralls


paramsd: bad init while in a turn

Device booted while in a turn and got vehicle parameters identification failed for about the first minute of bd6a637565e91581|2021-12-20--17-43-09

Same here, I restarted the car while driving to flip a toggle and had the vehicle parameter identification failed as well, but it's not a stock route.

@adeebshihadeh Do you have the rlogs for this route?
The cause for almost all of these alerts now is : filter becomes "active" in a turn (the yaw rate observation is thus very very high) -> the filter state takes some small time to go from it's earlier value (0, likely) to this new high value. In the meantime, the offset is the only free variable that can move rapidly, and picks up the slack to keep the vehicle model consistent.
The roll-comp reduces this effect a bit, but does not eliminate it. Can you upload the rlogs?

@nuwandavek Fixed by https://github.com/commaai/openpilot/pull/23449?

No, this is unrelated. Roll comp should reduce the occurrence of this issue, but does not eliminate it. We should rethink the states vs observations in the filter. We'll work on this next!

This PR https://github.com/commaai/openpilot/pull/23951 should fix this issue. The cause, in most cases was due to a delay in cameraOdometry messages. When the filter was initialized in turns, without pose information, the gyro bias took on a very high value, which took ~1-2 mins to converge. This caused wrong estimation of YR, resulting in incorrect fast-angle-offset values.


cartharge support

$ carthage update --platform iOS
*** Cloning SlideMenuControllerSwift
*** Checking out SlideMenuControllerSwift at "2.0.0"
*** xcodebuild output can be found in /var/folders/ks/1fzlyrd118jb_px6cvk_m6gh0000gp/T/carthage-xcodebuild.RT4iWg.log
*** Skipped building SlideMenuControllerSwift due to the error:
Dependency "SlideMenuControllerSwift" has no shared framework schemes for any of the platforms: iOS

If you believe this to be an error, please file an issue with the maintainers at https://github.com/dekatotoro/SlideMenuControllerSwift/issues/new

Carthage Support #77
This issue closes.


Add .pre-commit-hooks.yaml

Fix #30

Hey there, thanks for the contribution! just a question cause I see a weird diff in a line but then I'm ready to merge this!

Hey there, thanks for the contribution!
Is there a way to test this? also, could you maybe explain in the readme what's it do? thanks!

You tell me when it's ready for review again?

Hey, wait a minute, I'll add some document.

Executable typst-fmt not found

Is there any CLI program provided?

$ git init
$ pre-commit install
$ cat main.typ
  #set page(width: auto, height: auto, margin: 0pt)
你好
$ cat .pre-commit-config.yaml
---
repos:
  - repo: https://github.com/Freed-Wu/typst-fmt
    rev: master
    hooks:
      - id: typst-fmt
$ git add -A
$ git commit
[INFO] Initializing environment for https://github.com/Freed-Wu/typst-fmt.
[INFO] Installing environment for https://github.com/Freed-Wu/typst-fmt.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
typst-fmt................................................................Failed
- hook id: typst-fmt
- exit code: 1

Executable `typst-fmt` not found

yea, it's called typstfmt for now, maybe it's a bad idea and i should call it typst-fmt?

i renamed everything typstfmt instead!

Now it can work
$ git init
$ pre-commit install
$ cat main.typ
  #set page(width: auto, height: auto, margin: 0pt)
你好
$ cat .pre-commit-config.yaml
---
repos:
  - repo: https://github.com/Freed-Wu/typst-fmt
    rev: master
    hooks:
      - id: typst-fmt
$ git add -A
$ git commit
[INFO] Initializing environment for https://github.com/Freed-Wu/typstfmt.
[INFO] Installing environment for https://github.com/Freed-Wu/typstfmt.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
typstfmt.................................................................Failed
- hook id: typstfmt
- files were modified by this hook
$ git diff
diff --git a/main.typ b/main.typ
index 5c08a3f..ddb19ed 100644
--- a/main.typ
+++ b/main.typ
@@ -1,2 +1,2 @@
-  #set page(width: auto, height: auto, margin: 0pt)
+ #set page(width: auto, height: auto, margin: 0pt)
 你好
\ No newline at end of file

Fixed.

looks great :D
thanks a lot, It's okay for me to merge!
Are you okay to merge this as well?

On second thought If you have time, you should probably take a look at this and change the tag

Fixed.

Testing this gives exactly the same warning :grimacing:
[WARNING] The 'rev' field of repo 'https://github.com/Freed-Wu/typstfmt' appears to be a mutable reference (moving tag / branch).  Mutable references are never updated after first install and are not supported.

I will merge this and modify HEAD to fixed revision.


Add a template.sql file

@MarkL4YG Would this be necessary considering this is all done within the plugin itself? It also seems that executing an SQL script from java is quite the chore.

I don't know how to import SQL dumps using Java. If that's considerably painful I would scratch that. Otherwise using SQL templates (dumps without data in fact) may turn out to be helpful to developers.
It also means you don't have to run Sponge just to set up the database.
This are only weak reasons though so if importing SQL dumps really isn't that easy I would lay this aside until it becomes necessary for some reason.


Server shuts down immediately

After latest commits, server will not startup, and produces only the following nondescript error message:
main
Reading map data from ./data/bin/ folder
Shutting down AdminServer: "No reason"
Shutting down game server because :  "Full system shutdown"
MapServer has not been started yet.

I'm looking through the various ShutDown calls now.
SEGS version
Clone latest from git
Operating system
Linux (Fedora 26)
C++ compiler and version
gcc (GCC) 7.2.1 20170915 (Red Hat 7.2.1-2)

Likely one of the data files is missing but server does not report it

segs v0.4.0 alpha (The Real Beginning)
main
Config file is missing 'location_addr' entry, will try to use default
Config file is missing 'auth_pass' entry, will try to use default
Reading map data from ./data/bin/ folder
Reading ./data/bin/costume.bin ... OK
Reading ./data/bin/supergroupColors.bin ... OK
Loading origins:
Reading ./data/bin/origins.bin ... OK
Reading ./data/bin/villain_origins.bin ... OK
Loading classes:
Reading ./data/bin/classes.bin ... OK
Reading ./data/bin/villain_classes.bin ... OK
 All map data read
 Postprocessing runtime data ..  Hashes filled

this is how it should look on success..
I'm investigating reporting code now.

Please try the most recent commit ?

Hrm. I'm not getting the same output as you at all. That said, I am able to successfully start the server.
$ ./authserver
main
Reading map data from ./data/bin/ folder
 All map data read
 Postprocessing runtime data ..  Hashes filled

It almost like QT_NO_DEBUG_STREAM, QT_NO_DEBUG_OUTPUT, and QT_NO_WARNING_OUTPUT have been set, but that's not the case, and I haven't changed any settings.

Will investigate, maybe it's related to ACE debug stuff..

When You have the time, please verify if the logging outputs what it should ?

I'm getting barely anything out of output.log and crash.log.
Startup and shutdown events only.

And the log output file ?

Ok, it seems that it's once again the way of redhats :tophat:
https://bugzilla.redhat.com/show_bug.cgi?id=1227295

Ahhh, interesting. I'll play with the local environment settings to see if I can resolve the issue.
I was going to jump on #120... As this is somewhat related, does it provide an argument for switching some of the output from QDebug to something else? This could prevent unexpected behavior due to bad actors at the environment level?

Well, I think I might have a solution for this, could  You try:
add #include <QLoggingCategory> in AuthServer/main.cpp
add QLoggingCategory::setFilterRules("*.debug=true;qt.*.debug=false") call before qInstallMessageHandler
See if this will override the override that overrides the logging ? :smile:

As for #120 I'm almost done with it :)

I'm on mobile right now, but I'll test in about 6-7hrs.

Testing QLoggingCategory. This is more output than I've ever gotten from the server, so that seems good. Output.log and Crash.log seem empty
Console Output:
$ ./authserver
qt.core.logging: Ignoring malformed logging rule: '*.debug=true;qt.*.debug=false'
Super Entity Game Server
http://segs.sf.net/
Copyright (c) 2006-2017 Super Entity Game Server Team (see Authors.txt)
This software is licensed! (See License.txt for details)

segs v0.4.0 alpha (The Real Beginning)
main
Warning : Reading map data from ./data/bin/ folder
Warning :  All map data read
Warning :  Postprocessing runtime data ..  Hashes filled
(3781|140628839102208) Crypto seed 00000001
(3781|140628830709504) User broxen trying to login from <IP_ADDRESS>.
		id : 64u
		 : succeeded
(3781|140628839102208) Client requesting server list
(3781|140628830709504) Client selected server 1!
(3781|140628822316800) create_cookie still needs a good algorithm.0x00000003
CLIENT VERSION 4
CharacterClient id: 3
CharacterClient slots: 8
(3781|140628918732544) Connection closed
 Telling map server to expect a client with character Sarim,0
(3781|140628813924096) create_cookie still needs a good algorithm.0x0a009d47
1 - 0 - 1
	Sending create entity
	Sending create entity
Received cookie confirm a009d49 - 1
	Sending create entity
	Sending create entity
Received window state 11 - 4
// ...
Received window state 8 - 4
pressed
pressed
(3781|140628839102208) Crypto seed 00000001
(3781|140628830709504) User broxen trying to login from <IP_ADDRESS>.
		id : 64u
		 : succeeded
(3781|140628839102208) Client requesting server list
(3781|140628830709504) Client selected server 1!
(3781|140628822316800) create_cookie still needs a good algorithm.0x00000003
CLIENT VERSION 4
CharacterClient id: 3
CharacterClient slots: 8
(3781|140628918732544) Connection closed
 Telling map server to expect a client with character TestGal,1
(3781|140628813924096) create_cookie still needs a good algorithm.0x0a00cedb
1 - 0 - 1
	Sending create entity
	Sending create entity
	Sending create entity
	Sending create entity
	Sending create entity
	Sending create entity
	Sending create entity
	Sending create entity
	Sending create entity
Received cookie confirm a00cedd - 1
	Sending create entity
	Sending create entity
	Sending create entity
	Sending create entity
	Sending create entity
	Sending create entity
	Sending create entity
	Sending create entity
	Sending create entity
Received window state 11 - 4
// ...
Received window state 8 - 4
pressed
pressed
pressed
pressed
Unhandled command event type 32
Received window state 7 - 2
// ...
Received window state 20 - 4
^CSegmentation fault (core dumped)

Output.log
Warning : Reading map data from ./data/bin/ folder
Warning :  All map data read
Warning :  Postprocessing runtime data ..  Hashes filled

Crash.log
 Telling map server to expect a client with character Sarim,1
Sending msg to client 0x7f5ffc019700
^CSegmentation fault (core dumped)

I think this has been resolved as of #128


Feature request: Option to indent/pretty print JSON response

It would be great to be able to set an option that would make the response data be pretty printed when returned. Either through an app wide setting, or for individual actions.

That is the responsibility of the client. You can use something smarter than curl to pretty print JSON such as httpie which you can get from pip: pip install httpie and then you can use the http command:
➜ http $(chalice url)
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 74
Content-Type: application/json
.
.
.

{
    "hello": "world",
    "list": [
        1,
        {
            "nested": "content"
        },
        3
    ],
    "more": "value"
}

Its also colored in an actual terminal.