[WIP] unable to customize the number column

Problem:	Unable to customize the number column.
Solution:	Add a 'numberfunc' option that specifies a user function that determines what the number column looks like.
Not finished with this yet but it's functional so I thought I would post the patch for feedback.
I'm not sure the way I implemented the option makes sense. I made it window-local because '(relative)number' is but this seems to be the first window-local userfunc callback option. I tried to copy what happens when setting buffer-local user callback options such as 'completefunc' instead.
Fixes https://github.com/vim/vim/issues/1875 and https://github.com/vim/vim/issues/1368.

Found https://github.com/vim/vim/issues/3588 as well. Should be possible with this as well, either by modifying the function signature to include both the relative and absolute line number, or by doing it in the userfunc itself by calling line('.') and adding or subtracting the relative number.

Hm,
this sounds like it may impact rendering performance a bit. Is there any way to measure performance when scrolling a large file?

Hm, this sounds like it may impact rendering performance a bit. Is there any way to measure performance when scrolling a large file?

Yeah it probably will, haven't benchmarked yet and I'm not sure how to either. Quoting justin from https://github.com/neovim/neovim/pull/4941#issuecomment-1268356232:

Function call overhead should not be too bad, especially for a Lua function: we already do much more than that for things like highlights/decorations. So a callback is probably the preferred approach.

I very much doubt this is a good idea.  It is opening a can of worms.
It will be very easy to make a function that messes up the display.
It is certainly going to slow down rerdraws.
What if the function returns something else when it's called for the same line?
Next is to ask for highlighting the text.

I very much doubt this is a good idea. It is opening a can of worms.
It will be very easy to make a function that messes up the display.

Messing up in the sense of a string that is very large that will make the number column very wide yes, other that that I'm not so sure what can go wrong?

It is certainly going to slow down rerdraws.

Sure, but not noticeable to me so for with the use-cases that were mentioned in the issue requests. It's a tradeoff that the user might find worth it.

What if the function returns something else when it's called for the same line?

Not sure what you mean.

Next is to ask for highlighting the text.

Doesn't seem necessary, we already have LineNr, CursorLineNr highlight groups.

The returned string should undergo a check, so that any errors are caught early.
Besides being the wrong size, not fitting in the number column, there are such things as invalid character (e.g. Tab),
ending with half a double-width character and many things we haven't thought of yet.
From 'statusline' we learned that we keep tweaking when it needs to be evaluated, which depends on whatever the function is doing to make the string. What about showing "!!!" when an asynchronous callback has detected an error?
I'm sure plugin writers want to specify a different color for different lines (again, 'statusline' shows this).
This is typically something that starts as a simple function, which will very quickly grow and require a lot of maintenance.
If we would do this, then why not also cover 'foldcolumn' and 'signcolumn', so that there is more space?

The returned string should undergo a check, so that any errors are caught early. Besides being the wrong size, not fitting in the number column, there are such things as invalid character (e.g. Tab), ending with half a double-width character and many things we haven't thought of yet.

The current implementation simply adjusts the number column width rather than constraining the returned string. Would be up to the user how wide they want it. Yeah I can confirm rendering gets broken when the string contains a Tab but at that point the user could simply unset the option until they fix their function? Do we really need to parse the userfunc extremities?

From 'statusline' we learned that we keep tweaking when it needs to be evaluated, which depends on whatever the function is doing to make the string. What about showing "!!!" when an asynchronous callback has detected an error?

Currently I'm simply un-setting the option when an error occurs, falling back to the built-in number column. Same reasoning as above, is that not valid?

I'm sure plugin writers want to specify a different color for different lines (again, 'statusline' shows this).

Yeah, I guess so.

This is typically something that starts as a simple function, which will very quickly grow and require a lot of maintenance.

Yeah I can see that happening if we want to take the responsibility of catching any and all invalid strings. I thought checking that the return type of the callback is per spec would be sufficient.

If we would do this, then why not also cover 'foldcolumn' and 'signcolumn', so that there is more space?

Not sure what you mean by this, again I took the approach of making the number column as wide as the largest string the callback returns.

I did a bit of rudimentary performance testing, and it seems the overhead isn't a big problem; when using Vim9Script it's even better than not using a function at all.
Of course, people can do slow/dumb stuff in 'numberfunc', but that's already the case for many func and expr options and autocmds like CursorMoved.
Some comments:

I'm not sure if the function signature is the best; I'd prefer returning a string which is expected to have a length to 'numberwidth' (can automatically pad/trim if it's shorter/longer).
It's not clear to me how this works exactly when both 'number' and 'relativenumber' is set. Right now it only seems to work for 'relativenumber'
I've seen people ask about alignment and such on a number of occasions; and it seems clear there's a demand for solving the problem. There was a 'numberformat' patch too: https://github.com/vim/vim/pull/2204 as an alternative (but this had some issues, working only for 'relativenumber' being the main one). A 'numerformat' similar to 'statusline' alleviates some of the "dumb stuff" performance concerns, although you can still use %{ .. } expressions in that, and do silly slow things.

Test results:
% for i in {1..4}; time ./vim --clean +"let g:test=$i" +'so ~/num' buffer.c
./vim --clean +"let g:test=$i" +'so ~/num' buffer.c  1.94s user 0.60s system 98% cpu 2.592 total
./vim --clean +"let g:test=$i" +'so ~/num' buffer.c  1.98s user 0.60s system 97% cpu 2.647 total
./vim --clean +"let g:test=$i" +'so ~/num' buffer.c  2.24s user 0.22s system 99% cpu 2.466 total
./vim --clean +"let g:test=$i" +'so ~/num' buffer.c  1.99s user 0.25s system 98% cpu 2.272 total

~/num script, which tests just setting 'relativenumber' (differences are similar when setting both 'number' and 'relativenumber'):
" for i in {1..4}; time ./vim --clean +"let g:test=$i" +'so ~/num' buffer.c

if g:test == 1
    " Run without any numbers
elseif g:test == 2
    set relativenumber
elseif g:test == 3
    " VimScript
    func! s:Nuf(lnum, cursor)
        if (a:cursor)
            return [string(a:lnum), v:false]
        else
            return [string(a:lnum), v:true]
        endif
    endfunc

    set relativenumber
    set numberfunc=<SID>Nuf
elseif g:test == 4
    " Vim9Script
    " Not supported yet: tuple<a: string, b: bool>
    def <SID>Nuf2(lnum: number, cursor: bool): list<any>
        if (cursor)
            return [lnum->string(), v:false]
        else
            return [lnum->string(), v:true]
        endif
    enddef
    defcompile

    set relativenumber
    set numberfunc=<SID>Nuf2
endif

normal! gg
while line('.') != line('$')
    exe "normal! \<C-d>"
    redraw!
endwhile
quit

I did a bit of rudimentary performance testing, and it seems the overhead isn't a big problem; when using Vim9Script it's even better than not using a function at all.

Thanks for that!

I'm not sure if the function signature is the best; I'd prefer returning a string which is expected to have a length to 'numberwidth' (can automatically pad/trim if it's shorter/longer).

That's what I went for first, but I didn't see a clear approach for alignment in the user func. I think the user function needs to know the width to pad to before hand but the width is dependent on the user func itself. Relying on printf() format expression (-)* padding, after the callback can handle this for us but to do this we need to know where the user wants to align the string. Maybe I took the wrong approach though. Alternatively we could parse the string and assign the first character "L/R" for alignment.

It's not clear to me how this works exactly when both 'number' and 'relativenumber' is set. Right now it only seems to work for 'relativenumber'.

Should work for 'norelativenumber' as well, just leave out the if (a:cursorline) clause then, that's only to be able to distinguish the cursorline for 'relativenumber'. I thought user might want to print "=>" instead of "0" for example:
function! F(lnum, cursorline)
	if (a:cursorline)
		return [string("=>"), v:true]
	else
		return [string(a:lnum), v:true]
	end
endfunc

A 'numerformat' similar to 'statusline' alleviates some of the "dumb stuff" performance concerns, although you can still use %{ .. } expressions in that, and do silly slow things.

Yeah I implemented it with a status-line expression first actually. But you quickly end up needing to rely on %{} and passing along the line number to be printed in a (window-local) variable. At that point you might as well call a user function. Relevant discussion here: https://github.com/neovim/neovim/pull/4941#issuecomment-1267671735.

The returned string should undergo a check, so that any errors are
caught early. Besides being the wrong size, not fitting in the
number column, there are such things as invalid character (e.g.
Tab), ending with half a double-width character and many things we
haven't thought of yet.

The current implementation simply adjusts the number column width
rather than constraining the returned string. Would be up to the user
how wide they want it. Yeah I can confirm rendering gets broken when
the string contains a Tab but at that point the user could simply
unset the option until they fix their function? Do we really need to
parse the userfunc extremities?

How this usually goes is that the user includes some cool plugin, and
it turns out there is a context that the plugin author didn't think of,
and eventually the Vim code needs to be fixed.  Been there, done that...

From 'statusline' we learned that we keep tweaking when it needs to
be evaluated, which depends on whatever the function is doing to
make the string. What about showing "!!!" when an asynchronous
callback has detected an error?

Currently I'm simply un-setting the option when an error occurs,
falling back to the built-in number column. Same reasoning as above,
is that not valid?

That makes sense.  But there should be enough information about why the
option was reset.  There are some examples for other options (although
not very good examples).  It does require a proper check that the
result is OK.

I'm sure plugin writers want to specify a different color for
different lines (again, 'statusline' shows this).

Yeah, I guess so.

This is typically something that starts as a simple function, which
will very quickly grow and require a lot of maintenance.

Yeah I can see that happening if we want to take the responsibility of
catching any and all invalid strings. I thought checking that the
return type of the callback is per spec would be sufficient.

If we would do this, then why not also cover 'foldcolumn' and
'signcolumn', so that there is more space?

Not sure what you mean by this, again I took the approach of making
the number column as wide as the largest string the callback returns.

I do not think the number column width should change depending on what
the function returns, since jumping through the file can have weird
effects.  Rather 'numberwidth' should be set once and the function
should use it.
But again, I'm not sure we want to go this way at all.
--
Just think of all the things we haven't thought of yet.
/// Bram Moolenaar -- @.*** -- http://www.Moolenaar.net   \
///                                                                      \
\\        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

I see. Well let me know if you decide in favor of this feature then I'll look into highlighting...
The way I see it, the fact that previous multiple PRs were closed because they were too generic, attests to the fact that a user function is warranted. But I understand your hesitancy to include the feature on grounds of performance/maintenance.

I do not think the number column width should change depending on what the function returns, since jumping through the file can have weird effects. Rather 'numberwidth' should be set once and the function should use it.

I agree that it shouldn't change dynamically BTW. What I meant, and how I implemented it, is making a best guess at the maximum width the function will return by checking the length of the string that the function returns in number_width() and setting the 'numberwidth' cache accordingly.
This should work in most cases. I cannot imagine why a user would want to return a longer string for a specific case that is not covered by the check in number_width(). If they do, I would call that abusing the 'numberfunc' function and indeed it could result in not fitting in the number column. Not a problem in my eyes.

If we do want to add this, I will add that I also prefer a statusline approach more than a user func, for multiple reasons:

It's consistent with how tabline and statusline work. Consistency is very useful when learning a new API.
It's much richer and allows for certain necessary features "for free", like left/right alignment, highlight groups (e.g. inevitably you are going to find people wanting to highlight odd/even numbers differently), and other more complicated stuff.
The common use case (of using builtin atoms of the form %X) should be more efficient than call a function. If the user wants to, you can still call expressions using %{ / %{%. It's functionally a superset of just a function.
It's easier to author simple stuff, but possible to author complicated features using %{my_func()}. If you use a function-based approach, I find that kind of annoying if you just want to change small things. Not everyone wants to use a lightline/airline-esque plugin just to draw numbers. We can include useful atoms like "localized numbers" (meaning "1.234" in Europe and "1,234" in US) for example, and that would already cover a large use case (in addition to builtin ability to do left/right alignment in statusline). You can still call function calls but it doesn't need to be the default way of customization.

Seems like the only reason to go for a function-based approach is wanting to pass arguments in, but statusline already set a precedent of setting a global var temporarily (see g:statusline_winid/ g:actual_curbuf / etc). It's not the absolutely cleanest solution in a vacuum but I do think the consistency is going to win over a new approach, not to mention the other reasons I mentioned.

As for the function safeguarding, I can see part of where Bram is coming from. The moment you accept user functions, you have to now guard against all kinds of crazy stuff. It's not responsible from the software to just say "you can shoot yourself in the foot and result in a weird / inconsistent Vim state" especially when it's not clear what parts of functionalities are shooting yourself in the foot and what parts of them are simply clever applications. Give people a tool and they will eventually use all the functionality exposed.
Here's an example bug that I just filed 1 month ago: #10952. In this case, there are issues with statusline authors (in this case, lightline) calling functionality hi link which triggers a redraw while already in a redraw. Vim already had some safeguards around this infinite recursion problem, but the safeguards led to another issue of an inconsistent state, so more fixes needed to be piled on top of it to protect that. It's not just about a slightly wrong highlighting outcome, but more that functionality like this could end up crashing / locking / resulting in an inconsistent state that is the issue. It's not always possible for plugin authors to know that such functionality are not allowed, unless Vim has an explicit whitelist / blacklist capability (again, more work, and not included in this PR) to block those things off properly, or we just make sure to check for all those potentially problematic aspects.
Using a statusline approach does allow us to start introducing this functionality without the %{ support at first to ease it in, but maybe that's not a great argument because you will quickly see people asking for it that you may as well get it right in the beginning.

I do think it's also worth thinking about how this could expand to foldcolumns and signs per mentioned above. We don't have to support it now, but we should at least have an idea of how that could be incorporated if we want to do it say 1 year later and we don't overly constrain ourselves here. One thing I like about the statusline approach is that when people use tabline, they don't just use it for tabs, but potentially other info as well. Let's say people want to customize how folds are rendered (since the default fold drawing is kind of iffy IMO), would this work for that as well?

Yes I mentioned some of these points over in the neovim issue tracker, thanks for summarizing them here. You might have swayed back over to a status line expression for this feature although I must say I don't really see how you would end up with a "lightline/airline-esque plugin". As you say the feature is meant to just to draw numbers, not much more. But I guess you're right that if about giving people a tool, somebody will at some point. In that sense it would make sense to be conformant with similar options and opt for a statusline expression. Like I said, I implemented it with build_stl_string_hl()(albeit less fleshed out) first so if Bram is still open to the feature I could change this PR to that instead.

@brammool I fleshed out the 'statusline'-expression approach for this feature, I have updated the branch. Now I'm wondering if there is merit in further discussing the feature here or do you consider the consider the concerns you mentioned blocking? If so, I will go ahead and start porting to neovim as it might be included there.

@brammool I fleshed out the 'statusline'-expression approach for this
feature, I have updated the branch. Now I'm wondering if there is
merit in further discussing the feature here or do you consider the
consider the concerns you mentioned blocking? If so, I will go ahead
and start porting to neovim as it might be included there.

I'm afraid I find this too complex and most likely requiring quite a bit
of maintenance in the future, without the expected usage justifying it.
I also think that it still might not cover everything (using the sign
and fold columns was mentioned).
In other words: I think there are more useful things to work on.
--
I'm sure that I asked CBuilder to do a "full" install.  Looks like I got
a "fool" install, instead.		Charles E Campbell, Jr, PhD
/// Bram Moolenaar -- @.*** -- http://www.Moolenaar.net   \
///                                                                      \
\\        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
\\            help me help AIDS victims -- http://ICCF-Holland.org    ///


Cloudflare

Hey so can anyone tell me if I want to use cloudflare what can I do? Cuz cloudflare doesn't support subdomains

@E1NZ1 to add records routed via Cloudflare, use CNAME record type for your subdomain

@PythonicBoat Bro I wanted to use portzilla cuz I am using pterodactyl as the hosting as it's of nodejs.


Broken dependency in v0.34

Describe the bug
I'm running doit on github actions, where I had been installing doit without a fixed version number. Today, my builds started crashing with the following error message:
Successfully installed MarkupSafe-2.0.1 cloudpickle-2.0.0 doit-0.34.0 jinja2-3.0.3 pyinotify-0.9.6 wheel-0.37.0
Traceback (most recent call last):
  File "/opt/hostedtoolcache/Python/3.8.12/x64/bin/doit", line 8, in <module>
    sys.exit(main())
  File "/opt/hostedtoolcache/Python/3.8.12/x64/lib/python3.8/site-packages/doit/__main__.py", line 8, in main
    sys.exit(DoitMain().run(sys.argv[1:]))
  File "/opt/hostedtoolcache/Python/3.8.12/x64/lib/python3.8/site-packages/doit/doit_cmd.py", line 187, in __init__
    config_in.loads(config_filenames)
  File "/opt/hostedtoolcache/Python/3.8.12/x64/lib/python3.8/site-packages/doit/doit_cmd.py", line 64, in loads
    toml_config = self.load_config_toml(config_filename, prefix)
  File "/opt/hostedtoolcache/Python/3.8.12/x64/lib/python3.8/site-packages/doit/doit_cmd.py", line 119, in load_config_toml
    if not self.toml:
  File "/opt/hostedtoolcache/Python/3.8.12/x64/lib/python3.8/site-packages/doit/doit_cmd.py", line 85, in toml
Error:     raise Exception('TOML lib not found, could not parse config file XXX.')
Exception: TOML lib not found, could not parse config file XXX.
Error: Process completed with exit code 1.

Note the version number for doit: 0.34.0. Downgrading to 0.33.1 fixes this. I can't reproduce this locally but it's quite reliable on github actions.

The problem is that your project contains a pyproject.toml so doit will try to parse it but there is no TOML lib installed.
Just install one... right now there is no way to say "do not try to read the pyproject.toml file". Maybe it should just give a warning...
The XXX instead of file name is obviously a mistake.

I see the point. Maybe add a warning for the transition? Anyway, I know what to do then. Thank you.


add nikita-jain-01

resolve #442

Thanks for reviewing @schmelto

@nikita-jain-01 Looks like there is a merge confilct. Could you resolve this? If you need any help let us know :nerd_face:

Just get your changes out and pull the latest code, add your changes and then push it. 😁

Just get your changes out and pull the latest code, add your changes and then push it. 😁

Thanks 😊

@AllanRegush Please check it now


str methods for DB backends similar to Pandas str namespace

Pandas' style df.col.str.upper().str.replace(...).
We could expand that to include df.col.dt.datetimemethod() for datetimes as well.

survey of DB backend string functions and how they correspond with pandas str methods
example code for DB backend functions for simple implementations
implement in blaze

Was trying to create an epic - close this and try again.


Allow only privileged users to use slash commands

Now i need to manage DB schema so that users can get more priviliges to use comedian. (super users, admins, PMs)
After this is done, i will write a function that can validate if a user can access to command or not.


Update package.json

Update package.json dependencies to latest version, as this no longer works with the latest version of node (10.14.1). It now works.

This should also work with Electron 3 now with the latest release of<EMAIL_ADDRESS>:+1:

Thank you for this. It saved my day. Plz merge


Admin Panel : Add plugin error, GPM index : error

I'm using Grav v1.7.0 - Admin v1.10.0
When trying to add a Plugin (by pressing the add button on top right) instead of having the list of available plugin I get this error:

Environment & details:
Crikey! There was an error.html.zip
when trying to list the plugins using php ./bin/gpm index
I get this error:
GPM Releases Configuration: Stable
PLUGINS [ 347 ]
Fatal error: Uncaught TypeError: Argument 1 passed to Grav\Console\Gpm\IndexCommand::sort() must be an instance of Grav\Common\GPM\Remote\Packages, instance of Grav\Common\GPM\Remote\Plugins
 given, called in /var/www/html/system/src/Grav/Console/Gpm/IndexCommand.php on line 125 and defined in /var/www/html/system/src/Grav/Console/Gpm/IndexCommand.php:255
Stack trace:
#0 /var/www/html/system/src/Grav/Console/Gpm/IndexCommand.php(125): Grav\Console\Gpm\IndexCommand->sort(Object(Grav\Common\GPM\Remote\Plugins))
#1 /var/www/html/system/src/Grav/Console/GpmCommand.php(41): Grav\Console\Gpm\IndexCommand->serve()
#2 /var/www/html/vendor/symfony/console/Command/Command.php(255): Grav\Console\GpmCommand->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\
ConsoleOutput))
#3 /var/www/html/vendor/symfony/console/Application.php(1009): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Cons
ole\Output\ConsoleOutput))
 in /var/www/html/system/src/Grav/Console/Gpm/IndexCommand.php on line 255

Log file:
log.txt

Hmm. I can't replicate that. It almost appears like you have things out of date.  Did you install Grav + Admin via GPM update? if you upgraded manually or by Git, have you run bin/grav composer install --no-dev to get the latest libraries.

Hmm. I can't replicate that. It almost appears like you have things out of date.  Did you install Grav + Admin via GPM update? if you upgraded manually or by Git, have you run bin/grav composer install --no-dev to get the latest libraries.

Btw, have you also tried forcing a GPM update with bin/grav index -f ?

Btw, have you also tried forcing a GPM update with bin/grav index -f ?

Btw, have you also tried forcing a GPM update with bin/grav index -f ?

Yes same result

Btw, have you also tried forcing a GPM update with bin/grav index -f ?

Yes same result

Hmm. I can't replicate that. It almost appears like you have things out of date. Did you install Grav + Admin via GPM update? if you upgraded manually or by Git, have you run bin/grav composer install --no-dev to get the latest libraries.

I use the official docker image, then upgraded to 1.7 using the Admin Panel web GUI. I installed Learn2 Git theme and the plugin to manage pages revisions.
Is there a way to activate more logs ?

Hmm. I can't replicate that. It almost appears like you have things out of date. Did you install Grav + Admin via GPM update? if you upgraded manually or by Git, have you run bin/grav composer install --no-dev to get the latest libraries.

I use the official docker image, then upgraded to 1.7 using the Admin Panel web GUI. I installed Learn2 Git theme and the plugin to manage pages revisions.
Is there a way to activate more logs ?

Which version of PHP you're in? As I cannot reproduce this either in 7.3.26, 7.4.14 or 8.0.1. That said I kind of get where the issue comes from, but I wonder how to reproduce it..

Which version of PHP you're in? As I cannot reproduce this either in 7.3.26, 7.4.14 or 8.0.1. That said I kind of get where the issue comes from, but I wonder how to reproduce it..

Nevermind, I found a way to reproduce this issue. :) Fixing it now.

Nevermind, I found a way to reproduce this issue. :) Fixing it now.

@Ribero Fixed CLI first. You can see my fix from above ^.

@Ribero Fixed CLI first. You can see my fix from above ^.

The admin issue seems to come from an installed Presentation plugin, try disabling it first.

The admin issue seems to come from an installed Presentation plugin, try disabling it first.

It looks like path user/plugins/presentation/node_modules/reveal.js/css/theme does not exist in your installation, can you check it out? Maybe try to re-install the plugin after disabling it.

It looks like path user/plugins/presentation/node_modules/reveal.js/css/theme does not exist in your installation, can you check it out? Maybe try to re-install the plugin after disabling it.

Note: CLI issue was fixed, admin issue isn't in Grav or Admin.

Note: CLI issue was fixed, admin issue isn't in Grav or Admin.

It looks like path user/plugins/presentation/node_modules/reveal.js/css/theme does not exist in your installation, can you check it out? Maybe try to re-install the plugin after disabling it.

I uninstalled all plugins, all themes (reverting to Quark) but I still face the same behavior
Cannot add any new plugin using Admin Pannel Gui
Cannot use gpm index -f without a crash

It looks like path user/plugins/presentation/node_modules/reveal.js/css/theme does not exist in your installation, can you check it out? Maybe try to re-install the plugin after disabling it.

I uninstalled all plugins, all themes (reverting to Quark) but I still face the same behavior
Cannot add any new plugin using Admin Pannel Gui
Cannot use gpm index -f without a crash

Ok here is an update:
I manually deleted the folder user/plugins/presentation that was still present even if not listed as an installed plugin
Immediate effect is that the Admin Panel GUI is working again as expected !
but
gpm index -f still crashes.

Ok here is an update:
I manually deleted the folder user/plugins/presentation that was still present even if not listed as an installed plugin
Immediate effect is that the Admin Panel GUI is working again as expected !
but
gpm index -f still crashes.

GPM command has been fixed in a commit above. You can test it if you want by copying
f724367e866ef5b/system/src/Grav/Console/Gpm/IndexCommand.php into system/src/Grav/Console/Gpm/IndexCommand.php.

GPM command has been fixed in a commit above. You can test it if you want by copying
f724367e866ef5b/system/src/Grav/Console/Gpm/IndexCommand.php into system/src/Grav/Console/Gpm/IndexCommand.php.

Tested it works. Thanks !

Tested it works. Thanks !

The Presentation-plugin most definitely ships with the user/plugins/presentation/node_modules/reveal.js/css/theme-folder, and it is non-empty. Unless your system prevented the normal installation of the plugin, the blueprints should have no problem rendering the fields, and should fall back to None being the only option if it fails to list the themes.

The Presentation-plugin most definitely ships with the user/plugins/presentation/node_modules/reveal.js/css/theme-folder, and it is non-empty. Unless your system prevented the normal installation of the plugin, the blueprints should have no problem rendering the fields, and should fall back to None being the only option if it fails to list the themes.


Roll Packages from b7fbe68d4ec2 to 611aea1657fb (4 revisions)

https://github.com/flutter/packages/compare/b7fbe68d4ec2...611aea1657fb
2024-03-21<EMAIL_ADDRESS>Roll Flutter from b96c13d1e9ff to 18340ea16cee (26 revisions) (flutter/packages#6370)
2024-03-21<EMAIL_ADDRESS>Roll Flutter (stable) from ba3931984302 to 68bfaea22488 (2 revisions) (flutter/packages#6368)
2024-03-21<EMAIL_ADDRESS>[flutter_adaptive_scaffold] Remove broken link from README (flutter/packages#6364)
2024-03-21<EMAIL_ADDRESS>[adaptive_scaffold] : 🐛 : #110902 : Assertion added when try with less that 2 destinations. (flutter/packages#6360)
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages-flutter-autoroll
Please CC flutter-ecosystem<EMAIL_ADDRESS>on the revert to ensure that a human
is aware of the problem.
To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose
To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Commit queue failed; closing this roll.


Removed length from the csprng API.

Removed redundant function parameters. Now, randbytes, randint, and discrete_gaussian are less versatile but more robust.

close


Mac OS wallet missing

Hi, could you please add the Mac OS wallet? It seems you forgot to add it... Looking forward to it

@shelby1010 Join the discord ask for the mac wallet, the bot will give you the link. You can close this issue.


Feature Request: Non-casting binops

Presently, all column types that get a .mul(2) command are casted to Float64. This is not completely desirable. It is preferable that a type be retained unless it must be upcast, such as for overflow or int.mul(float). I'm pretty sure this is all supported by libcudf.
rapids@tcomer-NVIDIA:~/node/modules/demo/api-server$ node
Welcome to Node.js v18.2.0.
Type ".help" for more information.
> const {Series, Int32, Int64, Float32, Float64} = require('@rapidsai/cudf')
undefined
> let a = Series.new([0, 1]).cast(new Int32)
undefined
> let b = Series.new([0, 1]).cast(new Int64)
undefined
> a.mul(2).type
Float64 [Float] { precision: 2 }
> b.mul(2).type
Float64 [Float] { precision: 2 }

I can think of a few things:

Add convenience functions for constructing scalars:a.mul(Scalar.int32(2))

Add a signature that accepts a template literal string arg that infers the numeric type via pattern matching:a.mul(`2`).type // Int32
a.mul(`12.32`).type // Float64

#1 just doesn't seem Javascript-y to me at all. As a JS developer I know I'd always assume that the type of the scalar argument is supposed to be cast to the type of the column, what about always constructing a scalar when we call a.mul?
#2 works well for simple arithmetic like this but gets really expensive if we're trying to do a programmatic mul of some kind, though we'd hope that a scatter and a column x column mul would be used instead of an iteration. In fact this way it compels the developer doing more than a few muls to write more efficient code, so I think I could be on board for it.

We always create a Scalar from the input, but the issue is figuring out the Scalar's dtype. If you pass a JS number, we must create a Scalar({type: new Float64}), because JS numbers are always doubles.
If we wanted to create another dtype, we'd have to do some kind of runtime numeric analysis on the double to see if it fits into
a smaller (or different) numeric type.

@thomcom We can't do that because it'd be incorrect. If you do Series.new({data: [1, 2, 3], type: new Int8}).mul(12345.6789), the resulting values neither match the dtype "int", nor fit into a 1-byte signed integer. We have to compare the input LHS and RHS dtypes and find a common dtype between them in order to ensure correctness. Float64 is often the only common dtype in the degenerative case.

Like you said, in the Javascript case, Float64 isn't just the degenerative case, it is every case unless other steps are taken. At this time it seems to me like the default behavior is acceptable, but if the user creates a typed scalar like Series.new({data: [1, 2, 3], type: new Int8}).mul(new Scalar({value: 100, type: new Int8}) then the result should be [100, -55, 45].
Do we already have this functionality, but users need to know to create a Scalar as the argument to mul?

Yes all the binary ops already accept scalars as inputs.

I guess I'll close this? :)


Glitre grid price not correct?

Glitre Energi Nett has reduced the grid price since January 1st to 0.3865 NOK
But my sensor.pris_forbruksledd shows the value 0.464625
Is it the integration or the data from Glitre which is causing this?
Or maybe it is something on my side?
BR Gunnar

Glitre Energi Nett has reduced the grid price since January 1st to 0.3865 NOK But my sensor.pris_forbruksledd shows the value 0.464625 Is it the integration or the data from Glitre which is causing this? Or maybe it is something on my side?
BR Gunnar

The bug was in Glitre's API. After I made them aware of the problem, they found and fixed the bug. The correct prize is now shown in HA.

Glitre Energi Nett has reduced the grid price since January 1st to 0.3865 NOK But my sensor.pris_forbruksledd shows the value 0.464625 Is it the integration or the data from Glitre which is causing this? Or maybe it is something on my side?
BR Gunnar

The bug was in Glitre's API. After I made them aware of the problem, they found and fixed the bug. The correct prize is now shown in HA.

Thank you @hansahell, now it is showing correct for me too.


How to deploy a Vizro app to Heroic?

Question
Could you provide an example on how the main.py or app.py should look like
In a Dash app , you typically have
app= Dash ( name)
server=app.server
if name == "main":
........
How is it supposed to work for Vizro?
Code/Examples
My current code :
app = Dash(name)
server = app.server
if name == "main":
app = Vizro().build(create_dashboard()).run( debug=True).  --> where create_dashboard create the most of the code to create the layout.
doesn't run
I get : dash.exceptions.NoLayoutException: The layout was None at the time that run_server was called.
Other information
No response
vizro version
0.1.5
Python version
3.9.18
OS
MacOS
Code of Conduct

[X] I agree to follow the Code of Conduct.

Hey @pieterseyns ,
thank you for posting this question, much appreciated!
Have you checked our guide on the different run methods and deployments: https://vizro.readthedocs.io/en/stable/pages/user_guides/run/#deployment-of-vizro-app
It seems to me that you may want to do:
app = Vizro().build(dashboard)
server = app.dash.server

where dashboard could be you create_dashboard function.
Let us know if this did not work, and we can try further.

@pieterseyns by Heroic do you mean Heroku? If so then I can confirm this works well because I tried it out just yesterday 🙂
Just to add to what @maxschulz-COL said, the basic things you need on Heroku are:

Procfile with web: gunicorn app:server
requirements.txt with vizro and gunicorn
Put your app in app.py exposing the underlying Flask server by doing app = Vizro().build(dashboard); server = app.dash.server
Custom assets go in assets folder and are picked up automatically
That’s it! Everything works straight away. Just push to Heroku and it will deploy

So the deployment process is really identical to Dash, just the server object in Vizro is nested one level deeper in app.dash.server rather than app.server as it is in Dash. I recommend these articles on deploying Dash which give further guidance and common pitfalls on deploying to Heroku:

https://dash.plotly.com/deployment
https://towardsdatascience.com/deploying-your-dash-app-to-heroku-the-magical-guide-39bd6a0c586c

Thanks it is working now


Feature/env specific spigot

Codecov Report

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

@@           Coverage Diff           @@
##             master    #77   +/-   ##
=======================================
  Coverage          ?   100%
=======================================
  Files             ?     10
  Lines             ?    754
  Branches          ?    134
=======================================
  Hits              ?    754
  Misses            ?      0
  Partials          ?      0

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 9e17f3f...58eaa2a. Read the comment docs.

This PR looks rad.

@millerx thanks.

Codecov Report

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

@@            Coverage Diff             @@
##             master       #77   +/-   ##
==========================================
  Coverage          ?   100.00%
==========================================
  Files             ?        10
  Lines             ?       754
  Branches          ?       134
==========================================
  Hits              ?       754
  Misses            ?         0
  Partials          ?         0

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 9e17f3f...1ef39cb. Read the comment docs.

Codecov Report

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

@@           Coverage Diff           @@
##             master    #77   +/-   ##
=======================================
  Coverage          ?   100%
=======================================
  Files             ?     10
  Lines             ?    754
  Branches          ?    134
=======================================
  Hits              ?    754
  Misses            ?      0
  Partials          ?      0

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 9e17f3f...c305096. Read the comment docs.

Codecov Report

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

@@            Coverage Diff             @@
##             master       #77   +/-   ##
==========================================
  Coverage          ?   100.00%
==========================================
  Files             ?        10
  Lines             ?       754
  Branches          ?       134
==========================================
  Hits              ?       754
  Misses            ?         0
  Partials          ?         0

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 9e17f3f...d0e1248. Read the comment docs.

Codecov Report

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

@@           Coverage Diff           @@
##             master    #77   +/-   ##
=======================================
  Coverage          ?   100%
=======================================
  Files             ?     10
  Lines             ?    754
  Branches          ?    134
=======================================
  Hits              ?    754
  Misses            ?      0
  Partials          ?      0

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 9e17f3f...4b758ea. Read the comment docs.


Allow custom (-options in the) Service object - allocateLoadBalancerNodePorts: false

Description:

Describe the desired behavior, what scenario it enables and how it
would be used.

Allow for custom Service (https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#servicespec-v1-core) objects to be provided in KubernetesServiceSpec (https://gateway.envoyproxy.io/latest/api/config_types.html#kubernetesservicespec) instead of only ServiceType.
The only aspect overridden by Envoy Gateway would need be the selector object in the Service.
Having the Service object exposed to configuration allows for all sorts of custom deployments .
Specifically, I am looking for a way to support allocateLoadBalancerNodePorts: false.
Likely others will also start to look into custom: loadBalancerClass or other options.
[optional Relevant Links:]

Any extra documentation required to understand the issue.

See: https://kubernetes.io/docs/concepts/services-networking/service/#load-balancer-nodeport-allocation

thanks for raising this issue @dihmandrake, seeing 2 ways to solve your specific case of setting allocateLoadBalancerNodePorts: false when managed Envoy Proxy Service is of type LoadBalancer

Can all external load balancer implementations (AWS, GKE etc) work with allocateLoadBalancerNodePorts: false ? If yes, we can just set this by default, and a user can use service type NodePort to enable node ports
start supported BYO Envoy Proxy service and deployment sooner than later https://github.com/envoyproxy/gateway/issues/1379

@dihmandrake whether allocateLoadBalancerNodePorts makes it into https://gateway.envoyproxy.io/v0.5.0/api/config_types.html#kubernetesservicespec, is tied to how many users using this project need to configure this. lets leave this issue open so we can track this.
this is where BYO solves the project maintenance / support problem of providing an alternative to enable all user needs w/o having to maintain the API / logic in the project. I do agree, this approach comes with a lot of gotchas

do EG need check the version of kubernetes cluster?

dont think so, since feature is stable from v1.24 https://kubernetes.io/docs/concepts/services-networking/service/#load-balancer-nodeport-allocation

dont think so, since feature is stable from v1.24 https://kubernetes.io/docs/concepts/services-networking/service/#load-balancer-nodeport-allocation

that sounds good.

Can I help with this please? If I understand correctly, we would like to add one additional field KubernetesServiceSpec. allocateLoadBalancerNodePorts. Is it correct?

@den3tsou Thanks for the help.


Can install, but cannot use neovim

I am able to download bob
I can download the latest version of neovim
I cannot use the latest version of neovim
I am using Ubuntu 22.04
bob ls indicates that the versions are installed

I have added bob to my path

I have also tried:

Each time I use source ~/.bashrc to update my bashrc.

I just saw this as well. I installed bob on a completely fresh install of Ubuntu.

It looks like when there is no existing nvim in the ~/.local/share/bob/nvim-bin/ it will throw this error.
FYI @kurt-rhee I worked around this by manually copying nvim from ~/.local/share/bob/nightly/nvim-linux64/bin to ~/.local/share/bob/nvim-bin/.
After that, all works as expected.

Hello apologies for the faulty release (did not take this edge case in consideration), could you test PR #199 ?
The following steps to follow in order to test:

Uninstall bob from your system
Reinstall the branch with: cargo install --git https://github.com/MordechaiHadad/bob --branch fix/nvim-proxy
Run bob erase
And then bob use nightly
And try to run neovim.

@mikesmithgh @kurt-rhee could you guys verify the PR fixes this?

Hey @MordechaiHadad thanks for the quick response.  I work in Pacific time, so may not be able to give timely responses, but I was able to try the fix/nvim-proxy branch and everything is working on my side.

Hey @MordechaiHadad thanks for the quick response.  I work in Pacific time, so may not be able to give timely responses, but I was able to try the fix/nvim-proxy branch and everything is working on my side.

All good, neovim launches correctly?


Handle chain reorg event in validator

subscribe to chain reorg events from standard event stream
in case we receive reorg event where currentSlot - depth results in epoch less than current epoch, fetch duties again and replace current

resolved via #1596


Receive timeout for subscriptions too short

The robot controller sends out ping messages every 30 seconds, and currently the receive timeout is set to 10 seconds for the WebSocket connections. This makes the implementation think that the connection is lost, since it doesn't wait long enough.

Solved by pull request https://github.com/ros-industrial/abb_librws/pull/44


add stats to pipeline

Example of what to add to config.yaml to use this
generate_skill_data: true
skill_data_mapping:
  attack:
    0:
      n1
    1:
      n2
    2:
      n3_1
    3:
      n3_2
    4:
      n4
    5:
      ca1
    6:
      ca2

The result will look something like:

You will probably need to declare another variable to consolidate all the attacks together, something like
var attack = [][][]float64{
	{
		n1,
	},
	{
		n2,
	},
	{
		n3_1, n3_2,
	},
	{
		n4,
	},
}


Export FacebookAppID from build.gradle

@aleffert  Please review.

@aleffert  Please review.

@aleffert  Please review.

Fix those things and it's good to merge.


35 add support for displaying changes in each revision

Context

Does this issue have a Trello card?

https://trello.com/c/HaoIPISn/35-add-support-for-displaying-changes-in-each-revision
Intent
Installs the Drupal diff module (https://www.drupal.org/project/diff) this supports showing the difference between revisions.
Considerations
As we are not using Drupal to preview content (currently), I have disabled the option to diff on the preview (as it looks a bit broken).  The default diff option is now the "split fields" view.
Checklist

[ ] This PR contains only changes related to the above card
[ ] Tests have been added/updated to cover the change
[ ] Documentation has been updated where appropriate
[ ] Tested in Development

 Add support for displaying changes in each revision


'label' annotation for modules

We need an annotation to specify a readable name for a module, for example:
"Module documentation blah blah ... "
label("Ceylon Collections API")
module ceylon.collection "1.3.3" {
    ...
}

This label would be used by Herd and other tools that work with modules.
Perhaps the annotation should be named labelled.

I have implemented this on the 7193 branch. But it still needs proper support in Herd and the IDEs.

I've merged this work, and added some support in the IDE. But we still need:

to add support to Herd, which is now ceylon/ceylon-herd#292.
to add support to ceylon doc (I will do this next).

Now done, except for the Herd support, for which there is an open issue. Closing.


In-process propagation - Logic for activating/deactivating spans

References:

General discussion: https://github.com/opentracing/specification/issues/23
Java PR: https://github.com/opentracing/opentracing-java/pull/115
.NET DiagnosticSource/Activity

C# has several features that will likely/hopefully make in-process propagation easier than in Java:

async/await does not require the use of promises/futures.
AsyncLocal is a storage that automatically flows with async execution.

The upcoming Activity type from .NET (very similar to an OpenTracing Span) uses a simple static property Activity.Current that uses AsyncLocal (.NET 4.6 / .NET Core) or CallContext (.NET 4.5) and therefore automatically flows with the async execution. Every Activity that is started sets an existing Activity.Current as its parent (unless the user manually set a ParentId).
However, if we compare this with the current Java PR, the following features are not possible with this system right now:

It's not possible to start an activity without making it active
It's not possible to ignore the active parent

What I'd like to discuss in this issue is whether or not these two things are even necessary in C#!
Question 1: What non-performance use cases exist, where you would NOT want to make a span active?
Thanks to async/await simple use cases like instrumenting outgoing async calls just work and wouldn't even need a separate in-process propagation system:
public async Task<Response> Send(Request r)
{
    using (ISpan span = _tracer.BuildSpan("someWork").Start())
    {
        Response r = await _client.SendAsync(r);

        span.SetTag("status", r.Status);
    }
}

However, this would be problematic in case of the integrated HttpClient, because it uses a form of decorator pattern to chain together user logic. If the instrumentation code is not the last in the chain, code from inner decorators is not able to access this span.
Not making the span active is therefore not without issues. Also, given that the instrumented code usually does a network call or similar, the potential overhead of writing the AsyncLocal (I don't have numbers for this yet) might be negligible.
From a performance point of view it might therefore very well be ok to always make a span active.
Question 2: What use-cases are there where you would want to ignore the currently active span?
One scenario I can think of right now is a messaging system where you receive an event which was part of a trace and you want to deliberately start a new trace with the work that follows from that event.
Is this a valid scenario for this use case? Are there other examples?
@bhs @dawallin @yurishkuro Would be great if you could provide some feedback. I quickly went through https://github.com/opentracing/specification/issues/23 but most of it were technical details so I haven't found other examples.
/cc @lmolkova @vancem just fyi!

I'd think AsyncLocal would make this quite easy to propagate the values around. I'm not sure why you would want to ignore the active span, but at the same time if that is a feature in other libraries, we should include it here IMO.

Closed, as Java's implementation has been re-worked and we'll just port their stuff.


fix indentation in React rules

Just to simplify a review for #22
p.s. just in case: https://github.com/LeoGears/codestyle/pull/23/files?w=1


Problem in the documentation of grid function

Describe the bug
The grid function, as documented here, does not have the parameters indicated (e.g. separation)
To Reproduce
Use the separation parameter to the grid function
Expected behavior
It should behave as described
Suggested fix
Introduce the separation parameter, OR, change the documentation
Environment (please complete the following information):

[x] I have reviewed the documentation, discussions and issues and found no relevant solution.
[x] I understand that this is an open-source project, and maintainers may not have the resources to address every issue. I am prepared to contribute by fixing the issue myself or hiring someone to do so, if needed, and accept that the issue may not be resolved otherwise.
[x] I am using the latest version of GDSFactory, with Python 3.10, 3.11, or 3.12.

Nice catch! thank you Manuel!
See fix here
https://github.com/gdsfactory/gdsfactory/pull/3443
I also added better docs for Pack


Usability

This could be a great package, looking forward to the development, particularly would be interested in it, if I can give it data and it can give me some dataframe output. Well done.

AutoTSAD already has a CLI. You can execute AutoTSAD by providing a path to a CSV file, and it will create a scores.csv-file within a results/select-<dataset_id>-<selection_strategy>-folder. See the usage section of the README. Does this solve your problem?
autotsad run --config-path autotsad.yaml data/timeeval/GutenTAG/ecg-diff-count-1.csv

AutoTSAD does not provide a Python-API. I am not planning to add one, either. For reference, you can find the main function in this file: https://github.com/HPI-Information-Systems/AutoTSAD/blob/main/autotsad/system/main.py

Yeah you are right, it probably needs a Python api, okay no worries, good luck anyways.


fixed default history limit count error

The default history limit count will be 0 if cfg not set.
Which will make history lose efficacy.

@buaazp Thanks :+1:


Release has no deprecated or removed APIs

This helm release fails to upgrade with this message:
Error: UPGRADE FAILED: current release manifest contains removed kubernetes api(s) for this kubernetes version and it is therefore unable to build the kubernetes objects for performing the diff. error from kubernetes: unable to recognize "": no matches for kind "Deployment" in version "extensions/v1beta1"

But running a helm mapkubeapis XXX -n kube-system does not find any APIs that are at issue:
2020/05/07 11:30:48 Release 'XXX' will be checked for deprecated or removed Kubernetes APIs and will be updated if necessary to supported API versions.
2020/05/07 11:30:48 Get release 'XXX' latest version.
2020/05/07 11:30:49 Check release 'XXX' for deprecated or removed APIs...
2020/05/07 11:30:49 Finished checking release 'XXX' for deprecated or rempved APIs.
2020/05/07 11:30:49 Release 'XXX' has no deprecated or removed APIs.
2020/05/07 11:30:49 Map of release 'XXX' deprecated or removed APIs to supported versions, completed successfully.

Versions:

Kubernetes 1.16.9
Helm 3.2.0
Helmfile 0.114.0
mapkubeapis 0.0.9

Side note, I also noticed a typo in the output: rempved

@branttaylor Thanks for raising this issue. I think it probably is related to #11 and work I need to do around the search and replace which is on my queue. I hope to get to this shortly.
One thing. What OS are you running Helm on?

We apply our Helm configs to our clusters in a CircleCI pipeline using Helmfile, and the image has an Alpine base. I'm using macOS Mojave to run local Helm commands, including this plugin.

Fixed in PR #14 and available in v0.0.12.

@branttaylor Have a look at API Mapping on how to configure the mapping re line feeds for release manifests rendered with Mac.

Looks great! Thanks @hickeyma!


Profiles on extension

Works Done

Display profiles on extension mode.

Close: #1426

Summary by CodeRabbit

New Features

Introduced new ProfileTab component for displaying user profiles in a collapsible format.
Added ProfileTabs component for managing user profiles in a scrollable tab layout.
New utility function getProfileColor for dynamic color retrieval based on profile settings.
Introduced PROFILE_COLORS constant for structured color management in the UI.
Enhanced functionality of AccountMenu by integrating ProfileMenu.

Improvements

Streamlined import structure for AccountsOrder type across various components for better clarity.
Modified ProfileMenu to allow optional setUpperAnchorEl prop for greater flexibility.
Enhanced error handling by using optional chaining in the AccountMenu component.

Bug Fixes

Adjusted YouHave component's layout spacing for improved visual presentation.

ToDo:

add scroll
revise delete profile stype

ToDo:

add scroll
revise delete profile stype

Done


Ignore and show warning when handling Kubernetes components on Podman

Signed-off-by: Parthvi Vala<EMAIL_ADDRESS>
What type of PR is this:
/kind feature

What does this PR do / why we need it:
Which issue(s) this PR fixes:

Fixes #6299
PR acceptance criteria:

[ ] Unit test

[ ] Integration test

[ ] Documentation

How to test changes / Special notes to the reviewer:

odo init --devfile go --starter go-starter --name my-go-app
Use the following Devfile:

devfile.yaml
commands:
- exec:
    commandLine: go build main.go
    component: runtime
    env:
    - name: GOPATH
      value: ${PROJECT_SOURCE}/.go
    - name: GOCACHE
      value: ${PROJECT_SOURCE}/.cache
    group:
      isDefault: true
      kind: build
    workingDir: ${PROJECT_SOURCE}
  id: build
- exec:
    commandLine: ./main
    component: runtime
    group:
      isDefault: true
      kind: run
    workingDir: ${PROJECT_SOURCE}
  id: run

components:
- container:
    args:
    - tail
    - -f
    - /dev/null
    endpoints:
    - name: http-go
      targetPort: 8080
    image: registry.access.redhat.com/ubi9/go-toolset:latest
    memoryLimit: 1024Mi
    mountSources: true
  name: runtime
# This will create a Deployment in order to run your container image across
# the cluster.
- name: outerloop-deployment
  kubernetes:
    inlined: |
      kind: Deployment
      apiVersion: apps/v1
      metadata:
        name: {{RESOURCE_NAME}}
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: {{RESOURCE_NAME}}
        template:
          metadata:
            labels:
              app: {{RESOURCE_NAME}}
          spec:
            containers:
              - name: {{RESOURCE_NAME}}
                image: registry.access.redhat.com/ubi9/go-toolset:latest
                ports:
                  - name: http
                    containerPort: {{CONTAINER_PORT}}
                    protocol: TCP
                resources:
                  limits:
                    memory: "1024Mi"
                    cpu: "500m"
metadata:
  description: Go is an open source programming language that makes it easy to build
    simple, reliable, and efficient software.
  displayName: Go Runtime
  icon: https://raw.githubusercontent.com/devfile-samples/devfile-stack-icons/main/golang.svg
  language: Go
  name: my-go-app
  projectType: Go
  provider: Red Hat
  tags:
  - Go
  version: 1.0.2
# Deploy "kind" ID's use schema 2.2.0+
schemaVersion: 2.2.0
starterProjects:
- description: A Go project with a simple HTTP server
  git:
    checkoutFrom:
      revision: main
    remotes:
      origin: https://github.com/devfile-samples/devfile-stack-go.git
  name: go-starter
# Add the following variables code anywhere in devfile.yaml
# This MUST be a container registry you are able to access
variables:
  # CONTAINER_IMAGE: quay.io/MYUSERNAME/go-odo-example
  RESOURCE_NAME: my-go-app
  CONTAINER_PORT: "8080"
  DOMAIN_NAME: go.example.com

ODO_EXPERIMENTAL_MODE=true odo dev --platform=podman

/override windows-integration-test/Windows-test


Call IoT Application Enablement service APIs with Postman

Tutorial URL: https://developers.sap.com/tutorials/iotae-api-postman.html
Please describe the parts of tenant-specific application router more briefly or reference to an example app from another tutorial.
Thx Jens

Hi Jens,
A table with the description of the different parts is already documented in the same section Tenant-specific Application Router. Kindly go through and hope that helps.
Regards,
Banurekha Balaji

Hi Jens,
Hope the information was useful. Please let us know if you were able to proceed further.
Regards,
Banurekha Balaji

Thank you for your feedback. We haven't heard from you in a while, so we are closing the issue.
If you still have questions, feel free to reopen the issue.


Allow suppressing/enabling automatic question numbering in feedback questionnaires.

Feedback questionnaires don't display the question titles in the form : "Question 1". Corresponding titles are shown in normal quizzes.
As there are cases where numbered titles are useful the behavior could be controlled with a directive option such as
:numbered: true

I think this is the code that causes this behavior: feedback questionnaires do not get the labels like "Question 1". For normal (non-feedback) questionnaires, the labels are automatically added.
https://github.com/apluslms/a-plus-rst-tools/blob/73df1c4baf204e211fae7747d1f2f123c6f6c704/directives/questionnaire.py#L271-L279


how install？

Does mritopng need a C Library？
Can you provide a Installation tutorials？
this is my error：
RuntimeError: Broken toolchain: cannot link a simple C program

Hi @goodsave, thank you for giving this tool a try. Can you give me more details on the OS and architecture of the processor that you're trying to use?


return after promises are rejected

Exit after rejecting the promise so we don't continue to try and use navigator.accelerometer which is undefined.

This isn't a bad idea; but we need better logic here; there should be conditional logic if/else around so you're not using the plugin if it's undefined.  A little more extensive work would need to be done against this PR to have to included.

I'm not really following. By returning the rejected promise, the plugin will not be used.


On Tue, 3 Mar 2020 at 1:00 am lihui-hub<EMAIL_ADDRESS>wrote:

sometimes happen, how to do with this ?
[overseer master] proxy signal (broken pipe)
[overseer master] proxy signal (broken pipe)
[overseer master] proxy signal (broken pipe)
[overseer master] proxy signal (broken pipe)
[overseer master] proxy signal (broken pipe)
[overseer master] proxy signal (broken pipe)
[overseer master] proxy signal (broken pipe)
[overseer master] proxy signal (broken pipe)
[overseer master] proxy signal (broken pipe)
[overseer master] proxy signal (broken pipe)
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/jpillora/overseer/issues/40?email_source=notifications&email_token=AAE2X47HXFJYC4TVOG3TDXTRFO3ZFA5CNFSM4K7U2WB2YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4IRWOW6A,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAE2X4ZDZEEOBYC2Y775BMDRFO3ZFANCNFSM4K7U2WBQ
.

Reopen with example please


Can't pass props from state to styles when using withStyles

With react-jss it's possible to do:
const styles = props => ({
  appContent: {
    position: 'absolute',
    left: props.sidebarOpen ? 240 : 0,
  }
})

const App = () => {...}

const mapStateToProps = createStructuredSelector({
  sidebarOpen: state => state.sidebar.open,
})

export default connect(mapStateToProps)(injectSheet(styles)(App))

It doesn't look like there's any way to pass the props to the styles using withStyles; all I can pass is the theme using withTheme.  But in some components I may want to have the best of both worlds: props from state and the Material-UI theme.  Why not support both in withStyles?

Sigh, this is a nightmare so far.  When I try to use dynamic styles with injectSheet it's SNAFU, generating class names with spaces in them like App- Unthemed- Dynamic-appFrame-4 App- Unthemed- Static-appFrame-1

Please ask JSS questions via the appropriate channels. Thanks!


few suggestions

This plugin is very convenient.
Can debug function and code formatting function be supported.

Hi, thank you for using this extension.
Some functionalities would be added in the following releases.
I've evaluated your suggestions, and I'm sorry to tell you that Debug is not the goal of this extension.
The extension is aimed to edit and browse files. And it would require a lot of work even if only support one kind of programming languages.
The code formatting function may be added in the following releases.
FYI, the VS Code has announced an extension to support cross-platform development.
Thanks


New issue found

Does this occur consistently?
Repro steps:

Action: writeFile
Error type: Error
Error Message: ETag does not represent the latest state of the file "App.vue". Download the file from Azure to get the latest version.
Version: 0.20.0
OS: darwin
OS Release: 20.1.0
Product: Visual Studio Code
Product Version: 1.52.1
Language: en

Call Stack
AppServiceFileSystem.<anonymous> extension.bundle.js:860:159904
rejected extension.bundle.js:860:158239
processTicksAndRejections task_queues.js:94:5

Please provide repro steps.

Please provide repro steps.

This issue has been closed automatically because it needs more information and has not had recent activity. See also our issue reporting guidelines.
Happy Coding!


(PDB-2579) Check hash duplication with historical catalogs

This commit fixes an issue with historical catalogs where we were not
checking the for hash duplication and our catalog duplication rate
metric was always showing 0.

Refer to this link for build results (access rights to CI server needed):
http://jenkins-enterprise.delivery.puppetlabs.net/job/enterprise_puppetdb_init-multijob_githubpr-stable/182/
Test PASSed.

I'll look at this one

This change looks ok to me, but am a little concerned that if it was to break tomorrow, we would miss it (again). We have historical catalogs tests. It seems like it would be pretty easy to add a before/after check of the changed metrics.

@senior you'd think, but those tests don't spin up a whole PuppetDB just a database, I didn't see any tests for these metrics for non-historical catalogs either, not really sure if we should bulk add tests for all the storage.clj metrics or not.

@ajroetker is going to spin off a ticket for getting the metric initialization stuff in place so that we can start testing this stuff. People are using these metrics now and it's something we don't want to break in the future.


how could i know text is string or integer?

hey, i wonder how can i know that the input text is integer?

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger
Number.isInteger(inputText)

ahhh, thankyou @Vashiru ...


Add --incompatible_remove_legacy_whole_archive=no to bazelrc

Flag was switched from no to yes in Bazel 1.0.

This change is

+@jwnimmer-tri for review.


Replace RabbitMQ with ActiveMQ

In OpenOCR can we replace RabbitMQ with ActiveMQ which has Apache licensing.

@sreejithcts I was originally going to say it sounds like a ton of work, but since the code uses github.com/streadway/amqp to talk to the message queue, it might be just a matter of swapping out the rabbitmq docker image with activemq.


Fix Mondo qc check errors after running EMC pipeline

The Externally Managed Content pipeline was run from the GH Action and failed the Mondo QC check.
FAIL Rule ../sparql/qc/mondo/qc-ordo-subset-exact-mapping.sparql: 6 violation(s)
entity,property,value
http://purl.obolibrary.org/obo/MONDO_0017333,http://purl.obolibrary.org/obo/mondo#ordo_disorder,Orphanet:289494
http://purl.obolibrary.org/obo/MONDO_0020659,http://purl.obolibrary.org/obo/mondo#ordo_disorder,Orphanet:598216
http://purl.obolibrary.org/obo/MONDO_0024252,http://purl.obolibrary.org/obo/mondo#ordo_disorder,Orphanet:488613
http://purl.obolibrary.org/obo/MONDO_0034823,http://purl.obolibrary.org/obo/mondo#ordo_disorder,Orphanet:508501
http://purl.obolibrary.org/obo/MONDO_0035433,http://purl.obolibrary.org/obo/mondo#ordo_disorder,Orphanet:565909
http://purl.obolibrary.org/obo/MONDO_0035454,http://purl.obolibrary.org/obo/mondo#ordo_disorder,Orphanet:567502

Can you try to add
FILTER NOT EXISTS { ?entity owl:deprecated "true"^^xsd:boolean . }

as line 32 of the query src/sparql/qc/mondo/qc-ordo-subset-exact-mapping.sparql and see if that fixes the issue? seems like a bug. Seems like a recently obsoleted term also some a rerun with fresh data in mondo ingest might fix this. But the line is IMO missing anyways.

Sure, I will try that and that makes sense as I can see MONDO_0017333 is obsoleted. Thank you.

Yes, that fixed it as I tested the qc checks locally running sh run.sh make GITHUB_ACTION=true IMP=false PAT=false test -B.  There's a PR now to update the SPARQL query.


perfSONAR opensearch storage issues - default ISM policies added in 5.1.0 (with rollover) were not actively applied to older installs.

Older perfSONAR installations (pre-5.1.0) had issues with OpenSearch ISM policies that lacked configured index rollovers. As a result, documents were not being correctly transitioned or deleted.
This has since been fixed here and was rolled into perfSONAR 5.1.0 release:

https://github.com/perfsonar/archive/issues/38
https://github.com/perfsonar/archive/commit/19fd67dc44176546e0efe22003d81991fc2e762d
https://github.com/perfsonar/archive/commit/3c9251c64dc6bd9f29f941b141066373d006f0de
https://github.com/perfsonar/archive/compare/5.0.9...5.1.0

However, it was NOT retroactively applied during 5.1.0 upgrade, meaning there may be quite a lot of broken perfSONAR installs with the older/broken ISM policies applied (one of our servers ran out of storage due to large indexes, see below).
This can easily be fixed by running:
/usr/lib/perfsonar/archive/bin/commands/ism_reset

It may be worth adding a check for this particular corner case with psarchive repair as some users may have applied different ISM policies based on their respective environmental facts, and the repair script only checks if the policy exists or not:
https://github.com/perfsonar/archive/blob/master/perfsonar-archive/perfsonar-archive/opensearch-scripts/pselastic_secure_pos.sh#L69-L95
Evidence in my scenario from one of our perfSONAR servers (diffs before/after reset_ism):
[root@ps5host ~]# opensearch_creds=$(sed -e 's; ;:;' /etc/perfsonar/opensearch/opensearch_login)
[root@ps5host ~]# curl -X GET -u $opensearch_creds -k "https://localhost:9200/_plugins/_ism/policies/pscheduler_default_policy" -H "Content-Type: application/json" | jq . | tee before_reset.json
[root@ps5host ~]# /usr/lib/perfsonar/archive/bin/commands/ism_reset
<snip to reduce spam>
[root@ps5host ~]# curl -X GET -u $opensearch_creds -k "https://localhost:9200/_plugins/_ism/policies/pscheduler_default_policy" -H "Content-Type: application/json" | jq . | tee after_reset.json
[root@ps5host ~]# diff -u before_reset.json after_reset.json
--- before_reset.json   2024-12-13 06:12:09.726492050 +0000
+++ after_reset.json    2024-12-13 06:12:50.249638838 +0000
@@ -1,13 +1,13 @@
 {
   "_id": "pscheduler_default_policy",
-  "_version": 1,
-  "_seq_no": 0,
-  "_primary_term": 1,
+  "_version": 3,
+  "_seq_no": 5039560,
+  "_primary_term": 50,
   "policy": {
     "policy_id": "pscheduler_default_policy",
     "description": "hot warm delete",
-    "last_updated_time":<PHONE_NUMBER>479,
-    "schema_version": 17,
+    "last_updated_time":<PHONE_NUMBER>466,
+    "schema_version": 21,
     "error_notification": null,
     "default_state": "hot",
     "states": [
@@ -23,13 +23,24 @@
             "index_priority": {
               "priority": 100
             }
+          },
+          {
+            "retry": {
+              "count": 3,
+              "backoff": "exponential",
+              "delay": "1m"
+            },
+            "rollover": {
+              "min_index_age": "7d",
+              "copy_alias": false
+            }
           }
         ],
         "transitions": [
           {
             "state_name": "warm",
             "conditions": {
-              "min_index_age": "7d"
+              "min_index_age": "8d"
             }
           }
         ]
@@ -78,7 +89,7 @@
           "pscheduler*"
         ],
         "priority": 100,
-        "last_updated_time":<PHONE_NUMBER>479
+        "last_updated_time":<PHONE_NUMBER>466
       }
     ]
   }
[root@ps5host ~]# rpm -qi perfsonar-archive
Name        : perfsonar-archive
Version     : 5.1.4
Release     : 1.el9
Architecture: noarch
Install Date: Sat 19 Oct 2024 21:52:47
Group       : Development/Libraries
Size        : 72806
License     : ASL 2.0
Signature   : RSA/SHA256, Thu 17 Oct 2024 13:29:03, Key ID 417efcc3f7cf7e97
Source RPM  : perfsonar-archive-5.1.4-1.el9.src.rpm
Build Date  : Tue 15 Oct 2024 16:17:13
Build Host  : 2aa62193b20b
URL         : http://www.perfsonar.net
Summary     : perfSONAR Measurement Archive
Description :
A package that installs the perfSONAR Archive based on Logstash and Opensearch.

If anything, It'd be nice if you were to lower the priority here (to a value like 10):
https://github.com/perfsonar/archive/blob/master/perfsonar-archive/perfsonar-archive/config/ilm/install/pscheduler_default_policy.json#L85
So we can add our own ISM policies which override default, allowing us to target specific indexes (eg pscheduler_latencybg-*).


 One move of a token also shows over a thousand warnings for:
visibility_range.js:103 Test point has los mapping already.

Without any other modules, it is still choppy but somewhat manageable. If you enable a couple other modules the choppiness gets much worse.

I fixed the warnings and cached the LOS value in v 0.3.0. Hopefully less choppy now, but feel free to open a new issue with more details if this persists.


Annotation with dataId and groupId should expose metadata

The annotations contains NacosConfigurationProperties，NacosConfigListener，NacosPropertySource.

You also could refer LoggingNacosConfigMetadataEventListener


Allow people to request from pending payments

Closes #5 and closes #6
This PR now adds a request button for pending payments when the player is the one that is supposed to receive a payment. The recipient can also dismiss the payment.
This PR also adds a link to the game on the main page.

Hello @brianhang! Thanks for opening this PR. We checked the lines you've touched for PEP 8 issues, and found:

In the file src/game/route.py:

Line 57:80: E501 line too long (97 > 79 characters)
Line 171:80: E501 line too long (86 > 79 characters)

In the file src/payment/repository.py:

Line 35:80: E501 line too long (139 > 79 characters)
Line 50:80: E501 line too long (93 > 79 characters)

In the file src/payment/route.py:

Line 12:80: E501 line too long (83 > 79 characters)


Fix to stop Fluentd worker process by Ctrl-C when --no-supervisor specified

Currently, if a user launches Fluentd on console with --no-supervisor option, that process cannot be shutdown by Ctrl-C.
This change fixes it.

@repeatedly Please check and merge this.

Good catch!

Latest ffi.gem is in trouble - CI on Windows is failing. Hmm.

ffi 1.9.13 has been released: https://rubygems.org/gems/ffi/versions/1.9.13
We should re-run CI with this version of ffi gem.

I rebuilt that test, and now it's green.


possible off-by-one error in chain watcher DLP detection

Background
I am running an LND node which I periodically backup by copying the data directory. I am aware that running a node with such backup may cause problems and indeed in cases the backup was executed in the middle of a payment I am experiencing data loss on channel re-establishment.
From my experience these "data loss" detections ended up in force close by remote peer and my node was able to sweep the funds to its wallet.
Last time I had a different behavior when the channel was forced closed by remote node and my local node wasn't able to sweep the funds.
The line in the log that indicates the dataloss is this:
2019-03-05 12:47:03.936 [ERR] LNWL: ChannelPoint(23c663b0503bef526b4fe5e8725bfd60cb423335155bc0b8330db046abe4ddb4:1), sync failed with local data loss: remote believes our tail height is 112, while we have 111!
I also see that the spent was detected by these lines:
2019-03-13 00:17:31.918 [DBG] BTCN: UTXO 23c663b0503bef526b4fe5e8725bfd60cb423335155bc0b8330db046abe4ddb4:1 spent by txn 6bd85de02091aafe54a905be8965b25f02b2f6757fe5ebfe9219afdb23496e14
2019-03-13 00:17:31.918 [DBG] BTCN: Fetching filter for height=565766, hash=000000000000000000235ecc744a68e15d20ce4121a76305c3d8fa88620bf426
2019-03-13 00:17:31.919 [DBG] BTCN: Sending getcfilters to <IP_ADDRESS>:8333 (outbound)
2019-03-13 00:17:31.930 [INF] NTFN: Dispatching spend notification for outpoint=23c663b0503bef526b4fe5e8725bfd60cb423335155bc0b8330db046abe4ddb4:1 at height=566801
2019-03-13 00:17:31.930 [INF] CNCT: Close observer for ChannelPoint(23c663b0503bef526b4fe5e8725bfd60cb423335155bc0b8330db046abe4ddb4:1) active
2019-03-13 00:17:31.930 [INF] CNCT: ChannelArbitrator(c210c29c1feb5fa9d22a9df33d085900de714888aa3b597878471e3986a93627:1): starting state=StateDefault
2019-03-13 00:17:31.930 [INF] CNCT: ChannelArbitrator(23c663b0503bef526b4fe5e8725bfd60cb423335155bc0b8330db046abe4ddb4:1): starting state=StateDefault
2019-03-13 00:17:31.930 [WRN] CNCT: Unprompted commitment broadcast for ChannelPoint(23c663b0503bef526b4fe5e8725bfd60cb423335155bc0b8330db046abe4ddb4:1)
Made some research and saw that, even though the spend is detected, there is no handling in the code for my case.
More specific in the closeObserver the program reaches this line: https://github.com/lightningnetwork/lnd/blob/master/contractcourt/chain_watcher.go#L369
The relevant local variables in my case are set to the following:
broadcastStateNum = 112
remoteStateNum = 111
remoteChainTip = nil
As you can see there is no "case" that matches this state therefore the switch block ends up with doing nothing and doesn't dispatch any close transaction.
I wonder if in my case the code should run this block: https://github.com/lightningnetwork/lnd/blob/master/contractcourt/chain_watcher.go#L409
Hope the info above will help to improve this case.
Your environment

LND 0.5.2

Expected behavior
I would expect that in the case of data loss an attempt to sweep the funds will be done.
I am opening this issue  because I see that for some cases this attempt is done and since this specific case is somehow skipped maybe observing it will help improve this flow.
Actual behavior
Channel stays pending forever, funds are not swept.

It depends on the peer, if they aren't on the latest lnd version (0.5.2) or some other implementation, then they may not properly carry out the protocol. The latest version of lnd will, and do so reliably, meaning it will always send the data if it has it.
As a side note I wouldn't recommend running neutrino on mainnet at all until we ensure that it passes the existing set of integration tests, as it's possible there may be some neutrino specific interaction here.

As for the case statement you pointed out, I think that's the true source of the possible bug here: the remote party didn't have any pending commitments, and they broadcasted a state one beyond our own, therefore we should enter DLP.

It looks like this wasn't caught by our existing integration tests since we always "time travel" by two states in order to simulate a complete state update.


Test results do not work with TCN Forecasting

when attempting to test a forecast with a TCN forecast model - get a Service Error: Service Temporarily Unavailable. Please try again later.
Other forecasting model types seem to work.

Hi @quantqtech.
TCN forecast is currently/still not supported for the PRIVATE PREVIEW.
It'll be supported in the PUBLIC PREVIEW.
Thanks for your feedback! :)


First authentication isn't taken into account, need to kill, restart, and authorize again

Describe the bug
In fresh install setup, skipping the onboarding, then authorizing the app won't raise any error but the user profile picture & user tasks won't show up.
After a kill & restart and authorizing again, it works.
To Reproduce
Steps to reproduce the behavior:

fresh install
skip onboarding (mandatory? does it reproduces with authorize from onboarding?)
create task list & task (linked to the scenario issue?)
authorize & consent scopes
here, user won't be signed-in

Expected behavior
Once consent is provided, the user profile picture should show up and the remote tasks (if any) displayed.

[!TIP]
It appears to be an Android only issue

Reproduced on desktop.
Seems to work fine from onboarding (at least, tested on desktop version)

Might be a timing issue, sometimes it works.
Maybe the moment between the credentials storage and the user fetch doesn't allow ktor to properly setup authentication?


Bump REST API versions for 4.3.0

Fixing : https://github.com/wso2/api-manager/issues/2408
Main issue : https://github.com/wso2/api-manager/issues/2412
publisher : v4--> v5 (major version: v5 , latest version : v5)
admin : v4 --> v5 (major version: v5 , latest version : v5)
devportal : v3 --> v4 (major version: v4 , latest version : v4)
gateway : v2.2 --> v2.3 (major version: v2 , latest version : v2.3)
serviceCatelog : v1.1 --> v1.2 (major version: v1 , latest version : v1.2)
devops : v0 --> v0.1 (major version: v0 , latest version : v0.1)

Closing the PR since it was decided to bump to minor versions to support live migrations.


First class relationships

This partially supports #556 .
This builds on https://github.com/anchore/syft/pull/606 to illustrate how Relationship and ID get promoted into a new artifacts package and how that fits into the single-sbom-document POC:
https://github.com/anchore/syft/blob/c3a65f5fa2a0a511d4183133ce3d8c457e5a5a50/syft/artifact/relationship.go#L8-L19
https://github.com/anchore/syft/blob/c3a65f5fa2a0a511d4183133ce3d8c457e5a5a50/syft/sbom/sbom.go#L11-L15
I think there is some awkwardness with the proposed package organization between this branch and the single-sbom-document branch that should get smoothed out (sbom and artifact packages and how they relate).

I'm going to rebase since #606 was merged and has made this look a little crazy.

Since the package fingerprinting and SBOM data structure PRs have landed I think I'm ready to start tackling replacing ID assignment with the fingerprinting method. This implies considering possible removal of the pkg.Catalog --I'll see what shakes out.

One complexity that has been introduced that I want to note before I get too far: since the package ID is a function of the bytes on the pkg.Package struct [...], upon translating from one format to another we need to keep track of the string IDs from a static document and look up the object that they represent.

Question: Are we treating the static package ID values on any formats (that Syft can decode) as "okay to discard" during decoding? Specifically, I'm asking about more than using the IDs for things like discovering relationships, I'm asking about preserving the literal ID values themselves.
This is a really interesting perspective, and it's making me question an early opinion I had of not retaining static ID values on native Syft packages (in the business layer). As we think about using Syft as a library, I'm wondering if consumers of the library might have a reasonable expectation that they can find the original ID values (say, from there SPDX document that they Syft-decoded), within the business objects that Syft exposes in the library, for some task they're trying to accomplish. (Just wondering... I don't have an exact scenario in mind. Maybe some sort of policy logic.)

I'm wondering if consumers of the library might have a reasonable expectation that they can find the original ID values (say, from there SPDX document that they Syft-decoded)

With the last few commits in to prove out the PoC, I've been wondering the same thing.
As a <side note>... as of right now (at the time of this writing) there is no ID problem across multiple formats from a user perspective. That is, ID is not a field that is exposed in the existing CycloneDX and SPDX implementations (SPDX uses name/type which should change since this can create problems and we do not use the bom-ref field in the definition of a component, but this will change as we need component refs in the near future).
</side note>
We've changed ID to be behavior of a package and not a static (random) data value on a package. One nicety of a stabilizing ID based on contents is that the ID matches between multiple runs of analyzing the same source. The downside is that if the package data is lossy from converting from format-to-format then the ID will be different between documents.
I think we may have reached two mutually exclusive use cases here: one use case wanting ID stability based on "the definition of a package" and another use case wanting ID stability across different descriptions of the same basic package.
We cannot use the same field to handle both use cases. Either we will need to declare that one of these use cases is unsupported or we will need to split up responsibilities between two different fields. (anyone see a third option?)

That <side note> is a very good one to realize. 😄

I think we may have reached two mutually exclusive use cases here: one use case wanting ID stability based on "the definition of a package" and another use case wanting ID stability across different descriptions of the same basic package.
We cannot use the same field to handle both use cases. Either we will need to declare that one of these use cases is unsupported or we will need to split up responsibilities between two different fields. (anyone see a third option?)

Well said. My two cents: in general, I still favor the ID() approach where it's a stable identifier yielded from a deterministic function that considers the package's (or other artifact's) distinct identity. Maybe we start with this, and when (if?) the need arises for capturing other identifiers, we solve that in a designated part of the data structure (e.g. originalID or something). WDYT?

I landed on the same side of the fence as you @luhring  --I think this is good enough for now, the new behavior is better than before, and when we have a specific use case that is raising a problem we can solve it then.

Maybe we start with this, and when (if?) the need arises for capturing other identifiers, we solve that in a designated part of the data structure (e.g. originalID or something). WDYT?

I don't think bifurcating to other designated spots for an originalID is what we want here. I think in future PR it will be important to identify the base structs/fields that each format share.

one use case wanting ID stability based on "the definition of a package" and another use case wanting ID stability across different descriptions of the same basic package.

If the definition of a package (before enoding to a format) is the same at the bottom of syft, then I believe there is a scenario where we fulfill both cases here so long as the generated ID happens BEFORE any format/presentation specific structs have a possibility of being hashed.

re: https://github.com/anchore/syft/pull/607#issuecomment-965328777 , I agree, the suggestion of keeping originalID probably isn't ideal --but we haven't made any decisions about that. What we're settling on is that we can keep the ID system as it is today (based on the object hash) and solve this later if we see a specific problem with that approach in the future.

If the definition of a package (before enoding to a format) is the same at the bottom of syft, then I believe there is a scenario where we fulfill both cases here so long as the generated ID happens BEFORE any format/presentation specific structs have a possibility of being hashed.

I'd have to think on this; it appears that what you're saying is true within the scope of generating a single document, but not necessarily true when converting from one format to another (something that isn't supported by syft yet anyway, so isn't a concern today, but could be in the future).

From an offline conversation: it looks like ID() on source.Location could be problematic when working with fields that either have a ref or do not. This PR opted out of this problem by ignoring the ref field (and VirutalPath), however, this won't help in situations where we index by source.Location but only have the ReadPath and FilesystemID (when we port over the SPDX package-to-file relationship). I'll keep looking into this.

To account for the problem mentioned in https://github.com/anchore/syft/pull/607#issuecomment-965704866 I've split out source.Location into a new source.Coordinates which holds the minimal information needed for determining "where" a file is at relative to a source. (I'll update the PR description)


[Bug] JSON network requests cannot be created in common layer running on UWP due to namespace difference

Describe the bug
The JSON network requests that were added to the project don't completely work in a UWP project when they are constructed from a .NET Standard 2.0 library as the constructor used does not exist for UWP.
To reproduce in an app
Steps to reproduce the behavior:

Add the MADE.App.Networking library to a UWP project and referenced .NET Standard 2.0 library.
Create a class in the .NET Standard 2.0 library that initializes a GET JSON network request.
Call the code from the class from a class in the UWP project
Run the app
When the code is executed, an exception is thrown because a constructor for the .NET Standard parameters does not exist for the UWP variant.

Expected behavior
The JSON network request should be constructed successfully and executed as expected.
** App (please complete the following information):**

Platform: Windows
Device: Surface Pro 4
Platform version: Windows 10 April 2018 Update
MADE version: 0.1.18171.1

Thanks for fixing this @jamesmcroft

No worries @tom-made. Needed these fixes for a project I'm working on using MADE.


\Web3\Utils::toBn(48)  Print 0x00 ??

`
\Web3\Utils::toBn(48) // print 0x00
//print
phpseclib\Math\BigInteger {#550
+value: "0x00"
+"engine": "bcmath (OpenSSL)"
}
`

`
vendor/sc0vu/web3.php/src/Formatters/IntegerFormatter.php
$bn = Utils::toBn($value);
$bnHex = $bn->toHex(true);  // Set this to false ??
`
@sc0Vu

Hi @refear99
Just check  on my laptop, I found that the hex value was right, but the value was wrong:

Weird, find any clue about this......

@sc0Vu
But toHex(true) return '00'
only int(48) have this problem

In ascii, 48 == 0
I think $bn->toHex(true) can not handle it.

Thank you @refear99 ,
Sure I'll merge when you sent another pr, but I'll leave issue here, maybe it's good to implement our own big number class.


Am I allowed to simply add a user segment?

Hi!
I would like to add a segment to the User Segments page but I am not sure on how to do that.
Should I simply edit the page here on GitHub or should I fork the repo or something?
iTunes "Now Playing" Segment

Only supported on OS X / macOS
Create a .nowplaying file in your $HOME folder and make it executable with chmod +x
Add the following code to this file
#! /bin/bash
osascript -e 'tell application "iTunes" to if player state is playing then artist of current track & " - " & name of current track'

In your .zshrc add the following code
POWERLEVEL9K_CUSTOM_NOW_PLAYING='~/.nowplaying'
POWERLEVEL9K_CUSTOM_NOW_PLAYING_BACKGROUND='blue'
POWERLEVEL9K_CUSTOM_NOW_PLAYING_FOREGROUND='black'

Now you can add this segment as custom_now_playing to your prompt

Hey @sambadevi! Yes, please do! You should be able to edit the wiki and simply add your segment to the page!
That segment is great, by the way! Nice work, and thanks so much for being willing to share it! I'll leave this issue open for now, and let me know if you have any issues.

I added the new version of the segment (now with Linux support) to the page, I think I have explained everything, if not just tell me if there is something missing.
--> User Segments
If everything is alright the issue can be closed

@sambadevi - looks great! Thanks so much for your contribution! =)

I started using this segment, and I noticed that it will open iTunes in the background when you aren't playing a song. I found a way to fix the issue by changing the ~/.nowplaying file to
#! /bin/bash
osascript ~/bin/currenttrack.scpt

In ~/bin/currenttrack.scpt I have
if application "iTunes" is running then
	tell application "iTunes"
		if player state is playing then
			return name of current track
		end if
	end tell
end if

You could just keep the applescript directly inside the ~/.nowplaying file but I wanted to have a separate file just to keep things more readable.

@beninato8 thank you, I didn’t notice that behaviour on OS X because I have iTunes running all the time, I will add the check whether iTunes is running to the segment, soon


Mat/Pat - Explore pdf generation for wizard forms on server side

For mat/pat, we need to generate pdf of the form to attach to emails.

Explore how pdf generation works for wizard forms
We do not want all the pages of the wizard form to be in the email. For mat/pat we only want the Review page & the Certification page to be in the attachment.

email ticket is #874

@fazil-ey
I'm attaching PDF that we will be generating from Mat-Pat form and send over email.
Could you please review that and give your thought on it?
https://app.zenhub.com/files/439477060/ac831539-2ca9-4fcb-90be-63644d3ced87/download
Note: In the same PDF you will see one error, ministry select is not a component. We can fix that as separate ticket.

Fazil will reply to confirm any issues.
relates to #874

@bhumin-fw
Can we add the BC gov logo and form name, like we have for telework?

@fazil-ey
It's not there in form itself.
In telework or sl review we have added header (logo + title). Same in not exist in mat-pat.
Now we have 2 ways to do this.

Add header log + title
Add script that hide logo+title in form and make it visible in PDF only.

Let me know your thought on this.

@fazil-ey It seems we need to explore wizard to put general header in it.
Although I have added logo+title in PDF. please review below PDF
https://app.zenhub.com/files/439477060/4cd6dbe0-fc31-4256-980a-13da38e85bbb/download
Note: We need to add additional ticket to explore

Add Header for wizard forms (No placement for header is available in wizard, we can add all the data in first page of wizard form)
RemoteSelect component is not display in PDF.

Bhumin to add a note and then Fazil could close this ticket

@fazil-ey Able to make code stable that works fine on DEV. Please consider above comment and PDF in review.
PDF contain header(logo+text), Wizard form does not display header(logo+form) so that needs to be handle separately if we want that(It must be handle with tab redesign ticket).
If it looks good, We can close this ticket.

@fazil-ey
Please find attached PDF with updated details.
https://app.zenhub.com/files/439477060/8e1b564b-01df-43a4-93d9-a78f7864cfc2/download


Skinning with multiple roots is not supported

But should be, we can just leave out setting the skeleton property in the GLTF skin.

Fixed by 9e73cf5cb9eacacdeddc0c1006ff2d35dc349f9d


Install but it dosn't works

I install this tools with Git Bash in empty directory. If i run grunt serve, browser will open in new tab: http://localhost:8100/ , but ERR_CONNECTION_REFUSED. Why? In CLI i see Done, without errors. And if i use ionic serve, page are loaded.

I have the same problem. ionic serve works fine, but grunt serve fails.

Same issue here, any ideas?

I was having the same issue and to resolve I downgraded grunt-concurrent to 1.0.0
sudo npm uninstall grunt-concurrent
sudo npm install<EMAIL_ADDRESS>that got my grunt serve to work.

Whats up with this? having same issue

mklewis will right, uninstall grunt-concurrent 1.0.1 and install<EMAIL_ADDRESS>, thats solve the problem on my way.

Thanks @mklewis , this solution worked for me, but what's going on with this?

the solution didn't work for me on mac - unless npm package manager is wrong shows
"grunt-concurrent": "~1.0.0"

@landed1 It worked fine for me on mac.

ionic serve is failing - I created a separate issue

@lanceli in your package.json make sure the grunt-concurrent line is "grunt-concurrent": "1.0.0", remove the ~ .  you can also run npm list --depth=0 to make sure you have the right version installed.

Thanks I was getting a limit message that was trying to run ionic serve fixed with
ulimit -S -n 2048

Thanks @mklewis worked for me!

Worked for me in Mac, thank you @mklewis

@mklewis Dude, I've literally spent 2 days, resinstalled my OS 4 times, re did my npm at least 6, and I'm so happy you're solution worked. I'm a little bummed it was just all that simple, but yes this is definitely an issue.
I was using Elementary OS Freya (an Ubuntu based linux distro) using linux kernel 4, witht the most updated npm, node, yo, etc...
Again thank you so much!

Thanks @mklewis !

Thanka @mklewis  !

@mklewis life saver!


Tag Management: Functional Tests

Let's add some functional tests to cover the new tag management screen.
To do this, we'll need to add the tagsUI:true setting to config.example.js.
We should then add tests which verify (as a minimum):

The list on the tag settings page is output correctly
The tag settings menu (TSM) opens and closes correctly
Values on the TSM are correctly saved and update the tag list

I recommend that these are added to a new settings_tags_test.js file or similar and not bundled in with the existing settings test.

Another issue to be closed as we're moving away from casper tests.


feat(manager): support getting and putting files stored in AZURE

Task linked: CU-2p29v6j 二进制文件读取对接: AZURE


[FFmpeg] Fix build on ARM64

I tried to build FFmpeg for ARM64 but I got an error. The problem happens because portfile.cmake uses gcc-9.3.0 but it has been removed from repository.
See:
https://repo.msys2.org/msys/x86_64/

So, it is just needed to update that file to the newer updated version and you will be able to build FFmpeg for ARM64 again.
Since only a link to a download has been updated, I think that all needed guidelines should be satisfied.

Please bump the port version. See documentation.
Also please run command vcpkg x-add-version ffmpeg then commit the changes.

Please bump the port version. See documentation. Also please run command vcpkg x-add-version ffmpeg then commit the changes.

Done, thanks for the tip.