Migrating from chromedriver-helper (Heroku production)

I use Watir and chromedriver-helper for parallel chrome headless execution on Heroku.
This configuration has worked well for chromedriver-helper. Just tried migrating to webdrivers and now when I call
browser = Watir::Browser.new :chrome, options: options
The app hangs with this message
DevTools listening on ws://<IP_ADDRESS>:9222/devtools/browser/ec46578f-304d-4a11-8441-fee4092aebac
Does anyone have a similar setup or advice on how I can get webdrivers and watir to work together on Heroku?
class Browser::Builder
  attr_reader :downloads

  def self.call(downloads: false)
    new(downloads: downloads).call
  end

  def initialize(downloads: false)
    @downloads = downloads
  end

  def key
    @key ||= object_id
  end

  def number
    @number ||= rand(1..20_000)
  end

  def call
    options = Selenium::WebDriver::Chrome::Options.new

    # make a directory for chrome if it doesn't already exist
    chrome_dir = File.join Dir.pwd, ["tmp", "chrome#{key}"]
    FileUtils.mkdir_p chrome_dir
    user_data_dir = "--user-data-dir=#{chrome_dir}"
    # add the option for user-data-dir
    options.add_argument user_data_dir

    # let Selenium know where to look for chrome if we have a hint from
    # heroku. chromedriver-helper & chrome seem to work out of the box on osx,
    # but not on heroku.
    if chrome_bin = ENV["GOOGLE_CHROME_SHIM"]
      options.add_argument "--no-sandbox"
      options.binary = chrome_bin
    end

    # headless!
    options.add_argument "--window-size=2048x1080"
    options.add_argument "--headless"
    options.add_argument "--disable-gpu"
    options.add_argument "--disable-dev-shm-usage"
    options.add_argument "--port=#{9514 + number}"

    # make the browser
    browser = Watir::Browser.new :chrome, options: options

    # setup downloading options
    if downloads
      # make download storage directory
      downloads_dir = File.join Dir.pwd, ["tmp", "downloads#{key}"]
      FileUtils.mkdir_p downloads_dir

      # tell the bridge to use downloads
      bridge = browser.driver.send :bridge
      path = "/session/#{bridge.session_id}/chromium/send_command"
      params = { behavior: "allow", downloadPath: downloads_dir }
      bridge.http.call(:post, path, cmd: "Page.setDownloadBehavior",
                                    params: params)
    end
    browser
  end
end

Hi @hwhelchel, your issue reminds me of this related thread where setting Selenium::WebDriver::Chrome.path to the Chrome binary path (ENV["GOOGLE_CHROME_SHIM"] in your case) solved the problem on Heroku.
Give it a try and if it doesn't work, we can troubleshoot this further.

@kapoorlakshya thanks I'm going to try this

@kapoorlakshya hmm still not able to get it to work on Heroku. Still hanging with message:
DevTools listening on ws://<IP_ADDRESS>:9222/devtools/browser/ae8af7ee-c806-4396-8331-99a2f892ec27
I added this line: Selenium::WebDriver::Chrome.path = chrome_bin
in the conditional block:
    if chrome_bin = ENV["GOOGLE_CHROME_SHIM"]
      options.add_argument "--no-sandbox"
      options.binary = chrome_bin
      Selenium::WebDriver::Chrome.path = chrome_bin
    end

Context:
class Browser::Builder
  attr_reader :downloads

  def self.call(downloads: false)
    new(downloads: downloads).call
  end

  def initialize(downloads: false)
    @downloads = downloads
  end

  def key
    @key ||= object_id
  end

  def number
    @number ||= rand(1..20_000)
  end

  def call
    options = Selenium::WebDriver::Chrome::Options.new

    # make a directory for chrome if it doesn't already exist
    chrome_dir = File.join Dir.pwd, ["tmp", "chrome#{key}"]
    FileUtils.mkdir_p chrome_dir
    user_data_dir = "--user-data-dir=#{chrome_dir}"
    # add the option for user-data-dir
    options.add_argument user_data_dir

    # let Selenium know where to look for chrome if we have a hint from
    # heroku. chromedriver-helper & chrome seem to work out of the box on osx,
    # but not on heroku.
    if chrome_bin = ENV["GOOGLE_CHROME_SHIM"]
      options.add_argument "--no-sandbox"
      options.binary = chrome_bin
      Selenium::WebDriver::Chrome.path = chrome_bin
    end

    # headless!
    options.add_argument "--window-size=2048x1080"
    options.add_argument "--headless"
    options.add_argument "--disable-gpu"
    options.add_argument "--disable-dev-shm-usage"
    options.add_argument "--port=#{9514 + number}"

    # make the browser
    browser = Watir::Browser.new :chrome, options: options

    # setup downloading options
    if downloads
      # make download storage directory
      downloads_dir = File.join Dir.pwd, ["tmp", "downloads#{key}"]
      FileUtils.mkdir_p downloads_dir

      # tell the bridge to use downloads
      bridge = browser.driver.send :bridge
      path = "/session/#{bridge.session_id}/chromium/send_command"
      params = { behavior: "allow", downloadPath: downloads_dir }
      bridge.http.call(:post, path, cmd: "Page.setDownloadBehavior",
                                    params: params)
    end
    browser
  end
end

@hwhelchel Which version of Chrome are you using on Heroku?
Since this works with chromedriver-helper, which downloads chromedriver 2.46 as latest, let's try downloading and using v2.46 through webdrivers and see what happens. Place this anywhere before Watir::Browser#new:
Webdrivers::Chromedriver.version = '2.46'

@kapoorlakshya thanks for the suggestion. I'm trying out browserless.io right now. If I revert to running on Heroku will try this!
Hopefully if others have this same problem they can come to this issue and get some help. Again thank you for your help.

Sounds good! Closing this issue for now. Feel free to revive it if/when needed.

Hi @kapoorlakshya, I just upgraded and am having the same issue. Setting Webdrivers::Chromedriver.version = '2.46' fixed the problem. Happy to try things further if you give me suggestions on what to try.

Hi @rgalanakis, which version of Chrome are you using on Heroku, and what does which google-chrome and ENV["GOOGLE_CHROME_SHIM"] return?

I assume that, after the pin, I am using 2.46 on Heroku. Before that, I believe 73- the Heroku buildpack downloads their latest stable release: https://github.com/heroku/heroku-buildpack-chromedriver
which: /app/.apt/usr/bin/google-chrome
shim: /app/.apt/usr/bin/google-chrome-stable

The stable is 74 now, so that's probably being used for google-chrome-stable unless you have GOOGLE_CHROME_CHANNEL set.
Try setting Selenium::WebDriver::Chrome.path = /app/.apt/usr/bin/google-chrome-stable before launching the browser in your test.

No dice- adding that and removing the .version = '2.46' results in:
DevTools listening on ws://<IP_ADDRESS>:9222/devtools/browser/8620f152-bc3a-4df9-b25d-0754a5f6acaa

@rgalanakis Hmm... okay. I just read the README for heroku-buildpack-google-chrome and it says:

You'll need to tell Selenium/chromedriver that the chrome binary is at /app/.apt/usr/bin/google-chrome instead.

The location above and what ENV['GOOGLE_CHROME_SHIM'] returns are different. Let's try this now:
Webdrivers.logger.level = :DEBUG
Selenium::WebDriver::Chrome.path = '/app/.apt/usr/bin/google-chrome'

And if you're using Capybara, set the binary path in options to '/app/.apt/usr/bin/google-chrome' as well.

Also running into the same issue - if the version is not explictly set, the test suite hangs with the DevTools listening on ws://<IP_ADDRESS>... message.

Hi @rubendinho, did you already attempt what I shared above?

@rgalanakis Let's also set the Selenium logging level to :INFO' to see if anything in there can provide any clues.

@kapoorlakshya I tried setting the path inside the Heroku CI debug console and that did not fix anything.
The only thing I've been able to stop it from hanging is by explicitly setting the version to the latest stable version - "74.0.3729.6" as of this writing.
Possibly related: https://github.com/heroku/heroku-buildpack-google-chrome/issues/70

I'm running into the same problem. I tried setting up the path, changing the version, and explicitly setting the version to the latest stable. Nothing has worked for me so far.
I have more information and logs about it in https://github.com/heroku/heroku-buildpack-google-chrome/issues/70

@rubendinho Can you check what /app/.apt/usr/bin/google-chrome --product-version and /app/.apt/usr/bin/google-chrome-stable --product-version return? Also share the debug logs from webdrivers please. I would like to understand why chromedriver v74 isn't being downloaded if that is what Chrome needs.
I don't have access to Heroku CI (using free account), so I'll have to completely rely on you all for the information we need to troubleshoot this.
@neosepulveda I looked at the log in https://github.com/heroku/heroku-buildpack-google-chrome/issues/70#issuecomment-488609648 and you have both the chromedriver buildpack and webdrivers gem included. Let's only use webdivers to troubleshoot this.
Also, your logs don't have this portion (example from my machine) which tells us that the driver is actually not being downloaded for some reason:
< top portion removed as it matches your logs >

2019-05-02 08:52:54 DEBUG Webdrivers Browser executable: '/usr/bin/google-chrome'
2019-05-02 08:52:54 DEBUG Webdrivers Get response: #<Net::HTTPOK 200 OK readbody=true>
2019-05-02 08:52:54 DEBUG Webdrivers Latest version available: 74.0.3729.6
2019-05-02 08:52:54 DEBUG Webdrivers Checking current version
2019-05-02 08:52:54 DEBUG Webdrivers File is already downloaded: false
2019-05-02 08:52:54 DEBUG Webdrivers Deleting /home/kapoorlakshya/.webdrivers/chromedriver
2019-05-02 08:52:54 DEBUG Webdrivers Looking for Site: https://chromedriver.storage.googleapis.com
2019-05-02 08:52:54 DEBUG Webdrivers Get response: #<Net::HTTPOK 200 OK readbody=true>
2019-05-02 08:52:54 DEBUG Webdrivers Found Site: https://chromedriver.storage.googleapis.com
2019-05-02 08:52:55 DEBUG Webdrivers Get response: #<Net::HTTPOK 200 OK readbody=true>
2019-05-02 08:52:55 DEBUG Webdrivers Versions now located on downloads site: [#<Gem::Version "2.0">, #<Gem::Version "2.1">, #<Gem::Version "2.10">, #<Gem::Version "2.11">, #<Gem::Version "2.12">, #<Gem::Version "2.13">, #<Gem::Version "2.14">, #<Gem::Version "2.15">, #<Gem::Version "2.16">, #<Gem::Version "2.17">, #<Gem::Version "2.18">, #<Gem::Version "2.19">, #<Gem::Version "2.2">, #<Gem::Version "2.20">, #<Gem::Version "2.21">, #<Gem::Version "2.22">, #<Gem::Version "2.23">, #<Gem::Version "2.24">, #<Gem::Version "2.25">, #<Gem::Version "2.26">, #<Gem::Version "2.27">, #<Gem::Version "2.28">, #<Gem::Version "2.29">, #<Gem::Version "2.3">, #<Gem::Version "2.30">, #<Gem::Version "2.31">, #<Gem::Version "2.32">, #<Gem::Version "2.33">, #<Gem::Version "2.34">, #<Gem::Version "2.35">, #<Gem::Version "2.36">, #<Gem::Version "2.37">, #<Gem::Version "2.38">, #<Gem::Version "2.39">, #<Gem::Version "2.4">, #<Gem::Version "2.40">, #<Gem::Version "2.41">, #<Gem::Version "2.42">, #<Gem::Version "2.43">, #<Gem::Version "2.44">, #<Gem::Version "2.45">, #<Gem::Version "2.46">, #<Gem::Version "2.5">, #<Gem::Version "2.6">, #<Gem::Version "2.7">, #<Gem::Version "2.8">, #<Gem::Version "2.9">, #<Gem::Version "70.0.3538.16">, #<Gem::Version "70.0.3538.67">, #<Gem::Version "70.0.3538.97">, #<Gem::Version "71.0.3578.137">, #<Gem::Version "71.0.3578.30">, #<Gem::Version "71.0.3578.33">, #<Gem::Version "71.0.3578.80">, #<Gem::Version "72.0.3626.69">, #<Gem::Version "72.0.3626.7">, #<Gem::Version "73.0.3683.20">, #<Gem::Version "73.0.3683.68">, #<Gem::Version "74.0.3729.6">, #<Gem::Version "75.0.3770.8">]
2019-05-02 08:52:55 DEBUG Webdrivers Looking for Site: https://chromedriver.storage.googleapis.com
2019-05-02 08:52:55 DEBUG Webdrivers Get response: #<Net::HTTPOK 200 OK readbody=true>
2019-05-02 08:52:55 DEBUG Webdrivers Found Site: https://chromedriver.storage.googleapis.com
2019-05-02 08:52:55 DEBUG Webdrivers Browser executable: '/usr/bin/google-chrome'
2019-05-02 08:52:55 DEBUG Webdrivers Browser executable: '/usr/bin/google-chrome'
2019-05-02 08:52:55 DEBUG Webdrivers Get response: #<Net::HTTPOK 200 OK readbody=true>
2019-05-02 08:52:55 DEBUG Webdrivers Latest version available: 74.0.3729.6
2019-05-02 08:52:57 DEBUG Webdrivers Get response: #<Net::HTTPOK 200 OK readbody=true>
2019-05-02 08:52:57 DEBUG Webdrivers Successfully downloaded chromedriver_linux64.zip
2019-05-02 08:52:57 DEBUG Webdrivers Decompressing zip
2019-05-02 08:52:57 DEBUG Webdrivers Decompression Complete
2019-05-02 08:52:57 DEBUG Webdrivers Deleting chromedriver_linux64.zip
2019-05-02 08:52:57 DEBUG Webdrivers Completed download and processing of /home/kapoorlakshya/.webdrivers/chromedriver

Let's set Selenium::WebDriver::Chrome.path = '/app/.apt/usr/bin/google-chrome' and see if the logs change. And just to rule out any permission issues, let's also set the download location (Webdrivers.install_dir) to a dir relative to your project root.

The same problem happens on normal Heroku dynos.
1 - Create a new project, put selenium-webdriver and webdrivers in your Gemfile
2 - Deploy to Heroku
3 - Connect to a one-off dyno using heroku run rails c -a APP_NAME
4 - Run your tests there.
I did that test and got this:
breno@festalab-lenovo:~/RubymineProjects/festalab-app$ heroku run rails c -a festalab-app-staging
Running rails c on ⬢ festalab-app-staging... up, run.1146 (Hobby)
Loading production environment (Rails 6.0.0.rc1)
irb(main):001:0> options = Selenium::WebDriver::Chrome::Options.new
=> #<Selenium::WebDriver::Chrome::Options:0x00007f66a9c757d8 @args=#<Set: {}>, @binary=nil, @prefs={}, @extensions=[], @options={}, @emulation={}, @encoded_extensions=[]>
irb(main):002:0>     options.add_argument('--headless')
=> #<Set: {"--headless"}>
irb(main):003:0>     options.binary = ENV.fetch('GOOGLE_CHROME_SHIM', nil)
=> "/app/.apt/usr/bin/google-chrome-stable"
irb(main):004:0> driver = Selenium::WebDriver.for :chrome, options: options

DevTools listening on ws://<IP_ADDRESS>:9222/devtools/browser/7b852d85-ea4e-49ff-8351-4a88fb18d5eb

As you can see, it hands on Devtool instead of returning so my code can continue. So I aborted and tried again:
irb(main):005:0> Webdrivers.logger.level = :DEBUG
=> :DEBUG
irb(main):006:0> Selenium::WebDriver::Chrome.path = '/app/.apt/usr/bin/google-chrome'
=> "/app/.apt/usr/bin/google-chrome"
irb(main):007:0> driver = Selenium::WebDriver.for :chrome, options: options
2019-05-07 21:47:03 DEBUG Webdrivers Looking for Site: https://chromedriver.storage.googleapis.com
2019-05-07 21:47:03 DEBUG Webdrivers Get response: #<Net::HTTPOK 200 OK readbody=true>
2019-05-07 21:47:03 DEBUG Webdrivers Found Site: https://chromedriver.storage.googleapis.com
2019-05-07 21:47:03 DEBUG Webdrivers Looking for Site: https://chromedriver.storage.googleapis.com
2019-05-07 21:47:03 DEBUG Webdrivers Get response: #<Net::HTTPOK 200 OK readbody=true>
2019-05-07 21:47:03 DEBUG Webdrivers Found Site: https://chromedriver.storage.googleapis.com
2019-05-07 21:47:03 DEBUG Webdrivers Browser executable: '/app/.apt/usr/bin/google-chrome'

DevTools listening on ws://<IP_ADDRESS>:9222/devtools/browser/a63137c2-a96d-467f-b8d0-02fc8fc5ec1d

Hope this helps. My app relies on Selenium in production to generate website screenshots so I'm definitely interested in seeing this problem fixed.

I'm taking a wild guess here, since I don't know how webdrivers actually work, but Heroku only allows writing to a few directories (such as $HOME and /tmp), so webdrivers might be silently failing the download because it doesn't have the permission to write in the directory it expect to be able to.

@brenogazzola Can you hop on Slack? I would also like to see this issue resolved as well. It's a strange one.
https://seleniumhq.slack.com/messages/CJE1WFAHE

Tried to, but it expects me to have @seleniumhq.org, @slack-corp.com, or @saucelabs.com emails to allow me to create an account, which I don't have.

@brenogazzola Try the Slack link from here instead - https://seleniumhq.herokuapp.com. Once you are in, join the #webdrivers-gem channel.

Thanks for @brenogazzola and his Heroku setup, we've figured out the problem. The problem is that the shims respond to --product-version by launching the browser instead of returning the version. This means that webdrivers keeps waiting to receive the version and it never does.
I looked at the code for heroku-buildpack-google-chrome and learned that it stores the actual binary as chrome\chrome and $GOOGLE_CHROME_BIN points to it - /app/.apt/opt/google/chrome/chrome. This binary returns the --product-version that webdrivers needs.
We were able to successfully download the correct chromedriver and launch the browser with this code:
Selenium::WebDriver::Chrome.path = ENV.fetch('GOOGLE_CHROME_BIN', nil)
options = Selenium::WebDriver::Chrome::Options.new
options.binary = ENV.fetch('GOOGLE_CHROME_SHIM', nil)
driver = Selenium::WebDriver.for :chrome, options: options

I have documented this in the wiki - https://github.com/titusfortner/webdrivers/wiki/heroku-buildpack-google-chrome

Thanks @kapoorlakshya for resolving this issue so quickly.
One quick question, in terms of best practises, where would be the best place to add the configuration code above?
Thank you

@neosepulveda I am not sure if there is an official best practice for this, but I would do it right before browser initialization to keep the driver and browser related code close together.

On a rails app, I'm still having issues with this setup on Heroku
Before RSpec.configure I did add the following
Webdrivers.cache_time = 86_400

require 'webdrivers'

# From : https://github.com/titusfortner/webdrivers/issues/72
if ENV.fetch('GOOGLE_CHROME_BIN', nil)
  Selenium::WebDriver::Chrome.path = ENV.fetch('GOOGLE_CHROME_BIN', nil)
  options = Selenium::WebDriver::Chrome::Options.new
  options.binary = ENV.fetch('GOOGLE_CHROME_SHIM', nil)
  driver = Selenium::WebDriver.for :chrome, options: options
end

Capybara.register_driver(:chrome) do |app|
  capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
    chromeOptions: { args: %w[headless disable-gpu] }
  )

  Capybara::Selenium::Driver.new(
    app,
    browser: :chrome,
    desired_capabilities: capabilities
  )
end

During Rspec configure :
config.before(:each, type: :system, js: true) do
    # Chrome driver, visible , good for debugging
    # driven_by :selenium_chrome

    # Default driver: headless.
    driven_by :chrome
  end

And it still fails listening forever to ws://<IP_ADDRESS>:9222/devtools/browser/bc537da7-79e6-4443-9f89-fc297c94a113
Tried a lot of different setups with no avail.. Any tip would be appreciated !

Hi @thomasdarde, please set Webdrivers.logger.level = :DEBUG after requiring the gem and share the log here.

@thomasdarde Maybe Rspec is overwriting your configuration when starting? Is there a good point, just before the test suit opens the browser, where you can have the test suit print Selenium::WebDriver::Chrome.path to ensure it's still correct? In minitest I'd do that in the setup method.

Thanks a lot for the replies !
Here is the updated code :
Webdrivers.cache_time = 86_400
puts "setting debug level for webdrivers logger"
puts "GOOGLE_CHROME_BIN is: #{ENV.fetch('GOOGLE_CHROME_BIN', nil)} "
puts "GOOGLE_CHROME_SHIM is: #{ENV.fetch('GOOGLE_CHROME_SHIM', nil)} "

puts "--product-version : #{`/app/.apt/opt/google/chrome/chrome --product-version`} "
Webdrivers.logger.level = :DEBUG
require 'webdrivers'

# From : https://github.com/titusfortner/webdrivers/issues/72
if ENV.fetch('GOOGLE_CHROME_BIN', nil)
  Selenium::WebDriver::Chrome.path = ENV.fetch('GOOGLE_CHROME_BIN', nil)
  options = Selenium::WebDriver::Chrome::Options.new
  options.binary = ENV.fetch('GOOGLE_CHROME_SHIM', nil)
  driver = Selenium::WebDriver.for :chrome, options: options
end

and the output
setting debug level for webdrivers logger
GOOGLE_CHROME_BIN is: /app/.apt/usr/bin/google-chrome
GOOGLE_CHROME_SHIM is: /app/.apt/usr/bin/google-chrome
--product-version : 74.0.3729.157

2019-05-17 07:41:43 DEBUG Webdrivers Checking current version
2019-05-17 07:41:43 DEBUG Webdrivers /app/.webdrivers/chromedriver is not already downloaded
2019-05-17 07:41:43 DEBUG Webdrivers Browser executable: '/app/.apt/usr/bin/google-chrome'
2019-05-17 07:41:43 DEBUG Webdrivers making System call: /app/.apt/usr/bin/google-chrome --product-version
DevTools listening on ws://<IP_ADDRESS>:9222/devtools/browser/fca91d6e-3e9d-4dfe-8f2d-cbe7c11f1550

So the issue was found :  GOOGLE_CHROME_BIN was set as an env var to another value (/app/.apt/usr/bin/google-chrome) in the CI due to an old configuration...
In the end, this is my (working) config (Rspec/capybara/webdrivers) :
At the beginning of the rails_helper:
Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }

The file spec/support/capybara_webdrivers.rb
Webdrivers.cache_time = 86_400

# Some help to debug on CI
# puts "--product-version : #{`/app/.apt/opt/google/chrome/chrome --product-version`} "
# Webdrivers.logger.level = :DEBUG
require "webdrivers"

chrome_shim = ENV.fetch("GOOGLE_CHROME_SHIM", nil)
chrome_bin = ENV.fetch("GOOGLE_CHROME_BIN", nil)

# From : https://github.com/titusfortner/webdrivers/issues/72

Selenium::WebDriver::Chrome.path = chrome_bin if chrome_bin
chrome_args = {args: %w[headless disable-gpu window-size=1280,1024]}
selenium_options = Selenium::WebDriver::Chrome::Options.new(chrome_args)
selenium_options.binary = chrome_shim if chrome_shim

Capybara.register_driver :chrome do |app|
  Capybara::Selenium::Driver.new(
    app,
    browser: :chrome, options: selenium_options
  )
end

# Silent puma in logs
Capybara.server = :puma, { Silent: true }

@thomasdarde Glad you figured it out. It got stuck on the DevTools listening line because it was attempting to extract the --product-version from the binary, but the binary was responding by launching the browser instead. Using the correct binary will always solve this problem.

The latest version of the google-chrome buildpack no longer needs the workaround described here. We've updated the SHIM to support webdrivers. See https://github.com/heroku/heroku-buildpack-google-chrome/pull/73/ for more information.


Invalid MAC address in example

"Table 4.9: mac-address Property" contains an example for the use of this property:
mac-address = [ 01 02 03 04 05 06 ];
This MAC address is a group address, therefore cannot be used as source address.
Please replace the 01 by a even value, e.g.:
mac-address = [ 02 03 04 05 06 07 ];
which constitutes a locally administered address.

Can you make a PR or patch to fix it.


Update Please [1.19.3] EMI Merge

Please could https://github.com/wisp-forest/alloy-forgery/pull/87 be updated so we can start using EMI ?   fzzyhmstrs  has informed me its sitting somewhere but not pushed
Im updated DarkRPG to 1.19.3 soon, so would be nice to have this thanks

It is pushed, it was simply not released. I have just gone ahead and made a new release which includes this.


CO-1923_Redirect_to_Edit_after_Group_Add

Redirect to edit group after adding a group. This approach allows for arbitrary redirects to be sent from any controller.

@spartanicus to reimplement as a StandardController variable rather than use viewVars.


Git gutter not shown in workspace with multiple folders

Type: Bug
To reproduce:

open VS Code
open a folder and choose a git repo with changes
open a file with changes and notice the gutter is shown
add a folder to the workspace and choose a git repo
notice the gutter is still visible
now close the file and reopen it

Expected behavior: the gutter is shown
Actual behavior: the gutter is not shown
@alexr00 this may be related to #176051. @joyceerhl actually described pretty much the same issue. However a reload (I assume that is Developer: Reload Window) doesn't help in this case.
VS Code version: Code - Insiders 1.77.0-insider (b60db78000bfa99d1b290194ed4651c4ceef02cc, 2023-03-10T05:24:23.805Z)
OS version: Windows_NT x64 10.0.22621
Modes:
Sandboxed: Yes

System Info

Item
Value

CPUs
Intel(R) Core(TM) i7-10610U CPU @ 1.80GHz (8 x 2304)

GPU Status
2d_canvas: enabledcanvas_oop_rasterization: disabled_offdirect_rendering_display_compositor: disabled_off_okgpu_compositing: enabledmultiple_raster_threads: enabled_onopengl: enabled_onrasterization: enabledraw_draw: disabled_off_okskia_renderer: enabled_onvideo_decode: enabledvideo_encode: enabledvulkan: disabled_offwebgl: enabledwebgl2: enabledwebgpu: disabled_off

Load (avg)
undefined

Memory (System)
15.61GB (2.69GB free)

Process Argv

Screen Reader
no

VM
0%

Extensions: none
A/B Experiments
vsliv695:30137379
vsins829:30139715
vsliv368cf:30146710
vsreu685:30147344
python383:30185418
vspor879:30202332
vspor708:30202333
vspor363:30204092
vslsvsres303:30308271
pythonvspyl392:30422396
pythontb:30258533
pythonptprofiler:30281269
vsdfh931cf:30280410
vshan820:30294714
pythondataviewer:30285072
vscod805:30301674
bridge0708:30335490
bridge0723:30353136
cmake_vspar411:30581797
vsaa593cf:30376535
pythonvs932:30404738
cppdebug:30492333
vsclangdf:30492506
c4g48928:30535728
dsvsc012:30540252
pynewext54:30618038
pylantcb52:30590116
pyindex848:30611229
nodejswelcome1:30587009
pyind779:30611226
pythonsymbol12:30651887
showlangstatbar:30659908
pythonb192cf:30661257
funwalk2cf:30682975
pythonms35:30671666
19089226:30680468
7ij38806:30677315

Thanks for the @ mention and for the repro steps!

Also having the same issue. Installing a previous version (1.75.1) helped to solve it (temporarily, until it's fixed).

Folk who are seeing this issue: Could you please install the latest insiders build and confirm that you no longer see the issues there?

Folks who are seeing this issue: Could you please install the latest insiders build and confirm that you no longer see the issues there?

Yes. The issue resolved in the latest insider version.

Related Stack Overflow questions:

Why aren't SCM diff decorations showing in the gutter in VS Code 1.76.1? I'd prefer using this one as a duplicate target on Stack Overflow since it's asked much cleaner.
Why aren't SCM diff decorations showing in the VS Code gutter in VS Code 1.76.1?
Git Changes indicator does not appear in VSCode
VScode does not highlight the modified line
Vscode stopped highlighting file changes
Visual Studio Code not showing file changes on left side bar

Thanks for confirming that the issue is fixed in insiders!

Wow, so it was a bug, not an actual symlink-issue as I thought. So happy now, thanks! Context: https://github.com/microsoft/vscode/issues/5970#issuecomment-1470260667

This issue seems to be fixed in version 1.76.2 for git repositories, however it is not yet fixed for Mercurial (mrcrowl.hg extension).

Im having the same issues, reinstalling helped fix the current file having the issue but any file created after wont show the indicators. Disabling extensions wont work either and Im not sure on how to reproduce the steps
Version: 1.76.2 (user setup)
OS: Windows_NT x64 10.0.19045


fix: fix bug that resulted in a variable dialog appearing atop the procedure editor dialog on mobile

This PR fixes https://github.com/gonfunko/scratch-blocks/issues/169. Scratch doesn't use modal inputs on mobile like Blockly core does, but because this functionality wasn't being suppressed with the appropriate injection option, when the procedure editor modal was displayed, the default block, which has an editable text field, became focused, and on mobile caused a call to prompt(), resulting in the secondary dialog.

Added https://github.com/google/blockly/issues/8580 to document this option, since I was surprised to find it has no documentation.
I don't actually understand hwo this fixes the underlying problem. Why does the variable modal pop up from the procedure block?

When the Make a Block button is clicked to open the procedure editor, the starting block has the "block name" field which automatically gets focus. Without this change, on mobile, Blockly displays a modal dialog using `prompt()` to allow you to change the value of that field. Note that it isn't actually a variable dialog; Scratch swaps out the prompt implementation for one that looks at various passed-in fields, and depending upon the title configures the prompt for adding variables, lists, etc. The logic is such that it defaults to the "New Variable" title and the for this sprite/for all sprites option, but this is just a plain old prompt to modally edit a field value - note the "Change value" label for the text field, which is the only bit that actually does get passed into the prompt call.

Note that it isn't actually a variable dialog; Scratch swaps out the prompt implementation

Got it, this was the piece I was missing.


Seed all imported libraries

Description of Issue
This is a enhancement request, can we include functionality to seed all the libraries? I had wanted to create something similar to this library, and would like to have this added functionality. It'd be great if I can work on this if this is allowed.

@sulphatet sure. Can you just explain first what exactly you want to accomplish? What is the problem you are trying to solve? How do you want to solve it?


Use matchMedia API

Is there a reason you chose to listen to window resize rather than use the JS media query API?

mainly compatibility, if you want to implement a getter with support for this API, PRs are welcome


Comms Benchmarks

Add benchmarks for DS comms

[x] Allgather
[x] Allreduce
[x] Alltoall
[x] Pt2pt
[x] README

@jeffra and @awan-10 -- This PR is ready for review. See the README for usage.


Command structure changes for azure devops cli security commands

Sorry, got the wrong repo. Closing this PR


Fixing Very Fragmented Ephemeral condemn reason name and description

This PR resolves #616 - by providing more accurate name and description of the condemn reason named so far "Very Fragmented Ephemeral".

@Maoni0  Please take a quick look.   You seemed to agree with his analysis in  issue #616.  If you are OK with it feel free to merge it.

I would rename the header to "Low EphemeralFragmented Gen2". now that I read the text I am not sure how people would interpret "but gen2 is fragmented enough to compensate (for) that", perhaps it's better to make it more clear by saying "but gen2 is fragmented enough so a full GC would avoid expanding the heap"

I've finally fixed it according to @Maoni0 suggestions.


Hover that displays Rate Rules information.

Blocked by https://github.com/sys-bio/vscode-antimony/issues/45

rate rules merged


portico_signin: Wrap long email names to next line.

Along with wrapping long emails to next line, set the max-width of the email confirmation box to the alert box.

Followup on https://github.com/zulip/zulip/pull/24117#issuecomment-1402480368

The screenshots look good to me; I have not done manual testing.

Merged, thanks @amanagr!


Asdsad branch merge

@Idrinth could you take a look. Thanks.

Now looks good, what do you think @Idrinth ?

regarding the whitespace-changes, that should actually be taken care of automatically - just didn't finish debugging the library that produces invalid code at some places atm.

Thanks for your comments ;) I did minor alignment for readability purpose.

@w20k didn't mean you needed to remove the chack, just turn the condition around and remove the unneeded extra line.

and thanks for fixing my overlooked dash :+1:

Thanks for your comment and points! Was very useful.
I think we need JS linter to make sure our code is styles are the same in each branch. What IDE you use for JS?


Conform to Babel plugin naming scheme

Hiya, since this is just a Babel Plugin it should be following the babel plugin naming scheme.
babel-plugin-descriptive-name-of-what-it-does

I'm sure you spent a lot of time thinking of kneden, and it's nice but it'd be better to respect community standards.

This project didn't start out as a Babel plug-in, it originally used straight up acorn/estraverse. I then chose the package name, and published to it. I saw no reason to change it after the conversion to Babel. (This was all pre-1.0.0, and Babel seems to support both "babel-plugin-name" & "name" just fine in .babelrc. I saw the babel-plugin- convention at that point, but didn't know about the descriptive name convention.)
I certainly don't want to play down play Babel's role in this project, but I don't think I do so either: it's clearly in the README.
I could register, say, babel-plugin-async-to-promise-chain, but the project's name has spread now so that will cause at least some confusion. Is it really worth it do so, now?

Part of the reason, or at least one of the big benefits, for the descriptive naming is to make .babelrc's easier to follow from newcomers:
plugins: [
  "transform-remove-debugger",
  "transform-simplify-comparison-operators",
  "transform-strict-mode",
  "transform-react-display-name",
  ...
]

Having kneden dumped in the middle just means that you now have to google to figure out what it does.

@thejameskyle Thanks for the quick response.
At this point I'm against breaking the npm package & the name recognizability, but it would be possible to fix the particular problem you name by publishing a small wrapper package babel-plugin-transform-async-to-promise-chain that depends on the kneden package, and making it the default entrypoint in the documentation. Both names could be mentioned in the README.md file in text (e.g. title) to make search engine users happy.
Would that work, or are there any other reasons to take into account?

As a side node, your last comment would in my opinion be a nice addition to your plugin handbook. If I had read it while converting to Babel, and I did read the complete handbook then, I probably would've switched then, avoiding the issue. :)

If it's up for a vote I'm in favor of a prosaic name like babel-plugin-async-to-promises with an eye toward eventual inclusion in the Babel multi-repo over babel-plugin-async-to-generator. There's no reason this shouldn't be the default after all the bugs are worked out; it has a significant performance advantage and would be of broad general benefit to the JS community.

There's only a handful of users of kneden today. In my experience, changing the name early on is better than later.
If you just rename this package and publish it under the new name, you can npm deprecate this package and leave a deprecation warning pointing people where to go.

I just switched the npm package name to babel-plugin-async-to-promises. The 'kneden' package is replaced by a dummy package which points to the current version of the former. I plan to keep that up to at least the next major release.
In the long term, I might fully phase out the name Kneden, but for now I'm happy with the current approach: using a descriptive npm package name & naming both in the README. Thanks for the input everyone!


Cartesian Impedance Controller FREQUENTLY Dies

Type of Issue
Select the type of issue:

[X ] Bug report (to report a bug)

Description
I'm not sure if its the case for others, but when running the impedance controller for a prolonged period of time (~30 seconds), it randomly and frequently dies out after around 10 seconds or less.
Current Behavior
Even though I have a line calling robot.start_cartesian_impedance(), it works for a few seconds, and then eventually throughs an error saying I have to call robot.start_cartesian_impedance() before using impedance control.
Expected Behavior
I expected that once I call robot.start_cartesian_impedance(), it should continue working for quite a while
Steps to reproduce
Run the impedance controller for around 30 seconds.

It looks like it doesn't always have to do with time ran. When using the example script for cartesian control, maybe 1 out of every 5 runs errors for this reason

Warning: Failed to load 'libtorchscript_pinocchio.so' from CONDA_PREFIX, loading from default build directory instead: '/home/khazatsky/code/fairo/polymetis/polymetis/build/torch_isolation/libtorchscript_pinocchio.so' Warning: Failed to load 'libtorchrot.so' from CONDA_PREFIX, loading from default build directory instead: '/home/khazatsky/code/fairo/polymetis/polymetis/build/torch_isolation/libtorchrot.so' Performing Cartesian impedance control... Unable to update desired EE pose. Use 'start_cartesian_impedance' to start a Cartesian impedance controller. Traceback (most recent call last):   File "main.py", line 28, in <module>     robot.update_desired_ee_pose(position=ee_pos)   File "/home/khazatsky/code/fairo/polymetis/polymetis/python/polymetis/robot_interface.py", line 587, in update_desired_ee_pose     raise e   File "/home/khazatsky/code/fairo/polymetis/polymetis/python/polymetis/robot_interface.py", line 582, in update_desired_ee_pose     update_idx = self.update_current_policy(param_dict)   File "/home/khazatsky/code/fairo/polymetis/polymetis/python/polymetis/robot_interface.py", line 238, in update_current_policy     raise grpc.RpcError(f"POLYMETIS SERVER ERROR --\n{e.details()}") from None grpc.RpcError: POLYMETIS SERVER ERROR -- Tried to perform a controller update with no controller running.

Apologies for these issues, I know how annoying they can be.
We have been experiencing this performance issue a lot over the past, which usually goes away on this particular NUC spec after disabling CPU scaling.
If that doesn't work for you, providing the diagnosis data from the tests described in the troubleshooting section will help us in pinpointing the source of the problem you are experiencing.

I disabled CPU scaling, and I'm still having the same issues :(
I'll look into the diagnostics stuff, thank you so much for all your help.

Alright, here's the diagnostics. I have tried with real kernel 5.11 (which made my NUC very slow to interact with) and real kernel 5.9.1 (which doesn't have this issue). I have had the same results with both, with and without disabling cpu scaling.
Libfranka Communication test: Average Success Rate of 97%
End to End Test: Joint PD: 0.2501/ 0.0280 / 0.7005 / 0.1465 / 0.00%, Cartesian PD: 0.3694/ 0.0373 / 1.0933 / 0.1239 / 0.00%

Here is the server error I get:
[2022-06-03 18:20:17.631] [info] Loaded new controller.
[2022-06-03 18:20:17.895] [error] Robot is unable to be controlled: libfranka: Move command aborted: motion aborted by reflex! ["communication_constraints_violation"]
control_command_success_rate: 0.46
[2022-06-03 18:20:17.895] [warning] Performing automatic error recovery. This calls franka::Robot::automaticErrorRecovery, which is equivalent to pressing and releasing the external activation device.
[2022-06-03 18:20:17.895] [warning] Automatic error recovery attempt 1/3...
[2022-06-03 18:20:18.897] [warning] Robot operation recovered.
[2022-06-03 18:20:18.900] [warning] Interrupted control update greater than threshold of<PHONE_NUMBER> ns. Reverting to default controller...
[2022-06-03 18:20:18.900] [info] Terminating custom controller, switching to default controller.
[2022-06-03 18:20:18.931] [warning] Tried to perform a controller update with no controller running.

I have talked with someone else who just started using Polymetis, and they have the same exact issue. I think it might be very prevalent.

Looks like your End to End Test results looks okay, although a bit on the slower side.
This exact issue can happen whenever the CPU performance isn't sufficient, but reasons for that can vary which make it very hard to debug. I don't think I will be able to help much in the immediate sense, you will need to look into various ways to improve CPU performance of your machine or to get a better machine. Suggestions I have is to look for and terminate background processes that are taking up resources, and maybe ensuring that the CPU is using the "performance" governor. Overclocking might also be an option.
Some architectural changes that will improve performance across the board is being planned, although I cannot guarantee a delivery date for now.

One thought about this - I’m running both the server and the controller (the example impedance script) on the same NUC (62g RAM, 8 CPUs which are i7 @ 2.8 GHz). Could this be the issue? Is it possible this will go away if I send commands from a different machine?

Also if it helps, the joint impedance control didnt really die. It's only the cartesian impedance control.

Running the script on a different machine may help, but I expect the benefits are minimal as the script does not take up a lot of resources. Also, I am able to run my scripts on the NUC without any problems on my setup.
Another thought, have you tried running the network tests here? It might be the case where your machine is fast enough but your network connection to the robot isn't.

I’ve tried them. The robot is connected through a direct wire to the NUC and so the connection definitely seems fast enough.

Out of curiosity, are the spec's of your NUC comparable to mine? I'm completely at a loss for how I'm having these issues but no one else is. Is it also possible that upgrading to lib Franka 0.9.0 could help? I'm guessing not since you all have been using 0.8.0 it seems.

For reference, here are the specs for my NUC which is even older than the current batch we purchased at bulk for testing.
~/ cpuinfo
Python Version: 3.8.13.final.0 (64 bit)
Cpuinfo Version: 8.0.0
Vendor ID Raw: GenuineIntel
Hardware Raw:
Brand Raw: Intel(R) Core(TM) i7-10710U CPU @ 1.10GHz
Hz Advertised Friendly: 1.1000 GHz
Hz Actual Friendly: 3.3000 GHz
Hz Advertised:<PHONE_NUMBER>, 0)
Hz Actual:<PHONE_NUMBER>, 0)
Arch: X86_64
Bits: 64
Count: 12
Arch String Raw: x86_64
L1 Data Cache Size: 32768
L1 Instruction Cache Size: 32768
L2 Cache Size: 262144
L2 Cache Line Size: 256
L2 Cache Associativity: 6
L3 Cache Size: 12582912
Stepping:
Model: 166
Family: 6
Processor Type:
Flags: 3dnowprefetch, abm, acpi, adx, aes, aperfmperf, apic, arat, arch_capabilities, arch_perfmon, art, avx, avx2, bmi1, bmi2, bts, clflush, clflushopt, cmov, constant_tsc, cpuid, cpuid_fault, cx16, cx8, de, ds_cpl, dtes64, dtherm, dts, epb, ept, ept_ad, erms, est, f16c, flexpriority, flush_l1d, fma, fpu, fsgsbase, fxsr, ht, hwp, hwp_act_window, hwp_epp, hwp_notify, ibpb, ibrs, ibrs_enhanced, ida, intel_pt, invpcid, invpcid_single, lahf_lm, lm, mca, mce, md_clear, mmx, monitor, movbe, mpx, msr, mtrr, nonstop_tsc, nopl, nx, osxsave, pae, pat, pbe, pcid, pclmulqdq, pdcm, pdpe1gb, pebs, pge, pln, pni, popcnt, pse, pse36, pts, rdrand, rdrnd, rdseed, rdtscp, rep_good, sdbg, sep, sgx, smap, smep, ss, ssbd, sse, sse2, sse4_1, sse4_2, ssse3, stibp, syscall, tm, tm2, tpr_shadow, tsc, tsc_adjust, tsc_deadline_timer, tscdeadline, vme, vmx, vnmi, vpid, x2apic, xgetbv1, xsave, xsavec, xsaveopt, xsaves, xtopology, xtpr

~/ lscpu
Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              12
On-line CPU(s) list: 0-11
Thread(s) per core:  2
Core(s) per socket:  6
Socket(s):           1
NUMA node(s):        1
Vendor ID:           GenuineIntel
CPU family:          6
Model:               166
Model name:          Intel(R) Core(TM) i7-10710U CPU @ 1.10GHz
Stepping:            0
CPU MHz:             3299.997
CPU max MHz:         4700.0000
CPU min MHz:         400.0000
BogoMIPS:            3199.92
Virtualization:      VT-x
L1d cache:           32K
L1i cache:           32K
L2 cache:            256K
L3 cache:            12288K
NUMA node0 CPU(s):   0-11
Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp md_clear flush_l1d arch_capabilities

Do you guys notice any difference in performance between libfranka versions?

We haven't noticed any, although we did not run any benchmarks to confirm that. Nevertheless, Cartesian impedance controllers work well on both versions for us.

I have an interesting update! I have resolved the issue by using Ubuntu 18 and a specific version from the conda installed polymetis. Below is my experience summary:
Polymetis installed from source (Ubuntu 18):

Neither simulated or read robot worked

Polymetis installed from source (Ubuntu 20):

Simulated robot worked
Real robot worked with errors (communication errors there, and killed script)

Polymetis installed from Conda (Ubuntu 18):

Simulated robot didn't work
Real robot worked entirely (communication errors there, didn't kill script)

——————
I don’t think these results make it clear whether the difference is Ubuntu 18 vs 20 or installing from conda vs building it from source. Either way, it would be extremely helpful if you guys could look into this, given that our lab would like to be able to keep using the most up to date version of polymetis. Im happy to help in this process.
On a side note, the Polymetis support for Ubuntu 18 seems to have deteriorated, and we ran into significantly more problems setting it up than on Ubuntu 20.

The support we've been providing should not differ between different Ubuntu releases, and we even have automated tests on both Ubuntu 18 and 20 to assure things are working for both.
As I mentioned, system performance is affected by a lot of issues, which could come from any step within the setup and not just the difference in the Ubuntu version. It is quite hard for me to look into exactly why only certain configurations work for you as I cannot reproduce any of the problems that you are experiencing on my side as of now. However, I will be pushing for general performance improvements as long as there are people experiencing these issues.
I am curious as to why simulated robots would not work in any situation, though. Can you provide the error messages you are seeing?

To add onto @exhaustin's comment: you can check the exact Dockerfiles for Ubuntu 18 and Ubuntu 20, as well as the tests we run for both. Is your environment different?

Sorry for the late reply, here's the error I'm seeing:
`Traceback (most recent call last):
File "/home/sasha/anaconda3/envs/polymetis/lib/python3.8/site-packages/hydra/_internal/utils.py", line 529, in _locate
module = import_module(mod)
File "/home/sasha/anaconda3/envs/polymetis/lib/python3.8/importlib/init.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "", line 1011, in _gcd_import
File "", line 950, in _sanity_check
ValueError: Empty module name
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/home/sasha/anaconda3/envs/polymetis/lib/python3.8/site-packages/hydra/utils.py", line 61, in call
type_or_callable = _locate(cls)
File "/home/sasha/anaconda3/envs/polymetis/lib/python3.8/site-packages/hydra/_internal/utils.py", line 532, in _locate
raise ImportError(f"Error loading module '{path}'") from e
ImportError: Error loading module 'polysim.grpc_sim_client.GrpcSimulationClient'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/home/sasha/anaconda3/envs/polymetis/bin/launch_robot.py", line 89, in main
client = hydra.utils.instantiate(cfg.robot_client)
File "/home/sasha/anaconda3/envs/polymetis/lib/python3.8/site-packages/hydra/utils.py", line 70, in call
raise HydraException(f"Error calling '{cls}' : {e}") from e
hydra.errors.HydraException: Error calling 'polysim.grpc_sim_client.GrpcSimulationClient' : Error loading module 'polysim.grpc_sim_client.GrpcSimulationClient'
Set the environment variable HYDRA_FULL_ERROR=1 for a complete stack trace.
[2022-06-13 18:46:34,178][main][INFO] - Killing subprocess with pid 12066, pgid 12066...
`

@AlexanderKhazatsky please reopen this issue if you're still having problems with the original issue, or open a new issue for the PyBullet / OpenGL issues.

Just wanted to leave a comment about having really similar issues here. Specifically, joint control seems to work well (albeit on the slower side), but cartesian impedance fails almost immediately. Similarily, I'm running both the server and the commands on the NUC (and am in the process of moving the 'command' files to an off-board PC to see if this helps).

The latency benchmark tests the end-to-end latency of the process of sending the states to the server, inferencing the controller in the server, and getting the output action from the server. So bad timings can be the result of either slow processing power or internet latency (or both).
As mentioned above, the internet latency can be tested with the libfranka communication test.
If the issue is processing power, try disabling the CPU scaling if you haven't yet, and consider getting a more powerful machine if all fails.

I forgot to turn on Release mode when building. This fixed the issues I had been having. Might be worth adding to the docs at some point though!
-DCMAKE_BUILD_TYPE=Release

Can someone from Polymetis investigate this? I'm still having this issue still and would love a solution :)

Are you building from source? If not, this is most likely not the problem. I suspect (I actually haven't checked this) but building using the conda scripts should probably build things from source automatically?
@AlexanderKhazatsky The above flag should be added to the CMake command if you're building it from source (https://facebookresearch.github.io/fairo/polymetis/installation.html#for-advanced-users-developers)
Specifically, the command should be something like:
cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_FRANKA=[OFF/ON] -DBUILD_TESTS=[OFF/ON] -DBUILD_DOCS=[OFF/ON]
If you're still having this problem it's worth exploring building from source?

Are you building from source? If not, this is most likely not the problem. I suspect (I actually haven't checked this) but building using the conda scripts should probably build things from source automatically?
@AlexanderKhazatsky The above flag should be added to the CMake command if you're building it from source (https://facebookresearch.github.io/fairo/polymetis/installation.html#for-advanced-users-developers)
Specifically, the command should be something like:
cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_FRANKA=[OFF/ON] -DBUILD_TESTS=[OFF/ON] -DBUILD_DOCS=[OFF/ON]
If you're still having this problem it's worth exploring building from source?

I had the exact same problem. Changing the build type to release (on the polymetis server side) fixed the communication_constraints_violations error for me. (I'm building polymetis from source)

Sorry about that and thanks for catching this -- at some point Release was the default mode (and still is in the conda-built packages), but the default was changed for standardization / debugging purposes. I updated the docs in #1323 to reflect this.

Hi, @exhaustin, I also met the same issue, the cartesian control immediately dies or dies after I run some command to give it a cartesian goal position. Could you tell me what is the model of your NUC? Is it NUC TNK v5 or v7? I'm using a very old one (a NUC 7 i5)
Also, my current FCI version is 4.0.4, which version of polymetis do you recommend me using? I tried a few versions from 636 to 1065, and only 1065 didn't give me the following error. But 1065 has the problem of cartesian control dying. I'm a little bit lost now and don't know how to make the polymetis works.

subprocess.CalledProcessError: Command '['sudo', 'env', '"PATH=$PATH"', '/home/haoli/anaconda3/envs/polymetis/bin/franka_panda_client', '/tmp/tmpi609pzpb']' died with <Signals.SIGABRT: 6>.

From my experience i5 CPUs in general are not powerful enough to keep up with the real time control loop, so switching to an i7 would definitely help. We've had success getting it to work on i7 NUCs from NUC 7 throughout NUC 10.
Nevertheless, it would help if you can go through our troubleshooting section to ensure that you are getting the most performance out of your CPU and pinpoint the exact problem.
The latest version of Polymetis should give the most bug-free and stable performance. Can you upgrade your FCI to the latest version (4.2.0)? It can be done quite easily through Franka World. If not you might need to build Polymetis from source to use a particular version of libfranka that works with your version of the FCI.l


Deserializing anonymous function

Track anonymous functions bodies when we serialize them in the byte code. Otherwise it's impossible on deserialization to tell the difference between an anonymous function and a function with the name, 'Anonymous function.' The difference determines, for instance, whether instances of the function body have a name property.

Storing and retrieving isAnonymous looks good to me.


As a developer, I want to visualize Census TIGER vector data in my national map from my own pipeline.

Description
This is primarily centered around getting this base data into geoplatform in a usable way, not user experience for the map.
Solution
Use the geoplatform.gov platform for processing this straightforward dataset for our base of geographic boundaries in the national map.
Note: We want to be able to run the data pipeline end to end locally / without hosting dependencies. We should talk to geoplatform about process for adding the TIGER data and how we might be able to host or store in version control the processing code.
Lots of dependencies on geoplatform and unknownss.
Describe alternatives you've considered
We could do this without geoplatform processing but we need to move forward on setting up the infrastructure.
Links to user research or other resources
Tasks

[x] Geoplatform.gov will get back to us by COB 6/4 with timeline for processing the TIGER data.
[x] Talk to geoplatform about making this code available open source and available in a docker container
[ ] Ensure the data is available on the geoplatform.gov pipeline and tile server in the format we need
[ ] Point the map in the tool to visualize this data. (In meantime, we can use census tile server until we set up our pipeline)

Definition of "Done"

[ ] Visit the tool map page and see the census block group borders rendered on the map above zoom level 9 (locally or production)

https://www2.census.gov/geo/tiger/TIGER2010/BG/2010/?C=S;O=D is where you can get 2010 basic blockgroups.
tl_2010_01_bg10.zip would represent a state.
tl_2010_XX_bg10.zip 01 to 56 and 72 if you want Puerto Rico.
https://www.census.gov/geographies/reference-files/time-series/geo/tallies.html has the state tables for reference.

Draft PR in progress: https://github.com/usds/justice40-tool/pull/122

@esfoobar-usds Note that starting with Minnesota would be best if possible

This task is awaiting @NatHillardUSDS's confirmation that he can read the mvt folder on s3, once it's completely uploaded, otherwise it's complete and can see the CBGs on my local machine.


patch/update would better return the number of affected rows

Since OINAORM (Objection is not an ORM) it would be cleaner to just not
try to return an instance after a patch or update call - it doesn't really make sense
as soon as we're updating multiple records.
This is related to https://github.com/Vincit/objection.js/issues/21

You may be right. Returning a partial object is confusing even when patching single rows, since the whole instance is not returned as pointed out in #21. Maybe we should do this also for the update method since its return value doesn't contain the updates calculated in the DB?
So maybe patch, update and delete should all just return the count of affected rows and then we could add convenience methods like patchAndFetchById since that is the usual usage. patchAndFetchById would do a patch and also make an addition read query to fetch the fresh instance as discussed in #21.

I'm reading https://github.com/Vincit/objection.js/issues/21#issuecomment-127559495 as "returning fetched/updated/deleted instance should be implemented in objection-rest, not in objection itself".
Because in the REST interface, update/patch/delete are only possible by id. A convenient method seems to be doomed by corner cases.

Yes, I don't know if you misunderstood my previous post, but that is what I meant. If we add some sort of convenience methods that return the actual database rows, they should be for a single id like patchAndFetchById as I mentioned before.

Adding to the obvious, but nonetheless painful, missing number of affected rows issue: there is no simple way of knowing if a .del() was successful - besides doing a second query.

As a temporary workaround you can use the knexQuery() method of the model:
Person.knexQuery().del().where('foo', 'bar').then(function (delCount) {
  console.log(delCount, 'rows were deleted');
});

Same goes for update/patch.

What do you think about this?
Person.query().patch({a: 'b'}).where('foo', '=', 'bar').then(function (patch) {
  console.log('we just deleted, patch.$numModified, 'rows');
});

Person.query().delete().where('foo', '=', 'bar').then(function (ret) {
  console.log('we just deleted, ret.$numModified, 'rows');
});

The $numModified special property is prefixed with $ and will not appear in the object returned by toJSON method. We could also make the $numModified non-enumerable using Object.defineProperty.
I'd like to still return the input object as so that you can do stuff like this easily:
expressApp.get('/some/path/:id, function (req, res, next) {
  Person.query().patch(req.body).where('id', req.params.id).then(function (patch) {
    res.send(patch);
  }).catch(next);
});

IMO it would be misleading to return something that is not truth from database as a result for query. +1 to just return modified count and let user decide what to return in that case (e.g. if other query is needed)

Ideas for alternatives:

add a function(patch, affectedCount) parameter
add a property (or even a method) to the current query (the one returned from Person.query())

Ok, everyone else but me seem to be against the "fake objects" as a result. Let's return only the affected count from the update, patch and delete methods as originally suggested by @kapouer. I think we should still return a fake object from insert though. Or do you think we should only return the identifier from that as well since the object is not a "truth from database"?

Variations:

Person.query().patch().where().fetch().then()
Person.query().patch().where().affected().then()

Youhou !


fix: JS option missing for Label Font Style in Input widget

Description

Made changes to baseinputwidget label style - Emphasis Property
Fixes #15542

Type of change

Bug fix (non-breaking change which fixes an issue)

How Has This Been Tested?
This has been tested locally on my Computer
Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[x] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes

@aswathkk can you review this change? It's from our external contributor

@aswathkk I have made the changes

/ok-to-test sha=d76c635


core: Add customer type to sender/receiver validation methods and delete calls.

PR Checklist
PR Structure

[x] This PR has reasonably narrow scope (if not, break it down into smaller PRs).
[x] This PR avoids mixing refactoring changes with feature changes (split into two PRs
otherwise).
[x] This PR's title starts with name of package that is most changed in the PR, ex.
paymentservice.stellar, or all or doc if the changes are broad or impact many
packages.

Thoroughness

[x] This PR adds tests for the most critical parts of the new functionality or fixes.

What
Add customer type to sender/receiver validation methods and delete calls.
Why
Customer type should be specified for these calls, as specified in SEP12.
Known limitations
This is meant to be a short term-solution to resolve integration issues. TODOs have been added to address long term concerns (eg, choosing the first customer type in the sender/receiver map)

Reference Server Preview is available here:https://anchor-ref-pr362.previews.kube001.services.stellar-ops.com/SEP Server Preview is available here:https://anchor-sep-pr362.previews.kube001.services.stellar-ops.com/

Reference Server Preview is available here:https://anchor-ref-pr362.previews.kube001.services.stellar-ops.com/SEP Server Preview is available here:https://anchor-sep-pr362.previews.kube001.services.stellar-ops.com/


Make crash e2e more stable

Description:
Currently, crash e2e's start by reloading RN instead of restarting from scratch. This means the test doesn't really begin fresh, from scratch - as some native state properties can leak in. Not just theoretical -- on Android, this made the app load inside a different activity that's related to url launch checking (previous test was urls related).

How is leaking related to the crash test? If the app crashes, it should be caught in whatever view or activity the crash occurred. The crash is unrelated to UI anyway?

well yes, it is related since the app has been launched last with a url. in that case, it loads up a screen that shows the url rather than the usual main menu.
Perhaps that was also an issue on iOS, except that on iOS the suite has other tests in between.

But why does it matter one what screen the app crashes?

Or is the "crash" button on the main menu?
In that case, why isn't reloadReactNative reseting correctly to the main screen?

You crash the app by tapping a crash button from the main menu


SEO + Open Graph

As we prep for the v1 launch we need to revisit the following:

SEO / Metatags - ensure we're well optimized for search
Implement Open Graph data - consider using Vercel's Satori tool
Revisit our blog SEO/Open graph, as Ghost provides some of this turnkey.

@niktek I welcome your support on this one as well!

https://twitter.com/geoffrich_/status/1580954774434119680

Just doing some background research and came across this component for handling metadata in svelte:
https://github.com/oekazuma/svelte-meta-tags
Seems to be recently updated too

Here's svelte equivalent of vercel-og using satori:
https://github.com/etherCorps/sveltekit-og

FYI I've tagged myself and Nik since we will need to be involved with this, but I do welcome help from anyone wiling and able to implement the changes in the codebase. Thanks!

https://www.ogimage.gallery/

Reference: https://kit.svelte.dev/docs/seo#manual-setup-title-and-meta

A PR is now available and ready to test here:
Unfortunately it wasn't as trivial as I'd hoped. But here's what the "before" looked like with meta tag tools like:
https://metatags.io/

Then after:
https://cdn.discordapp.com/attachments/1003699523522142399/1063548144538898483/Screen_Shot_2023-01-13_at_1.57.31_PM.png
https://cdn.discordapp.com/attachments/1003699523522142399/1063548144928952400/Screen_Shot_2023-01-13_at_1.57.38_PM.png
However I am getting one odd issue - when testing directly on Twitter, I get inconsistent results.

For the homepage, the open graph data never appears. Though it's very clearly set.
For article pages, it never works the first time, but when deleting and paste the URL again it appears

I'm going to chalk up that latter issue to Twitter bugs, but I'm not quite certain why the homepage isn't working

I suppose an important detail here is I've had to dramatically change where and how meta tags are rendered. Originally they were set in app.html which of course carries through the entire site. Then on a blog article page I'd use <svelte:head> to "overwrite" these. Turns out that does work - we end up with duplicate tags. So instead I've followed SvelteKit's advice here regarding $page.data:
https://kit.svelte.dev/docs/seo#manual-setup

Now all meta data is set in a <svelte:head> element in the root layout. This appears to work in most regards - but I worry this may be the cause of our Twitter issue. If anyone has any ideas I'm all ears. The PR here is here:
https://github.com/skeletonlabs/skeleton/pull/822


Spacer width incorrect on refresh

Hi there,
Thanks for this great piece of code.
When I test under Chrome and Firefox (OSX) the spacer.width() seems to be calculated incorrectly.
It only happens when I refresh the page when it's scrolled half way down (line 394 and sets an incorrect width based on spacer.width()). When scrolling to top or on resize the issue gets fixed.
Any idea how to fix this?

Hi,
what is your jquery version? can you give me url?
I found jquery maybe have some problems before version 2.1.3.
and 3.0.0+ is better.

Hi there, thank you for your reply.
Just upgraded my jquery from 1.10.2 to 3.1.1 and it fixed the issue!
Adding:
if (this.lastValues.width == null){
this.lastValues.width = spacer.width();
} else
Before line 394 fixes the issue on the old jquery version
All the best from Holland,
Pieter


Promise result undefined when resolving from custom authenticator

Hi,
I created a custom authenticator for Firebase (full source here) and while it appears to work great, I am running into one issue that I can't seem to track down the cause of. Hopefully, it's just a stupid mistake of mine :)
After calling the authenticate method from my controller and successfully resolving the promise, the result is undefined. However, if the promise is rejected (ex: invalid login), it successfully returns the error message from Firebase.
Custom Authenticator
authenticate: function(options) {

    return new Promise(function(resolve, reject) {

        this.get('firebase').authWithPassword({
            'email': options.email,
            'password': options.password
        }, function(error, authData) {
            Ember.run(function() {
                if (error) {
                    reject(error);
                } else {
                    resolve(authData);
                }
            });

        });
    }.bind(this));
}

Relevant Code from Controller
_this.get('session').authenticate('authenticator:firebase', {
    'email': _this.get('email'),
    'password': _this.get('password')
}).then(function(success) {
    console.log(success);			// undefined
}, function(error) {
    console.log(error.message);       // firebase error
});

I've tried passing resolve a number of different values to see if it was an issue with the object that Firebase returns (authData), but no luck -- the promise resolves, but there's no result. Again, all functions work perfectly, it's just that the result property of the resolved promise is undefined.
Any suggestions would be greatly appreciated. Thank you!
Best,
James

The session's authenticate method doesn't resolve with anything. Instead, anything the authenticator resolves with will be available via the session's secure property, e.g. session.secure.token.

Ah, that explains it. Thank you!
Related: you mentioned session.secure.token; how would I access this from my controller? I tried this.get(‘session’).secure.token, but no luck.
Best,
James
From: Marco Otte-Witte<EMAIL_ADDRESS>Reply: simplabs/ember-simple-auth<EMAIL_ADDRESS>Date: April 17, 2015 at 12:38:46 AM
To: simplabs/ember-simple-auth<EMAIL_ADDRESS>Cc: jamesdixon<EMAIL_ADDRESS>Subject:  Re: [ember-simple-auth] Promise result undefined when resolving from custom authenticator (#493)
The session's authenticate method doesn't resolve with anything. Instead, anything the authenticator resolves with will be available via the session's secure property, e.g. session.secure.token.
—
Reply to this email directly or view it on GitHub.

this.get('session.secure.token') as long as you're on 0.8.0-beta.1, in earlier versions that would be this.get('session.token').

Perfect. Thank you again!
From: Marco Otte-Witte<EMAIL_ADDRESS>Reply: simplabs/ember-simple-auth<EMAIL_ADDRESS>Date: April 17, 2015 at 12:49:09 AM
To: simplabs/ember-simple-auth<EMAIL_ADDRESS>Cc: jamesdixon<EMAIL_ADDRESS>Subject:  Re: [ember-simple-auth] Promise result undefined when resolving from custom authenticator (#493)
this.get('session.secure.token') as long as you're on 0.8.0-beta.1, in earlier versions that would be this.get('session.token').
—
Reply to this email directly or view it on GitHub.

I had to dig.  This worked for me.
The response gets tagged onto the session instead.
export default Ember.Route.extend(ApplicationRouteMixin, { ...
Then inside the function
     var session = this.get('session');
     var data = session.get('data');
     console.log(data.authenticated);


[Automation] Generate Fluent Lite from TypeSpec neonpostgres

https://github.com/Azure/sdk-release-request/issues/5639

[Automation] Generate Fluent Lite from TypeSpec neonpostgres

API change check
APIView has identified API level changes in this PR and created following API reviews.
com.azure.resourcemanager:azure-resourcemanager-neonpostgres

I think this is hold-on.
See chat, appears service is in private preview.

I think this is hold-on.
See chat, appears service is in private preview.

I will close this PR and keep an eye on the status of issue#5639.


Bowtie index for alternative haplotype in hg19

Hi,
I have a question about the haplotype information in hg19. Are both H1 and H2 haplotypes of the MAPT locus (chr17q21.31 region) included in the iGenome hg19 version? If not, how may I create bowtie index for the H2 haplotype?
Appreciate your help.
Jenny

Hi Jenny,
I’m afraid I have no idea, but the data is all open so you should be able to grab a copy yourself and find out.
Phil


vpp_ProcAmp: add parameter to clear all colorbalance filters

Implement a functionality for COLORBALANCE_NONE to clear all color
balance filters.
for VIZ-8466
Signed-off-by: wudping<EMAIL_ADDRESS>

My original code of ProcAmp does't implement the functionality to clear all filters.  User must set the level value with -1 to clear the corresponding filter. If want to clear all filters, must set the level value to -1 one by one.
Please help to review, thanks in advance.


update release script

fix release script: use kubeflow-ci for releasing workflows until kubeflow-release updated.

This change is

Coverage remained the same at 76.744% when pulling d9569cdedd5d91a8cebfb21d140ca6d2aa500c2b on kunmingg:relv06 into d746bde980e7fbf480a8978cd90856d18b0240f1 on kubeflow:master.

/assign @jlewi @lluunn

/lgtm
/approve
@kunmingg Do you have an issue tracking the needed fixes to kubeflow-releasing?

@jlewi
https://github.com/kubeflow/testing/issues/415

/approve

/retest


Could not initialize NNPACK! Reason: Unsupported hardware.

Thanks Apple ML team for this!
I got this warning:  Could not initialize NNPACK! Reason: Unsupported hardware.
Is this expected?
Torch version 1.13.0 has not been tested with coremltools. You may run into unexpected errors. Torch 1.12.1 is the most recent version that has been tested.
!!! macOS 13.1 and newer or iOS/iPadOS 16.2 and newer is required for best performance !!!
INFO:main:Initializing StableDiffusionPipeline with stabilityai/stable-diffusion-2-base..
Fetching 12 files: 100%|█████████████████████| 12/12 [00:00<00:00, 10409.85it/s]
INFO:main:Done.
INFO:main:Converting vae_decoder
[W NNPACK.cpp:53] Could not initialize NNPACK! Reason: Unsupported hardware.
/usr/local/Caskroom/miniforge/base/envs/coreml_stable_diffusion/lib/python3.8/site-packages/diffusers/models/resnet.py:109: TracerWarning: Converting a tensor to a Python boolean might cause the trace to be incorrect. We can't record the data flow of Python values, so this value will be treated as a constant in the future. This means that the trace might not generalize to other inputs!
assert hidden_states.shape[1] == self.channels
/usr/local/Caskroom/miniforge/base/envs/coreml_stable_diffusion/lib/python3.8/site-packages/diffusers/models/resnet.py:122: TracerWarning: Converting a tensor to a Python boolean might cause the trace to be incorrect. We can't record the data flow of Python values, so this value will be treated as a constant in the future. This means that the trace might not generalize to other inputs!
if hidden_states.shape[0] >= 64:

install torch==1.12.1

same here.

anyone figured this out? same issue same versions

Torch 1.13.1 and Venture 13.2.1 on Mac, same issue for me, any solution for this problem?

I am getting this error too.... should we just wait ?


Ship project with APK instead of hardcoded links.

Right now you have references to WhatsApps page and Whatscrypts page hardcoded in your tool.
I suggest you take those ressources (the .apk files) and store them someplace that you can control,
My point is, if WhatsApp and or whoever is behind Whatscrypt decides to moves or change their backend, the tool is broken, and noone wants that.

I suggest you either deliver the APKs as part of your tool, or you place them on a server (if you own one) and insert references to this server instead.

I suggest you either deliver the APKs as part of your tool, or you place them on a server (if you own one) and insert references to this server instead.

APKs are closed source. I can't risk installing those on user device if I don't know what's in there.
If for some reason any of link won't work I'll add new one.

APKs are closed source. I can't risk installing those on user device if I don't know what's in there.
If for some reason any of link won't work I'll add new one.

But aren't you doing that already?

But aren't you doing that already?

I download legacy whatapp yes. But I'll not be held responsible if that contains malware (FYI it does not, just a metaphor). And the re-installation part, I reinstall same apk which was on user device

I download legacy whatapp yes. But I'll not be held responsible if that contains malware (FYI it does not, just a metaphor). And the re-installation part, I reinstall same apk which was on user device

Okay then what are the links for?

Okay then what are the links for?

legacy whatsapp.

legacy whatsapp.

Okay but you KNOW they are clean, so you can just put them in the package as well.
And right now the links just increase the probability of instability.

Okay but you KNOW they are clean, so you can just put them in the package as well.
And right now the links just increase the probability of instability.

And if it contains malware, you'll be accused anyway, no matter from where you install it.

And if it contains malware, you'll be accused anyway, no matter from where you install it.


Rationale?

@aolofsson besides intriguing everybody, could you give us a bit of rationale/abstract behind this repo?
:confused:

Still very much work in progress....putting all the work I can out in the open so that others can benefit, although I realize it's mostly snippets right now. Chip design is an ugly business.

 How about "Making Chip design a better place" as a mission statement?


Half the .pyc files in an egg generated by bdist_egg are automatically stale.

When creating an egg using python setup.py bdist_egg, half (on average) of the generated .pyc files have an embedded timestamp that doesn't match the timestamp of the corresponding .py files.
The problem arises with source files (.py files) whose last modification time has an odd number of seconds. When the .pyc file is generated, it embeds the mtime of the .py file (truncated to second resolution if necessary) in bytes 4-7 as usual. But then when the zipfile is created, the timestamp of the .py file is stored as an even unix timestamp, since zip files only support 2-second resolution. That means that after unzipping the egg, the .pyc file (with its odd embedded timestamp) doesn't match the .py file, and the .pyc file has to be regenerated at import time.
In contrast, source files with an even timestamp are fine; there the .pyc file doesn't need to be regenerated.
Here's an example, using a .tar.gz for pyflakes, downloaded from PyPI. Note that for pyflakes/checker.py, the modification time doesn't match the time embedded in the .pyc (the two times differ by a second, which is enough to force a recompile), while for pyflakes/api.py, the times match.
(myenv) taniyama:temp mdickinson$ ls
pyflakes-1.5.0.tar.gz
(myenv) taniyama:temp mdickinson$ tar -zxf pyflakes-1.5.0.tar.gz
(myenv) taniyama:temp mdickinson$ cd pyflakes-1.5.0
(myenv) taniyama:pyflakes-1.5.0 mdickinson$ python setup.py bdist_egg >/dev/null
zip_safe flag not set; analyzing archive contents...
pyflakes.checker: module references __file__
pyflakes.checker: module references __path__
pyflakes.test.test_api: module references __file__
pyflakes.test.test_undefined_names: module references __file__
pyflakes.test.test_undefined_names: module references __path__
(myenv) taniyama:pyflakes-1.5.0 mdickinson$ cd dist
(myenv) taniyama:dist mdickinson$ unzip pyflakes-1.5.0-py2.7.egg >/dev/null
(myenv) taniyama:dist mdickinson$ python
Python 2.7.13 (default, Dec 18 2016, 05:43:36)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import os, struct
>>> os.stat('pyflakes/checker.py').st_mtime
1484009994.0
>>> struct.unpack('<L', open('pyflakes/checker.pyc', 'rb').read(8)[4:])[0]  # timestamp embedded in .pyc
1484009995
>>> os.stat('pyflakes/api.py').st_mtime
1458062906.0
>>> struct.unpack('<L', open('pyflakes/api.pyc', 'rb').read(8)[4:])[0]  # timestamp embedded in .pyc
1458062906

Background: this turned up while I was investigating the slow startup time of a large Python-based application. Much of the startup time was down to *.py files being recompiled to *.pyc files, in spite of the fact that the .pyc files were already present in the installation.

My comment about the background is a bit misleading. To clarify, this issue isn't directly responsible for the application startup slowness; indeed, I'm not aware of any ill effect caused by this, besides the time wasted generating .pyc files that will never be used.


Fix getting the code version

Hey :)!
I noticed that the tests have been checking practically if null is equal null.
This was happening because you were using applicationConfig.APP.version which is dependent on ember-cli-app-version. Unfortunately, we didn't use it, so practically it was working only with apps which depended on it.
My current solution adds a native solution for that. We are now using git-repo-version which will cover for us gathering the app version. Also, I moved the whole config to the place where it should belong and cover the Heroku case.
Why we can not use eg. just ember-cli-app-verision?
Because it's adding the app version during the build process. We don't know in which order our configs will be merged. So even if we add it to our package as a dependency we cannot be sure that his config will be set before ours.
Sure, we can tackle that by doing what you did (setting the code version in the service [all configs has been already set]) but I think the current solution is much more elegant and independent.
However, the heroku have to be tested on living project. There can ba problem with getting package.json file, but Im not sure.

I've added some remarks. Please take a look, but in overall - we can merge it and release it 👍 .


0% line coverage, 0% statement coverage, 0% block coverage, 0 SLOC...?

I have been unable to successfully generate code coverage for my nodejs test code and wondered if there may be in issue with either the version of gulp-jasmine or some other dependency I am using?
The gulp task I am running looks like this:
gulp.task('server-unit-tests', function () {
    return gulp.src('./server/**/*.js', { read: false })
        .pipe(cover.instrument({
            pattern: ['./server/test/**/*.spec.js']
        }))
        .pipe(jasmine({
            verbose: true,
            includeStackTrace: true
        }))
        .pipe(cover.gather())
        .pipe(cover.format([
            { reporter: 'html', outFile: 'coverage.html' },
            { reporter: 'json', outFile: 'coverage.json' }
        ]))
        .pipe(gulp.dest('./server/coverage'));
});

This generates the following .json file:
{
 "files": [],
 "sloc": 0,
 "ssoc": 0,
 "sboc": 0,
 "coverage": null,
 "statements": null,
 "blocks": null,
 "uncovered": [
  "server/test/config.spec.js",
  "server/test/utils/cypher-promise.spec.js"
 ]
}

The html output looks like:

I originally thought it maybe due to a different version of one of the libraries but when I checked out the latest code from here and when I run gulp on gulp-coverage I always see one of the jasmine test showing as 0% coverage and wondered if this could be related?

My package versions:
{
    "gulp": "^3.8.8",
    "gulp-coverage": "^0.3.31",
    "gulp-jasmine": "^1.0.0"
}

Have I missed something obvious?

I have the same problem with this code: https://github.com/miparnisari/node-cognitive-services/tree/fixes
Any ideas? Here is my gulpfile:
var gulp = require('gulp');
var mocha = require('gulp-mocha');
var cover = require('gulp-coverage');

gulp.task('test', () => {
    return gulp.src('test/*.js')
        .pipe(cover.instrument({
            pattern: ['index.js', 'api/*.js', 'lib/*.js'],
            debugDirectory: 'debug'
        }))
        .pipe(mocha({
            timeout: 15000
        }))
        .pipe(cover.gather())
        .pipe(cover.format([
            { reporter: 'html', outFile: 'coverage.html' },
            { reporter: 'json', outFile: 'coverage.json' }
        ]))
        .pipe(gulp.dest('reports'));
});


Accessibilty: allow highlight current line styling

Related to https://github.com/Microsoft/vscode/issues/5678, but I have always had trouble seeing which line my cursor is on, so I like to have a nice light transparent grey across the entire line (See screenshot)

I'd like to be able to select my own line highlight style for my own accessibility concerns.
Unfortunately the cursor is not in the screenshot, but it's a bright white vertical line for me.

We do have a current line highlight:

Ok your style is different. I'll need to look into how to edit that for the default dark theme because it just looks like two very faint lines on mine (screenshot was from sublime), and it doesn't do line highlight during find, just word highlight.


Invalid engine requirement for yarn

Having that yarn doesn't have a version 3.x.x, shouldn't the engine requirement be something like >=1.2.0?
Is there something that I am missing?
I saw that there are multiple projects affected in npm workspace.

The Yarn package manager is currently on version 4.1.0.
https://yarnpkg.com/getting-started/install

I hope this information helped. Please feel free to re-open with more details if further assistance is required.


Build fails for iOS app

Build of the sample app fails for the iOS version with:
error CS0016: Could not write to file `XamarinFormsQbChatiOS'. The supplied byte array is not a valid .ico file.
Google around it might be related to a nordic characters bug, but in this project I can't find any nordic characters

Hello, Could you clarify the problem. This reproduce at master or deb branch?

Thank you @EduardoForever . It is on the master branch that the build fails.
I am building on OSX 10.10.5 using Xamarin Studio. And the about box details are below:
Google leads to https://forums.xamarin.com/discussion/68505/update-tamarin-causes-error
Xamarin Studio Community
Version 6.0.1 (build 9)
Installation UUID: 4a8bfe62-6cf2-4941-9e63-219d1168c1be
Runtime:
	Mono 4.4.1 (mono-4.4.0-branch-c7sr0/4747417) (64-bit)
	GTK+ 2.24.23 (Raleigh theme)

	Package version: 404010000

Xamarin.Profiler
Not Installed

Apple Developer Tools
Xcode 7.2 (9548)
Build 7C68

Xamarin.Mac
Version: <IP_ADDRESS> (Xamarin Studio Community)

Xamarin.Android
Version: <IP_ADDRESS> (Xamarin Studio Community)
Android SDK: /Users/nevilledastur/Library/Developer/Xamarin/android-sdk-macosx
	Supported Android versions:
		6.0 (API level 23)

SDK Tools Version: 25.1.2
SDK Platform Tools Version: 24.0.0
SDK Build Tools Version: 23.0.2

Java SDK: /usr
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)

Android Designer EPL code available here:
https://github.com/xamarin/AndroidDesigner.EPL

I've updated master brunch, you can check

Thank you. Master now builds fine.
Can I ask what the specific bug was as there have been a number of commits from dev branch and I couldn't tell. Thanks


fix(screenshot): Execute JS throught command

Last plugin version raises exception when the app is using cordova-plugin-wkwebview-engine. This change fixes this error

Looks good to me. I'm on mobile right now, will merge soon.

Did you have time to check this?
Thanks!

@dloeda Merged! Thank you so much.


merge package from arlac77/npm-package-template

package.json

chore(devDependencies): update documentation:^7.0.0 from template
chore(devDependencies): add rollup-plugin-commonjs:^9.1.3 from template
chore(devDependencies): add rollup-plugin-node-resolve:^3.3.0 from template
chore(devDependencies): add rollup-plugin-babel:^3.0.4 from template
chore(devDependencies): add rollup-plugin-json:^3.0.0 from template
chore(devDependencies): add rollup-plugin-executable:^1.2.0 from template
chore(devDependencies): add babel-preset-env:^1.6.1 from template

.travis.yml

chore(travis): remove node versions 10.1
chore(travis): add node versions 10.2

:tada: This PR is included in version 2.6.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Provide an alternative to JSX conditional rendering

In JSX you can do conditional rendering of components inline as follows:
{some_condition && <Component to render />}

Currently, you would need to move this code to a separate method e.g.
Element<?,?> renderComponentIfConditionSet() {
    if (some_condition)
	return React.CreateElement(ComponentToRender.class)
     else
        return null
}

We should introduce a helper function to support this kind of conditional rendering inline e.g
GwtReact.renderWhen(some_condition,  component to render)

The problem with your suggestion is that <component-to-render> will be evaluated even if <some-condition> is falsy, because <some-condition> is a function parameter. ...unlike the JavaScript "truthy" syntax, which will evaluate <component-to-render> only if <some-condition> is truthy.
The closest thing to JavaScript's truthy syntax we've come up with is the standard Java ?: "expression if" statement. It is a bit longer than the equivalent JS truthy syntrax, but not that long at all. We just do:
<some-condition>? <component-to-render>: null

I suggest we just document the pattern in the README.md file.


#5105 There is another scenario:  not catch exception when use FluentValidation vaildate.

There is another scenario:  not catch exception when use FluentValidation vaildate.
share my code: https://try.mudblazor.com/snippet/wamGYMbKmVEqEplZ

expect catch the exception in ErrorBoundary Right?

Originally posted by @neozhu in https://github.com/MudBlazor/MudBlazor/issues/5079#issuecomment-1216261306

Hi @neozhu,
Your validation throws an exception, and when the MudForm or any other component tries to validate it, the exception results in an exception. Why do you think this is related to the js interop exception?
Validation should never throw exceptions to consuming classes. They can use exceptions internally, but the results should be a bool/string/ValidationItem/orAnyOtherAbstraction, etc. It wouldn't be a good design decision to catch validation exceptions on the library level.

Sorry, I don't know if it has related to js interop.
I was hoping to catch this exception.

Maybe something like this https://docs.microsoft.com/en-us/aspnet/core/blazor/fundamentals/handle-errors?view=aspnetcore-6.0#error-boundaries?

ok, thanks for your information


Ability to set custom email subject

Is it a duplicate question?
No
Describe the solution you'd like
It could be handy if we could change email subject to our own. There are some systems that expect specific subject structure to handle the message (like internal tagging in Helpdesk systems).
Additional context
The reason of this feature request is ability to use email2sms service which some SMS Gateway provide as alternative to REST API.

I just made a PR for this #627