WIP: convert transform coefficients to and from a single n-dimensional array

This is an attempt to provide a feature requested in #166 where it was desired to have a utility to concatenate a set of multilevel wavelet coefficients into a single array as is commonly used for signal and image processing algorithms.
The proposed functions are compatible with wavedecn and waverecn.  Unfortunately wavedec and wavedec2 don't have quite the same output format, but the function could potentially be modified to work for those as well (although I am not sure how you would know which coefficient format to transform back to when going in the reverse direction).
2D example:
import pywt
from matplotlib import pyplot as plt

cam = pywt.data.camera()
coeffs = pywt.wavedecn(cam, wavelet='db2', level=2)
arr, a0_shape, d_shapes = pywt.coeffs_to_array(coeffs)

plt.figure();
plt.imshow(arr, interpolation='nearest', cmap=plt.cm.gray)

# can reform to a format compatible with waverecn
coeffs_reformed = pywt.array_to_coeffs(arr, a0_shape, d_shapes)
cam_recon = pywt.waverecn(coeffs_reformed, wavelet='db2')

As far as I can tell, this seems to be working for all wavelets and modes and for odd or even sized inputs (verified via round-trip tests).  I don't particularly like needing to pass around the arrays of coefficient shapes (a0_shape, d_shapes), but I couldn't see how else to get the sizes right in the general case.

Items mentioned in #166 we should implement:

Add optional argument for formats compatible with wavedec2 and wavedec. It looks like this requires another pair of helper functions, coeffs_to_nd and coeffs_from_nd
Use user-defined padding value
Add checks if the lengths of the detail coeffs is not constant
Add checks for odd sizes that removes information when using coeffs_to_array. We should probably raise a ValueError for this.
Check if coeff is None (and decide what to do; throw error or fill with zero)

@stsievert
sure.  are you interested in working on any these?  If so, let me know and feel free to submit a PR against my branch.
For items 3/4:  The size of the detail coefficients do not necessarily match in the present implementation, but no information is being lost.  Instead of cropping to generate a tight packing, there are just some small regions of zero padding for cases > 1D (this is what I think @kwohlfahrt meant by "not tightly packed").
Actually this is even true for the example above.  Here is a binary mask showing where the zeros occur in the combined coefficient array:

I think the only cases that produce a tight packing are the following:

mode = periodization for any wavelet
wavelets with a filter of length 2 for any mode  ('db1', 'haar', 'rbio1.1', 'bior1.1')

For those specific cases with tight packing, if the input has even size on all dimensions, the shape of the concatenated coefficient array will exactly match the shape of the input.

I have replaced the separate a0_shape and  d_shapes variables with a single variable called coeff_slices that exactly matches the structure of the original coefficient list returned by wavedecn except rather than storing the original coefficient arrays, it stores slice objects that would extract those arrays from the concatenated coefficient array returned by coeffs_to_array.
I think this is likely to be much more generally useful than the previous list of shapes that were being returned.  It also substantially simplified the implementation for array_to_coeffs.

@stsievert , @kwohlfahrt :  Is there really a need to have an option for a user-defined padding?  I think this meets my use cases as is.  No information is lost for any of the cases, it is just that the packing is not always tight except for the 1D cases or the specific n-dimensional cases I listed above.

I don't know if it's necessary, this isn't a feature I use. But it seems the option to error if the coefficients can't be tightly packed would be useful, and having an option for padding (with the error raised if it was None) seems like a natural way to do it (and easy to do by using numpy.full instead of numpy.zeros). But I'm not particularly attached to that.

I've forked and tested. Using the test below, I ran into issues with wavedec2 -- np.allclose(x, x_hat) failed.
def test_wavelet(wavelet, f='wavedecn', N=1e3):
    # params is dictionary with appropriate shapes/functions
    x = np.random.rand(*([int(N)] * params[f][0]))
    coeffs = params[f][1](x, wavelet)
    X, shape = pywt.coeffs_to_array(coeffs)

    coeffs_reformed = pywt.array_to_coeffs(X, shape, output_format=dims)
    x_hat = params[f][2](coeffs_reformed, wavelet)

    assert np.allclose(x, x_hat)
    assert x.shape == x_hat.shape
    return x, x_hat

for wavelet in pywt.wavelist():
    for N in [200, 201]:
         for dim in ['n', '2', '']:
            # tests with odd N fail
            # tests with dim==2 fail
            x, x_hat = test_wavelet(wavelet, N=N, f='wavedec' + dim)

I will look into the failure for the 2D case.
If I bump atol in np.allclose from 1e-8 to 1e-7, all 1D and nD cases except 'dmey' pass the test provided by  @stsievert above (see shape caveat below).  The dmey wavelet requires a much more lenient atol of 1e-2 to pass, but I believe that is a known problem for that wavelet type.
The test provided by @stsievert above has to be modified when N=201 because waverec, waverec2, waverecn will reconstruct a size N=202 array.  Rounding up to even size in the output of waverec* is apparently the current behaviour of those functions and not related to this PR.  I took the following approach to crop back to the original shape in the tests proposed in this PR.
x_hat = x_hat[[slice(s) for s in x.shape]]

The problem in the 2D case was a stupid mistake  ('ad' and 'da' were swapped in _coeffs_wavedec2_to_wavedecn!).
The test didn't detect this because, I had used a uniform array of ones as input.  I updated that test to use random data for the input.

@kwohlfahrt
I made an attempt at providing a padding option.  If it is set to None, an exception is raised if tight packing is not possible.  Otherwise, np.full is used to initialize the array to the value of padding.  One potential usage might be to set the padded regions to np.nan instead of zeros.
The primary change is the addition of a _determine_coeff_array_shape utility function to predetermine the output size and whether tight packing is possible:
    # determine size of output and if tight packing is possible
    arr_shape, is_tight_packing = _determine_coeff_array_shape(coeffs)

    # preallocate output array
    if padding is None:
        if not is_tight_packing:
            raise ValueError("array coefficients cannot be tightly packed")
        coeff_arr = np.empty(arr_shape, dtype=a_coeffs.dtype)
    else:
        coeff_arr = np.full(arr_shape, padding, dtype=a_coeffs.dtype)

I'd also like to see a keyword argument added to most wavelet functions. For example,
wavlet_array = pywt.wavedecn(x, return_array=True)

This is similar to np.linalg.svd, which has an option compute_uv that determines the shape/style of the output.

numpy 1.7 is failing.  apparently np.full wasn't added until 1.8.  I can replace with padding * np.ones(...) instead
@stsievert
I am +1 on adding the return_array keyword

@grlee77: That seems... inefficient, especially for large arrays. If we need to keep compatibility with numpy 1.7 (my reference is usually debian stable, and that has 1.8), I'd suggest wrapping that in something like:
try:
  from numpy import full
except ImportError:
  def full(value, shape, dtype):
    return value * numpy.ones(shape, dtype)

I'm not a particular fan of the return_array keyword, I feel like returning different types from a function depending on its parameters is confusing in API terms. If this is added, the corresponding inverse functions should probably also support them as inputs.
What is the intended use of such arrays, apart from for displaying the coefficients? Could you provide an example? (This should perhaps be added to the feature request rather than the PR for reference). I'm trying to work out if requiring a wrapper function would be a performance bottleneck.

I am not opposed to updating to numpy 1.8, but that should probably be a separate PR.  Your full function above is a reasonable alternative too.
As far as applications, it is easier to pass a single array to a function such as pywt.threshold than build a uitility function to loop over a list of arrays and coefficient dictionaries.  Also, wavelets are a popular choice of regularizer in iterative image reconstruction algorithms.  Such algorithms often write the DWT as a linear operator that acts on a vector of image pixels and returns a vector of wavelet coefficients, so if you want to interface with a third-party algorithm, it is easier to have the output in this common format.  Within the algorithms, thresholding of the coefficients and computations of norms of the coefficients are common.
As far asreturn_array is concerned, I think it is a question of whether the convenience is worth the additional API complication.  I don't have too strong of a preference either way.  I agree that if we do go the return_array route, we would need to support it as an input format for waverecn, etc.
In terms of computation time, the coefficient array conversion seems to be an order of magnitude faster than the transform itself for 2D or 3D inputs, but only modestly faster in the 1D case.  That seems reasonable enough to me given that it is a pure python implementation:
*** on my PC for Python 3.4***:
3D shape (256x256x256):  wavedecn takes 2.5 s, and the conversion 87 ms.
2D shape (256x256): wavedecn takes 5.06 ms and the conversion takes 0.28 ms.
1D shape (256,):  wavedecn takes 0.21 ms and the conversion takes 0.14 ms.

Ah right. In my use the detail coefficients were often thresholded independently of the approximation coefficients, so I found it easier to have them separate.
I think for the scope of this PR it might be best to agree on a conversion function and implement this. It looks to me like the function argument would at most tack on some processing of the coefficients into an array at the very last step, using the array output efficiently would require some more invasive changes into _extensions (namely adding an output array parameter that can be filled directly). From a user perspective, the difference between coeffs_to_array(dwt(...)) and dwt(..., array_output=True) seems minimal.

@kwohlfahrt : agreed.  I will not implement the array_output option for now.  let me know if there is any further feedback on the conversion routine itself.
As is, it currently can achieve perfect round trip reconstruction for any wavelets and modes for any of the multilevel transforms.  This is true for both even and odd shaped inputs.
One caveat is that it does not currently work with the single level dwt, dwt2 or dwtn directly.  The changes to coeffs_to_array to support those are minimal, but adding 3 additional output_modes to array_to_coeffs complicates that routine substantially.  I am not sure it is worth it as one can always just set level=1 in the multilevel transforms if only a single level of decomposition is desired.

@kwohlfahrt @grlee77 I've also thought about the return_array option and have decided it shouldn't be for this PR. Its a bigger API change that deserves another PR.
Does coeff_to_array work for multilevel dwt/dwt2? That's why I opened this PR.

Any other comments for this one? As it has been awhile, I have summarized what is implemented below.  This is compatible with perfect round-trip recon for all wavedec*/waverec* functions.  This is verified by testing for all wavelets and both even & odd array sizes.
In summary:  The new functions coeffs_to_array and array_to_coeffs convert back and forth between the coefficient dictionary formats used by the wavedec*/waverec* functions and a single concatenated nd-array of coefficients.  In the cases where the coefficients cannot be tightly packed, the padding argument can be used to control the value to use for padding.
example of the basic usage:
# convert coeff dict to an nd array and a dict of slice indices corresponding to the separate keys of the coeffs dict
coeff_arr, coeff_slices = pywt.coeffs_to_array(coeffs, padding=np.nan)

# convert the nd-array format back to the dict format
coeffs2 = pywt.array_to_coeffs(coeff_arr, coeff_slices, output_format=f)

I have been using this regularly in the past few months without issue and would like to merge this in the not too distant future.

Looks good to me. The implementation looks a bit long and winding in places, but the API is OK and we can always do some internal refactoring later.

Okay, please feel free to merge if there are no other objections.

Can you rebase onto master? Just want to make sure everything still works after the setuptools changes. Feel free to push the button if CI passes afterwards.

[Current coverage][cc-pull] is 84.63%

Merging [#168][cc-pull] into [master][cc-base-branch] will decrease coverage by 0.17%

@@             master       #168   diff @@
==========================================
  Files            17         17
  Lines          2047       2154   +107
  Methods           0          0
  Messages          0          0
  Branches        208        242    +34
==========================================
+ Hits           1736       1823    +87
- Misses          251        262    +11
- Partials         60         69     +9

Powered by Codecov. Last updated by [2af1e46...398a150][cc-compare]
[cc-base-branch]: https://codecov.io/gh/PyWavelets/pywt/branch/master?src=pr
[cc-compare]: https://codecov.io/gh/PyWavelets/pywt/compare/2af1e46a1396f1c10a7f34e83f0439c105a49073...398a1503e49aba74f5f2c6bbe6f6507855c9812a
[cc-pull]: https://codecov.io/gh/PyWavelets/pywt/pull/168?src=pr

Looks like all is well so I will go ahead and merge.  good to see that the test coverage PR is working as expected here too


Added pagerduty proxy option

Description
This allows people to use a proxy to reach pagerduty
Issues Resolved
Having nagios server without public internet access
Check List
Minor changed but tested locally

[ ] All tests pass. See https://github.com/chef-cookbooks/community_cookbook_documentation/blob/master/TESTING.MD
[ ] New functionality includes testing.
[ ] New functionality has been documented in the README if applicable

Note, blocked on upstream php cookbook.


Make some Experiment/Query classes abstract

Move several classes/files to TileDB-SOMA (https://github.com/single-cell-data/TileDB-SOMA/pull/3307), leave abstract interfaces here.

I pushed one more commit, explicitly tagging ExperimentAxisQuery/AxisIndexer as ABCs.
@jp-dark had suggested using Protocols last week; I'm not clear on what the advantages might be of that.

@jp-dark had suggested using Protocols last week; I'm not clear on what the advantages might be of that.

@ryan-williams I think the suggestion has merit but I'd prefer to take it as follow-on work and not let it block this current PR.


Loss turns into 'nan' when cuda is True

Hi,
I have used train.py for many times, and I had no issues. However, now when I use train.py, loss is always nan if cuda is True. I think the problem is on my laptop, so any idea how to solve this issue.
Thanks

Hi, have you set dealwith_lossnone = True in params.py. It's used to solve this problem.

Yes, I did set 'dealwith_lossnone = True' , but I am still getting Loss nan.

Hi, can you try to commit the following in model/crnn.py
        # replace all nan/inf in gradients to zero
        if params.dealwith_lossnone:
            self.register_backward_hook(self.backward_hook)

and add this to train.py. NOTE THE LOCATION!
if params.cuda and torch.cuda.is_available():
    crnn.cuda()
    if params.multi_gpu:
        crnn = torch.nn.DataParallel(crnn, device_ids=range(params.ngpu))
    image = image.cuda()
    criterion = criterion.cuda()
image = Variable(image)
text = Variable(text)
length = Variable(length)

# new ----------------------------------------------------
if params.dealwith_lossnone:
    crnn.register_backward_hook(crnn.backward_hook)
# new ----------------------------------------------------

# loss averager
loss_avg = utils.averager()

Thank you for your help, but the loss still nan.

Hello, have you solved the problem yet? I met the same issue with you.

Hi, please try to replace the train.py and model/crnn.py with the file in the zip folder. There are many people meet the same problem.

https://github.com/pytorch/pytorch/issues/14401
https://github.com/pytorch/pytorch/issues/14335

mayfix.zip

Thanks for your quick reply. I have replaced the file in the zip folder, but the issue hasn't solved yet. I learned the code you provided in the zip folder, and noticed the register_backward_hook section you have added. Now, i think maybe there is something wrong with my training dataset. So i have a question how to judge a picture is dity or not.

Can you give me an example of the dity picture.

@Holmeyoung I am sorry i haven't find the dirty picture yet. I have located a range. Thank you for your kindness. If i have any more questions, i will ask you.

I am sorry to hear that @niddal-imam . Many people meet this problem when using pytorch, so i am also confused what's the problem. But there actually exists a bug in pytorch ctcloss, anyway, i am really sorry can't solve it for you all.

Hi, please try the latest code, and i think i have fixed it, thank you~~~

Hey @Holmeyoung ..
I'm using the latest version of the repo and am still facing the issue..
Is there a way to correct it?


Possible bug when calling a fetch POST request from child with a file as the payload

I am passing my zoid child component a set of wrapper functions as props so that the child can invoke API requests from the parent.
If I call window.xprops.post('url', {'foo': 'bar'}) and log the 2nd argument to the post function in the parent component, it will log {'foo': 'bar'}. Great! However, if I add a file uploader to the child and pass the file to the exact same function and log the 2nd argument, it simply logs an empty object {}. I've examined the file within the child every way I know how and tried to package it every way I know how before passing it to the prop method, but by the time we're in the parent's namespace, the file is just gone. Help! :/
Pseudo-code (parent is a React component FWIW):
Parent:
const post = (url, data) => {
  console.log(data);
  // send a post request to our endpoint
}

<ZoidComponent post={post} />

child:
window.xprops.post('url', {'foo': 'bar'}); // logs {'foo': 'bar'}
/* get a file from <input type=file /> and make sure it's there */
window.xprops.post('url', file); // logs {}

Can you serialize the file as a string before sending it? Typically zoid can only pass data which can be json-stringified, with a few exceptions.

@bluepnume I was doing some reading about the postMessage API (which I imagine is what you're using under the hood) and the transfer argument (the third argument to the function) will accept an ArrayBuffer. Would it be possible to have zoid convert the file object to an ArrayBuffer and then pass it to the parent as the third argument in the postMessage instead of having to string serialize?

Seems like the change would have to be made to the underlying post-robot library you built. Would you be open to me forking the repo and trying to intercept the file, converting it to an ArrayBuffer before putting it in the postMessage, then turning it back into a file on the other side so it can be a straight file-in/file-out type of functionality? I'm not sure how feasible this is, but I wouldn't mind taking a stab at it.

I'm open to it -- but one thing to bear in mind is, the serializer in post-robot is also used to construct the initial window name in zoid, with any initial props that are passed down:
https://github.com/krakenjs/zoid/blob/master/src/parent/index.js#L260
That window name has to be a string. So we'd need to think about how to deal with that somehow. (Potentially the solution is just erroring out when someone tries to pass an arraybuffer in the initial props... but that does break some of the uniformity of initial props and subsequent messages)


Html colors

Change Summary
Color validator add, unit tests and docs updated.
Related issue number
#504

Checklist

[x] Unit tests for the changes exist
[x] Tests pass on CI and coverage remains at 100%
[x] Documentation reflects the changes where applicable
[x] HISTORY.rst has been updated

if this is the first change since a release, please add a new section
include the issue number or this pull request number #<number>
include your github username @<whomever>

I hope I've implemented everything we discussed in #504. There were some minor digressions since we had decided not to tackle alpha blending (I've added a warning section in documentation).
One thing I didn't do intentionally is Schema as I personally don't use it and have no experience in it. May be it's better to open a new issue for Color schema if needed @samuelcolvin @tiangolo

If you're happy to work on all these that's great, but if not I'm very happy to do some work on this PR too

I'd be happy to work on all these thigs you've found if you don't mind!

:+1: great, that's what I hoped, just didn't want to ask too much of you.

@samuelcolvin I think I'm done with all the fixes after the code review

I hope I've implemented everything we discussed in #504. There were some minor digressions since we had decided not to tackle alpha blending (I've added a warning section in documentation).
One thing I didn't do intentionally is Schema as I personally don't use it and have no experience in it. May be it's better to open a new issue for Color schema if needed @samuelcolvin @tiangolo

@pilosus Yep, I think it makes sense to have it as an additional issue/feature request.

Thanks so much for this @pilosus. In the end I had quite a few things I wanted to changed about this, both in terms of how the internals and end user functionality.
I thought about many more comments on your PR and committing directly to it, but in the end I decided to implement my changes as a new PR, please see #516. Please continue the discussion there if you have any comments.

Well, it's been completely rewritten, unittests included. I don't think I have any comments for completely different implementation.

Well, I used some of your code, but yes; there were some problems that required it to be rewritten - the end result looks quite different.
Thanks again for your contribution.


[feature] Parallelize list-roles

Listing roles and alias across a bunch of accounts was getting slow and making our webserver take a long time to boot. Parallelized that work.
Note that I added a mutex to protect the map we're aggregating to. At some point we should refactor this logic to clean that up, but feels ok to keep as-is for now.

Codecov Report

Merging #47 into master will decrease coverage by 1.00%.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##           master      #47      +/-   ##
==========================================
- Coverage   46.84%   45.84%   -1.01%
==========================================
  Files          12       12
  Lines         730      746      +16
==========================================
  Hits          342      342
- Misses        353      369      +16
  Partials       35       35

Impacted Files
Coverage Δ

pkg/aws_config_server/assemble_config.go
25.35% <0.00%> (-7.38%)
:arrow_down:

Continue to review full report at Codecov.

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


Do a label / category inventory

Give the categories meaningful names.
Inventory the labels we have in our repositories and ensure the ones that are global are configured here.
Ensure the labels are grouped in categories as desired.
Run to generate labels / update label colors on figgy, dpul, pulmap, pulfalight, and lae

Labels I believe are local "feature area" labels
make all of these black?
Figgy

ephemera, A548AC
ingest, b4e051
pudl, ce0893
pudl-isilon, 075BD0
serials, d4c5f9
virtual-reading-room, bfdadc
ingest issues (figgy), 000000: kim uses this one

Pulfalight

archivesspace, d4c5f9
finding-aid-structure, f47449

Pulmap

GeoWorks, ededed
beta (pulmap), 0052cc
Redesign (pulmap), fbca04

Global labels categorized
some of these are in labels.json already and some are not -- all are used in at least one repo
priority (bright red?)

priority: critical (figgy, dpul), cc317c
priority: high (figgy, dpul), cc317c
security (all), fc2929

blocked (dark red?)

po-review (figgy, dpul), cc317c

product-owner (pulfalight), c2e0c6

question (all), cc317c

needs-more-information (figgy), cc317c -- propose we delete since we use inbox

replication-needed (all), cc317c
blocked (dpul, pulfalight), ff0000 d73a4a

source

honeybadger (figgy), 000000 fbca04 bfdadc
user-request (all), fbca04

type of work

bug (all), fc2929
enhancement (all), 84b6eb
feature (all), b4e051

size

small (figgy), fbca04
spike (all), cc317c
learning-friendly (pulmap, more), C2E0C6
epic (many), 5319e7 or 3E4B9E

status

wishlist (figgy), 1D378A
wontfix (all), ffffff

board

On Deck (pulfalight), b4e051
work-cycle, b4e051
maintenance / research, b4e051

category of work -- or make this 3 categories like tasks / frontend / backend

cleanup (all), ffd4a0
dependencies (figgy all had this), 0366d6
documentation (all), 41d6c3
refactor (all), 44cec0
accessibility (all), ffa573
content (all), ffa573
responsive (all), ffa573
user experience (all), ffa573

usability (pulfalight), eae864

usability-test (all), cc317c
visual design (all), ffa573
wireframe (pulfalight), c2e0c6
infrastructure, b4e051
javascript (figgy, etc), 168700 -- is this useful?
optimization (all), 41d6c3
database (dpul), 0366d6
index (dpul), 0366d6

solr, ead69a
indexing (pulfalight), 000000

backend (pulmap), c7def8 -- is this useful?

I made the name changes proposed in the comment above.


build more dockers & slack fails

What does this PR do?
these images are needed for and used in Tutorials
Does your PR introduce any breaking changes? If yes, please list them.

Before submitting

[ ] Was this discussed/approved via a GitHub issue? (not for typos and docs)
[x] Did you read the contributor guideline, Pull Request section?
[x] Did you make sure your PR does only one thing, instead of bundling different changes together?
[ ] Did you make sure to update the documentation with your changes? (if necessary)
[ ] Did you write any new necessary tests? (not for typos and docs)
[ ] Did you verify new and existing tests pass locally with your changes?
[ ] Did you list all the breaking changes introduced by this pull request?
[ ] Did you update the CHANGELOG? (not for typos, docs, test updates, or internal minor changes/refactorings)

PR review
Anyone in the community is welcome to review the PR.
Before you start reviewing make sure you have read Review guidelines. In short, see the following bullet-list:

[x] Is this pull request ready for review? (if not, please submit in draft mode)
[x] Check that all items from Before submitting are resolved
[x] Make sure the title is self-explanatory and the description concisely explains the PR
[x] Add labels and milestones (and optionally projects) to the PR so it can be classified

Did you have fun?
Make sure you had fun coding 🙃
cc @carmocca @akihironitta @borda

seems these failing tests are coming from master; not sure about the source yet... maybe @akihironitta knows?

seems these failing tests are coming from master; not sure about the source yet... maybe @akihironitta knows?

Wasn't able to reproduce the failure in our cluster. Let me look into it further.
FAILED tests/callbacks/test_pruning.py::test_pruning_callback_ddp[True-False]


Project dependency link to clojars is broken

Nice fx. I would very much like to use it :-)

When I try to use it I see the error:
filename violation for ns johnswanson.re-frame.debounce-fx,
got:      johnswanson/re_frame/bounce_fx.cljs
expected: johnswanson/re_frame/debounce_fx.cljs (or .cljc)

Looks like it would be a tiny fix to just re-name the file bounce_fx.cljs to debounce_fx.cljs. Any chance you could do this johnswanson?

For people looking for an alternative in the meantime, there's also https://github.com/7theta/re-frame-fx which has a debounce effect.


Unclear implementation of the memory barrier

The effect is comparable to but faster than the _mm_mfence intrinsic on all x64 platforms.
On the AMD64 platform, this routine generates an instruction that is a faster store fence than the sfence instruction. For time-critical code, use this intrinsic instead of _mm_sfence only on AMD64 platforms. On Intel x64 platforms, the _mm_sfence instruction is faster.

Is it possible to clarify what is the actual x64 instruction that this function generates?

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

ID: 233c421f-3875-6280-a549-5ffd471ddaca
Version Independent ID: 50b879eb-145b-6fdb-877e-325e706d875b
Content: __faststorefence
Content Source: docs/intrinsics/faststorefence.md
Product: visual-cpp
Technology: cpp-tools
GitHub Login: @corob-msft
Microsoft Alias: corob

@I-gor-C
Thanks for the question. I'm inclined toward answering no on the issue of clarification. Being specific leads to being wrong when the compiler innards change. It's rare for intrinsics, but it happens. As a result, we tend to stick to general descriptions for the implementation of intrinsics where possible.
It's fairly easy to find out the actual instructions generated for any given intrinsic. Both the /FAs compiler option and the Compiler Explorer online compiler will report the instructions generated by the intrinsics. The latter shows the x64 instruction output by __faststorefence(); as lock or DWORD PTR [rsp], 0. I'm not sufficiently versed in the arcana of the x64 instruction set cycle counts to know why that might be faster than an sfence or mfence opcode on a given platform.


remove suspended load; set page indicators with js

@twinge
suspended load was causing problems with cap in some situations.. it
would get stuck at true, and make no pages load after that. I looked and
didn't find anything obviously wrong, so I think instead we should just
remove it.  At an earlier change, I fixed the double loading, so I'm
pretty sure we don't ever need suspended load.    Having a state where no pages can load
is high risk, so if it's not necessary I think we should get rid of it.
Also made the page validation trigger to update only the page link
completion classes (complete/incomplete) using JS.  This provides more
immediate feedback of a completed page, rather than waiting for an ajax
update.

:+1:


Framework task

Create your own custom tasks with Custom Task Creator!
You can make your own custom tasks using the TaskCreator (https://github.com/gaucho-matrero/Altoclef-TaskCreator). Then, you can load these tasks into altoclef using your own custom prefix (default is @custom).
How it works.
1. Use the creator to make a set of tasks
2.  Save the file as "CustomTasks.json" in the same config folder as beatminecraft
3. run @
If you experience issues with the GUI, please submit the issue reports on this repo (https://github.com/gaucho-matrero/Altoclef-TaskCreator). If the problem happens inside altoclef, submit it on this repo.

Forgot I also fixed equip command here. Should keep it though

This should work now, so I am merging it and releasing the task creator to go with it.

This also fixes equip command


MORE CPS POWER

without proxies to be able reach like 5-10k cps power like : https://github.com/sim0n/stress-bot

Hi, my app is currently limited by the MCProtocolLib library which I use and it is not optimized for large amounts of bots.
I may create a similar app in the future.


Bump crates

Bumped the following crates:

env_logger: 0.10.0 > 0.11.1
ethers: 0.17 > 2.0.11
http: 0.2.9 > 1.0.0
tokio-tungstenite : 0.20.0 > 0.21.0

Seems fine to me though would be good to know the reason for bumping these crates?

Mainly due to incompatibilities with ethers when trying to use it in conjunction with other libraries.


Add Panel Frontend.

🚀 Feature
Add PanelFrontend similarly to StreamlitFrontend.
Motivation
Panel and the HoloViz ecosystem provides unique and powerful features such as big data viz via DataShader, cross filtering via HoloViews, Streaming and much more.
It ties into the PyData and Jupyter Ecosystem as users can develop in notebooks and use ipywidgets. They can also develop in .py files.
This is not possible with Flask, Django, FastApi, Gradio, Dash or Streamlit.
Panel is one of the 4 most popular data app frameworks in Python with more than 400.000 downloads a month. It's especially popular in the scientific community.
Panel is used by for example Rapids to power CuxFilter, a CuDF based big data viz framework.
An added benefit of adding a Panel Frontend is that afterwards supporting a BokehFrontend is almost copy paste.
Pitch
I can do the implementation and documentation, but would need help reviewing and similar.
I can also promote the new opportunity to the Panel community.
Alternatives
None.
Additional context
Coming soon

cc @borda

@MarcSkovMadsen
love this idea! go for it. We’ll help you land the PR once you are ready. In terms of promoting, we can put together an app or two to share with both communities.
nice idea!

@MarcSkovMadsen that’s great! Let us know if you need directions with designing this.
For awareness, at a minimum you can already run a Panel application in a LightningWork and expose it through the tab frontend. This is a good example to take inspiration from: https://ideal-bassoon-5313f557.pages.github.io/workflows/add_web_ui/dash/basic.html
The more advanced integration is subclassing the Frontend ABC https://github.com/Lightning-AI/lightning-app/blob/f2e9628f9a509fcd4516ba7f2c9d6c68e2e880ca/lightning_app/frontend/frontend.py#L8
This gives users more flexibility to interact with the state of a flow + work tree. In comparison, the previous option will only be able to access the state of the Panel Work itself.
Just a bit of orientation here, just feel free to explore, looking forward!

Thanks @lantiga
I will then start by making a PR for Panel similar to https://lightning.ai/lightning-docs/workflows/add_web_ui/dash/basic.html.
https://user-images.githubusercontent.com/42288570/174730540-3f38919f-5aca-4f35-871c-c91e6b736f40.mp4
I can get it working locally
# Source: https://github.com/Lightning-AI/lightning/blob/master/docs/source-app/workflows/build_lightning_app/from_scratch.rst
from __future__ import annotations

from typing import Callable, Dict

import lightning_app as lapp
import panel as pn

ACCENT = "#792EE5"

def page1():
        pn.extension(sizing_mode="stretch_width")

        info = """
        **[Panel](https://panel.holoviz.org/)** and the [HoloViz](https://holoviz.org/) ecosystem provides unique and powerful features such as big data viz via [DataShader](https://datashader.org/), easy cross filtering via [HoloViews](https://holoviews.org/), streaming and much more.

        Panel works with the tools you know and love ❤. Panel ties into the PyData and Jupyter ecosystems as you can develop in notebooks and use ipywidgets. You can also develop in .py files.

        Panel is one of the 4 most popular data app frameworks in Python with [more than 400.000 downloads a month](https://pyviz.org/tools.html#dashboarding). It's especially popular in the scientific community.

        Panel is used by for example Rapids to power [CuxFilter](https://github.com/rapidsai/cuxfilter), a CuDF based big data viz framework.

        Panel can be deployed on your favorite server or cloud including **[lightning.ai](https://lightning.ai)**.
        """

        def lightning_string(value):
            return "# " + "⚡"*value

        lightning = pn.widgets.IntSlider(value=5, start=0, end=10, name="⚡")
        ilightning_string=pn.bind(lightning_string, value=lightning)

        component = pn.Column(info, lightning, ilightning_string,)

        template = pn.template.FastListTemplate(
            title="Panel - Introduction", accent_base_color=ACCENT, header_background=ACCENT,
            main = [component])
        return template

def page2():
        template = pn.template.FastListTemplate(title="Hello", main=[pn.pane.Markdown("hello world 2")])
        template.param.update(accent_base_color=ACCENT, header_background=ACCENT)
        return template

class LitPanelPage(lapp.LightningWork):
    def __init__(self, page: Callable[[], pn.viewable.Viewable], parallel=True, **params):
        """_summary_

        Args:
            page (Callable[[], pn.viewable.Viewable]): A function returning a Panel Viewable
            parallel (bool, optional): Whether or not to run in parallel. Defaults to True.
        """
        self._page = page

        super().__init__(parallel=parallel, **params)

    def run(self):
        pn.serve({"/": self._page}, port=self.port, address=self.host, websocket_origin="*", show=False)

    def get_tab(self, name: str) -> Dict[str, str | 'LitPanelPage']:
        """Returns a *tab* definition to be included in the layout of a LightingFlow"""
        return {"name": name, "content": self}

class LitApp(lapp.LightningFlow):
    def __init__(self):
        super().__init__()
        self.lit_panel1 = LitPanelPage(page=page1)
        self.lit_panel2 = LitPanelPage(page=page2)

    def run(self):
        self.lit_panel1.run()
        self.lit_panel2.run()

    def configure_layout(self):
        return [
            self.lit_panel1.get_tab(name="Introduction"),
            self.lit_panel2.get_tab(name="Big Data Viz"),
            self.lit_panel2.get_tab(name="Crossfiltering"),
            self.lit_panel2.get_tab(name="Streaming"),
            ]

if __name__=="__main__":
    app = lapp.LightningApp(LitApp())
    # lightning run app app.py
elif __name__.startswith("bokeh"):
    page1().servable()
    # panel serve app.py --autoreload --show

Unfortunately I am on a forced VPN where lightning.ai is blocked so I cannot login and run the app on lightning.ai. I will try to get the url whitelisted.
I any one can run the app on the cloud and share a link I would be able to view it on my mobile phone. That would be nice.

Open Questions

I set websocket_origin="*". This is to allow connections from for example <IP_ADDRESS> or lightning.ai. Is it possible to be more specific and determine the origin from some method or attribute on lapp.LightningWork?

Hi @MarcSkovMadsen, this is great!

Open Questions

I set websocket_origin="*". This is to allow connections from for example <IP_ADDRESS> or lightning.ai. Is it possible to be more specific and determine the origin from some method or attribute on lapp.LightningWork?

Great question. You can access the origin host using a constant the lightning_app package exposes:
from lightning_app.core import constants
constants.APP_SERVER_HOST

I'm going to run the app now and will share the link with you.

@MarcSkovMadsen https://01g63kmn3cp6mba0hp0zaqwgvb.litng-ai-03.litng.ai/view/Introduction

What would be the best way for me to help out here? I really would love to see official support here and am happy to contribute to make that happen.

Hi @philippjfr
Seen from the Panel perspective you could 1) Check out the status list I've added to the initial post 2) Explore the repository https://github.com/marcskovmadsen/awesome-panel-lightning to get a basic understanding an try to deploy you own app 3) Think about whether we can/ should solve the "slow" first response on the Panel side. Right now I use pn.state.onload to speed up the first initial request. If its not fast the lightning.ai sends a new request and continues like the for ever.

@lantiga @tchaton can we help land this? very excited to support this integration @philippjfr!

Tomorrow I would like to try wrapping the "view" function such that the first response is light and fast and the following are given by the "view" function.

I've tried out wrapping the page function like below.
class Response():
    def __init__(self, page: Callable[[], pn.viewable.Viewable]):
        self._initial_response=True
        self._page = page

    def get(self):
        if self._initial_response:
            self._initial_response=False
            return pn.pane.HTML("
Fast Initial Response
")
        else:
            return self._page()

And this works around the problem in this issue by providing a fast enough first response @philippjfr .

I got the bokeh.application.handlers.coder_runner.CodeRunner patched. I've refactored my code into something more reuseable.
https://github.com/MarcSkovMadsen/awesome-panel-lightning/blob/6fb9588d5f4a8350dbc88ee9fc7ffaa8911aaa19/panel_lightning.py
It will send a fast first response no matter whether the page view is from a function or a file.

I'm working on the Panel Web UI Documentation here https://github.com/Lightning-AI/lightning/pull/13508

The Panel Web UI Documentation is ready for review. https://github.com/Lightning-AI/lightning/pull/13508

I have some question I need help to answer before I can contribute a PanelFrontend. See https://github.com/Lightning-AI/lightning/discussions/13523
@philippjfr you can help here by trying to run the app and suggest improvements.


add buckets

NoMeiryoUI:Ghidra is a software reverse engineering (SRE) framework
ghidra: No!! MeiryoUI is Windows system font setting tool on Windows 8.1/10.
RegExp: Registry Explorer - enhanced Registry editor/viewer

Open 1 PR per manifest


Dataframe namespaces

In #10, it's been discussed that it would be convenient if the dataframe API allows method chaining. For example:
import pandas

(pandas.read_csv('countries.csv')
       .rename(columns={'name': 'country'})
       .assign(area_km2=lambda df: df['area_m2'].astype(float) / 100)
       .query('(continent.str.lower() != "antarctica") | (population < area_km2)'))

This implies that most functionality is implemented as methods of the dataframe class. Based on pandas, the number of methods can be 300 or more, so it may be problematic to implement everything in the same namespace. pandas uses a mixed approach, with different techniques to try to organize the API.
Approaches
Top-level methods
df.sum()
df.astype()

Many of the methods are simply implemented directly as methods of dataframe.
Prefixed methods
df.to_csv()
df.to_parquet()

Some of the methods are grouped with a common prefix.
Accessors
df.str.lower()
df.dt.hour()

Accessors are a property of dataframe (or series, but assuming only one dataframe class for simplicity) that groups some methods under it.
Functions
pandas.wide_to_long(df)
pandas.melt(df)

In some cases, functions are used instead of methods.
Functional API
df.apply(func)
df.applymap(func)

pandas also provides a more functional API, where functions can be passed as parameters
Standard API
I guess we will agree, that a uniform and consistent API would be better for the standard. That should make things easier to implement, and also a more intuitive experience for the user.
Also, I think it would be good that the API can be extended easily. Couple of example of how pandas can be extended with custom functions:
@pd.api.extensions.register_dataframe_accessor('my_accessor')
class MyAccessor:
    def my_custom_method(self):
        return True

df.my_accessor.my_custom_method()

df.apply(my_custom_function)
df.apply(numpy.sum)

Conceptually, I think there are some methods that should go together, more than by topic, by the API they follow. The clearest example is reductions, and there was some discussion in https://github.com/pydata-apis/dataframe-api/issues/11#issuecomment-644115670.
I think no solution will be perfect, and the options that we have are (feel free to add to the list if I'm missing any option worth considering):
Top-level methods
df.sum()

Prefixed methods
df.reduce_sum()

Accessors
df.reduce.sum()

Functions
mod.reductions.sum(df)

mod represents the implementation module (e.g. pandas)
Functional API
df.reduce(mod.reductions.sum)

Personally, my preference is the functional API. I think it's the simplest that keeps things organized, and the simplest to extend. The main drawback is its readability, it may be too verbose. There is the option to allow using a string instead of the function for known functions (e.g. df.reduce('sum')).
Thoughts? Other ideas?

Is this still being considered?

nope
But if you like great autocomplete and static typing support, you may be interested in Narwhals. Going back to the example in the original post:
.assign(area_km2=lambda df: df['area_m2'].astype(float) / 100)

it can be expressed as:
df.with_columns(area_km2 = nw.col('area_m2').cast(nw.Float64)/100)


runtime_error :hipFuncGetAttributes.cpp compile with clang++

compile hipFuncGetAttributes with clang (from llvm_amd:https://github.com/RadeonOpenCompute/llvm-project)
path HIP/tests/
hipcc -I src src/runtimeApi/module/hipFuncGetAttributes.cpp
./a.out

terminate called after throwing an instance of 'std::runtime_error'
what():  No device code available for function: _device_stub__Z2fnPfS, for agent: gfx803
Aborted (core dumped)
However, try to compile the code with hcc, it's OK.

@newbee816 Sorry for the lack of response. Please try latest ROCm 6.0.2 (HIP 6.0.32831) to see if your issue still exists? If resolved, please close the ticket. Thanks.


Thank you!

I don't think any blog posts saved me so much time ever as "24 days of Rust". Big thank you!
Pozdrawiam!


error: ‘sd_is_socket_sockaddr’ was not declared in this scope

What version of gRPC and what language are you using?
Latest release tag (v1.52.1).
What operating system (Linux, Windows,...) and version?
CentOS 7
What runtime / compiler are you using (e.g. python version or version of gcc)
gcc-11 (devtoolset-11)
What did you do?
This is a recent regression, probably within 1 month as we were able to build late Jan (for v1.51.1, the latest release at that time).

Looks similar to https://github.com/grpc/grpc/issues/32322.

Probably, although that discussion somehow mentioned bazel which I don't know where it come from.
Mine's on CMake.

Let's track this in a single issue https://github.com/grpc/grpc/issues/32322


Display configuration: Multiple fixes

Improve parsing of display options so they work without specifying a resolution (i. e. display=retina works).
Fix handling of framebuffer reset when switching between non-retina and retina modes without changing resolution.
Change display init/config code to only initialize external displays, and only configure them once.

Closing since this is really old and a lot of display changes happened since then. If this is still relevant please rebase and reopen another PR.


Lw/7770 new headline

New Vault headline
Changes 👷♀

Implemented new headline according to design https://www.figma.com/file/XeMo7s0ZJgXgCHmOd588QY/Discover-Oasis-%235366?node-id=2904%3A16028

How to test 🧪

Check vault headlines in various vaults in various states see if everything fits, no layout is broken, here are some examples:

This branch is started from dev so it doesn't yet have validations, but I  just can simulate edge caser that was found by @piotrkonowrocki

Let's say hypotheticaly in one of languages we support message will be even longer still looks fine

AAVE

https://user-images.githubusercontent.com/6871923/215856025-bdbe5bc1-1224-4da6-8441-1bfdee456520.mp4

Will try to achieve the same thing but using flex boxes to make 2 rows only when there's too much details

@adamskrodzki @piotrkonowrocki before changes I'm about to push:

after recent changes:

ETH-C remains the same

This approach is wrong


[FR] Increase Length of URL limit on import

Please verify that this feature request has NOT been suggested before.

[X] I checked and didn't find a similar feature request

Problem statement
See Discussion 7078
Suggested solution
Possible options:

Increase length of URL limit to something greater than 200 (Maybe 300?).
Make the maximum length adjustable in the Admin settings somewhere.
Remove the limit and replace it with content validation that validates and then accepts the link regardless of length if it is valid.

Describe alternatives you've considered
Not much I can do here... If the supplier's or manufacturer's website requires a link longer than 200 characters to link to the part on their site, then the limit isn't high enough.  The only other option would be to run our own URL shortening service and manually shorten any link that's too long on a one-off basis.
Examples of other systems
No response
Do you want to develop this?

[ ] I want to develop this.

I think extending this is not too problematic. I think 2000 chars should be enough for now, I will submit a patch later tonight.


Make unet support input images of not only 3 dimensions.

This clears the obstacles that hinder easy extensions on Unet. For examples, when we want to input gray images, the input_nc doesn't equals to output_nc.

It is nice. In this way, more extensions can be easily added.


Added a check for buildErrors function to check for source

Priority
Yes, CIBT-web is seeing this issue
What Changed & Why
Added a if check on the error source. For example we return 404 for sessions that may not have a source key in the error object
@spiderbites @Emerson @derek-watson

My concern here is that this hides any errors messages that don't include a pointer attribute, including the 404 we're dealing with.  It would be nice if we could come up with a scheme to convert the errors array to a simpler object without skipping over any errors, but the spec doesn't require any particular members at all in the errors object.
In the meantime I think we should just write our own error middleware and replace Devour's in our current project. I'm going to make a PR to make replacing middleware a bit simpler.

Just to chime in – if the server does not pass back a pointer on the error object, I would if we could just take the status code, make an array, and pump any unpointed errors into that... maybe end up with something like:
errors['404'] = ['...', '...', '....']

Possible I'm totally off base here.

Handled in: https://github.com/twg/devour/pull/112

Ohhhhh blast from the past.

@billxinli - been periodically merging and releasing new versions, npm stats are pretty active:

3k downloads per week
215,267 downloads total


Bump minor version

Bump minor version for new release

bors r+

bors r-

Letting a hyperdiffusion fix go through first. cc @LenkaNovak


Problem in MutualInformationSort

I have a dataset that was working before, but, after some changes on it, the MutualInformationSort is raising this error, specifically when checking if has any NaNs values. What is this is related to? I really can't understand what it is happening.

I already checked if has any NaNs in my dataset, but it does not have

Have you had a chance to run it with CUDA_LAUNCH_BLOCKING=1 to see where your script fails? It'd be great if you could provide us with a script to reproduce the error.

I will debug it with CUDA_LAUNCH_BLOCKING and will provide a return here. Thanks

Hi @bernardocecchetto! Any update on this?

Sorry for the delay. I was not able see the raw cause of the problem.
I ran the code with CUDA_LAUNCH_BLOCKING=1, but does not display any relevant log related to the problem.
The problem occurs with a specific table that I have, all of the others work fine. But I am not sure what I am missing related to that table, because it does not have any NaNs values, or any other problem on it.
When I run it on cpu, instead of cuda, the problem, then, occurs in CatToNumTransform, raising an error related to index out of range.

Thanks for reporting. I think that's a bug on our side.
Can you paste the full error when you run on CPU?

Sure thing, I will paste it here tomorrow.

@bernardocecchetto Let us look at your problem when you get a chance :)

I am sorry for the delay. This is the problem that raises.
`IndexError                                Traceback (most recent call last)
File , line 3
1 train_tensor_frame = categorical_transform(train_tensor_frame)
2 newdata_tensor_frame = categorical_transform(newdata_tensor_frame)
----> 3 prod_tensor_frame = categorical_transform(prod_tensor_frame)
5 col_stats = categorical_transform.transformed_stats
File /local_disk0/.ephemeral_nfs/envs/pythonEnv-7b42c0b2-83f7-4ad9-99c3-70b1f461aa1d/lib/python3.10/site-packages/torch_frame/transforms/fittable_base_transform.py:25, in FittableBaseTransform.call(self, tf)
23 def call(self, tf: TensorFrame) -> TensorFrame:
24     # Shallow-copy the data so that we prevent in-place data modification.
---> 25     return self.forward(copy.copy(tf))
File /local_disk0/.ephemeral_nfs/envs/pythonEnv-7b42c0b2-83f7-4ad9-99c3-70b1f461aa1d/lib/python3.10/site-packages/torch_frame/transforms/fittable_base_transform.py:88, in FittableBaseTransform.forward(self, tf)
83 if not self.is_fitted:
84     raise ValueError(f"'{self.class.name}' is not yet fitted ."
85                      f"Please run fit() first before attempting to "
86                      f"transform the TensorFrame.")
---> 88 transformed_tf = self._forward(tf)
89 transformed_tf.validate()
90 return transformed_tf
File /local_disk0/.ephemeral_nfs/envs/pythonEnv-7b42c0b2-83f7-4ad9-99c3-70b1f461aa1d/lib/python3.10/site-packages/torch_frame/transforms/cat_to_num_transform.py:126, in CatToNumTransform._forward(self, tf)
123     count = torch.tensor(self.col_stats[col_name][StatType.COUNT][1],
124                          device=tf.device)
125     feat = tensor[:, i]
--> 126     v = torch.index_select(count, 0, feat).unsqueeze(1).repeat(
127         1, num_classes - 1)
128     transformed_tensor[:, i * (num_classes - 1):(i + 1) *
129                        (num_classes - 1)] = ((v + target_mean) /
130                                              (self.data_size + 1))
132 # turn the categorical features into numerical features
IndexError: index out of range in self`
However, I think I know what can be happening. I have a column, during my fit in CatToNumTransform that has a unique value (zero). And I am trying to apply this algorithm fitted in another dataset, that this same column have a binary value (zero and one). This would cause a problem, I suppose. But it is not totally clear with the error message that raises.

Hi @bernardocecchetto, thanks for sharing the stack trace. I think that is expected behavior. We cannot apply CatToNumTransform when a new category appears at inference time. Let us add a test case and raise a more informative error message.


UVI Request

--- UVI JSON ---
{
  "vendor_name": "Linux",
  "product_name": "Kernel",
  "product_version": "versions from v4.0 to before v4.14.252",
  "vulnerability_type": "unspecified",
  "affected_component": "unspecified",
  "attack_vector": "unspecified",
  "impact": "unspecified",
  "credit": "",
  "references": [
    "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=ab5b0107ccf3821a6837b0f2819270d6fa0b278f",
    "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=0cd063aa0a09822cc1620fc59a67fe2f9f6338ac"
  ],
  "extended_references": [
    {
      "type": "commit",
      "value": "ab5b0107ccf3821a6837b0f2819270d6fa0b278f",
      "note": "introduced"
    },
    {
      "type": "commit",
      "value": "0cd063aa0a09822cc1620fc59a67fe2f9f6338ac",
      "note": "fixed"
    }
  ],
  "reporter": "joshbressers",
  "reporter_id": 1692786,
  "notes": "",
  "description": "drm/msm: Fix null pointer dereference on pointer edp\n\nThis is an automated ID intended to aid in discovery of potential security vulnerabilities. The actual impact and attack plausibility have not yet been proven.\nThis ID is fixed in Linux Kernel version v4.14.252 by commit 0cd063aa0a09822cc1620fc59a67fe2f9f6338ac, it was introduced in version v4.0 by commit ab5b0107ccf3821a6837b0f2819270d6fa0b278f. For more details please see the references link."
}
--- UVI JSON ---

This issue has been assigned UVI-2021-1001956


Non-nullable fields that raise an ExecutionError cause an uncaught exception

While investigating an issue I noticed that when using graphql-batch, a non-nullable field that raises a GraphQL::ExecutionError causes an uncaught GraphQL::InvalidNullError exception.
I have yet to find the exact commit in graphql-ruby that caused this regression, but it's reproducible with the following diff:
diff --git a/test/batch_test.rb b/test/batch_test.rb
index daf48f0..4234c92 100644
--- a/test/batch_test.rb
+++ b/test/batch_test.rb
@@ -79,6 +79,22 @@ class GraphQL::BatchTest < Minitest::Test
     assert_equal ["Product/123"], queries
   end

+  def test_non_null_that_raises
+    query_string = <<-GRAPHQL
+      {
+        product(id: "1") {
+          id
+          nonNullButRaises {
+            id
+          }
+        }
+      }
+    GRAPHQL
+    result = Schema.execute(query_string)
+  end
+
   def test_batched_association_preload
     query_string = <<-GRAPHQL
       {
diff --git a/test/support/schema.rb b/test/support/schema.rb
index c6eb843..aa97340 100644
--- a/test/support/schema.rb
+++ b/test/support/schema.rb
@@ -55,6 +55,13 @@ ProductType = GraphQL::ObjectType.define do
       Promise.all([query]).then { query.value.size }
     }
   end
+
+  field :nonNullButRaises do
+    type !ImageType
+    resolve -> (_, _, _) {
+      raise GraphQL::ExecutionError, 'Error'
+    }
+  end

At first I thought it was graphql-ruby that didn't handle this case correctly, but then I tried it out and it worked as expected.
I believe in this case you'd expect result to be something along the lines of:
{
  "data": {
    "products": null
  },
  "errors": [
    ...
  ]
}

@dylanahsmith any idea? If not, I can take a look later this week.

Yup, this was caused by https://github.com/rmosolgo/graphql-ruby/pull/174/files#diff-a66f6e348162887250fe0e5939b3a11bL23 which handles the InvalidNullError in FieldResolution#result instead of in FieldResolution#get_finished_value
If I move that rescue into FieldResolution#get_finished_value then the test passes
diff --git a/lib/graphql/query/serial_execution/field_resolution.rb b/lib/graphql/query/serial_execution/field_resolution.rb
index c4daffe..349ae76 100644
--- a/lib/graphql/query/serial_execution/field_resolution.rb
+++ b/lib/graphql/query/serial_execution/field_resolution.rb
@@ -15,17 +15,8 @@ module GraphQL

         def result
           result_name = irep_node.name
-          begin
-            raw_value = get_raw_value
-            { result_name => get_finished_value(raw_value) }
-          rescue GraphQL::InvalidNullError => err
-            if field.type.kind.non_null?
-              raise(err)
-            else
-              err.parent_error? || execution_context.add_error(err)
-              {result_name => nil}
-            end
-          end
+          raw_value = get_raw_value
+          { result_name => get_finished_value(raw_value) }
         end

         private
@@ -41,7 +32,16 @@ module GraphQL

           strategy_class = GraphQL::Query::SerialExecution::ValueResolution.get_strategy_for_kind(field.type.kind)
           result_strategy = strategy_class.new(raw_value, field.type, target, parent_type, irep_node, execution_context)
-          result_strategy.result
+          begin
+            result_strategy.result
+          rescue GraphQL::InvalidNullError => err
+            if field.type.kind.non_null?
+              raise(err)
+            else
+              err.parent_error? || execution_context.add_error(err)
+              nil
+            end
+          end
         end

I will write up a PR to propose that change upstream, since I would prefer to not monkey patch yet another method.

I'm interested in any upstream changes that would make this less likely in the future, but I'm not sure what they would be :( do you have any insight into that? (Of course, feel free to discuss over there if you prefer)

I opened https://github.com/rmosolgo/graphql-ruby/pull/296 upstream.
Once we get this issue fixed, we should definitely include that regression test.

@cjoudrey could you create a PR with your regression test now that the upstream PR has been merged and released?

Absolutely!


2022 copyright

Codecov Report

Merging #621 (be8d93f) into develop (a9f6da1) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff            @@
##           develop     #621   +/-   ##
========================================
  Coverage    94.58%   94.58%
========================================
  Files          123      123
  Lines         8059     8059
========================================
  Hits          7623     7623
  Misses         436      436

Impacted Files
Coverage Δ

src/drivers/serac.cpp
93.18% <ø> (ø)

src/serac/infrastructure/accelerator.cpp
57.14% <ø> (ø)

src/serac/infrastructure/accelerator.hpp
100.00% <ø> (ø)

src/serac/infrastructure/cli.cpp
89.58% <ø> (ø)

src/serac/infrastructure/initialize.cpp
70.58% <ø> (ø)

src/serac/infrastructure/input.cpp
87.86% <ø> (ø)

src/serac/infrastructure/input.hpp
100.00% <ø> (ø)

src/serac/infrastructure/logger.cpp
95.45% <ø> (ø)

src/serac/infrastructure/output.cpp
93.33% <ø> (ø)

src/serac/infrastructure/profiling.cpp
40.00% <ø> (ø)

... and 104 more

Continue to review full report at Codecov.

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


Adjust ci pipeline.

Signed-off-by: Pan Li<EMAIL_ADDRESS>

Codecov Report

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

@@            Coverage Diff            @@
##             master     #367   +/-   ##
=========================================
  Coverage          ?   80.72%
=========================================
  Files             ?       42
  Lines             ?     1079
  Branches          ?      138
=========================================
  Hits              ?      871
  Misses            ?      134
  Partials          ?       74

Continue to review full report at Codecov.

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


[dash-p4] Deprecate order annotation on SaiVal, SaiTable and SaiCounter. (pending #594)

Since we can now use SAI spec to handle the order of all attributes and APIs, we don't need to explicit specify the order anymore. Hence, removing it from the P4 code.
After all orders are removed, make sai-header locally will not cause any SAI API change as below:
r12f@r12f-dl380:~/code/sonic/DASH/dash-pipeline/SAI/SAI
$ gst
On branch temp
Your branch is up to date with 'origin/temp'.

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        bm/

nothing added to commit but untracked files present (use "git add" to track)

ouch! cannot deprecate until we also have lib fixed..... closing PR.


KAFKA-16699: Have Streams treat InvalidPidMappingException like a ProducerFencedException

KStreams is able to handle the ProducerFenced (among other errors) cleanly. It does this by closing the task dirty and triggering a rebalance amongst the worker threads to rejoin the group. The producer is also recreated. Due to how streams works (writing to and reading from various topics), the application is able to figure out the last thing the fenced producer completed and continue from there. InvalidPidMappingException should be treated the same way.
Committer Checklist (excluded from commit message)

[ ] Verify design and implementation
[ ] Verify test coverage and CI build status
[ ] Verify documentation (including upgrade notes)

There were no new or related test failures.


feat(vsc): Add PDP notification

closes https://github.com/prisma/team-orm/issues/1132

Note: I'll review this today

It could be interesting to add a Remind me later button, in case as a user I want to dismiss it at the moment and see it again later.
I just found out this in VS Code docs though 😅
Based on that promotion is not recommended, and adding a Do not show again button is recommended, I find this part interesting because as a user if I don't want to click "Visit" it gives a clear option for dismissing it which tells me that it won't show up again.
✔ Do
Respect the user's attention by only sending notifications when absolutely necessary
Add a Do not show again option for every notification
Show one notification at a time

❌ Don't
Send repeated notifications
Use for promotion
Ask for feedback on the first install
Show actions if there aren't any

Add a Do not show again option for every notification

As that is our default behavior, to only show the notification once, I think our implementation already follows the spirit of what this is intended to achieve - and an additional button might not be necessary. Agree?

FYI it seems that some people are unhappy about this: https://twitter.com/StefanTMD/status/1790827370032578775

It is very low and devious to use notifications to display ads and promotions.
This will only hurt your brand.

We heard your feedback, here is the PR that will remove the promotion for next release: https://github.com/prisma/language-tools/pull/1745


Sync changes from logs backend (1/2)

What does this PR do?
This adds the backend_only field, which will be mandatory going forward, to yaml files in integrations core. It is effectively a no op. It is the first of two syncs. I split them up to reduce the number of files touched.
Motivation
The changes to logs core have already been made, now syncing
https://datadoghq.atlassian.net/browse/LOGSC-749
Additional Notes

Review checklist (to be filled by reviewers)

[ ] Feature or bugfix MUST have appropriate tests (unit, integration, e2e)
[ ] Changelog entries must be created for modifications to shipped code
[ ] Add the qa/skip-qa label if the PR doesn't need to be tested during QA.

/merge

/remove


YQ-2735 Hopping on analytic (v2)

Changelog entry
Fixed reading from S3 with GROUP BY HOP() [kqp].
Changelog category

Bugfix

Additional information

Pls don't do refactoring and fix/new_feature in one PR next time!

@resetius Fixed async/sync, look please again


Acoustic perception task

The acoustic perception task including:

Scoring plugin
Example world
Practice worlds

How to test it?

Launch the simulation:

ros2 launch vrx_gz competition.launch.py world:=acoustic_perception_task

Launch the joystick teleoperation node:

ros2 launch vrx_gz usv_joy_teleop.py

Echo the output of the acoustic sensor:

/wamv/pingers/pinger/range_bearing

Take a look at the range value and teleoperate the robot until you minimize the distance. When the range is <= 3 meters the simulation should finish.
Bonus: Originally I was planning to use the exit and entrance gate. We're not going to use it during the competition but I decided to include it in case it's useful for anyone.

Everything seems to be working now but the pinger positions are so close together that it's hard to tell they have changed from world to world. Could we make the change a bit more obvious?

I just updated the pinger positions in the practice worlds to make them more different.

@caguero Your changes did make it easier to distinguish between the 3 worlds but I changed them even more to make it harder for teams to ignore the acoustic component and solve the task by driving around in a lawnmower pattern. (They can always do this, of course, but now it is more costly.)


KubernetesInstanceDiscovery not removing the pod-template-hash correctly

Hi
I have deployed a breakerbox instance using the KubernetesInstanceDiscovery instanceDiscoveryClass. I am able to see the pods in the dashboard, however there is a dashboard for each pod i.e.
qa-product-service-67c5b74ddf
qa-product-service-57c5b74dag
rather than a dashboard for qa-product-service etc. This seems to be due to the fact that the pod-template-hash is not being removed, as it is not present in the generated name. Am I doing something wrong?
Regards
Brian

We are using it.  I have also a pending pull request for Oracle DB which is already open for months 😞

Ok, time to explore other options I think!

@nimble-software Ping me when you've found good alternatives 😄


Which OpenId Connect (OIDC) flow(s) does KrakenD support?

Hello,
I'm trying to use KrakenD2.0 with KeyCloak. I was previously using Spring Cloud Gateway, which supports the authorization code flow of OIDC. But, it is not clear which flow is being supported by KrakenD? Is it authorization code flow, implicit flow or hybrid flow as described in,
OpenID Connect Core 1.0
All the 3 flows, require the client (i.e. KrakenD) to redirect an unauthorized user to the authorization server by preparing an authentication request. However, I'm seeing a 401 (Unauthorized) error. I saw another issue in krakend  in which someone (else) has replied that they see 401, but for some reason they believe it is the expected behavior.
08:10:26 $ curl -v localhost:8001/v1/movies/
*   Trying <IP_ADDRESS>:8001...
* TCP_NODELAY set
* Connected to localhost (<IP_ADDRESS>) port 8001 (#0)
> GET /v1/movies/ HTTP/1.1
> Host: localhost:8001
> User-Agent: curl/7.68.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 401 Unauthorized
< Date: Sun, 03 Apr 2022 14:40:33 GMT
< Content-Length: 0
<
* Connection #0 to host localhost left intact
08:10:33 $

The diagram shown on your website Keycloak integration also does not show any redirects. Since the token is being shared with the User-Agent, I'm led to believe that this is either an implicit or hybrid flow. But, a lack of redirects is confusing.
Can you please clarify?
Thanks.
Tushar.

KrakenD does not play any role in the authentication process and it knows nothing regarding the idp associated with the received tokens. it's up to the client to know where to go for the token negotiation and refresh.
you can use any idp as long as it returns a proper JWT


Data object registry

WHY
Extendable
WHAT
Load in data easily.
Use object registry to load in
DataJson
DataCsv
DataXml
DataRemote

For now just using Data object and moved some csv and json files out of the skills into centralised data directory.


Definition and shape inference for ONNXParallelOp and ONNXForkOp

This PR introduces new operations for Operator-level parallelization. Overall plan for implementation of Operator-level parallelization is described in issue #2811 . This PR is the first PR.

ONNXParallelOp

Specifies parallel region. ONNXForkOps should be included in the body region. The threads created by ONNXForkOp are synchronized with main thread at the end of this operation. The results to be used in following operations need to be set as the results of this operation by using ONNXYieldOp.

ONNXForkOp

Creates a thread to run the operations included in the body region of the operation.

%Y0, %Y1 = onnx.Parallel{
   %Y0 = onnx.Fork () -> tensor<>{
      // ONNX operations

      onnx.yield %Y

   }
   %Y1 = onnx.Fork () -> tensor<>{
      // ONNX operations

      onnx.yield %Y

  }
   onnx.yield %Y0, %Y1

}

@AlexandreEichenberger Thanks for your comments!

how are the output of the ONNX.Parallel defined? Is the first output the output of the first fork, and the second output the output of the second fork?

I didn't consider it. The output order of ONNX.Parallel is the same as the inputs order of ONNX.Yield. That is, the output of second fork can be placed at the first output of ONNX.Parallel. Do you think we need to define the order?
Regarding naming, current ONNX.Parallel is too generic. So, I agree with your suggestion to change. I prefer ONNX.ParallelSections because it clearly expresses there is parallel region, but I would like to hear others' opinion.

didn't consider it. The output order of ONNX.Parallel is the same as the inputs order of ONNX.Yield. That is, the output of second fork can be placed at the first output of ONNX.Parallel. Do you think we need to define the order?

The way the values of each "yield" gets reflected into the output of the "parallel" needs to be defined in the text associated with the operations. If the current approach is that the "first" fork/yield produces the "first" output value of the "parallel", and the "second" fork/yield generates the "second" output value of the parallel, that is perfectly fine. We just need to make sure the fork are not reordered (I am sure they are not), and clearly explain this ordering in the definition/example associated with the new operations.

Thanks for proposing these operations. I have some high-level comments.
%Y0, %Y1 = onnx.Parallel{
   %Y0 = onnx.Fork () -> tensor<>{
      // ONNX operations

      onnx.yield %Y

   }
   %Y1 = onnx.Fork () -> tensor<>{
      // ONNX operations

      onnx.yield %Y

  }
   onnx.yield %Y0, %Y1

}

onnx.Parallel and onnx.Fork do not have input, so it looks to me you assumed global variables in ONNX so that operations inside onnx.Fork can use them directly, not via function arguments. In general, it's more difficult to reason about a program with global variables. Is it acceptable in the ONNX specification? E.g. any ONNX ops you know that use global variables.
There is a subtle difference between yield and return. return is often to stop the function and quit, while yield is like a generator just pausing the execution and the next execution (e.g. next iteration in a loop) can have the yield value as input. onnx.Return is more suitable.
It looks to me adding onnx.Parallel and onnx.Fork will change the onnx model a lot. By introducing regions, we need to move the original ONNX operations into the region of onnx.Parallel and onnx.Fork, which potentially makes optimizations (e.g. removing Stick/Unstick pair) difficult. Not sure about if the lowering to krnl dialect is easy or not. Have you considered any other approaches? e.g. annotating operations like the ones the ONNX Multi-Device group is working on.

The other structural ONNX ops, such as ONNX.IF and ONNX.Loop, can read value from outside, but all the generated values can be used outside only through yield. Do the new ops have the same behavior?

To me, the parallel op is a scheduling decision, and should be added in a later phase. They should be not be in onnx dialect, if there is another choice. By the way, can we use omp.sections for this purpose?

@AlexandreEichenberger

The way the values of each "yield" gets reflected into the output of the "parallel" needs to be defined in the text associated with the operations.

I updated the description for the operations. Thanks.
However, we may need to consider that onnx.Fork op has multiple results. In the case, i-th results of onnx.Parallel is not the result of i-th onnx.Fork.

@chentong319

The other structural ONNX ops, such as ONNX.IF and ONNX.Loop, can read value from outside, but all the generated values can be used outside only through yield. Do the new ops have the same behavior?

Yes. The ONNXParallel and ONNXFork have the same behavior.

To me, the parallel op is a scheduling decision, and should be added in a later phase. They should be not be in onnx dialect, if there is another choice. By the way, can we use omp.sections for this purpose?

We assume these operations are inserted just before ONNXToKrnl pass after applying optimizations in ONNX IR.(Currently we are using a rewriting tool for testing. We generate ONNXIR using -EmitONNXIR, then insert ONNXParallelOp and ONNXForkOp using the tool).
I think omp.section is memref-level operation. We wanted tensor-level operations to parallelize in tensor level. Currently in PR https://github.com/onnx/onnx-mlir/pull/2756, we used krnl.parallel in memre-level reusing existing openMP parallelization, but we should be able to lower these operations into omp.section.


Recreation

Description
Redesign the UI as a whole and improve the reliability of the app.
Motivation and Context
None

wheeeeeeeeeee

code factor. wow

wow nice

A thing to be shamed: this doesn't correctly follow MVVM pattern 😁

A thing to be shamed: this doesn't correctly follow MVVM pattern 😁

@NoobNotFound closed by accident?

@NoobNotFound closed by accident?

yes lol

Everything is all you need

I've fixed that problem. You've used to use ResourceLoader which is obsolete in WinUI3. And I update to use ResourceManager and caching for resolving an issue where ResourceManager has been very low performance.

I don't know why Settings.resx is not loaded.

Why not take a screenshot by yourself(you have a PC with greater resolution than me).

Why not take a screenshot by yourself(you have a PC with greater resolution than me).

Yes. But I'm at school, UAC is max-mode, couldn't build.

lol I couldn't remember that.

I think we should merge lol

I think we should merge lol

I think there's one thing left:
Me and @NoobNotFound have been discussing what goes here

and we thought it should be a minecraft image or smth.
See https://discord.com/channels/1034024652844044318/1034029169014734879/1062435241307951224

I think we should merge lol
And another thing is that the store is not implemented yet

@NoobNotFound is the store ready?


graphql_transport_ws: Fix task shutdown/cancellation issues evident from testsuite warnings

Examining the warnings after running the unittests for test_graphql_transport_ws.py
showed some problems in how we were handling task cleanup and cancellation.

Description

AsyncGenerator doesn't need to be explicitly closed, but for expedient shutdown it should be done from witin
within the task, using Finally semantics.
The current Task instance should be retrieved at the start, not during shutdown when the event loop may be gone.
CancelledError should raise out of the task.
The cleanup of current operation id can race with an external cleanup_operation so must not fail if the id isn't on record.
Added a unittest to verify that the subscription AsyncGenerators are properly finalized when an operation is cancelled.

As this is not a feature enhancement, a Release file is probably not warranted.  Also, this PR belongs in the group of
"subscription enhancements" that I am working on.

Types of Changes

[x] Core
[x] Bugfix
[ ] New feature
[ ] Enhancement/optimization
[ ] Documentation

Issues Fixed or Closed by This PR
Checklist

[x] My code follows the code style of this project.
[x] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.
[x] I have added tests to cover my changes.
[x] I have tested the changes and verified that they work and don't break anything (as well as I can manage).

Hi, thanks for contributing to Strawberry 🍓!
We noticed that this PR is missing a RELEASE.md file. We use that to automatically do releases here on GitHub and, most importantly, to PyPI!
So as soon as this PR is merged, a release will be made 🚀.
Here's an example of RELEASE.md:
Release type: patch

Description of the changes, ideally with some examples, if adding a new feature.

Release type can be one of patch, minor or major. We use semver, so make sure to pick the appropriate type. If in doubt feel free to ask :)
Here's the tweet text:
🆕 Release (next) is out! Thanks to @kristjanvalur for the PR 👏

Get it here 👉 https://github.com/strawberry-graphql/strawberry/releases/tag/(next)

Let's not review this any more until I have had time to clean it up a bit.

@kristjanvalur is this ready for a review?

I think, since this is a test suite pr, that I'll roll in a fix to the timeout failure for the cancellation test which sometimes shows up. Allow until tomorrow please for me, I have a change to the unit test in mind which doesn't require timeout checks, they are doomed to occasionally fail in a virtualize environment.

Ok, I found that the problems with the finalizer termination tests are hard to solve right now.  The problem is that the iterator/generator created by graphql-core, for iterating over subscriptions, has such weird semantics.  The finalizer is actually called on a Task, and may get cancelled during execution.  I cannot make good tests for this until we adopt something like PR #2724


Implement Page.with_content_json

Fixes #5199
This implements a new method on Page which allows subclasses to alter behavior when a page object is created from JSON content.
Currently, this is used some internal fields are set to their live values, but it's now possible to reset some fields on the sub-class as well. Also, this provides an API for plugins such as the wagtail-headless-preview-poc to use to convert serialised pages back into page objects with metadata fields set correctly.

@kaedroho how do you feel about introducing a class attribute here to list the fields that should retain their values?

Class attributes don't work well with mixins because if multiple mixins override the attribute, the final class must manually merge the overrides or things will break.
You see this happen a lot with the content_panels/promote_panels but I think those are different because developers would normally want full control over the form, but they probably don't care which fields should retain their live values in revisions as long as they work.
A;so, class methods allow us to do things like: obj.set_url_path(self.get_parent())

Class attributes don't work well with mixins because if multiple mixins override the attribute, the final class must manually merge the overrides or things will break.

More than anything, I was thinking it would help reduce quite a bit of boilerplate in Page. with_content_json (). The overridability would be more a side-benefit.

Also, class methods allow us to do things like: obj.set_url_path(self.get_parent())

I'm not proposing we ditch the method. This line could easily stay, since it's not a straight-forward attribute replacement.

@kaedroho I've added a test for this... also included content_type in the fields that should be preserved from the original page, as I think this might help in situations where revision content type ids become stale due to migration.

Test looks good to me!

I think this just needs a mention in the Methods and Properties section of the page model docs.

Merged in 4f762dc. Thanks again @kaedroho!


Bump pre-commit hooks and workflow dependencies

Codecov Report

Merging #227 (3d2997b) into main (599db5a) will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##              main      #227   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files           24        24
  Lines          787       787
  Branches       162        90   -72
=========================================
  Hits           787       787

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Elaborate on table group properties

cfr. https://github.com/MicrosoftDocs/dynamics-365-unified-operations-public/issues/258
We'd like to see more explanation on the different (and especially the newly introduced in FinOps as opposed to AX2012) enumeration values in the TableGroup property. Also, there seems to be a link with the properties on the related data entities, which allows - or not - using those entities for copy company functionalities.
I posted our interpretation of the different values in one of my previous docs related issues about a year ago.

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

ID: c7d5f5d5-c95d-4c70-0af6-69bb881052e6
Version Independent ID: 2dbf3828-ed0d-06c9-0e07-1335951a9637
Content: Application Explorer properties - Finance & Operations | Dynamics 365 | #MSDyn365FO
Content Source: articles/dev-itpro/dev-ref/application-explorer-aot-properties.md
Service: dynamics-ax-platform
GitHub Login: @RobinARH
Microsoft Alias: robinr

@ibruynin, thanks for the great feedback.
@RobinARH, please review and consider making updates to this topic.

related issues
#253
#258
#265

Bug 321794 has been logged to track this issue.

Hi @sericks007
Can you provide an update on Bug 321794?
Thanks!

Hi @ibruynin, bug 321794 is assigned to @RobinARH.
@RobinARH, can you please provide an update.

We are not planning to make these updates. - Robin


[Decl] Remove a workaround introduced to appease lldb.

Probably at some point this was true, but it's not the case
anymore.

@swift-ci test and merge

Thanks! Maybe the other hack about parameters in closure contexts can be removed too?

@slavapestov once this one goes in, I'll try to remove the other and see if it sticks.

@swift-ci test and merge

@swift-ci smoke test and merge


Deprecate [TreewareTrees] service

The Treeware API has been unresponsive for some time now. I reported the issue a month ago in https://github.com/TreewareEarth/treeware.earth/issues/35, but haven't heard back. Given low usage numbers (43 renders last Thursday for example), I think we can go ahead and start the deprecation process.
Cc @owenvoke who contributed the badge in the first place.

Hi @PyvesB and @chris48s, the Offset Earth platform was renamed to Ecologi.
We should be able to update the offset.earth domain to ecologi.com and it will start working again. 👍🏻

What would be the difference with our existing ecologi badges? Have Ecologi and Treeware essentially merged into one project?

One thing I'll quickly note here is: the treeware badge uses a user/package format whereas the ecologi one takes a username only

Yeah, so packages with Treeware are recorded by package name (i.e. using the ref query param, which is an MD5 hash of vendor/package).
In theory, we could proxy this and add a ref param to the Ecologi badge (which can actually be used for referencing anyone who has bought trees).
Or, we can keep this separate badge which nicely encodes specifically for packages (which I think works a bit cleaner). 🤷🏻

Thanks for the additional context! I think it makes sense to leave things as they are and simply switch the API endpoint. I've opened #10467 accordingly.


remove unused mkdir

What problem does this PR solve?
What is changed and how does it work?
Remove unused RUN mkdir /src, WORKDIR will create folder if it doesn’t exist.
reference: https://docs.docker.com/engine/reference/builder/#workdir

If the WORKDIR doesn’t exist, it will be created even if it’s not used in any subsequent Dockerfile instruction.

Check List
Tests

Manual test

Code changes
Side effects
Related changes

/run-e2e-test

/merge

/test

/run-all-tests

/test

/merge

/test

/test

/run-all-tests

Codecov Report

Merging #436 into master will increase coverage by 1.08%.
The diff coverage is 59.36%.

@@            Coverage Diff             @@
##           master     #436      +/-   ##
==========================================
+ Coverage   60.40%   61.48%   +1.08%
==========================================
  Files          36       64      +28
  Lines        1985     4069    +2084
==========================================
+ Hits         1199     2502    +1303
- Misses        692     1379     +687
- Partials       94      188      +94

Impacted Files
Coverage Δ

api/v1alpha1/iochaos_types.go
31.11% <0.00%> (-1.45%)
:arrow_down:

api/v1alpha1/podchaos_types.go
31.11% <0.00%> (-1.45%)
:arrow_down:

controllers/kernelchaos_controller.go
0.00% <0.00%> (ø)

controllers/timechaos_controller.go
0.00% <0.00%> (ø)

pkg/chaosdaemon/netlink_linux.go
0.00% <0.00%> (ø)

pkg/chaosdaemon/server.go
44.44% <0.00%> (ø)

pkg/ptrace/ptrace_linux.go
65.55% <ø> (-0.38%)
:arrow_down:

pkg/utils/coalescer.go
0.00% <0.00%> (ø)

pkg/utils/graph.go
0.00% <0.00%> (ø)

pkg/utils/grpc.go
0.00% <0.00%> (ø)

... and 71 more

Continue to review full report at Codecov.

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


Added padding and margin in about page

About page
[Cite any related issue(s) this pull request addresses. If none, simply state “None”]
Fixes:  #(2993)
Description
#2974  I redesign the UI using padding and margin for more better appearances.

Type of PR

[ ] Bug fix
[ ] Feature enhancement
[ ] Documentation update
[ x ] Other (specify): UI updated

Screenshots / videos (if applicable)
before

after

Checklist:

[ x] I have made this change from my own.
[ x] My code follows the style guidelines of this project.
[ x] I have performed a self-review of my own code.
[ x] I have commented my code, particularly in hard-to-understand areas.
[x ] My changes generate no new warnings.
[ x] I have tested the changes thoroughly before submitting this pull request.
[x ] I have provided relevant issue numbers and screenshots after making the changes.

@sailaja-adapa plz also add labels of hacktoberfest-accepted

Done sorry for inconvenience @Pushpa472


Go build missing in makefile

I just tried to build the dockerui docker image and failed:
> make build
grunt build
Running "clean:0" (clean) task
Cleaning "dist/angular.js"...OK
Cleaning "dist/assets"...OK
Cleaning "dist/dockerui.css"...OK
Cleaning "dist/dockerui.js"...OK
Cleaning "dist/index.html"...OK
Cleaning "dist/templates"...OK

Running "html2js:app" (html2js) task
Successfully converted 1 html templates to js.

Running "concat:dist" (concat) task
File "dist/dockerui.js" created.

Running "concat:index" (concat) task
File "dist/index.html" created.

Running "concat:angular" (concat) task
File "dist/angular.js" created.

Running "recess:build" (recess) task
File "dist/dockerui.css" created.

Running "copy:assets" (copy) task
Created 11 directories, copied 42 files

Done, without errors.
docker build --rm -t dockerui .
Sending build context to Docker daemon 5.073 MB
Step 0 : FROM scratch
 --->
Step 1 : COPY dockerui /
dockerui: no such file or directory
make: *** [build] Error 1

Is there any reason, why the go build command is missing in the makefile?
diff --git a/Makefile b/Makefile
index cae5dbc..ed4b50e 100644
--- a/Makefile
+++ b/Makefile
@@ -11,6 +11,7 @@ install:

 build:
        grunt build
+       go build
        docker build --rm -t dockerui .

 build-release:

I didn't want Go to be a dev dependency so I containerized it, it's under the build-release target:
docker run --rm -v $(shell pwd):/src centurylink/golang-builder

I didn't put it in the build target because it takes a long time. Sorry, builds are a bit off a mess.

FYI, switching to a pure grunt build here. Should be as simple as grunt build by the time I'm done.

Thx


[RPC] Support RPC batching

Bitcoin core supports sending batch of requests, and receiving batch of responses. Currently Stratis RPC server throws internal error if it receives a request like this.
Related to PR https://github.com/MetacoSA/NBitcoin/pull/413

This test will reproduce the error:
 [Fact]
        public async void TestRpcBatch()
        {
            var rpcBatch = this.rpcTestFixture.RpcClient.PrepareBatch();
            Task command = rpcBatch.SendCommandAsync("getpeerinfo");
            await rpcBatch.SendBatchAsync();
        }

You can see this in the logging:
Stratis.Bitcoin.Features.RPC.RPCMiddleware:Error: Internal error while calling RPC Method

Newtonsoft.Json.JsonReaderException: Error reading JObject from JsonReader. Current JsonReader item is not an object: StartArray. Path '', line 1, position 1.
   at Newtonsoft.Json.Linq.JObject.Load(JsonReader reader, JsonLoadSettings settings)
   at Stratis.Bitcoin.Features.RPC.RPCRouteHandler.RouteAsync(RouteContext context) in C:\source\stratis-fork\StratisBitcoinFullNode\src\Stratis.Bitcoin.Features.RPC\RPCRouteHandler.cs:line 47
   at Microsoft.AspNetCore.Routing.RouteCollection.RouteAsync(RouteContext context)
   at Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(HttpContext httpContext)
   at Stratis.Bitcoin.Features.RPC.RPCMiddleware.InvokeAsync(HttpContext httpContext) in C:\source\stratis-fork\StratisBitcoinFullNode\src\Stratis.Bitcoin.Features.RPC\RPCMiddleware.cs:line 45

Did some investigation into this. Might be a bit tricky.
We can definitely identify whether it's a batch request in RPCRouteHandler using some JSon logic handling - question is then what to do next. Possibly redirect to a controller that handles the batch request. Or could put logic directly in RPCRouteHandler to iterate over each of the requests?
I'm thinking perhaps one approach for actually executing the batch is instantiating an RPCClient and then iterating through the batch and aggregating the responses. Along the lines of what is done in RPCController.CallByName() but in a batch type mode.
Thoughts? Maybe there is a better way? @zeptin @dangershony @bokobza

Closed


Function To convert hexa-decimals to any base system

I want to refactor the code in the hexTOoct function to call the anybase to anybase function.

Alright, Its been assigned to you. You can join the community here t.me/+gKyUH8L50vYwODg0

PR merged, you can close this issue.

Okayy. Can you explain how you fixed the conflict?
On Mon, Sep 12, 2022, 5:13 PM Emmanuel Jonathan @.***>
wrote:

PR merged, you can close this issue.
—
Reply to this email directly, view it on GitHub
https://github.com/AltGophers/numbase/issues/14#issuecomment-1243970016,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ATKCOZTALTU34QOE563QGEDV55JBRANCNFSM6AAAAAAQJRXTVY
.
You are receiving this because you were assigned.Message ID:
@.***>

There was a "Resolve Conflict" button which leads to where one can edit a file containing a combination of files from both repos causing the conflict. You can check out a brief youtube to see how it works.

Thanks, I'll check it out.
On Mon, Sep 12, 2022, 10:44 PM Emmanuel Jonathan @.***>
wrote:

There was a "Resolve Conflict" button which leads to where one can edit a
file containing a combination of files from both repos causing the
conflict. You can check out a brief youtube to see how it works.
—
Reply to this email directly, view it on GitHub
https://github.com/AltGophers/numbase/issues/14#issuecomment-1244537476,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ATKCOZTAFA555EHI7OKLQJDV56P5RANCNFSM6AAAAAAQJRXTVY
.
You are receiving this because you were assigned.Message ID:
@.***>