Leveraging NEP 18 for image processing and signal processing

Am interested in how a user may leverage the image processing and signal processing APIs from SciPy, but implement the underlying algorithm to act on their own particular data structure without causing any changes in downstream user code. NEP 18 seems to suggest this is one of the intended goals. Also SciPy's roadmap alludes to this as well. Given it seems everyone is on-board with this idea, am really only curious how we get started? 😄

cc @shoyer @pentschev (who may also find this of interest and have thoughts here)

Note that we have a GSoC starting for adding a backend system for scipy.fft. It will allow interfacing with Pyfftw, CuPy, Dask, mkl-fft, pypocketfft, etc. I'd like to see how that works out first, and see some real world experience with __array_function__ for NumPy. So far my impression is that __array_function__ is a useful band aid but not the right approach long-term.

Thanks for the info. That's great to hear. 😄
Working with FFT functions seems like a good starting place. FWIW Dask and CuPy support NEP 18 already and both will operate on their array types with their own FFT functions when NumPy's FFTs are used.
Would the idea be for SciPy to extend this to FFT functions it provides independently from NumPy (like discrete sine and cosine transforms)? Also do you have any thoughts on how real FFTs will be handled given the differences between NumPy and SciPy in this area? ( https://github.com/scipy/scipy/issues/2487 )
Interesting if __array_function__ is not the right long-term approach, do you have any thoughts on what would be?

My experience from the past few months with __array_function__ is that it's useful in most cases. However, there are some cases for which changes to existing code are necessary.
The most common case is creating new arrays with arbitrary shape, take for example np.empty (and its counterparts, full, ones, zeros). Because it doesn't take any arrays as reference for input, we have to create arrays differently. One such way is to use the new empty_like argument shape (see https://github.com/numpy/numpy/pull/13046), which takes an array as reference and allows us to override its shape.
I understand @rgommers point, and while I don't know if there are better ways we could do it long-term, __array_function__ is not as straightforward as one would like, due to cumbersome cases such as the one I cited above.

@jakirkham: See #10175 for some of the discussion relating to plans for the scipy FFT GSOC project. There has also been some discussion on the scipy-dev mailing list and in the text of @peterbell10's proposal.
One of the suggestions there (which I like) is to make the new FFT functionality available via scipy.fft.* rather than using the modifying the existing scipy.fftpack module. While we want to generally match the existing SciPy API, this would allow more flexibility to make some changes to things like rfft without breaking existing code.

while I don't know if there are better ways we could do it long-term, __array_function__ is not as straightforward as one would like, due to cumbersome cases such as the one I cited above.

The protocol not covering things like array creation functions is one thing, but there's a more important limitation I think: it is specific to "types of arrays". So if you want to create functions with the same API for GPU arrays (CuPy, PyTorch), distributed arrays (Dask), sparse arrays (scipy.sparse, pydata/sparse), then it works. But what if you want to provide an alternative implementation for ndarrays? You simply cannot do that. Pyfftw, mkl-fft and pypocketfft all work on regular numpy arrays. So letting the numpy array carry around information about what implementation to use is just fundamentally not going to work. Instead, it's the library that must be able to say "hey, here's an implementation (perhaps for specific types)", and a mechanism for either automatic or user-controlled selection of which implementation/backend to use.

...there's a more important limitation I think: it is specific to "types of arrays".

Thanks for thinking about this issue, Ralf. Was about to ask what our solution should be for this case, but it sounds like you are one step ahead of me. 😉

Instead, it's the library that must be able to say "hey, here's an implementation (perhaps for specific types)", and a mechanism for either automatic or user-controlled selection of which implementation/backend to use.

Right, I had not considered such cases indeed. Do you already have ideas in mind on how to implement such mechanism? Perhaps it would be interesting to start a discussion (if it hasn't been started already).
As for array creation, you're right that it isn't indeed a limitation such as the types of arrays you mentioned, I was only pointing out that there's more work than just implementing __array_function__, and this cannot be neglected for large existing code bases, as I've recently discovered.

@peterbell10's proposal (linked above) has some ideas. There's also http://uarray.readthedocs.io/, which is basically designed with exactly this purpose in mind.

Thanks @rgommers, I'll check those out.

As for array creation, you're right that it isn't indeed a limitation such as the types of arrays you mentioned, I was only pointing out that there's more work than just implementing __array_function__, and this cannot be neglected for large existing code bases, as I've recently discovered

Yes, I agree. I have tried to use __array_function__ (and __array_ufunc__) on some existing code bases (e.g. SciPy), and there's very few things that will work out of the box. For new code, I think you can carefully design it to work for numpy/dask/cupy.

For new code, I think you can carefully design it to work for numpy/dask/cupy.

Exactly what I was thinking right now. Perhaps we should document best practices for those __array_function__ and __array_ufunc__. One piece that comes to mind right away is discouraging the use of np.empty (and counterparts) in favor of np.empty_like(reference_array).

One big difference with what I've proposed is there would only be one active backend at a time. So, if you were using multiple different types of array, you would have to manually change the backend between calls. This avoids the overhead of a dispatch mechanism. It's also worth pointing out that, within this model, you could create a backend that itself does dispatching.
I'd be interested to hear any other opinions though.

I probably need to read your proposal more closely and give this more thought, but having one active backend at a time seems a bit tricky. At least in my mind there are two groups of arrays. First there are array data structure types (like NumPy, CuPy, Sparse, etc.). Second there are meta-arrays (like Dask, Xarray, etc.), which wrap arrays of the first kind. Adding a backend that only chooses one array type at a time might cause problems in getting both of these to interoperate. Do you have thoughts on how we might address this?

Small meta note: Sparse leverages NumPy internally to hold data related to its array type. So there may be a similar challenge to the one noted above in this specific case.

@peterbell10, are you going to be at SciPy this year? It might be good to find some time to discuss this issue if you are around.

Adding a backend that only chooses one array type at a time might cause problems in getting both of these to interoperate.

Based on the dask issue referencing this, I take it you mean something like a meta-array of non-numpy arrays. That way the meta-array backend couldn't just defer to the default backend internally. That would indeed be tricky without at least some form of dynamic dispatch.

@peterbell10, are you going to be at SciPy this year?

No, sorry.

Ah wouldn't worry about the xref. There was a subthread in that discussion that might benefit from your proposed solution.
That said, yes, Dask and Xarray are meta-arrays that contain various array types (NumPy, Sparse, CuPy, etc.) that may already rely on some kind of dispatching. In fact Xarray objects can be based off of Dask Arrays, which would add another meta level. Handling these meta-array levels would be useful.
No worries. Just think it would be useful to meet and hash this out at some point. Suppose we could do that virtually if that is an option for you. 🙂

@eteq, and I were talking about the convolve use case that would help bridge scikit-image, astropy, and dask-image.

There are (at least) two different ways to use NEP 18 in SciPy:

Allowing SciPy functions to be overriden directly via __array_function__, e.g., scipy.signal.convolve() could directly check for __array_function__ attributes.
Implementing SciPy functions in a duck-array compatible fashion via NumPy functions, e.g., scipy.signal.convolve() could avoid calling np.asarray(), and could be written in terms of np.convolve and np.fft.fft internally.

Which version are we talking about here? :)

should be (1). (2) isn't the right thing to do (SciPy's fft is faster than NumPy's for example, so why rely on NumPy's) and not generically applicable anyway.

Yeah we are talking about 1. Other libraries may chose to handle the convolution differently. For example custom NaN handling came up in our conversation.

From discussions at SciPy with @rgommers, @danielballan, and myself, it sounds like we are going to wait on extending dispatching to other ndimage implementations until we've seen how the FFT use case plays out. Please feel free to add or correct things if I'm misremembering.

Hi i am writing a DSP library (just starting) for personal usage and want that the library will be based on a Wave obj. Wave is suppose to be a ndarray subclass that also contains sample rate, main frequency and other things. I tried to use NEP 18 array_function to override scipy convolve, correlate and fft. For the time being I saw they call asarray() witch makes the return type ndarray and I lose the metadata in the process.
Is there any progress with this issue? Or any idea on how may I implement this?

@yoav-palti removing asarray is going to take a long time, it's a big job. I do expect we'll make progress on this in 2021 though.
For now there isn't much you can do sanely. Although, if it's just for your own use, you could monkeypatch np.asarray to be a do-nothing op:
# write a content manager that temporarily replaces asarray to return its input rather than coerce to ndarray

with asarray_noop:
    signal.func(x_mywaveobj)

I don't know the source coed of scipy very well but wont using asanyarray instead of asarray do the trick?

That's not a good solution in general, because (a) that typically breaks with some subclasses (like np.matrix), and (b) it doesn't help with enabling other non-subclass array types like CuPy, Dask, etc. so it's not all that interesting to us.

Met with @jni @GenevieveBuckley @grlee77 @quasiben recently. We are interested in figuring out how we can manage dispatching here and how best we might make progress on this issue. @rgommers would you be able to advise on how we do this? Would it be helpful to setup a meeting to discuss? 🙂

Hey @jakirkham, yes a meeting sounds good. I suggest to schedule one, and in parallel have a discussion on this issue about use cases. Scheduling a meeting is going to be fun between 3 continents - I can do until 11pm CEST, till midnight if really necessary. Will send you my availability now.
A few thoughts on this topic and where we are today with dispatching:

The scipy.ndimage API could make sense to dispatch on, for two reasons: it's a sane and stable API, and it's all C code under the hood so making the functions themselves accept cupy/dask/etc arrays isn't really possible.
Dispatching on the scipy.signal API I'm not a fan of, because it's a really badly designed API with lots of parts that need changing or deprecating.

In terms of dispatching mechanisms:

__array_function__ status is more or less unchanged, it's useful when it works but it has limitations
uarray has solved the meta-array dispatching problem, however its UX is clunky. That's solvable in principle, but the overall reception hasn't been enthusiastic.
__array_module__ (NEP 37) is the better dispatching principle long-term, and would allow (e.g.) JAX and PyTorch adoption. However not much progress has been made, and it's basically superceded by the array API standard (which effectively adopts the same opt-in dispatching mechanism but adds a much better defined API).

All the above mechanisms apply to dispatching on an array API. Dispatching on, e.g., scipy.ndimage is a slightly different problem. The __array_function__ approach you're asking for is: "let me call ndimage.some_func(x) which let's x.__array_function__ look up a compatible function, and if it finds one execute that instead of the SciPy function". There's no code reuse, instead there are two completely separate implementations accessed through the same API.
The NEP 37 / array API standard approach is more: "let's stop duplicating everything and reuse one implementation of a function by making it understand different array objects". This makes sense for pure Python + NumPy code; it may make sense for Cython code too (on CPU at least) but that's a problem to tackle later.
The trouble with __array_function__ is partly organizational. The right way to organize this if we designed it from scratch would be:

a separate package scipy-ndimage
that package supporting multiple array types
all the dispatch to different "kernels" like a CPU one, a GPU one, and distributed CPU/GPU ones all within that one package

Instead, we now put the API in a single package, and each "kernel" in another package. This means the implementation of a function effectively is spread across packages, which is very challenging when making changes to that function and really should only be considered for very mature and stable APIs.
I hope all the above makes sense. Can you describe in some more detail what functions you want to dispatch on? I assume it's scikit-image and cusignal related?

@rgommers we were talking primarily about dispatching scikit-image functions, so they could work with different input array types (dask, cupy, etc). But obviously this discussion is useful more broadly than that.

Thanks @GenevieveBuckley.
CuPy has an ndimage API that's nicely compatible: https://docs.cupy.dev/en/stable/reference/ndimage.html. Dask not so much: http://image.dask.org/en/latest/dask_image.html. And JAX looks like it's aiming for full compatibility, but only has a single function so far (https://jax.readthedocs.io/en/latest/jax.scipy.html#module-jax.scipy.ndimage) and won't adopt __array_function__ anyway. So it looks like either the dask_image API needs to change, or a more elaborate scipy-dask function-to-function mapping needs to live in dask.array. Or maybe the dispatching is for CuPy only, and you want to keep the Dask mapping in scikit-image?

Interesting would have assumed module layout would be an internal detail. Is the module layout critical for dispatching or could that be relaxed? Are there any other issues we foresee here?

I was thinking of the case where SciPy itself does not do any dispatching, but third-party code tries dispatching based on importing the appropriate module depending on the input array type. e.g. like in the following example of a Gaussian smoothing function supporting both NumPy and CuPy arrays:
def dispatching_gaussian(image, sigma=5):
    if isinstance(image, numpy.ndarray):
        import scipy.ndimage as ndi
    elif isinstance(image, cupy.ndarray):
        import cupyx.scipy.ndimage as ndi
    return ndi.gaussian_filter(image, sigma=sigma)

There is no dask_image import that would give a module with the same API that can accept Dask arrays (where individual chunks could be either NumPy or CuPy arrays). One would have to import gaussian_filter directly instead of just using the module:
def dispatching_gaussian(image, sigma=5):
    if isinstance(image, numpy.ndarray):
        import scipy.ndimage as ndi
    elif isinstance(image, cupy.ndarray):
        import cupyx.scipy.ndimage as ndi
    elif isinstance(image, dask.array.core.Array):
        from dask_image.ndfilters import gaussian_filter
        return gaussian_filter(image, sigma=sigma)
    return ndi.gaussian_filter(image, sigma=sigma)

Yeah we could import these functions at a higher level or perhaps in an ndimage module so they are easy to get from one place

So it looks like either the dask_image API needs to change, or a more elaborate scipy-dask function-to-function mapping needs to live in dask.array

I suspect changing the dask-image is the easiest and preferred way to go here. That's certainly do-able, if everyone agrees on the details.
It also sounds like if we get the API stuff sorted out with @rgommers to be the most compatible across the board, it might also clear up some other discussions we are having.

For example, SciPy users sometimes do import scipy.ndimage as ndi and then call functions from the submodules like (e.g. ndi.morphology.binary_erosion) or equivalently from the top level (e.g. ndi.binary_erosion),

Please always prefer the latter - ndimage is the only public namespace, the rest only happens to miss an underscore in the filename.

Interesting would have assumed module layout would be an internal detail. Is the module layout critical for dispatching or could that be relaxed?

For @grlee's case (2): the fully qualified name is used for lookup, see https://github.com/dask/dask/blob/67d8574a33265008ca69354011b44ea64c203a18/dask/array/core.py#L1503. If (sub)module name is different, then the fallback is an explicit dictionary mapping (_HANDLED_FUNCTIONS). There's no other way for dask's __array_function__ implementation to know where to look.

I was thinking of the case where SciPy itself does not do any dispatching, but third-party code tries dispatching based on importing the appropriate module depending on the input array type. e.g. like in the following example of a Gaussian smoothing function supporting both NumPy and CuPy arrays:

This is actually a lot less magical then adding __array_function__ dispatching to scipy.ndimage directly. And it's easier for the API to evolve. For example, if we add a new keyword to an ndimage function, dispatching_gaussian won't accept it yet - you need to wait until dask_image supports it too, and then update dispatching_gaussian explicitly. Which is nicer than ndimage.gaussian accepting dask arrays, except for when that keyword is used (which will also be undocumented).
So it's worth considering that. Such a shim layer is easy to write. The advantage of __array_function__ is only that new implementation of the API can be added - which makes some sense for array libraries (of which there are ~7 important ones, and then more array-like objects like unit-based arrays). But if all you have is CuPy, Dask and SciPy implementations for a single API (with no more in sight), then just handling those 3 explicitly will be more robust.
Note: this dispatching_gaussian type layer could easily live in scipy.ndimage itself. It just means that we'd explicitly become aware of CuPy and Dask arrays. Advantages over __array_function__-based dispatching are:

cupy and dask_image can be optional dependencies, for which we can add CI.
much less backwards-incompatible to introduce
can be documented explicitly
numpy's __array_function__ machinery isn't actually public, and has changes over supported releases (currently >=1.16.5). The explicit CuPy and Dask array handling will work with all numpy versions, and doesn't need the non-public machinery.
ndimage API easier to evolve with new keywords
in case jax.scipy.ndimage gains feature-completeness, it's extensible to JAX. JAX will not adopt __array_function__.

Except this doesn't work:
elif isinstance(image, cupy.ndarray):

It should something like:
type(x).__module__ == 'cupy'

Needs some thought on what the most robust way of doing this. I don't know if for Dask there are array subclasses for example that one would want to pass such a check.

I think we are generally ok structuring things in dask-image so dispatching works.
Yeah __array_function__ is just something we have in our toolbox today and is already used in a few libraries. It may not be strictly necessary for this use case.
The challenge with adding a new function is getting other libraries to buy-in to using this function. It's a little easier if it is covered through an existing function so things just work. For example what if we were to use something like singledispatch?

Except this doesn't work:
elif isinstance(image, cupy.ndarray):

It should something like:
type(x).__module__ == 'cupy'

To be clear, this is no good because you want cupy to be an optional import (but you'd need to import it here to check with isinstance)? That's my understanding of why this is annoying/not possible, but if you meant something different, let me know.

Needs some thought on what the most robust way of doing this. I don't know if for Dask there are array subclasses for example that one would want to pass such a check.

I don't think Dask arrays are commonly subclassed, If I'm wrong, can someone else jump in here with some examples?
The xarray DataArray class is not a subclass of dask array, but the .data attribute can contain a dask/numpy/etc. array.
The thing with Dask is that we often have two questions:

Is this a Dask array?>>> type(a_dask_array).__module__
'dask.array.core'

What type of chunks are in in this Dask array?
We look at the type of the _meta attribute to find out this information.
For example, a dask array with numpy chunks:>>> type(a_dask_array._meta).__module__
'numpy'

The challenge with adding a new function is getting other libraries to buy-in to using this function.

With "this dispatching_gaussian type layer could easily live in scipy.ndimage itself" I actually meant "we can make this the public API of ndimage. I.e. make the ndimage functions directly aware of CuPy and Dask. Which would not require changing any code in scikit-image or elsewhere.

It's a little easier if it is covered through an existing function so things just work. For example what if we were to use something like singledispatch?

singledispatch is basically a simpler version of __array_function__ right? I think the tradeoffs are very similar.

To be clear, this is no good because you want cupy to be an optional import (but you'd need to import it here to check with isinstance)?

Exactly.

The thing with Dask is that we often have two questions:

Thanks, that makes sense. SciPy would only need the first question.

@rgommers what do you need to have happen within dask-image to support this effort?
Making sure that all of the dask-image functions are imported into the top level namespace? Anything else?

There is no dask_image import that would give a module with the same API that can accept Dask arrays (where individual chunks could be either NumPy or CuPy arrays). One would have to import gaussian_filter directly instead of just using the module

@jakirkham It sounds like you have a structure in mind, but I'm not completely sure what it is. Should we:

Import all functions into the top level namespace so we can do  import dask_image as ndi
Create a new ndimage module that does nothing except make all the ndimage functions available through import dask_image.ndimage as ndi (and still allowing access as usual for backwards compatibility, eg: `from dask_image.ndfilters import gaussian_filter')
Put all of the functions into a new ndimage subpackage (breaking change)

Not necessarily the top-level namespace, but a namespace that matches. If you'd want to name it ``dask_image.scipyordask_image.scipy.ndimage`, that should work too.

Sorry for the delay. Have been pretty swamped over the past couple weeks 😅

The challenge with adding a new function is getting other libraries to buy-in to using this function.

With "this dispatching_gaussian type layer could easily live in scipy.ndimage itself" I actually meant "we can make this the public API of ndimage. I.e. make the ndimage functions directly aware of CuPy and Dask. Which would not require changing any code in scikit-image or elsewhere.

I think this is the most important thing honestly. Having this as an API that can be used with different array libraries and doing the right thing under-the-hood is the most important thing

It's a little easier if it is covered through an existing function so things just work. For example what if we were to use something like singledispatch?

singledispatch is basically a simpler version of __array_function__ right? I think the tradeoffs are very similar.

I'm not sure that I would compare it to __array_function__ exactly. Every form of dispatching we are looking at here looks somewhat similar to others.
With singledispatch downstream libraries would need to explicitly register their callback with their array type. This handles the isinstance check, but saves SciPy from thinking about this. We could also have a generic fallback for object that would error or do something else reasonable. It also relaxes the need to match a particular structure and allows libraries to figure out how much or little glue code they want to implement this. Here's one way it might be used, but not the only way
from functools import singledispatch

@singledispatch
def smooth(arr):
    typ = type(arr)
    raise NotImplementedError(f"Support for `{typ}` is not implemented")

@smooth.register(numpy.ndarray)
def _(arr):
    # do something with a NumPy array
    ...

@smooth.register(cupy.ndarray)
def _(arr):
    # do something with a CuPy array
    ...

ndimage has several functions that take multiple array-like inputs, so singledispatch seems suboptimal. I had a look at the history of dispatch frameworks, and it was something like singledispatch -> multipledispatch -> __array_function__ / uarray. This needs a little more thought about the trade-offs. Being able to evolve the API (adding new keywords, adding new functions) without things breaking or being silently unsupported seems to be most important.
For the next week I won't have time for this, I'll try to revisit the week after.

Can you remove me from this thread?
George Lee
On March 24, 2021 at 4:51:39 PM, Ralf Gommers @.***)
wrote:

ndimage has several functions that take multiple array-like inputs, so
singledispatch seems suboptimal. I had a look at the history of dispatch
frameworks, and it was something like singledispatch -> multipledispatch
-> array_function / uarray. This needs a little more thought about
the trade-offs. Being able to evolve the API (adding new keywords, adding
new functions) without things breaking or being silently unsupported seems
to be most important.
For the next week I won't have time for this, I'll try to revisit the week
after.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/scipy/scipy/issues/10204#issuecomment-806178118, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAIK2LD5WEKJHWUXTDRWPC3TFJGFXANCNFSM4HOVDSTQ
.

Sorry George. I think someone probably mistyped Greg's GH handle earlier. Unfortunately we can't remove you ourselves, but you can click the "Unsubscribe" button above to the right to remove yourself. We will try to be more careful in the future. Thanks for letting us know and sorry for the noise

I edited my offending comment with the wrong user handle. Will remove the comments about this topic later.

I've been thinking about this some more today. uarray really does seem like the most appropriate solution here (xref last years' meeting minutes with a comparison). The two main questions I have right now that I don't really know/remember the answer to are:

What happens if a function which supports uarray gains a new keyword, and then a user calls it with (e.g.) a cupy array when cupyx.scipy.ndimage does not yet have that keyword?
Can we change uarray to let backends auto-register, so we don't have to make end users use context managers? IIRC we only avoided auto-registration because NumPy devs didn't like it and there was an attempt to have NumPy adopt unumpy.

(1) is the one thing of my list of desirable traits in https://github.com/scipy/scipy/issues/10204#issuecomment-788764360 that we'd get from explicit forwarding. (2) is the main UX problem with uarray, and it's bad enough that it ruins the experience of using it despite all the nice features and performance it offers.

@hameerabbasi or @peterbell10 any thoughts on these uarray questions?

Anyone can Auto register today, it's only a question of changing it from "discouraged" to "allowed practice".
I'd be on board with auto registration, but the order in which backends will be called will be undefined.

I'd be on board with auto registration, but the order in which backends will be called will be undefined.

That's not a real problem other than a bit of extra overhead, right? We don't need to support mixed-array-kind inputs in a single function call.

@m-albert, pointed out that some ndimage functions can be written in terms of others ( https://github.com/dask/dask-image/issues/201#issuecomment-822049649 ). So maybe not all functions need to dispatch as long as they can be rewritten in terms of others that do dispatch

I'd be on board with auto registration, but the order in which backends will be called will be undefined.

That's not a real problem other than a bit of extra overhead, right? We don't need to support mixed-array-kind inputs in a single function call.

Yes, if backends do the right thing, the behaviour remains unchanged.

@m-albert, pointed out that some ndimage functions can be written in terms of others ( dask/dask-image#201 (comment) ). So maybe not all functions need to dispatch as long as they can be rewritten in terms of others that do dispatch

While this is possible, I'm really not a fan of such things. It's fragile because it couples function dispatch with implementation details in the function body. A clean separation for every function between dispatching first, and continuing within the library if no dispatchable object is encountered second is better.
It isn't that much work to write the dispatching code, so we should just do it for every function.

While this is possible, I'm really not a fan of such things. It's fragile because it couples function dispatch with implementation details in the function body. A clean separation for every function between dispatching first, and continuing within the library if no dispatchable object is encountered second is better.

I'd like to note here that uarray already has functionality for this: It's called a "default implementation". One can provide such an implementation and it's treated as a fallback.


[url_launcher] Page widget behind the Safari view is tappable

This may seem like a very minor bug, but usually navigating(back) button is placed at appBar's leading.
If a user closes the Safari view after clicking the wrong point, the previous page could be disappeared by that mistake, and this is not the intended behavior.
Steps to Reproduce

Run flutter create bug.
Update the files as follows:

lib/main.dart
import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          leading: GestureDetector(
            onTap: () {
              print('Leading widget is pressed');
            },
            child: Container(
              color: Colors.red,
            ),
          ),
        ),
        floatingActionButton: FloatingActionButton(
          child: Icon(Icons.launch),
          onPressed: () {
            launch('https://flutter.dev');
          },
        ),
      ),
    );
  }
}

pubspec.yaml
name: url_launcher_header_bug
description: A new Flutter project.

publish_to: 'none'

version: 1.0.0+1

environment:
  sdk: ">=2.7.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter
  cupertino_icons: ^1.0.2
  url_launcher: ^5.7.10

dev_dependencies:
  flutter_test:
    sdk: flutter

flutter:
  uses-material-design: true

Click floating action button
Click left few pixels from Done button on Safari View.

Expected results: Nothing should be print
Actual results: flutter: Leading widget is pressed is printed

Logs
[✓] Flutter (Channel dev, 1.27.0-4.0.pre, on Mac OS X 10.15.6 19G73 darwin-x64, locale ko-KR)
    • Flutter version 1.27.0-4.0.pre at /Users/min/development/flutter
    • Framework revision f8cd24de95 (8 days ago), 2021-02-16 11:24:17 -0800
    • Engine revision 1d537824d6
    • Dart version 2.13.0 (build 2.13.0-30.0.dev)

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /Users/min/Library/Android/sdk
    • Platform android-30, build-tools 30.0.3
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.2, Build version 12B45b
    • CocoaPods version 1.10.1

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 4.0)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 51.0.1
    • Dart plugin version 193.7547
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)

[✓] IntelliJ IDEA Ultimate Edition (version 2020.1.2)
    • IntelliJ at /Users/min/Applications/JetBrains Toolbox/IntelliJ IDEA Ultimate.app
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart

[✓] VS Code (version 1.44.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension can be installed from:
      🔨 https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter

[✓] Connected device (2 available)
    • iPhone 11 (mobile) • 5DF4F22F-BD22-475B-887B-F19EED62D45B • ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-2 (simulator)
    • Chrome (web)       • chrome                               • web-javascript • Google Chrome 88.0.4324.192

• No issues found!

In addition, for someone who needs a quick solution,
I have been preventing the event propagation by disabling the leading button when AppLifecycleState is resumed state.

Hi @jiggum
Thanks for filing the issue, I can reproduce it

code sample
import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          leading: GestureDetector(
            onTap: () {
              print('Leading widget is pressed');
            },
            child: Container(
              color: Colors.red,
            ),
          ),
        ),
        floatingActionButton: FloatingActionButton(
          child: Icon(Icons.launch),
          onPressed: () {
            launch('https://flutter.dev');
          },
        ),
      ),
    );
  }
}

flutter doctor -v
[✓] Flutter (Channel stable, 1.22.6, on macOS 11.2.1 20D74 darwin-x64, locale en-GB)
    • Flutter version 1.22.6 at /Users/tahatesser/Code/flutter_stable
    • Framework revision 9b2d32b605 (5 weeks ago), 2021-01-22 14:36:39 -0800
    • Engine revision 2f0af37152
    • Dart version 2.10.5
[✗] Android toolchain - develop for Android devices
    ✗ Unable to locate Android SDK.
      Install Android Studio from: https://developer.android.com/studio/index.html
      On first launch it will assist you in installing the Android SDK components.
      (or visit https://flutter.dev/docs/get-started/install/macos#android-setup for detailed instructions).
      If the Android SDK has been installed to a custom location, set ANDROID_SDK_ROOT to that location.
      You may also want to add it to your PATH environment variable.
[!] Xcode - develop for iOS and macOS (Xcode 12.4)
    • Xcode at /Volumes/Extreme/Xcode.app/Contents/Developer
    • Xcode 12.4, Build version 12D4e
    ✗ CocoaPods not installed.
        CocoaPods is used to retrieve the iOS and macOS platform side's plugin code that responds to your plugin usage on the Dart side.
        Without CocoaPods, plugins will not work on iOS or macOS.
        For more info, see https://flutter.dev/platform-plugins
      To install:
        sudo gem install cocoapods
[!] Android Studio (version 4.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    ✗ Flutter plugin not installed; this adds Flutter specific functionality.
    ✗ Dart plugin not installed; this adds Dart specific functionality.
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)
[✓] VS Code (version 1.53.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.19.0
[✓] Connected device (1 available)
    • iPhone 12 (mobile) • 948EC106-78EE-4A69-8D31-83C00E6419DE • ios • com.apple.CoreSimulator.SimRuntime.iOS-14-4 (simulator)
! Doctor found issues in 3 categories.

[✓] Flutter (Channel stable, 1.22.6, on macOS 11.2.1 20D74 darwin-x64, locale en-GB)
    • Flutter version 1.22.6 at /Users/tahatesser/Code/flutter_stable
    • Framework revision 9b2d32b605 (5 weeks ago), 2021-01-22 14:36:39 -0800
    • Engine revision 2f0af37152
    • Dart version 2.10.5
[✗] Android toolchain - develop for Android devices
    ✗ Unable to locate Android SDK.
      Install Android Studio from: https://developer.android.com/studio/index.html
      On first launch it will assist you in installing the Android SDK components.
      (or visit https://flutter.dev/docs/get-started/install/macos#android-setup for detailed instructions).
      If the Android SDK has been installed to a custom location, set ANDROID_SDK_ROOT to that location.
      You may also want to add it to your PATH environment variable.
[!] Xcode - develop for iOS and macOS (Xcode 12.4)
    • Xcode at /Volumes/Extreme/Xcode.app/Contents/Developer
    • Xcode 12.4, Build version 12D4e
    ✗ CocoaPods not installed.
        CocoaPods is used to retrieve the iOS and macOS platform side's plugin code that responds to your plugin usage on the Dart side.
        Without CocoaPods, plugins will not work on iOS or macOS.
        For more info, see https://flutter.dev/platform-plugins
      To install:
        sudo gem install cocoapods
[!] Android Studio (version 4.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    ✗ Flutter plugin not installed; this adds Flutter specific functionality.
    ✗ Dart plugin not installed; this adds Dart specific functionality.
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)
[✓] VS Code (version 1.53.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.19.0
[✓] Connected device (1 available)
    • iPhone 12 (mobile) • 948EC106-78EE-4A69-8D31-83C00E6419DE • ios • com.apple.CoreSimulator.SimRuntime.iOS-14-4 (simulator)
! Doctor found issues in 3 categories.
[✓] Flutter (Channel beta, 1.26.0-17.6.pre, on macOS 11.2.1 20D74 darwin-x64, locale en-GB)
    • Flutter version 1.26.0-17.6.pre at /Users/tahatesser/Code/flutter_beta
    • Framework revision a29104a69b (8 days ago), 2021-02-16 09:26:56 -0800
    • Engine revision 21fa8bb99e
    • Dart version 2.12.0 (build 2.12.0-259.12.beta)
[✗] Android toolchain - develop for Android devices
    ✗ Unable to locate Android SDK.
      Install Android Studio from: https://developer.android.com/studio/index.html
      On first launch it will assist you in installing the Android SDK components.
      (or visit https://flutter.dev/docs/get-started/install/macos#android-setup for detailed instructions).
      If the Android SDK has been installed to a custom location, please use
      `flutter config --android-sdk` to update to that location.
[!] Xcode - develop for iOS and macOS
    • Xcode at /Volumes/Extreme/Xcode.app/Contents/Developer
    • Xcode 12.4, Build version 12D4e
    ✗ CocoaPods not installed.
        CocoaPods is used to retrieve the iOS and macOS platform side's plugin code that responds to your plugin usage on the Dart side.
        Without CocoaPods, plugins will not work on iOS or macOS.
        For more info, see https://flutter.dev/platform-plugins
      To install see https://guides.cocoapods.org/using/getting-started.html#installation for instructions.
[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
[✓] Android Studio (version 4.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)
[✓] VS Code (version 1.53.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.19.0
[✓] Connected device (2 available)
    • iPhone 12 (mobile) • 948EC106-78EE-4A69-8D31-83C00E6419DE • ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-4 (simulator)
    • Chrome (web)       • chrome                               • web-javascript • Google Chrome 88.0.4324.192
! Doctor found issues in 2 categories.

[✓] Flutter (Channel stable, 1.22.6, on macOS 11.2.1 20D74 darwin-x64, locale en-GB)
    • Flutter version 1.22.6 at /Users/tahatesser/Code/flutter_stable
    • Framework revision 9b2d32b605 (5 weeks ago), 2021-01-22 14:36:39 -0800
    • Engine revision 2f0af37152
    • Dart version 2.10.5
[✗] Android toolchain - develop for Android devices
    ✗ Unable to locate Android SDK.
      Install Android Studio from: https://developer.android.com/studio/index.html
      On first launch it will assist you in installing the Android SDK components.
      (or visit https://flutter.dev/docs/get-started/install/macos#android-setup for detailed instructions).
      If the Android SDK has been installed to a custom location, set ANDROID_SDK_ROOT to that location.
      You may also want to add it to your PATH environment variable.
[!] Xcode - develop for iOS and macOS (Xcode 12.4)
    • Xcode at /Volumes/Extreme/Xcode.app/Contents/Developer
    • Xcode 12.4, Build version 12D4e
    ✗ CocoaPods not installed.
        CocoaPods is used to retrieve the iOS and macOS platform side's plugin code that responds to your plugin usage on the Dart side.
        Without CocoaPods, plugins will not work on iOS or macOS.
        For more info, see https://flutter.dev/platform-plugins
      To install:
        sudo gem install cocoapods
[!] Android Studio (version 4.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    ✗ Flutter plugin not installed; this adds Flutter specific functionality.
    ✗ Dart plugin not installed; this adds Dart specific functionality.
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)
[✓] VS Code (version 1.53.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.19.0
[✓] Connected device (1 available)
    • iPhone 12 (mobile) • 948EC106-78EE-4A69-8D31-83C00E6419DE • ios • com.apple.CoreSimulator.SimRuntime.iOS-14-4 (simulator)
! Doctor found issues in 3 categories.
[✓] Flutter (Channel beta, 1.26.0-17.6.pre, on macOS 11.2.1 20D74 darwin-x64, locale en-GB)
    • Flutter version 1.26.0-17.6.pre at /Users/tahatesser/Code/flutter_beta
    • Framework revision a29104a69b (8 days ago), 2021-02-16 09:26:56 -0800
    • Engine revision 21fa8bb99e
    • Dart version 2.12.0 (build 2.12.0-259.12.beta)
[✗] Android toolchain - develop for Android devices
    ✗ Unable to locate Android SDK.
      Install Android Studio from: https://developer.android.com/studio/index.html
      On first launch it will assist you in installing the Android SDK components.
      (or visit https://flutter.dev/docs/get-started/install/macos#android-setup for detailed instructions).
      If the Android SDK has been installed to a custom location, please use
      `flutter config --android-sdk` to update to that location.
[!] Xcode - develop for iOS and macOS
    • Xcode at /Volumes/Extreme/Xcode.app/Contents/Developer
    • Xcode 12.4, Build version 12D4e
    ✗ CocoaPods not installed.
        CocoaPods is used to retrieve the iOS and macOS platform side's plugin code that responds to your plugin usage on the Dart side.
        Without CocoaPods, plugins will not work on iOS or macOS.
        For more info, see https://flutter.dev/platform-plugins
      To install see https://guides.cocoapods.org/using/getting-started.html#installation for instructions.
[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
[✓] Android Studio (version 4.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)
[✓] VS Code (version 1.53.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.19.0
[✓] Connected device (2 available)
    • iPhone 12 (mobile) • 948EC106-78EE-4A69-8D31-83C00E6419DE • ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-4 (simulator)
    • Chrome (web)       • chrome                               • web-javascript • Google Chrome 88.0.4324.192
! Doctor found issues in 2 categories.
[✓] Flutter (Channel dev, 1.27.0-4.0.pre, on macOS 11.2.1 20D74 darwin-x64, locale en-GB)
    • Flutter version 1.27.0-4.0.pre at /Users/tahatesser/Code/flutter_dev
    • Framework revision f8cd24de95 (8 days ago), 2021-02-16 11:24:17 -0800
    • Engine revision 1d537824d6
    • Dart version 2.13.0 (build 2.13.0-30.0.dev)
[✗] Android toolchain - develop for Android devices
    ✗ Unable to locate Android SDK.
      Install Android Studio from: https://developer.android.com/studio/index.html
      On first launch it will assist you in installing the Android SDK components.
      (or visit https://flutter.dev/docs/get-started/install/macos#android-setup for detailed instructions).
      If the Android SDK has been installed to a custom location, please use
      `flutter config --android-sdk` to update to that location.
[!] Xcode - develop for iOS and macOS
    • Xcode at /Volumes/Extreme/Xcode.app/Contents/Developer
    • Xcode 12.4, Build version 12D4e
    ✗ CocoaPods not installed.
        CocoaPods is used to retrieve the iOS and macOS platform side's plugin code that responds to your plugin usage on the Dart side.
        Without CocoaPods, plugins will not work on iOS or macOS.
        For more info, see https://flutter.dev/platform-plugins
      To install see https://guides.cocoapods.org/using/getting-started.html#installation for instructions.
[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
[✓] Android Studio (version 4.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)
[✓] VS Code (version 1.53.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.19.0
[✓] Connected device (3 available)
    • iPhone 12 (mobile) • 948EC106-78EE-4A69-8D31-83C00E6419DE • ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-4 (simulator)
    • macOS (desktop)    • macos                                • darwin-x64     • macOS 11.2.1 20D74 darwin-x64
    • Chrome (web)       • chrome                               • web-javascript • Google Chrome 88.0.4324.192
! Doctor found issues in 2 categories.

[✓] Flutter (Channel stable, 1.22.6, on macOS 11.2.1 20D74 darwin-x64, locale en-GB)
    • Flutter version 1.22.6 at /Users/tahatesser/Code/flutter_stable
    • Framework revision 9b2d32b605 (5 weeks ago), 2021-01-22 14:36:39 -0800
    • Engine revision 2f0af37152
    • Dart version 2.10.5
[✗] Android toolchain - develop for Android devices
    ✗ Unable to locate Android SDK.
      Install Android Studio from: https://developer.android.com/studio/index.html
      On first launch it will assist you in installing the Android SDK components.
      (or visit https://flutter.dev/docs/get-started/install/macos#android-setup for detailed instructions).
      If the Android SDK has been installed to a custom location, set ANDROID_SDK_ROOT to that location.
      You may also want to add it to your PATH environment variable.
[!] Xcode - develop for iOS and macOS (Xcode 12.4)
    • Xcode at /Volumes/Extreme/Xcode.app/Contents/Developer
    • Xcode 12.4, Build version 12D4e
    ✗ CocoaPods not installed.
        CocoaPods is used to retrieve the iOS and macOS platform side's plugin code that responds to your plugin usage on the Dart side.
        Without CocoaPods, plugins will not work on iOS or macOS.
        For more info, see https://flutter.dev/platform-plugins
      To install:
        sudo gem install cocoapods
[!] Android Studio (version 4.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    ✗ Flutter plugin not installed; this adds Flutter specific functionality.
    ✗ Dart plugin not installed; this adds Dart specific functionality.
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)
[✓] VS Code (version 1.53.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.19.0
[✓] Connected device (1 available)
    • iPhone 12 (mobile) • 948EC106-78EE-4A69-8D31-83C00E6419DE • ios • com.apple.CoreSimulator.SimRuntime.iOS-14-4 (simulator)
! Doctor found issues in 3 categories.
[✓] Flutter (Channel beta, 1.26.0-17.6.pre, on macOS 11.2.1 20D74 darwin-x64, locale en-GB)
    • Flutter version 1.26.0-17.6.pre at /Users/tahatesser/Code/flutter_beta
    • Framework revision a29104a69b (8 days ago), 2021-02-16 09:26:56 -0800
    • Engine revision 21fa8bb99e
    • Dart version 2.12.0 (build 2.12.0-259.12.beta)
[✗] Android toolchain - develop for Android devices
    ✗ Unable to locate Android SDK.
      Install Android Studio from: https://developer.android.com/studio/index.html
      On first launch it will assist you in installing the Android SDK components.
      (or visit https://flutter.dev/docs/get-started/install/macos#android-setup for detailed instructions).
      If the Android SDK has been installed to a custom location, please use
      `flutter config --android-sdk` to update to that location.
[!] Xcode - develop for iOS and macOS
    • Xcode at /Volumes/Extreme/Xcode.app/Contents/Developer
    • Xcode 12.4, Build version 12D4e
    ✗ CocoaPods not installed.
        CocoaPods is used to retrieve the iOS and macOS platform side's plugin code that responds to your plugin usage on the Dart side.
        Without CocoaPods, plugins will not work on iOS or macOS.
        For more info, see https://flutter.dev/platform-plugins
      To install see https://guides.cocoapods.org/using/getting-started.html#installation for instructions.
[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
[✓] Android Studio (version 4.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)
[✓] VS Code (version 1.53.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.19.0
[✓] Connected device (2 available)
    • iPhone 12 (mobile) • 948EC106-78EE-4A69-8D31-83C00E6419DE • ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-4 (simulator)
    • Chrome (web)       • chrome                               • web-javascript • Google Chrome 88.0.4324.192
! Doctor found issues in 2 categories.
[✓] Flutter (Channel dev, 1.27.0-4.0.pre, on macOS 11.2.1 20D74 darwin-x64, locale en-GB)
    • Flutter version 1.27.0-4.0.pre at /Users/tahatesser/Code/flutter_dev
    • Framework revision f8cd24de95 (8 days ago), 2021-02-16 11:24:17 -0800
    • Engine revision 1d537824d6
    • Dart version 2.13.0 (build 2.13.0-30.0.dev)
[✗] Android toolchain - develop for Android devices
    ✗ Unable to locate Android SDK.
      Install Android Studio from: https://developer.android.com/studio/index.html
      On first launch it will assist you in installing the Android SDK components.
      (or visit https://flutter.dev/docs/get-started/install/macos#android-setup for detailed instructions).
      If the Android SDK has been installed to a custom location, please use
      `flutter config --android-sdk` to update to that location.
[!] Xcode - develop for iOS and macOS
    • Xcode at /Volumes/Extreme/Xcode.app/Contents/Developer
    • Xcode 12.4, Build version 12D4e
    ✗ CocoaPods not installed.
        CocoaPods is used to retrieve the iOS and macOS platform side's plugin code that responds to your plugin usage on the Dart side.
        Without CocoaPods, plugins will not work on iOS or macOS.
        For more info, see https://flutter.dev/platform-plugins
      To install see https://guides.cocoapods.org/using/getting-started.html#installation for instructions.
[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
[✓] Android Studio (version 4.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)
[✓] VS Code (version 1.53.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.19.0
[✓] Connected device (3 available)
    • iPhone 12 (mobile) • 948EC106-78EE-4A69-8D31-83C00E6419DE • ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-4 (simulator)
    • macOS (desktop)    • macos                                • darwin-x64     • macOS 11.2.1 20D74 darwin-x64
    • Chrome (web)       • chrome                               • web-javascript • Google Chrome 88.0.4324.192
! Doctor found issues in 2 categories.
[✓] Flutter (Channel master, 1.27.0-5.0.pre.134, on macOS 11.2.1 20D74 darwin-x64, locale en-GB)
    • Flutter version 1.27.0-5.0.pre.134 at /Users/tahatesser/Code/flutter_master
    • Framework revision 354bd53f62 (6 hours ago), 2021-02-24 02:36:05 -0500
    • Engine revision<PHONE_NUMBER>
    • Dart version 2.13.0 (build 2.13.0-68.0.dev)
[✗] Android toolchain - develop for Android devices
    ✗ Unable to locate Android SDK.
      Install Android Studio from: https://developer.android.com/studio/index.html
      On first launch it will assist you in installing the Android SDK components.
      (or visit https://flutter.dev/docs/get-started/install/macos#android-setup for detailed instructions).
      If the Android SDK has been installed to a custom location, please use
      `flutter config --android-sdk` to update to that location.
[!] Xcode - develop for iOS and macOS
    • Xcode at /Volumes/Extreme/Xcode.app/Contents/Developer
    • Xcode 12.4, Build version 12D4e
    ✗ CocoaPods not installed.
        CocoaPods is used to retrieve the iOS and macOS platform side's plugin code that responds to your plugin usage on the Dart side.
        Without CocoaPods, plugins will not work on iOS or macOS.
        For more info, see https://flutter.dev/platform-plugins
      To install see https://guides.cocoapods.org/using/getting-started.html#installation for instructions.
[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
[✓] Android Studio (version 4.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)
[✓] VS Code (version 1.53.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.19.0
[✓] Connected device (2 available)
    • macOS (desktop) • macos  • darwin-x64     • macOS 11.2.1 20D74 darwin-x64
    • Chrome (web)    • chrome • web-javascript • Google Chrome 88.0.4324.192
! Doctor found issues in 2 categories.

Thank you

Looks like SafariViewController should prevent hit testing from happening on FlutterView. We should evaluate if the same issue happens on a native iOS app.

I can also confirm this occurs, it isn't just the top left in the AppBar but the entirety of the left side of the screen is tappable for 5-10 pixels.
I have attached a video as an example, in my case I have a list of URLs users can add and open.
https://user-images.githubusercontent.com/3048295/154291762-3f4584d9-4265-43fd-a3fc-e214f3ebd36d.mp4

Hi. Updated on latest stable and master channel. This issue is still occurred. From sample code, I added Snackbar to see it more clearly:

Demo
https://user-images.githubusercontent.com/104349824/165302257-fac1a11b-d22b-4630-9cd5-4393a506b599.mp4

flutter doctor -v
[✓] Flutter (Channel stable, 2.10.5, on macOS 12.2.1 21D62 darwin-x64, locale en-VN)
    • Flutter version 2.10.5 at /Users/huynq/Documents/GitHub/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 5464c5bac7 (8 days ago), 2022-04-18 09:55:37 -0700
    • Engine revision 57d3bac3dd
    • Dart version 2.16.2
    • DevTools version 2.9.2

[✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
    • Android SDK at /Users/huynq/Library/Android/sdk
    • Platform android-31, build-tools 31.0.0
    • ANDROID_HOME = /Users/huynq/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7281165)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 13.2.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • CocoaPods version 1.11.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2020.3)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7281165)

[✓] Android Studio (version 4.1)
    • Android Studio at /Users/huynq/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/201.7042882/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)

[✓] Android Studio
    • Android Studio at /Users/huynq/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-1/203.7185775/Android Studio Preview.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6842174)

[✓] IntelliJ IDEA Community Edition (version 2020.3.3)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart

[✓] VS Code (version 1.62.3)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.28.0

[✓] Connected device (1 available)
    • Chrome (web) • chrome • web-javascript • Google Chrome 100.0.4896.127

[✓] HTTP Host Availability
    • All required HTTP hosts are available

• No issues found!

[✓] Flutter (Channel master, 2.13.0-0.0.pre.713, on macOS 12.2.1 21D62 darwin-x64, locale en-VN)
    • Flutter version 2.13.0-0.0.pre.713 at /Users/huynq/Documents/GitHub/flutter_master
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision d69cff97cd (21 hours ago), 2022-04-25 06:39:06 -0400
    • Engine revision c901936d4f
    • Dart version 2.18.0 (build 2.18.0-44.0.dev)
    • DevTools version 2.12.2

[✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
    • Android SDK at /Users/huynq/Library/Android/sdk
    • Platform android-31, build-tools 31.0.0
    • ANDROID_HOME = /Users/huynq/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7281165)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 13.2.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • CocoaPods version 1.11.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2020.3)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7281165)

[✓] Android Studio (version 4.1)
    • Android Studio at /Users/huynq/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/201.7042882/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)

[!] Android Studio
    • Android Studio at /Users/huynq/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-1/203.7185775/Android Studio Preview.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    ✗ Unable to find bundled Java version.
    • Try updating or re-installing Android Studio.

[✓] IntelliJ IDEA Community Edition (version 2020.3.3)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart

[✓] VS Code (version 1.62.3)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.28.0

[✓] Connected device (1 available)
    • Chrome (web) • chrome • web-javascript • Google Chrome 100.0.4896.127

[✓] HTTP Host Availability
    • All required HTTP hosts are available

! Doctor found issues in 1 category.

Close this issue due to there is another general FlutterViewController issue caused to this, so please follow issue #14720 for further updates.


Error occurred when executing UNETLoader

Error occurred when executing UNETLoader:
'cc_projection.weight'
File "/data/ComfyUI/execution.py", line 152, in recursive_execute
output_data, output_ui = get_output_data(obj, input_data_all)
File "/data/ComfyUI/execution.py", line 82, in get_output_data
return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
File "/data/ComfyUI/execution.py", line 75, in map_node_over_list
results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
File "/data/ComfyUI/nodes.py", line 838, in load_unet
model = comfy.sd.load_unet(unet_path)
File "/data/ComfyUI/comfy/sd.py", line 596, in load_unet
model = load_unet_state_dict(sd)
File "/data/ComfyUI/comfy/sd.py", line 586, in load_unet_state_dict
model = model_config.get_model(new_sd, "")
File "/data/ComfyUI/comfy/supported_models.py", line 302, in get_model
out = model_base.Stable_Zero123(self, device=device, cc_projection_weight=state_dict["cc_projection.weight"], cc_projection_bias=state_dict["cc_projection.bias"])
error occurred when loading UNETLoader and the model is 'iclight_sd15_fc_unet_ldm.safetensors'.

I just update the comfyui itself and yes it worked


docker install, missing admin interface

The docker install went fine on Mac OS. Afterwards I created an admin user via the command line, as shown in the documentation. When I login I see the link to the admin interface, but when I click on it I get an "500 internal server error". Any ideas?

I ran into the same problem. I am using docker-compose. Which container should I jump into to run the build script? Any chance this can be a configurable option to include the admin asset build in the docker-compose setup?

Hi @kzahel sorry for the lack of detail on this.. you can build the admin from within the app container, e.g. docker exec -it -u root webrecorder_app_1 bash and then run sh admin/build.sh or this should also tigger a build from outside the container docker exec -it webrecorder_app_1 sh admin.build (untested)
We've undergone a major overhaul, currently on develop branch and also deployed on webrecorder.io, and part of that is simplifying the admin interface and integrating it with the main UI. We'll be merging that into master shortly, and will have a migration guide with more info.
Are you using the admin interface primarily for managing users, or for the stats and other info?


rootless container systemd errors when running in container with all capabilities added

Is this a BUG REPORT or FEATURE REQUEST? (leave only one on its own line)
/kind bug
Description
When running a rootless container with cap-add=all, running systemd inside the container fails.
Failing units:

sys-kernel-config.mount
sys-kernel-debug.mount
systemd-journald-audit.socket

When adding --privileged, The following units fail as well:

proc-sys-fs-binfmt_misc.automount

Furthermore, shutting down the container also gives errors:
Failed to set wall message, ignoring: Could not activate remote peer.
Failed to power off system via logind: Could not activate remote peer.
[root@dce9d262111f /]# Error: non zero exit code: 129: OCI runtime error

Steps to reproduce the issue:
podman run -dt --cap-add=all --privileged fedora:rawhide /lib/systemd/systemd
podman exec -it -l /bin/bash
systemctl status

Similar problems can be seen with a ubuntu 20.04 container:
Dockerfile:
FROM ubuntu:20.04

RUN apt-get update && \
    DEBIAN_FRONTEND=noninteractive \
    apt-get install -y --no-install-recommends \
        systemd \
        systemd-container

Failing units (--privileged and cap-add=all):

proc-sys-fs-binfmt_misc.automount
sys-kernel-debug.mount

Shutting down the container also gives an error:
root@9e756e489805:/# systemctl poweroff
root@9e756e489805:/# Error: non zero exit code: 129: OCI runtime error

Output of podman version:
Version:            1.6.3
RemoteAPI Version:  1
Go Version:         go1.13.4
Git Commit:         9d087f6a766259ba53b224944f1b7b778035c370-dirty
Built:              Sat Nov 23 12:56:15 2019
OS/Arch:            linux/amd64

Output of podman info --debug:
debug:
  compiler: gc
  git commit: 9d087f6a766259ba53b224944f1b7b778035c370-dirty
  go version: go1.13.4
  podman version: 1.6.3
host:
  BuildahVersion: 1.12.0-dev
  CgroupVersion: v1
  Conmon:
    package: Unknown
    path: /usr/bin/conmon
    version: 'conmon version 2.0.3, commit: eb5fa88c26fde5ce1e3f8a1d2a8a9498b2d7dbe6'
  Distribution:
    distribution: arch
    version: unknown
  IDMappings:
    gidmap:
    - container_id: 0
      host_id: 1000
      size: 1
    - container_id: 1
      host_id: 100000
      size: 65536
    uidmap:
    - container_id: 0
      host_id: 1000
      size: 1
    - container_id: 1
      host_id: 100000
      size: 65536
  MemFree:<PHONE_NUMBER>6
  MemTotal:<PHONE_NUMBER>0
  OCIRuntime:
    name: runc
    package: Unknown
    path: /usr/bin/runc
    version: |-
      runc version 1.0.0-rc9
      commit: d736ef14f0288d6993a1845745d6756cfc9ddd5a
      spec: 1.0.1-dev
  SwapFree: 0
  SwapTotal: 0
  arch: amd64
  cpus: 4
  eventlogger: journald
  hostname: Clevo-N65
  kernel: 5.3.13-arch1-1
  os: linux
  rootless: true
  slirp4netns:
    Executable: /usr/bin/slirp4netns
    Package: Unknown
    Version: |-
      slirp4netns version 0.4.2
      commit: 69153b0d1cb82216d6782179ff7c3c5e91c731a1
  uptime: 1h 29m 50.12s (Approximately 0.04 days)
registries:
  blocked: null
  insecure: null
  search:
  - docker.io
  - registry.fedoraproject.org
  - quay.io
  - registry.access.redhat.com
  - registry.centos.org
store:
  ConfigFile: /home/daan/.config/containers/storage.conf
  ContainerStore:
    number: 1
  GraphDriverName: vfs
  GraphOptions: {}
  GraphRoot: /home/daan/.local/share/containers/storage
  GraphStatus: {}
  ImageStore:
    number: 6
  RunRoot: /run/user/1000
  VolumePath: /home/daan/.local/share/containers/storage/volumes

Package info (e.g. output of rpm -q podman or apt list podman):
Name            : podman
Version         : 1.6.3-1
Description     : Tool and library for running OCI-based containers in pods
Architecture    : x86_64
URL             : https://github.com/containers/libpod
Licenses        : Apache
Groups          : None
Provides        : None
Depends On      : cni-plugins  conmon  device-mapper  iptables  libseccomp  ostree  runc  skopeo
                  btrfs-progs  slirp4netns  libsystemd
Optional Deps   : podman-docker: for Docker-compatible CLI
Required By     : None
Optional For    : None
Conflicts With  : None
Replaces        : None
Installed Size  : 103.35 MiB
Packager        : Morten Linderud<EMAIL_ADDRESS>Build Date      : Sat 23 Nov 2019 12:56:15 PM CET
Install Date    : Mon 02 Dec 2019 07:17:38 PM CET
Install Reason  : Explicitly installed
Install Script  : No
Validated By    : Signature

podman inspect -l (Fedora rawhide --cap-add=all, --privileged)
[
    {
        "Id": "fef2d84eea7ab772662622f9928b1d9abaa8cb75bc8f638007c52aa729a73647",
        "Created": "2019-12-02T22:01:14.871283413+01:00",
        "Path": "/lib/systemd/systemd",
        "Args": [
            "/lib/systemd/systemd"
        ],
        "State": {
            "OciVersion": "1.0.1-dev",
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 27953,
            "ConmonPid": 27942,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2019-12-02T22:01:15.467020308+01:00",
            "FinishedAt": "0001-01-01T00:00:00Z",
            "Healthcheck": {
                "Status": "",
                "FailingStreak": 0,
                "Log": null
            }
        },
        "Image": "e13031c001a8b4a574e3088e2d1ab331d72d821804ccacdd41bf5662ae02cc98",
        "ImageName": "docker.io/library/fedora:rawhide",
        "Rootfs": "",
        "Pod": "",
        "ResolvConfPath": "/run/user/1000/vfs-containers/fef2d84eea7ab772662622f9928b1d9abaa8cb75bc8f638007c52aa729a73647/userdata/resolv.conf",
        "HostnamePath": "/run/user/1000/vfs-containers/fef2d84eea7ab772662622f9928b1d9abaa8cb75bc8f638007c52aa729a73647/userdata/hostname",
        "HostsPath": "/run/user/1000/vfs-containers/fef2d84eea7ab772662622f9928b1d9abaa8cb75bc8f638007c52aa729a73647/userdata/hosts",
        "StaticDir": "/home/daan/.local/share/containers/storage/vfs-containers/fef2d84eea7ab772662622f9928b1d9abaa8cb75bc8f638007c52aa729a73647/userdata",
        "OCIConfigPath": "/home/daan/.local/share/containers/storage/vfs-containers/fef2d84eea7ab772662622f9928b1d9abaa8cb75bc8f638007c52aa729a73647/userdata/config.json",
        "OCIRuntime": "runc",
        "LogPath": "/home/daan/.local/share/containers/storage/vfs-containers/fef2d84eea7ab772662622f9928b1d9abaa8cb75bc8f638007c52aa729a73647/userdata/ctr.log",
        "ConmonPidFile": "/run/user/1000/vfs-containers/fef2d84eea7ab772662622f9928b1d9abaa8cb75bc8f638007c52aa729a73647/userdata/conmon.pid",
        "Name": "blissful_clarke",
        "RestartCount": 0,
        "Driver": "vfs",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "",
        "EffectiveCaps": [
            "CAP_CHOWN",
            "CAP_DAC_OVERRIDE",
            "CAP_DAC_READ_SEARCH",
            "CAP_FOWNER",
            "CAP_FSETID",
            "CAP_KILL",
            "CAP_SETGID",
            "CAP_SETUID",
            "CAP_SETPCAP",
            "CAP_LINUX_IMMUTABLE",
            "CAP_NET_BIND_SERVICE",
            "CAP_NET_BROADCAST",
            "CAP_NET_ADMIN",
            "CAP_NET_RAW",
            "CAP_IPC_LOCK",
            "CAP_IPC_OWNER",
            "CAP_SYS_MODULE",
            "CAP_SYS_RAWIO",
            "CAP_SYS_CHROOT",
            "CAP_SYS_PTRACE",
            "CAP_SYS_PACCT",
            "CAP_SYS_ADMIN",
            "CAP_SYS_BOOT",
            "CAP_SYS_NICE",
            "CAP_SYS_RESOURCE",
            "CAP_SYS_TIME",
            "CAP_SYS_TTY_CONFIG",
            "CAP_MKNOD",
            "CAP_LEASE",
            "CAP_AUDIT_WRITE",
            "CAP_AUDIT_CONTROL",
            "CAP_SETFCAP",
            "CAP_MAC_OVERRIDE",
            "CAP_MAC_ADMIN",
            "CAP_SYSLOG",
            "CAP_WAKE_ALARM",
            "CAP_BLOCK_SUSPEND",
            "CAP_AUDIT_READ"
        ],
        "BoundingCaps": [
            "CAP_CHOWN",
            "CAP_DAC_OVERRIDE",
            "CAP_DAC_READ_SEARCH",
            "CAP_FOWNER",
            "CAP_FSETID",
            "CAP_KILL",
            "CAP_SETGID",
            "CAP_SETUID",
            "CAP_SETPCAP",
            "CAP_LINUX_IMMUTABLE",
            "CAP_NET_BIND_SERVICE",
            "CAP_NET_BROADCAST",
            "CAP_NET_ADMIN",
            "CAP_NET_RAW",
            "CAP_IPC_LOCK",
            "CAP_IPC_OWNER",
            "CAP_SYS_MODULE",
            "CAP_SYS_RAWIO",
            "CAP_SYS_CHROOT",
            "CAP_SYS_PTRACE",
            "CAP_SYS_PACCT",
            "CAP_SYS_ADMIN",
            "CAP_SYS_BOOT",
            "CAP_SYS_NICE",
            "CAP_SYS_RESOURCE",
            "CAP_SYS_TIME",
            "CAP_SYS_TTY_CONFIG",
            "CAP_MKNOD",
            "CAP_LEASE",
            "CAP_AUDIT_WRITE",
            "CAP_AUDIT_CONTROL",
            "CAP_SETFCAP",
            "CAP_MAC_OVERRIDE",
            "CAP_MAC_ADMIN",
            "CAP_SYSLOG",
            "CAP_WAKE_ALARM",
            "CAP_BLOCK_SUSPEND",
            "CAP_AUDIT_READ"
        ],
        "ExecIDs": [],
        "GraphDriver": {
            "Name": "vfs",
            "Data": null
        },
        "Mounts": [],
        "Dependencies": [],
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": [],
            "SandboxKey": "",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "",
            "Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "",
            "IPPrefixLen": 0,
            "IPv6Gateway": "",
            "MacAddress": ""
        },
        "ExitCommand": [
            "/usr/bin/podman",
            "--root",
            "/home/daan/.local/share/containers/storage",
            "--runroot",
            "/run/user/1000",
            "--log-level",
            "error",
            "--cgroup-manager",
            "cgroupfs",
            "--tmpdir",
            "/run/user/1000/libpod/tmp",
            "--runtime",
            "runc",
            "--storage-driver",
            "vfs",
            "--events-backend",
            "journald",
            "container",
            "cleanup",
            "fef2d84eea7ab772662622f9928b1d9abaa8cb75bc8f638007c52aa729a73647"
        ],
        "Namespace": "",
        "IsInfra": false,
        "Config": {
            "Hostname": "fef2d84eea7a",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": true,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "TERM=xterm",
                "HOSTNAME=fef2d84eea7a",
                "container=podman",
                "DISTTAG=f32container",
                "FGC=f32",
                "FBR=f32",
                "HOME=/root"
            ],
            "Cmd": [
                "/lib/systemd/systemd"
            ],
            "Image": "docker.io/library/fedora:rawhide",
            "Volumes": null,
            "WorkingDir": "/",
            "Entrypoint": "",
            "OnBuild": null,
            "Labels": {
                "maintainer": "Clement Verna<EMAIL_ADDRESS>            },
            "Annotations": {
                "io.container.manager": "libpod",
                "io.kubernetes.cri-o.ContainerType": "sandbox",
                "io.kubernetes.cri-o.Created": "2019-12-02T22:01:14.871283413+01:00",
                "io.kubernetes.cri-o.TTY": "true",
                "io.podman.annotations.autoremove": "FALSE",
                "io.podman.annotations.init": "FALSE",
                "io.podman.annotations.privileged": "TRUE",
                "io.podman.annotations.publish-all": "FALSE",
                "org.opencontainers.image.stopSignal": "37"
            },
            "StopSignal": 37
        },
        "HostConfig": {
            "Binds": [],
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "k8s-file",
                "Config": null
            },
            "NetworkMode": "default",
            "PortBindings": {},
            "RestartPolicy": {
                "Name": "",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "CapAdd": [],
            "CapDrop": [],
            "Dns": [],
            "DnsOptions": [],
            "DnsSearch": [],
            "ExtraHosts": [],
            "GroupAdd": [],
            "IpcMode": "",
            "Cgroup": "",
            "Cgroups": "default",
            "Links": null,
            "OomScoreAdj": 0,
            "PidMode": "",
            "Privileged": true,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": [],
            "Tmpfs": {},
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 65536000,
            "Runtime": "oci",
            "ConsoleSize": [
                0,
                0
            ],
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": null,
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": [],
            "DiskQuota": 0,
            "KernelMemory": 0,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": 0,
            "OomKillDisable": false,
            "PidsLimit": 0,
            "Ulimits": [
                {
                    "Name": "RLIMIT_NOFILE",
                    "Soft": 1024,
                    "Hard": 1024
                }
            ],
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0
        }
    }
]

I take it you are running rootless container.  Systemd might be attempting to do things that are just impossible for a rootless container.  IE Rootless containers are only allowed to mount procfs, Fuse, sysfs, tmpfs file systems.  Anything else requires real CAP_SYS_ADMIN.
This is probably what is blocking the mount unit files.

Looking at the debug and config mount units, there are two conditions for them to be started:
sys-kernel-debug.mount:
ConditionPathExists=/sys/kernel/debug
ConditionCapability=CAP_SYS_RAWIO

sys-kernel-config.mount:
ConditionPathExists=/sys/kernel/config
ConditionCapability=CAP_SYS_RAWIO

Maybe we can hide these in rootless containers so that systemd won't try to mount them?
Another idea I had was to have some way to have cap-add=all only give capabilities to rootless containers that it actually can do something with but that might be impossible if adding some capabilities does allow a container to do more than it normally would but not everything (e.g. you might be able to do extra stuff with CAP_SYS_RAWIO, just not mount stuff from /sys/kernel).
The other two units (automount and audit.socket) fail with a generic (Result: resources) error, I'll investigate why those fail exactly once I have some more free time.
My ultimate goal here is to hopefully have systemd in podman containers just work (without errors) regardless of the way podman is configured (root/rootless, capabilities, privileged, ...)

The problem is podman has no idea which Capabilties allow what, and this changes all the time.
I don't see us adding these features, and believe that the user should be required to figure this out.


Allow User to Trust A Certificate

In rare cases, the user may be unable to get around the certificate issue with the --extra-ca-certs option. This PR offers an argument to trust a (manually confirmed) certificate by offering its fingerprint.

Thank you for your valuable suggestions. I have made the necessary changes to those messages. They now read much clearer.

Given that I don't think I'll need to add more stuff any time soon, I've already release version 1.2.0 with this change.

I just saw your approval, and thanks for taking care of this PR.


upgrade to pocket version 0.8.0 and adapt to new API

fixes https://github.com/rodydavis/pocketbase_drift/issues/5

LGTM thank you!


Update examples README

Running yarn does not seem to work here.
We need to run yarn setup before we can run yarn link webpack.

What kind of change does this PR introduce?
Documentation fix.
Did you add tests for your changes?
No.
Does this PR introduce a breaking change?
No.
What needs to be documented once your changes are merged?
This update should be enough on it's own.

Thanks


Issue/run tests against postgresql 10

Description
Set pytest.ini as such that the tests run against PostgreSQL 10
Part of inmanta/inmanta-core#3595
Self Check:

[x] Attached issue to pull request
[x] Changelog entry
[ ] Type annotations are present
[ ] Code is clear and sufficiently documented
[ ] No (preventable) type errors
[ ] Sufficient test cases (reproduces the bug/tests the requested feature)
[ ] Correct, in line with design
[ ] End user documentation is included or an issue is created for end-user documentation

Reviewer Checklist:

[ ] Sufficient test cases (reproduces the bug/tests the requested feature)
[ ] Code is clear and sufficiently documented
[ ] Correct, in line with design

Processing this pull request

Merged into branches iso4 in dd1d3c21985eaf57cfd79595b2633e2c28761942


Wrong error on invalid sibling transition

Bug
Description:
Invalid sibling transitions report a wrong error.
(Bug) Expected result:
Invalid transition for state node '(machine).nested' on event 'RIGHT_CLICK':
Child state 'right' does not exist on '(machine)'

(Bug) Actual result:
Invalid transition for state node '(machine).nested' on event 'LEFT_CLICK':
Child state 'left' does not exist on '(machine)'

Link to reproduction:
https://codesandbox.io/s/zen-cache-01gk2

This is not a "wrong error" per se; but rather, the on property is a getter that formats transitions when a state node is active. Since the transition for 'LEFT_CLICK' appears first, it formats that first and realizes there's no sibling state 'left' (should be '.left', so it throws.

Ok... I see. A more helpful message could be thrown here though.
I still don't quite get all relations between those few classes XState has, maybe you would be able to write up few words about that as implementation notes, would help me (and others) a lot while exploring the codebase. I know the implementation is going to change, but then such notes could be adjusted - for now I'm trying my best to read between the code lines 😉 In particular, it would be good to bullet point responsibilities of classes and describe the overall approach of the algorithm.
When thinking about this now I suspect that this error is caused by lazy transition formatting which gets cached later on. Maybe we could evaluate lazy things in dev mode at initialization time to make it more apparent that the machine config itself is broken rather than it's something weirdly wrong with the transition which we attempt to make with our concrete event?

I still don't quite get all relations between those few classes XState has, maybe you would be able to write up few words about that as implementation notes, would help me (and others) a lot while exploring the codebase.

I'm working on a big simplification, and I'll add plenty of comments to make it more understandable.

When thinking about this now I suspect that this error is caused by lazy transition formatting which gets cached later on.

Yep!

Maybe we could evaluate lazy things in dev mode at initialization time to make it more apparent that the machine config itself is broken rather than it's something weirdly wrong with the transition which we attempt to make with our concrete event?

Good idea. I think we should prioritize adding development-only pre-execution analysis (which outputs to the console) for this.


ADK support statement is misleading

Microsoft recommends using the Windows ADK that matches the version of Windows you're deploying. For example, use the Windows ADK for Windows 10 version 1703 when deploying Windows 10 version 1703.

The first sentence works in a new version scenario, but not a previous version scenario. The second sentence makes it worse. A customer who is still deploying v1703 might think they can only use the 1703 ADK, which isn't supported by Configuration Manager current branch.

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

ID: dc732ec0-eb14-8da2-7688-dd74a72cdae5
Version Independent ID: a93682ff-2984-38e0-5a0d-6f77c1c9e5db
Content: Support for Windows 10 - Configuration Manager
Content Source: sccm/core/plan-design/configs/support-for-windows-10.md
Product: configuration-manager
GitHub Login: @aczechowski
Microsoft Alias: aaroncz

Great comment. What about a customer who is deploying 2016 LTSC with 1810 and 1809 ADK?

Closing this issue as the text will be reworded with the 1902 update content.


Remove old API migrations

Fixes #4079
Remove deprecated migration steps from the migrate_database function in api_app/api/routes/migrations.py.

Migration Steps Removal

Remove multiple deprecated migration steps from the migrate_database function.
Update the migrate_database function to only include necessary migration steps.

Version Update

Update the version in api_app/_version.py from "0.19.3" to "0.20.0".

Test Updates

Remove tests related to deprecated migration steps in api_app/tests_ma/test_api/test_routes/test_migrations.py.
Update tests to only include necessary migration steps.

File Deletions

Delete api_app/db/migrations/airlock.py.
Delete api_app/db/migrations/resources.py.
Delete api_app/db/migrations/shared_services.py.
Delete api_app/db/migrations/workspaces.py.
Delete api_app/tests_ma/test_db/test_migrations/test_workspace_migration.py.

For more details, open the Copilot Workspace session.

@tim-allen-ck hopefully this is a start, not tested etc, but please feel free to take this and iterate.


Improve unicode escape in regex

This PR supports regex Unicode escape in curly brackets format, provided that the 'u' flag presents.
For example:
let x = /\u{01ac}/u;

Also, it extends Unicode up to 0x10FFFF. For example:
let x = /\u{10FFFF}/u;

I believe this PR also fixes issue #3563.

Nice work, Henry! Code LGTM.
I actually submitted a couple of Unicode logic PRs myself to try to learn more about the standard - I'd love if you could review one of them for me. See #3645, #3647.

Thanks @christiantjl.
I saw your PRs. #3645 looks good to me. When I have time, I will verify the correctness of the Unicode categories in #3647.


Refactor "ApplyContainer" to support Init, Deployment and Job

Type of change

Refactoring

Description
Pull out changes from #3556. This change pulls "ApplyContainer" and "ApplyInitContainer" into a single function. And then re-uses that function to implement the feature for "Init", "Job" and "Deployment" containers.

Checklist

[ ] Update/write design documentation in ./documentation/design
[ ] Write tests and make sure they pass
[ ] Update documentation
[ ] Check RBAC rights for Kubernetes / OpenShift roles
[ ] Try your changes from Pod inside your Kubernetes and OpenShift cluster, not just locally
[ ] Reference relevant issue(s) and close them after merging
[ ] Update CHANGELOG.md

@enmasse-ci run tests profile=smoke

@enmasse-ci run tests profile=smoke

:heavy_check_mark: Test Summary :heavy_check_mark:
TEST_PROFILE: smoke
TEST_CASE:
TOTAL: 3
PASS: 3
FAIL: 0
SKIP: 0


Add support for server addons

Co-authored with @vinistock.
This is initially to support the Tapioca LSP.
There is some tricky logic involving two mutexes that was needed to ensure things are loaded in the correct order.

FYI @KaanOzkan


fix:Pagination on /users

Date: 01 10 2024

Developer Name:  Vinod Prajapati

Issue Ticket Number

closes #865

Description

Added logic that would not allow to mutate page number when it is 0 or when there is no more response
Documentation Updated?

[ ] Yes
[X] No

Under Feature Flag

[ ] Yes
[X] No

Database Changes

[ ] Yes
[X] No

Breaking Changes

[ ] Yes
[X] No

Development Tested?

[X] Yes
[ ] No

Screenshots

Screenshot 1

https://github.com/user-attachments/assets/aefa87a3-915b-4daa-869c-b0b56f966d32
Test Coverage

Screenshot 1

Additional Notes

There were only 29 users while i was running locally, so i have recorded video by changing USER_FETCH_COUNT=5 so that i can show the issue is fixed.

@codervinod123 someone is working on removing the next and prev buttons so this pr is contradicted
check this

https://github.com/Real-Dev-Squad/website-dashboard/pull/860

@vinit717 so do i need to close it?


Broken: undefined method sl.slideHandler(currentIndex)

I'm having a problem that seems to be located at line 124:
 if (currentIndex != null) {
               ** return sl.slideHandler(currentIndex);**
              }

is returned undefined and I'm receiving a message that sl.slideHandler(currentIndex) is not a function.  I'm debugging and sure enough, the function is showing as undefined.  I am able to see swipeHandler, clickHandler, etc functions, but not the slideHandler.
I'm trying to bind the current-index to a client-side model so that when my data loads, the slider will display a specific item from the list.  So far, I have been unable to get the initialSlide to initialize or update correctly.  When my page loads, I get data and init the slick directive which, I would think, would allow the initial slide to bind correctly.
I have the latest version of slick-carousel. and using this directive with it.  Any ideas or thoughts?

I have the same issue !

dooziiinc commented on 25 Mar

You can modify the code in line 119 of angular-slick/dist/slick.js  like this:
   slider.on('init', function (evt, sl) {
    //...
  });

Besides, you should move all  events binding before initialization (see #101)

Downgrading slick-carousel to v1.3.15 seems to fix this issue. I have also moved all event binds before initialization (see #101)


Update requirements.txt

Hi @underyx :)
can we bump the versions? cause raven-aiohttp=0.5 doesn't work with aiothttp=3.x :(

Of course, thanks for the PR! The 0.3.0 release should be up on PyPI within a couple minutes.


fix(button-toggle): use native button and aria-pressed for button-toggle

Comments addressed. Thanks for review!

Changed to group role.
Now we don't have a way to communicate whether it supports single or multiple selection.

@tinayuangao looks like a small lint error (missing semi-colon)

@tinayuangao can you look at the failures on this PR?


13 - Possibility to print inheritances from a FASTPharo model

Add PUGizmo class>>checkSmalltalkTypeContainerOf:
Modification of  PUGizmo class>>printInheritanceWithClass:withStream:
FIX#13

I verified the change, and it works for the Java model still. However, I wonder if it's not better to do a general check to see if isInterface is understood on the class, rather than testing for SmallTalk -- because the Gizmo could be used in other languages and this problem will happen again. I think I found a hint for you at https://stackoverflow.com/questions/32422955/pharo-smalltalk-how-can-i-check-if-a-message-conforms-to-a-protocol-defined-in

close #14


Improved error messages for instance names

Currently, rbx-dom throws a pretty nondescript error when an instance has a name containing invalid utf-8:
[TRACE rbx_binary::deserializer::state] Known prop, canonical name C0 and type CFrame
[TRACE rbx_binary::chunk] Chunk "PROP" (compressed: 24, len: 37, reserved: 0)
[TRACE rbx_binary::deserializer::state] PROP chunk (RotateP.C1, instance type 59, prop type 59
[TRACE rbx_binary::deserializer::state] Known prop, canonical name C1 and type CFrame
[TRACE rbx_binary::chunk] Chunk "PROP" (compressed: 20, len: 18, reserved: 0)
[TRACE rbx_binary::deserializer::state] PROP chunk (RotateP.Enabled, instance type 59, prop type 59
[TRACE rbx_binary::deserializer::state] Known prop, canonical name Enabled and type Bool
[TRACE rbx_binary::chunk] Chunk "PROP" (compressed: 30, len: 50, reserved: 0)
[TRACE rbx_binary::chunk] Chunk "PROP" (compressed: 69, len: 103, reserved: 0)
[TRACE rbx_binary::deserializer::state] PROP chunk (RotateP.Name, instance type 59, prop type 59

stream did not contain valid UTF-8

This particular instance is more common in Roblox than one might think and is known as a "virus" instance, one created by a malicious script or plugin to be intentionally annoying or disruptive. Developers that get this error generally don't know that they have these, and the instances are also generally harmless, but make deserialization in rbx-dom fail with the above error message.
It would be nice to throw a better error here (and maybe in other cases for invalid utf-8), maybe even mentioning the exact instance and where it is so developers can deal with it accordingly.

Looked into this more, and it's going to be difficult (or impossible) to give much useful info (e.g. the instance's full name) in these errors because the DOM is necessarily incomplete in the middle of a deserialization operation.
Maybe instead of more specific errors, we could just do a lossy conversion for non UTF-8 Variant::String properties? The main drawback is just the fact the original data would be altered, and there may be legitimate uses for non UTF-8 string properties!
Alternatively, we could start reading Variant::String props into a Vec<u8> instead of a String. This would be more correct, but it would be a breaking change and makes string properties more complicated to work with for consumers.

Alternatively, we could start reading Variant::String props into a Vec instead of a String. This would be more correct, but it would be a breaking change and makes string properties more complicated to work with for consumers.

This actually sounds great for Lune as a consumer since we could, in many cases, skip the entire conversion step between dom string -> rust string -> lua (c) string. We could also unify some code we have for differences in handling with normal strings / binary strings. I can't really speak for Rojo or any other tools (are there any other than Remodel/Lune?) though.


add option for recording eval result after each commit

right now you can specify record_test_for_each_commit=True in .agent.yaml to run eval after each aider's commit

can you also document where is the test result recorded to?

updated in readme

awesome!