Android export doesn't warn if keystore doesn't exist

Godot version:
3.2 beta5
Steps to reproduce:

Set a wrong release keystore path for Android export preset
Export with that preset
Wait
Wait more
Ok, it finished
Except it didn't, because the keystore doesn't exist and you just wasted time

The check should be done at the beginning of export.

I would like to work on this issue.

In my commit, I'm checking if release keystore isn't empty, if it isn't then check if keystore file exist or not. Hence if now the keystore doesn't exist Export button will get disabled. In future it will be better to put warning just like in when debug keystore isn't configured to avoid confusions, I didn't do that because of error translation issues.


HIVE-28435: Upgrade cron-utils to 9.2.1

What changes were proposed in this pull request?
Upgrade Cron-utils to 9.2.1 and remove one instance of older version coming in transitively.
Why are the changes needed?
fix CVE-2021-28170
Does this PR introduce any user-facing change?
No
Is the change a dependency upgrade?
Yes
dpn.txt
How was this patch tested?
Manually triggered some CRUD operations after dependency upgrade. Rest relying on precommit tests.

lgtm +1


Change indentation from 4 spaces to 2

We've been using 2 spaces up to now, and I think that works better in
IDEA than 4, so I'm switching everything to 2 spaces. This will probably
make a bit of a mess of any code changes that aren't yet committed;
I hope I don't create too much work for anyone.
Closes #50

This never got merged in, and now we've essentially done the same thing off in a different place, so I'm closing this as "done" even though we won't take it.


if statement makes Pythran much slower

I tried to use Pythran to improve a function called _cdf_distance. When the input size is small (e.g. 4), Pythran is 3x faster than the original python code. However, when the size is large (e.g. 4000), Pythran is 3x slower than the original code. :(
I'm still trying to figure out what causes such a situation, and here is my timing report and codes. https://github.com/charlotte12l/pythran_tests/blob/main/_cdf_distance/timing.ipynb

Looking at the implementation at https://github.com/scipy/scipy/pull/14154, there's no for-loops, so it's really about how the (vectorized) NumPy and Pythran function calls and indexing compare. I would expect Pythran to at least not be slower for large arrays.
Line profiling this Pythran code is something I'm not sure is possible, but just taking the kernel and commenting more lines out should be relatively straightforward here. E.g benchmark just 1-2 lines at a time. First:
u_sorter = np.argsort(u_values)
v_sorter = np.argsort(v_values)

then:
u_sorter = np.argsort(u_values)
v_sorter = np.argsort(v_values)

all_values = np.concatenate((u_values, v_values))

etc.
Maybe it's also worth inspecting the optimized Python code: https://pythran.readthedocs.io/en/latest/MANUAL.html#read-the-optimized-python-code

Thank you so much!!!  I tried the first method and I think if statement is the cause of the problem.
When I benchmark the following lines with size=4000, pythran vs original is 8.74 µs vs 1.35ms.(%timeit -n 100 -r 3 _pythran_cdf_distance(1,u_values, v_values))
    u_sorter = np.argsort(u_values)
    v_sorter = np.argsort(v_values)

    all_values = np.concatenate((u_values, v_values))
    all_values = np.sort(all_values, kind='mergesort')

    # Compute the differences between pairs of successive values of u and v.
    deltas = np.diff(all_values)

    # Get the respective positions of the values of u and v among the values of
    # both distributions.
    u_cdf_indices = np.searchsorted(u_values[u_sorter], all_values[:-1], 'right')
    v_cdf_indices = np.searchsorted(v_values[v_sorter], all_values[:-1], 'right')

    # Calculate the CDFs of u and v using their weights, if specified.
#     if u_weights is None:
    u_cdf = u_cdf_indices / u_values.size

If I uncommented if u_weights is None,  pythran vs original is 2.02 ms vs 1.19 ms.(%timeit -n 100 -r 3 _pythran_cdf_distance(1,u_values, v_values))
    u_sorter = np.argsort(u_values)
    v_sorter = np.argsort(v_values)

    all_values = np.concatenate((u_values, v_values))
    all_values = np.sort(all_values, kind='mergesort')

    # Compute the differences between pairs of successive values of u and v.
    deltas = np.diff(all_values)

    # Get the respective positions of the values of u and v among the values of
    # both distributions.
    u_cdf_indices = np.searchsorted(u_values[u_sorter], all_values[:-1], 'right')
    v_cdf_indices = np.searchsorted(v_values[v_sorter], all_values[:-1], 'right')

    # Calculate the CDFs of u and v using their weights, if specified.
    if u_weights is None:
        u_cdf = u_cdf_indices / u_values.size

For the second method, I will get some strange errors if I use pythran -P arc_distance.py | yapf. I'm still trying to fix that.
(scipydev) charlotte@CHARLOTLIU-MB0 _cdf_distance % pythran -P _pythran_cdf_distance.py | yapf
Traceback (most recent call last):
  File "/Users/charlotte/anaconda3/envs/scipydev/lib/python3.8/site-packages/yapf/yapflib/pytree_utils.py", line 115, in ParseCodeToTree
    tree = parser_driver.parse_string(code, debug=False)
  File "/Users/charlotte/anaconda3/envs/scipydev/lib/python3.8/lib2to3/pgen2/driver.py", line 103, in parse_string
    return self.parse_tokens(tokens, debug)
  File "/Users/charlotte/anaconda3/envs/scipydev/lib/python3.8/lib2to3/pgen2/driver.py", line 71, in parse_tokens
    if p.addtoken(type, value, (prefix, start)):
  File "/Users/charlotte/anaconda3/envs/scipydev/lib/python3.8/lib2to3/pgen2/parse.py", line 119, in addtoken
    ilabel = self.classify(type, value, context)
  File "/Users/charlotte/anaconda3/envs/scipydev/lib/python3.8/lib2to3/pgen2/parse.py", line 175, in classify
    raise ParseError("bad token", type, value, context)
lib2to3.pgen2.parse.ParseError: bad token: type=58, value=' ', context=('', (7, 78))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/charlotte/anaconda3/envs/scipydev/lib/python3.8/site-packages/yapf/yapflib/pytree_utils.py", line 121, in ParseCodeToTree
    tree = parser_driver.parse_string(code, debug=False)
  File "/Users/charlotte/anaconda3/envs/scipydev/lib/python3.8/lib2to3/pgen2/driver.py", line 103, in parse_string
    return self.parse_tokens(tokens, debug)
  File "/Users/charlotte/anaconda3/envs/scipydev/lib/python3.8/lib2to3/pgen2/driver.py", line 71, in parse_tokens
    if p.addtoken(type, value, (prefix, start)):
  File "/Users/charlotte/anaconda3/envs/scipydev/lib/python3.8/lib2to3/pgen2/parse.py", line 119, in addtoken
    ilabel = self.classify(type, value, context)
  File "/Users/charlotte/anaconda3/envs/scipydev/lib/python3.8/lib2to3/pgen2/parse.py", line 175, in classify
    raise ParseError("bad token", type, value, context)
lib2to3.pgen2.parse.ParseError: bad token: type=58, value=' ', context=('', (7, 78))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/charlotte/anaconda3/envs/scipydev/bin/yapf", line 10, in <module>
    sys.exit(run_main())
  File "/Users/charlotte/anaconda3/envs/scipydev/lib/python3.8/site-packages/yapf/__init__.py", line 362, in run_main
    sys.exit(main(sys.argv))
  File "/Users/charlotte/anaconda3/envs/scipydev/lib/python3.8/site-packages/yapf/__init__.py", line 104, in main
    reformatted_source, _ = yapf_api.FormatCode(
  File "/Users/charlotte/anaconda3/envs/scipydev/lib/python3.8/site-packages/yapf/yapflib/yapf_api.py", line 147, in FormatCode
    tree = pytree_utils.ParseCodeToTree(unformatted_source)
  File "/Users/charlotte/anaconda3/envs/scipydev/lib/python3.8/site-packages/yapf/yapflib/pytree_utils.py", line 127, in ParseCodeToTree
    raise e
  File "/Users/charlotte/anaconda3/envs/scipydev/lib/python3.8/site-packages/yapf/yapflib/pytree_utils.py", line 125, in ParseCodeToTree
    ast.parse(code)
  File "/Users/charlotte/anaconda3/envs/scipydev/lib/python3.8/ast.py", line 47, in parse
    return compile(source, filename, mode, flags,
  File "<unknown>", line 2
    def _pythran_cdf_distance(p, u_values, v_values, u_weights=builtins.None, v_weights=builtins.None):
                                                                        ^
SyntaxError: invalid syntax

When I benchmark the following lines with input size=4000, pythran vs original is 8.74 µs vs 1.35ms.(%timeit -n 100 -r 3 _pythran_cdf_distance(1,u_values, v_values))

I don't think that's possible - probably Pythran is not doing anything because you didn't include a return statement (it uses lazy evaluation, so no result means no calculations needed). I just tried, it takes about ~1.5 ms if you keep the return np.sum ... statement.

    def _pythran_cdf_distance(p, u_values, v_values, u_weights=builtins.None, v_weights=builtins.None):
                                                                        ^
SyntaxError: invalid syntax

is a bug in the generated Python code. Using builtins.None was valid in Python 2, but not in Python 3. It still exists there, but you cannot access it via the namespace:
>>> import builtins
>>> none = getattr(builtins, "None")
>>> none is None
True
>>> builtins.None
  File "<ipython-input-11-ad745c64d6f0>", line 1
    builtins.None
             ^
SyntaxError: invalid syntax

I don't think that's possible - probably Pythran is not doing anything because you didn't include a return statement (it uses lazy evaluation, so no result means no calculations needed). I just tried, it takes about ~1.5 ms if you keep the return np.sum ... statement.

Sorry for my mistake. Yes, you are right! After trying line by line, I think np.searchsorted(u_values[u_sorter], all_values[:-1], 'right') is the main cause.

I'm still fairly new to optimizing Pythran code, so I'm not sure how useful it is to run pythran -P. But it's interesting at least:)
I tried pythran -P _cdf_distance_1d.py > tmp.py and then edited it lightly (e.g., replacing __pythran_import_numpy with np) to make it readable. This is what comes out:
import numpy as np

def _cdf_distance_1d(p, u_values, v_values, u_weights=None, v_weights=None):
    u_sorter = np.argsort(u_values)
    v_sorter = np.argsort(v_values)
    all_values_ = np.sort(np.concatenate((u_values, v_values)), (-1), 'mergesort')
    deltas = np.diff(all_values_)
    __tuple0 = if(is_none(u_weights), $isstatic0, $isstatic1)(np.searchsorted(u_values[u_sorter], all_values_[:(-1)], 'right'), u_sorter, u_values, u_weights)
    u_cdf = __tuple0[0]

    __tuple1 = if(is_none(v_weights), $isstatic2, $isstatic3)(np.searchsorted(v_values[v_sorter], all_values_[:(-1)], 'right'), v_sorter, v_values, v_weights)
    v_cdf = __tuple1[0]
    if (p == 1):
        return np.sum(np.multiply(np.abs((u_cdf - v_cdf)), deltas))
    else:
        if (p == 2):
            return np.sqrt(np.sum(np.multiply(np.square((u_cdf - v_cdf)), deltas)))
        return np.power(np.sum(np.multiply(np.power(np.abs((u_cdf - v_cdf)), p), deltas)), (1 / p))

def $isstatic0(u_cdf_indices, u_sorter, u_values, u_weights):
    return ((u_cdf_indices / builtins.getattr(u_values, 'size')),)

def $isstatic1(u_cdf_indices, u_sorter, u_values, u_weights):
    u_sorted_cumweights = np.concatenate(([0], np.cumsum(u_weights[u_sorter])))
    return ((u_sorted_cumweights[u_cdf_indices] / u_sorted_cumweights[(-1)]),)

def $isstatic2(v_cdf_indices, v_sorter, v_values, v_weights):
    return ((v_cdf_indices / builtins.getattr(v_values, 'size')),)

def $isstatic3(v_cdf_indices, v_sorter, v_values, v_weights):
    v_sorted_cumweights = np.concatenate(([0], np.cumsum(v_weights[v_sorter])))
    return ((v_sorted_cumweights[v_cdf_indices] / v_sorted_cumweights[(-1)]),)

After trying line by line, I think np.searchsorted(u_values[u_sorter], all_values[:-1], 'right') is the main cause. pythran vs original is 3.01 ms vs 1.17 ms

That does sound plausible. So either searchsorted implementation is a bit slow, or the advanced indexing operation (u_values[u_sorter]) is.
If you take the np.searchsorted(u_values[u_sorter], all_values[:-1], 'right') line and split it into multiple lines, you can figure out which operation is the problem here.

That does sound plausible. So either searchsorted implementation is a bit slow, or the advanced indexing operation (u_values[u_sorter]) is.
If you take the np.searchsorted(u_values[u_sorter], all_values[:-1], 'right') line and split it into multiple lines, you can figure out which operation is the problem here.

Thanks for your advice! I split them into multiple lines and I find Pythran did make np.searchsort much slower.
For the following code, Pythran vs original is 1.07 ms vs 767 µs.
    u_sorter = np.argsort(u_values)
    v_sorter = np.argsort(v_values)

    all_values = np.concatenate((u_values, v_values))
    all_values = np.sort(all_values, kind='mergesort')

    # Compute the differences between pairs of successive values of u and v.
    deltas = np.diff(all_values)

    tmp_u = u_values[u_sorter]
    values_tmp = all_values[:-1]
    return tmp_u, values_tmp, deltas

However, for the following code, Pythran vs original is 2.06 ms vs 987 µs.
    u_sorter = np.argsort(u_values)
    v_sorter = np.argsort(v_values)

    all_values = np.concatenate((u_values, v_values))
    all_values = np.sort(all_values, kind='mergesort')

    # Compute the differences between pairs of successive values of u and v.
    deltas = np.diff(all_values)

    tmp_u = u_values[u_sorter]
    values_tmp = all_values[:-1]
    u_cdf_indices = np.searchsorted(tmp_u, values_tmp, 'right')

    return u_cdf_indices, deltas

I tested a small example:
%pythran_searchsort.py
import numpy as np

#pythran export pythran_searchsort(float[:], float[:])
def pythran_searchsort(a1, a2):
    return np.searchsorted(a1, a2, side='right')

The timing shows Pythran version is slower than the original:
from pythran_searchsort import pythran_searchsort
import numpy as np

size = 4000
rng = np.random.default_rng(12345678)
a = rng.random(size) * 10
b = rng.random(size) * 10

%timeit -n 100 -r 3 pythran_searchsort(a,b)
674 µs ± 43.2 µs per loop (mean ± std. dev. of 3 runs, 100 loops each)

%timeit -n 100 -r 3 np.searchsorted(a,b,side='right')
280 µs ± 27.7 µs per loop (mean ± std. dev. of 3 runs, 100 loops each)

It looks like the numpy implementation (PyArray_SearchSorted) uses binary search, while Pythran's searchsorted does a linear scan.

Mmmmh, pythran is using lower_bound so that's a binary search too. Anyway, @charlotte12l provided a very nice reproducer, I should be able to investigate.

Should be fixed by #1794 . @charlotte12l can you confirm?
Btw in you benhcmark, you should sort a otherwise the assumption of serachsorted are not met.
Thanks a lot for the investigation and reproducer.

@serge-sans-paille Thanks, it works!
The timing shows Pythran version is faster than the original on the new benchmark now!
from pythran_searchsort import pythran_searchsort
import numpy as np

size = 4000
rng = np.random.default_rng(12345678)
a = rng.random(size) * 10
b = rng.random(size) * 10
a = np.sort(a) # sort a

%timeit -n 100 -r 3 pythran_searchsort(a,b)
265 µs ± 6.77 µs per loop (mean ± std. dev. of 3 runs, 100 loops each)

%timeit -n 100 -r 3 np.searchsorted(a,b,side='right')
385 µs ± 11 µs per loop (mean ± std. dev. of 3 runs, 100 loops each)

However for these following lines in _cdf_distance, pythran is still slower on my local machine, and I think it is mainly due to the indexing operations(If I return tmp_u, values_tmp, deltas before np.searchsorted,  pythran is already slower than original- 1.07 ms vs 767 µs).
For the following lines, before your fix, pythran vs original is 2.06ms vs 987µs, now is 1.31ms vs 955 µs.
    u_sorter = np.argsort(u_values)
    v_sorter = np.argsort(v_values)

    all_values = np.concatenate((u_values, v_values))
    all_values = np.sort(all_values, kind='mergesort')

    # Compute the differences between pairs of successive values of u and v.
    deltas = np.diff(all_values)

    tmp_u = u_values[u_sorter]
    values_tmp = all_values[:-1]
#     return tmp_u, values_tmp, deltas

    u_cdf_indices = np.searchsorted(tmp_u, values_tmp, 'right')

    return u_cdf_indices, deltas

Great! The indexing operation is indeed a pain, I'll dig into that one!


Cannot create new file with Clap filer

Environment (please complete the following information):

OS: macOS
(Neo)Vim version: VIM - Vi IMproved 8.2 (2019 Dec 12, compiled Nov  4 2020 11:27:02)
macOS version
Included patches: 1-1950
Compiled by Homebrew
vim-clap version: 45a91bf706e9dcf85172c126bbac8964e209a4ae
Have you reproduced with a minimal vimrc: Yes
Have you updated to the latest plugin version: Yes
Have you upgraded to/compiled the latest Rust binary: Yes - Tried run :Clap install-binary! in vim

Describe the bug
A clear and concise description of what the bug is.
Clap debug

            has cargo: 1
            has maple: /Users/phong/.vim/plugged/vim-clap/target/release/maple
           maple info: version 0.1.21, built for x86_64-apple-darwin by rustc 1.47.0 (18bf6b4f0 2020-10-07).

         has +python3: 1
has py dynamic module: 1
            has ctags: ctags with JSON output support
     Current FileType:
Third Party Providers: []
       Global Options:
    let g:clap#autoload_dir = '/Users/phong/.vim/plugged/vim-clap/autoload'
    let g:clap#popup#display = {'shrink': function('51'), 'open': function('<SNR>27_create_display'), 'width': 69, 'shrink_if_undersize': function('50')}
    let g:clap#popup#preview = {'line_count': function('<SNR>26__line_count'), 'show': function('52'), 'hide': function('53'), 'bufnr': 6, 'add_highlight': function('54'), 'get_lines': function('<SNR>26__get_lines'), 'getbufvar': function('<SNR>26__getbufvar'), 'setbufvar_batch': function('<SNR>26__setbufvar_batch'), 'setbufvar': function('<SNR>26__setbufvar'), 'winid': 1008, 'win_is_valid': function('<SNR>26__win_is_valid'), 'goto_win': function('<SNR>26__goto_win'), 'set_syntax': function('55')}
    let g:clap#provider_alias = {'gfiles': 'git_files', 'hist:': 'command_history', 'hist/': 'search_history'}
    let g:clap_background_shadow_blend = 50
    let g:clap_disable_bottom_top = 0
    let g:clap_disable_matches_indicator = v:false
    let g:clap_disable_optional_async = v:false
    let g:clap_disable_run_rooter = v:false
    let g:clap_enable_background_shadow = v:true
    let g:clap_enable_debug = v:false
    let g:clap_enable_icon = 0
    let g:clap_forerunner_status_sign = {'done': '•', 'running': '!', 'using_cache': '*'}
    let g:clap_indicator_winid = 1009
    let g:clap_insert_mode_only = v:false
    let g:clap_multi_selection_warning_silent = 0
    let g:clap_no_matches_msg = 'NO MATCHES FOUND'
    let g:clap_open_action = {'ctrl-v': 'vsplit', 'ctrl-x': 'split', 'ctrl-t': 'tab split'}
    let g:clap_popup_border = 'rounded'
    let g:clap_preview_size = 5
    let g:clap_providers_relaunch_code = '@@'
    let g:clap_search_box_border_style = 'nil'
    let g:clap_search_box_border_symbols = {'nil': ['', ''], 'curve': ['', ''], 'arrow': ['', '']}
    let g:clap_spinner_winid = 1011
  Provider Variables:
                     []

To Reproduce
Steps to reproduce the behavior:

Create the minimal vimrc min.vim:

set encoding=utf-8
scriptencoding utf-8
set nocompatible
set termguicolors
set runtimepath^=~/.vim/plugged/vim-clap
syntax on
filetype plugin indent on

Start (neo)vim with command: vim -u min.vim

Type Clap filer and input inexistent path and press Enter <CR>

See error: No such file or directory (os error 2)

Expected behavior
I can create new file on pressing Enter
Screenshots

Could you help check this issue? Thanks.

@phongnh Can you see if this patch works?
diff --git a/autoload/clap/provider/filer.vim b/autoload/clap/provider/filer.vim
index cdc06a8..caf8811 100644
--- a/autoload/clap/provider/filer.vim
+++ b/autoload/clap/provider/filer.vim
@@ -218,7 +218,7 @@ function! s:cr_action() abort
     return
   endif

-  if exists('g:__clap_has_no_matches') && g:__clap_has_no_matches
+  if g:clap.display.line_count() == 1 && g:clap.display.get_lines()[0] =~# s:CREATE_FILE
     " Create file if it doesn't exist
     stopinsert
     call clap#handler#sink()

Since we injected the query line into the candidates, g:__clap_has_no_matches will never be true then. @romgrk
https://github.com/liuchengxu/vim-clap/blob/5d2a04ca8c33f4031cd89a012663ca34ae854b8f/autoload/clap/provider/filer.vim#L143-L144

Thanks @liuchengxu. It works for these case:

creating new file from current folder
creating new file from non-empty folder

It does not work for the case - empty folder. Please check screenshots:

Since we injected the query line into the candidates, g:__clap_has_no_matches will never be true then.

Indeed, I've applied your patch in #590.
@phongnh Please update to latest master and reopen if it happens again :]

@phongnh The issue of creating a new file under empty folder has been resovled in https://github.com/liuchengxu/vim-clap/commit/b2fe93fbee23c3dba24439e0e0bf8c5b77eb5447, please have a try.

Thanks @romgrk. I fixed problem for creating new file.
@liuchengxu I tried to test two cases:

I typed emptydir/new.txt, and pressed Enter, it created new.txt correctly

I typed emp, and press TAB to go to emptydir, then I typed new.txt, it did not show option to create new file. I'm not sure this case is a bug or not.

@phongnh You can still create the new file as expected, but the prompt message Directory is empty can definitely be improved.

@liuchengxu Just tried again, press ENTER on new.txt in last screenshot. It works. Thank you.


MicroProfile Context Propagation 1.3 Specification Review

Specification issue template
When creating a specification project release review, create an issue in the MicroProfile-WG repository repo with the content defined as follows.

[x]  Specification name and version

[x]  Add the label Release Review

[x]  Naming conventions for artifacts:

[x]  Specification PDF in the form of microprofile-project-spec-version.pdf
[x]  Specification HTML in the form of microprofile-project-spec-version.html
project is the microprofile specification short project name (config, health, ...)
version is the two digit x.y version of the specification

[x]  The Nexus Staging links (orgeclipsemicroprofile-NNNN where NNNN is the staging repository id) (eg, https://oss.sonatype.org/content/repositories/orgeclipsemicroprofile-NNNN/org/eclipse/microprofile/config/) which contain all the binaries and relevant documentation:

[x]  Staging Repo
[x]  Spec PDF
[x]  Spec HTML
[x]  Javadoc
[x]  API Jar
[x]  TCK Jar

[x]  A link in the Eclipse downloads sections is still available for specs and apidocs:

[x]  https://download.eclipse.org/microprofile/staging/microprofile-context-propagation-1.3/
[x]  An apidocs directory containing the javadoc associated with the API jar.

[x]  Summary that a Compatible Implementation is complete, passes the TCK, and that the TCK includes sufficient coverage of the specification.

[x]  [Compatible Certification Request] (Open Liberty <IP_ADDRESS>-beta: MicroProfile Context Propagation 1.3 Compatible Certification Request eclipse/microprofile-context-propagation#214)

[ ]  Release Review
https://projects.eclipse.org/projects/technology.microprofile/reviews/context-propagation-1.3-release-review

[x]  Follow governance process and create/update release record

Component Release Record

[x]  Email to PMC (more info here)

[x]  Start release review by emailing EMO (more info here)(Track the bug issue created by EMO after the email)

[x]  A member of Steering Committee initiates the ballot by sending an email to [microprofile-wg]<EMAIL_ADDRESS>(more info here

[ ]  After the voting has ended, email [microprofile-wg]<EMAIL_ADDRESS>with the ballot result (more info here

@njr-11, nice work!  The licenses in your deliverables are in very good shape (compared to the other recent MP reviews), but I found one missing -- there was no license in the tck javadoc jar file.   Not sure if this is a cause for a respin or not.  I would assume that official deliverables should have an embedded license somewhere.  This might be a question for the EMO.  Thanks.

Kevin,
Thanks for spotting this.  I looked into whether tck javadoc jar is
published (it is) and then checked if the previous versions (1.2, 1.0)
contain a license. They also do not.
I'm copying the EMO email on this to please check on whether this requires
a respin or can be corrected in a future release.
From:   "Kevin Sutter" @.>
To:     "microprofile/microprofile-wg"
@.>
Cc:     "Nathan Rauh" @.>, "Mention"
@.>
Date:   11/11/2021 11:52 AM
Subject:        [EXTERNAL] Re: [microprofile/microprofile-wg] MicroProfile
Context Propagation 1.3 Specification Review (Issue #106)
@njr-11, nice work! The licenses in your deliverables are in very good
shape (compared to the other recent MP reviews), but I found one missing
-- there was no license in the tck javadoc jar file. Not sure if this is a
cause for a respin or
@njr-11, nice work! The licenses in your deliverables are in very good
shape (compared to the other recent MP reviews), but I found one missing
-- there was no license in the tck javadoc jar file. Not sure if this is a
cause for a respin or not. I would assume that official deliverables
should have an embedded license somewhere. This might be a question for
the EMO. Thanks.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.
Triage notifications on the go with GitHub Mobile for iOS or Android.

Fix it so that it's right next time.
FWIW, a pedantic interpretation of the current state is that no rights are conveyed (reading and "fair use" quoting are fine).
In fact, the footers in the JavaDoc say "Copyright © 2021 Eclipse Foundation. All rights reserved.". Legally, the statement "All rights reserved" is meaningless because a work is nowadays automatically protected by copyright. Ideally the footer should describe the license.

I answered on the issue.
Wayne
On Thu, Nov 11, 2021 at 2:25 PM Nathan Rauh @.***> wrote:

Kevin,
Thanks for spotting this.  I looked into whether tck javadoc jar is
published (it is) and then checked if the previous versions (1.2, 1.0)
contain a license. They also do not.
I'm copying the EMO email on this to please check on whether this requires
a respin or can be corrected in a future release.
From:        "Kevin Sutter" @.>
To:        "microprofile/microprofile-wg" <
@.>
Cc:        "Nathan Rauh" @.>, "Mention" <
@.>
Date:        11/11/2021 11:52 AM
Subject:        [EXTERNAL] Re: [microprofile/microprofile-wg]
MicroProfile Context Propagation 1.3 Specification Review (Issue #106)
@njr-11, nice work! The licenses in your deliverables are in very good
shape (compared to the other recent MP reviews), but I found one missing --
there was no license in the tck javadoc jar file. Not sure if this is a
cause for a respin or ZjQcmQRYFpfptBannerStart
*This Message Is From an External Sender *
This message came from outside your organization.
ZjQcmQRYFpfptBannerEnd
@.**** https://github.com/njr-11, nice work! The licenses in your
deliverables are in very good shape (compared to the other recent MP
reviews), but I found one missing -- there was nolicense in the tck
javadoc jar file. Not sure if this is a cause for a respin or not. I would
assume that official deliverables should have an embedded license
somewhere. This might be a question for the EMO. Thanks.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/microprofile/microprofile-wg/issues/106#issuecomment-966501541,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ADITLU6WLH2JTKFQI7GQMPDULP7FTANCNFSM5HJLSGAA
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675or
Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

--
The Eclipse Management Organization | Eclipse Foundation

I have rebuilt the 1.3 Final release to include the license in the TCK JavaDoc jar.  The links above in the description are now updated to the new staging location.

All looks goo now.  Thanks, @njr-11!  I have just voted +1.


On this page section for mobile and tablet screen

I was using the docs website on mobile the other day and found out that there was no easy way for me to know TOC (Table of Contents) on mobile because we are not showing it in mobile view.
It would be nice if we could show "On this page" section on mobile after the breadcrumb with TOC (Table of Contents) of current page.
Inspired by Astro Docs and T3 app docs.
UI

This issue has been automatically closed because it received no activity for a while. If you think it was closed by accident, please leave a comment. Thank you.


Use map nested in struct

I would like to use a map in a object
I have the following object:
type Bar struct {
	Field2 string
}
type FooBarMap struct {
	Field3  map[string]Bar
}

Expected behavior
I would like to result in the following swagger definition
FooBarMap:
    type: object
    properties:
      field3:
        type: object
        additionalProperties:
          type: object
          properties:
            field2:
              type: string

Swag version
v1.6.2
Go version
go version go1.12.5 linux/amd64

I created a PR. I updated today the code to the new master. Can someone take a look at it? @ubogdan?


[Store distribution request] Accrescent

Hi there!
Could you please consider publishing Just Player on the Accrescent App Store for Android in addition to the other distribution channels?
Many users, particularly those using privacy and security-focused Android operating systems like GrapheneOS, or who are simply privacy-conscious, rely on Accrescent for secure app downloads without depending on Google services.
Making this app available on Accrescent would be greatly appreciated by its user community.
Thank you!
https://accrescent.app/

I believe I looked at this store earlier, but I'm unable to submit an app there as it's not publicly open.

Registration not permitted

Accrescent developer registration is currently invite-only. Please come back when registration opens for everyone.

I tried mailing them (like others did) but I failed to receive any response in 3 weeks.

I have forwarded it to the developer !
Thanks for telling

Published and available on Accrescent. Thanks for the nudges, folks. And special thank to @lberrymage of Accrescent!


Add dev-inspect-txn to RPC and SDK

This PR is based on #6538 and exposes the dev-inspect endpoint to RPC and SDK.
Testing: WIP and will add in a bit.

Let's definitely add TS e2e test for this given so many newly added types since it's hard to verify by human eyes

Closing this in favor of https://github.com/MystenLabs/sui/pull/7008


regression-test disable defining global variable in test…

… groovy files (#44576)
What problem does this PR solve?
Issue Number: close #xxx
Related PR: #xxx
Problem Summary:
disable global var in test cases
Release note
None
Check List (For Author)

Test

[x] Regression test
[ ] Unit Test
[ ] Manual test (add detailed scripts or steps below)
[ ] No need to test or manual test. Explain why:

[ ] This is a refactor/code format and no logic has been changed.
[ ] Previous test can cover this change.
[ ] No code files have been changed.
[ ] Other reason

Behavior changed:

[x] No.
[ ] Yes.

Does this need documentation?

[x] No.
[ ] Yes.

Check List (For Reviewer who merge this PR)

[ ] Confirm the release note
[ ] Confirm test cases
[ ] Confirm document
[ ] Add branch pick label

Thank you for your contribution to Apache Doris.
Don't know what should be done next? See How to process your PR.
Please clearly describe your PR:

What problem was fixed (it's best to include specific error reporting information). How it was fixed.
Which behaviors were modified. What was the previous behavior, what is it now, why was it modified, and what possible impacts might there be.
What features were added. Why was this function added?
Which code was refactored and why was this part of the code refactored?
Which functions were optimized and what is the difference before and after the optimization?

run buildall

run buildall

run buildall


Support other protocols in Hystrix Fallback URI

spring:
  application:
    name: gateway-server
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true
          lowerCaseServiceId: true
      routes:
      - id: service-hi
        uri: lb://SERVICE-HI
        predicates:
        - Path=/demo/**
        filters:
        - name: Hystrix
          args:
            name: fetchIngredientss
            fallbackUri: forward:/hi
      - id: ingredients-fallback
        uri: http://localhost:8888
        predicates:
        - Path=/hi

上面的配置经断路器可以跳转到http://localhost:8888/hi，但是如果把 http://localhost:8888改成lb://SERVICE-HI就不能跳转到SERVICE-HI/hi这个地址了 为什么
The above configuration can jump to http://localhost:8888/hi via circuit breaker, but if you change http://localhost:8888 to lb://SERVICE-HI, you can't jump to SERVICE-HI/hi address. Why?

Is this going to happen? Or can we vote somewhere?

Use the reaction button on the first comment to add thumbs up


Demo links broken

The demo links are broken: http://ryanmullins.github.io/angular-hammer/examples/default

Yup.
I'm thinking about changing how I do demo links, moving them to something like Code Pen, or maybe a bl.ocks.org. Does anyone have a preference?

Uso o plunker
On seg, 19 de jan de 2015 at 19:40 Ryan S Mullins<EMAIL_ADDRESS>wrote:

Yup.
I'm thinking about changing how I do demo links, moving them to something
like Code Pen, or maybe a bl.ocks.org. Does anyone have a preference?
—
Reply to this email directly or view it on GitHub
https://github.com/RyanMullins/angular-hammer/issues/27#issuecomment-70566008
.

Did you get a chance to fix the demo link?

Not yet. Bigger priorities at work at the moment. Probably won't get to this until mid-Feb.

Any update on this?

Not yet, sorry. Swamped with work stuff. Haven't had a chance to even think about this in a month.


Error

Hey. Can you tell me how to fix this?

14-May-19 00:33:39 - Starting Tellonym Spammer application.
Traceback (most recent call last):
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37-32\lib\sit
e-packages\selenium\webdriver\common\service.py", line 76, in start
stdin=PIPE)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37-32\lib\sub
process.py", line 775, in init
restore_signals, start_new_session)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37-32\lib\sub
process.py", line 1178, in _execute_child
startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "tellonym.py", line 111, in
main()
File "tellonym.py", line 107, in main
run(parse_args())
File "tellonym.py", line 72, in run
tellonym = Tellonym(args.user)
File "tellonym.py", line 17, in init
self.s = Service(url=PAGE_URL + self.user)
File "C:\Users\Administrator\Desktop\py-onym-master\lib\service.py", line 21,
in init
self.driver = get_driver_config()
File "C:\Users\Administrator\Desktop\py-onym-master\config\chrome.py", line 18
, in get_driver_config
driver = webdriver.Chrome(options=options)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37-32\lib\sit
e-packages\selenium\webdriver\chrome\webdriver.py", line 73, in init
self.service.start()
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37-32\lib\sit
e-packages\selenium\webdriver\common\service.py", line 83, in start
os.path.basename(self.path), self.start_error_message)
selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executabl
e needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chrome
driver/home

Sorry for the delayed response, if you're still interested in this project and still have this issue, please follow this guide to get it working under Windows.


KOGITO-7560: Bump all monaco-editor dependencies version to 0.33.0

Module to test

[x] monaco-editor
[ ] examples\webapp
[x] feel-input-component
[x] pmml-editor
[x] stunner-editors - Web versions of DMN & BPMN editors
[x] kie-kogito-editor-extension - VSCode versions of DMN & BPMN and PMML editors

[x] kie-kogito-editor-extension - VSCode versions of DMN Editor (Boxed expression editor)
[x] kie-kogito-editor-extension - VSCode versions of BPMN Editor (Task node)
[x] kie-kogito-editor-extension - VSCode versions of PMML Editor (Add Characteristic > Add attribute)

@tiagobento I think our monaco-editor package doesn't work well with this version.. Do you mean with the newer version 0.33.0?
However, I'm aware this is a tricky update, I'll check it very carefully. In case of issues, I'll raise an hand

Yes, with 0.33.0 I remember that were some problems.

@tiagobento I am quite confident the new version will solve most of the failures. ;)
In case of other root causes, we will fix them too.

@yesamer On stunner-editors, we also have Monaco being used on the BPMN Editor. More specifically at the Task nodes. If you open the Properties panel you should see a place there where you can choose the language and a Monaco editor pops up.

@tiagobento Should I remove the file?

@yesamer I don't think so, leave it there 😝

@tomasdavidorg Can you please help verify this PR? It touches a lof of important places. Let us know if you have questions on how to test it.

Hi @tiagobento, I can take a look. What are the impacted editors? BPMN, DMN, PMLL? And what about the channels? Vscode, online?

Hi @tomasdavidorg, yes, this change affects all the editors you mentioned. Please consider my list in the first post to have more details.

@tomasdavidorg thank you!
@tiagobento I would ask for an engineering review too, just to triple-check :)

@yesamer I'll take a look at this one ASAP.

@yesamer Just noticed that this branch is on the origin repo. Can you please reopen a PR from your fork instead?

Reopened here: https://github.com/kiegroup/kie-tools/pull/1098


Script to plot dtm test results

This script is used to plot the results of the DTM sweep in bluetooth tools

I should probably change the order of operations in yaml for BLE tests, it tried to lock the boards and timed-out thus failing, if it had successfully locked that boards it would then concluded it does not need to run BLE test on this and passed.
So i should only proceed to lock step after it decides a test is warranted.

I agree


How did you plot per each regularization parameter at Listing 3.5?

I am having a hard time trying to plot this:

I did realize this was happening because I'm shuffling the dataset when splitting, I solved it by sorting the slices:
def split_dataset(x_dataset, y_dataset, ratio):
    num_total = x_dataset.size
    arr = np.arange(num_total)
    np.random.shuffle(arr)
    num_train = int(ratio * num_total)
    train_slice = np.sort(arr[0:num_train])        # Here I use numpy.sort to make the train curve have the correct sequence
    test_slice = np.sort(arr[num_train:num_total]) # Here too, but I think it would be necessary for the test dataset
    x_train = x_dataset[train_slice]
    y_train = y_dataset[train_slice]
    x_test = x_dataset[test_slice]
    y_test = y_dataset[test_slice]
    return x_train, x_test, y_train, y_test

I will leave how did I scattered/plotted, in case someone wants some reference:
# Scatters the dataset (as a whole, the train slice, and the test slice)
x_train, x_test, y_train, y_test = split_dataset(x_dataset, y_dataset, 0.70)

fig, axs = plt.subplots(3)
fig.suptitle('Dataset')

axs[0].set_title('Whole Dataset')
axs[0].scatter(x_dataset, y_dataset)
axs[0].axes.set_aspect('equal')

axs[1].set_title(f'Train Dataset (70%))')
axs[1].scatter(x_train, y_train)
axs[1].axes.set_aspect('equal')

axs[2].set_title('Test Dataset (30%)')
axs[2].scatter(x_test, y_test)
axs[2].axes.set_aspect('equal')

fig.set_figwidth(10)
fig.set_figheight(10)
fig.tight_layout()

# Main TensorFlow calculations and training together with the plotting of each graph
# This would be after initializing the session, and before closing it

num_reg_lambdas = 4 # You can replace it to further checkout more lambda values, 4 was fine for me:)

for reg_lambda, ix in zip(np.linspace(0, 1, num_reg_lambdas), range(num_reg_lambdas)):
    for epoch in range(training_epochs):
        sess.run(train_op, feed_dict={X: x_train, Y: y_train})

    final_cost = sess.run(cost, feed_dict={X: x_test, Y: y_test})
    w_val = sess.run(w)

    y_learned = 0
    for i in range(num_coeffs):
        y_learned += w_val[i] * np.power(x_train, i)

    print(f'{ix}. Final Cost: {final_cost}, at Reg Lambda: {reg_lambda}')

    reg_fig, ax = plt.subplots()

    reg_fig.suptitle(f'Regulated Regression (λ = {reg_lambda}, Cost = {final_cost}))')
    ax.scatter(x_train, y_train)
    ax.scatter(x_test, y_test, c='#00ff0088')
    ax.plot(x_train, y_learned, 'r')
    ax.annotate(f'Lambda = {ref_lambda}', xy=(1.1, 1.0))

This is what results in:

Closing this:)


Adding Windows builds and compiles.

We need to take this step to start working on getting the system agent running on Windows.
Signed-off-by: Jamie Phillips<EMAIL_ADDRESS>

@briandowns can you also take a look at this?


Teams client to client supports TLS and SRTP

on the page https://docs.microsoft.com/en-us/microsoftteams/teams-security-guide#encryption-for-teams, please be sure to include Client to Client being also TLS (not MTLS), and that all Client:Client media is covered under the secure channels where we mention media

Created a PR to fix it in the doc https://github.com/MicrosoftDocs/OfficeDocs-SkypeForBusiness/compare/live...StainlessSteele:patch-1


When opening on a different pc either it does not show your chat history at all or shows but not all of them.

Describe the bug
The title is pretty self-exploratory. When opening on a different PC, either your chat history does not show at all or shows some of it. I use Bolt.new in Google Chrome and login in with my Github account.
Link to the Bolt URL that caused the error
https://bolt.new/~/sb1-q3mbn3
Steps to reproduce
Just open the bolt.new and no chat history on different PC.
Expected behavior
It should show the entire chat history.
Screen Recording / Screenshot
No response
Platform

OS: [Android, Windows]
Browser: [Chrome]

Additional context
No response

Appreciate the feedback! We are aware of this issue with chat persistence. Temporary workarounds and updates can be found here: #39. (Go to stackblitz.com, login (same credentials as Bolt), click Collections on the left-hand side, click Bolt Collection). Appreciate your patience as improvements continue to be made.


MySQL query timeout gets ignored

When using captureMySQL it seems to be stripping out all of the options passed to Query, line 200 of the following seems to only pass the sql property.
https://github.com/aws/aws-xray-sdk-node/blob/master/packages/mysql/lib/mysql_p.js
Is there any way to use X-Ray for MySQL and still pass options to the query like a timeout like this?
https://github.com/mysqljs/mysql#performing-queries
connection.query({   sql: 'SELECT * FROMbooksWHEREauthor= ?',   timeout: 40000, // Gets ignored because xray is not explicitly passing it    values: ['David'] }, function (error, results, fields) { });

Released in v3.0.0-alpha.2


Update Invalid Format of COAS.SemantaModeler

Correcting to their actual yaml format
Microsoft Reviewers: Open in CodeFlow

I attempt restart AzurePipelines due to the hang.


Hyper-V VMM Requestor Service

There is no such service as the "Hyper-V VMM Requestor Service" refered to in "Enable virtual machine replication" - "step 7".
Perhaps the Hyper-V Volume Shadow Copy Requestor Service is meant?  But maybe not since this service cannot be started it's a trigger start service.

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

ID: f6c70745-b594-09c8-5e68-b256c5716f72
Version Independent ID: c6fa4b5a-0208-c236-720e-c106c3c9a515
Content: Set up Hyper-V Replica
Content Source: WindowsServerDocs/virtualization/hyper-v/manage/Set-up-Hyper-V-Replica.md
Product: windows-server
Technology: hyper-v
GitHub Login: @BenjaminArmstrong
Microsoft Alias: benarm

We hugely appreciate your contribution, feedback, and support to our technical documentation.
We’ve phased out GitHub Issues on this repository as the feedback mechanism for content and have replaced it with a new feedback system. For more information see, Content User Feedback. As part of this rollout, we are migrating your issue where our team will use your comments to improve the documentation experience. Unfortunately, this does mean you won't be able to access this issue after the migration is complete.
All issues will be migrated by Thursday 29th August 2024.
Once again, thank you for your valuable feedback, we hope you’ll continue to contribute using our new feedback system.


Bug 1831888: StatefulSets v1 do not trigger on image changes

We must check for v1 StatefulSets during update.

/assign @dmage
/cc @smarterclayton
Replaces #101

/lgtm

/hold
This has been spinning on gcp-builds

@adambkaplan please remove the hold/get passing tests if you still want this cherry pick approved this week

/retest

/retest
GCP infra failure.

/hold cancel
@bparees gcp-builds is passing now.

@adambkaplan thanks, unfortunately we had to prematurely shutdown 4.3.z this morning due to a critical fix.  but this should be good to go next week.

Removing cherry pick as 4.3 needs to close early


Props to gradient card is different than card props

Describe the bug
Cannot pass variant prop to the gradientCard function since:
Type '"outlined" | "soft" | "mixed" | "elevated"' is not assignable to type '"soft" | "elevated" | undefined'.
  Type '"outlined"' is not assignable to type '"soft" | "elevated" | undefined'

To Reproduce

Follow steps to add the card component @ https://ui.tailus.io/react/components/card/
TS throw the type mismatch error on

    const { outer } = gradientCard({ variant });

Expected behavior
gradient card variant type should be consistent with card variant type.
Desktop (please complete the following information):

OS: MacOS
Browser Chrome

Additional context
 "@tailus/themer": "^0.1.5",

When the gradient property is set to true, the variant property should only be "soft", "elevated", or undefined. Any other value for variant is not acceptable in this context.
This means that if you are using the gradient option, the appearance of the gradient can only be controlled by the variant values "soft", "elevated", or the default appearance when variant is undefined. Other variant values like "outlined" or "mixed" are not valid when gradient is true.
I'll make it clear in the documentation

Understood! The types should reflect this.


[tool_crash] FileSystemException: Creation of temporary directory failed, OS Error: No space left on device, errno = 28

Command
flutter run

Steps to Reproduce

...
...
...

Logs
FileSystemException: Creation of temporary directory failed, OS Error: No space left on device, errno = 28
#0      _Directory.createTempSync (dart:io/directory_impl.dart:181:7)
#1      ForwardingDirectory.createTempSync (package:file/src/forwarding/forwarding_directory.dart:28:21)
#2      LocalFileSystem.systemTempDirectory (package:flutter_tools/src/base/file_system.dart:221:47)
#3      ForwardingFileSystem.systemTempDirectory (package:file/src/forwarding/forwarding_file_system.dart:33:49)
#4      new ResidentRunner (package:flutter_tools/src/resident_runner.dart:1017:24)
#5      new ResidentWebRunner (package:flutter_tools/src/isolated/resident_web_runner.dart:105:8)
#6      DwdsWebRunnerFactory.createWebRunner (package:flutter_tools/src/isolated/resident_web_runner.dart:64:12)
#7      RunCommand.createRunner (package:flutter_tools/src/commands/run.dart:518:31)
<asynchronous suspension>
#8      RunCommand.runCommand (package:flutter_tools/src/commands/run.dart:645:35)
<asynchronous suspension>
#9      FlutterCommand.run.<anonymous closure> (package:flutter_tools/src/runner/flutter_command.dart:1161:27)
<asynchronous suspension>
#10     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
<asynchronous suspension>
#11     CommandRunner.runCommand (package:args/command_runner.dart:209:13)
<asynchronous suspension>
#12     FlutterCommandRunner.runCommand.<anonymous closure> (package:flutter_tools/src/runner/flutter_command_runner.dart:281:9)
<asynchronous suspension>
#13     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
<asynchronous suspension>
#14     FlutterCommandRunner.runCommand (package:flutter_tools/src/runner/flutter_command_runner.dart:229:5)
<asynchronous suspension>
#15     run.<anonymous closure>.<anonymous closure> (package:flutter_tools/runner.dart:62:9)
<asynchronous suspension>

[✓] Flutter (Channel stable, 2.10.4, on macOS 12.1 21C52 darwin-x64, locale en-GB)
    • Flutter version 2.10.4 at /users/marcdmc/Downloads/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision c860cba910 (2 weeks ago), 2022-03-25 00:23:12 -0500
    • Engine revision 57d3bac3dd
    • Dart version 2.16.2
    • DevTools version 2.9.2

[✓] Android toolchain - develop for Android devices (Android SDK version 32.1.0-rc1)
    • Android SDK at /Users/marcdmc/Library/Android/sdk
    • Platform android-32, build-tools 32.1.0-rc1
    • Java binary at: /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java
    • Java version Java(TM) SE Runtime Environment (build 1.8.0_291-b10)
    • All Android licenses accepted.

[✗] Xcode - develop for iOS and macOS
    ✗ Xcode installation is incomplete

Duplicate of #54213


Updated ms.author

Docs Build status updates of commit fc9ad2a:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

mixed-reality-docs/case-study-expanding-the-design-process-for-mixed-reality.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


where the dataloader  dataset   api ?and attention layer  do we support ?

HI:
I need to load data like python pytorch style,but not found  the dataloader and dataset api ,and the multihead attention layer also not found ,do we tch-rs project support them?
thanks

tch is a thin layer around the C++ libtorch api, I don't think that the dataloader and dataset apis are available there so I would think that should be done as part of external crates if possible.
Re multi-head attention, the C++ functions should be exposed, e.g. native_multi_head_attention. You can see how its used in the pytorch codebase here for the C++ side and here for the Python side and probably adapt these using tch.

Regarding the attention layers, I had an attempt at using f_internal_native_multi_head_attention following the provided links. However doing so raises the following error upon calling backwards:
Torch("derivative for aten::_native_multi_head_attention is not implemented").
The same error is reproducible via this (nonsense) example using tch 0.14.0 and libtorch 2.1.0 (tried on both cpu and gpu):
use tch::nn::OptimizerConfig;
use tch::{nn, Device, Kind, Tensor};

const N_EMBED: i64 = 32;
const MAX_SEQ_LEN: i64 = 48;
const N_HEAD: i64 = 2;
const BATCH_SIZE: i64 = 4;

fn main() {
    let device = Device::cuda_if_available();
    let var_store = nn::VarStore::new(device);
    let path = var_store.root();

    let qkv_weight = path.zeros("qkv_weight", &[N_EMBED * 3, N_EMBED]);
    let qkv_bias = path.zeros("qkv_bias", &[N_EMBED * 3]);
    let proj_weight = path.zeros("proj_weight", &[N_EMBED, N_EMBED]);
    let proj_bias = path.zeros("proj_bias", &[N_EMBED]);

    let mask = Tensor::full(
        &[MAX_SEQ_LEN, MAX_SEQ_LEN],
        f64::NEG_INFINITY,
        (Kind::Float, path.device()),
    )
    .triu(1);

    let mut opt = nn::AdamW::default().build(&var_store, 0.001).unwrap();
    let xs = Tensor::rand(
        &[BATCH_SIZE, MAX_SEQ_LEN, N_EMBED],
        (Kind::Float, path.device()),
    );

    let att = Tensor::f_internal_native_multi_head_attention(
        &xs,
        &xs,
        &xs,
        N_EMBED,
        N_HEAD,
        &qkv_weight,
        &qkv_bias,
        &proj_weight,
        &proj_bias,
        Some(&mask),
        false,
        true,
        0,
    )
    .unwrap()
    .0;

    let att = att.sum(Kind::Float);

    opt.backward_step(&att);
}

Is this behaviour expected? Presume I maybe missing something trivial given my lack of experience in torch/ cpp.

This mostly means that the cpp side doesn't handle the backward step for this function. Not sure what PyTorch does around this, maybe backprop is not supported for this fast attention layer or maybe it's handled on the python side so we don't have access to it here.

Gotcha. Tried a higher level func internal_transformer_encoder_layer_fwd and got the same error. Thanks for the useful links about, would have never figured this out without those. Will continue with the more manual attention implementions for now.

Had a bit more time recently to look into this. If anyone else is still looking for native attention in tch, it looks like Tensor::scaled_dot_product_attention is the function to use, forward and backward works no problem. Looking through the cpp code, we'll get flash/ efficient attention based on what scaled-dot-product (SPD) backend is available.
The caveat being, as far as I can see via tch and cpp api docs, we can’t seem to explicitly enable some options alike in pytorch, nor can we tell which SPD backend is available.


Sysperf install invalid script entry point

I tried to install sysperf and got an invalid entry point.
`
scott@Sysperf:~$ python3 -m pip install sysperf
Defaulting to user installation because normal site-packages is not writeable
Collecting sysperf
Downloading sysperf-0.0.5.tar.gz (106 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 106.8/106.8 KB 1.4 MB/s eta 0:00:00
Preparing metadata (setup.py) ... done
Collecting Flask
Downloading Flask-2.2.2-py3-none-any.whl (101 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 101.5/101.5 KB 2.4 MB/s eta 0:00:00
Collecting psutil
Downloading psutil-5.9.4-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (280 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 280.2/280.2 KB 10.2 MB/s eta 0:00:00
Collecting itsdangerous>=2.0
Downloading itsdangerous-2.1.2-py3-none-any.whl (15 kB)
Requirement already satisfied: click>=8.0 in /usr/lib/python3/dist-packages (from Flask->sysperf) (8.0.3)
Requirement already satisfied: Jinja2>=3.0 in /usr/lib/python3/dist-packages (from Flask->sysperf) (3.0.3)
Collecting Werkzeug>=2.2.2
Downloading Werkzeug-2.2.2-py3-none-any.whl (232 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 232.7/232.7 KB 4.6 MB/s eta 0:00:00
Collecting MarkupSafe>=2.1.1
Downloading MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (25 kB)
Building wheels for collected packages: sysperf
Building wheel for sysperf (setup.py) ... done
Created wheel for sysperf: filename=sysperf-0.0.5-py3-none-any.whl size=107367 sha256=50f0c77b2b7d760765ac93af26cc30c1f863f36fbea5066d52c0dc36a2712e9b
Stored in directory: /home/scott/.cache/pip/wheels/f0/a7/ad/6f8493605272665efd11773811660fafaf9eeefb31fce945b9
Successfully built sysperf
Installing collected packages: psutil, MarkupSafe, itsdangerous, Werkzeug, Flask, sysperf
WARNING: The script flask is installed in '/home/scott/.local/bin' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
ERROR: For req: sysperf. Invalid script entry point: <ExportEntry sysperf = sysperf.perf:None []> - A callable suffix is required. Cf https://packaging.python.org/specifications/entry-points/#use-for-scripts for more information.
`

I got the same error as @vmsman.


Simple editor and Advanced Editor in Intoduction Package

I need a simple editor (group simple-editors) and an advanced editor (group advanced editors) for the introduction package. How can I create them?

Will have to check this tomorrow. There is already a simple editor with name editor and you need an additional advanced editor with username advanced-editor, right?

the user "editor" currently has no rights whatsoever. Therefore he will just be shown an empty, white page. He should be in the group simple-editors however. And then I would need another user, "advanced-editor" who is in the corresponding group


A way forward

The idea is to have generative fill with open source models!
The pipeline would contain the following moving parts:

Input image (eg. an image of a dog running through a field)
Input edit prompt: Replace the dog with a tiger
A model that extracts objects from the edit_prompt: to_replace = dog, replace_with = tiger
An image captioning model: a small dog running through a grassy field
Simple string manipulation to update the caption with the replace_with object
Getting the segmentation mask from the to_replace object
Using the original image, the mask and the updated caption inside an inpainting pipeline to get the edited image.

Space: https://huggingface.co/spaces/open-gen-fill/open-gen-fill-v1
What is the best way to tackle #3? The idea is to have complex edit_prompt in the future, but we would still be able to get the to_replace and the replace_with objects from the editing prompt.

Try InstructPix2Pix or MGIE first.

I was experimenting with the project today and I found it super useful. I was talking to @ritwikraha today tho about some tweaks I need to do in the code to make it work in some "edge" cases (maybe not too edge).

The user may call an object differently than the captioner. This will lead to an issue where it will fail to replace the old object with the new one in the prompt. Example: the user asks to change the soda can to a bottle of wine and the LLM will parse it as soda can, bottle of wine. The captioner will output a pepsi can in front of mountains. Thus, during the replacement, we won't find soda can in the captioner response, and it will reuse the original prompt.
To solve this, we may need to have another LLM call to change the prompt (or a single call after get the prompt).

messages = [
    {"role": "system", "content": "Follow the examples and return the expected output"},
    {"role": "user", "content": "Caption: a bottle of wine in a sunny landscape\nQuery: Swap the bottle with a headphone"},  # example 1
    {"role": "assistant", "content": "a headphone in a sunny landscape"},  # example 1
    {"role": "user", "content": "Caption: a dog playing in the garden\nQuery: Change the dog with cat"},  # example 2
    {"role": "assistant", "content": "a cat playing in the garden"},  # example 2
    {"role": "user", "content": f"Caption: {caption}\nQuery: {text_prompt}"}
]

text = tokenizer.apply_chat_template(
    messages,
    tokenize=False,
    add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(device)

In the last part, during the inpainting pipeline, you are using a strength of 0.6. As we want to REPLACE the object, I think we should use a strength of 1., to avoid keep any detail/shape from the old object.

output = pipeline(
    prompt=prompt,
    image=Image.fromarray(image.astype(np.uint8)),
    mask_image=Image.fromarray(mask),
    height=1024,
    width=560,
    negative_prompt=negative_prompt,
    guidance_scale=7.5,
    strength=1.
).images[0]

I was experimenting with the project today and I found it super useful. I was talking to @ritwikraha today tho about some tweaks I need to do in the code to make it work in some "edge" cases (maybe not too edge).

The user may call an object differently than the captioner. This will lead to an issue where it will fail to replace the old object with the new one in the prompt. Example: the user asks to change the soda can to a bottle of wine and the LLM will parse it as soda can, bottle of wine. The captioner will output a pepsi can in front of mountains. Thus, during the replacement, we won't find soda can in the captioner response, and it will reuse the original prompt.
To solve this, we may need to have another LLM call to change the prompt (or a single call after get the prompt).

messages = [
    {"role": "system", "content": "Follow the examples and return the expected output"},
    {"role": "user", "content": "Caption: a bottle of wine in a sunny landscape\nQuery: Swap the bottle with a headphone"},  # example 1
    {"role": "assistant", "content": "a headphone in a sunny landscape"},  # example 1
    {"role": "user", "content": "Caption: a dog playing in the garden\nQuery: Change the dog with cat"},  # example 2
    {"role": "assistant", "content": "a cat playing in the garden"},  # example 2
    {"role": "user", "content": f"Caption: {caption}\nQuery: {text_prompt}"}
]

text = tokenizer.apply_chat_template(
    messages,
    tokenize=False,
    add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(device)

In the last part, during the inpainting pipeline, you are using a strength of 0.6. As we want to REPLACE the object, I think we should use a strength of 1., to avoid keep any detail/shape from the old object.

output = pipeline(
    prompt=prompt,
    image=Image.fromarray(image.astype(np.uint8)),
    mask_image=Image.fromarray(mask),
    height=1024,
    width=560,
    negative_prompt=negative_prompt,
    guidance_scale=7.5,
    strength=1.
).images[0]

@pedrogengo thank you for the awesome suggestions, I have incorporated your feedback here, we will work on getting this into the main pipeline and also improving the prompt for the SD model.

@ritwikraha can you share some images and edit instructions (original edit instructions and unmodified). I want to try them out on MGIE.

@ritwikraha can you share some images and edit instructions (original edit instructions and unmodified). I want to try them out on MGIE.

Sure, here you go
# an image of a dog
url_dog = "https://i.imgur.com/CiAbKbS.jpg"
edit_prompt_dog = "replace the dog with a walrus"
# image of the london bridge
url_bridge = "https://i.imgur.com/qrN1OzK.jpg"
edit_prompt_bridge = "change the bridge to chocolates"
# image of a beer bottle on a bed
url_bottle = "https://i.imgur.com/4ujXoav.jpg"
edit_prompt _bottle = "replace the bottle with a firecracker"
# image of a Lamborghini by the side of a building
url_car = "https://i.imgur.com/7zWdoN1.jpg"
edit_prompt_car = "change the Lamborghini to a rolls royce phantom"

Some results with MGIE:

Edit Instruction
Input Edit Instruction
Input Image
Edited Image

replace the dog with a walrus
If we were to replace the dog in the image with a large, powerful, and majestic walrus, the scene would take on a completely different and surreal aspect.The walrus would be seen walking through the grassy field with a serene and calm demeanor, possibly enjoying the sunlight and the outdoors.

change the bridge to chocolates
If the bridge in the image were replaced with chocolate, it would create a whimsical and visually appealing scene.The bridge would be replaced by a large choculate, resembling a delicious chococolate treat.

replace the bottle with a firecracker
If we replaced the Guinness stout bottle in the image with a sparkler or a fire cracker, the scene would be completely different and more dramatic.The sparkler would create a bright, continuous stream of sparks, illuminating the surrounding area and possibly the bed.

change the Lamborghini to a rolls royce phantom
The image would feature a sleek, high-end car parked in front of a building, possibly a luxury car dealership or a prestigious event venue.The car's design and color would be more sophisticated and refined, reflecting the high-quality and prestigured nature of the brand.

I had to do aspect-ratio preserving resizing to the input images because they were very high-resolution. Source of truth: https://github.com/apple/ml-mgie/blob/main/demo.ipynb.

Some results with MGIE:
Edit Instruction Input Edit Instruction Input Image Edited Image
replace the dog with a walrus	If we were to replace the dog in the image with a large, powerful, and majestic walrus, the scene would take on a completely different and surreal aspect.The walrus would be seen walking through the grassy field with a serene and calm demeanor, possibly enjoying the sunlight and the outdoors.
change the bridge to chocolates	If the bridge in the image were replaced with chocolate, it would create a whimsical and visually appealing scene.The bridge would be replaced by a large choculate, resembling a delicious chococolate treat.
replace the bottle with a firecracker	If we replaced the Guinness stout bottle in the image with a sparkler or a fire cracker, the scene would be completely different and more dramatic.The sparkler would create a bright, continuous stream of sparks, illuminating the surrounding area and possibly the bed.
change the Lamborghini to a rolls royce phantom	The image would feature a sleek, high-end car parked in front of a building, possibly a luxury car dealership or a prestigious event venue.The car's design and color would be more sophisticated and refined, reflecting the high-quality and prestigured nature of the brand.
I had to do aspect-ratio preserving resizing to the input images because they were very high-resolution. Source of truth: https://github.com/apple/ml-mgie/blob/main/demo.ipynb.

Wow, this looks fantastic! The input edit instructions looks very interesting, will play out with this and include a notebook.
Thanks again ❤

Very cool project all.
Invoke team would love to recreate this workflow for folks in Invoke once the path forward is laid out.
Happy to help support however we can.

Very cool project all.
Invoke team would love to recreate this workflow for folks in Invoke once the path forward is laid out.

Thanks for the nice gesture @hipsterusername, how do you plan to integrate it?

Happy to help support however we can.

Currently we are looking to:

Looking to fix issues with the captioning model and entity extraction
Making the SDXL model more robust with the generations
Optimizing the models to run with as low resource as possible
Handling complex edit_prompt from the user

As we move forward we will be updating both the README and the issues to keep everyone updated. PRs, Issues, ideas and discussions are always welcome since we will continue to build this in public ✨

Why not trying to push the limits with MGIE since it already shows progress right off the bat.

Very cool project all.
Invoke team would love to recreate this workflow for folks in Invoke once the path forward is laid out.

Thanks for the nice gesture @hipsterusername, how do you plan to integrate it?

Happy to help support however we can.

Currently we are looking to:

Looking to fix issues with the captioning model and entity extraction
Making the SDXL model more robust with the generations
Optimizing the models to run with as low resource as possible
Handling complex edit_prompt from the user

As we move forward we will be updating both the README and the issues to keep everyone updated. PRs, Issues, ideas and discussions are always welcome since we will continue to build this in public ✨

If we can validate it generally captures intent, we have a “unified canvas” feature (in our OSS UI) where this would make sense. If you’re interested in partnering on that, don’t hesitate to reach out.
Will keep an eye on progress!

Why not trying to push the limits with MGIE since it already shows progress right off the bat.

We have a roadmap to include InstructPix2Pix and MGIE in the future iterations, but for now, we are willing to push the boundaries of all the individual modules for generative fill. This has a dirrect correspondance with the way we (/w @ritwikraha) thought about the project in the initial phase. We did not want to implement a paper here, rather wanted to have fun with different modules, stumble upon some problems and learn what works and what does not.

That is admirable. But I think there’s some misunderstanding here. I am not asking to implement a paper. I am simply asking to see if it’s possible to achieve what you’re envisioning with the existing checkpoints of MGIE and InstructPix2Pix because these simplify the pipeline, thereby also reducing the latency. Furthermore, these were trained particularly for image editing with natural language constructs.
Your current workflow will always suffer from a complexity (both conceptual and speed) introduced by the number of modules you are introducing to it. In a way, this is still leveraging existing modules which you are collating together rather than implementing them from scratch.
I think both the above approaches have merits and demerits. At the end, I think it’s a good plan to show different approaches, their outputs, their compute costs, etc. so that the project becomes a little more actionable and extensible to the community.
Hope that clarifies things ✌

@sayakpaul that does clarify a lot!
Thanks for the detailed reply.


PPO2 using observation space Box and Discrete [question]

So I'm trying to train an algorithm on a board game.
As observation space I would like to return the current positions of all pieces(Box) and the turn number(Discrete), as the game ends after a maximum of 60 turns. After trying Tuple and Dict space and both returning 'not implemented' I just don't know how to proceed. The only idea I came up with was using a MultiDiscrete with the first 100 fields being the game board(10x10) and the last one the current turn.
Now my question:
Is there any more elegant way of doing this?

Hello,

would like to return the current positions of all pieces(Box) and the turn number(Discrete), as the game ends after a maximum of 60 turns.

I think the easiest solution is to use box for your observation space (concatenate the current positions of all pieces and the turn number). Here, you don't need to transform your turn number to a one-hot vector because you can compare different values (e.g. turn 10 is after turn 9, which after turn 5, ...). If your discrete observation was not comparable (e.g. each int represent an item), then you would have to create a one hot vector.
Also related: #107 #133

Thanks for your very quick reply, but being german I dont understand you 100%.
What would the observation space definition look like? Right now without the turn I have:
self.observation_space = spaces.Box(-17, 16, (10, 10), dtype=np.int8)

You can flatten everything in one dim, so here you will have a vector of shape (100,) and then you add the turn number, you get a vector of shape (101,).
Note: you can define the limits (low/high) of the space using a numpy array too: https://github.com/openai/gym/blob/master/gym/spaces/box.py#L20

Yes they are ints like 1, 2, 3, 4, 5... up to 16(inclusive) and the same down to -16. OK so Im going to use a multidiscrete then. But when I tried it once I came to the conclusion that I can't set a min, which is 0 by default. So should I just map -16 to like 20 and then -15 --> 21? Sry for all the questions, but I'm completely new to RL.

So should I just map -16 to like 20 and then -15 --> 21?

I'm not sure to understand what you meant...
Anyway, if you want to have only positive ints starting at 0, you can do pos + 15, so your observations lies in [[0, 32]] (even though 16 will never appear).

Yeah, id love to have negative ints but I dont know how to define that. Multi discrepte does not offer negative values, does it?
Btw. Thanks for your great help, Im feeling really welcomed by the community!

Yeah, id love to have negative ints but I dont know how to define that.

Internally, in your environment, you can have negative ints. However, from the algorithm point of view (what you give as input), it does change anything because you are using discrete observations.

Btw. Thanks for your great help, Im feeling really welcomed by the community!

Your welcome ;)

You can flatten everything in one dim, so here you will have a vector of shape (100,) and then you add the turn number, you get a vector of shape (101,). Note: you can define the limits (low/high) of the space using a numpy array too: https://github.com/openai/gym/blob/master/gym/spaces/box.py#L20
EDIT: Why do you have dtype=np.int8 ? you positions are also discretes ? If so, your multidiscrete solution is the right one ;)

Hello,
Please regarding this idea, how could you code the observation space such that you take 100 different samples from first interval, and 1 sample from second interval?
Thank you


Improve code coverage

bors try

bors try

bors try-

bors try

bors r+

bors r-

bors try

bors try-

bors try

bors r+


tor

Hi,
Is it possible to add a tor option to the scanner at all?
the latest sqlmap has an option for it and could not see an option for  socks proxy on the addon.

There is a proxy option at the bottom of the tool.  I guess you could probably use the plugin to proxy through Burp, and then chain Burp through a Tor proxy.  That is ugly but probably the only way to do it at this time.
I will look into specifically adding the tor features from sqlmap.

I added tor support with the last commit: https://github.com/codewatchorg/sqlipy/commit/638218937416fa6345cdc1b4b173a82604ab1f6a


fix(docs): typo in FAQ

Description
Fixes a typo in the FAQ section.
Additional context

What is the purpose of this pull request?

[ ] Bug fix
[ ] New Feature
[X] Documentation update
[ ] Other

Before submitting the PR, please make sure you do the following

[X] Read the Contributing Guidelines.
[X] Follow the Style Guide.
[X] Check that there isn't already a PR that solves the problem the same way to avoid creating a duplicate.
[X] Provide a description in this PR that addresses what the PR is solving, or reference the issue that it solves (e.g. fixes #123).

Legend, nice spot. Thank you!


Release Prep Workflow

Add workflow to kick off the release process and prepare to build artifacts.
Release Prep Workflow
Inputs

commit sha to release
version number of release (ie 1.2.3rc1)
target branch for release (ie. 1.2.latest)

Outputs

final sha - the sha will change after the changelog/version bump
changelog_path - this changes for every release so figure it out once and pass it around

Workflow Steps

Check if changelog exists for this release, if it does skip generating a new one.  Pass out the dynamic changelog path here too.
Check if version is already bumped. If it is skip bumping the version
If Changelog exists and version is bumped, pass out the sha and be done
Create a new branch for the changelog and/or version bump
Install changie
Run changie to generate changelog for the release.  Run the appropriate command for if this is a pre-release or not.
Bump the version
Run unit/functional tests
Merge version bump and changelog to target branch if tests all pass
Capture the commit sha and pass it out

Testing
Create a branch in test-github-actions with pending changelogs and needing a version bump.  Have a special target branch we can check for the values?
Open Questions

Is this the right repo?  Maybe dbt-labs/dbt-release is more appropriate?
Do tests in core and adapters run the same way?  Can it be generalized/automated in this workflow?

Resolved by contractor work


feat: MutSmiXAttention models-pipelines-datasets-test

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

18 of 18 (100.0%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+2.2%) to 95.273%

Totals

Change from base Build<PHONE_NUMBER>:
2.2%

Covered Lines:
262

Relevant Lines:
275

💛  - Coveralls


Update insightsmetrics.md

Have added a description to this page as it doesn't contain context

Please review and approve

@rboucher
I think the proposed change updates an auto-gen file. Can you submit a fix for the source? Or can the change be merged in this PR?
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

Hi @BillClarksonAntill thanks for pointing this out.
This article is automatically produced using the logs API. We have asked the developers to make the required change in the manifest file.
#please-close


Add RGB (256/Truecolor) support

Finally closes #73.
References #20, #35, #37, #57, #87, #126. We know some of you have been waiting for this one for a very long time.
This PR is blocked by a few remaining issues over at supports-color. @sindresorhus has promised me he will take a look at those and make some executive decisions within the coming week. After they are resolved, its version will be bumped in this PR and, pending approval from the community, this will be merged and released.
This is an additive release - however, please see the breaking changes section below for a reason why it's a major release.
This adds two new suites of chalk-able modes:

Foreground RGB colors using color-convert models as names (e.g. chalk.rgb(123, 45, 67) or chalk.keyword('orange'))
Background RGB colors, similar to the foreground colors above but with a camel-cased bg prefix, (e.g. chalk.bgRgb(123, 45, 67) or chalk.bgKeyword('orange'))

All RGB color functions in turn return your usual chalk builder. Some examples:

chalk.hex('#DEADED').underline('Hello, world!')
chalk.keyword('orange')('Some orange text')
chalk.rgb(15, 100, 204).inverse('Hello!')

This is per @silverwind's suggestion in #73, which we agreed is the most intuitive way to approach this API.

This module now requires Node.js 4 or above. This is why it is a major release bump.
The only potentially API-related breaking changes is if you use Chalk's .enabled property, you'll need to replace it with .level, which is now an integer (where 0 indicates not enabled and anything >= 1 indicates enabled, and further, one of several levels of color granularity).
As well, if you're passing an option to chalk to forcefully set whether or not it's enabled, you'll need to change:

{enabled: false} -> {level: 0}, or
{enabled: true} -> {level: 1} (or whatever level you'd like - level 1 is equivalent to Chalk's current level of support).

The levels, as described in supports-color, are:

Disabled
16 colors (basic color)
256 colors (most widely supported mode in terminals that support more than 16 colors)
16 million colors ("truecolor") - be sure to check if your emulator supports Truecolor codes

Please don't hesitate to give me feedback on the new API.
Thanks for everyone's continued patience - let this be a celebration of some of the first OSS contributions I made here on Github, and let it serve as a relic of some of the great connections I've made through it. 🦄

cc @sindresorhus @jbnicolai @dthree @silverwind @stevemao @arthurvr @mikeerickson @rektide @mattbasta, as well as @XVilka (Thank you for your research on support! It has proven invaluable in many ways.)
Thanks everyone!

Great work, @Qix-!

Thank you -- and thank you for all of the valuable feedback, as always!

@Qix- Any eta when this will be merged?  Or, is there a branch/tag which I could start using right now?  I have been waiting for this for quite some time :-)

@mikeerickson npm i chalk/chalk#256-truecolor :)

@Qix- Fantastic!

@Qix- There seems to be an issue with ansi-styles (webpack UglifyJs throws an issue)
Here is what I am seeing (see the malformed ES6 arrow function)
ansi-styles/index.js has a number of these errors
const wrapAnsi16 = (fn, offset) => function () {
	const code = fn.apply(colorConvert, arguments);
	return `\u001B[${code + offset}m`;
};

@Qix- Seems as though this issue was introduced in ansi-styles 3.0
If I revert back to what is installed by chalk 1.1.3 it will use ansi-styles 2.2.1

It's not malformed; it's a lambda that returns a lambda. Not sure when that got changed but it's valid. What's the error message? Note that you need Node >= 4 or you need to babel it.

I am using Node 6.8.1
Webpack fails whe Uglify ( -p ) throwing error at invalid token ( > ) on the ansi16 call outlined above
If I completely remove chalk (which removes ansi-styles) and reinstall chalk 1.1.3
Then install the version you outlined, all works.
However, if I then remove node_modules and reinstall, ansi-styles 3.0 is installed and webpack again fails

@qix sorry to be sort of sparse, replying from phone

@qix and I am using babel (via babel-loader in webpack)

What exactly is the error message being produced? And what can I do to reproduce it on my end?

@qix I will try and create a small reproducible example.

@Qix- OK, I have created a reproducible archive and will post the repo shortly.

@Qix- OK, here you go.  Here is a repo which outlines the issue
https://github.com/mikeerickson/chalk-test

@mikeerickson Thank you very much - I can reproduce. It's an UglifyJS bug where it doesn't quite fully support ES6 yet. Check out mishoo/UglifyJS2#448.

@mikeerickson Run this:
rm -rf node_modules
npm i
find node_modules -type d | grep uglify-js | xargs rm -rf
patch ./node_modules/webpack/package.json <<EOF
70c70
<     "uglify-js": "~2.7.3",
---
>     "uglify-js": "mishoo/UglifyJS2#harmony",
EOF
npm i
npm i chalk/chalk#256-truecolor
node ./index.js
npm run build

What a shame that we still don't have a ES6 minifier at this day and age 😢.

@silverwind https://github.com/babel/babili

Hello, this is wonderful, but is the PR abandoned?
Or do you need any help in bringing it further?

I'm looking forward to this one too; is this still in the works?

@sindresorhus ping?
Also, +1 for babili - been using it pretty religiously, and while it's quite slow, it's effective and does a perfect job.

Yay! At last. Thanks for working on this @Qix-. Sorry about the delay everyone.

🎉  Great work @Qix-

<3 Thanks everyone


add ulp dactyl and single pcbs

Hey thanks a lot for your repo, without your references I probably wouldn't have made my dactyl 🚀. I've added it, maybe someone finds it helpful to build their own :)

Hey @jonboh huge thanks for the contribution, it's greatly appreciated.
Your project is one of a kind that's for sure and it definitely should be mentioned here. Thanks!
Looking at the new PCB section I wonder, would it be better to make it part of the Projects section? My suggestion is:

Add ### Keyboard Builds third-level header in the Projects section and put existing projects there
Add ### Custom Components and Techniques and move the project by Magnus as well as your amoeba-loke project there

How does it sound? If you want me to do it, just let me know.

Yeah, better classified like that :)

Awesome, thanks a lot for the contribution!


How add argument to a flow (tab)

Hello,
It is possible to add argument to a flow (tab) ?
There is name, status and description. But i like to add other argument.
Thx.

Hi, thanks for raising an issue.
The issue template you would have seen when you created this issue describes our contribution guidelines.
You'll see we prefer to handle how-to type questions on the mailing list, slack team or you could ask a question on Stack Overflow and tag it node-red. That way the whole Node-RED user community can help, rather than rely on the core development team.
You'll also need to add a bit more detail to your question for us to understand what you are trying to do. In short, no, you cannot add custom properties to a flow. If you want to explain a bit more about what you want to achieve, there may be alternative approaches available.
Thanks!


Reuse unfinished controller docs?

https://github.com/substance/substance/commit/1e9f90ee461fc6ef6bc2cd477fd41c5fa59c97e9
We could maybe incorporate this old attempt into the Controller class jsDoc documentation.

Done.


Setup AWS Organization and give access to backend devs

Looks like an AWS organization is an overkill for what we are trying to do. Just a simple IAM role should be fine for our usage.

Closing this as no longer needed.


Canvas should be used with "caution"

As someone with a bit of experience using FlashCanvas spending a number of hours tracing through Actionscript, I'm on the fence as to whether or not canvas should be classified as "use" or "caution". It isn't a drop-in polyfill that's going to transparently produce the kind of results we typically expect from most polyfills. FlashCanvas, in my experience, handles basic shapes and simple animations just fine. But as soon as you take it outside of it's narrow comfort zone, it falls apart.
Also, I should note, the author of the project states that FlashCanvas' does fairly well when put up against this test suite, which it does. However, where FlashCanvas often fails is when you actually throw it into a real-world situation where we're performing a several operations on the canvas at once (like a globalCompositionOperation after a drawImage).
For example, see the limitations with the drawImage method here: https://groups.google.com/group/flashcanvas/browse_thread/thread/a16eea741872b085/d0e66cc44b1441c6
Awhile back, I created a demo to test performance in IE: http://bentruyman.com/lab/canvas/dyo/
I apologize I don't have a more complex example to prove my point. :(
tl;dr Without a better alternative than FlashCanvas, I'd say this one should be classified as "caution".

You bring up an interesting point regarding Canvas. If we're talking about purely reasons why a polyfill would be given cautionary status, I completely agree  - FlashCanvas doesn't work as well as expected when you're doing anything non-trivial.
Canvas as a feature however, I think deserves a slightly higher status. It's supported well in all modern browsers and we've seen many games and visualization studios do complex Flash-level work demonstrating how far we can take it. The limiting factor would really be oldIE.
I guess it's a balance between:

How much do we want to encourage people to start using the hotness in modern browsers?
How much should this be weighed against IE support and the performance of available polyfills?

Unless it's used for simple purposes like basic shapes/motion or something like charts/graphs, it's hard to argue any decent polyfill will satisfy the need of most developers given the capabilities of a real canvas. I'd doubt either FlashCanvas or ExplorerCanvas would be able to support any of these compelling uses of canvas we've seen with regards to gaming, for example. If they could, I think we would have seen it by now.
My opinion on the use of canvas is: either you use it natively, or you don't use it at all. I think its use should certainly be encouraged (because it's awesomesauce), but it just isn't feasible to have it work consistently for old IE even with polyfills.
Admittedly, I am coming at this from the perspective of someone who works at an agency with clients who have less than desirable IE requirements. ;)


remove hardcoded history

I believe, this is part of the #13 , which is not finished atm

yes, it's part of the #13

done here: https://github.com/deora-earth/voting-frontend/pull/115


Only SHA-1 SSL hashing is supported

Coinpunk does not support SHA256 or higher hashing methods - only SHA-1 is supported. "crypto.createHash('sha1')" is hardcoded throughout source, however a global replace towards a stronger algorithm results in a client connection failure and no error message logged.
SHA-1 is considered deprecated and certain browsers already display warnings when connecting to a SHA-1-hashed site. For example: http://googleonlinesecurity.blogspot.co.uk/2014/09/gradually-sunsetting-sha-1.html
Please support SHA-256 or SHA-512 hashing via config file.

Is this project still being developed?

Not really, no. Feel free to take it over if you like.
On Fri, Mar 20, 2015 at 2:10 PM, rmyadsk<EMAIL_ADDRESS>wrote:

Is this project still being developed?
—
Reply to this email directly or view it on GitHub
https://github.com/kyledrake/coinpunk/issues/179#issuecomment-84148067.


Unsubcribe email

Important
It does not enforce the modal on first view to keep the intro modal flow. This is easily changed but we may have to discuss it further.
For example another option is to open the modal after the first successful bid
We also need a copy for the unsubscribe page:

Instead of getting the email address from the state what if we use a param which is easy to link from the email and works even if the user lost the current state =><EMAIL_ADDRESS>Then when we send the signature we do message => address => email === url.email ?
What do you think?

Instead of getting the email address from the state what if we use a param which is easy to link from the email and works even if the user lost the current state =><EMAIL_ADDRESS>
I actually implemented it like that first, but because the user needs to use metamask to sign the unsubscription I thought it doesn't make sense to have a query string parameter that can be meddled with.
The current handleEmailUnsubscribeNewsletter only uses information that gets from the server, that in turn gets from MetaMask so I think it's a bit more secure no?

There's a small typo: recieve => receive

fixing

What do you think if we make the checkbox clickable? I instinctively tried to click a button to close the modal

Yes!

I also managed to insert an email of the format ab@g without a proper domain name

Hm you think we need to validate for mainstream providers? I didn't thought of that because we already have the confirmation email (don't we? :P)

Updated!

I also managed to insert an email of the format ab@g without a proper domain name
Hm you think we need to validate for mainstream providers? I didn't thought of that because we already have the confirmation email (don't we? :P)

I think it will be rejected by the email provider as an invalid address

Instead of getting the email address from the state what if we use a param which is easy to link from the email and works even if the user lost the current state =><EMAIL_ADDRESS>I actually implemented it like that first, but because the user needs to use metamask to sign the unsubscription I thought it doesn't make sense to have a query string parameter that can be meddled with.
The current handleEmailUnsubscribeNewsletter only uses information that gets from the server, that in turn gets from MetaMask so I think it's a bit more secure no?

What I tried to mean with the comment is that if the user clicks on the unsubscribe email and gets to the app, they lost their state but they have Metamask, they won't be able to unsubscribe. Is that correct?

Updated!

It's ok, good to go!

Yep!


Why swipe was removed from BottomTabNavigator?

It's breaking change for some apps and, surely, it could be workarounded in a hacky way by using createMaterialTopTabNavigator and setting tabBarPosition: 'bottom', but I'm just curious:
what was the reason for removing swipe?
I'm asking in order to understand what is the strategy and what to expect in future releases.

Would like to know aswell :)

I think the reason was it never was there. createMaterialTopTabNavigator main feature is to allow to lazy load components tabs, and I don't think it can be done if the horizontal swapping is enabled.

This is a completely different package (material bottom tabs) and your issue is irrelevant to this package. Your issue belongs to the react-navigation-tabs repo. But since you have opened the issue, I'll just answer it here anyway:
Most of the design guidelines discourage swipe on bottom tabs. I have never seen swipeable tabs for the bottom tabs, so it suffices to say it's extremely uncommon and users don't expect it. Removing it also simplified a lot of code which makes maintaining it easier as well as allowed us to add features such as lazy loading and resource saving which will never work well with swipeable tabs. That's why it was removed.
You shouldn't be adding a swipe gesture for bottom tabs if you want to provide a consistent UX. Tough, you can still build swipeable bottom tabs using the tabBarPosition prop though. It's in no way hacky, there's an officially supported prop, why would it be hacky?
Regarding breaking changes, react-navigation-tabs is a completely new package. The API is similar, but not the same. It's not guaranteed to be a straightforward migration. That's why React Navigation still exposes methods for the previous API which you can use if you're not ready to migrate.