How to access ui-select controller?

In following this thread https://github.com/angular-ui/ui-select/issues/201, I see people trying to access the ui-select controller with the .controller() method.
I'm trying this in the postLink of a wrapper directive and even if I use a timeout, I still cannot get a controller instance.  I've tried el.controller('uiSelect'), el.controller(), and el.controller('ngModel')
Is there any reliable way to access the ui-select controller (or even better, the ng-model controller)?

You mean like: Accessing $select?

not exactly...that only works for a directive that is on the ui-select element.  i have a showError directive that's on a parent used to toggle a css class on an outer div:
angular.directive('showError', () => {
  return {
    restrict: 'A',
    require: '^form'
    link: function (scope, el, attrs, formCtrl) {
      const inputEl = el[0].querySelector("[name]");
      const inputNgEl = angular.element(inputEl);
      const ngModelCtrl = inputNgEl.controller('ngModel');

      if (ngModelCtrl) {
        const toggleInvalid = e => {
          el.toggleClass('invalid', ngModelCtrl.$invalid);
        };
        scope.$on('form:submit', toggleInvalid);
        ngModelCtrl.$viewChangeListeners.push(toggleInvalid);
      }
    }
  }
});

the HTML like so:

  Description
  <input type="text" ng-model="vm.description" name="description">

Industry
  <ui-select required theme="selectize" ng-model="vm.industry" name="vm.industry">
    <ui-select-match placeholder="Choose...">
      {{$select.selected}}
    </ui-select-match>
    <ui-select-choices repeat="industry in vm.industries | filter: $select.search">

    </ui-select-choices>
  </ui-select>

This works for input and text and select but i cannot seem to access the ngModelController from ui-select

For more general Angular questions you might have more success on stackoverflow


Ubiquitous operations preview

There have been a lot of changes coming down the pike in effection as we refactor towards making all of the primitives just normal operations, but none of these have been tested in the bigtest/server codebase.
This aggregates the "operations" refactor into a single PR similar to #60 does so that we can preview the changes on an real codebase.
This includes:

#57 implementing the core functionality of fork, and join as operations.
#62 which implements monitor as an operation.
#63 for implementing the mailbox as two coordinating operations
#65 Make typings encourage operation-centered thinking

I think all of these PRs have been merged, right? Can we close this?

I think so!


Faster log stream

Don't wait 2 seconds in the log loop when there was log in the previous iteration

fixed here : https://github.com/freddycoder/AzureDevOpsTeamMembersVelocity/commit/6b0764fdbad8a08732d8d185a67aeee6e34706d1


snippets.nvim support do not work correctly

As was described in this PR https://github.com/nvim-lua/completion-nvim/pull/321#issuecomment-757534341 snippets.nvim has support but it is not expanding well the snippets
My testing minimal init.lua
local api = vim.api
local cmd = vim.cmd
local fn = vim.fn
local luv = vim.loop
local g = vim.g

local packer_path = luv.os_homedir() .. "/.local/share/nvim/site/pack/packer/opt/packer.nvim"

if fn.filereadable(packer_path .. "/README.md") == 0 then
  cmd [[echohl WarningMsg]]
  cmd [[echom "Installing dein plugin manager, please wait"]]
  cmd([[!git clone https://github.com/wbthomason/packer.nvim ]] .. packer_path)
  cmd [[echohl None]]
end

cmd [[packadd packer.nvim]]
cmd [[set completeopt=menuone,noinsert,noselect]]

local packer = require("packer")

packer.startup(
  function()
    packer.use({"wbthomason/packer.nvim", opt = true})
    packer.use(
      {
        "norcalli/snippets.nvim",
        config = function()
          local snippets = require "snippets"
          snippets.use_suggested_mappings()
        end
      }
    )
    packer.use(
      {
        "neovim/nvim-lspconfig",
        config = function()
          local lspconfig = require "lspconfig"
          local completion = require "completion"

          local configs = require "lspconfig/configs"
          local capabilities = vim.lsp.protocol.make_client_capabilities()
          capabilities.textDocument.completion.completionItem.snippetSupport = true
          lspconfig.html.setup {on_attach = require "completion".on_attach, capabilities = capabilities}
        end,
        requires = {
          {"nvim-lua/completion-nvim"}
        }
      }
    )
  end
)

run :PackerSync
close and open neovim again and run :checkhealth
sudo npm install -g vscode-html-languageserver-bin

How to reproduce
Here see how to reproduce, snippet

Expected behavior
Needs to expand correctly the snippet

Thanks for the effort and the minimal config, that should make debugging much easier! I'll get right on it :)

Thanks for the effort and the minimal config, that should make debugging much easier! I'll get right on it :)

I can reproduce with any langserver, doesn't work with sumneko and rust-analyzer either.

I can reproduce with any langserver, doesn't work with sumneko and rust-analyzer either.

Could you add vim.g.completion_enable_snippet = 'snippets.nvim' to your minimal init.lua and see if that fixes things for now? @haorenW1025

Got it I believe, dumb mistake on my part.
Could you add vim.g.completion_enable_snippet = 'snippets.nvim' to your minimal init.lua and see if that fixes things for now? @haorenW1025

Fix is up.

Fix is up.

@runiq this does not fix the issue for HTML at least.
opt.get_option('enable_snippet') and vim.g.completion_enable_snippet both have the same value.
Doing a little debug I found this:
Reply from HTML lsp
["completion_item"] = {
    ["label"] = "/html",
    ["kind"] = 10,
    ["filterText"] = "  ",
    ["insertTextFormat"] = 1,
    ["textEdit"] = {
        ["range"] = {
            ["end"] = {
                ["line"] = 1,
                ["character"] = 4,
            },
            ["start"] = {
                ["line"] = 1,
                ["character"] = 0,
            },
        },
        ["newText"] = "",
    },
},

a format that is supported as I can read here https://github.com/nvim-lua/completion-nvim/blob/master/lua/completion/source/lsp.lua#L19-L26
Printing complete item:
["menu"] = "",
["info"] = " ",
["kind"] = "Property",
["word"] = "",
["abbr"] = "/html",
["user_data"] = {
    ["lsp"] = {
        ["completion_item"] = {
            ["label"] = "/html",
            ["kind"] = 10,
            ["filterText"] = "  ",
            ["insertTextFormat"] = 1,
            ["textEdit"] = {
                ["range"] = {
                    ...
                },
                ["newText"] = "",
            },
        },
    },
},

I would think the issue is here https://github.com/nvim-lua/completion-nvim/blob/master/lua/completion.lua#L129 as completed_item.user_data.actual_item is nil

@runiq this does not fix the issue for HTML at least.
opt.get_option('enable_snippet') and vim.g.completion_enable_snippet both have the same value.
Doing a little debug I found this:
Reply from HTML lsp
["completion_item"] = {
    ["label"] = "/html",
    ["kind"] = 10,
    ["filterText"] = "  ",
    ["insertTextFormat"] = 1,
    ["textEdit"] = {
        ["range"] = {
            ["end"] = {
                ["line"] = 1,
                ["character"] = 4,
            },
            ["start"] = {
                ["line"] = 1,
                ["character"] = 0,
            },
        },
        ["newText"] = "",
    },
},

a format that is supported as I can read here https://github.com/nvim-lua/completion-nvim/blob/master/lua/completion/source/lsp.lua#L19-L26
Printing complete item:
["menu"] = "",
["info"] = " ",
["kind"] = "Property",
["word"] = "",
["abbr"] = "/html",
["user_data"] = {
    ["lsp"] = {
        ["completion_item"] = {
            ["label"] = "/html",
            ["kind"] = 10,
            ["filterText"] = "  ",
            ["insertTextFormat"] = 1,
            ["textEdit"] = {
                ["range"] = {
                    ...
                },
                ["newText"] = "",
            },
        },
    },
},

I would think the issue is here https://github.com/nvim-lua/completion-nvim/blob/master/lua/completion.lua#L129 as completed_item.user_data.actual_item is nil

Hmm, alright. Can you reopen this issue? (I can't) I'll take another look.

Hmm, alright. Can you reopen this issue? (I can't) I'll take another look.

I can't, too

I can't, too

It is not a snippet problem.
It is TextEdit expansion problem.

It is not a snippet problem.
It is TextEdit expansion problem.

The vim-lsp has an implementation for it that is closest to VSCode does.
The vim-vsnip-integ has an implementation for it that is a simplified version of VSCode does.
https://github.com/hrsh7th/vim-vsnip-integ/blob/master/autoload/vsnip_integ.vim#L192

The vim-lsp has an implementation for it that is closest to VSCode does.
The vim-vsnip-integ has an implementation for it that is a simplified version of VSCode does.
https://github.com/hrsh7th/vim-vsnip-integ/blob/master/autoload/vsnip_integ.vim#L192

user_data.actual_item should only matter for snippets.nvim snippets itself, not for LSP snippets. I'll take another look later today.

user_data.actual_item should only matter for snippets.nvim snippets itself, not for LSP snippets. I'll take another look later today.

@hrsh7th is correct, this is not a snippets problem, since insertTextFormat is 1 (i.e. plain text).
@carlitux I feel like I misunderstood what you expected to get originally – at first I thought you wanted something like this (| being the cursor):
html|

to complete to:

  |

…but judging from the TextEdit you posted, that's not what you're expecting to happen, right? What you really want is:
/html|

should complete to:
|

Is that correct?

@hrsh7th is correct, this is not a snippets problem, since insertTextFormat is 1 (i.e. plain text).
@carlitux I feel like I misunderstood what you expected to get originally – at first I thought you wanted something like this (| being the cursor):
html|

to complete to:

  |

…but judging from the TextEdit you posted, that's not what you're expecting to happen, right? What you really want is:
/html|

should complete to:
|

Is that correct?

No. In this case, html-language-server returns CompletionItem that represents indentation fixing by TextEdit.

Type <

<|>

Insert tag name and leave >

|

Insert <CR> and insert closing tag

Confirm /html item then fix the indentation.

The completion behavior is very complex.
Almost language servers aim to support VSCode's behavior...

No. In this case, html-language-server returns CompletionItem that represents indentation fixing by TextEdit.

Type <

<|>

Insert tag name and leave >

|

Insert <CR> and insert closing tag

Confirm /html item then fix the indentation.

The completion behavior is very complex.
Almost language servers aim to support VSCode's behavior...

on the last line with text < after selecting completion must be  but instead is </
final must be

|

but getting

</|

Not sure if has to handle indentation.

on the last line with text < after selecting completion must be  but instead is </
final must be

|

but getting

</|

Not sure if has to handle indentation.

That's because neither < nor / are valid keyword characters for html, and completion-nvim searches for the completion keyword by using the pattern \k*$. In order to get the correct completion behavior, you'll have to `setlocal iskeyword+=<,/,!>

That's because neither < nor / are valid keyword characters for html, and completion-nvim searches for the completion keyword by using the pattern \k*$. In order to get the correct completion behavior, you'll have to `setlocal iskeyword+=<,/,!>

@runiq maybe shouldn't be set automatically?
lua print(vim.inspect(vim.lsp.buf_get_clients()[1].server_capabilities.completionProvider.triggerCharacters))
or should be handled by snippets.nvim as vim-vsnip does with vim-vsnip-integ?

@runiq maybe shouldn't be set automatically?
lua print(vim.inspect(vim.lsp.buf_get_clients()[1].server_capabilities.completionProvider.triggerCharacters))
or should be handled by snippets.nvim as vim-vsnip does with vim-vsnip-integ?

This has nothing to do with how snippets.nvim does things.

This has nothing to do with how snippets.nvim does things.

I think snippets.nvim can do the same thing that vim-vsnip does.
But vim-vsnip-integ is handling the more complex case of LSP CompletionItem expansion.
I think it would be good to support LSP CompletionItem expansion in completion-nvim.
If it has done, we don't have to install vim-vsnip and vim-vsnip-integ to support complex expansion.

I think snippets.nvim can do the same thing that vim-vsnip does.
But vim-vsnip-integ is handling the more complex case of LSP CompletionItem expansion.
I think it would be good to support LSP CompletionItem expansion in completion-nvim.
If it has done, we don't have to install vim-vsnip and vim-vsnip-integ to support complex expansion.

I can add snippets.nvim support to vim-vsnip-integ (it is a bit weird. but will work fine may be).

I can add snippets.nvim support to vim-vsnip-integ (it is a bit weird. but will work fine may be).

But vim-vsnip-integ is handling the more complex case of LSP CompletionItem expansion.
I think it would be good to support LSP CompletionItem expansion in completion-nvim.

I definitely agree, I'd have expected it to be handled already. I found where that stuff was handled yesterday, I'll take a stab at it over the weekend. This should then also be able to complete multiline items.

But vim-vsnip-integ is handling the more complex case of LSP CompletionItem expansion.
I think it would be good to support LSP CompletionItem expansion in completion-nvim.

I definitely agree, I'd have expected it to be handled already. I found where that stuff was handled yesterday, I'll take a stab at it over the weekend. This should then also be able to complete multiline items.

maybe shouldn't be set automatically?

@carlitux I don't think so, since this is specific to the html filetype and the (rather idiosyncratic IMHO) behavior of this specific langserver. So I suggest just doing setlocal iskeyword+=<,>,!,/ in ~/.config/nvim/ftplugin/html.vim. If you only ever use this langserver for the HTML filetype, this should solve this issue, I assume?

maybe shouldn't be set automatically?

@carlitux I don't think so, since this is specific to the html filetype and the (rather idiosyncratic IMHO) behavior of this specific langserver. So I suggest just doing setlocal iskeyword+=<,>,!,/ in ~/.config/nvim/ftplugin/html.vim. If you only ever use this langserver for the HTML filetype, this should solve this issue, I assume?

Error executing vim.schedule lua callback: stack overflow
This is what I am getting :/

Error executing vim.schedule lua callback: stack overflow
This is what I am getting :/

@eddyekofo94 When? Where? How?

@eddyekofo94 When? Where? How?

maybe shouldn't be set automatically?

@carlitux I don't think so, since this is specific to the html filetype and the (rather idiosyncratic IMHO) behavior of this specific langserver. So I suggest just doing setlocal iskeyword+=<,>,!,/ in ~/.config/nvim/ftplugin/html.vim. If you only ever use this langserver for the HTML filetype, this should solve this issue, I assume?

not sure as you posted the video

That's because neither < nor / are valid keyword characters for html, and completion-nvim searches for the completion keyword by using the pattern \k*$. In order to get the correct completion behavior, you'll have to setlocal iskeyword+=<,/,>:
Peek.2021-01-14.14-31.mp4

instead of

|

I get

<//html>|

The same issue I am getting with flow type for example nvim state variable.| and suggest ?.field
instead of
variable?.field|

I get
variable.?.field|

What I think already it is a completion issue for these edges

maybe shouldn't be set automatically?

@carlitux I don't think so, since this is specific to the html filetype and the (rather idiosyncratic IMHO) behavior of this specific langserver. So I suggest just doing setlocal iskeyword+=<,>,!,/ in ~/.config/nvim/ftplugin/html.vim. If you only ever use this langserver for the HTML filetype, this should solve this issue, I assume?

not sure as you posted the video

That's because neither < nor / are valid keyword characters for html, and completion-nvim searches for the completion keyword by using the pattern \k*$. In order to get the correct completion behavior, you'll have to setlocal iskeyword+=<,/,>:
Peek.2021-01-14.14-31.mp4

instead of

|

I get

<//html>|

The same issue I am getting with flow type for example nvim state variable.| and suggest ?.field
instead of
variable?.field|

I get
variable.?.field|

What I think already it is a completion issue for these edges

not sure as you posted the video

What do you mean?

instead of

|

I get

<//html>|

Are you sure you set iskeyword correctly in the html document? (See video) Can you do show me iskeyword and the value of v:completed_item after that faulty completion?

The same issue I am getting with flow type

I don't know what that is, are you referring to the Flow typechecker? I'd need to see at least the value of v:completed_item after the failing completion in order to be able to debug that. Otherwise I can't even tell if this is related to snippets.nvim or textEdit expansion. (If it has insertTextFormat = 1, it's not a snippet, and therefore not related to snippets.nvim.)

What I think already it is a completion issue for these edges

True, but I can't tell if it's related to snippets.nvim. Unless this has specifically to do with snippets expansion with snippets.nvim, I'd like to ask you to open a new issue.
Please don't get me wrong, I don't want to dismiss your issue, because it definitely is a valid one! I would just like to keep this one issue—the one I have at least a chance of solving, because I'm familiar with the code integrating snippets.nvim—on topic.

not sure as you posted the video

What do you mean?

instead of

|

I get

<//html>|

Are you sure you set iskeyword correctly in the html document? (See video) Can you do show me iskeyword and the value of v:completed_item after that faulty completion?

The same issue I am getting with flow type

I don't know what that is, are you referring to the Flow typechecker? I'd need to see at least the value of v:completed_item after the failing completion in order to be able to debug that. Otherwise I can't even tell if this is related to snippets.nvim or textEdit expansion. (If it has insertTextFormat = 1, it's not a snippet, and therefore not related to snippets.nvim.)

What I think already it is a completion issue for these edges

True, but I can't tell if it's related to snippets.nvim. Unless this has specifically to do with snippets expansion with snippets.nvim, I'd like to ask you to open a new issue.
Please don't get me wrong, I don't want to dismiss your issue, because it definitely is a valid one! I would just like to keep this one issue—the one I have at least a chance of solving, because I'm familiar with the code integrating snippets.nvim—on topic.

I've created an example implementation.
https://github.com/hrsh7th/vim-vital-vs/pull/6/files

I've created an example implementation.
https://github.com/hrsh7th/vim-vital-vs/pull/6/files


Memory could not be read PowerToys.exe

Microsoft PowerToys version
0.49.1
Running as admin

[X] Yes

Area(s) with issue?
General
Steps to reproduce
Running on Windows 10 Pro x64 (Version 10.0.19043 Build 19043)
CPU Type: 16-Core AMD Ryzen 9 5950X, 4650 MHz (46.5 x 100)
Motherboard Name: Asus ROG Crosshair VIII Dark Hero
Motherboard Chipset: AMD Bixby X570
System Memory: 65450 MB
DIMM1/2/3/4: G Skill RipjawsV F4-3600C18-16GVK 4x16 GB DDR4-3600 DDR4
✔ Expected Behavior
Normal memory use / no error message after restart or shut down.
❌ Actual Behavior
Error message after restarting or shutting down pc. Memory leak does not occur during start up
Other Software
None, installed Powertoys v0.49.1 as last when  the error occurred.

Seems like #11071
Could you attach a full bug report file?
Right-click on the tray icon and click Report Bug. Then drag-and-drop the generated file into the GitHub comment to upload it. Thanks!

PowerToysReport_2021-11-02-12-03-55.zip
Same issues observed on PowerToysSetup-0.47.0-x64 and PowerToysSetup-0.49.1-x64

Does look like a duplicate of https://github.com/microsoft/PowerToys/issues/11071


Incompatible with Minecraft 1.19

I will sponsor further development on this mod

I think this is a nice alternative https://github.com/chunkaligned/fabric-discord-integration for 1.19 fabric.

Currently working on a rewrite which will first target 1.19.4, then I'll expend to other versions again.


Dependency injection/resource provisioning

Is your feature request related to a problem? Please describe.
I was trying to integrate with Databases in my personal API rewrite. I previously managed to integrate Tortoise, but Databases works differently.

Tortoise does not require to hold a reference to the database. Instead, we manipulate models directly, which are typically imported from a dedicated module.
On the other hand, Databases requires to keep a reference to the db in order to execute the queries: await db.fetch_all(animals.select()).

At a higher-level, there is currently no easy way to implement reusable services or resources in order to de-clutter views. People may be tempted to use middleware for that purpose, or abuse lifespan handlers. There must be a better way.
Describe the solution you'd like
Take inspiration from Pytest fixtures and implement a simple dependency injection system.
The implementation is already done via aiodine, so this will only require some glue code and documentation.
Here is how this should allow to integrate with Databases:
from bocadillo import App, provider
from databases import Database
from models import notes

app = App()

@provider(scope="app")
async def db():
    async with Database("sqlite://:memory:") as database:
        yield database

@provider
async def notes(db):
    return [
        {"id": note.id, "content": note.content}
        async for note in db.iterate(notes.select())
    ]

@app.route("/")
async def index(req, res, notes):
    res.media = notes

Describe alternatives you've considered

Let framework users set arbitrary attributes on app, e.g. app.db: this is longer to type, not type annotation-friendly, and too rigid.
Allow to set arbitrary attributes on req (e.g. using req.state that comes with Starlette v0.11): it would only work in HTTP views. In the example above, it wouldn't have been possible to use the database in a WebSocket view. In short, some (many?) providers are not tied to the HTTP protocol, so we need to handle them at a higher level.
Non-function-based provider registration, i.e. app.provider(name=value): besides allowing many less features, this may allow to register providers whose name is not a valid Python identifier, which makes them unusable in views. In the name of "There should be one, and only one obvious way to do it", let's stick to a function-only API.
resource instead of provider: the term "resource" may be confusing to people coming from the world of REST APIs.
fixture instead of provider: the term "fixture" would have been very confusing to people coming from Django or pytest (which have their own distinct concept of fixtures).
ingredient instead of provider:  too much metaphor hinders developer productivity.

Additional context

Personal API rewrite with Bocadillo
Tortoise ORM
Databases
Pytest fixtures

Do your plan is provide a "pre fetched data" as a fake server like that?
https://github.com/typicode/json-server
Or Am I wrong?

@Marlysson I'm not sure I fully understood what you meant by "pre-fetched data", but I don't think that's the idea behind fixtures. :)
Fixtures would be a generic way to inject resources/dependencies into views. So if you want to provide views with a fake server, I think you could do so with a yield fixture that fires off a separate process for the server and shuts it down on cleanup.
For example:
import os
import signal

from fake import start_fake_server

@fixture
def fake_server():
    pid = start_fake_server()
    yield
    os.terminate(pid, signal.SIGTERM)

Is that the use case you were thinking about?

I think so...
Cause I was reading about your concept around fixtures and came in my head (  because your examples was ever using objects pre-propulated ) the fixtures used in Django to tests..
But reading more about its documentation I'm beginning  to understand..
It's more related to dependency injection either data or classes in runtime execution..
Why do you handle more with data than objects as dependency injection ?

I forgot about Django’s fixtures! I can see why using the same word may be misleading :-) Indeed, Django’s fixtures are about providing initial data to populate the database with, whereas here fixtures don’t even have anything to do with tests at all.
I guess the fact that I mention that they are inspired by pytest’s fixtures doesn’t help to understand this either. This feature is indeed like a runtime DI system. In a sense, only the design comes from pytest, not the usage.

Why do you handle more with data than objects as dependency injection ?

Here, DI is used in a more general way than the OOP creational pattern (which I suppose you’re referring to?). It’s more the idea of « hey, I need whatever object/function/data structure that has been register under this name, please inject it in here » than « hey, can you build an instance of this class for me please? ». That’s something coming from pytest, and in a testing context it’s easy to understand why one needs testing data (in general) rather than just testing objects.

Anyway, do you think the docs aren’t clear enough about how this feature is not about testing, nor providing test or mock data? It’s very possible! The term « fixture » is used by many to mean different things...
In fact, I was thinking about calling these ingredients instead of fixtures, in order to have a separate word that also better reflects what they are: small components that you can build upon to make your views and stuff. What do you think? :-)

Very clear explanation.
I confused the concepts.. How I came from Django this concept it's related ( a salad of concepts haha ) .
Throughout the reading of the documentation I started understand the concept.

In fact, I was thinking about calling these ingredients instead of fixtures, in order to have a separate word that also better reflects what they are: small components that you can build upon to make your views and stuff. What do you think? :-)

Whole framework around the concepts of food .. cool . But you plan the people use this framework with components being a funny name? Nothing against.

But you plan the people use this framework with components being a funny name?

😆 Well, I think as long as the name is descriptive enough (as I said, I think ingredient is quite explicit), and we justify why we're choosing a metaphorical name over a more common one (here: to prevent confusion with other similarly-named but totally different features in other frameworks), we should be fine.
I'm not sold yet on this myself, but that's definitely an option. Consider what would happen for people testing Bocadillo apps with pytest? Two things named "fixtures" with the same API — how do you know which is which?

I agree totally.

Thought about it again. It turns out calling it ingredients may be too much metaphor. I'd rather have people use a somewhat dull name and be efficient that wonder "Okay, so what is an ingredient exactly again?" every time they stumble upon the word. What convinced me was that I as a maintainer have had a hard time not suffering from a slight cognitive load while reading "ingredient". It's called dependency injection, so let's stick to providers that inject resources into consumers (= views). :+1:

Awesome!!!


[Feature][JsonSplit-api] fix some bug in joint commissioning

#5498
fix some bug in joint commissioning

Codecov Report

:exclamation: No coverage uploaded for pull request base (json_split_two@2f0a277). Click here to learn what that means.
The diff coverage is n/a.

@@                Coverage Diff                @@
##             json_split_two    #6096   +/-   ##
=================================================
  Coverage                  ?   45.31%
  Complexity                ?     3633
=================================================
  Files                     ?      605
  Lines                     ?    24686
  Branches                  ?     2851
=================================================
  Hits                      ?    11187
  Misses                    ?    12399
  Partials                  ?     1100

Continue to review full report at Codecov.

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


Bug 1771402:  must-gather fails to collect some OCS logs and ceph commands when host network enabled

Backport of PR https://github.com/openshift/ocs-operator/pull/287

/retest

/retest

/retest

Looks like the e2e test failed on NooBaa, which I imagine requires a missing backport, but I'm not seeing the ocs-must-gather artifacts in the results. Does this mean our must0gather didn't run?

Merged via #295


Community: align properly community details header

closes: inveniosoftware/invenio-communities#849
Computer:

Tablet:

Mobile:

closing after providing the solution in comments


Replace(?) Reference.sourceURI with Reference.getSequence()

As @jeromekelleher noted in his comments in #198 about Reference.sourceURI and my addition of a Reference.sequence in the graph branch:

I think a better approach would be to remove both sequence and sourceURI from this object, and to provide a GET method getSequence(referenceId), which returns the sequence as a string. Problems associated with long strings can be handled using HTTP Streaming, rather than complicating the protocol with paging code for the sequences.

I'm moving the discussion out to its own issue against the main branch, because I think that overall we need a better solution for clients that want to pull down reference sequence than having them download and parse an entire FASTA.

So it turns out that we already have the ListReferenceBases API call. But I think we should make it clear that clients shouldn't be retrieving this URI. (Indeed, if the field is just documentation of the original data source, the URI may not even be up.)
How about something like:
/**
The URI from which the sequence was obtained. Specifies a FASTA format
file/string with one name, sequence pair. In most cases, clients should call
the `ListReferenceBases` method to obtain sequence from a `Reference` instead
of attempting retrieve this URI.
*/
union { null, string } sourceURI = null;

This is in now I believe.


Fix enif_open_resource_type assertion failure

According to erlang documentation the argument module_str of
enif_open_resource_type "is not (yet) used and must be NULL." This NULL
value is unfortunately asserted on a debug enabled erlang VM. This
change enables erlzmq2 to be run on such a VM too.

Seems legit - http://erlang.org/doc/man/erl_nif.html#enif_open_resource_type - is anyone maintaining this repository?

Doesn't seem to be maintained - I've published my fork to hex.pm (erlzmq) with your changes merged in https://github.com/esl/erlzmq

@bryanhuntesl we are always looking to welcome new volunteers in the ZeroMQ community - @yrashk @dhammika @evax any objection to adding a new maintainer? This repository seems in need of some love :-)


hiredis-test run error

when run test_resp3_push_handler function，if set redisSetPushCallback， RESP3 PUSH received at next call redisCommand

This seem to work fine in CI, where there are some different jobs that runs on windows, like:
https://github.com/redis/hiredis/actions/runs/8540919275/job/23399070664#step:10:84
https://github.com/redis/hiredis/actions/runs/8540919275/job/23399070998#step:6:136
Have you spot any difference compared to these runs?

@bjosv
Thanks for your answer.
This problem was caused by my negligence.I used hiredis in the deps in the redis source code to do the test, which is inconsistent with the code on the github master branch.

So can this issue be closed then?


PHP gapic generator is not deterministic

It generates different output for the same input on consecutive runs.
Example: https://github.com/googleapis/googleapis-gen/commit/a7dd37b1d69d4a274613cff07dd58eb1aefac1e4
Looks like chunks get generated in a different order depending on no variable I can observe.

This is fatal to all our code-generating automation: autosynth, bazel-bot, owl-bot, etc.

The diff is for RecommendationService.php.

I haven't seen it in about 3 weeks.  I'll re-open if I see it again.


Infinite loop

pod 'Branch'
pod 'Braintree'
pod 'Braintree/DataCollector'
pod 'Braintree/Venmo'
pod 'Braintree/Apple-Pay'
iOS8 Start the jammed.Have libraries conflict?

Are you including the Branch SDK as a static or dynamic library?
I'll try your pod configuration myself in an example project.  Can you post your whole Podfile?

I've publish release v0.17.10 which fixes your problem #695 .
Let me know if you have any other problems!


DOC:Add examples to integrate.quadpack docstrings

fix https://github.com/scipy/scipy/issues/7168

@ev-br all changes you requested are done can you just review them

@ev-br all changes were done. Can you review it?

Thanks @samyak0210.

@samyak0210 Thanks for working on the documentation!
One suggestion, for you and for reviewers:  please be sure the example code follows PEP 8.  In the example added in this pull request, there should be a space after each comma.


Add cargo bloat action.

This is intended to resolve #858 and also resolve #1157.

@teymour-aldridge great! Can you please get this working on your yew fork and share a link when you do? Thanks!

Will do.

Thanks, looks like it failed here: https://github.com/teymour-aldridge/yew/runs/660968907?check_suite_focus=true

Yes, the action seems to enable the ‘—all-features’ flag which doesn’t work with Yew. There’s probably some way to configure it to not enable that flag (I’ll have a look).

On 11 May 2020, at 08:55, Justin Starry<EMAIL_ADDRESS>wrote:
Thanks, looks like it failed here: https://github.com/teymour-aldridge/yew/runs/660968907?check_suite_focus=true https://github.com/teymour-aldridge/yew/runs/660968907?check_suite_focus=true
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub https://github.com/yewstack/yew/pull/1201#issuecomment-626536731, or unsubscribe https://github.com/notifications/unsubscribe-auth/AKFSTPOQP2IKAROSU4AVQ4TRQ6VNVANCNFSM4M5JA63Q.

I've submitted a PR to the repository to add support for custom arguments.

Maybe unrelated, but it seems cargo bloat doesn't natively support WASM, so maybe twiggy could be an supplement/alternative.

I'll look into that.

I'm going to close this in favour of #1307 which uses twiggy instead of cargo bloat.


Add needs dependency on backwards_compatibility_data

This PR adds dependency to upload step to wait for generate backwards compatibility data before actually uploading pip wheels to pypi. This way we can decrease number of micro version bumps if generate backwards compatibility data step fails.

Actually - can we hold off on merging this for now?


Demo world for mimic mechanisms

Requires bullet-featherstone

https://github.com/gazebosim/harmonic_demo/assets/3650755/75c44eda-0c58-44a4-a5a8-70d44da2ebe0

I added some color to indicate which joint axes have mimic constraints

https://github.com/gazebosim/harmonic_demo/assets/3650755/d81580da-ff42-4c92-a02c-a9c08cc40a1d

the rack axis direction was backwards; it's being fixed in #23
here are updated images:

https://github.com/gazebosim/harmonic_demo/assets/3650755/a3992788-18e8-4976-bfe3-10aa8f1ef188


Docs not built properly, not showing all pages?

It seems all the pages are not visible on qhub.dev for example the following:

https://github.com/Quansight/qhub/blob/main/docs/source/08_integrations/
https://github.com/Quansight/qhub/blob/main/docs/source/04_how_to_guides/7_qhub_gpu.md

As @costrouc said:

There is a latest  and stable version of our docs. We recently changed the default to stable. Did you visit https://docs.qhub.dev/en/latest/?


Feat/signer id page

What type of PR is this? (check all applicable)

[ ] Refactor
[X] Feature
[ ] Bug Fix
[ ] Optimization
[ ] Documentation Update

Description
Adds the signer id page
We are waiting on the API for the data for the stats panel on the right
Figma - https://www.figma.com/design/31q1g27k69z1yXb6r6vrRD/Stacks-Explorer-Working-File?node-id=9664-20852&node-type=canvas&t=PVJNUe8s2skW3xi9-0
Issue ticket number and link
https://github.com/hirosystems/explorer/issues/1878
Checklist:

[] I have performed a self-review of my code.
[ ] I have tested the change on desktop and mobile.
[ ] I have added thorough tests where applicable.
[ ] I've added analytics and error logging where applicable.

Screenshots (if appropriate):

I think copy button here should copy stacker_address rather than pox_address

we might wanna shrink this extra white space

there's a bit of screen jump when clicking cycle arrow button
https://github.com/user-attachments/assets/bbffbb78-2d91-454a-9ab0-4010792d026e

we might wanna make these cards same width on smaller screen (unless this is intentional)

maybe we truncate the signer key even more on mobile to allow more width to the table?

 we might wanna make these cards same width on smaller screen (unless this is intentional)

Can you make a separate issue for this? This PR is for the signer id page

 maybe we truncate the signer key even more on mobile to allow more width to the table?

Can you make a separate issue for this? This PR is for signer id page

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


What do you think about it ?
Regards

Thank you!


refactor: delete unused launcher

What this PR changes/adds
delete data-plane-server, as it's not really used and it's not clear what it's supposed to achieve.
Why it does that
cleanup
Further notes
List other areas of code that have changed but are not necessarily linked to the main feature. This could be method
signature changes, package declarations, bugs that were encountered and were fixed inline, etc.
Linked Issue(s)
Closes #4198
Please be sure to take a look at the contributing guidelines and our etiquette for pull requests.

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

Project coverage is 75.02%. Comparing base (7f20ba5) to head (3a90884).
Report is 265 commits behind head on main.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #4199      +/-   ##
==========================================
+ Coverage   71.74%   75.02%   +3.27%
==========================================
  Files         919     1015      +96
  Lines       18457    20656    +2199
  Branches     1037     1165     +128
==========================================
+ Hits        13242    15497    +2255
+ Misses       4756     4649     -107
- Partials      459      510      +51

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


Minor: Move group accumulator for aggregate function to physical-expr-common, and add ahash physical-expr-common

Which issue does this PR close?

Closes #.
Rationale for this change

add ahash for common, used for distinct count accumulator #10484
move other group accumulator module that is used in aggregate function.
adapter is used in physical plan is not used in aggregate function, so no need to move it.

What changes are included in this PR?

Are these changes tested?

Are there any user-facing changes?

Thanks @alamb

🚀


Fanout and Decommit transactions don't include datum hash in outputs

Context & versions
cardano-node: 9.1
hdyra-node: 0.18.1
cardano-cli: 9.2.1
Steps to reproduce

Open a hydra head
Create a script UTxO with a datum hash inside the head (Or commit one from the start)
Close the head (Or create a decommit transaction with a script UTxO in the output)

Actual behavior
The submission of the transaction to the L1 will fail because the datum hash will not be included in the script UTxO
Expected behavior
Transaction should be submitted without issues
Workaround
Use inline datums or modify the transaction cbor to include the datum hash in the output. For the latter, you can get the transaction cbor from the hydra-node logs.

Hey @Micrograx thanks for reporting this!
I've tried to put together some end-to-end tests on hydra to assert this behavior but could not reproduce the issue using all three ways (committing a script to a Head, decommiting a script UTxO and L2 transaction with datum hash in the output).
Could you perhaps provide more info on your workflow, how are you constructing the transactions, which library and versions? Anything that could help us pinpoint where the issue might be?

Hi @v0d1ch, thanks for your patience.
We've continued our testing using inline datums as described in the workaround section. I'll try to reproduce the issue in the 0.19.0 version of the hydra node and share more details next week. In short we've been doing all transaction building with the cardano-cli, and we were using the --tx-out-datum-hash-value argument to add the datum to the script outputs we want to fanout and decommit.

No worries, thanks for the info 🙏
I will also use cardano-cli on my end to try and reproduce the bug.
What version of cardano-cli are you using? Just so we don't misalign on all important aspects to get to the same result.

I was using version 9.2.1  and the cardano-cli babbage transaction build set of endpoints, given that the 0.18 version of the hydra node didn't support conway transactions fully.


Error on constant BC break php < 5.6.0

Parse error: syntax error, unexpected '.', expecting ',' or ';' in endroid/qrcode/src/QrCode.php on line 23
const DEFAULT_FONT_PATH = __DIR__ . '/../font/open_sans.ttf';
I'm in php 5.5.9
Constant expression support was added in PHP 5.6.0.

Hi @benschumi version 2.x is still not stable although I accidentally tagged it so please use a stable version of the 1.x branch. I removed the tags and updated the minimum requirement. Upon release I will decide on the minimum requirements of the 2.x branch.


change async options

All the logic of choosing the best available async mode/transpiler, also converting "transpile" option as a string to traspilation function will go to a separate package ajv-async.
That will remove optional dependencies on nodent and regenerator.

transpile option support requires ajv-async package, without it processCode option can be used to pass transpilation function

In 5.0.1-beta.0
To use: npm install<EMAIL_ADDRESS>


Make publishable on npm

remove dep on jquery

use jquery-extends package for $.extends
use native ES5 array methods instead of $.inArray

If you are going to kill bower.json completely, remove the UMD. Just convert it to CJS.

I'm just noticing, why does this repo have bower_components committed to it?

Should we use knockout-pinpoint for the name? I know we alias it as knockout.pinpoint in our config.

Make sure to update the readme

:shipit: :eggplant:


Dokumen set_title , set_default Indonesia

Hello, please do commit per 1 case so we can verify and merge the changes directly.
Also here's some notes to the contributor before do PR:

Make sure to not submit the pre-installed Aksara to the repository. We're concern to make Aksara works to any operating system and database. Committing the pre-installed Aksara with existing configuration is not recommended;
Make sure the included assets (image, video etc.) for the docummentation should be uploaded through GitHub markdown editor;
Aksara will no recommend to use any .env as pre-configuration file. We own the installer to meet with the user machine and database


Add ability to list clusters across namespaces for validating management cluster name

Issue #, if available:
Description of changes:
Currently we make an assumption in our management cluster name validation for our workload cluster that both clusters exist in the same namespace. However, it is possible that the management cluster and the workload cluster are created in different namespaces. This is also how we get the cluster object through the CLI: https://github.com/aws/eks-anywhere/blob/2347399db3b997eddc9e2e770af1c1ef19bd6ccb/pkg/executables/kubectl.go#L1500
We are keeping the current check of getting the cluster based on the same namespace, but if we don't find it, we will fall back to looking for the cluster using the list api. If we still don't find the cluster or it errors out, we will tell the user that we were unable to find the cluster as we did before. If we find multiple clusters, which should not be possible as the cluster-api cluster resources can't have the same name in the eksa-system namespace, we will throw an error too. Once we get past these validations, we will return the cluster in the different namespace.
Since the list api for controller-runtime needs an index to look off of, we need to add an indexer based on the cluster name to do the lookup, otherwise it would fail with the following error:
List on GroupVersionKind anywhere.eks.amazonaws.com/v1alpha1, Kind=Cluster specifies selector on field metadata.name, but no index with name metadata.name has been registered for GroupVersionKind anywhere.eks.amazonaws.com/v1alpha1, Kind=Cluster

I followed the approach listed in https://book.kubebuilder.io/cronjob-tutorial/controller-implementation.html#setup to set up the indexer. There is also another approach using the cache to set it up listed here https://stackoverflow.com/questions/57083221/list-custom-resources-from-caching-client-with-custom-fieldselector, but I am unsure what the real difference is between both approaches so I went with the former.
Testing (if applicable):
unit testing
functional testing
Documentation added/planned (if applicable):
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

/approve

/cherrypick release-0.16

/cherrypick release-0.17

/lgtm


  Nothing else displays.

What settings do you have in Lock Screen in System Settings ?

None of them were modified, default. However, it may be a moot point for the time being as I am now running macOS Sonoma. On Oct 2, 2023, at 8:36 AM, Guillaume Louel @.***> wrote:
What settings do you have in Lock Screen in System Settings ?
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you authored the thread.Message ID: @.***>

Well, I'm pretty sure the default is to stop the screensaver and put your mac to sleep after one hour. It's up to macOS usually to kill the screensaver (we're just passive into this). However they keep breaking things and we've had to adda workaround for something like this in Sonoma, so it's possible that bug was backported somehow to 13.5.2.
Let me know if you have issues with Sonoma, Aerial force kills itself now under Sonoma to workaround stuff like this.

I'm seeing this same behavior on Sonoma...

@davidpurnell would be great to get more details about your Lock Screen settings perhaps ? Also which version are you running ?
@RGM1956 I just saw you are using 3.2.6, please update to latest version which I belive contains a fix for this.

@davidpurnell would be great to get more details about your Lock Screen settings perhaps ? Also which version are you running ?

I'm running version 3.3.1 on Sonoma 14.0 (23A344)
Here's a screenshot of my Lock Screen settings.

I think this has only been happening for a couple of days now. Unlike OP, I actually don't see any overlays (I have clock and location enabled), I just get black screens (I have 3 monitors).
I haven't yet tried a reboot. Switching to another saver and then back to aerial has no effect.

 Is this all the time or some of the time ?
3.3.1 kills the screensaver to prevent that to happen and it seemed to work fine during the beta, but it seems that for some people their mac don't go to sleep for some reason. Does it just never goes to sleep ? Even after some more time ?
Right now, macOS sends a system wide message saying the mac is going to sleep, so that's when Aerial kills itself (it used to be that macOS would do it prior to Sonoma but they broke that). I'm not sure why it then doesn't go to sleep as it should.
There's a lot of weird bugs that we had to workaround during the beta, I'm not sure exactly what is happening here but I'll try to investigate. In general, comparing with "other" screensavers doesn't mean anything unless you try a 3rd party screen saver, as we are treated differently by Apple and this is the root cause of all issues.
If you have a sec, can you try Electric Sheep for example, see if you have the same issue ?  https://electricsheep.org/#/download
It may help me narrow things down a bit. Thanks!

No problems with sleep. Machine sleeps at the 20 minute mark.  I get black screens when the saver kicks in after 5 minutes of inactivity but also if I manually start the saver (from a hot corner or when clicking "preview" in the Screen Saver settings)
I've also got xscreensaver installed and it exhibits the same behavior as Aerial.

@davidpurnell ok thanks for the clarification, I think this is a separate issue from what op was having.
I'm still not super clear on when exactly you have the black screens though. Do they appear immediately when you start the screen saver ?? So like, Aerial (or xcreensaver) never starts ? Is this what you get ?? If so let's split this conversation in a separate issue.

yes, black screens happen immediately when I start the screensaver.
I'm assuming that the saver is actually running just not displaying anything but perhaps it's not even running and macOS is just blanking the screens and thus this might be a completely separate issue.
Just finishing up a project with lots of open documents and such so I should be able to try a reboot soon.


Set x/y position for SVG draw

Description

The SVG graphic is always positioned at point 0, 0. The transfer of the values is ignored when drawing. The assigned values (e.g. x = 25; y = 125) are not transferred to the SVG object.
In version 3.0.102 the values were taken over correctly and the SVG graphics were positioned.
In this version Integer values could be used directly. The conversion to Single and then to SvgUnit was an attempt to adapt it to the new version. Unfortunately, this failed.
Example data
Dim recoloredSVG As SvgDocument = SvgDocument.Open(DocSVG.BaseUri.LocalPath)
Dim x As Integer = 25
Dim y as Integer = 125
Dim x As Single = Convert.ToSingle(x_icon)
Dim y As Single = Convert.ToSingle(y_icon)

Dim svg_x As SvgUnit = New SvgUnit(SvgUnitType.Pixel, x)
Dim svg_y As SvgUnit = New SvgUnit(SvgUnitType.Pixel, y)

With recoloredSVG
	.Width = w_icon
	.Height = h_icon
	.X = svg_x
	.Y = svg_y
	.Draw(e.Graphics)
End With

Used Versions

Nuget Version 3.3.0
.NET Framework 4.8
OS Win 10 21H1 (Build 19043.1288)

yeah, can confirm the issue. In version 3.2.3 all is working fine, but 3.3.0 is broken

#886 and #887.

@Ischtasu
As mentioned in PR, we merged PR #887 that conforms to SVG specification.
You can do the same by doing the following.
var size = System.Drawing.Size.Round(svgDoc.GetDimensions());
var bitmap = new System.Drawing.Bitmap(size.Width, size.Height);
var renderer = SvgRenderer.FromImage(bitmap);
renderer.TranslateTransform(100f, 100f);
svgDoc.Draw(renderer);

Please dispose instances(Bitmap, SvgRenderer) as appropriate.

So, please confirm: this is not a bug, but a change to conform to the SVG standard (as I now remember), but it changed the behavior, so existing code is affected.
We should at least have made this more clear in the release notes, not sure if we shall change something in te code.
@H1Gdev - what do you think?


Updated texture_button documentation

Old description implied that the normal texture would not be displayed while the button is on focus. That is not the case.

Looks good. Could please squash your commits now? You can refer to this article if you need help. Your original commit message should be fine for the final one.

Sorry for the wait. Can you please rebase this PR against the current master?

Thanks, and congrats on your first merged PR!


hasPattern() constraint failing for null rows

I have an implementation that includes an isComplete() constraint check for all columns and a hasPattern() for string columns.
The pattern check is failing for the null rows, which is technically correct but a bit redundant since it is implicitly performing a second completeness check.
I would like my pattern check to produce results on only non-null rows so I can actually see a result based on string pattern match and not a result based on combined string pattern match and completeness.
I have tried something like:
.hasPattern(col("airline_code").isNotNull(), "[A-Z0-9]{2}", lambda x: x >=0.95)
but it doesn't work.
Is there a way to build a VerificationSuite() that simultaneously checks for completeness on all rows and pattern match just on complete rows?

Could you edit the feature requests according to the template https://github.com/awslabs/python-deequ/issues/new?assignees=&labels=&projects=&template=feature_request.md? If it's a mix, consider split to bug report & feature request.


Capstone project

Link to my recording ---https://www.loom.com/share/ea538914aead42af99c3eb36858ebd2c
Link to the live site -----https://divinity-dev.github.io/Capstone-project/
Added css animations
Added static html file
Added dynamic js file
Added image alternatives for accessibility
Added css reponsiveness

Thank you for the feedback. But for the one you said I should use the h1 tag, I thought we were supposed to use only one h1 tag in the whole website?
Sent from Yahoo Mail on Android
On Thu, Jan 12, 2023 at 12:24 PM, Benjamin @.***> wrote:
@iambenkis requested changes on this pull request.
Required Changes ♻
Hey @Divinity-dev 👋
Highlights 🥇
✔ Following Linters
✔ Following GitHub Flow
✔ Basic Structure is good
✔ Can be maximized upto 200%
Good job on implementing some requirements, but there are some issues that you still need to work on to go to the next project, but you are almost there! 😊
Optional suggestions
Every comment with the [OPTIONAL] prefix is not crucial enough to stop the approval of this PR. However, I strongly recommend you to take them into account as they can make your code better.
Cheers and Happy coding 👏 👏 👏
Feel free to leave any questions or comments in the PR thread if something is not 100% clear.
Please, remember to tag me @iambenkis in your question so I can receive the notification
As described in the Code reviews limits policy you have a limited number of reviews per project (check the exact number in your Dashboard). If you think that the code review was not fair, you can request a second opinion using this form.
In README.md:

+👤 Author1
+
+- GitHub: @.(https://github.com/Divinity-dev/)
+- Twitter: @.(https://twitter.com/twitterhandle)
+- LinkedIn: LinkedIn
+
+👤 Author2
+
+- GitHub: @.(https://github.com/Divinity-dev/)
+- Twitter: @.(https://twitter.com/twitterhandle)
+- LinkedIn: LinkedIn
+## 🔭 Future Features

Good job adding the author section in your README file , I noticed that you repeat two times 😄 your addresses, kindly make sure you remove one, to make your README file more professional 👍

In index.html:

               About

               Program

               Join

               Sponsor

               News

               AgCampaign

Good job adding this layout as required 👏 , but there is one thing that will make perfect your project. I noticed that when you click on one of these nav-link, it should drive the users to the corresponding section. Kindly update add the correct href to improve the user experience 💯

You could do for example:
News
Look at how I use section-id in the example above
In index.html:

Main program

Good job adding this title here 👏 , I can't pass without noticed that 👍 , however as this is the min title of the section you should use a h1. Kindly update that in every section of your pages 👍

In README.md:

+

+## 🚀 Live Demo
+
+> This is the link to my live Demo
+
+- Live Demo Link
+
+(back to top)

Good job creating the video presentation, but your video should be placed in the main documentation of your beautiful project 👍 kindly follow the example below to update your README file. 💯

🚀 Video presentation

This is the link to my live Demo

Video Link

(back to top)
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you were mentioned.Message ID<EMAIL_ADDRESS>

Thank you
Sent from Yahoo Mail on Android
On Thu, Jan 12, 2023 at 4:11 PM, Donat @.***> wrote:
@uwadonat approved this pull request.
Hi @Divinity-dev,
Your project is complete! There is nothing else to say other than... it's time to merge it
Congratulations! 🎉
Highlights

Good commit message ✔
Professional readme file ✔

Status: Approved ✔ ✔ ✔
Optional suggestions
Every comment with the [OPTIONAL] prefix is not crucial enough to stop the approval of this PR. However, I strongly recommend you to take them into account as they can make your code better.
You can also consider:

to add a title on your next pull request message. It looks more professional.

Cheers and Happy coding! 👏 👏 👏
Feel free to leave any questions or comments in the PR thread if something is not 100%.
Please, remember to tag me @uwadonat in your question so I can receive the notification.
As described in the Code reviews limits policy you have a limited number of reviews per project (check the exact number in your Dashboard). If you think that the code review was not fair, you can request a second opinion using this form.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you were mentioned.Message ID: @.***>


docs: address RemovedInSphinx30Warning

During build of docs this is seen:
generating indices...  genindexdone
writing additional pages...  search/Users/ssbarnea/os/molecule/.tox/doc/lib/python3.7/site-packages/sphinx_rtd_theme/search.html:20: RemovedInSphinx30Warning: To modify script_files in the theme is deprecated. Please insert a <script> tag directly in your theme instead.
  {{ super() }}
done

@decentral1se, as our in-house docs expert maybe you can address it? ;)

No warning escapes this project!

Already fixed, awaiting release in https://github.com/readthedocs/sphinx_rtd_theme/issues/739.


faas binary reports incorrect version number

Running faas --version produced v0.0.0-source.
❯ curl -L -s -o - faas.gz https://github.com/boson-project/faas/releases/download/v0.4.0/faas.gz | gunzip >faas && chmod 755 faas
❯ ./faas --version
v0.0.0-source

Interesting.  the logs of that release show it properly passing in the metadata necessary to show correct version:
https://github.com/boson-project/faas/runs/887258241?check_suite_focus=true
additionally, when running the command directly that the release target did:
go build -ldflags "-X main.date=20200728T103438Z -X main.vers=v0.4.0 -X main.hash=0f39bac" ./cmd/faas
it results in a binary which correctly reports the verbose version number.

More interesting still:  It's working for me.
I see the problem.  The version subcommand was updated, but the --version flag was not:
$ wget https://github.com/boson-project/faas/releases/download/v0.4.0/faas.gz
$ gunzip faas.gz && chmod +x faas
$ ./faas --version
v0.0.0-source
$ ./faas version
20200719T162249Z-v0.4.0-0f39bac

As an aside, the prepended dataestamp I think shold change place with the semver tag, don't you think?

Definitely move the datestamp to either the end of the string, or between semver and hash.

This line causes the --version flag to get auto created, and it seems that when verboseVersion() is called, SetMeta() has not yet been called, so the variables that populate the version string have not been set.

Fixed in https://github.com/boson-project/faas/pull/52


Better error handling for opening Linux dumps

Visual Studio supports loading Linux core dumps (with a .dmp extension added) on Windows which leads our .NET developers to speculate that other tools such as PerfView will also work. Looking at PerfView's code I assume it isn't intended to be supported right now, but the error message doesn't help developers understand that.
Repro:

Open PerfView UI
Use the file picker to double-click a Linux core dump that has had the .dmp extension appended to it
In the modal dialog box which pops up click 'Dump GC Heap'

Expected result: Some error message appears in the status bar or elsewhere in the UI indicating that Linux dumps are not supported
Actual result: Status bar displays "HeapDump failed with exit code 1". Log shows:
Creating heap dump E:\devdumps\core_20220202_011152.gcdump from process dump E:\devdumps\core_20220202_011152.dmp.
HeapDump Error (-2147024809): Microsoft.Diagnostics.Runtime.ClrDiagnosticsException: Could not load crash dump, HRESULT: 0x80070057
   at Microsoft.Diagnostics.Runtime.DbgEngDataReader..ctor(String dumpFile)
   at Microsoft.Diagnostics.Runtime.DataTarget.LoadCrashDump(String fileName)
   at GCHeapDumper.InitializeClrRuntime(String processDumpFile, DataTarget& target, ClrRuntime& runtime)
   at GCHeapDumper.DumpHeapFromProcessDump(String processDumpFile)
   at Program.MainWorker(String[] args)

Thanks for pointing this out @noahfalk.  Seems reasonable to have a better error message here - I will see if I can get this done soon.


Configure timeout of the http client

Hello,
Right now, it seems that there is a timeout of 60 seconds for the http client in the provider. (https://github.com/airbytehq/terraform-provider-airbyte/blob/6e55dd87be8c72bb7b6311783f79f3027b9ab20c/internal/sdk/sdk.go#L135)
According to the documentation (https://registry.terraform.io/providers/airbytehq/airbyte/latest/docs) it is not possible to override it.
Would it be possible to make it configurable ? If it is already possible, can you point me to the correct documentation please ?

👋🏻 Hello
I can see that a new release 0.4.2 has been made. Is this release contains the fix to this issue ?

@Jrmyy you should check 0.5.0
I got information from @ThomasRooney that fix is implemented https://github.com/airbytehq/terraform-provider-airbyte/blob/30913cb2a9007c7b03407f0160267908c38888a4/internal/provider/provider.go#L120
I use this version myself and I found in my project's CI pipelines that connections are successfully create, taking more than 60 seconds to create.

Thanks a lot @szemek ,  I will take a look 🥳

Now indeed there is no timeout anymore (since it uses the default http client) which solves my problem. Is there any plan to make the timeout configurable or not ?

Now indeed there is no timeout anymore (since it uses the default http client) which solves my problem. Is there any plan to make the timeout configurable or not @ThomasRooney  ?


Fix color issues with some pngs

Seems to been fixed in upstream so this is an update to sharp v0.33.3
This also fixes issue with downloading prebuilt binary, using package.json binary.host
PS. Will rebase directly on top off retain-profile branch. This PR is just for discussion and traceability.
The problem
Original image

Bad convert

Pushed upstream without package.json fix.
To build we need to run npm install --build-from-source.


Create code snippet for bigtable_read_prefix

Extracted from the task #2254
Need to create following snippet in data_snippets.cc, this snippet demonstrates the use of cbt::RowRange::Prefix() in ReadRows.
bigtable_read_prefix : Read rows with row keys matching a given prefix

@manish-qlogic
data_snippets.cc already has a ReadRows() example showing how to use Prefix
#1926

As per #2254, We need to have 2 snippets namely bigtable_read_prefix_list and bigtable_read_prefix.
bigtable_read_prefix: Read rows with row keys matching a given prefix
bigtable_read_prefix_list: Read rows with row keys matching any prefix in a list
The one in data_snippets.cc is marked as an example for bigtable_read_prefix_list.   it appends only one prefix though.
bigtable_read_prefix is different in a sense that it only pass one prefix not a list of prefix. So we need to create 2 snippets , one with prefix list and another one with single prefix.

There are 3 functions in data_snippets.cc
PopulateTableHierarchy (populate the table)
ReadRowSet (read using a list of keys)
ReadRowSetPrefix (read using any prefix)
Just wanted to make sure that we do not repeat the same thing. I assigned it to myself.


TravisCI Refresh

Creating this PR to contain changes aimed at improving TravisCI consistency.

Seems OK to me :+1:


Aira zero tariff

Describe the bug
I am connected to octopus through the Aira Zero program (similar functionality as Octopus Cosy).
The product "AIRA-ZERO-24-07-01" associated with your Electricity meter has not been found. Click on "Learn More" with instructions on what to do next.
Reproduction steps
It just doesn't connect
Expected behaviour
Show information similar to Octopus Cosy
Tariff Code
Not related
Integration Version
13.0.3
Home Assistant Version
13.2
Fresh Install?
Fresh install
Home Assistant Logs
"agreements": [
{
"start": "2024-04-12T23:00:00+00:00",
"end": "2024-08-21T23:00:00+00:00",
"tariff_code": "E-1R-VAR-22-11-01-E",
"product_code": "VAR-22-11-01"
},
{
"start": "2024-08-21T23:00:00+00:00",
"end": "2024-10-06T23:00:00+00:00",
"tariff_code": "E-1R-AGILE-24-04-03-E",
"product_code": "AGILE-24-04-03"
},
{
"start": "2024-10-06T23:00:00+00:00",
"end": null,
"tariff_code": "E-1R-AIRA-ZERO-24-07-01-E",
"product_code": "AIRA-ZERO-24-07-01"
}
]
Confirmation

[X] I confirm that I cannot find my solution within the documentation
[X] I confirm that I cannot find my solution within the FAQ

Hello and sorry you're seeing this issue. As per the docs, this means OE haven't exposed the necessary data for this tariff. I've raised this in their forum and await a response. Once it's available, the integration should start picking it up automatically

I've reached out in the forum again, but I'm not getting any response.

Hey I've hit the same issue as I've changed my Tarrif to Aira.
AIRA-ZERO-24-07-01/electricity-tariffs/E-1R-AIRA-ZERO-24-07-01-J
I'll add a bump to the forum post when I get my account set up.

It might require an email from someone with that tariff to bring extra light to the situation


HEAD, 1xx, 204, 304 have content-length but do not have body

There are some comments in http_parser.cc, line 1837:
/* Here we call the headers_complete callback. This is somewhat
* different than other callbacks because if the user returns 1, we
* will interpret that as saying that this message has no body. This
* is needed for the annoying case of recieving a response to a HEAD
* request.
*
* We'd like to use CALLBACK_NOTIFY_NOADVANCE() here but we cannot, so
* we have to simulate it by handling a change in errno below.
*/
Excludes the HEAD request, the 1xx, 204, 304 response also have Content-Length but do not have HTTP body.
So maybe the following code should add:
    if (settings->on_headers_complete) {
      switch (settings->on_headers_complete(parser)) {
        case 0:
         if (status_code / 100 == 1 || status_code == 204 || status_code == 304)
            parser->flags |= F_SKIPBODY;
          break;

Now I add the check in on_headers_complete which looks like:
settings_.on_headers_complete = this {
headers_complete_cb_called_ = true;
// if HEAD, 1xx, 204, 304, return 1 which means F_SKIPBODY
if (request_is_head_)
  return 1;

if ((status_code / 100) == 1 || status_code == 204 || status_code == 304) {
  return 1;
}
return 0;

};
But I think the check about the 1xx, 204, 304 should move to http_parser.c.
For HEAD, maybe should add a callback function will be better:
int get_request_flags() {
return HTTP_HEAD | xxx;
}

Hm... I think you are right. What are your thoughts on this @mscdex @tatsuhiro-t ?

I'm doing same thing for those status codes in my projects.
Doing that in http-parser would be nice, and secure. It does not break sane application which already checks those codes itself.
Not sure for other non-standard application, which may break if we do this in the library.
I prefer HEAD handling as is, since adding another callback would break compatibility, unless we leave current interface.

Ok, I'm convinced! :) Let's do this thing.

Did this ever happen?


fix(azure): raw body no longer returns parsed json

🔗 Linked issue

None
❓ Type of change

[ ] 📖 Documentation (updates to the documentation or readme)
[x] 🐞 Bug fix (a non-breaking change that fixes an issue)
[ ] 👌 Enhancement (improving an existing functionality like performance)
[ ] ✨ New feature (a non-breaking change that adds functionality)
[ ] ⚠ Breaking change (fix or feature that would cause existing functionality to change)

📚 Description
Azure functions with httpTrigger automatically JSON-parse the body. This is not explicitly mentioned in the docs (at least I couldn't find it), but in one of the examples they use req.body.name showing that req.body is indeed an object. This then leads to problems when used with h3's useRawBody method, which actually returns the object instead of the stringy body when deployed to azure.
This is fixed by using req.rawBody in the azure handler. It's hard to find documentation on this property, but rawBody is used in an official test file:
https://github.com/Azure/azure-functions-host/blob/71ecbb2c303214f96d7e17310681fd717180bdbb/test/WebJobs.Script.Tests.Integration/TestScripts/Node/HttpTrigger/index.js#L13
Example console.log(req) in the handler:
....
[api] [2022-10-16T13:33:53.998Z]   body: {
[api] [2022-10-16T13:33:53.998Z]     query: 'query MeE2ENotLoggedIn {\n  me {\n    id\n  }\n}',
[api] [2022-10-16T13:33:53.998Z]     operationName: 'MeE2ENotLoggedIn'
[api] [2022-10-16T13:33:53.998Z]   },
[api] [2022-10-16T13:33:53.998Z]   rawBody: '{"query":"query MeE2ENotLoggedIn {\\n  me {\\n    id\\n  }\\n}","operationName":"MeE2ENotLoggedIn"}'
....

📝 Checklist

[ ] I have linked an issue or discussion.
[ ] I have updated the documentation accordingly.

@danielroe Hi!
Should useRawBody always return the body in string?
if yes, the same is happening in cloudflare deploys


Locker door opens the wrong way

Inside an old abandoned medical facility right by the Mars Launchpad, a locker can be seen, the swivel side of the door facing outwards. Opening the door makes it swing into mid air.

Details
From the game Console:
STAT " (000FD73D)
Game Version
<IP_ADDRESS>
Language
English (EN)
New Game
Yes
Reproduction Steps
Go to the Mars Launchpad. On the far ends of each side is abandoned facilities that can be explored. In the one furthest from Cydonia, the incorrect locker door can be found.

The only available entry is from the roof - should make it easier to find.


[network] purge deprecated gossip discovery protocol

The first diff is made in preparation for removing the gossip discovery protocol from network.
Previously, this state sync integration test framework would add the previously generated peer as a seed peer and let gossip discovery do the rest of the work to learn all other peer addresses and then connect them. With the first diff, we "pre-bind" the /memory/<port> addresses and just build the seed peer set from the beginning.
On a slightly tangential note, it seems strange to me that this framework puts all peers (both validators and full nodes) on the same network (when it's not mocking the network interface), which doesn't really reflect reality. Something to change later I suppose.
The second diff purges all gossip discovery protocol code, removes gossip options from the network config, and fixes some random tests in connectivity_manager that used DiscoverySource::Gossip.

I know we used Gossip discovery for testnets or cluster test, but I guess that was through config builder?

Yep, config builder's gone, no more gossip discovery dependents : p

passes cluster test no problem

/land

:lock: Merge Conflict

/land

:broken_heart: Test Failed - Build images and run cluster test

/land


design-needed: Add GUI to review scanpipe results

We should have some UI that's better than the JSON API and better than the Django Admin.
May be something such as the scancode-workbench?

I think using the scancode-workbench layout as a start is a good idea. It has the basics in terms of how we want to view/filter Resource data. I find using the tree view on the side to navigate/filter for the files under a certain directory to be a more intuitive/quicker way to navigate the rows of data.


Code for HTML

I have completed my HTML code. Please check and verify.

Yes it is working!
No need to change the code.

Okay.


piptools installs incompatible versions where pip doesn't

Describe the issue briefly here.
Environment Versions

macOS 10.13.6
Python version: 3.7.0
pip version:  18.0
pip-tools version: $ pip-compile --version

Steps to replicate
Create .in file
$ cat requirements-dev.in
flake8

Run pip tools on it.
$ rwt pip-tools -- -m piptools compile --output-file requirements-dev.txt requirements-dev.in --upgrade
Collecting pip-tools
  Using cached https://files.pythonhosted.org/packages/4c/69/4f33fea6c50ff873b7905abc404d8c26aab2accf8c099d67a35aebc09871/pip_tools-2.0.2-py2.py3-none-any.whl
Collecting six (from pip-tools)
  Using cached https://files.pythonhosted.org/packages/67/4b/141a581104b1f6397bfa78ac9d43d8ad29a7ca43ea90a2d863fe3056e86a/six-1.11.0-py2.py3-none-any.whl
Collecting first (from pip-tools)
  Using cached https://files.pythonhosted.org/packages/71/12/1b24a85f543658804027de982f7e5cb80543ea33ec396c887c099c75274c/first-2.0.1-py2.py3-none-any.whl
Collecting click>=6 (from pip-tools)
  Using cached https://files.pythonhosted.org/packages/34/c1/8806f99713ddb993c5366c362b2f908f18269f8d792aff1abfd700775a77/click-6.7-py2.py3-none-any.whl
Installing collected packages: six, first, click, pip-tools
Successfully installed click-6.7 first-2.0.1 pip-tools-2.0.2 six-1.11.0
#
# This file is autogenerated by pip-compile
# To update, run:
#
#    pip-compile --output-file requirements-dev.txt requirements-dev.in
#
flake8==3.5.0
mccabe==0.6.1             # via flake8
pycodestyle==2.4.0        # via flake8
pyflakes==1.6.0           # via flake8

Note pycodestyle==2.4.0 is incompatible with flake8==3.5.0.
$ rwt -r requirements-dev.txt -- -c "import pkg_resources; pkg_resources.require('flake8')"
Collecting flake8==3.5.0 (from -r requirements-dev.txt (line 7))
  Using cached https://files.pythonhosted.org/packages/b9/dc/14e9d94c770b8c4ef584e906c7583e74864786a58d47de101f2767d50c0b/flake8-3.5.0-py2.py3-none-any.whl
Collecting mccabe==0.6.1 (from -r requirements-dev.txt (line 8))
  Using cached https://files.pythonhosted.org/packages/87/89/479dc97e18549e21354893e4ee4ef36db1d237534982482c3681ee6e7b57/mccabe-0.6.1-py2.py3-none-any.whl
Collecting pycodestyle==2.4.0 (from -r requirements-dev.txt (line 9))
  Using cached https://files.pythonhosted.org/packages/e5/c6/ce130213489969aa58610042dff1d908c25c731c9575af6935c2dfad03aa/pycodestyle-2.4.0-py2.py3-none-any.whl
Collecting pyflakes==1.6.0 (from -r requirements-dev.txt (line 10))
  Using cached https://files.pythonhosted.org/packages/d7/40/733bcc64da3161ae4122c11e88269f276358ca29335468005cb0ee538665/pyflakes-1.6.0-py2.py3-none-any.whl
Installing collected packages: mccabe, pyflakes, pycodestyle, flake8
flake8 3.5.0 has requirement pycodestyle<2.4.0,>=2.0.0, but you'll have pycodestyle 2.4.0 which is incompatible.
Successfully installed flake8-3.5.0 mccabe-0.6.1 pycodestyle-2.4.0 pyflakes-1.6.0
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pkg_resources/__init__.py", line 895, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pkg_resources/__init__.py", line 786, in resolve
    raise VersionConflict(dist, req).with_context(dependent_req)
pkg_resources.ContextualVersionConflict: (pycodestyle 2.4.0 (/private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/rwt-3w9_r0ta), Requirement.parse('pycodestyle<2.4.0,>=2.0.0'), {'flake8'})

Expected result
If you instead pip install flake8, you get pycodestyle 2.3.x.
$ ~/.envs/rwt/bin/rwt flake8
Collecting flake8
  Using cached https://files.pythonhosted.org/packages/b9/dc/14e9d94c770b8c4ef584e906c7583e74864786a58d47de101f2767d50c0b/flake8-3.5.0-py2.py3-none-any.whl
Collecting pyflakes<1.7.0,>=1.5.0 (from flake8)
  Using cached https://files.pythonhosted.org/packages/d7/40/733bcc64da3161ae4122c11e88269f276358ca29335468005cb0ee538665/pyflakes-1.6.0-py2.py3-none-any.whl
Collecting pycodestyle<2.4.0,>=2.0.0 (from flake8)
  Using cached https://files.pythonhosted.org/packages/e4/81/78fe51eb4038d1388b7217dd63770b0f428370207125047312886c923b26/pycodestyle-2.3.1-py2.py3-none-any.whl
Collecting mccabe<0.7.0,>=0.6.0 (from flake8)
  Using cached https://files.pythonhosted.org/packages/87/89/479dc97e18549e21354893e4ee4ef36db1d237534982482c3681ee6e7b57/mccabe-0.6.1-py2.py3-none-any.whl
Installing collected packages: pyflakes, pycodestyle, mccabe, flake8
Successfully installed flake8-3.5.0 mccabe-0.6.1 pycodestyle-2.3.1 pyflakes-1.6.0

pip-compile should produce a comparable result.

Can you run the pip-compile command with -v flag added and post the output here?

draft $ pip-compile --output-file requirements.txt requirements.in -vv
Using indexes:
  https://pypi.python.org/simple

                          ROUND 1
Current constraints:
  flake8

Finding the best candidates:
  found candidate flake8==3.5.0 (constraint was <any>)

Finding secondary dependencies:
  flake8==3.5.0             requires mccabe<0.7.0,>=0.6.0, pycodestyle<2.5.0,>=2.4.0, pyflakes<1.7.0,>=1.5.0

New dependencies found in this round:
  adding ['mccabe', '<0.7.0,>=0.6.0', '[]']
  adding ['pycodestyle', '<2.5.0,>=2.4.0', '[]']
  adding ['pyflakes', '<1.7.0,>=1.5.0', '[]']
Removed dependencies in this round:
Unsafe dependencies in this round:
------------------------------------------------------------
Result of round 1: not stable

                          ROUND 2
Current constraints:
  flake8
  mccabe<0.7.0,>=0.6.0
  pycodestyle<2.5.0,>=2.4.0
  pyflakes<1.7.0,>=1.5.0

Finding the best candidates:
  found candidate flake8==3.5.0 (constraint was <any>)
  found candidate mccabe==0.6.1 (constraint was >=0.6.0,<0.7.0)
  found candidate pycodestyle==2.4.0 (constraint was >=2.4.0,<2.5.0)
  found candidate pyflakes==1.6.0 (constraint was >=1.5.0,<1.7.0)

Finding secondary dependencies:
  pycodestyle==2.4.0        requires -
  flake8==3.5.0             requires mccabe<0.7.0,>=0.6.0, pycodestyle<2.5.0,>=2.4.0, pyflakes<1.7.0,>=1.5.0
  pyflakes==1.6.0           requires -
  mccabe==0.6.1             requires -
------------------------------------------------------------
Result of round 2: stable, done

#
# This file is autogenerated by pip-compile
# To update, run:
#
#    pip-compile --output-file requirements.txt requirements.in
#
flake8==3.5.0
mccabe==0.6.1             # via flake8
pycodestyle==2.4.0        # via flake8
pyflakes==1.6.0           # via flake8

Other members on my team can't replicate this issue. It seems to be unique to my environment.
I suspect there's something cached on my system.

The output shows that your pip-compile has somehow cached the
requirements of flake8 as mccabe<0.7.0,>=0.6.0, pycodestyle<2.5.0,>=2.4.0, pyflakes<1.7.0,>=1.5.0, but looking into
to the released packages in PyPI the pycodestyle requirement is there
<2.4.0.
I think the relevant change to flake8 requirements happened in
https://gitlab.com/pycqa/flake8/commit/0273ca561f0ad03adff41ce5d95a1ec31b10fe5a
So maybe you have tried to add flake8 as Git URL to your
requirements.in and then pip-tools cached the development
requirements? Check the contents of
~/.cache/pip-tools/depcache-py3.7.json to verify this. If this is
the case, then removing that file should resolve your issue.

I didn't have a ~/.cache/pip-tools, but I did find the dir:
>>> import piptools.locations as loc
>>> loc.CACHE_DIR
'/Users/jaraco/Library/Caches/pip-tools'

And indeed that location has the newer deps cached:
$ cat ~/Library/Caches/pip-tools/depcache-py3.7.json | jq '.dependencies.flake8'
{
  "3.5.0": [
    "mccabe<0.7.0,>=0.6.0",
    "pycodestyle<2.5.0,>=2.4.0",
    "pyflakes<1.7.0,>=1.5.0"
  ]
}

Yet still pip-compile is getting the incompatible version:
draft $ rm -rf ~/Library/Caches/pip-compile/*
draft $ python -m venv clean
draft $ clean/bin/pip install pip-tools
Collecting pip-tools
  Using cached https://files.pythonhosted.org/packages/4c/69/4f33fea6c50ff873b7905abc404d8c26aab2accf8c099d67a35aebc09871/pip_tools-2.0.2-py2.py3-none-any.whl
Collecting six (from pip-tools)
  Using cached https://files.pythonhosted.org/packages/67/4b/141a581104b1f6397bfa78ac9d43d8ad29a7ca43ea90a2d863fe3056e86a/six-1.11.0-py2.py3-none-any.whl
Collecting click>=6 (from pip-tools)
  Using cached https://files.pythonhosted.org/packages/34/c1/8806f99713ddb993c5366c362b2f908f18269f8d792aff1abfd700775a77/click-6.7-py2.py3-none-any.whl
Collecting first (from pip-tools)
  Using cached https://files.pythonhosted.org/packages/71/12/1b24a85f543658804027de982f7e5cb80543ea33ec396c887c099c75274c/first-2.0.1-py2.py3-none-any.whl
Installing collected packages: six, click, first, pip-tools
Successfully installed click-6.7 first-2.0.1 pip-tools-2.0.2 six-1.11.0
You are using pip version 10.0.1, however version 18.0 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
draft $ clean/bin/pip-compile --output-file requirements.txt requirements.in -vv
Using indexes:
  https://pypi.python.org/simple

                          ROUND 1
Current constraints:
  flake8

Finding the best candidates:
  found candidate flake8==3.5.0 (constraint was <any>)

Finding secondary dependencies:
  flake8==3.5.0             requires mccabe<0.7.0,>=0.6.0, pycodestyle<2.5.0,>=2.4.0, pyflakes<1.7.0,>=1.5.0

New dependencies found in this round:
  adding ['mccabe', '<0.7.0,>=0.6.0', '[]']
  adding ['pycodestyle', '<2.5.0,>=2.4.0', '[]']
  adding ['pyflakes', '<1.7.0,>=1.5.0', '[]']
Removed dependencies in this round:
Unsafe dependencies in this round:
------------------------------------------------------------
Result of round 1: not stable

                          ROUND 2
Current constraints:
  flake8
  mccabe<0.7.0,>=0.6.0
  pycodestyle<2.5.0,>=2.4.0
  pyflakes<1.7.0,>=1.5.0

Finding the best candidates:
  found candidate flake8==3.5.0 (constraint was <any>)
  found candidate mccabe==0.6.1 (constraint was >=0.6.0,<0.7.0)
  found candidate pycodestyle==2.4.0 (constraint was >=2.4.0,<2.5.0)
  found candidate pyflakes==1.6.0 (constraint was >=1.5.0,<1.7.0)

Finding secondary dependencies:
  flake8==3.5.0             requires mccabe<0.7.0,>=0.6.0, pycodestyle<2.5.0,>=2.4.0, pyflakes<1.7.0,>=1.5.0
  mccabe==0.6.1             requires -
  pyflakes==1.6.0           requires -
  pycodestyle==2.4.0        requires -
------------------------------------------------------------
Result of round 2: stable, done

#
# This file is autogenerated by pip-compile
# To update, run:
#
#    pip-compile --output-file requirements.txt requirements.in
#
flake8==3.5.0
mccabe==0.6.1             # via flake8
pycodestyle==2.4.0        # via flake8
pyflakes==1.6.0           # via flake8

I'll see if I can break into pip-tools to learn more.

@jaraco You seem to cat a different folder than the one you are removing: cat ~/Library/Caches/pip-tools/... vs rm -rf ~/Library/Caches/pip-compile/*

Should there be a command-line option to bypass the cache?

There's the --rebuild option that would address that here.

Would hashes have helped here?

The hashes aren't used as part of the cache key, so it wouldn't have helped in this case. But maybe that's exactly that's something we'd want to change. There's your case here, but also the case where sdist and wheel distributions for a same package end-up giving different dependencies (thank arbitrary code in setup.py), or if someone reuploads/overwritte a package, changing the dependencies. That's worth giving this some thought.

So I've determined what caused the cache to get the wrong value. In my system site-packages, I have an untagged post release of 3.5.0, so when I run pip compile from my main Python environment, I get dependencies resolved as part of that environment (and cached):

You mean that pip-compile will use the package installed in the current environment as part of the "source" it can check? That rings a bell (I feel it was something you reported before @suutari, no?). Can I ask how you installed that untagged post release of 3.5.0 of flake8 exactly (i.e. with pip install -e, or non-editable with a file uri, or something else)?
This is worth some investigation, but I think we should test that again with pip-tools 3.0.0rc1 (or 3.0.0, I should get it officially out soon :tm:), which unvendors pip.

Can I ask how you installed that untagged post release of 3.5.0 of flake8 exactly

I don't recall, but since I don't have a local checkout of flake8, I almost certainly did pip install git+https://github.com/PyCQA/flake8 possibly but unlikely @somerev.

This should be fixed with the new backtracking resolver.


Bench Pretty Printer support for hackmd format

Change the printer of trace_stat to export the text as a format understood by the hackmd.
Closes #1614

Thanks for the review :+1:
I made the correction.
As we discuss offline, I don't think it worth adding a test for the format as we are not sure to keep it that way.

Have you checked that this still works when only one summary is passed to pp?

Have you checked that this still works when only one summary is passed to pp?

Indeed, I haven't checked and it seems that it's not printable. I'm going to push a correction.

Sure! Thanks for the review :+1:


SPIKE Come up with an approach to validate inline blocks

We have a gnarly card to implement validation for inline blocks.
TODO

Document the various ways in which inline blocks are saved.
Review possible a ways to validate form schemas ond other potential form schema improvements that could help with Elemental
Identify potential approaches to implement validation for inline blocks. Ideally those could be implemented in a minor.

Timebox
2 days (with potential for extension if need be)
Parent card
https://github.com/silverstripe/silverstripe-elemental/issues/329
PRs

https://github.com/silverstripe/silverstripe-elemental/pull/1113

tl;dr - there is only one "correct" way which isn't quite happening right now. This is to utilise the existing FormSchema.php + FormBuilder.js functionality to do everything in relation to inline XHR saves and validation.
What's happening right now is we use the existing functionality for rendering the inline form, but not for validating/saving it.
I've got a draft PR that is the net result of my investigation. This was very slow and painful trying to work out what's currently happening at trying to move it toward the state it should have always been in.
The following is a bit of a dump of various things:
GETing elemental data:

Frontend uses FormBuilderLoader.js to request a FormSchema
GET FormSchema request is made to /admin/elemental-area/schema/elementForm/3
There is a controllers ElementalAreaController.php extends CMSMain (which extends LeftAndMain) which has a $url_segment = 'elemental-area'
Routing goes to LeftAndMain::schema() with params $FormName = elementForm and $ItemID = 3
In LeftAndMain::schema() .. $formMethod = "get{$formName}" .. $form = $this->{$formMethod}($ItemID); which translates to ElementalAreaController::getElementForm($elementID): Form;
In ElementalAreaController::getElementForm() .. $form = (EditFormFactory extends DefaultFormFactory)::getForm(). EditFormFactory does the elemental namespacing which prefixing Elements with "PageElements__" because you can edit multiple elements in an ElementalArea at a time.
This works, though it's pretty confusing routing because there's a lot of jumping around the place, and it uses LeftAndMain which has loads of stuff on it. If we do the "centralise FormSchema/API endpoints" then we could come up with something more intuitive to generate the FormSchema.

POSTing elemental data

This is the bit that is currently the furthest away from validation on inline save.
When the inline save button is clicked, and standalone XHR request is made from the inline save button. The POST body is a JSON representation of the form field names as keys and corresponding values, same as what you'd expect for a REST request.
Creating a standalone XHR request is wrong since it's not tied to the form that was created using the FormSchema. There's no way to get validation errors put back on to the form fields without doing jquery hacks.
What should happen instead is that the form is submitted and a FormSchema with the errors node populated is returned. The FormSchema is then used FormBuilder.js to rebuild the form. This should then show inline validation errors, presuming that there is existing logic in FormBuilder.js to actually do this.
When submitting the form it'll send form urlencoded data rather than wrapping it in JSON. This is fine IMO since it's not REST and ther'es no need to json_decode() on the server, you simply read $request->postVars().
I got the server to return the FormSchema with the error node populated, though I wasn't able to get it to replace existing form. Should be able to get this working with some addtional effort. Was getting stuck in FormAlert.js (toast notification?) where the error node object was being passed instead of a string error message.
Note the existing LeftAndMain::jsonError() only supports a single validation error, I had to override it on ElementalAreaController::jsonError() to support multiple validation errors() - https://github.com/silverstripe/silverstripe-elemental/pull/1113/files#diff-942115e4b8f6030e4d72ebc2b3a0772ec65e5dfcd08fbd0e677c70d1231daf28R248
I've updated FormBuildController::apiSaveForm() to return a FormSchema response and to call both Form::validate() and Element::validate() which is used to populate the error node of the FormSchema response - https://github.com/silverstripe/silverstripe-elemental/pull/1113/files#diff-942115e4b8f6030e4d72ebc2b3a0772ec65e5dfcd08fbd0e677c70d1231daf28R122

Frontend validation as you type

There's existing logic in FormBuilder.js so that getCompositeCMSValidator() (e.g. RequiredFields) is used by FormSchema response which is then used by FormBuilder.js.
What should happen is that if you have a RequiredField, when the field is blank and you tab out of it you should immediately get a validation warning saying that the field is required.
This currently isn't wired together for Elemental. This will also prevent the form from being submitted if there are validation errors.
Can fix by adding method EditFormFactory::getFormValidator() - https://github.com/silverstripe/silverstripe-elemental/pull/1113/files#diff-24898a56a4edd96a9c3b2d4e0f3f016803747cf001df1b726259a809454c8d17R60

Frontend validation as you type

I think that's a bit overkill - we don't provide that anywhere else in the CMS. For now lets just focus on getting validation working at all, and then we can look at our validation across the board and decide if and where and how we want to apply validation as you type.

@emteknetnz There's currently two ways to save inline elemental forms - through the save button on the block itself, and by saving the whole page.
It's a bit hard to tell in your comment whether you've accounted for both or just one of these. Can you please clarify that for me?

Only the inline save, I've paid no attention to the page save.  Based on the title of the card and the ACs only inline saving is in scope

There's probably very little to peer review here, which makes sense since it's a SPIKE
The conclusion I came to was basically "There is this existing FormSchema + FormBuilder functionality that we be using, so let's use it"

Only the inline save, I've paid no attention to the page save. I'm kind of making an assumption that later on we'd want to drop the page save method altogether, and only save inline blocks via their own XHR requests that would be triggered when clicking the page save button. I'd like to not have 2 ways to do the same thing, it adds a massive amount of overhead effort to maintain, just ends up wasting time.

Fair enough. I'd say we want the validation experience to be the same regardless of which button people are clicking to save their data, so we should do both at once IMO. Specifically:

I'm kind of making an assumption that later on we'd want to drop the page save method altogether, and only save inline blocks via their own XHR requests that would be triggered when clicking the page save button

That sounds great, and IMO we should do that right away if that more easily lends itself to validating in a consistent way. At the end of the day the content authors don't care whether it's a separate XHR request triggered when clicking the save button, or if the data is all shoved through together with the page data. They just care that when they click the button, they have validation errors if there are validation errors and stuff is saved otherwise.

FormBuilder.js supports this right now and we should be making use of it if possible IMO. It will block submitting the redux-form which is really nice.

I'm not saying "lets never do that" - I just think that there's two concerns here. One is getting validation working at a base level, consistent with the rest of the CMS. We can then look at as-you-type validation as a separate concern IMO and try to get that implemented in a consistent way across the board for a clear and consistent validation experience. It would be a weird CMS Author experience if sometimes stuff gets validated as you type, but sometimes it doesn't. Authors shouldn't have to care that this comes from this module so it does things this way, and that comes from that module so it does things that way.

The conclusion I came to was basically "There is this existing FormSchema + FormBuilder functionality that we should be using because it supports validation, so let's use it"

That sounds sensible to me.
I think we're at the stage where we get into a room, make sure we're all on the same page, and create some clear acceptance criteria.

That sounds great, and IMO we should do that right away if that more easily lends itself to validating in a consistent way.

Yeah if we want a consistent UX experience I think it's borderline a requirement to get rid of the "save element content in the same request as saving the page content" functionality, which is actually pretty similar to what linkfield does now.

just want to throw my 2c in here re the saving mechanic. I'm all for a single way to do things but there's a common pattern I've seen on projects to disable the publish on individual blocks and instead have only a page level publish. This is because content authors usually do not want a partial update to the page (or at least its an easier mental model). If we're saving blocks individually it would be good to make sure it is compatible with preventing a page publish (or save for that matter) when a validation error occurs. On the face of it this appears to require some 'waiting' for  blocks to save before allowing a page save.

This would only be for save, not for publish
In my head, on page save click all the elements would, if in a changed state, fire off their own XHR's to validate/save and the page save button would wait for all of those to resolve first. If there's any validation errors then there this would block the page form from submitting and all of the relevant elements with validation errors would pop open and show the validation errors on the relevant fields.
For the publish there's no need to XHR everything because we just on ElementalPageExtension.$owns = ['ElementalArea'] and ElementalArea.$own = ['Elements'] to cascade publish everything.

In ElementalAreaController::getElementForm() .. $form = (EditFormFactory extends DefaultFormFactory)::getForm(). EditFormFactory does the elemental namespacing which prefixing Elements with "PageElements__" because you can edit multiple elements in an ElementalArea at a time.
This works, though it's pretty confusing routing because there's a lot of jumping around the place, and it uses LeftAndMain which has loads of stuff on it. If we do the "centralise FormSchema/API endpoints" then we could come up with something more intuitive to generate the FormSchema.

That was a massive pain in the but to getting AnyField working with Elemental block. That definitely give some pretty hackish vibe.

When submitting the form it'll send form urlencoded data rather than wrapping it in JSON. This is fine IMO since it's not REST and ther'es no need to json_decode() on the server, you simply read $request->postVars().

That sounds fine to me. I guess there's a wider question about whether we want form schema to support JSON data submission or facilitate it. But that doesn't need to be answered here.

I got the server to return the FormSchema with the error node populated, though I wasn't able to get it to replace existing form. Should be able to get this working with some addtional effort. Was getting stuck in FormAlert.js (toast notification?) where the error node object was being passed instead of a string error message.

Campaign admin seems to have figured out the "Validation" part of form schema. I don't know if it's a proper fix or a hack thought.

Frontend validation as you type

I think that's a bit overkill - we don't provide that anywhere else in the CMS. For now lets just focus on getting validation working at all, and then we can look at our validation across the board and decide if and where and how we want to apply validation as you type.

I wouldn't block the card on it. But I think it's something worth investigating as part of our wider form schema work.
I'm thinking it might actually be easier to validate the elemental block form as you go rather than the parent form + multiple elemental block all at once.
Saving/Publishing individually or via the page
I would be very concerned if we forced content author to save their block individually without giving them the option to save them all at once through the parent page.
Would triggering the individual "block save" when saving the page, before triggering the main page save be an option here?
Disabling individual block publish does sound like something quite sensible however.

We think we've got enough info to proceed. We're currently doing similar work on LinkField. We'll draw some lesson from that and apply them to elemental validation.