test quick sort without recursion

This looks great—removing the recursion in quicksort by adding a stack. But does a finite kMaxLevels mean that there are arrays that would be too big to sort? That would be an unwelcome surprise. Is it possible to compute an upper limit maximum number of levels given the length of a list? I would guess that such an upper limit would be logarithmic in that length, and therefore not too large. If it takes O(n log(n)) space to sort n elements, I think that would be acceptable...

This looks great—removing the recursion in quicksort by adding a stack. But does a finite kMaxLevels mean that there are arrays that would be too big to sort? That would be an unwelcome surprise. Is it possible to compute an upper limit maximum number of levels given the length of a list? I would guess that such an upper limit would be logarithmic in that length, and therefore not too large. If it takes O(n log(n)) space to sort n elements, I think that would be acceptable...

This looks great—removing the recursion in quicksort by adding a stack. But does a finite kMaxLevels mean that there are arrays that would be too big to sort? That would be an unwelcome surprise. Is it possible to compute an upper limit maximum number of levels given the length of a list? I would guess that such an upper limit would be logarithmic in that length, and therefore not too large. If it takes O(n log(n)) space to sort n elements, I think that would be acceptable...

I think, the algorithm ensures that an array of N entries can handle a set of 2N entries: the larger range is pushed into the array and the loop iterates on the smaller range. It still has quadratic time complexity on sorted arrays, but at least it would sort arrays of all possible sizes.

This looks great—removing the recursion in quicksort by adding a stack. But does a finite kMaxLevels mean that there are arrays that would be too big to sort? That would be an unwelcome surprise. Is it possible to compute an upper limit maximum number of levels given the length of a list? I would guess that such an upper limit would be logarithmic in that length, and therefore not too large. If it takes O(n log(n)) space to sort n elements, I think that would be acceptable...

I think, the algorithm ensures that an array of N entries can handle a set of 2N entries: the larger range is pushed into the array and the loop iterates on the smaller range. It still has quadratic time complexity on sorted arrays, but at least it would sort arrays of all possible sizes.

It still has quadratic time complexity on sorted arrays, but at least it would sort arrays of all possible sizes.

I just read up on the algorithm. If the worst case of O(n^2) is rare, as Wikipedia claims, then that's okay. If this case happens when the arrays are already sorted, then that's not good because running a sorting algorithm "just to be sure it's sorted" is a common thing to do. But if the already-sorted case is that O(n^2) worst case, then it's easily fixed: the algorithm could start with a quick O(n) check to determine whether it's sorted, then follow with quicksort if it's not. Most unsorted lists wouldn't even take a full O(n) to see that they're not sorted.
And just to be sure: the actual iteration over data in the arrays is done in cpu-kernels, not libawkward, right?

It still has quadratic time complexity on sorted arrays, but at least it would sort arrays of all possible sizes.

I just read up on the algorithm. If the worst case of O(n^2) is rare, as Wikipedia claims, then that's okay. If this case happens when the arrays are already sorted, then that's not good because running a sorting algorithm "just to be sure it's sorted" is a common thing to do. But if the already-sorted case is that O(n^2) worst case, then it's easily fixed: the algorithm could start with a quick O(n) check to determine whether it's sorted, then follow with quicksort if it's not. Most unsorted lists wouldn't even take a full O(n) to see that they're not sorted.
And just to be sure: the actual iteration over data in the arrays is done in cpu-kernels, not libawkward, right?

@jpivarski - I think, the PR is more or less done. Both sort and argsort support ascending and descending order. Stable is not supported. I wonder if a stable argsort is something to work on next.
Next, I'd like to run some profiling tests and to compare this implementation to an old std-based version. Also, I'm trying to get (an easy) access to a GPU to test the kernels. While there is data dependency between iterations within the quick_sort and quick_argsort functions, sorting the ranges are independent loop iterations.

@jpivarski - I think, the PR is more or less done. Both sort and argsort support ascending and descending order. Stable is not supported. I wonder if a stable argsort is something to work on next.
Next, I'd like to run some profiling tests and to compare this implementation to an old std-based version. Also, I'm trying to get (an easy) access to a GPU to test the kernels. While there is data dependency between iterations within the quick_sort and quick_argsort functions, sorting the ranges are independent loop iterations.

I just have some questions: is quicksort what you get if you call sort and argsort with stable=False now?

Yes, if the recursion depth goes no more than a particular limit (16 I think) - introsort begins with quicksort.

What is the role of kMaxLevels? Is there a maximum size array or maximum size list in an array that can be sorted? What happens if one attempts to sort an arbitrarily large array? The CPU version of this function, at least, must work for any dataset that can fit in memory (tens of GB, with the understanding that some working space will be required, and the time will scale as O(n log n)).

The algorithm pushes the larger range into the array and the loop ingrates on a smaller range: kMaxLevels defines when to stop. BTW, kMaxLevels set to 48 allows sorting an array of about 280TB

I just have some questions: is quicksort what you get if you call sort and argsort with stable=False now?

Yes, if the recursion depth goes no more than a particular limit (16 I think) - introsort begins with quicksort.

What is the role of kMaxLevels? Is there a maximum size array or maximum size list in an array that can be sorted? What happens if one attempts to sort an arbitrarily large array? The CPU version of this function, at least, must work for any dataset that can fit in memory (tens of GB, with the understanding that some working space will be required, and the time will scale as O(n log n)).

The algorithm pushes the larger range into the array and the loop ingrates on a smaller range: kMaxLevels defines when to stop. BTW, kMaxLevels set to 48 allows sorting an array of about 280TB

BTW, kMaxLevels set to 48 allows sorting an array of about 280TB

I see! Then it is logarithmic. I agree that 280 TB is technically a limit but practically not a limit, especially since these arrays have to be in RAM. We also use integers without worrying about overflow. (And UnionArrays are limited to 128 distinct tags.) I have no qualms about accepting that kind of artificial limitation.
The rules that you specified for switching between different sorting algorithms, are those what your implementation does or what the C++ standard library does?

BTW, kMaxLevels set to 48 allows sorting an array of about 280TB

I see! Then it is logarithmic. I agree that 280 TB is technically a limit but practically not a limit, especially since these arrays have to be in RAM. We also use integers without worrying about overflow. (And UnionArrays are limited to 128 distinct tags.) I have no qualms about accepting that kind of artificial limitation.
The rules that you specified for switching between different sorting algorithms, are those what your implementation does or what the C++ standard library does?

BTW, kMaxLevels set to 48 allows sorting an array of about 280TB

I see! Then it is logarithmic. I agree that 280 TB is technically a limit but practically not a limit, especially since these arrays have to be in RAM. We also use integers without worrying about overflow. (And UnionArrays are limited to 128 distinct tags.) I have no qualms about accepting that kind of artificial limitation.
The rules that you specified for switching between different sorting algorithms, are those what your implementation does or what the C++ standard library does?

That’s what std does  😀

BTW, kMaxLevels set to 48 allows sorting an array of about 280TB

I see! Then it is logarithmic. I agree that 280 TB is technically a limit but practically not a limit, especially since these arrays have to be in RAM. We also use integers without worrying about overflow. (And UnionArrays are limited to 128 distinct tags.) I have no qualms about accepting that kind of artificial limitation.
The rules that you specified for switching between different sorting algorithms, are those what your implementation does or what the C++ standard library does?

That’s what std does  😀

I can merge it now if you think it's ready. It looks ready to me. I would then follow up with making quicksort the default from the high-level interface, and I think you wanted to do a bit more work as another PR, right?

I can merge it now if you think it's ready. It looks ready to me. I would then follow up with making quicksort the default from the high-level interface, and I think you wanted to do a bit more work as another PR, right?

I can merge it now if you think it's ready. It looks ready to me. I would then follow up with making quicksort the default from the high-level interface, and I think you wanted to do a bit more work as another PR, right?

One question I have is about sorting an array copy rather than an array itself. This can be addressed later, I think.

I can merge it now if you think it's ready. It looks ready to me. I would then follow up with making quicksort the default from the high-level interface, and I think you wanted to do a bit more work as another PR, right?

One question I have is about sorting an array copy rather than an array itself. This can be addressed later, I think.

Sorry, I missed your response earlier; I hope it's not too late. Do you mean that the Content::sort operation sorts the array in-place? None of the Awkward operations are supposed to be in-place: they should all leave the input unchanged.

Sorry, I missed your response earlier; I hope it's not too late. Do you mean that the Content::sort operation sorts the array in-place? None of the Awkward operations are supposed to be in-place: they should all leave the input unchanged.

@jpivarski - I'm trying to convince myself that this new implementation should be used instead of an std-based one. Because, usually, I'd go with the std whenever possible...
I started with a best case scenario sorting a random one dimensional array. Here is what I get.
This PR sort implementation:
In [5]: content = ak.layout.NumpyArray(np.random.rand(100000))

In [6]: content
Out[6]: <NumpyArray format="d" shape="100000" data="0.289661 0.559196 0.306584 0.27053 0.030667 ... 0.595118 0.326157 0.993009 0.695484 0.356429" at="0x7f8301160000"/>

In [7]: %%timeit
   ...: rand_sorted = content.sort(0, True, True)
   ...:
   ...:
18.8 ms ± 157 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

vs previously implemented using an std::sort:
In [3]: content = ak.layout.NumpyArray(np.random.rand(100000))

In [4]: %%timeit
   ...: rand_sorted = content.sort(0, True, True)
   ...:
   ...:
22.7 ms ± 231 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)

vs Numpy sort implementation (is this the price we pay for not sorting in place?):
In [8]: nparr = np.random.rand(100000)

In [9]: %%timeit
    ...: nrand_sorted = np.sort(nparr)
    ...:
    ...:
6.13 ms ± 45.4 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

This PR sort on a larger array:
In [12]: content2 = ak.layout.NumpyArray(np.random.rand(1000000))

In [13]: %%timeit
    ...: rand_sorted2 = content2.sort(0, True, True)
    ...:
    ...:
221 ms ± 3.02 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

vs using an std::sort-based implementation:
In [5]: content2 = ak.layout.NumpyArray(np.random.rand(1000000))

In [6]: %%timeit
   ...: rand_sorted2 = content2.sort(0, True, True)
   ...:
   ...:
326 ms ± 20.2 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

finally:
In [14]: content3 = ak.layout.NumpyArray(np.random.rand(10000000))

In [15]: %%timeit
    ...: rand_sorted3 = content3.sort(0, True, True)
    ...:
    ...:
2.53 s ± 15.4 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

vs
In [7]: content3 = ak.layout.NumpyArray(np.random.rand(10000000))

In [8]: %%timeit
   ...: rand_sorted3 = content3.sort(0, True, True)
   ...:
   ...:
5.52 s ± 103 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

@jpivarski - I'm trying to convince myself that this new implementation should be used instead of an std-based one. Because, usually, I'd go with the std whenever possible...
I started with a best case scenario sorting a random one dimensional array. Here is what I get.
This PR sort implementation:
In [5]: content = ak.layout.NumpyArray(np.random.rand(100000))

In [6]: content
Out[6]: <NumpyArray format="d" shape="100000" data="0.289661 0.559196 0.306584 0.27053 0.030667 ... 0.595118 0.326157 0.993009 0.695484 0.356429" at="0x7f8301160000"/>

In [7]: %%timeit
   ...: rand_sorted = content.sort(0, True, True)
   ...:
   ...:
18.8 ms ± 157 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

vs previously implemented using an std::sort:
In [3]: content = ak.layout.NumpyArray(np.random.rand(100000))

In [4]: %%timeit
   ...: rand_sorted = content.sort(0, True, True)
   ...:
   ...:
22.7 ms ± 231 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)

vs Numpy sort implementation (is this the price we pay for not sorting in place?):
In [8]: nparr = np.random.rand(100000)

In [9]: %%timeit
    ...: nrand_sorted = np.sort(nparr)
    ...:
    ...:
6.13 ms ± 45.4 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

This PR sort on a larger array:
In [12]: content2 = ak.layout.NumpyArray(np.random.rand(1000000))

In [13]: %%timeit
    ...: rand_sorted2 = content2.sort(0, True, True)
    ...:
    ...:
221 ms ± 3.02 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

vs using an std::sort-based implementation:
In [5]: content2 = ak.layout.NumpyArray(np.random.rand(1000000))

In [6]: %%timeit
   ...: rand_sorted2 = content2.sort(0, True, True)
   ...:
   ...:
326 ms ± 20.2 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

finally:
In [14]: content3 = ak.layout.NumpyArray(np.random.rand(10000000))

In [15]: %%timeit
    ...: rand_sorted3 = content3.sort(0, True, True)
    ...:
    ...:
2.53 s ± 15.4 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

vs
In [7]: content3 = ak.layout.NumpyArray(np.random.rand(10000000))

In [8]: %%timeit
   ...: rand_sorted3 = content3.sort(0, True, True)
   ...:
   ...:
5.52 s ± 103 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

Before I merge it, I need to know that it doesn't change the inputs (that it's an immutable operation) and that you're happy with it. I think it would be a little difficult to remove a commit, so let's be sure before putting it in.
On the performance tests: true ones in which the standard deviation is ten times larger than the mean are inconclusive. They'll need larger samples or repeated runs off the same samples so that caches get filled and the variances settle down. That said, I can't imagine that our own implementation would beat one from the standard library in the common single-big-list case.
The motivation for implementing our own sorting library was to control it, to ensure that what happens on the GPU is the same. However, for sorting, the specification is clear: it has to put the elements in the right order. It's understood that we'll use different algorithms on the CPU and GPU to get the same outcome. The only user-visible difference could be in how some-value elements are treated in two unstable argsorts, but we can argue that the correct order of these are undefined, if we do have such a difference.
One place where performance might favor your hand-written quicksort is in sorting of many small lists. That's a much more likely physics use-case than the single-large-list that sorting is usually optimized for. If you make a large ListOffsetArray full of many small lists (3, 5, 10, 20 elements), you might find that your hand-written quicksort beats the standard library one because this tests a different aspect of the algorithm: how quickly it can set up and tear down as it moves from one list to the next. Surely, the standard library algorithms weren't designed for that, but that's what physicists need (sorting sets of particles in each independent event).
Finally, though, we don't necessarily want to get rid of the standard library version in favor of the hand-written quicksort: we want to provide the same options as NumPy: np.sort. There, a pure quicksort is the default, but they have two other algorithms ("stable" is a synonym) and one of them might correspond with the standard library algorithm. It's that true? (We talked about this, but I don't remember the outcome.) In that case, we'd want both, and I'd introduce the kind argument to the high-level function to choose between them.

Before I merge it, I need to know that it doesn't change the inputs (that it's an immutable operation) and that you're happy with it. I think it would be a little difficult to remove a commit, so let's be sure before putting it in.
On the performance tests: true ones in which the standard deviation is ten times larger than the mean are inconclusive. They'll need larger samples or repeated runs off the same samples so that caches get filled and the variances settle down. That said, I can't imagine that our own implementation would beat one from the standard library in the common single-big-list case.
The motivation for implementing our own sorting library was to control it, to ensure that what happens on the GPU is the same. However, for sorting, the specification is clear: it has to put the elements in the right order. It's understood that we'll use different algorithms on the CPU and GPU to get the same outcome. The only user-visible difference could be in how some-value elements are treated in two unstable argsorts, but we can argue that the correct order of these are undefined, if we do have such a difference.
One place where performance might favor your hand-written quicksort is in sorting of many small lists. That's a much more likely physics use-case than the single-large-list that sorting is usually optimized for. If you make a large ListOffsetArray full of many small lists (3, 5, 10, 20 elements), you might find that your hand-written quicksort beats the standard library one because this tests a different aspect of the algorithm: how quickly it can set up and tear down as it moves from one list to the next. Surely, the standard library algorithms weren't designed for that, but that's what physicists need (sorting sets of particles in each independent event).
Finally, though, we don't necessarily want to get rid of the standard library version in favor of the hand-written quicksort: we want to provide the same options as NumPy: np.sort. There, a pure quicksort is the default, but they have two other algorithms ("stable" is a synonym) and one of them might correspond with the standard library algorithm. It's that true? (We talked about this, but I don't remember the outcome.) In that case, we'd want both, and I'd introduce the kind argument to the high-level function to choose between them.

Before I merge it, I need to know that it doesn't change the inputs (that it's an immutable operation) and that you're happy with it. I think it would be a little difficult to remove a commit, so let's be sure before putting it in.

It does not change the input. I have another commit to push removing the comment and unifying awkward_sort and awkward_quick_sort. They both use the same algorithm, no need for code duplication. Or would you rather keep an std-based awkward_sort and have an awkward_quick_sort as an option?.

On the performance tests: true ones in which the standard deviation is ten times larger than the mean are inconclusive. They'll need larger samples or repeated runs off the same samples so that caches get filled and the variances settle down. That said, I can't imagine that our own implementation would beat one from the standard library in the common single-big-list case.

agree.

The motivation for implementing our own sorting library was to control it, to ensure that what happens on the GPU is the same. However, for sorting, the specification is clear: it has to put the elements in the right order. It's understood that we'll use different algorithms on the CPU and GPU to get the same outcome. The only user-visible difference could be in how some-value elements are treated in two unstable argsorts, but we can argue that the correct order of these are undefined, if we do have such a difference.

yes, unfortunately, there is a difference.

One place where performance might favor your hand-written quicksort is in sorting of many small lists. That's a much more likely physics use-case than the single-large-list that sorting is usually optimized for. If you make a large ListOffsetArray full of many small lists (3, 5, 10, 20 elements), you might find that your hand-written quicksort beats the standard library one because this tests a different aspect of the algorithm: how quickly it can set up and tear down as it moves from one list to the next. Surely, the standard library algorithms weren't designed for that, but that's what physicists need (sorting sets of particles in each independent event).

yes. Also, this is where we can parallelize, I think

Finally, though, we don't necessarily want to get rid of the standard library version in favor of the hand-written quicksort: we want to provide the same options as NumPy: np.sort. There, a pure quicksort is the default, but they have two other algorithms ("stable" is a synonym) and one of them might correspond with the standard library algorithm. It's that true? (We talked about this, but I don't remember the outcome.) In that case, we'd want both, and I'd introduce the kind argument to the high-level function to choose between them.

Ok, I think, it's best to have both for the moment. I'll update the PR.

Before I merge it, I need to know that it doesn't change the inputs (that it's an immutable operation) and that you're happy with it. I think it would be a little difficult to remove a commit, so let's be sure before putting it in.

It does not change the input. I have another commit to push removing the comment and unifying awkward_sort and awkward_quick_sort. They both use the same algorithm, no need for code duplication. Or would you rather keep an std-based awkward_sort and have an awkward_quick_sort as an option?.

On the performance tests: true ones in which the standard deviation is ten times larger than the mean are inconclusive. They'll need larger samples or repeated runs off the same samples so that caches get filled and the variances settle down. That said, I can't imagine that our own implementation would beat one from the standard library in the common single-big-list case.

agree.

The motivation for implementing our own sorting library was to control it, to ensure that what happens on the GPU is the same. However, for sorting, the specification is clear: it has to put the elements in the right order. It's understood that we'll use different algorithms on the CPU and GPU to get the same outcome. The only user-visible difference could be in how some-value elements are treated in two unstable argsorts, but we can argue that the correct order of these are undefined, if we do have such a difference.

yes, unfortunately, there is a difference.

One place where performance might favor your hand-written quicksort is in sorting of many small lists. That's a much more likely physics use-case than the single-large-list that sorting is usually optimized for. If you make a large ListOffsetArray full of many small lists (3, 5, 10, 20 elements), you might find that your hand-written quicksort beats the standard library one because this tests a different aspect of the algorithm: how quickly it can set up and tear down as it moves from one list to the next. Surely, the standard library algorithms weren't designed for that, but that's what physicists need (sorting sets of particles in each independent event).

yes. Also, this is where we can parallelize, I think

Finally, though, we don't necessarily want to get rid of the standard library version in favor of the hand-written quicksort: we want to provide the same options as NumPy: np.sort. There, a pure quicksort is the default, but they have two other algorithms ("stable" is a synonym) and one of them might correspond with the standard library algorithm. It's that true? (We talked about this, but I don't remember the outcome.) In that case, we'd want both, and I'd introduce the kind argument to the high-level function to choose between them.

Ok, I think, it's best to have both for the moment. I'll update the PR.

@jpivarski - I'm done with this PR. Could you, please, review it? Thanks.

@jpivarski - I'm done with this PR. Could you, please, review it? Thanks.


Jest test failed

Description
I try to implement some test via Jest and @testing-library/react-native, but I encountered this error:
TypeError: Cannot read property 'getScrollableNode' of null
Code
I use the Component together with Reanimated 2 in this way:
 const currentValue = useSharedValue(0);

  const animatedText = useDerivedValue(() =>
    withTiming(currentValue.value, {
      duration: 1000,
      easing: Easing.inOut(Easing.linear),
    }),
  );

  const animatedProps = useAnimatedProps(() => {
    return {
      text: animatedText.value,
    };
  });

  useEffect(() => {
    currentValue.value = value;
  }, [currentValue, value]);

  return (
    <AnimateableText
      animatedProps={animatedProps}
    />

The code works perfectly as expected, Just tests failed with error above
Packages

react-native: 0.64.2
react-native-animateable-text: 0.6.2
react-native-reanimated: 2.2.0

Any idea?

Sorry for the late reply. I don't know, maybe a mock is missing. We are working on improving some of our tests, if I get a chance I'll check it out as well.

Ran into this after doing library upgrades for react-native 0.74.x and reanimated (as well as a few other libraries).
If you want to simply bypass the error just add this to your mocks directory.
Not perfect at all because it's nullifying the animated part of this library but your tests will hopefully pass and text will render.
// in __mocks__/react-native-animateable-text.js
const {Text} = require('react-native');

export default ({animatedProps, style}) => {
  return (
    <Text style={[style, {color: animatedProps.initial.value.color}]}>
      {animatedProps.initial.value.text}
    </Text>
  );
};


fix: pull request review state users

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


Fix subnav item padding

This PR reduces the excessive right padding on subnav items.
Before

After

You can preview this change here:
Built with commit 5ac69ca3964ce8da4afc19cac3cdc7b608b2a73d
https://deploy-preview-356--govuk-design-system-preview.netlify.com


Artifacts are missing in maven

1.12.0 artifacts are missing in maven central.

Yep, CI was broken.
It's fixed now ;)


#861md0k6y

Removing the floating entity happened after checking if the current mouse position was over ui. The asset could still be inside the scene during the dragging process, but the mouse not.
Now it looks at the last position of the mouse while dragging when checking if it should replace the floating entity.

Task linked: CU-861md0k6y Fix: When dragging an asset very quickly into the scene, the asset doesn't appear in the hierarchy but is shown as 3d model


Fix typo on keynote page

Types of changes

[ ] Bugfix
[ ] New feature
[ ] Refactoring
[ ] Breaking change (any change that would cause existing functionality to not work as expected)
[ ] Documentation Update
[x] Other (fix typo)

Description
Fix typo, grammar issue, and punctuation issue on keynote page.
Steps to Test This Pull Request

Go to keynote page

Expected behavior
No typo
More Information
Check the details in #860

Codecov Report

Merging #869 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #869   +/-   ##
=======================================
  Coverage   75.98%   75.98%
=======================================
  Files          70       70
  Lines        2727     2727
=======================================
  Hits         2072     2072
  Misses        655      655

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 2cd3920...f73fce5. Read the comment docs.


Update the documented ambassador image ambassadors

Related to #16602
@SvenDowideit would need to rebuild the container, except I don't think FROM docker-ut will work any more! I can create my own image from alpine and replace the image in the docs, but I assume you'd prefer to keep the officially documented ambassador image in-house?

Opened too soon...will reopen when ready

Can't reopen because I force pushed the branch to update, that's annoying - recreated at 16801.


Depreciated function SOURCE_TYPE_GPS

Please check Services, Known Bug / Issues and Troubleshooting over here first: https://github.com/fuatakgun/kia_uvo/blob/master/README.md
Region and Brand of car
Not related
Version of the integration
Latest  (2.18)
Describe the bug
A clear and concise description of what the bug is.
Erverything is still working
Debug logs if an error occurred
SOURCE_TYPE_GPS was used from kia_uvo, this is a deprecated constant which will be removed in HA Core 2025.1. Use SourceType.GPS instead
Outlined here: https://github.com/fuatakgun/kia_uvo/blob/master/README.md
To Reproduce
Expected behavior
Screenshots
If applicable, add screenshots to help explain your problem.
Additional context

To confirm you are saying we have over a year to do this?  Or is that a typo?

It was cut/paste, so I assume you will have a year.

They usually spare long enough time before deprecating these enums, thanks for heads up


[SC] Matured blocks improvements

General logging and result returning improvements around the mature block deposit provider. The main changes being that the controller now returns a full result class.
I am also still testing this with the test tool.
This PR can be reviewed commit by commit.

I have now tested these changes via the test tool and is well.

https://stratisplatformuk.visualstudio.com/StratisBitcoinFullNode/_workitems/edit/4069

Want to fix the conflicts @fassadlr ? And this can go in

I have tested these changes extensively on the test tool with deposits and withdrawals.


Version 0.6.0

Adding multiprocessing helpers, Tasker class and run_in_pool
Adding download and cmd helper functions
Adding ThreadedServer class, for running a server (defaults to local file server) in the background
Adding terminal analogue functions: cd, pwd, ls, pushd, popd
Adding match_case option for find_all_files and count_all_files
Fix 'run' call to CalledProcessError on older python versions
Changing logger to _logger to be hidden by default (should not be breaking, if so you coded wrong)

Coverage decreased (-0.3%) to 96.838% when pulling<PHONE_NUMBER>0fe93e5ac9122f4a5a37e89ca0a01c on develop into b23f33b8430a914d7c2ec7a78b5b01b9e284965f on master.

Coverage decreased (-0.4%) to 96.728% when pulling 20ac242215bebcc1c733d7158b9a5a2e44951a2f on develop into b23f33b8430a914d7c2ec7a78b5b01b9e284965f on master.


Webpack 5

Any plan to upgrade builder to webpack 5?

I've just tried to write a sketch plugin using @material/material-color-utilities', which uses the ?and??` operators. Webpack 4 does not understand these...
Using long-out-of date dependencies is not just a code smell, it reflects badly on your company's approach to application security, your OSS policy and best modern practices, such as SBOMs.


Train/Test Dataset Split and Preprocessing

I want to reproduce your results experimented on BRATS20 dataset reported in your paper. However, I have some troubles in processing that dataset. Could you share the way you split train/test dataset (may be a list of patient ids for each set) and how you normalize raw data into range between 0 and 1 ?

Me too. I need the split list as well

@JuliaWolleb Could you kindly share hyperparmeters for training classifier for BRATS dataset (i.e learning_rate, batch_size, anneal_lr, weight_decay, dropout) ? I tried your training settings in README, but it does not produce good results (much worse than your pretrained classifier checkpoint you provided). I think the hyperparameters in TRAINING_FLAGS are used for just training diffusion model, not for the classifier model. Since I refered to classifer hyperparmeters used in openai/guided_diffusion repository, it is completely different from your settings cited in README.

yes, for training the classifier, you need the CLASSIFIER_FLAGS and TRAIN_FLAGS of the README file. The default values are given in the classifier_defaults (https://github.com/JuliaWolleb/diffusion-anomaly/blob/509643c3c15fc5af7d4712aa7b1e8ba8a06214ff/guided_diffusion/script_util.py#L28). Then it should work fine.

Hi, I wrote a data set preprocessing code now, you can see if it can be used, please visit: https://github.com/JuliaWolleb/diffusion-anomaly/issues/19


I would like to be a part of the Milan community. Me and my teammates started a similar initiative but due to some issues, we could pull it off. So, I am willing to join the community and build something for the people.

Name
Yuvaraj Singh Nidyanand
Checklist ✅

[X] I have followed the organisation.
[X] I will abide by all the global rules stated here.
[X] NOTE: Don't forget after accepting to make it public so it appears on your GitHub profile for everyone else to see. Do this by finding your name in the GitHub organisation list and change the dropdown to public.

Wouldn't the collaboration be seamless if the Milan community has any social media? Like discord ? Or some sort?

@tamalCodes Is there any collaboration medium for this work?

Hi @YuvarajSingh-0 , this is an OpenSource project so we don't really have a dev team, everyone is contributing to the project voluntarily.
We don't really have social media as of now, reach out to<EMAIL_ADDRESS>for any kind of important messages. Other than you are free to look at the issues and contribute to the project along with everyone else !


Fix #20191

Fixes #20191 by only sorting associative arrays when comparing old/new array column values, recursively.

Q
A

Is bugfix?
✔

New feature?
❌

Breaks BC?
❌

Fixed issues
#20191

@brandonkelly would you please add a line for CHANGELOG? Thanks.

Don't we need a test for this?

@samdark Release note added.
@schmunk42 Test case added. Confirmed it fails on master and passes with my fix in place.

Thanks!


Please release Panga Boat Smuggling story map application demo

This demo is part of the UC 2016 presentation for Maritime Big Data.
Panga Boat Story Map
Panga Boat Intelligence FS- 93b2bcccc17c486e92720f1059a8f1a2
Panga Boat Intelligence MS - f83dc1f4959e4f4f85fc1e688c05160b
Panga Boat Photograph 1 - 6bc0234bc77c4828a28746b8f51a0fe3
Panga Boat Photograph 2 - b31a3859e24c4542b6546010a05b7723
Panga Boat Smuggling WebMap -55e63ff71694417e8cef863ffe7f7122
Panga Boat Smuggling Web App - 9342dd42160943aa9c2e76fa021d7c96

[ ] Panga Boat Intelligence FS- 93b2bcccc17c486e92720f1059a8f1a2, change owner to DemoMilitary.
Panga Boat Intelligence MS - f83dc1f4959e4f4f85fc1e688c05160b, change owner to DemoMilitary.
Panga Boat Photograph 1 - 6bc0234bc77c4828a28746b8f51a0fe3, change owner to DemoMilitary.
Panga Boat Photograph 2 - b31a3859e24c4542b6546010a05b7723, change owner to DemoMilitary.
Panga Boat Smuggling WebMap -55e63ff71694417e8cef863ffe7f7122, change owner to DemoMilitary.
Panga Boat Smuggling Web App - 9342dd42160943aa9c2e76fa021d7c96, change owner to DemoMilitary.

@jfrygeo All 6 items requested to be released have been released, i.e. ownership has been changed to DemoMilitary; also unshared with Demo Review group.
Please verify and then close this issue. Thanks.

Verified.


Revoke Installations

I'm happy to take the libxmtp and bindings side of this. Should be easy, since it's already supported in xmtp_id and is just another type of identity update.
Will need support getting it plumbed through to RN.
To actually do the revocation in an app like Converse you would need to sign a signature request and then pass it back in to the SDK.

Since I'm deep in the add wallet work right now I can take the SDK side if you get libxmtp setup. I could also probably help with bindings as well.

@neekolas to confirm this work Scott did here isn't related? https://github.com/xmtp/libxmtp/pull/889/files#diff-3a24c3e76565487a710ac9863ac05160128f4f90892e07849b555a6de43a6e8fR363-R377


spec: Removed reference to unsupported addIf attribute

Removes the "addIf" attribute from the example of a bridge network
definition. This doesn't appear to exist in the implementation.

lgtm, thanks for catching this


An update for an entity is not in OrgBook -- please investigate

We had a support request on OrgBook BC about asking about S0003066.  They noted that the last update to their registration is a "System to D1" on Feb 11, 2024.  Screenshot:

BC Registries investigated, and according to their records:

S0003066 was in dissolution status but they filed their AR and currently are active and in good standing.  Last A/R was filed on April 19, 2024.  S0003066 is not in dissolution.  There is no indication in the registry information of “System to D1”. From what I can see Orgbook has not updated information from February 2024.

Please investigate if/why/how OrgBook BC is not up to date, and if there is anything we need to do for this entity, and more broadly.
Thanks

I suspect the event in the COLIN database was manually edited.
We processed this company on Feb 22 (when the most recent credential was generated) and at the time the most recent company state was DN1, and the linked event was a SYSD1 ("event_id": 103124016).
We processed the company again on April 20 - no new credentials were issued because none of the relevant fields changed (the company was already reset to ACTive).  On April 20 the SYSD1 event didn't appear.

Note the event referenced above ("event_id": 103124016, with "event_timestmp": "2024-02-22T15:45:37+00:00") no longer exists in COLIN.

Hmmm....

So what is the state in COLIN?  Is it D1 or active?
Should the audit have picked this up?
Should we reprocess the company to see what happens?
Do we need to put in an Issue against Registries to see what happened with this?
How many more of these are in the pipeline...

Hmmm....

So what is the state in COLIN?  Is it D1 or active?
The state is Active in both COLIN and OrgBook.  The "D1" is just the event that triggered the state change (the only states we have in OrgBook are ACTive and HIStorical).  (There was a subsequent event that triggered the pipeline to re-process this company, but since none of the info in the credential changed we didn't post any updates to OrgBook.)
Should the audit have picked this up?
No - the Audit checks the state but not the "reason code" (the event that triggered the state change).
Should we reprocess the company to see what happens?
Yes I will do this.
Do we need to put in an Issue against Registries to see what happened with this?
Yes - I suspect the "D1"  event was manually removed (we have the full event info in our pipeline history but it is not in COLIN).  We need to be notified whenever there is a manual change like this.
How many more of these are in the pipeline...
Unknown - this is no something that the audit will pick up.  All the info in the credential in OrgBook is "correct" except the "reason code", which is derived from the event and not something we audit.

Got it — thanks.  Sigh...


[Dropdown] Search prevents dropdown from showing on click

If you have a dropdown with setting on: "click", adding class search to it prevents the dropdown from opening on click.
https://jsfiddle.net/dbr26njq/47/

@jukestar it is suppose to work like that. Adding the search class to the drop down, turns the drop down to a search box, but values of drop down can still be accessed by clicking on the drop down icon.
https://jsfiddle.net/2ujuymmo/

@pranav-kural ok. Is there any way to make clicking on the search, to open the dropdown?

Try this
$('.ui.dropdown').on("click", function(){   	$this = $(this).dropdown("show")   })

@jukestar @dhvsandeep that code should be able to open the dropdown on click. But however, if you want it work like a normal dropdown, and close on the second (or alternative) click, you would do something like this:
let x = 2;
$('.ui.dropdown').on("click", function() {  $(this).dropdown((x % 2 === 0) ? "show" : "hide"); x++; });

That will also help in not affecting the normal working of any other drop down you might be using. (like the second one in the jsfiddle)
jsfiddle: https://jsfiddle.net/2ujuymmo/3/

@jukestar
Please use the Gitter chatroom, the official forums or StackOverflow to ask usage questions; see the contributing guidelines for more information on what kind of posts should find themselves into the GitHub Issues board.


Enhance unbase_oci

Goal is to make unbase_oci tooling more user friendly and easy to consume for application developers
improvements:

allow passing image tags directly (with tag like docker://my-image:latest, make it similar to https://github.com/containers/skopeo?tab=readme-ov-file#copying-images)
Example usage: ./unbase_oci --ldd-dependencies ghcr.io/gardenlinux/gardenlinux:1592 ghcr.io/gardenlinux/glvd-api:latest  ghcr.io/gardenlinux/glvd-api:bare
make base image optional if it can be inferred (might not be good to do reliably) (can be set explicitly)
have default name for bare image (can be set explicitly)
Example usage: ./unbase_oci --ldd-dependencies ghcr.io/gardenlinux/glvd-api:latest
generate multi-arch image by default if the input image is multi-arch (like gl image, latest tag with both architectures)

make base image optional if it can be inferred (might not be good to do reliably) (can be set explicitly)

this could probably be done something like this:
#!/usr/bin/env bash

set -eufo pipefail

image="$1"
parent="$(podman image inspect "$image" | jq -r '.[0] | .Parent')"
repo_tag="null"
while [ "$repo_tag" == null ]; do
	if [ -z "$parent" ]; then
		echo "failed to determine base image" >&2
		exit 1
	fi
	repo_tag="$(podman image inspect "$parent" | jq -r '.[0] | .RepoTags.[0]')"
	parent="$(podman image inspect "$parent" | jq -r '.[0] | .Parent')"
done

echo "$repo_tag"

It will obviously only work if the base image and all images along the parent chain from input to base are available locally.
I tested that it works with a multistage Containerfile like the following:
FROM debian AS base
RUN apt-get update

FROM fedora AS rnd
RUN head -c 1M /dev/urandom > /rnd

FROM base
RUN id
COPY --from=rnd /rnd /rnd
RUN ls -lah /

In this case it correctly reports the base image as docker.io/library/debian:latest
Can anyone think of cases where this wont work? besides the obvious one where there simply aren't multiple layers (squashed or output from our builder)

make base image optional if it can be inferred (might not be good to do reliably) (can be set explicitly)
[...]
have default name for bare image (can be set explicitly) Example usage: ./unbase_oci --ldd-dependencies ghcr.io/gardenlinux/glvd-api:latest

Having these two option together would make it ambiguous which positional arg refers to which image input if there are 2.
Consider the case ./unbase_oci --ldd-dpendencies podman:imageA podman:imageB would this resolve to
base=imageA
input=imageB
output={auto determined}

OR
base={auto determined}
input=imageA
output=imageB

To avoid any confusion on which positional arg does what, I'd propose using an explicit auto value for the base image and always requiring to specify the output (default here would be hard to pick, since some might like :unbase_oci, :bare, or :distroless as the tag, there really isn't a good convention).
Maybe we can allow output syntax of the form :${tag}, where this implies, that the output is equal to ${input}:${tag}

allow only specifying the tag of the output image:
✅  https://github.com/gardenlinux/unbase_oci/commit/52f173ebbe9ca413a5bb5c7d506ae86c74386437
as a side effect this also work for the input image, so syntax like the following:
./unbase_oci podman:gardenlinux:base :sapmachine :sapmachine_unbased

is now equivalent to
./unbase_oci podman:gardenlinux:base podman:gardenlinux:sapmachine podman:gardenlinux:sapmachine_unbased

if any positional arg begins with : it copies the previous positional arg just replacing the tag

make base image optional if it can be inferred (might not be good to do reliably) (can be set explicitly)

✅ https://github.com/gardenlinux/unbase_oci/commit/ea1243f2f2dbf6926b3ab90332b65ba9dfd3fda5

generate multi-arch image by default if the input image is multi-arch (like gl image, latest tag with both architectures)

Building multi-arch images can't be done fully locally. This always involves some interaction with a repository, by first pushing each arch individually and then assembling the multi-arch manifest using the registries digests for each image.
Podman for example will also always only pull one arch of any given image and untag it if a different arch is pulled later.
We could maybe do some trickery with skopeo instead of using podman, but that would break the auto base determining feature. Therefore, unless someone has ideas to work around this, it appears unfeasible to add multi-arch support into unbase_oci.

Tried to use it here https://github.com/gardenlinux/glvd-api/pull/57/files
Q on multi-arch images: You can see in above PR how I did that previously by pulling the images for the specific arch and that seems to have worked. Is this not possible with the new way? I've tried multiple ways but none of them seems to really work. IMO this would be important. I'm fine if we don't build a real multi-arch manifest, but being able to build for amd and arm both in ci and on a developer laptop would be important imo.

arch flag in unbase_oci won't really work, as the local tags in your container engine are always only single arch. we are only exporting what is already in your container engines image store (otherwise the whole auto determine base won't work anyways).
So to build for a given arch just build the image with podman build --arch arm64 -t target
And then run ./unbase_oci --ldd-dependencies auto podman:target :unbased
Building with arch set will also (at least with new podman versions) fetch the correct version of the images used in FROM lines. For older versions of podman you might need to podman pull --arch arm64 ${base} first as otherwise it might create some frankenstein image partly one arch, partly another.


Monterey update does not work.

See photo attached

I should also point out the exact same config boots into Big Sur and has absolutely no issues.

I managed to fix this, the fix is as follows.

Double check your bios is set correctly according to the guide, even the seemingly mundane settings are very important.

Swap the ITLWM .kext with the newest DEBUG version (v2.0.0-alpha at the time of writing).
https://github.com/OpenIntelWireless/itlwm/releases

Swap the bluetooth .kext with the newest DEBUG version (V2.0.0 RC2 at the time of writing).
https://github.com/OpenIntelWireless/IntelBluetoothFirmware/releases

follow this guide to get the correct bluetooth .kext configuration, if you don't Bluetooth and Ultrabay HDD's will not work, and you will have a very long boot time with lots of errors.
https://github.com/OpenIntelWireless/IntelBluetoothFirmware/issues/295#issuecomment-861075343

use ProperTree (or your plist editor of choice) and  take a clean snapshot of your EFI.

Create a USB installer of Monterey and boot from it with your new EFI.

Job Done :)

the same problom, @Jcdowen could you please share you EFI ? thanks.

EFI - Monterey.zip
Here you go @FxPixels :).
(Generate your own SMBIOS info with:
https://github.com/corpnewt/GenSMBIOS


datalad: minor grammar fixes

great. Thank you for fixing these - sorry, I didn't catch these when checking it!


Event broadcast

Event broadcast allows multiple event's consumers to consume the same event and carry out concurrent tasks when an event is fired.

But events are broadcast already, aren't they? However, only one instance of each subscriber gets to consume. That is, if two services were to subscribe one instance of each service would consume the event. What are you trying to solve?

We need it for multiple web-socket servers, so the event is consumed for all instances that subscribe for that event.

The queue should be exclusive, otherwise they'll hang around for ever and accumulate messages that are never consumed. They also don't need to be durable.

Ok, the web-socket server problem makes sense. However, how's that broadcast flag going to solve it? once and broadcast literally do the same thing. What you want is to have an event consumed by every instance of a consumer.

It tried with once, but the queue is created for a subscriber and after one event is deleted, which makes the subscriber not receiving upcoming events. Could you explain to me what once else does!?

once is for a different use-case (only receive the next event and then unsubscribe).


Feature/#51 nullsafety

Fixes #51

We will merge the generator alongside the kiwi library in a new pull request


Kubescape 2

Description
Describe the big picture of your changes here to communicate to the maintainers why we should accept this pull request.
If it fixes a bug or resolves a feature request, be sure to link to that issue.
Type of change
What type of changes does your code introduce to the kube-prometheus? Put an x in the box that apply.

[ ] CHANGE (fix or feature that would cause existing functionality to not work as expected)
[ ] FEATURE (non-breaking change which adds functionality)
[ ] BUGFIX (non-breaking change which fixes an issue)
[ ] ENHANCEMENT (non-breaking change which improves existing functionality)
[ ] NONE (if none of the other choices apply. Example, tooling, build system, CI, docs, etc.)

Changelog entry
Please put a one-line changelog entry below. Later this will be copied to the changelog file.

Relates to stuck dependabot https://github.com/prometheus-operator/kube-prometheus/pull/1766


Use systemd drop-in instead of editting unit files

For the tpm2-abrmd systemd service, we were using ansible to edit the
file in place. A better approach is to use systemd drop-in files so we
can just override a couple attributes in a targetted way that won't be
disrupted if the system updates the unit file.
Fixes issue #39

Sorry to re-request review. Travis got stuck and it couldn't be approved. I pushed an amended form of the commit just changing 1 word in the comment to re-trigger Travis and things are now unstuck.

Apparently re-basing requires a new review ...?


Cannot find the source code of  Customize AdminLTE in Sidebar

Issue type:

[ ] Feature request
[x] Bug report
[ ] Documentation

Environment:

AdminLTE Version:
Operating System:
Browser (Version):

Description:

Cannot find the source code of  Customize AdminLTE in Sidebar

Excuse me,
how do I change the width of the left menu bar?
Thank you，
Can you speak Chinese?
myEmail<EMAIL_ADDRESS>


[Feature Request] Emigration from other platforms

Hi Trains team,
I have a cool idea that I want to share. Create a script that migrates experiments from other Machine Learning Platforms (e.g., MLflow) to Trains. I think it will be nice if Trains will provide a migration script that automates the migration process. What do you think about the idea?  I will be glad to help you create it.

Hi @tmankita
Yes, please !
This sounds like a great feature.
If you have a working fork with this feature please share it, if everything looks good, we can PR it :)
What do you say?

HI @bmartinn,
Yes, I have a working fork with this feature, but it currently supports only migration from the MLflow platform.
I created a  PR(#225 ) , so  you can take a look and try it.


Investigate a better benchmark dashboard

Right now we are using https://mako.dev/ as the dashboard to aggregate and present benchmark results. It's okay if we just have a few benchmarks to track; but as we are expanding the benchmark suite (which is a product of models/microbenchmarks x flavour x phones x hardware), it has a scalability problem: the system does not provide many configuration dimensions that we can map to the above and have flexible filtering to let different folks focusing on different subset of benchmarks of interest. Mako also performs analysis during result upload phaze and it does not have good integration with GitHub: one cannot easily see which commit is associated with a data point and easily go to the corresponding GitHub commit.
https://github.com/google/dana looks a better substitution. It is designed for benchmarking purpose, with flexible filtering, presentation, regression analysis etc.

We have https://perf.iree.dev now, powered by Dana. Marking as done.

hi @antiagainst , I'm very interested by your work on benchmarking models on different hardwares and backends. I really appreciate your explanations in this blogpost. Can you please share with me how you managed to use Dana? it's not documented well and the demo is full of errors.

@IlyasMoutawwakil thanks for the interest! It has been a while since I set that up; so I'm not sure I can systematically recall all the details and lay them out consistently. What's your problem? Maybe I can provide some hints there. Feel free to create issues in Dana repo and at me there; given this is the IREE repo.

@antiagainst Thanks I'll at you in the issue.


add flag to disable crash handler

Skips Crash Handler init when -disablecrashhandler is passed
Tier0::CommandLine cannot be used because we are too early for the hook.
On Linux the crash handler has a tendency to loop, shitting out dmp's over and over again.
Debuggers, including winedbg, don't make IsDebuggerPresent return true.

Further testing has shown that the crash handler was also the main reason why Northstar couldn't get in-game on Linux prior to Proton 8.
For debugging purposes this flag is useful even with future reworks.

On Linux the crash handler has a tendency to loop, shitting out dmp's over and over again.
Would prefer #477 tbh

Debuggers, including winedbg, don't make IsDebuggerPresent return true.
Why not solve this problem instead of doing this?

For debugging purposes this flag is useful even with future reworks.
How?

On Linux the crash handler has a tendency to loop, shitting out dmp's over and over again.

As it has been over 3 months since i re-worked the crash handler i don't remember what exactly caused this. But this isn't a linux only issue.

On Linux the crash handler has a tendency to loop, shitting out dmp's over and over again.

Would prefer #477 tbh
As it has been over 3 months since i re-worked the crash handler i don't remember what exactly caused this. But this isn't a linux only issue.

Now that you mention it, I do recall running into this while working on a Plugin on Windows.
Its likely that this behavior is not Linux specific but more common on Linux due to wine.

Debuggers, including winedbg, don't make IsDebuggerPresent return true.

Why not solve this problem instead of doing this?

How would we solve it?
Wine seemingly does so intentionally so there is nothing to upstream.
We could do it like Valve does any attempt to leave the wine prefix and check if the current process is being ptraced

For debugging purposes this flag is useful even with future reworks.

How?

You may want to attach instrumentation that does not set the BeingDebugged flag in the proceess
but not deal with the termination handler and so on.

How would we solve it?
Wine seemingly does so intentionally so there is nothing to upstream.

Not particularly sure, but from the winedbg documentation, "Wine does not report a debugger by default" which to me implies that you can make it report a debugger somehow. Not my domain really but yeah

You may want to attach instrumentation that does not set the BeingDebugged flag in the proceess
but not deal with the termination handler and so on.

Yeah sure, fair enough

merge conflicts on this atm btw

yeah idk, I don't really care about having this anymore.


a50 not reacting to win+arrow keys

the windows "native docking"

I'm having the same issue. It's also not snapping to the sides of the screen either

This is likely caused by the custom window borders - the window manager won't attempt to dock such windows. What we could do is emulate this behaviour by hooking Win-L/Win-R (if this is even possible)

By the way, switching to the "native" window style should function as a workaround

how was it possible before a49?

I think I've found it

Interesting.. how transparency affects window management
Can't wait for the new builds. :)

confirm it works now


Implement multi-part request transformer

@laurynasl-wix can provide you a reference implementation, if needed.

initial api suggestion would be:
sealed trait RequestPart
case class StringRequestPart(body: String, contentType: ContentType = TextPlain) extends RequestPart
case class BinaryRequestPart(body: Array[Byte], contentType: ContentType = BinaryStream) extends RequestPart
case class FileRequestPart(file: File, contentType: ContentType = BinaryStream) extends RequestPart

// handler
def withMultipartData(formParams: (String, RequestPart)*): RequestTransformer = ???

let me know if it feels natural to you ?
@pijusn @liucijus @nadavwe @jauniusb

resolved


Make sure pony doesn't install on Python 3.10

It needs the removed parser module.

Checklist

[x] Used a personal fork of the feedstock to propose changes
[ ] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[ ] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[ ] Ensured the license file is being packaged.

Diff:
❯ python recipe/show_diff.py
Downloading: https://conda.anaconda.org/conda-forge/noarch/repodata_from_packages.json.bz2
Downloading: https://conda.anaconda.org/conda-forge/noarch/repodata.json.bz2
noarch::cleanlab-1.0-pyhd8ed1ab_2.tar.bz2
-    "python =2.7|>=3.4",
+    "python ==2.7.*|>=3.4",
noarch::pony-0.7.13-pyh9f0ad1d_0.tar.bz2
-    "python"
+    "python >=2.7,<3.10"
noarch::pony-0.7.14-pyhd8ed1ab_0.tar.bz2
-    "python >=2.7"
+    "python >=2.7,<3.10"
Downloading: https://conda.anaconda.org/conda-forge/linux-64/repodata_from_packages.json.bz2
Downloading: https://conda.anaconda.org/conda-forge/linux-64/repodata.json.bz2
Downloading: https://conda.anaconda.org/conda-forge/linux-armv7l/repodata_from_packages.json.bz2
Downloading: https://conda.anaconda.org/conda-forge/linux-armv7l/repodata.json.bz2
Downloading: https://conda.anaconda.org/conda-forge/linux-aarch64/repodata_from_packages.json.bz2
Downloading: https://conda.anaconda.org/conda-forge/linux-aarch64/repodata.json.bz2
linux-aarch64::matrixswitch-1.0.0-mpi_mpich_h478e2f9_1.tar.bz2
-    "mpich >=3.4,<3.5.0a0",
+    "mpich >=3.4,<4.0.0a0",
Downloading: https://conda.anaconda.org/conda-forge/linux-ppc64le/repodata_from_packages.json.bz2
Downloading: https://conda.anaconda.org/conda-forge/linux-ppc64le/repodata.json.bz2
linux-ppc64le::matrixswitch-1.0.0-mpi_mpich_hb27407b_1.tar.bz2
-    "mpich >=3.4,<3.5.0a0",
+    "mpich >=3.4,<4.0.0a0",
Downloading: https://conda.anaconda.org/conda-forge/osx-64/repodata_from_packages.json.bz2
Downloading: https://conda.anaconda.org/conda-forge/osx-64/repodata.json.bz2
Downloading: https://conda.anaconda.org/conda-forge/osx-arm64/repodata_from_packages.json.bz2
Downloading: https://conda.anaconda.org/conda-forge/osx-arm64/repodata.json.bz2
Downloading: https://conda.anaconda.org/conda-forge/win-32/repodata_from_packages.json.bz2
Downloading: https://conda.anaconda.org/conda-forge/win-32/repodata.json.bz2
Downloading: https://conda.anaconda.org/conda-forge/win-64/repodata_from_packages.json.bz2
Downloading: https://conda.anaconda.org/conda-forge/win-64/repodata.json.bz2

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.


Allowing more special chars for author/source 'name '

Allowing more special chars in the name part with an url for author/source. Now the name <url> works also with space, ,, ., -, _, #, ` and ' .
For example, before this PR, it was not possible using names cointing this chars with URL like this:
Iain M. Banks <https://some.url> -> no name and url Iain M. Banks <https://some.url>
Now it would be as expected:
Iain M. Banks <https://some.url> -> name Iain M. Banks and url https://some.url
I did not add : for the name part, because there is some unexpected behavior due to the dectection of URLs. I will raise an issue for it.
Btw, this is my first time doing something with rust. So maybe, I did this not the idiomatic rust way.
Have fun,
someone.earth

I recognise the error but I don't think this is the right solution. Feel free to edit this PR (or close and create a new one) if you want to give it a try. 😄
If not, I will implement the fix this weekend probably.

I would like to align the approach with you for dealing with this (and possible the other issues here and here), before I would spend more time on this PR. If we were aligned, I should have some time to implement the aligned approach in the next days.

Closing this PR in favour of #14


Cleanup references to dead branches in .travis.yml

Once dead, cleanup references to dead branches in .travis.yml, such as "scala-2.10.x"
https://github.com/milessabin/shapeless/blob/23ace5c1d99a3fda0102755f2c4487976f5473f1/.travis.yml#L18

Fixed in 2e1a48ef5826e9df3b0aff66ea0d84341450a4a0.


ConvexPolygonShape2D problems with Auto Tiles

Godot version:
3.0.2-stable
OS/device including version:
Windows 10 (1709, x64)
Issue description:
My character can run into some walls while this should not be possible
with my collision setup (as far as I know).

I'm quite new to Godot 3, thus following this tutorial.
As I still have the problem when all tiles within the tile map have a collision box I think this might be a problem with the engine.
Minimal reproduction project:
Game.zip

Did you try turning on the Visibile Collision Shapes in the Debug menu? It'll show where the collision boxes are so it's easier to see whether there's a problem with your setup or with Godot.

Duplicate of #18197
This happens because you create a Concave shape.
In your case, you just need to recreate the collision that I'm showing in this gif below:

@guilhermefelipecgs How can I accidentally create a concave shape when I clearly selected convex polygon as the shape?
No matter how often I re-create the collision in the gif, the problem still occurs (while it is extremly hard to just select the red dot without selecting another collision...).

How can I accidentally create a concave shape when I clearly selected convex polygon as the shape?

Maybe you clicked twice in the same spot. You can enable grid snap to try to avoid this.
This dock need some UX improvements, especially in the red dots.

No matter how often I re-create the collision in the gif, the problem still occurs

Try this way:

Fixed project here: Game.zip

@guilhermefelipecgs Thx, now it is working while also learning some new things about the Editor. :)

Closing as duplicate of #18197.


TS settings

@keybase/react-hackers

@MarcoPolo Thanks!  That was easy.  Removed all the ts-ignores around connect() and namedConnect().


[New Feature] Tests for JS based components

🚀 Feature Request

Feature Description
When we write tests in test.tsx files, we are unable to test our components to its fullest as they error out.
We should probably write tests for JS and TS based projects separately

Example of tests in text component


Happen a no interface configured with that name when virtual net interface pass Validate

When the VM created by cpi setup, we could get 3 interfaces in /sys/class/net (ls /sys/class/net: lo, eth0, eth1). Agent got its settings which is listed below and then setup networks:
"networks":{"default":{"type":"manual","ip":"<IP_ADDRESS>","netmask":"<IP_ADDRESS>","gateway":"","resolved":false,"use_dhcp":false,"default":null,"dns":["<IP_ADDRESS>"],"mac":"","preconfigured":false,"alias":"eth0:0"},"dynamic":{"type":"dynamic","ip":"<IP_ADDRESS>","netmask":"<IP_ADDRESS>","gateway":"<IP_ADDRESS>","resolved":false,"use_dhcp":false,"default":["gateway","dns"],"dns":["<IP_ADDRESS>","<IP_ADDRESS>","<IP_ADDRESS>"],"mac":"06:f2:b7:01:a7:ca","preconfigured":false,"alias":"eth1"},"dynamic_1":{"type":"dynamic","ip":"<IP_ADDRESS>","netmask":"<IP_ADDRESS>","gateway":"","resolved":false,"use_dhcp":false,"default":null,"dns":["<IP_ADDRESS>","<IP_ADDRESS>","<IP_ADDRESS>"],"mac":"06:b7:d5:35:6b:7a","preconfigured":false,"alias":"eth0","routes":[{"Destination":"<IP_ADDRESS>","Gateway":"<IP_ADDRESS>","NetMask":"<IP_ADDRESS>"},{"Destination":"<IP_ADDRESS>","Gateway":"<IP_ADDRESS>","NetMask":"<IP_ADDRESS>"}]}}

Two dynamic networks are provided by the IaaS, The manual network is a virtual network interface based on the original net interface. These configurations could write to /etc/network/interfaces and be applied.
But when invoke net.interfaceAddressesValidator.Validate(staticAddresses) in code#1, a no interface configured with that name error with eth0:0 occured because systemInterfaceAddresses list didn't have the virtual interface.
2017-10-12_12:39:11.89281 [main] 2017/10/12 12:39:11 ERROR - App setup Running bootstrap: Setting up networking: Validating static network configuration: Validating network interface 'eth0:0' IP addresses, no interface configured with that name: <nil cause>

The temporary solution is to exclude virtual IP from validation as I could think around.
Could you please help us to tell some useful advise or add some mechanism for dealing with VIF-related problems in the bosh-agent.
Thank you, guys!

@EdwardStudy which IaaS are you running on? The CPIs currently have some limitations with regards to multiple networks. Please see table http://bosh.io/docs/networks.html#cpi-limitations for reference.

@voelzmo we are developing new CPI based on Softlayer. The dynamic networks can be assigned two physical interfaces(the eth0 is Softlayer's private network, the eth1 is Softlayer's public network) and the manual network is a virtual interface based on eth0 defined by network cloud_properties(like below manifest segment).
networks:
- name: default
  subnets:
  - cloud_properties:
      vlanIds:
      - 524954
    dns:
    - <IP_ADDRESS>
    gateway: <IP_ADDRESS>
    range: <IP_ADDRESS>/26
    static:
    - <IP_ADDRESS>
  type: manual

The networks were fine and bosh-cli could ping 3 ips successfully and deploy applications. But agent failed to validate interface addresses because of the virtual net interface. The detailed reason is that the virtual network interface is based on an original net interface.
So, should the bosh agent take the matter of the virtual network interfaces into account?

@EdwardStudy, you mention you're working on a new SoftLayer CPI, and it looks like you've run into cloudfoundry/bosh-softlayer-cpi-release before, but I was wondering if this is an issue when using the existing SoftLayer CPI?

@dpb587-pivotal In the existing SoftLayer CPI, network is configured by cpi. So there is no such problem in the existing SoftLayer CPI. And we met this issue because we want to use bosh-agent way to setup network in the future.
Thank you.

And I want to know if we occured same problems  in other IaaS.
How about to filter VIFs before invoke net.interfaceAddressesValidator.Validate(staticAddresses) ?

@EdwardStudy is this related to not implementing "aliasing". ie multiple networks actually reference to the same nic?

Yes. It is about VIFs.

i think we shoudl account for aliasing in validation portion.

@cppforlife Hi. Did you mean that use based interface to validate the virtual interface? Or any method else?


Changing Compiler Optimization Seems to have no affect.

In platforms.txt I changed the optimization level from -Os to -O2 and appears to have no affect performance.  Using a coremark sketch that I used before the issue becomes apparent.   See this post: https://forum.arduino.cc/t/changing-compiler-optimizations-had-no-affect/1150181/4.  In summary:
Uno R4 WiFi (48Mhz, -0s) -  81.81
Uno R4 WiFi (48Mhz, -02) -  81.81
UnoR4 Minima (-02) - 106.75
UnoR4 Minima (-0s) - 106.75

but when I change it for other boards:
Teensy 3.2 (48Mhz -0s)  -  86.23
Teensy 3.2 (48Mhz -02)  - 116.07
Feather M0 (48Mhz -0s)  -   48.61
Feather M0 (48Mhz -02)  -   83.85
CH32V307 Eval(48Mhz -0s) - 91.80
CH32V307 Eval(48Mhz -02) - 116.52

it appears to make a difference.  Is there something I am missing or can this be related to the micros issue.  From what I saw the time is calculated from using millis()
REF: https://github.com/PaulStoffregen/CoreMark

No idea about the coremark, but I just changed the three -Os it in AppData\Local\Arduino15\packages\arduino\hardware\renesas_uno\1.0.1\platform.txt to -O2 and -O0 and checked the timing with a logic analyzer.
Time between two SPI.transfer(data):
-Os: 11.064µs
-O0: 13.016µs
-O2: 10.828µs
This was in Atduino IDE 1.8.19.
So the setting does make a measureable difference.
You did not by any chance use "-0s" and "-02" as you posted instead of "-O2"?
I would argue though that -O2 should be the default setting with anything ARM, the size of the binary is generally not an issue with these.

@RudolphRiedel
Pretty sure I used -O2 and not 02.  But redid it this morning making sure I closed the IDE first so it would reload the platform.txt changes.  This time it worked:
MINIMA
CoreMark 1.0 : 81.80 / GCC7.2.1 20170904 (release) [ARM/embedded-7-branch revision 255204] (flags unknown) / STACK
CoreMark 1.0 : 106.73 / GCC7.2.1 20170904 (release) [ARM/embedded-7-branch revision 255204] (flags unknown) / STACK

WIFI
CoreMark 1.0 : 81.81 / GCC7.2.1 20170904 (release) [ARM/embedded-7-branch revision 255204] (flags unknown) / STACK
CoreMark 1.0 : 106.74 / GCC7.2.1 20170904 (release) [ARM/embedded-7-branch revision 255204] (flags unknown) / STACK

Going to close this out as a none issue.
PS.  I do agree with you that the default optimization should be -O2.  They probably should have made it selectable but that is another story.
Thanks for the verification


hasFieldOrPropertyWithValue not working with Conditions

Summary
Sometimes, i would like to check if a value of a field is simply not null, because i know it must be set with something, but what something is an implementation detail that my test does (or merely should) not care about.
Example
public class HttpClient {
    private String basic = null;

    public HttpClient() {}

    public HttpClient(String username, String password) {
        this.basic = "Basic " + new String(Base64.getEncoder().encode((username + ":" + password).getBytes()));
    }
}

public class MyService {

    public HttpClient createHttpClient(String username, String password) {
        return HttpClient(username, password);
    }
}

public class MyServiceTest {

    @Test void createsBasicAuthHttpClient() {
        HttpClient result = new MyService().createHttpClient("john.doe", "$3CR3T");

        Assertions.assertThat(result).isExactlyInstanceOf(HttpClient.class)
            .hasFieldOrPropertyWithValue("basic", not(null));
    }
}

The test fails – ironically, the test output reads:
java.lang.AssertionError:
Expecting
  HttpClient@46b61c56
to have a property or a field named "basic" with value
  not :<null>
but value was:
  "Basic am9obi5kb2U6JDNDUjNU"
(static and synthetic fields are ignored)

Not sure if this a bug or a (missing) feature. Anyway, would be really nice to be able to test this – currently i'm clueless about any workaround other than using the pickaxe (Reflection) to get the value out and then check it in a separate, not chained command à la assertThat(valuePickaxedOutViaReflection).isNotNull();

btw – i believe the placement of the space character in the output could be improved. Currently it is not :<null>, but imho not: <null> is a more natural formatting.

You can do something like:
assertThat(result).isExactlyInstanceOf(HttpClient.class)
            .extracting("basic")
            .isNotNull();

You can do something like:
assertThat(result).isExactlyInstanceOf(HttpClient.class)
            .extracting("basic")
            .isNotNull();

Thanks, that is nice a workaround.
However, in my real world example HttpClient has more fields that i would like to also check, but using extracting() ends the fluent assertion chain. So suppose i want to check two more fields after that in the same assertion being null, not null, or any specific value (like it's possible with hasFieldOrPropertyWithValue or returns), how would that be done?

Is HttpClient exposing getters or everything has to be checked via reflection?
Another option could be the recursive comparison.

Is HttpClient exposing getters or everything has to be checked via reflection?

No getters in sight – but if there were any, i still couldn't use .returns(not(null), HttpClient::getBasic – or could i?

Another option could be the recursive comparison.

I am not sure how i could apply these to the given problem – if you see how, could you provide an example?

It would help if you could enhance your example so that it is closer to the real needs.

I've updated my code example above now and hope this becomes clearer now.
Maybe i've been playing around with Mockito a bit too much in the last weeks and got really accustomed to it's ArgumentMatchers, allowing all kinds of assertions when narrowing down what to catch (e.g. endsWith(), contains(), etc.) and when i discovered Assertions.not() in AssertJ, i assumed i could apply it anywhere, but apparently that's not the way it works... at least currently.

We have limited support for Condition it's mainly an extension mechanism, AssertJ does not provide conditions out of the box as it does for assertions.
If that's what you are looking for you can try Hamcrest (https://www.baeldung.com/java-junit-hamcrest-guide) which is designed towards assertions composition (at the price of assertiona discovery IMO).

@Philzen not the nicest code. However, you could still achieve what you are looking for with:
assertThat(result).isExactlyInstanceOf(HttpClient.class)
            .extracting("basic", "bearerToken")
            .satisfies(basic -> {
                assertThat(basic).isNotNull();
            }, atIndex(0))
            .satisfies(bearerToken -> {
                assertThat(bearer).isNull();
            }, atIndex(1));

In any case, @joel-costigliola and @scordio perhaps something like
assertThat(result).isExactlyInstanceOf(HttpClient.class)
            .fieldOrPropertySatisfies("basic", basic -> {
                assertThat(basic).isNotNull();
            })
            .fieldOrPropertySatisfies("bearerToken", bearerToken -> {
                assertThat(bearerToken).isNull();
            });

Could be added to the API of AssertJ  to make  it easier to achieve something like that.
However, I am not sure whether it is worth doing it or not, since you can always write
assertThat(result).isExactlyInstanceOf(HttpClient.class)
            .extracting("basic")
            .isNotNull();
assertThat(result)
            .extracting("bearer")
            .isNull();

@Philzen not the nicest code.

@filiphr it's the assignment i was given, to write tests for an existing code base ... i guess we feel each other :wink:

We have limited support for Condition it's mainly an extension mechanism, AssertJ does not provide conditions out of the box as it does for assertions.

@joel-costigliola Thank you for the clarification, i merely wanted to report this to check on wether this is a bug, or could be implemented as a feasible feature, given Conditions work on many other AssertJ-methods. If that's a no-go or to be considered rejected for the AssertJ-roadmap i'm all fine with having this issue closed, as i know at least two more workarounds from the dicussion above.

If that's what you are looking for you can try Hamcrest (https://www.baeldung.com/java-junit-hamcrest-guide) which is designed towards assertions composition (at the price of assertiona discovery IMO).

Not really an option as there are thousands of test code lines already written using AssertJ and i really prefer its fluent/behavioral style API.

@filiphr it's the assignment i was given, to write tests for an existing code base ... i guess we feel each other 😉

Just to clarify @Philzen. I didn't mean that your code is not the nicest on. My proposal was not the nicest code 😄


Maximum call stack size exceeded

In my project, I try to reuse webpack configuration in styleguidist configuration:
const path = require("path");
const glob = require('glob');

const siteWebpack = require("./webpack.config.js");

module.exports = {
  title: 'Swap.com styleguide',
  components: '../react/components/**/*.jsx',
  updateWebpackConfig(webpackConfig) {
    siteWebpack.module.loaders.forEach(function(loader) {
      webpackConfig.module.loaders.push(loader);
    });
    webpackConfig.module.noParse = siteWebpack.module.noParse;
    siteWebpack.plugins.forEach(function(plugin) {
       webpackConfig.plugins.push(plugin);
    });
    webpackConfig.postcss = siteWebpack.postcss;

    return webpackConfig;
  },
  assetsDir: '../../assets',
  template: './client-src/webpack/styleguide.template.html'
};

Also, my webpack configuration has new webpack.HotModuleReplacementPlugin() as one of its plugins:
  plugins: [
    new webpack.HotModuleReplacementPlugin(),
    new ExtractTextPlugin("[name].css"),
    new webpack.optimize.CommonsChunkPlugin({
      name: "base",
      filename: "js/base.js",
      minChunks: 2,
      chunks: ["js/home", "js/items"],
    }),
  ]

It comes into the the list of styleguidist's plugins as well. Then, because of that, when it get to hot reloading, I get "Maximum call stack size exceeded" error. I guess it is related to this: https://github.com/webpack/webpack/issues/1583
Is there any suggestion, what should I do to work around? The plugins are array, so I don't see easy way to filter the HotModuleReplacementPlugin out. However, I think that reusing webpack configuration is obvious need and many others may face the same problem.

UPD: I came up with this solution
+      if (plugin.constructor.name == 'HotModuleReplacementPlugin') {
+        return;
+      }
+      webpackConfig.plugins.push(plugin);
``

But not sure if you would recommend it to other users.

But why do you need any of this plugins in the styleguide? I see point in loaders reusing but not much for plugins.


docs: document limits in string fields

Description

I will also update v7.6.x docs when #6670 is merged.
closes: #6666

Before we can merge this PR, please make sure that all the following items have been
checked off. If any of the checklist items are not applicable, please leave them but
write a little note why.

[x] Targeted PR against the correct branch (see CONTRIBUTING.md).
[ ] Linked to GitHub issue with discussion and accepted design, OR link to spec that describes this work.
[ ] Code follows the module structure standards and Go style guide.
[ ] Wrote unit and integration tests.
[ ] Updated relevant documentation (docs/).
[ ] Added relevant godoc comments.
[ ] Provide a conventional commit message to follow the repository standards.
[ ] Include a descriptive changelog entry when appropriate. This may be left to the discretion of the PR reviewers. (e.g. chores should be omitted from changelog)
[ ] Re-reviewed Files changed in the GitHub PR explorer.
[ ] Review SonarCloud Report in the comment section below once CI passes.

pr for issue 6666 is fire though 😄 we should also make sure to mention destinationMemo after forwarding. I leave it up to you to add here after the feature branch is merged to main or as a separate PR.

I think I prefer to add this one as part of https://github.com/cosmos/ibc-go/issues/6608. I will add your comment to the issue so that we don't forget about it.


Add --strip-extras feature to wrap pip-compile flag

Access to this flag would be useful to me. Any willingness to add this?

Thanks, I'm happy to merge this PR. Please give some love to docstrings. You can use this feature as an example: https://github.com/peterdemin/pip-compile-multi/blob/master/pipcompilemulti/features/unsafe.py

Thanks, releasing in 2.6.4


[Titus] Pandas support

I would like to suggest adding Pandas support so there would be no need in record-by-record data-copying.

@frol you can easily convert pandas df to list of jsons:
import json
data = json.loads(df.to_json(orient = 'records'))
for datum in data:
    engine.action(datum)

You can check out the latest release at https://github.com/animator/titus2 and report any future issues.
Regards.


new update blade and soul

the server put the update and now the program does not display the damage

It is not actively maintained as the front page says. Someone should find the offsets for the new one though

Is there any type of guide how to find the offsets for games?

I asked the original developer if he had any notes regarding this. If he doesn't, I'll try and find em myself and share what I can find

I received a new offset from a friend and updated the .cs file (not the DLL -that won't work anymore).  Give that a try and let me know if it works.

Everything works, thank you

Thank you and your friend for the new offsets.
Is it possible to ask your friend how he got the offsets if hes willing to share? If we can find the offsets ourselves we could potentially keep the Plugin a live for a little bit longer if we aren't too savvy.

Is it possible to make a new release since i have no clue how to convert a .cs into .dll?

Chimiko, clone the .cs plugin and just add it like normal. It doesn't need to be in a dll format.

Clone it? Mind explaning? Im sure more people are going to come here not knowing what to do =)
If you don't mind that is.

Chimiko, you can either use the Github Desktop App and add the repository to clone or the easiest way is right click the BNS_ACT_PLUGINS.cs and click "Save link as" and it should be saved as a .cs.
Alternatively you can copy the code and paste it into a word processing program (Notepad++) and save it as a .cs. Those are the easiest methods.

Regarding a technique to find the memory locations, my friend did not want to disclose his methods, so I will give some suggestions.  When I have tried it previously, I search for unique chat text as Unicode characters using Cheat Engine or other similar software.  Then, I search for pointer references to the memory location that have a similar set of offsets as the current code.  You can find these in the cs file on Github.
  It isn't the best technique, but I caution about posting other ideas publicly, such as specific memory signatures, just in case they become too commonplace.
Closing this topic for now.


No completion for imported symbols at intero prompt

$ intero
WARNING: it is HIGHLY RECOMMENDED to use intero with stack:

  To install:
    stack build intero

  To run with no project:
    stack exec intero
  To run with your project:
    stack ghci --with-ghc intero

Intero 0.1.16 (GHC 8.0.1)
Type :intro and press enter for an introduction of the standard commands.

λ> import Data.List
λ> sor[Tab]

Would expect to get completion on sort but no such thing happens.

This was fixed by https://github.com/commercialhaskell/intero/commit/897cb329ef08728642346530a668211120e7df4a#diff-a469118375854c9ae9408cbd3bb03b39L2274


API 2.0 Documentation Update: Specify Minimum Permissions Required

he documentation page https://github.com/AdobeDocs/analytics-2.0-apis/blob/master/jwt.md describes the profile/permission requirements

Note: As part of the process of creating your JWT client, you need to select product profiles to be associated with your integration. Be sure that the product profiles have the correct Adobe Analytics permissions to access the Adobe Analytics APIs.

I think we should provide more information than this, because it took me a lot of time and experimentation before I was able to land on the permissions that were required.
I found that there are 5 sections underneath a profile in the Analytics Admin:

Report Suites
Metrics
Dimensions
Report Suite Tools
Analytics tools

In order to get my adobe.io integration to work, I had to add the following permissions in a profile that was added under "Developer" in the Exp Cloud admin.

add the proper report suites under "Report Suites"
add the proper metrics needed under "Metrics"
add the proper dimensions needed under "Dimensions"

It doesn't appear that I needed to add any permissions under "Report Suite Tools” or “Analytics tools”.   I should admit that I'm still new to the API 2.0, however, I can confirm that the settings above allowed me to successfully make API calls (including ones with segments)
After a profile with these permissions has been created, then I was able to associated that profile with my user's integration in the adobe.io console and was then able to make API calls.
I think it would be extremely helpful for the other/future users of the API 2.0 if we clearly spelled this sort of thing out.

https://github.com/AdobeDocs/analytics-2.0-apis/pull/77


Go application not detected according to README requirements

Hi!
In the readme, it states:

This buildpack will detect your repository as Go if it contains a .go file.

However, this is not true, as in detect it checks for Godeps or gb configurations. That means that if a simple repo with only main.go in it is tested, detect will fail. The repo must either have a Godeps folder and Godeps.json, or a src directory with a go file in it.
I am happy to make a PR, but please let me know which you would prefer:

Change README to reflect actual behavior
Add detect line to find go files in the root
Something else?

Thanks!
:heart: @ngauthier

It would have to be #1 or #3. It's very possible to get valid go repos that contain no .go files in the root of the repo. We also shouldn't blindly search for any .go files either and I've seen valid repos that are ruby apps that contain .go files. I am open to other suggestions or improvements though.

After digging more I realized your compile system depends on godeps or gb, so we'd have to write a new one for when those aren't present. I'll submit a pr to update the readme.

At the very least the Godeps.json file is required with some minimal info, see here: https://github.com/heroku/heroku-buildpack-go/issues/114#issuecomment-196542765


Modified #196 - Add ripple in session detail page toolbar

Closes: #196
I was going to add ripple effect in session detail page toolbar in above issue.
Please check this PR.
Below is the screen shot:

Wow! Thanks! I didn't know this solution :bow:

LGTM :+1:


Feature: Add .seek() method

Problem
Describe the problem related to this feature request.
I would like to be able to rewind or fast forward the playback of a song.
Solution
What solution do you suggest to solve this problem?
Add a .seek(*position*) method to MidiPlayer so that users can change the position of the playback.

I write this solution.
Thank you.
https://github.com/normaluniversity/web-midi-player/tree/patch-1


Script being force closed after starting to download files and stalling

just updated to 3.2.5, i made sure to uninstall first then install both times using pipx
The script starts up, i select the user i want to download and what content of theirs i want, it starts to download, but i hangs, then shows as failed with the script being force closed and showing this error.

When i look in my download location it's only managed to get the profile picture.

It is probably crashing, but I need to push a fix that pushing the correct exception up the chain

don't know if it'll help but here's the a debug logfile.
ofscraper_main_profile_2023-09-03.log

The last commit I made will print the traceback
So that should help in finding the cause

Seems to just bee the same for me, when it gets to downloading it shows 2 photos under the progress section. it downloads maybe 3MB, basically the profile pic and then just sits there until eventually the number of failed items in the progress section starts going up and then the script closes.
ofscraper_main_profile_2023-09-05.log

See if that works otherwise share your config

I feel like a proper idiot now, yep that fixed it.


Update obj2winmd to propgate exceptions across ABI boundary.

This change is

@mukhole is added to the review. #Closed


editor.selectionClipboard doesn't disable middle click paste

Issue Type: Bug
#14610 says that you can turn off middle click/scrollwheel paste on linux by setting editor.selectionClipboard to false. However this doesn't work. I am constantly pasteing by mistake when scrolling and I don't even notice until I try to build and it fails.
Repo Steps:

Go to File->Preferences-Settings
Search editor.selectionClipboard
untick in both User Settings and Workspace Settings
Go to a file
Copy some text
Use Middle Click/ScrollWheel click
Notice that the text was pasted

I also tried closing and reopening vscode but that doesn't help either
I'm running on Ubuntu 18.04
VS Code version: Code 1.28.2 (7f3ce96ff4729c91352ae6def877e59c561f4850, 2018-10-17T00:20:56.183Z)
OS version: Linux x64 4.15.0-36-generic

System Info

Item
Value

CPUs
Intel(R) Core(TM) i5-2500K CPU @ 3.30GHz (4 x 3529)

GPU Status
2d_canvas: enabledchecker_imaging: disabled_offflash_3d: enabledflash_stage3d: enabledflash_stage3d_baseline: enabledgpu_compositing: enabledmultiple_raster_threads: enabled_onnative_gpu_memory_buffers: disabled_softwarerasterization: disabled_softwarevideo_decode: unavailable_softwarevideo_encode: unavailable_softwarewebgl: enabledwebgl2: enabled

Load (avg)
1, 1, 1

Memory (System)
15.58GB (1.62GB free)

Process Argv
.

Screen Reader
no

VM
0%

Extensions (4)

Extension
Author (truncated)
Version

EditorConfig
Edi
0.12.5

cpptools
ms-
0.20.1

csharp
ms-
1.17.0

clang-format
xav
1.6.2

/duplicate #49305


docs(tools): mention how to use extras

Summary
Figured this could be helpful to mention in the documentation, as it might not be obvious that this is possible.
Test Plan
Tested the commands locally.

Thanks!


⚠ Jenkins Plugins Artifactory has degraded performance

In 264aeed, Jenkins Plugins Artifactory (https://get.jenkins.io/plugins/artifactory/) experienced degraded performance:

HTTP code: 200
Response time: 1396 ms

Resolved: Jenkins Plugins Artifactory performance has improved in 92b457a after 32 minutes.


Gus getitem

Allow tuples and named tuple to be sliced on negative integers (up to, and including, minus the length of the tuple). Previously this failed under entrypoint.
Also allow expressions like '-1' to be interpreted as constants by the compiler. Previously it was treated as a typed expression consisting of a constant '1' and a native ast 'Negate'. Before this change, the compiler would not know the output type of 'tup[-1]' for a tuple tup beyond OneOf(*type(tup).ElementTypes).
Also includes a minor change where constant typed expressions are treated by the compiler without direct reference to their internals (a trivial change since they already carry their associated python constants on the surface).
Fixes #347

Motivation and Context

Approach

How Has This Been Tested?

Screenshots or console output (if appropriate)

Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)

Checklist:

[ ] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.

@braxtonmckee  Fixed your complaint


cmd/scollector: Cmdline flag to set reported hostname

I think this was moved to be a conf file only feature, but if it is added back we should update the https://github.com/bosun-monitor/bosun/blob/master/cmd/scollector/doc.go docs as well.

I can't remember why I wanted this so just closing


Penalties by global quotient proposal

This PR changes the way that we process inactivity penalties (both in the "normal case" and in the "inactivity leak" case). Currently, we process such penalties by directly adjusting all active validators' balances, going through all validators in a loop at the end of each epoch. However, this poses the risk that even a chain with a very low level of participation (eg. 100 empty epochs followed by a single block) requires O(N) work per epoch, leading to a potential DoS vector via an attacker proposing many such chains.
This PR fixes this by moving all validator penalties into a single global quotient, balance_denominator, which starts at 10**9 gwei and increments from there. For example, if in some epoch, participating validators are to gain a reward of 0.02% and nonparticipating validators a penalty of 0.03%, the balance_denominator increases by 1.0003x, and participating validators are assigned a reward of 0.05%. If no one (or almost no one) is participating, then very little work needs to be done except for the single O(1) operation of adjusting the balance_denominator.
We make effective balances reflect the denominator as part of hysteresis: when the balance_denominator increases, the thresholds needed for a validator to be assigned a particular EB level change. For example, for an EB of 20 ETH, at the start (balance_denominator == 1), the hysteresis thresholds are 19.75 ETH to drop below and 21.25 ETH to go above 20 ETH. But when the balance_denominator increases by 1.0003x, those thresholds shift to 19.755925 ETH to drop below and 21.256375 ETH to go above. The buckets themselves shift.
When the balance_denominator goes above 2, we perform the extremely rare procedure of halving both the balance_denominator and everyone's balances (so the effective balances stay the same).
This approach is slightly different from #1340 in that balances are reconciled during hysteresis and not during the first block after a series of empty slots; this arguably increases efficiency for low-participation chains (and not just "nearly zero participation chains") further.

So this now means everyone is participating with their full balance, rather than being capped at MAX_EFFECTIVE_BALANCE, is that correct? That seems a huge change, though it is pretty much unavoidable without duplicating the balances. That seems like something that should be debated though, as it completely changes the validator economics in the sharding regime.

I'm honestly not sure about this one. I can see the importance of getting cheaper empty epoch transitions, for sure (although I think that doesn't get rid of all the DOS vectors via state multiplication, and we still need to do something in that regard, anyway). But:

Most important, this adds complexity. Balances and effective balance are now denominated in different units. I have this feeling that this is going to bite us really badly, it's so easy to get wrong and so hard to catch in standard tests (see #2152 how easy it is to get rewards and penalties wrong)
Loss of MAX_EFFECTIVE_BALANCE, meaning that we lose the property that everyone has to do roughly the same amount of work per ETH when shards are turned on.
We can't really at #2125 anymore if we do this, right?

Question: How bad would it be to change this to an additive constant instead? Additions are a bit easier to reason about than multiplications :) The only disadvantage I can see is that validators with <32 ETH balance get punished a bit more, but is that really that bad?

Closing in favor of #2177
Please pick up conversations/suggestions there

Closing in favor of #2177
Please pick up conversations/suggestions there


Infinite Scrolling

For now this is not possible and pagination only works with specified rows per page, but I will add some infinite scrolling functionality in future versions
Still lot of works front of me :)
Originally posted by @Mewriick in https://github.com/Mewriick/Blazor.FlexGrid/issues/8#issuecomment-412986065
Hi,
We're very interested in this feature, is there anything I can do to help with that? We'd like to have support for cursors, using infinite scrolling, what's the timeline on this?

Hello @Shiak1
I am currently on vacation, but I will add this feature in near future.


add a new user | ci-with-toad-edge-plugin

Link to GitHub repository
https://github.com/jenkinsci/ci-with-toad-edge-plugin
When modifying release permission
If you are modifying the release permission of your plugin or component, fill out the following checklist:

### Release permission checklist (for submitters)
- [x] The usernames of the users added to the "developers" section in the .yml file are the same the users use to log in to [accounts.jenkins.io](https://accounts.jenkins.io/).
- [x] All users added have logged in to [Artifactory](https://repo.jenkins-ci.org/) and [Jira](https://issues.jenkins.io/) once.
- [x] I have mentioned an [existing team member](https://github.com/orgs/jenkinsci/teams) of the plugin or component team to approve this request.

When enabling automated releases (cd: true)
Follow the documentation to ensure, your pull request is set up properly. Don't merge it yet.
In case of changes requested by the hosting team, an open PR facilitates future reviews, without derailing work across multiple PRs.
Link to the PR enabling CD in your plugin

### CD checklist (for submitters)
- [ ] I have provided a link to the pull request in my plugin, which enables CD according to the documentation.

### Reviewer checklist
- [ ] Check that the `$pluginId Developers` team has `Admin` permissions while granting the access.
- [ ] In the case of plugin adoption, ensure that the Jenkins Jira default assignee is either removed or changed to the new maintainer.
- [ ] If security contacts are changed (this includes add/remove), ping the security officer (currently `@Wadeck`) in this pull request. If an email contact is changed, wait for approval from the security officer.

There are IRC Bot commands for it.

Please have this PR approved by a team member of https://github.com/orgs/jenkinsci/teams/ci-with-toad-edge-plugin-developers