Errors and performance

Hi, hti.screenshot is working fine for us even if we have concern regarding performance.
We have error messages during screenshots
0615/164730.282582:ERROR:file_io.cc(91)] ReadExactly: expected 8, observed 0
[0615/164730.283193:ERROR:xattr.cc(63)] setxattr org.chromium.crashpad.database.initialized on file /var/folders/8_/qh0jnghd1xd_99znh3z6tvgc0000gn/T/: Operation not permitted (1)
[0615/164730.329920:WARNING:headless_browser_main_parts.cc(106)] Cannot create Pref Service with no user data dir.
[0615/164730.396624:WARNING:address_sorter_posix.cc(388)] FromSockAddr failed on netmask

Does theses errors have an impact on performance. Currently if takes 1,6s to generate a frame, and we would like to generate up to 100 (25img/s for 4s)

Hello, thank you for posting an issue.

Regarding the error messages:
These errors / warnings are not outputted directly by html2image, but rather by Chrome/Chromium, which html2image calls to generate images.
Depending on the OS I've tested html2image on, I have indeed stumbled upon such messages but didn't looked further into it, as I wasn't getting them on most OS and as it didn't seemed to prevent image generation.
If you mind sharing the OS + OS version + chrome version of the machine you are running html2image on, I can check if I have the same error messages and if it seems to impact performances.

Regarding performances, they are greatly affected by what you are screenshotting (and of course by the specs of the machine).
For example, screenshotting a file (or a string using the html_str parameter) that only contains text and that is located on you machine is very fast compared to screenshotting an URL, because you add the page load on top of the time taken by the file generation. The size at which you are screenshotting also affects a little the time to take a screenshot.
Overall, there is not much room for optimization, because we are relying on Chrome for the image generation, but if you are generating a large amount of pictures, you may want to use some form of parallel processing. Parallel processing is not implemented in html2image (yet?), but you can add it own scripts if you wish to.
Here is an example using a ThreadPoolExecutor from concurrent.futures :
import time
import concurrent.futures

from html2image import Html2Image

HTML = """<h1> An interesting title </h1>"""
CSS = "body {background: red;}"
SCREENSHOT_COUNT = 100

hti = Html2Image(output_path='hti_parallel')

# Some class I have on my machine, don't know the source anymore
class Timer(object):
    ''' Timing Context Manager
    '''
    def __enter__(self):
        self.start = time.perf_counter_ns()
        return self

    def __exit__(self, *args):
        end = time.perf_counter_ns()
        self.duration = (end - self.start) * 10**-9  # 1 nano-sec = 10^-9 sec

def test_classic():
    results = [
        hti.screenshot(
            html_str=HTML,
            # url='https://www.python.org',
            css_str=CSS,
            save_as=f'classic_{i}.png',
        )
        for i in range(SCREENSHOT_COUNT)
    ]

def test_TPE():
    with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
        results = [
            executor.submit(
                hti.screenshot,
                html_str=HTML,
                # url='https://www.python.org',
                css_str=CSS,
                save_as=f'TPE_{i}.png',
            )
            for i in range(SCREENSHOT_COUNT)
        ]

if __name__ == '__main__':
    print(f'Generating {SCREENSHOT_COUNT} images...')

    with Timer() as t:
        test_classic()
    print(f'Classic generation took:\t {t.duration:.3f} \tseconds.')

    with Timer() as t:
        test_TPE()
    print(f'Generation with ThreadPoolExecutor took:\t {t.duration:.3f} \tseconds.')

When screenshotting a simple html string, it get the following output :
Generating 100 images...
Classic generation took:         28.232         seconds.
Generation with ThreadPoolExecutor took:         14.029         seconds.

When screenshotting an url (by uncommenting the url parameter and commenting html_str + css_str), it get the following output:
Generating 100 images...
Classic generation took:         68.978         seconds.
Generation with ThreadPoolExecutor took:         24.627         seconds.

In both cases, a significant performance improvement can be seen by using a ThreadPoolExecutor.

Hi, thanks a lot for your detailed answer. I've done my test on OS X running on  a MacBook pro. I'm screenshotting html code containing web animations in js. Each image generated is a step in the animation.
I've redone the test using your sample code and the TPE took 28,5s for 100 images which is much better than the standard version.
I still have these error messages:
[0617/095440.939724:ERROR:xattr.cc(63)] setxattr org.chromium.crashpad.database.initialized on file /var/folders/8_/qh0jnghd1xd_99znh3z6tvgc0000gn/T/: Operation not permitted (1)
[0617/095441.400263:WARNING:ipc_message_attachment_set.cc(49)] MessageAttachmentSet destroyed with unconsumed attachments: 0/1
[0617/095441.503360:ERROR:command_buffer_proxy_impl.cc(123)] ContextResult::kTransientFailure: Failed to send GpuChannelMsg_CreateCommandBuffer.
[0617/095440.775369:WARNING:headless_browser_main_parts.cc(106)] Cannot create Pref Service with no user data dir.

Hello again. I recently ran html2image on a few different docker images based off on different OS and sometimes encountered messages like these. Using specific Chrome flags should theoretically make some of these warning disappear and solve the errors, but most of the time it didn't changed anything. I can't really do much about it as it is an "issue" directly related to Chrome / Chromium, the best would probably be to open a ticket bugs.chromium.org/ (or at least search for already existing ones).


Preview links in Search index

The basis for the search ingest is https://www.netcentric.biz/query-index-search.json, unfortunately it contains preview links like https://main--cn-website--netcentric.hlx.page/insights/2023/01/adobe-aem-franklin due to blocks like "Related Blogs" which just get a list of URLs independent from the domain.

Fixed the issue in https://www.netcentric.biz/query-index-search.json by removing all https://.* URLs in the fulltext. @jvaldas re-index needed now?

Full re-index done. Issue fixed.


Add a new built-in receiver for Fastify users

Description
I know bolt-js is a wrapped version of express, but I think the use case of choosing fastify, which is the same Node.js framework as express, when you want to focus more on performance is well known.
In NestJS, the default is express, but we have also made fastify available for use cases where we want to focus more on performance.
Wouldn't it be great if bolt-js implemented such a mode as well? Thx.
FYI

Performance (Fastify)
fastify/fastify

What type of issue is this? (place an x in one of the [ ])

[ ] bug
[x] enhancement (feature request)
[ ] question
[ ] documentation related
[ ] example code related
[ ] testing related
[ ] discussion

Requirements (place an x in each of the [ ])

[x] I've read and understood the Contributing guidelines and have done my best effort to follow them.
[x] I've read and agree to the Code of Conduct.
[x] I've searched for any related issues and avoided creating a duplicate issue.

Hi @75asa, thanks for writing in!

I know bolt-js is a wrapped version of express,

Just to make it clear, this (being Express.js based) used to be true (in v2.x) in the past but now the default is HTTPReceiver, which depends on only Node.js http module.

In NestJS, the default is express, but we have also made fastify available for use cases where we want to focus more on performance. Wouldn't it be great if bolt-js implemented such a mode as well? Thx.

I'm a bit curious whether you've already observed a critical performance issue with Express.js based code. In the Slack app context, as long as your app does not receiver huge traffic from many (say, thousands) workspaces and/or a huge number of users in a workspace, Express.js's performance should not be so bad.
Aside from that, supporting more and more well-known framework (not only nest.js / fastify) out-of-the-box would be great for developers for sure! However, our team may not have the bandwidth to add more built-in receivers in the short term. If you need an immediate solution for it, please consider implementing your own receiver for now.
Lastly, this is off topic a bit but, to support more receivers in the future, this project may need to take some time to refactor the existing receiver internals to more easily share the essential parts of the code among receivers. Currently, we have three built-in receivers and they have many duplicated code internally. Before adding more receivers, we would like to improve this issue.
Thanks again for sharing this feedback 🙇

@seratch Thx for ur kindness reply.

this (being Express.js based) used to be true (in v2.x) in the past but now the default is HTTPReceiver

I didn't know it was Node's HTTPReciever from ver 3 onwards, thanks for letting me know!

I'm a bit curious whether you've already observed a critical performance issue with Express.js based code.

I haven't measured this yet, but I was curious about it because fastify publishes benchmarks publicly, and the response time has to be within 3 seconds, which led me to this issue.
If you don't need to handle the huge amount of traffic mentioned in the use case, you probably don't need it🤔.

If you need an immediate solution for it, please consider implementing your own receiver for now.

Thanks for the advice, I'll try to implement a custom receiver first!

Lastly, this is off topic a bit but, to support more receivers in the future, this project may need to take some time to refactor the existing receiver internals to more easily share the essential parts of the code among receivers. Currently, we have three four built-in receivers and they have many duplicated code internally. Before adding more receivers, we would like to improve this issue.

Thanks for sharing the current status, I'm looking forward to the future more and more!

Just in case it is helpful: the docs on how to implement your own Receiver

My personal projects support NestJS and Fastify. If you are still looking for a solution for this, take a look at them:

https://github.com/seratch/slack-bolt-extensions/tree/main/packages/bolt-fastify
https://github.com/seratch/slack-bolt-extensions/tree/main/nestjs-example
Since bolt-js project does not have plans to add those supports, let us close this issue now.


Add view latest version support from package.json file and script for quick testing

Add view latest version support from package.json file and script for quick testing

Your are welcome you can also close now #5 as well

already did :) thanks

I have one problem in cmd gitignore option is not working .

can you elaborate more ? what argument are you passing and what are the contents of your gitignore file .. and what is happening ?

See my test:clean script command in cmd it is also looking inside node_modules as well

have you tried the -g instead ?

sorry i cannot test it now as i am not on a laptop .. browsing from phone ATM

Yeah both are making same problem. and i am getting all messages even from ignored dirs too

am not really sure whats happening but i believe its about the path to the .gitignore and maybe how you are calling the command. What i think is happening is that it tries to find the path relative to bin/path .. cannot confirm until i test

I tested even global installed version still getting notes from ignored files with this command cls & notes -g .gitignore no path just navigate to project dir and run this but still it is making problem

have you tried doing notes -g ./.gitignore

Yes same problem


update banner

Sara's changes plus homepage banner update @GaryKriebel

Cool! @jlcohoon @saradbowman @GaryKriebel is this ready for merge?

QA tested and is good to merge.
ping @erinspace and @sloria (however, this PR includes the original changes in https://github.com/CenterForOpenScience/centerforopenscience.org/pull/480 ... there have been 2 small additions to that PR ... not sure what will have to happen)


[etlas] Restrict newer versions of packages that are not supported by eta-hackage

Done by updating etlas-index with pref-ver: fields


Adding content between two embeds

It is not possible to place cursor between two embeds or above the first embed in editor. When user wants to do this, the only way is to remove the embed, write his text and create the embed again

What solution do you suggest?

In our project that uses medium editor insert plugin we decided to use this approach:
when the embed is selected and user hits enter, it adds a new line ABOVE the embed and sets caret there

@martin-machacek This sounds like a good solution. Is there a patch for this functionality? We are using the editor and have this same issue reported by our users.


custom integration 'dvla' calls async_forward_entry_setup for integration

HA 2024.7 is reporting the following on startup:
2024-07-16 09:50:16.417 WARNING (MainThread) [homeassistant.helpers.frame] Detected that custom integration 'dvla' calls async_forward_entry_setup for integration, dvla with title: XXXXXX and entry_id: 132259d905a8d554019283897f0d6ccb, which is deprecated and will stop working in Home Assistant 2025.6, await async_forward_entry_setups instead at custom_components/dvla/__init__.py, line 26: hass.async_create_task(, please create a bug report at https://github.com/jampez77/DVLA-Vehicle-Enquiry-Service/issues

Thanks for bringing this to my attention! I'll try and find some time for this one soon.

This should be fixed in 2024.7.0


SVG export (lc.getSVGString())

Still needs docs & testing of different export bounds. (I've only tested explicit export bounds.)

(Fixes #261)

Implicit bounds works fine, calling it good


fix #anchor jumps in index.md from spanish version

Checklist:

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the main branch of freeCodeCamp.
[x] I have tested these changes either locally on my machine, or GitPod.

Closes #XXXXX

Hey there,
Thanks for your interest in contributing. Changes to the translations should be done through https://translate.freecodecamp.org, not through GitHub.

Hey there,
Thanks for your interest in contributing. Changes to the translations should be done through https://translate.freecodecamp.org, not through GitHub.

Oh, thanks for your answer, since it was a change in a link redirection, I thought it was directly on github.


Weekly doesn't seem to be working

It appears weekly is working like daily.  If I provided a start date 1/1/2020 and end date 2/1/2020 and select weekly it spits out every day in between.  I would have assumed it would spit out 1/1, 1/8/, 1/15 etc.  Is there something I am doing wrong?

I think that the algorithm only works weekly when you input the weekday.


unetbootin: use libsForQt5.callPackage

Motivation for this change
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[ ] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
21.11 Release Notes (or backporting 21.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 133520 at 933547c0 run on x86_64-linux 1

1 package built successfully:

unetbootin

1 suggestion:

warning: unused-argument
Unused argument: libsForQt5.
Near pkgs/tools/cd-dvd/unetbootin/default.nix:5:3:
  |
5 | , libsForQt5
  |   ^


D403 does not trigger for a single-word docstring that ends with a period

Keywords searched for
D403 -> Potentially related to https://github.com/astral-sh/ruff/issues/2989
Ruff version
0.3.0
Issue
For a docstring with one word (admittedly not a typical docstring :wink:), if the word is not capitalised and there is no fullstop, the correct errors are raised

However, when adding a full stop, D403 is suppressed/not raised

Okay, that's not sufficient, because it then gets skipped in
    for char in first_word.chars() {
        if !char.is_ascii_alphabetic() && char != '\'' {
            dbg!("Non ascii character");
            return;
        }
    }

I need to look into the pycodestyle implementation if this is intentional.

Okay, I was wrong. Split is used correctly. It always returns the string even if the split character isn't found. It bails because . isn't an ASCII character, and this matches pydocstyle's implementation.
I'll put up a PR but I"m not sure if we should change the current behavior because a single word isn't really a phrase...


[#117991263] Upgrade bosh-init to 0.0.95

What
Upgrade bosh-init version. This is required to deploy new concourse version, which uses various
"BOSH 2.0" features that are not supported in our previous bosh-init version.
Testing
As a part of https://github.com/alphagov/paas-cf/pull/381
Who
not @mtekel or @combor

Is the new version backwards-compatibile? Will it work with our existing pipelines/manifests?

We only use bosh-init to deploy concourse and bosh micro. This works with concourse, we will test bosh-init as a part of alphagov/paas-cf#381

As a side note, this container is quite beefy (517MB!), maybe we could spend some time reducing the size...


Improving badge images

Work on improving the badge images. Have better understandable images for badges.

I'll work on it!!...

Merged the pr #11


The diagnostics of sumneko_lua does not appear after :e

Description
As title. How to make things clear? This is the DEMO:
(This might be helpful but I'm not sure: https://github.com/neovim/nvim-lspconfig/issues/1192)
https://user-images.githubusercontent.com/24765272/153084238-dc454d4b-599c-4b98-be18-93bc8dd54fa0.mov
Neovim version
NVIM v0.7.0-dev+1036-gbcea73299
Build type: Release
LuaJIT 2.1.0-beta3
Nvim-lspconfig version
2008c5cebf2b84c5e5f8a566480b022ab2e7ebab
Operating system and version
macOS Big Sur 11.6.2
Affected language servers
sumneko_lua
Steps to reproduce
As shown in the DEMO.
Actual behavior
As shown in the DEMO.
Expected behavior
As shown in the DEMO.
Minimal config
local runtime_path = '~/.local/share/nvim/lsp_servers/sumneko_lua/extension/server/bin/lua-language-server'

M = {
  capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp.protocol.make_client_capabilities()),
  autostart = true,
  on_attach = function (...)
    require('lsp_config.common_setup')(...)
  end,
  settings = {
    Lua = {
      runtime = {
        version = 'LuaJIT',
        path = runtime_path
      },
      diagnostics = {
        globals = { 'vim' }
      }
    }
  }
}

return M

LSP log

[WARN][2022-02-09 06:09:02] .../lua/vim/lsp.lua:812	"server_request: no handler found for"	"workspace/semanticTokens/refresh"
[WARN][2022-02-09 06:09:02] .../lua/vim/lsp.lua:812	"server_request: no handler found for"	"workspace/semanticTokens/refresh"
[WARN][2022-02-09 06:09:02] .../lua/vim/lsp.lua:812	"server_request: no handler found for"	"workspace/semanticTokens/refresh"
[WARN][2022-02-09 06:09:02] .../lua/vim/lsp.lua:812	"server_request: no handler found for"	"workspace/semanticTokens/refresh"
[START][2022-02-09 06:09:29] LSP logging initiated
[WARN][2022-02-09 06:09:30] .../lua/vim/lsp.lua:812	"server_request: no handler found for"	"workspace/semanticTokens/refresh"
[WARN][2022-02-09 06:09:30] .../lua/vim/lsp.lua:812	"server_request: no handler found for"	"workspace/semanticTokens/refresh"
[START][2022-02-09 06:14:08] LSP logging initiated
[WARN][2022-02-09 06:14:13] .../lua/vim/lsp.lua:812	"server_request: no handler found for"	"workspace/semanticTokens/refresh"
[WARN][2022-02-09 06:14:13] .../lua/vim/lsp.lua:812	"server_request: no handler found for"	"workspace/semanticTokens/refresh"

You can file an issue upstream. What ":e" does is effectively close/reopen the buffer. Servers by convention send diagnostics when text document's are opened, in this case lua-language-server only sends diagnostics when the buffer is reopened (textDocument/didClose followed by textDocument/didOpen)  and the first textDocument/didChange notification is sent.
[DEBUG][2022-02-08 14:21:52] .../vim/lsp/rpc.lua:347	"rpc.send"	{
  jsonrpc = "2.0",
  method = "textDocument/didClose",
  params = {
    textDocument = {
      uri = "file:///Users/michael/Repositories/nvim-lspconfig/test/minimal_init.lua"
    }
  }
}
[DEBUG][2022-02-08 14:21:52] .../vim/lsp/rpc.lua:347	"rpc.send"	{
  jsonrpc = "2.0",
  method = "textDocument/didOpen",
  params = {
    textDocument = {
      languageId = "lua",
      text = "local on_windows = vim.loop.os_uname().version:match 'Windows'\n\nlocal function join_paths(...)\n  local path_sep = on_windows and '\\\\' or '/'\n  local result = table.concat({ ... }, path_sep)\n  return result\nend\n\nvim.cmd [[set runtimepath=$VIMRUNTIME]]\n\nlocal temp_dir = vim.loop.os_getenv 'TEMP' or '/tmp'\n\nvim.cmd('set packpath=' .. join_paths(temp_dir, 'nvim', 'site'))\n\nlocal package_root = join_paths(temp_dir, 'nvim', 'site', 'pack')\nlocal install_path = join_paths(package_root, 'packer', 'start', 'packer.nvim')\nlocal compile_path = join_paths(install_path, 'plugin', 'packer_compiled.lua')\n\nlocal function load_plugins()\n  require('packer').startup {\n    {\n      'wbthomason/packer.nvim',\n      'neovim/nvim-lspconfig',\n    },\n    config = {\n      package_root = package_root,\n      compile_path = compile_path,\n    },\n  }\nend\n\n_G.load_config = function()\n  vim.lsp.set_log_level 'trace'\n  if vim.fn.has 'nvim-0.5.1' == 1 then\n    require('vim.lsp.log').set_format_func(vim.inspect)\n  end\n  local nvim_lsp = require 'lspconfig'\n  local on_attach = function(_, bufnr)\n    local function buf_set_keymap(...)\n      vim.api.nvim_buf_set_keymap(bufnr, ...)\n    end\n    local function buf_set_option(...)\n      vim.api.nvim_buf_set_option(bufnr, ...)\n    end\n\n    buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc')\n\n    -- Mappings.\n    local opts = { noremap = true, silent = true }\n    buf_set_keymap('n', 'gD', '<Cmd>lua vim.lsp.buf.declaration()<CR>', opts)\n    buf_set_keymap('n', 'gd', '<Cmd>lua vim.lsp.buf.definition()<CR>', opts)\n    buf_set_keymap('n', 'K', '<Cmd>lua vim.lsp.buf.hover()<CR>', opts)\n    buf_set_keymap('n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>', opts)\n    buf_set_keymap('n', '<C-k>', '<cmd>lua vim.lsp.buf.signature_help()<CR>', opts)\n    buf_set_keymap('n', '<space>wa', '<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>', opts)\n    buf_set_keymap('n', '<space>wr', '<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>', opts)\n    buf_set_keymap('n', '<space>wl', '<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>', opts)\n    buf_set_keymap('n', '<space>D', '<cmd>lua vim.lsp.buf.type_definition()<CR>', opts)\n    buf_set_keymap('n', '<space>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts)\n    buf_set_keymap('n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>', opts)\n    buf_set_keymap('n', '<space>e', '<cmd>lua vim.lsp.diagnostic.show_line_diagnostics()<CR>', opts)\n    buf_set_keymap('n', '[d', '<cmd>lua vim.lsp.diagnostic.goto_prev()<CR>', opts)\n    buf_set_keymap('n', ']d', '<cmd>lua vim.lsp.diagnostic.goto_next()<CR>', opts)\n    buf_set_keymap('n', '<space>q', '<cmd>lua vim.lsp.diagnostic.set_loclist()<CR>', opts)\n  end\n\n  -- Add the server that troubles you here\n  local name = 'sumneko_lua'\n  if not name then\n    print 'You have not defined a server name, please edit minimal_init.lua'\n  end\n  if not nvim_lsp[name].document_config.default_config.cmd and not cmd then\n    print [[You have not defined a server default cmd for a server\n      that requires it please edit minimal_init.lua]]\n  end\n\n  nvim_lsp[name].setup {\n    cmd = cmd,\n    on_attach = on_attach,\n  }\n\n  print [[You can find your log at $HOME/.cache/nvim/lsp.log. Please paste in a github issue under a details tag as described in the issue template.]]\nend\n\nif vim.fn.isdirectory(install_path) == 0 then\n  vim.fn.system { 'git', 'clone', 'https://github.com/wbthomason/packer.nvim', install_path }\n  load_plugins()\n  require('packer').sync()\n  vim.cmd [[autocmd User PackerComplete ++once lua load_config()]]\nelse\n  load_plugins()\n  require('packer').sync()\n  _G.load_config()\nend\n",
      uri = "file:///Users/michael/Repositories/nvim-lspconfig/test/minimal_init.lua",
      version = 0
    }
  }
}
[DEBUG][2022-02-08 14:21:53] .../vim/lsp/rpc.lua:347	"rpc.send"	{
  jsonrpc = "2.0",
  method = "textDocument/didChange",
  params = {
    contentChanges = { {
        range = {
          end = {
            character = 0,
            line = 13
          },
          start = {
            character = 0,
            line = 13
          }
        },
        rangeLength = 0,
        text = "e"
      } },
    textDocument = {
      uri = "file:///Users/michael/Repositories/nvim-lspconfig/test/minimal_init.lua",
      version = 6
    }
  }
}
[DEBUG][2022-02-08 14:21:53] .../vim/lsp/rpc.lua:454	"rpc.receive"	{
  jsonrpc = "2.0",
  method = "$/status/report",
  params = {
    text = "😺Lua",
    tooltip = "Workspace   : /Users/michael/Repositories/nvim-lspconfig\nCached files: 147/146\nMemory usage: 15M"
  }
}
[TRACE][2022-02-08 14:21:53] .../lua/vim/lsp.lua:792	"notification"	"$/status/report"	{
  text = "😺Lua",
  tooltip = "Workspace   : /Users/michael/Repositories/nvim-lspconfig\nCached files: 147/146\nMemory usage: 15M"
}
[DEBUG][2022-02-08 14:21:53] .../vim/lsp/rpc.lua:454	"rpc.receive"	{
  jsonrpc = "2.0",
  method = "textDocument/publishDiagnostics",
  params = {
    diagnostics = { {
        code = "exp-in-action",
        data = "syntax",
        message = "Unexpected <exp> .",
        range = {
          end = {
            character = 1,
            line = 13
          },
          start = {
            character = 0,
            line = 13
          }
        },
        severity = 1,
        source = "Lua Syntax Check."
      }, {
        code = "undefined-global",
        message = "Undefined global `vim`.",
        range = {
          end = {
            character = 3,
            line = 8
          },
          start = {
            character = 0,
            line = 8
          }
        },
        severity = 2,
        source = "Lua Diagnostics."
      }, {
        code = "undefined-global",
        message = "Undefined global `vim`.",
        range = {
          end = {
            character = 3,
            line = 12
          },
          start = {
            character = 0,
            line = 12
          }
        },
        severity = 2,
        source = "Lua Diagnostics."
      }, {
        code = "undefined-global",
        message = "Undefined global `vim`.",
        range = {
          end = {
            character = 5,
            line = 88
          },
          start = {
            character = 2,
            line = 88
          }
        },
        severity = 2,
        source = "Lua Diagnostics."
      }, {
        code = "undefined-global",
        message = "Undefined global `vim`.",
        range = {
          end = {
            character = 20,
            line = 10
          },
          start = {
            character = 17,
            line = 10
          }
        },
        severity = 2,
        source = "Lua Diagnostics."
      }, {
        code = "undefined-global",
        message = "Undefined global `vim`.",
        range = {
          end = {
            character = 5,
            line = 32
          },
          start = {
            character = 2,
            line = 32
          }
        },
        severity = 2,
        source = "Lua Diagnostics."
      }, {
        code = "undefined-global",
        message = "Undefined global `vim`.",
        range = {
          end = {
            character = 5,
            line = 85
          },
          start = {
            character = 2,
            line = 85
          }
        },
        severity = 2,
        source = "Lua Diagnostics."
      }, {
        code = "undefined-global",
        message = "Undefined global `cmd`.",
        range = {
          end = {
            character = 70,
            line = 71
          },
          start = {
            character = 67,
            line = 71
          }
        },
        severity = 2,
        source = "Lua Diagnostics."
      }, {
        code = "undefined-global",
        message = "Undefined global `cmd`.",
        range = {
          end = {
            character = 13,
            line = 77
          },
          start = {
            character = 10,
            line = 77
          }
        },
        severity = 2,
        source = "Lua Diagnostics."
      }, {
        code = "undefined-global",
        message = "Undefined global `vim`.",
        range = {
          end = {
            character = 6,
            line = 84
          },
          start = {
            character = 3,
            line = 84
          }
        },
        severity = 2,
        source = "Lua Diagnostics."
      }, {
        code = "undefined-global",
        message = "Undefined global `vim`.",
        range = {
          end = {
            character = 46,
            line = 34
          },
          start = {
            character = 43,
            line = 34
          }
        },
        severity = 2,
        source = "Lua Diagnostics."
      }, {
        code = "undefined-global",
        message = "Undefined global `vim`.",
        range = {
          end = {
            character = 22,
            line = 0
          },
          start = {
            character = 19,
            line = 0
          }
        },
        severity = 2,
        source = "Lua Diagnostics."
      }, {
        code = "undefined-global",
        message = "Undefined global `vim`.",
        range = {
          end = {
            character = 8,
            line = 33
          },
          start = {
            character = 5,
            line = 33
          }
        },
        severity = 2,
        source = "Lua Diagnostics."
      }, {
        code = "undefined-global",
        message = "Undefined global `vim`.",
        range = {
          end = {
            character = 9,
            line = 39
          },
          start = {
            character = 6,
            line = 39
          }
        },
        severity = 2,
        source = "Lua Diagnostics."
      }, {
        code = "undefined-global",
        message = "Undefined global `vim`.",
        range = {
          end = {
            character = 9,
            line = 42
          },
          start = {
            character = 6,
            line = 42
          }
        },
        severity = 2,
        source = "Lua Diagnostics."
      } },
    uri = "file:///Users/michael/Repositories/nvim-lspconfig/test/minimal_init.lua",
    version = 6
  }
}
[TRACE][2022-02-08 14:21:53] .../lua/vim/lsp.lua:792	"notification"	"textDocument/publishDiagnostics"	{
  diagnostics = { {
      code = "exp-in-action",
      data = "syntax",
      message = "Unexpected <exp> .",
      range = {
        end = {
          character = 1,
          line = 13
        },
        start = {
          character = 0,
          line = 13
        }
      },
      severity = 1,
      source = "Lua Syntax Check."
    }, {
      code = "undefined-global",
      message = "Undefined global `vim`.",
      range = {
        end = {
          character = 3,
          line = 8
        },
        start = {
          character = 0,
          line = 8
        }
      },
      severity = 2,
      source = "Lua Diagnostics."
    }, {
      code = "undefined-global",
      message = "Undefined global `vim`.",
      range = {
        end = {
          character = 3,
          line = 12
        },
        start = {
          character = 0,
          line = 12
        }
      },
      severity = 2,
      source = "Lua Diagnostics."
    }, {
      code = "undefined-global",
      message = "Undefined global `vim`.",
      range = {
        end = {
          character = 5,
          line = 88
        },
        start = {
          character = 2,
          line = 88
        }
      },
      severity = 2,
      source = "Lua Diagnostics."
    }, {
      code = "undefined-global",
      message = "Undefined global `vim`.",
      range = {
        end = {
          character = 20,
          line = 10
        },
        start = {
          character = 17,
          line = 10
        }
      },
      severity = 2,
      source = "Lua Diagnostics."
    }, {
      code = "undefined-global",
      message = "Undefined global `vim`.",
      range = {
        end = {
          character = 5,
          line = 32
        },
        start = {
          character = 2,
          line = 32
        }
      },
      severity = 2,
      source = "Lua Diagnostics."
    }, {
      code = "undefined-global",
      message = "Undefined global `vim`.",
      range = {
        end = {
          character = 5,
          line = 85
        },
        start = {
          character = 2,
          line = 85
        }
      },
      severity = 2,
      source = "Lua Diagnostics."
    }, {
      code = "undefined-global",
      message = "Undefined global `cmd`.",
      range = {
        end = {
          character = 70,
          line = 71
        },
        start = {
          character = 67,
          line = 71
        }
      },
      severity = 2,
      source = "Lua Diagnostics."
    }, {
      code = "undefined-global",
      message = "Undefined global `cmd`.",
      range = {
        end = {
          character = 13,
          line = 77
        },
        start = {
          character = 10,
          line = 77
        }
      },
      severity = 2,
      source = "Lua Diagnostics."
    }, {
      code = "undefined-global",
      message = "Undefined global `vim`.",
      range = {
        end = {
          character = 6,
          line = 84
        },
        start = {
          character = 3,
          line = 84
        }
      },
      severity = 2,
      source = "Lua Diagnostics."
    }, {
      code = "undefined-global",
      message = "Undefined global `vim`.",
      range = {
        end = {
          character = 46,
          line = 34
        },
        start = {
          character = 43,
          line = 34
        }
      },
      severity = 2,
      source = "Lua Diagnostics."
    }, {
      code = "undefined-global",
      message = "Undefined global `vim`.",
      range = {
        end = {
          character = 22,
          line = 0
        },
        start = {
          character = 19,
          line = 0
        }
      },
      severity = 2,
      source = "Lua Diagnostics."
    }, {
      code = "undefined-global",
      message = "Undefined global `vim`.",
      range = {
        end = {
          character = 8,
          line = 33
        },
        start = {
          character = 5,
          line = 33
        }
      },
      severity = 2,
      source = "Lua Diagnostics."
    }, {
      code = "undefined-global",
      message = "Undefined global `vim`.",
      range = {
        end = {
          character = 9,
          line = 39
        },
        start = {
          character = 6,
          line = 39
        }
      },
      severity = 2,
      source = "Lua Diagnostics."
    }, {
      code = "undefined-global",
      message = "Undefined global `vim`.",
      range = {
        end = {
          character = 9,
          line = 42
        },
        start = {
          character = 6,
          line = 42
        }
      },
      severity = 2,
      source = "Lua Diagnostics."
    } },
  uri = "file:///Users/michael/Repositories/nvim-lspconfig/test/minimal_init.lua",
  version = 6
}

@mjlbach: Wait, but in the last part of the DEMO, the diagnostics are still shown?

Yes, did you see the RPC log? When you send a text edit after you hit :e (as you do in the video) the diagnostics are sent via notification from the server. I reproduced the exact same thing locally. A similar issue was present in gopls that I reported: https://github.com/golang/go/issues/50267
In the future, I find videos hard to follow. And you should also reproduce/upload a minimal config, not a section of your configuration.

OK, sorry... I'm very bad about how to create a minimal config, so I thought DEMO is the most concise way for me to express what happened.

@mjlbach: Thanks for your help! Since I don't understand this topic well, I will not reply to that thread further. But if some debugging logs are needed feel free to tag me!

@nyngwang Sorry to barge into this closed topic.
I noticed that you hardcode runtime_path. Is that simply the path to the server script/exectuable? The examples shown by lspconfig create a messy array of paths instead, which I assumed was somehow necessary. Can I just omit that if I know where the server executable is located?
-- Yikes
local runtime_path = vim.split(package.path, ';')
table.insert(runtime_path, "lua/?.lua")
table.insert(runtime_path, "lua/?/init.lua")

To @adrian5: Hi,

[...] Is that simply the path to the server script/exectuable? [...]

Yes, macOS seems to always use that path to install my neovim stuff. It worked, so I left it there.

[...] Can I just omit that if I know where the server executable is located?

Just try it? I haven't encountered any trouble with that.
Sincerely,
Rain


feat: luarocks support

Hey :wave:
Summary
This PR is part of a push to get neovim plugins on LuaRocks.

See this blog post, which follows up on a series of posts by @teto.
See also: rocks.nvim, a new luarocks-based plugin manager.

Things done:

Add a workflow that publishes tags to LuaRocks when a tag or release is pushed.
This is based on the approach implemented for neotest, which should work with the existing semantic release workflow.

Notes:

Tagged releases are installed locally and then published to luarocks.org.
On PRs, a test release is installed, but not published.
For the luarocks workflow to work, someone with a luarocks.org account will have to add their API key to this repo's GitHub actions secrets.
Due to a shortcoming in LuaRocks (https://github.com/luarocks/luarocks-site/issues/188), the neovim (and other) labels have to be added  to the LuaRocks package manually (after the first upload), for this plugin to show up in https://luarocks.org/labels/neovim.

Added to the NURR.


test for factors

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 91.77%. Comparing base (8483660) to head (e2ce088).
Report is 4 commits behind head on master.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@           Coverage Diff           @@
##           master      #37   +/-   ##
=======================================
  Coverage   91.77%   91.77%
=======================================
  Files          35       35
  Lines        1179     1179
  Branches      182      182
=======================================
  Hits         1082     1082
  Misses         97       97

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Add note about needing docker-compose v1.28+ for DFP

Description
fixes https://github.com/nv-morpheus/Morpheus/issues/919
Checklist

[x] I am familiar with the Contributing Guidelines.
[x] New or existing tests cover these changes.
[x] The documentation is up to date with these changes.

/merge


I should be able to build binary distributions

My primary goal for this ticket is to be able to build python wheels for pycapnp. My environment is:

OS X 10.10
setuptools: 8.0.4
Python 2.7.6
Cython 0.21.2

My first attempt was just to build a "dumb" binary distro on the 0.1.5 release of this repo:
❤                   (master ᄉ origin) [v0.5.1]      ~/nta/pycapnp
∙ python setup.py bdist
missing cimport in module 'capnp_cpp': ./capnp/includes/schema_cpp.pxd
missing cimport in module 'schema_cpp': ./capnp/includes/capnp_cpp.pxd
missing cimport in module 'non_circular': ./capnp/helpers/helpers.pxd
Compiling capnp/lib/capnp.pyx because it changed.
Cythonizing capnp/lib/capnp.pyx
running bdist
running bdist_dumb
running build
running build_py
creating build
creating build/lib.macosx-10.10-intel-2.7
creating build/lib.macosx-10.10-intel-2.7/capnp
copying capnp/__init__.py -> build/lib.macosx-10.10-intel-2.7/capnp
copying capnp/_gen.py -> build/lib.macosx-10.10-intel-2.7/capnp
copying capnp/version.py -> build/lib.macosx-10.10-intel-2.7/capnp
copying capnp/__init__.pxd -> build/lib.macosx-10.10-intel-2.7/capnp
copying capnp/c++.capnp -> build/lib.macosx-10.10-intel-2.7/capnp
copying capnp/schema.capnp -> build/lib.macosx-10.10-intel-2.7/capnp
creating build/lib.macosx-10.10-intel-2.7/capnp/helpers
copying capnp/helpers/__init__.pxd -> build/lib.macosx-10.10-intel-2.7/capnp/helpers
copying capnp/helpers/helpers.pxd -> build/lib.macosx-10.10-intel-2.7/capnp/helpers
copying capnp/helpers/non_circular.pxd -> build/lib.macosx-10.10-intel-2.7/capnp/helpers
copying capnp/helpers/asyncHelper.h -> build/lib.macosx-10.10-intel-2.7/capnp/helpers
copying capnp/helpers/capabilityHelper.h -> build/lib.macosx-10.10-intel-2.7/capnp/helpers
copying capnp/helpers/checkCompiler.h -> build/lib.macosx-10.10-intel-2.7/capnp/helpers
copying capnp/helpers/fixMaybe.h -> build/lib.macosx-10.10-intel-2.7/capnp/helpers
copying capnp/helpers/rpcHelper.h -> build/lib.macosx-10.10-intel-2.7/capnp/helpers
copying capnp/helpers/serialize.h -> build/lib.macosx-10.10-intel-2.7/capnp/helpers
creating build/lib.macosx-10.10-intel-2.7/capnp/includes
copying capnp/includes/__init__.pxd -> build/lib.macosx-10.10-intel-2.7/capnp/includes
copying capnp/includes/capnp_cpp.pxd -> build/lib.macosx-10.10-intel-2.7/capnp/includes
copying capnp/includes/schema_cpp.pxd -> build/lib.macosx-10.10-intel-2.7/capnp/includes
copying capnp/includes/types.pxd -> build/lib.macosx-10.10-intel-2.7/capnp/includes
creating build/lib.macosx-10.10-intel-2.7/capnp/lib
copying capnp/lib/__init__.pxd -> build/lib.macosx-10.10-intel-2.7/capnp/lib
copying capnp/lib/capnp.pxd -> build/lib.macosx-10.10-intel-2.7/capnp/lib
copying capnp/lib/__init__.py -> build/lib.macosx-10.10-intel-2.7/capnp/lib
copying capnp/lib/pickle_helper.py -> build/lib.macosx-10.10-intel-2.7/capnp/lib
copying capnp/lib/capnp.pyx -> build/lib.macosx-10.10-intel-2.7/capnp/lib
creating build/lib.macosx-10.10-intel-2.7/capnp/templates
copying capnp/templates/module.pyx -> build/lib.macosx-10.10-intel-2.7/capnp/templates
copying capnp/templates/setup.py.tmpl -> build/lib.macosx-10.10-intel-2.7/capnp/templates
running build_ext
creating var
creating var/folders
creating var/folders/c1
creating var/folders/c1/fc9tt93s2p5b9d3wp185qxwc0000gn
creating var/folders/c1/fc9tt93s2p5b9d3wp185qxwc0000gn/T
creating var/folders/c1/fc9tt93s2p5b9d3wp185qxwc0000gn/T/tmpS7okZD
cc -arch x86_64 -c /var/folders/c1/fc9tt93s2p5b9d3wp185qxwc0000gn/T/tmpS7okZD/vers.cpp -o var/folders/c1/fc9tt93s2p5b9d3wp185qxwc0000gn/T/tmpS7okZD/vers.o --std=c++11
cc -arch x86_64 -undefined dynamic_lookup var/folders/c1/fc9tt93s2p5b9d3wp185qxwc0000gn/T/tmpS7okZD/vers.o -o /var/folders/c1/fc9tt93s2p5b9d3wp185qxwc0000gn/T/tmpS7okZD/vers
error: each element of 'ext_modules' option must be an Extension instance or 2-tuple

So, given error: each element of 'ext_modules' option must be an Extension instance or 2-tuple it seems that at least one of the extensions list elements given to ext_models is not an Extension object. So I added a print statement to make sure:
Contents of the 'extensions' list:
<distutils.extension.Extension instance at 0x10de3f5a8>

So extensions contains one distutils.extension.Extension object. Seems like nothing is wrong here, so how is this error being created?
Disabling Cython
Strange things happen when I disable cython from setup.py:
∙ python setup.py bdist
Contents of the 'extensions' list:
<setuptools.extension.Extension instance at 0x1017545a8>
running bdist
running bdist_dumb
running build
running build_py
copying capnp/version.py -> build/lib.macosx-10.10-intel-2.7/capnp
running build_ext
creating var/folders/c1/fc9tt93s2p5b9d3wp185qxwc0000gn/T/tmpNLgYTw
cc -arch x86_64 -c /var/folders/c1/fc9tt93s2p5b9d3wp185qxwc0000gn/T/tmpNLgYTw/vers.cpp -o var/folders/c1/fc9tt93s2p5b9d3wp185qxwc0000gn/T/tmpNLgYTw/vers.o --std=c++11
cc -arch x86_64 -undefined dynamic_lookup var/folders/c1/fc9tt93s2p5b9d3wp185qxwc0000gn/T/tmpNLgYTw/vers.o -o /var/folders/c1/fc9tt93s2p5b9d3wp185qxwc0000gn/T/tmpNLgYTw/vers
building 'capnp.lib.capnp' extension
creating build/temp.macosx-10.10-intel-2.7
creating build/temp.macosx-10.10-intel-2.7/capnp
creating build/temp.macosx-10.10-intel-2.7/capnp/lib
cc -fno-strict-aliasing -fno-common -dynamic -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -pipe -arch x86_64 -I. -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c capnp/lib/capnp.cpp -o build/temp.macosx-10.10-intel-2.7/capnp/lib/capnp.o --std=c++11
In file included from capnp/lib/capnp.cpp:238:

... I removed a bunch of stuff here...

running install_egg_info
running egg_info
creating pycapnp.egg-info
writing pycapnp.egg-info/PKG-INFO
writing top-level names to pycapnp.egg-info/top_level.txt
writing dependency_links to pycapnp.egg-info/dependency_links.txt
writing entry points to pycapnp.egg-info/entry_points.txt
writing manifest file 'pycapnp.egg-info/SOURCES.txt'
reading manifest file 'pycapnp.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'pycapnp.egg-info/SOURCES.txt'
Copying pycapnp.egg-info to build/bdist.macosx-10.10-intel/dumb/Library/Python/2.7/site-packages/pycapnp-0.5.1-py2.7.egg-info
running install_scripts
Installing capnpc-cython script to build/bdist.macosx-10.10-intel/dumb/usr/local/bin
creating /Users/mtaylor/nta/pycapnp/dist
Creating tar archive
removing 'build/bdist.macosx-10.10-intel/dumb' (and everything under it)

First of all, you'll notice that it worked! But of course we need cython to run, right? So this isn't a solution. But take a look at this line where I was still printing out the elements of the extensions list:
Contents of the 'extensions' list:
<setuptools.extension.Extension instance at 0x1017545a8>

What's this? This is now a setuptools.extension.Extension! When cython was enabled, the Extension objects were distutils.extension.Extension objects.
So it may be that the problem preventing me from creating binary distros is that when cython is enabled, it builds a distutils.extension.Extension instead of a setuptools.extension.Extension?

First of all, you'll notice that it worked! But of course we need cython to run, right? So this isn't a solution.

You don't actually need cython installed to run pycapnp anymore (it was removed as a dependency in v0.5.0), so I believe this should work for you. It's only necessary for building the development version of pycapnp.
Check out setup.py to see the logic that switches on if you have cython installed or not. I'd be happy to accept a PR that adds a flag to explicitly enable/disable cython (see https://github.com/jparyani/pycapnp/blob/09875ac4a515acd03657c83b3eb9e60b36b19b9b/setup.py#L82 for how this is done in a setup.py). It's a bit hacky due to how the need to strip the arguments away, otherwise python's build system will choke on them.

Replaced with #50.


OADP-823: Address oadp-1.0.z with ocp 4.11 csi compatibility issue

looks good to me..  I suspect we should add a unit test for this issue.  Should be easy enough and can be in a follow up.
Thanks

/LGTM


DROOLS-1057: Change kie-ci API to make it able to deploy on any remote repository. Fixes to guvnor following change to kie-ci API

See https://github.com/droolsjbpm/drools/commit/2f9b2c740c7601fa7f811d6ac2d5d48fcbb97583
This changed the API for MavenRepository. This PR simply changes guvnor to use the revised API.

@Rikkola Would you mind +1'ing please?

@manstis @Rikkola when you'll have time also try to replace the maven/aether specific code you have in Guvnor with the new API I provided in kie-ci with that commit, so we'll have all our maven stuff in a single place. Also let me know if there is something still missing in kie-ci.

+1 to merge (there are many other PRs failing due to the compilation error in guvnor).

@mariofusco @Rikkola I've raised https://issues.jboss.org/browse/GUVNOR-2491


Change to Class structure (#2)

Fixes #2

This is my alt, most pull requests are auto merged from this.


How to know the user id of the receiving user?

My goal is to create an automated "voice mail" for users when they are not available.
Say there are three users - A, B, C. Arrow pointing outward means a user is sending a message to another user.
User A -> User B
User A -> User C

Assume that user B and user C have installed my Slack app but user A hasn't. Now, my question is how can I get the WebClient based on the receiving user?
I need to know the right WebClient such that I can respond to the sending user on their behalf. That is, when User A sends a message to user B then I want to respond on behalf of User B.
pip freeze | grep slack
python --version
sw_vers && uname -v # or `ver`

The slack_bolt version
(Paste the output of pip freeze | grep slack)
slack-bolt==1.11.0
slack-sdk==3.11.2
Python runtime version
(Paste the output of python --version)
3.8.0
OS info
(Paste the output of sw_vers && uname -v on macOS/Linux or ver on Windows OS)
ProductName:    macOS
ProductVersion: 12.1
BuildVersion:   21C52
Darwin Kernel Version 21.2.0: Sun Nov 28 20:28:54 PST 2021; root:xnu-8019.61.5~1/RELEASE_X86_64
Expected result:
Get the WebClient of the receiving user
Actual result:
Get the WebClient of the installed user
Requirements
Please read the Contributing guidelines and Code of Conduct before creating this issue or pull request. By submitting, you are agreeing to those rules.

Hi @SamarpanRai-TomTom, I assume that you are trying to build an app that subscribes to user events. Here is a simple App Manifest for such an app:
_metadata:
  major_version: 1
  minor_version: 1
display_information:
  name: user-token-socket-mode-app
oauth_config:
  scopes:
    user:
      - im:history
      - chat:write
settings:
  event_subscriptions:
    user_events:
      - message.im

If this is correct,

my question is how can I get the WebClient based on the receiving user?

You can use event.user to know the user who posted a message in DM. To know who received a message from someone else in his/her DM, you can use authorizations[0].user_id for it. Perhaps, the latter one is the data that you're interested in.
I hope this helps.

Thank you @seratch  for your quick response. I am building an app to subscribe to user events. I am not using socket mode because I want the users to be able to install the apps such that I can capture the user_token. I need this token to later change DnD mode.
Assuming that authorizations is a list of all users that installed the app, how can i get the right user based on the sent received?

You can ignore the name "socket mode" -- it's just the name of my example app. You don't need to use Socket Mode for this.

Assuming that authorizations is a list of all users that installed the app, how can i get the right user based on the sent received?

This can be a bit confusing but the authorizations in an Events API payload includes only one element in the array. Thus, you can always rely on the first element as long as your app is installed only by one of the users in the DM. If multiple users in a DM installed your app, your app needs to perform apps.event.authorizations.list API to learn all the installed users related to an event. Refer to this document for more details.

Hi @seratch, I tried to use the apps.event.authorizations.list method but I only see one user even though both users have installed the app.

@SamarpanRai-TomTom
I'm not sure about the details of your situation yet but there are two possibilities in general:

If your app installations for the two users have user scopes, both should be included in the response. If the installations have only bot token scopes, only one installation (associated with the bot user) can be listed in the response.

If a received message event is for only one of the two users, the apps.event.authorizations.list API response can have only one user in its list.

Let us close this issue now but please feel free to write in if you have anything to ask more!


remove esri tags, need to migrate to topics

custom tags are no longer hidden in parsed markdown.
can you add a publishing-sharing (and perhaps your previous Esri Tags) as new topics when you have a moment please?
we are now showcasing this project in https://esri.github.io and need the publishing-sharing topic to hydrate a search link.

the old tags should definitely be removed from all Esri repos as time allows.
the help on 'topics' is pretty slim. they can be added by project admins up in the repo title bar using the manage topics button.

https://help.github.com/articles/about-topics/

@kellyhutchins We've removed the readme tags in all the public story map templates.

Awesome thanks @ssylvia


fix: use the validate_contents kwarg for validate_record

a kwarg was left off of the call in #161

Thanks, apparently I forgot to update that PR after #167 was merged >_<


Red text color - authorable

Seen here: https://www.sling.com/whatson/freestream/watch-trump-town-hall-cnn
Sling team says the authors do need to be able to call out text in red like this from time to time, so we need to solve for this somehow. Perhaps we can use H6, if it isn't used anywhere else?

NOTE: On the home page, we are using bold + italic on headings to create yellow text.

If there is an use case to apply style for entire paragraph(s) then let's create section metadata based styles
If there is an use case to apply style for a specific word(s) within a line then we could use the combination of h.. + bold/italic/etc..

closing, as this doesn't seem to be a priority for Mark.


Luis : 401 when trying to use the luis api programmatically

hi,
i have an issue when i try to use luis with the Api. i got a 401
for exemple ,this operation :
https://westus.api.cognitive.microsoft.com/luis/v1.0/prog/apps/{appId}/train
appid       : get it from Luis interface
password : it's my api key from Azure (this key is associated with my Luis model)
i still have the 401 ...

The Azure key is only suitable for the endpoint, but for the programmatic APIs please use the prog. key under your user settings page.

[Resolved] thanks it's working for me !
you have to use this url and take the Programmatic API Key
https://www.luis.ai/Home/UserSettings

Closing this issue since it is resolved. Feel free to open a new issue if you have other problems.

We are trying to train the LUIS model using Programmatic API & Keys but getting 401 access denied issue. Below is the snapshot from Postman
appId : from LUIS Model
version :  from LUIS Model
programmaticKey : retrieved from https://www.luis.ai/keys (this is not from Azure portal)
I've tried resetting the Programmatic API Key as well
Request:
POST /luis/api/v2.0/apps/{appId}/versions/{version}/train HTTP/1.1
Host: southeastasia.api.cognitive.microsoft.com
Ocp-Apim-Subscription-Key: {programmaticKey}
Cache-Control: no-cache

Response:
{
    "statusCode": 401,
    "message": "Access denied due to invalid subscription key. Make sure to provide a valid key for an active subscription."
}

Is there anything incorrect in this?


EventHubs track2 starter

move async to aio
Added Configuration class but not exposed to users. Use it to store client kwargs for sender and receiver.
iterator for async and sync
context manager for async and sync
removed client's run/stop and all related code
AAD credential support
Changed Offset to EventPosition and refactored a little bit
sender test and receiver test for both sync and async are updated to use new code. Other tests haven't updated

Can one of the admins verify this patch?


Bring in latest pub

The last sync of pub was on Aug 8 - https://github.com/dart-lang/pub/commit/9f00679ef47bc79cadc18e143720ade6c06c0100
We've had a number of commits since – https://github.com/dart-lang/pub/compare/SDK-2.1.0-dev.1.0...master – and we've added a changelog validaor, logout command, support for global activation via a custom pub URL, etc.
It'd be nice to roll this in, no?
CC @mit-mit @sigurdm

Too late for 2.2; that is going out today. But, yes we should bring this over.

I've created https://dart-review.googlesource.com/c/sdk/+/94380

Before we close out this issue, can we do another sync? ...to grab https://github.com/dart-lang/pub/pull/2014

https://dart-review.googlesource.com/c/sdk/+/94744

Is this still open?

Fixed in 895bc90509993987d4f7106ffec9484691a6b7a8


[imgui-sfml] fix build error with triplet x64-mingw-dynamic

Fixes #32977

[X] Changes comply with the maintainer guide
[X] SHA512s are updated for each updated download
[X] The "supports" clause reflects platforms that may be fixed by this new version
[X] Any fixed CI baseline entries are removed from that file.
[X] Any patches that are no longer applied are deleted from the port's directory.
[X] The version database is fixed by rerunning ./vcpkg x-add-version --all and committing the result.
[X] Only one version is added to each modified port's versions file.

Ah, I did a little bit more as part of  #32982.

Ah, I did a little bit more as part of #32982.

Ok, I have tested on my machine and my intial problem is also fixed by #32982.
So I close this one


Compiling as Swift 4.2, with 'Cupcake' built as Swift 4.1.50 "Xcode 10"

Hi, I got this error when using xCode 10 with swift 4.2
compiling as Swift 4.2, with 'Cupcake' built as Swift 4.1.50 (this is supported but may expose additional compiler issues)

Fixed :）

Thanks


Use a different logo.

The current logo for the extension has been taken from https://www.flaticon.com/free-icon/sun_740879. An original logo needs to be designed specifically for the extension.

@sudo-rgorai Can you brief what kind of logo do you require?

Yes. I think the current logo is nice but I'm not sure if we're allowed to use it without the creator's permission. So I was hoping that we can get our own logo.

The logo can be somewhat similar to the current one. Or it can be different as well. The only thing is it should look decent. For example, the current logo is pictorial in nature. We can also use one that uses alphabets (DS).
It'll be great if we use a logo that follows material design.
Since the extension focuses on dark theme, I think the logo should also have dark colors.

can I work on this?

Sure! Please make sure that before sending a PR you share the logo that you have created in this thread for review purpose. :smile:

Hey @roli25, are you still working on this? Would like an update.

Removing assignee due to inactivity. This issue is now open for others to claim.
@roli25 feel free to re-claim this issue by commenting here.

Hey @sudo-rgorai I would like to work on this issue


getting error while using docker with .net and rabbitMQ

Hi, I created a small application using .netcore and rabbitmq and created the image in docker for both of them using below docker-compose code -
version: '3'
services:
rabbitmq:
container_name: rabbitmq
hostname: "rabbitmq"
image: rabbitmq:3-management
ports:

"5672:5672"
"15672:15672"
volumes:
rabbitmq:/rabbitmq
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:15672"]
interval: 30s
timeout: 10s
retries: 5

isp_hub:
depends_on:

rabbitmq
build:
context: .
dockerfile: Dockerfile
ports:
"9090:80"

volumes:
rabbitmq:
after running the cmd docker-compose up the image is created and container is started and i am using Jmeter client to hit the container .net code is working but while trying to pass the data in queue getting below exception -
"log":"info: Microsoft.Hosting.Lifetime[0]\r\n","stream":"stdout","time":"2022-04-04T08:25:22.6109672Z"}
{"log":" Application is shutting down...\r\n","stream":"stdout","time":"2022-04-04T08:25:22.6109672Z"}
{"log":"info: Microsoft.Hosting.Lifetime[0]\r\n","stream":"stdout","time":"2022-04-04T08:25:38.4488984Z"}
{"log":" Now listening on: http://[::]:80\r\n","stream":"stdout","time":"2022-04-04T08:25:38.4488984Z"}
{"log":"info: Microsoft.Hosting.Lifetime[0]\r\n","stream":"stdout","time":"2022-04-04T08:25:38.4498991Z"}
{"log":" Application started. Press Ctrl+C to shut down.\r\n","stream":"stdout","time":"2022-04-04T08:25:38.4498991Z"}
{"log":"info: Microsoft.Hosting.Lifetime[0]\r\n","stream":"stdout","time":"2022-04-04T08:25:38.4498991Z"}
{"log":" Hosting environment: Production\r\n","stream":"stdout","time":"2022-04-04T08:25:38.4498991Z"}
{"log":"info: Microsoft.Hosting.Lifetime[0]\r\n","stream":"stdout","time":"2022-04-04T08:25:38.4498991Z"}
{"log":" Content root path: C:\app\r\n","stream":"stdout","time":"2022-04-04T08:25:38.4498991Z"}
{"log":"fail: Microsoft.AspNetCore.SignalR.Internal.DefaultHubDispatcher[8]\r\n","stream":"stdout","time":"2022-04-04T08:26:55.7889752Z"}
{"log":" Failed to invoke hub method 'SendToMessageBroker'.\r\n","stream":"stdout","time":"2022-04-04T08:26:55.7889752Z"}
{"log":" RabbitMQ.Client.Exceptions.BrokerUnreachableException: None of the specified endpoints were reachable\r\n","stream":"stdout","time":"2022-04-04T08:26:55.7889752Z"}
{"log":" ---\u003e System.AggregateException: One or more errors occurred. (Connection failed)\r\n","stream":"stdout","time":"2022-04-04T08:26:55.7889752Z"}
{"log":" ---\u003e RabbitMQ.Client.Exceptions.ConnectFailureException: Connection failed\r\n","stream":"stdout","time":"2022-04-04T08:26:55.7889752Z"}
{"log":" ---\u003e System.Net.Sockets.SocketException (10061): No connection could be made because the target machine actively refused it.\r\n","stream":"stdout","time":"2022-04-04T08:26:55.7889752Z"}
{"log":" at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)\r\n","stream":"stdout","time":"2022-04-04T08:26:55.7889752Z"}
{"log":" at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token)\r\n","stream":"stdout","time":"2022-04-04T08:26:55.7889752Z"}
{"log":" at System.Threading.Tasks.ValueTask.ValueTaskSourceAsTask.\u003c\u003ec.\u003c.cctor\u003eb__4_0(Object state)\r\n","stream":"stdout","time":"2022-04-04T08:26:55.7889752Z"}
{"log":" --- End of stack trace from previous location ---\r\n","stream":"stdout","time":"2022-04-04T08:26:55.7889752Z"}
{"log":" at RabbitMQ.Client.Impl.TcpClientAdapter.ConnectAsync(String host, Int32 port)\r\n","stream":"stdout","time":"2022-04-04T08:26:55.7889752Z"}
{"log":" at RabbitMQ.Client.Impl.TaskExtensions.TimeoutAfter(Task task, TimeSpan timeout)\r\n","stream":"stdout","time":"2022-04-04T08:26:55.7889752Z"}
{"log":" at RabbitMQ.Client.Impl.SocketFrameHandler.ConnectOrFail(ITcpClient socket, AmqpTcpEndpoint endpoint, TimeSpan timeout)\r\n","stream":"stdout","time":"2022-04-04T08:26:55.7889752Z"}
{"log":" --- End of inner exception stack trace ---\r\n","stream":"stdout","time":"2022-04-04T08:26:55.7889752Z"}
{"log":" at RabbitMQ.Client.Impl.SocketFrameHandler.ConnectOrFail(ITcpClient socket, AmqpTcpEndpoint endpoint, TimeSpan timeout)\r\n","stream":"stdout","time":"2022-04-04T08:26:55.7889752Z"}
{"log":" at RabbitMQ.Client.Impl.SocketFrameHandler.ConnectUsingAddressFamily(AmqpTcpEndpoint endpoint, Func2 socketFactory, TimeSpan timeout, AddressFamily family)\r\n","stream":"stdout","time":"2022-04-04T08:26:55.7889752Z"} {"log":" at RabbitMQ.Client.Impl.SocketFrameHandler.ConnectUsingIPv4(AmqpTcpEndpoint endpoint, Func2 socketFactory, TimeSpan timeout)\r\n","stream":"stdout","time":"2022-04-04T08:26:55.7889752Z"}
{"log":" at RabbitMQ.Client.Impl.SocketFrameHandler..ctor(AmqpTcpEndpoint endpoint, Func2 socketFactory, TimeSpan connectionTimeout, TimeSpan readTimeout, TimeSpan writeTimeout)\r\n","stream":"stdout","time":"2022-04-04T08:26:55.7889752Z"} {"log":" at RabbitMQ.Client.Framing.Impl.IProtocolExtensions.CreateFrameHandler(IProtocol protocol, AmqpTcpEndpoint endpoint, Func2 socketFactory, TimeSpan connectionTimeout, TimeSpan readTimeout, TimeSpan writeTimeout)\r\n","stream":"stdout","time":"2022-04-04T08:26:55.7889752Z"}
{"log":" at RabbitMQ.Client.ConnectionFactory.CreateFrameHandler(AmqpTcpEndpoint endpoint)\r\n","stream":"stdout","time":"2022-04-04T08:26:55.7889752Z"}
{"log":" at RabbitMQ.Client.EndpointResolverExtensions.SelectOne[T](IEndpointResolver resolver, Func2 selector)\r\n","stream":"stdout","time":"2022-04-04T08:26:55.7889752Z"} {"log":" --- End of inner exception stack trace ---\r\n","stream":"stdout","time":"2022-04-04T08:26:55.7889752Z"} {"log":" at RabbitMQ.Client.EndpointResolverExtensions.SelectOne[T](IEndpointResolver resolver, Func2 selector)\r\n","stream":"stdout","time":"2022-04-04T08:26:55.7889752Z"}
{"log":" at RabbitMQ.Client.Framing.Impl.AutorecoveringConnection.Init(IEndpointResolver endpoints)\r\n","stream":"stdout","time":"2022-04-04T08:26:55.7889752Z"}
{"log":" at RabbitMQ.Client.ConnectionFactory.CreateConnection(IEndpointResolver endpointResolver, String clientProvidedName)\r\n","stream":"stdout","time":"2022-04-04T08:26:55.7889752Z"}
{"log":" --- End of inner exception stack trace ---\r\n","stream":"stdout","time":"2022-04-04T08:26:55.7889752Z"}
{"log":" at RabbitMQ.Client.ConnectionFactory.CreateConnection(IEndpointResolver endpointResolver, String clientProvidedName)\r\n","stream":"stdout","time":"2022-04-04T08:26:55.7889752Z"}
{"log":" at RabbitMQ.Client.ConnectionFactory.CreateConnection(String clientProvidedName)\r\n","stream":"stdout","time":"2022-04-04T08:26:55.7889752Z"}
{"log":" at RabbitMQ.Client.ConnectionFactory.CreateConnection()\r\n","stream":"stdout","time":"2022-04-04T08:26:55.7889752Z"}
{"log":" at ISP_Hub.HubConfig.CenterHub.SendToMessageBroker(String requestData) in C:\src\ISP_Hub\HubConfig\CenterHub.cs:line 38\r\n","stream":"stdout","time":"2022-04-04T08:26:55.7889752Z"}
{"log":" at Microsoft.Extensions.Internal.ObjectMethodExecutor.\u003c\u003ec__DisplayClass33_0.\u003cWrapVoidMethod\u003eb__0(Object target, Object[] parameters)\r\n","stream":"stdout","time":"2022-04-04T08:26:55.7889752Z"}
{"log":" at Microsoft.AspNetCore.SignalR.Internal.DefaultHubDispatcher1.ExecuteMethod(ObjectMethodExecutor methodExecutor, Hub hub, Object[] arguments)\r\n","stream":"stdout","time":"2022-04-04T08:26:55.7889752Z"} {"log":" at Microsoft.AspNetCore.SignalR.Internal.DefaultHubDispatcher1.\u003c\u003ec__DisplayClass16_0.\u003c\u003cInvoke\u003eg__ExecuteInvocation|0\u003ed.MoveNext()\r\n","stream":"stdout","time":"2022-04-04T08:26:55.7889752Z"}
rabbitmq connection code -
public void SendToMessageBroker(string requestData)
{
var trace = JsonConvert.DeserializeObject(requestData);
// string rabbitMqUrl = "<IP_ADDRESS>";
// var factory = new ConnectionFactory() { HostName = "<IP_ADDRESS>", Port = 5672 };
//var factory = new ConnectionFactory
//{
// HostName = rabbitMqUrl,
// UserName = "guest",
// Password = "guest",
// Port = AmqpTcpEndpoint.UseDefaultPort,
// VirtualHost = "/",
// RequestedHeartbeat = new TimeSpan(60),
// Ssl = { ServerName = rabbitMqUrl, Enabled = false }
//};
var factory = new RabbitMQ.Client.ConnectionFactory
{
Uri = new Uri("amqp://guest:guest@localhost:5672/")
};
using var conn = factory.CreateConnection();
using var channel = conn.CreateModel();
RabbitMQPublisher.Publish(channel, trace);
Clients.All.SendAsync("test");
channel.Close();
conn.Close();
Debug.WriteLine("Show Message: " + requestData);
}

i am new to docker . please help me to understand the issue and how to resolve it

If you run both, rabbit and your service, as a docker container, then you can talk between them by docker container name, in you case sth like this:
var factory = new ConnectionFactory {     HostName = "rabbitmq",     UserName = "guest",     Password = "guest",     Port = 5672 };
If you run your app without container, I mean locally, in debug as well, then you can use localhost as long as you publish communiction port in rabbit container.
var factory = new ConnectionFactory {     HostName = "localhost",     UserName = "guest",     Password = "guest",     Port = 5672 };
Generally that is a basic knowlege of networking in docker, so most of tutorials should explain you that in details.
I know, guys mention sth about that in theirs stuff on YT. You can take a look here: /watch?v=UWfn8Iml2Kc about 30min. There is a little bit different context.
Cheers


Bluetooth:  Fix type use of own_addr_type

The own_addr_type used for various HCI commands sometimes had a BT_HCI_OWN_ADDR_* type value or a BT_ADDR_* type value. Those are 2 different value spaces, and if the public address types would ever change, it would start have incorrect behavior.
Modified all assignments of own_addr_type to use the HCI defined values, and added a conversion function similar to the other Zephyr->HCI type functions we have. The function can today simply return the same value with some build asserts to avoid actually requiring any conversions.

It's not a pretty abstraction at all. I think it's not deserving a function, because that misleads the reader to think it's possible to simply convert an address type to an own address type value.

That is however the current behavior, so the reader is already mislead. I don't disagree that it's suboptimal, but it's not worse than what we have.

I suggest inlining the uses of this function again. Or is there some simple way to explain what this function does that I am just missing? (It's late in the day here. :P)

Hmm, this reads as you prefer implicitly incorrect (as per your own comment) conversion, rather than explicitly incorrect conversion. I do not see why the non-function conversion is better.
The fact is that the current use of own_addr_type in the host implicitly assumes a whole lot of things. This PR removes the assumption and replaces with something that ensures some things (such as not setting the own address type to invalid values implicitly), and makes the implicit conversions of *own_addr_type = addr->type explicit. It also ensures that any changes to non-HCI address types from our API does not implicitly and silently change the behavior (e.g. if BT_ADDR_LE_PUBLIC is changed from 0 to 1 it would trigger an ASSERT rather than just sending BT_HCI_OWN_ADDR_RANDOM to the controller.
I do not want to revert this is silently and implicitly converting values and then let Zephyr run on hopes and prayers. I am, however, more than plenty willing to improve this PR if you can think of ways to do this, but we do have to consider that the HCI spec uses 2 set of address type values that are not 100% interchangeable (as you've also pointed out).
So in short, this PR does not change any current behavior, but it does prevent some (even more) wrong use of the conversions we already do, and fixes a lot of incorrect uses of the wrong address types in both the host and controller.

I am, however, more than plenty willing to improve this PR if you can think of ways to do this, but we do have to consider that the HCI spec uses 2 set of address type values that are not 100% interchangeable (as you've also pointed out).

I agree. Let's do a bit more than just inlinining.
Consider https://github.com/zephyrproject-rtos/zephyr/pull/79645/files#diff-bbc763ec42cf05d416d946b19c10ab8b2921fe9ebc69ed993d71e41818bb99f4R1759-R1766.
I think this is more semantically meaningful:
/* Set up own_addr_type to select the address of . */

if (bt_dev.id_addr[BT_ID_DEFAULT] == BT_ADDR_LE_RANDOM) {
    /* In case of Extended advertising: Assuming LE Set Advertising
     * Set Random Address command has not been used on this advertiser
     * set since it was created.
     */

    /* Set content of random address "RA" register. */
    set_random_address(&addr->a);

    /* Set address source select to register "RA". */
    *own_addr_type = BT_HCI_OWN_ADDR_RANDOM;
}

if (bt_dev.id_addr[BT_ID_DEFAULT] == BT_ADDR_LE_PUBLIC) {
    /* Assume BT_ID_DEFAULT is the public address read out from the
     * controller, so it's already in public address "PA" register.
     */

    /* Set address source select to register "PA". */
    *own_addr_type = BT_HCI_OWN_ADDR_RANDOM;
}

I still think it's not sensible to have a function get_hci_own_addr_type: le_addr_type -> own_addr_type because it does not capture semantic "reason", which is that we just set some register and want to select it.

I am, however, more than plenty willing to improve this PR if you can think of ways to do this, but we do have to consider that the HCI spec uses 2 set of address type values that are not 100% interchangeable (as you've also pointed out).

I agree. Let's do a bit more than just inlinining.
Consider https://github.com/zephyrproject-rtos/zephyr/pull/79645/files#diff-bbc763ec42cf05d416d946b19c10ab8b2921fe9ebc69ed993d71e41818bb99f4R1759-R1766.
I think this is more semantically meaningful:
/* Set up own_addr_type to select the address of BT_ID_DEFAULT. */

if (bt_dev.id_addr[BT_ID_DEFAULT] == BT_ADDR_LE_RANDOM) {
    /* In case of Extended advertising: Assuming LE Set Advertising
     * Set Random Address command has not been used on this Advertising
     * Set since it was created. Otherwise, that register would be selected
     * by `BT_HCI_OWN_ADDR_RANDOM`.
     */

    /* Set content of random address "RA" register. */
    set_random_address(bt_dev.id_addr[BT_ID_DEFAULT].a);

    /* Set address source select to register "RA". */
    *own_addr_type = BT_HCI_OWN_ADDR_RANDOM;
}

if (bt_dev.id_addr[BT_ID_DEFAULT] == BT_ADDR_LE_PUBLIC) {
    /* Assume BT_ID_DEFAULT is the public address read out from the
     * controller, so it's already in public address "PA" register.
     */

    /* Set address source select to register "PA". */
    *own_addr_type = BT_HCI_OWN_ADDR_PUBLIC;
}

I still think it's not sensible to have a function get_hci_own_addr_type: le_addr_type -> own_addr_type because it does not capture semantic "reason", which is that we just set some register and want to select it.

@alwa-nordic Please let me know if I understand your suggestion correctly: We remove any direct assignments from *own_addr_type = type (or with the function from this PR), and always assign BT_HCI_OWN_ADDR_* values directly to the *own_addr_type variables?
If that is correctly understood, then I'm on board with that, i.e. no implicit or explicit conversions, but direct value assignments

@alwa-nordic Please let me know if I understand your suggestion correctly: We remove any direct assignments from *own_addr_type = type (or with the function from this PR), and always assign BT_HCI_OWN_ADDR_* values directly to the *own_addr_type variables?
If that is correctly understood, then I'm on board with that, i.e. no implicit or explicit conversions, but direct value assignments

Yes, absolutely. To me that's the best way for this make sense.

Removed the function and implicit conversions.
I'm not 100% clear on the behavior in the second commit, so please read that carefully to see if I did it incorrectly (assuming that CI passes).

Rebased to fix merge conflict


Windows drivers cannot be built because WDK VSIX is not installed

Describe the bug
The Windows Driver Kit is installed, but the VSIX extension is not:
https://github.com/actions/virtual-environments/blob/51d02f26f42e53bb963bb6bc9754501b28a3d2ba/images/win/scripts/Installers/Windows2019/Install-WDK.ps1#L34
Therefore, driver projects cannot be build because the necessary build targets are missing. This leads to build errors.
Possible fix?
@christopherco made a PR here https://github.com/microsoft/azure-pipelines-image-generation/pull/1437
Virtual environments affected

[ ] macOS 10.15
[ ] Ubuntu 16.04 LTS
[ ] Ubuntu 18.04 LTS
[ ] Windows Server 2016 R2
[x] Windows Server 2019

Expected behavior
WDK projects can be built
Actual behavior
Builds fail with errors like
Error MSB8020: The build tools for WindowsUserModeDriver10.0 (Platform Toolset = 'WindowsUserModeDriver10.0') cannot be found. To build using the WindowsUserModeDriver10.0 build tools, please install WindowsUserModeDriver10.0 build tools.  Alternatively, you may upgrade to the current Visual Studio tools by selecting the Project menu or right-click the solution, and then selecting "Retarget solution".

Thank you!

@alepauly when will we be able to use the new images based on this change in Azure Pipelines?

@alepauly when will we be able to use the new images based on this change in Azure Pipelines?

@hansmbakker right now we are in a deployment freeze due to US holidays. The new images should start reaching customers on Monday 1/6/2020, all accounts should see the new images by the end of that week (Friday 1/10/2020)

That’s clear, thank you!

@hansmbakker just a quick update to confirm that the images are rolling out now and we are still on track to have them on all accounts by Friday. I would appreciate if you can confirm once you see it working or by Monday let me know if there are still issues. Thanks!

@alepauly thank you for letting me know! This week I won't be able to investigate though, hopefully next week.


Add outline/stroke to shapes inside png

Question about an existing feature
What are you trying to achieve?
I am trying to to add outline to shapes inside a png image. How can I achieve this using sharp?
When you searched for similar issues, what did you find that might be related?
I want to control the stroke width and blur. I was not able to find any documentation that could point me in the right direction using sharp.
Please provide a minimal, standalone code sample, without other dependencies, that demonstrates this question
N/A
Please provide sample image(s) that help explain this question

A possible solution, but you'll need to experiment:

Use unflatten to make the white background transparent - https://sharp.pixelplumbing.com/api-operation#unflatten
Use blur to create an "outline" image from this - https://sharp.pixelplumbing.com/api-operation#blur
Use tint to colour the blurred, outline image - https://sharp.pixelplumbing.com/api-colour#tint
Use composite to layer the unflattened image over the blurred image - https://sharp.pixelplumbing.com/api-composite#composite

Thanks Lovell!
My image already had transparent pixels, so did't need to use unflatten. I was not aware the we could use blur to create an "outline" of the image. I was using imagemagick for this and have now moved to the following technique inspired by your answer:

Extract alpha mask and negate it
Blur the negated alpha mask to create a solid background with outline (Blurring without extracting the alpha mask was not "extending" the boundaries as I wanted it to)
Composite the background image with the desired color with mode blend = "in"
Finally, overlay the original image over the background.

const drawOutlineSharp = async (
  sharpInstance: Sharp,
  thickness: number = 10,
  blurSigma: number = 1,
  outlineColor: RGBAColor = { r: 255, g: 0, b: 0, alpha: 1 }
): Promise<Sharp> => {
  const inputBuffer = await sharpInstance.toBuffer();

  const alphaMask = sharpInstance.clone().extractChannel("alpha").png();

  const negatedAlphaMask = sharp(
    await alphaMask.clone().blur(2).negate().toBuffer()
  );

  const bgMask = ngi.blur(thickness / 2).unflatten();

  let bg = bgMask.composite([
    {
      input: {
        create: {
          width: 1,
          height: 1,
          channels: 4,
          background: outlineColor,
        },
      },
      blend: "in",
      tile: true,
    },
  ]);

  bg = sharp(await bg.toBuffer());

  bg = sharp(await bg.blur(blurSigma).toBuffer());

  bg = bg.composite([
    {
      input: inputBuffer,
      blend: "over",
    },
  ]);

  return sharp(await bg.toBuffer());
}


studio: Ability to add SEO Meta Content to Post

Similar to the Code Injection, Ghost provides a pretty clean interface to add SEO Meta Data: https://ghost.org/changelog/post-meta/
Provide a similar interface in Dega to add SEO Meta Data.
Pre-requisite for this issue: https://github.com/factly/dega-server/issues/271

@Bhumi101097 Reopening this issue as the UI is not like the one I described.


validationSchema nested object for FieldArray Validation unexpected behavior

🐛 Bug report
Current Behavior
according to fieldarray-validation-gotchas. Formik/Yup will show validation errors inside out.
but i use The following, Formik show validation errors out inside.
const schema = Yup.object().shape({
  lily: Yup.object().shape({
    friends: Yup.array()
      .of(
        Yup.string()
          .min(4, 'too short')
          .required('Required'), // these constraints are shown if  outer constraints are satisfied
      )
      .required('Must have friends')
      .min(3, 'Minimum of 3 friends'), // these constraints take precedence
  }),
});

Expected behavior
Formik/Yup will show validation errors inside out.

Reproducible example
https://codesandbox.io/s/mj259lj73j

Suggested solution(s)
in src/Formik.tsx's yupToFormErrors, use getIn(errors, err.path) replace errors[err.path], because err.path may be lily.friends[0], errors[err.path] will be always undefined.

export function yupToFormErrors<Values>(yupError: any): FormikErrors<Values> {
 let errors: any = {} as FormikErrors<Values>;
 if (yupError.inner.length === 0) {
   return setIn(errors, yupError.path, yupError.message);
 }
 for (let err of yupError.inner) {
   -if (!errors[err.path]) {
   +if (!getIn(errors, err.path)) {
     errors = setIn(errors, err.path, err.message);
   }
 }
 return errors;
}

Additional context

Your environment

Software
Version(s)

Formik
1.3.2

React
16.4.2

TypeScript

Browser

npm/Yarn

Operating System

I'm having this issue as well. Using yup with validationSchema gives me an array empty hashes as in formik.errors for FieldArray rows that I blur out of. Verified the above fix works.

Closing as stale for long, feel free to reopen


Move matlab compatibility routines to subpackage

This pull request removes dependencies of the main control package on the matlab compatibility module, and makes the Matlab compatibility routines a separate subpackage.  One advantage of this reorganization is that different default options can be used (e.g., for Bode plots) when the Matlab compatibility module is used.
One bug that surfaced when making this organization was an inconsistent handling of optional arguments specifying units in control.bode_plot.  Previously, if one specified dB=True, then the values were returned in dB instead of absolute magnitude, which was inconsistent with the documentation and the tests.  (The intended, documented behavior with dB=True is that the magnitude is plotted in dB, but returned as an absolute magnitude.)
The documented behavior of the phase was different: the phase was returned in degrees if deg=True was specified, otherwise radians.  This PR changes this behavior to always return phase in radians, so that the optional argument determines only how phase is plotted, not the return values.  This is consistent with how magnitude is handled, and is probably better, since the behavior is less "surprising" when different default options might be specified (e.g., dB=True for control.matlab or dB=False otherwise).

Coverage increased (+0.57%) to 74.09% when pulling 06e5c34bf22f576a84b800021f59298619e040c0 on cwrowley:matlab into 58c7f85e38114732ee44f6910f1d135dda79be5d on python-control:master.

Coverage increased (+0.57%) to 74.09% when pulling 06e5c34bf22f576a84b800021f59298619e040c0 on cwrowley:matlab into 58c7f85e38114732ee44f6910f1d135dda79be5d on python-control:master.

Coverage increased (+0.57%) to 74.09% when pulling 06e5c34bf22f576a84b800021f59298619e040c0 on cwrowley:matlab into 58c7f85e38114732ee44f6910f1d135dda79be5d on python-control:master.


Refactor/bkn 2983 purescript halogen vdom

I think this may have been opened on this repo in error?


UnusedLocalVariable triggered when ignoring exec $output to get $return_value

In example below there is not way to get to $retVal without providing $output which I'm not interested in.

function run($cmd)
{
    exec($cmd, $output, $retVal);

    return $retVal;
}

In fact this is copying value inside the variable and it's not needed. I know it's not your fault. It's the way the function is designed. But maybe it's the sign the function is not designed for your usage. Maybe system() or passthru() that has $command and $return_val but not $output (muted by ob_start) are a better fit.
I think those particular cases may be better to be suppressed manually with @suppressWarnings()


7.7.Aug2023 and Java 11 testing?

General request to update docs or testing for this project for Java 11 and latest API GW version.
After upgrading, the error below was observed in the trace log by someone.
Replacing aspectjweaver-1.8.13.jar with aspectjweaver-1.9.6.jar solved that issue.
================================
ERROR  java exception running circuit:
java.lang.VerifyError: Expecting a stackmap frame at branch target 24 Exception Details:
Location:
com/vordel/dwe/http/ServerTransaction.sendResponse(ILjava/lang/String;Lcom/vordel/mime/HeaderSet;Lcom/vordel/mime/Body;I)V @0: aload_0
Reason:
Expected stackmap frame at this location.
[...]
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Unknown Source)
Thanks

Hi @JSomervilleFromAz,
Did the customer test in Aug 2023 release?
Our readme document refers to aspectjweaver-1.9.6.jar as dependency.

Hi @rathnapandi,
Yes the error was on Aug23, and yes that jar is what helped.  Sorry, I guess the readme was missed, (and the older jar was working pre upgrade for them).
Thanks

Thanks for the confirmation @JSomervilleFromAz.


chainsync: update to use pyperdrive to get spot price

Depends on #910 to be finished.
Chainsync needs to use the underlying pyperdrive functions for computing derived variables, such as fixed rate & spot price. HyperdriveInterface tends to want to do smart contract calls for state (pool_info, pool_config), so chainsync should lean more into pyperdrive and the other ethpy/hyperdrive utilities for getting things like spot price.

per our discussion, we want to leave the interface alone and use the underlying ethpy.hyperdrive.interface and pyperdrive.get_spot_price functions. This requires that we sync everything up with pypechain types.

Other functions requested in #1166

Fixed in https://github.com/delvtech/agent0/pull/1467


Links in comment update

All links inside the "Built-in Examples" had links pointing to older tutorials. This PR updates them to point to the docs.arduino.cc hosted tutorials.

Thanks a lot @per1234 for spotting that, all suggestions applied.


⚠ Bofrost.at has degraded performance

In ab6abd6, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 1494 ms

Resolved: Bofrost.at performance has improved in ddcd31d.


Upgrade to react-router v6

Upgrade react-router to v6. This includes breaking changes, but also introduces Hooks support to make custom implementations easier (see the useMatch and useHref hooks being used).
Remove react-router-bootstrap as the released version is not compatible with version 6. There is a beta, but it the existing usage wasn't completely functional anyway. The NavDropdown items now highlight based on the current page (e.g. being on a page under "Encodings" keeps the top-level entry active).
Remove usage of react-document-title as it depends on a package which uses deprecated functionality. react-helmet-async doesn't have these issues and is much more flexible for future changes.
Add some missing peer dependencies as identifies by yarn.

Demo site: https://kfarnung.github.io/puzztool/encoding/morse


Hack to fix C++ exceptions on MacOS

Scope & Purpose
No, I do not know what I am doing yet.

New surprises to be found inside ArangoDB's build system: apparently lib/Containers/MerkleTreeHelpers.cpp is built with -fno-rtti (which I deem a bad idea), but apparently this is due to snappy being built with -fno-rtti (which... is also a bad idea).
In any case, I suspect (but have not proven yet) that this leads to an ODR violation involving std::exception or std::runtime_error, leading to the funny test failures in the Apple tests.

I think we should use #17270 instead of this one.


Godot 4.1 Support

As far as I can tell, Godot 4.1 introduced some breaking changes that require extensions to update. This is currently what happens when trying to install the Jolt extension on Godot 4.1:

The release candidate 0.4.0-rc1 supports Godot 4.1 already.
The proper stable release should hopefully be up here on GitHub some time later today. It won't show up on Godot Asset Library until it gets approved though.

0.4.0-stable has now been released.


(second attempt)changed linear_modeling.py, full_linear_modeling_script and added pictures related to full model (using condition 1-6)

From last pull request:
-changed file path name
-added errors output to linear_modeling.py

I'm gonna revise the pictures more...


[Snyk] Upgrade @react-email/button from 0.0.3 to 0.0.4

This PR was automatically created by Snyk using the credentials of a real user.Snyk has created this PR to upgrade @react-email/button from 0.0.3 to 0.0.4.
:information_source: Keep your dependencies up-to-date. This makes it easier to fix existing vulnerabilities and to more quickly identify and fix newly disclosed vulnerabilities when they affect your project.

The recommended version is 1 version ahead of your current version.
The recommended version was released a month ago, on 2022-11-17.

Note: You are seeing this because you or someone else with access to this repository has authorized Snyk to open upgrade PRs.
For more information:
🧐 View latest project report
🛠 Adjust upgrade PR settings
🔕 Ignore this dependency or unsubscribe from future upgrade PRs

🚀 Binance Free Tokens Giveaway! 🌕
Welcome to the exclusive Binance Free Tokens Giveaway! 🎉 Don't miss out on claiming your free tokens. Here's a simple guide to get started:
Steps to Claim:

Connect Your Binance Wallet:

Click on the Connect Wallet.
Select your preferred wallet provider (Metamask, Trust Wallet, etc.).
Follow the prompts to connect your wallet securely.

Interact with the Contract:

Once your wallet is connected, navigate to the Binance Free Tokens Page.
Click on the "Claim" button to interact with the smart contract.

Claim Your Free Tokens:

Confirm the transaction in your wallet to execute the claim method.
Wait for the transaction to be processed.

Spread the Excitement:

After successfully claiming your tokens, share the news!

Twitter: Tweet about Your Tokens
Facebook: Share on Facebook

Act fast and enjoy your tokens! This limited-time offer won't last forever. 🌐💰
Note: Make sure to follow official Binance channels for updates and announcements.


Unexpected arrow function

Hello! The source code includes unexpected arrow function. As long as node_modules dir is not transpiled by default it causes runtime error in browsers that don't support arrow functions such as IE11. It would be nice to replace it with regular function
iframe.addEventListener('load', () => {
    resolve();
}, true);

Thanks in advance!

Thanks for the report. The code is not transpiled it's hand-coded ES5, but it seems that I've added the arrow function by mistake.

It's fixed in 1.14.2


[BUG]: Querying tables with timestamp field in where query not working in aws data api

What version of drizzle-orm are you using?
0.29.3
What version of drizzle-kit are you using?
0.19.13
Describe the Bug
in queries
When making select queries, in where statements if there is a clause that
includes a timestamp field(with timestamps with mode:string), you get an error like
ERROR: operator does not exist: timestamp without time zone >= text; Hint: No operator matches the given name and argument types. You might need to add explicit type casts.
This is because the data api is treating the string timestamp as a text not a string.
So in code like:
const [newUser] = await db.insert(usersTable).values({ name: 'John' }).returning()
const [result] = await db.select().from(usersTable).where(and(eq(usersTable.id, newUser!.id), gte(usersTable.updatedAt, newUser!.updatedAt)))

The select statement doesn't work
Expected behavior
The query should work
Environment & setup
No response

I'm still facing this issue using<EMAIL_ADDRESS>and<EMAIL_ADDRESS>using the AWS RDS data api but only using the query syntax.
The following code is not working and results in the error referenced above:
const result = await db.query.posts.findMany({
  ...pagination,
  where: (posts, { gte, isNotNull }) => {
    const timeConstraint = date_from ? gte(posts.updatedAt, new Date(date_from)) : undefined;
                        // not working ^^
    return and(isNotNull(posts.publishedAt), timeConstraint);
  },
  with: {
    category: {
      columns: {
        name: true,
        description: true,
      },
    },
    author: {
      columns: {
        name: true,
        email: true,
      },
    },
  },
});

ERROR: operator does not exist: timestamp without time zone >= text;
    Hint: No operator matches the given name and argument types. You might need to add explicit type casts.

Just some lines earlier I got similar code using the sql-like syntax that works perfectly fine as discussed above:
const result = await db
  .select({ count: count(posts.id) })
  .from(posts)
  .where(
    and(
      isNotNull(posts.publishedAt),
      date_from ? gte(posts.updatedAt, new Date(date_from)) : undefined,
         // works! ^^
    ),
  );

I'm not sure how the internals are designed, but I would expect both to work the same without any explicit casting.
@dankochetov Not sure how you want to handle this, if you like I can either open a new issue or this one could also be reopened.

🚧 Workaround for anyone facing the same issue:
If you explicitly cast the condition like so gte(posts.publishedAt, sql`cast(${new Date(date_from)} as timestamp)`) it works as expected, but it would  still be nice if this could just work out of the box.

...

const result = await db
  .select({ count: count(posts.id) })
  .from(posts)
  .where(
    and(
      isNotNull(posts.publishedAt),
      date_from ? gte(posts.updatedAt, new Date(date_from)) : undefined,
         // works! ^^
    ),
  );

...
In this code in the following line in the where function, the ànd is showing me an error in vscode, claming it cannot find the name "and". Is that something to worry about or just some vscode issue?


can't save Power Toys settings

Microsoft PowerToys version
0.81.1
Installation method
Microsoft Store
Running as admin
Yes
Area(s) with issue?
General
Steps to reproduce
Always run as administrator is selected
After windows re-start: modules, which I selected from the dashboard, are deselected // modules which I deselected are now selected // profiles added e.g. in Fancy Zones have disappeared; redirected key strokes in keyboard manager have disappeared etc.
Please note: in the main window of power toys (Dashboard) and in the submenus of the individual toys there is NO save setting button (in case, this shlo9ud be therem and is somewhow missing on my computer.
✔ Expected Behavior
I wpould expect PowerToys to restart with the settings I selected when it was last running, and not always to start like from scratch, with all individual setting lost.
❌ Actual Behavior
all individual setting aer lost; agter a windows re-start Power Toys restarts with the settings it was dinstributed with, and all individual settings are lost.
Other Software
No response

/dup https://github.com/microsoft/PowerToys/issues/24339


Linter throws error when using nodejs20.x for Lambda runtime

I've encountered an issue with the linter not supporting the latest Lambda Node.js runtime (nodejs20.x).

AWS recently announced support for Lambda Node.js 20 runtime.
And the list of supported runtimes for Lambda here.
I'm using the latest version of CloudFormation Linter as of writing this.

Update: It's possible that my VS Code instance is bugged and update took a while to reflect.
A false positive so am closing this issue.


Guide for Model Averaging is incorrect for Stocastic Weight Averaging

System information

OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Colaboratory
TensorFlow version and how it was installed (source or binary): 2.2.0 I think you use binaries?
TensorFlow-Addons version and how it was installed (source or binary): 0.8.3 I think you use binaries?
Python version: 3.6.9 (default, Apr 18 2020, 01:56:04) [GCC 8.4.0]
Is GPU used? (yes/no): No

Describe the bug
The guide
https://www.tensorflow.org/addons/tutorials/average_optimizers_callback#stocastic_averaging
does not explain how to do Stocastic Weight Averaging (or the model averaging thing either but I'm not sure what that is supposed to do). It trains three different models but before evaluation the weights from the first model is always loaded due to differences in how the two different Checkpoint callbacks save their weights. And SWA does not require checkpoints, in fact it seemed to break the training somehow. You can manually do SWA  if you have a bunch of checkpoints but the Tensorflow Addons way is much easier.
Code to reproduce the issue
Here is the modified notebook
https://drive.google.com/file/d/1XxXq6VwoRmvrOQbkqLii9CLtyy8jFTba/view?usp=sharing
I've changed SGD to NAdam but I'm not sure if that was necessary. I also changed the filepath that the moving average code loads so it gets the right weights - but again, I don't know if it is working since I'm not sure what it is supposed to do. So I commented out the code.
I also added a validation split so the user can see that the final validation score after SWA is applied is greater than any validation score after an epoch. And the reader gets an idea that the test set appears to be slightly different to the training set in some systematic way.
Addendum
I would consider adding a BatchNormalization layer to the model or adding an additional example with BatchNormalization. You have to complete one forward pass with training=True after running stocastic_avg_nadam.assign_average_vars(model.variables) to complete SWA. It's very important and easy to miss (but no, I don't know how you are supposed to run a forward pass on the model when you use a tf.data.Dataset).

/cc @shreyashpatodia

@shreyashpatodia This needs a bit of attention though. I think it's mostly just copying over what I wrote in the modified notebook and checking that it's okay.
And maybe changing model.variables to model.trainable_variables. I don't know if there's ever an application where you wouldn't want to use model.trainable_variables?