v20210323183018

Upstream
Changelog
Actions

Fork from Conda Forge
Reset build number
Linter fixes
Removed unnecessary patch files

Notes

I accidentally pushed my changes to main at first. I think I've done what I need to revert it.

Linter check found the following problems:
The following problems have been found:
ERROR: /tmp/abs_66s7k05zjo/clone/recipe/meta.yaml:20: missing_source: The recipe is missing a URL for the source
ERROR: /tmp/abs_66s7k05zjo/clone/recipe/meta.yaml:20: missing_hash: The recipe is missing a sha256 checksum for a source file
ERROR: /tmp/abs_66s7k05zjo/clone/recipe/meta.yaml:30: patch_must_be_in_build: patch must be in build when source/patches is set.
Errors were found

I feel uneasy about the fact that the sources are fetched from the web archive... I found https://www.netlib.org/f2c/ which is on version 20200916 (https://www.netlib.org/f2c/src/version.c). This is the source that Arch Linux use (https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=f2c).
Does anyone have opinions on this?

@JeanChristopheMorinPerso Yes, I agree its not great, and I don't like it either. These older (and often very funky) projects sometimes force us to do silly things.
I would like us to investigate further to see if there is some canonical source for this -- I am honestly not familiar with f2c so I have no idea..

@AndrewVallette I just verified, and the content of https://www.netlib.org/f2c matches exactly the content in the web archive. I ran computed the sha256 of each file in src and in the zip file and they all match.

Script used to compare (Bash script):
set -ex

# Download src from www.netlib.org
wget https://www.netlib.org/f2c/src.tgz -O src-1.tgz > /dev/null 2>&1
tar -xzf src-1.tgz
mv src src-1

# Download src from web archive
wget https://web.archive.org/web/20210323183018/https://netlib.sandia.gov/f2c/src.tgz -O src-2.tgz > /dev/null 2>&1
tar -xzf src-2.tgz
mv src src-2

# Compare checksums for src
diff <(find src-1 -type f -exec shasum -a 256 {} \; | sed 's/src-1/src/g') <(find src-2 -type f -exec shasum -a 256 {} \; | sed 's/src-2/src/g')

# Download libf2c from www.netlib.org
wget https://www.netlib.org/f2c/libf2c.zip -O libf2c-1.zip > /dev/null 2>&1
mkdir libf2c-1
unzip -d libf2c-1 libf2c-1.zip

# Download libf2c from web archive
wget https://web.archive.org/web/20210323183018/https://netlib.sandia.gov/f2c/libf2c.zip -O libf2c-2.zip > /dev/null 2>&1
mkdir libf2c-2
unzip -d libf2c-2 libf2c-2.zip

# Compare checksums for libf2c
diff <(find libf2c-1 -type f -exec shasum -a 256 {} \; | sed 's/libf2c-1/libf2c/g') <(find libf2c-2 -type f -exec shasum -a 256 {} \; | sed 's/libf2c-2/libf2c/g')

Additionally, some more googling tells me that https://www.netlib.org seems to be the home of LAPACK and LINPACK. So I guess we can trust them?

@AndrewVallette @JeanChristopheMorinPerso Am I ok to move forward with this?

I am personally ok with moving forward to use http://www.netlib.org/f2c/. I just took a quick look at what Fedora does and they also use http://www.netlib.org/f2c/. From https://koji.fedoraproject.org/koji/buildinfo?buildID=2115193, you can download the src.rpm and then we can extract it with rpm2cpio <path to src.rpm> | cpio -idmv and look into f2c.spec. I trust both Fedora and Arch Linux.

Yes, I agree with JC that changing the URL is fine.
However, what I don't understand is why this is named with a "2021" year, when the files seem to be from no later than 2020. Do we know where this<PHONE_NUMBER>3018 version is coming from?

URL has been updated. Let me know what you would like to do about the rest.

Linter check found the following problems:
The following problems have been found:
ERROR: /tmp/abs_8179gngc2g/clone/recipe/meta.yaml:20: missing_source: The recipe is missing a URL for the source
ERROR: /tmp/abs_8179gngc2g/clone/recipe/meta.yaml:20: missing_hash: The recipe is missing a sha256 checksum for a source file
ERROR: /tmp/abs_8179gngc2g/clone/recipe/meta.yaml:30: patch_must_be_in_build: patch must be in build when source/patches is set.
Errors were found

I can say that wsfe.c.patch is definitely not needed, so you can remove the file along with the reference in the meta.yaml. This patch has no effect whatsoever.
The other two would have an affect on some platforms, but I don't know if they're needed or not. Looks like conda-forge has them in patches., but theres no patch in build, so it seems they aren't being used.
My vote would be to remove them all completely.

No idea whats going on with the weird (and misleading) version. Aside from that, I think it looks OK to me. I think we can let it be, and if theres a problem later we'll correct it 😄
Also, I'd usually recommend to completely remove the patches (and their references) to keep things cleaner -- but I won't be a stickler on that today 👍

Done!

Hmm, I know where the version comes from - and I understand the reasoning behind using it - but I am not sure we should copy the same logic.
See, netlib is pretty old, and their used to go down pretty often back in the day, and was often inaccessible behind certain VPNs and proxies. So instead of fetching the sources from their domain, folks started using the Internet archive. The version number - in this case,<PHONE_NUMBER>3018 - points to the date and time when the snapshot was captured (so in this case, March 23 2021). The actual version of the software is noted in the sources, as I am sure everyone has noticed by now. Fun fact: I wrote a similar script to fetch f2c sources in grad school, precisely because of this reason.
This made sense back when this domain was fairly unstable but it's been OK since the past few years (I guess that's because more and more people use package managers or bundles of some sort to access netlib programs) so it's not really needed, and most CI systems are able to access it just fine. So<PHONE_NUMBER>3018 is clearly incorrect and misleading.
But a better question would be: why do Fedora (and Suse, amongst others) point to version 20210928 (@JeanChristopheMorinPerso linked to this version earlier) when no such version has been released? The reason is that minor changes are made to the program every now and then, and over time, these patched versions spread across the community and become the new "versions" that have to be matched by other package managers to resolve dependencies. In this case, Fedora made the change (I think it was one of their maintainers) and Suse and other RPM based systems soon followed. We don't have any such issues though, so I think we can stick to whatever version is in the sources.
I hope this answers your question @AndrewVallette and @JeanChristopheMorinPerso.
(How do I know this? I've spent an unhealthy amount of time with LAPACK, that's how).

@sumit0190 Wow, thanks Sumit! What a mess, haha. I admit this isn't in my realm of expertise.. before I joined Anaconda, I honestly thought Fortran had gone the way of ALGOL-58 -- I'd never encountered it a single time in the last 25+ years. I guess it's all about which domains you're working in 😄
So, it sounds like we should use the version JC mentioned in version.c then.

Thanks @sumit0190 ! So from what I understannd, we are good to go with downloading from netlib. We just need to change the version so that it matches what the source code says (20200916).

Version has been updated. Thank you all for your input and help!

Unfortunately cannot comment on the line, but do we even need cmake for Windows? The scripts just use nmake.

Since a re-review was requested: what about this question? Do we need cmake for Windows?

@katietz all of your questions were discussed at one point in the comments above. Tagging @sumit0190 and @AndrewVallette and @JeanChristopheMorinPerso for clarification.

@katietz any thoughts? Currently you've got a blocking review, would you need any more changes to remove this block?

So where did we land on all of this? I would like to get this uploaded.


@angular-devkit/build-angular dependency<EMAIL_ADDRESS>uses<EMAIL_ADDRESS>which has npm vulnerability 1693

└─┬<EMAIL_ADDRESS>├─┬<EMAIL_ADDRESS>│ └──<EMAIL_ADDRESS>deduped
├──<EMAIL_ADDRESS>└─┬<EMAIL_ADDRESS>└──<EMAIL_ADDRESS>https://www.npmjs.com/advisories/1693

Closed via https://github.com/angular/angular-cli/pull/20737

Does this solve the problem in older Angular versions? V9 also has the same problem.

Does this solve the problem in older Angular versions? V9 also has the same problem.

This fix cannot be back-ported to version 10 and 9. These versions still depend on postcss 7. Changing that would be a major change.

@alan-agius4 the fix didn't solve the problem as<EMAIL_ADDRESS>uses<EMAIL_ADDRESS>which still has the vulnerability. The problem is resolved in versions >8.2.10.

Should this not be reopened?

This fix cannot be back-ported to version 10 and 9. These versions still depend on postcss 7. Changing that would be a major change.
That said, the vulnerability cannot be exploited when using the Angular CLI, as we don't expect the Angular CLI to be running on production servers and arbitrary stylesheets are compiled on the fly
See info: https://github.com/postcss/postcss/commit/8682b1e4e328432ba692bed52326e84439cec9e4#commitcomment-49809613

I was referring to it still being present on v11 as commented on by @dominikfoldi. We've not yet moved to Angular 12 and the issue still persists via resolve-url-loader.

This has already been addressed in v11.
https://unpkg.com/browse/<EMAIL_ADDRESS>

That uses<EMAIL_ADDRESS>which is still using<EMAIL_ADDRESS>https://github.com/bholloway/resolve-url-loader/blob/657a637583b02cb159000084d01eda6015408dd3/packages/resolve-url-loader/package.json#L41. Am I misunderstanding something? Is the expectation that this issue is now with resolve-url-loader and should be resolved there instead?

That uses<EMAIL_ADDRESS>which is still using<EMAIL_ADDRESS>https://github.com/bholloway/resolve-url-loader/blob/657a637583b02cb159000084d01eda6015408dd3/packages/resolve-url-loader/package.json#L41. Am I misunderstanding something? Is the expectation that this issue is now with resolve-url-loader and should be resolved there instead?

You are correct.
I was under the impression that resolve-url-loader@4 was updated to use postcss 8, but it appears not to be the case.

Just to agree with your point also though, this is not something I would expect to be present in production. And is more an annoyance for clogging up our CI pipeline logs.


Looking up a deactivated widget's ancestor is unsafe.

When I upgrade to the v0.5.7 in the dev channel I got this error which was previously working fine.
Then I tried beta channel too but this error is not going. I don't know how to handle it as I got no clue searching over google.
The potential candidate of the crash is this code
 Future getImage(BuildContext context,ImageSource imageSource) async {
    Io.File image = await ImagePicker.pickImage(source: imageSource);
    if(image!=null){
      print(image);
      showPhoto(context,image);
    }else{
      _scaffoldkey.currentState.showSnackBar(new SnackBar(content: new Text("Unable to select photo, Try again..")));
    }
  }
  void showPhoto(BuildContext context,Io.File image) async {
    final value = await Navigator.push(context, new MaterialPageRoute(
        builder: (BuildContext context) =>
        new MediaExplorer(name: widget.name, image: image, uuid: widget.uuid)
    ));
    if (value != null) {
      _widgets.add(ImageTile(imageCard: value, uid: widget.uuid,));
    }
  }

When I click on the file to track where the error occured it navigates to this line in above code with cursor behing push method.
 final value = await Navigator.push(context, new MaterialPageRoute(

Exception
[+8427 ms] I/flutter (22485): File: '/storage/emulated/0/WhatsApp/Media/WhatsApp Images/IMG-20180717-WA0000.jpg'
[   +2 ms] E/flutter (22485): [ERROR:topaz/lib/tonic/logging/dart_error.cc(16)] Unhandled exception:
[        ] E/flutter (22485): Looking up a deactivated widget's ancestor is unsafe.
[        ] E/flutter (22485): At this point the state of the widget's element tree is no longer stable. To safely refer to a widget's ancestor in its dispose() method, save a reference to the ancestor by calling inheritFromWidgetOfExactType() in the widget's didChangeDependencies() method.
[        ] E/flutter (22485):
[   +1 ms] E/flutter (22485): #0      Element._debugCheckStateIsActiveForAncestorLookup.<anonymous closure> (package:flutter/src/widgets/framework.dart:3203:9)
[        ] E/flutter (22485): #1      Element._debugCheckStateIsActiveForAncestorLookup (package:flutter/src/widgets/framework.dart:3212:6)
[        ] E/flutter (22485): #2      Element.ancestorStateOfType (package:flutter/src/widgets/framework.dart:3254:12)
[        ] E/flutter (22485): #3      Navigator.of (package:flutter/src/widgets/navigator.dart:1176:19)
[        ] E/flutter (22485): #4      Navigator.push (package:flutter/src/widgets/navigator.dart:816:22)
[        ] E/flutter (22485): #5      TimelinePanelState.showPhoto (package:hms/panels/timeline_panel.dart:192:35)
[        ] E/flutter (22485): <asynchronous suspension>
[   +2 ms] E/flutter (22485): #6      TimelinePanelState.getImage (package:hms/panels/timeline_panel.dart:185:7)
[   +1 ms] E/flutter (22485): <asynchronous suspension>
[        ] E/flutter (22485): #7      TimelinePanelState.chooseSource.<anonymous closure>.<anonymous closure> (package:hms/panels/timeline_panel.dart:172:14)
[        ] E/flutter (22485): #8      _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:494:14)
[        ] E/flutter (22485): #9      _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:549:30)
[        ] E/flutter (22485): #10     GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:102:24)
[        ] E/flutter (22485): #11     TapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:161:9)
[        ] E/flutter (22485): #12     TapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:94:7)
[        ] E/flutter (22485): #13     PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:315:9)
[        ] E/flutter (22485): #14     PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:73:12)
[        ] E/flutter (22485): #15     PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:101:11)
[        ] E/flutter (22485): #16     _WidgetsFlutterBinding&BindingBase&GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:143:19)
[        ] E/flutter (22485): #17     _WidgetsFlutterBinding&BindingBase&GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:121:22)
[        ] E/flutter (22485): #18     _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:101:7)
[        ] E/flutter (22485): #19     _WidgetsFlutterBinding&BindingBase&GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:64:7)
[        ] E/flutter (22485): #20     _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:48:7)
[        ] E/flutter (22485): #21     _invoke1 (dart:ui/hooks.dart:134:13)
[        ] E/flutter (22485): #22     _dispatchPointerDataPacket (dart:ui/hooks.dart:91:5)
[        ] I/FlutterActivityDelegate(22485): onResume setting current activity to this
[  +17 ms] W/Adreno-EGL(22485): <qeglDrvAPI_eglGetConfigAttrib:607>: EGL_BAD_ATTRIBUTE
[   +5 ms] W/Adreno-EGL(22485): <qeglDrvAPI_eglGetConfigAttrib:607>: EGL_BAD_ATTRIBUTE
[   +1 ms] D/vndksupport(22485): Loading /vendor/lib/hw/gralloc.msm8916.so from current namespace instead of sphal namespace.

Flutter Doctor
[√] Flutter (Channel beta, v0.5.1, on Microsoft Windows [Version 10.0.17134.165], locale en-US)
[√] Android toolchain - develop for Android devices (Android SDK 27.0.3)
[√] Android Studio (version 3.1)
[√] IntelliJ IDEA Community Edition (version 2018.1)
[√] Connected devices (1 available)

• No issues found!```

Hi, I am facing the same issue but I am unable to understand where I am going wrong. Try having a look at my code:
class WelcomeScreen extends StatefulWidget {
  @override
  State createState() => new WelcomeScreenState();
}

class WelcomeScreenState extends State<WelcomeScreen> {
  bool delayed = false;
  String _animationName = "hello";
  bool paused = false;

  void initState() {
    super.initState();
  }

  void _complete(bool mounted) {
   if (mounted) {
      setState(() {
        paused = true;
        _animationName = null;
      });
      // Navigator.of(context).pushReplacementNamed('/tab');
   }
  }

  @override
  Widget build(BuildContext context) {
    MediaQueryData media = MediaQuery.of(context);

    var size = media.size;
    print('animation $_animationName');
    // TODO: implement build
    return new Scaffold(
            body: new Container(
                decoration: new BoxDecoration(
                  color: const Color(0xFF0E4476),
                ),
                child: new Stack(
                    alignment: AlignmentDirectional.bottomCenter,
                    children: <Widget>[
                      new Column(
                          mainAxisAlignment: MainAxisAlignment.center,
                          crossAxisAlignment: CrossAxisAlignment.center,
                          children: <Widget>[
                            Align(
                              alignment: AlignmentDirectional.center,
                              child: new AspectRatio(
                                aspectRatio:
                                    size.height > size.width ? 1.5 : 3.8,
                                child: new NimaActor(
                                  "assets/quack",
                                  paused: paused,
                                  alignment: Alignment.center,
                                  fit: BoxFit.scaleDown,
                                  animation: _animationName,
                                  mixSeconds: 0.2,
                                  completed: (String animtionName) {
                                    Navigator.of(context)
                                        .pushReplacementNamed('/tab');
                                    // print(
                                    //     'inside Complete  $_animationName $mounted');
                                    _complete(mounted);
                                  },
                                ),
                              ),
                            ),
                          ])
                    ])));
  }
}

//For Future Reference
Note for Scoped model user  (My Assumption):-
   Please look for the context which you are passing, i have encountered the same issue.

The context which is passed by the ScopedModelDescendant's builder is different than the context which is passed by the build method, so if you are passing the context to functions then you need to pass the build functions context to the function if not then this exception will occur.

I had the same issue with my app. The problem was I was trying to show a dialog using a previously popped context. The way I solved it was creating a global key for the scaffold in the page where I wanted the dialog to be shown, then instead of passing the current context to the showDialog() method, I passed the context from the scaffold.
Here is an incomplete code snippet for reference:
GlobalKey _scaffold = Global Key();
Scaffold(
  key: _scaffold
);
...
showDialog(context: _scaffold.currentContext)

Hope it helps

//For Future Reference
Note for Scoped model user (My Assumption):-
   Please look for the context which you are passing, i have encountered the same issue.

The context which is passed by the ScopedModelDescendant's builder is different than the context which is passed by the build method, so if you are passing the context to functions then you need to pass the build functions context to the function if not then this exception will occur.

I am using ScopedModel and facing the same problem, but i couldn't figure out how i am passing different context

My Build Function
@override
Widget build(BuildContext context) {
//shadow
var imagehight = 917;
var imagewidth = 622;
var scaleFactor = MediaQuery.of(context).size.width / imagewidth;
this.pageHeight = MediaQuery.of(context).size.height;
this.pageWidth = MediaQuery.of(context).size.width;
this.scaleFactor1 = scaleFactor;
  double shadowMargin = pageHeight * 0.4457 - 269.55;
var height = scaleFactor * imagehight;
var width = MediaQuery.of(context).size.width;

return Scaffold(
  //key: _scaffoldKey,
  body: Stack(
    children: <Widget>[
      PositionedTapDetector(
        child: ScopedModelDescendant<AyaList>(
            builder: (context, child, model) {
          this.ayaInPage = model.ayaInPage();
          this.selectModel = model;
          return mushafPageImage(
              height, width); //ImageCarousel(model: model,);
        }),
        onTap: (position) {
          _togglebar();
          print('onTap: ${position.global}, ${position.relative}');
        },
        onLongPress: (position) {
          _toggleshadow();
          _onLongPressSelectAya(_selectedAya(
              position.global.dx.ceil(), position.global.dy.ceil()));
        },
      ),
      _showShadow
          ? Container(
              margin: EdgeInsets.only(top: shadowMargin),
              child: ScopedModelDescendant<AyaList>(
                  builder: (context, child, model) {
                return CustomPaint(
                  painter: GreenPaint(
                      Colors.green.withOpacity(0.3888),
                      scaleFactor,
                      height,
                      model.isFirstAyaInPage() ? 0 : model.prevAya().x,
                      model.isFirstAyaInPage() ? 0 : model.prevAya().y,
                      model.aya.x,
                      model.aya.y),
                );
              }),
            )
          : Container(
              width: 0.0,
              height: 0.0,
            ),
      Opacity(
        child: ScopedModelDescendant<AyaList>(
            builder: (context, child, model) {
          return customAppBar1();
        }),
        opacity: _showbar ? 1.0 : 0.0,
        //duration: Duration(milliseconds: 500),
      ),
      _showbar
          ? customButtomBar1()
          : Container(
              width: 0.0,
              height: 0.0,
            ),
      _showbar
          ? copyIcon()
          : Container(
              width: 0.0,
              height: 0.0,
            ),
    ],
  ),
);

}

My Build Function
@override
Widget build(BuildContext context) {
//shadow
var imagehight = 917;
var imagewidth = 622;
var scaleFactor = MediaQuery.of(context).size.width / imagewidth;
this.pageHeight = MediaQuery.of(context).size.height;
this.pageWidth = MediaQuery.of(context).size.width;
this.scaleFactor1 = scaleFactor;
  double shadowMargin = pageHeight * 0.4457 - 269.55;
var height = scaleFactor * imagehight;
var width = MediaQuery.of(context).size.width;

return Scaffold(
  //key: _scaffoldKey,
  body: Stack(
    children: <Widget>[
      PositionedTapDetector(
        child: ScopedModelDescendant<AyaList>(
            builder: (context, child, model) {
          this.ayaInPage = model.ayaInPage();
          this.selectModel = model;
          return mushafPageImage(
              height, width); //ImageCarousel(model: model,);
        }),
        onTap: (position) {
          _togglebar();
          print('onTap: ${position.global}, ${position.relative}');
        },
        onLongPress: (position) {
          _toggleshadow();
          _onLongPressSelectAya(_selectedAya(
              position.global.dx.ceil(), position.global.dy.ceil()));
        },
      ),
      _showShadow
          ? Container(
              margin: EdgeInsets.only(top: shadowMargin),
              child: ScopedModelDescendant<AyaList>(
                  builder: (context, child, model) {
                return CustomPaint(
                  painter: GreenPaint(
                      Colors.green.withOpacity(0.3888),
                      scaleFactor,
                      height,
                      model.isFirstAyaInPage() ? 0 : model.prevAya().x,
                      model.isFirstAyaInPage() ? 0 : model.prevAya().y,
                      model.aya.x,
                      model.aya.y),
                );
              }),
            )
          : Container(
              width: 0.0,
              height: 0.0,
            ),
      Opacity(
        child: ScopedModelDescendant<AyaList>(
            builder: (context, child, model) {
          return customAppBar1();
        }),
        opacity: _showbar ? 1.0 : 0.0,
        //duration: Duration(milliseconds: 500),
      ),
      _showbar
          ? customButtomBar1()
          : Container(
              width: 0.0,
              height: 0.0,
            ),
      _showbar
          ? copyIcon()
          : Container(
              width: 0.0,
              height: 0.0,
            ),
    ],
  ),
);

}

What is the error ??

I made a dialog with a TextField when i press on it i receive this error
I/flutter (30369): ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
I/flutter (30369): The following assertion was thrown building Builder(dirty):
I/flutter (30369): Looking up a deactivated widget's ancestor is unsafe.
I/flutter (30369): At this point the state of the widget's element tree is no longer stable. To safely refer to a
I/flutter (30369): widget's ancestor in its dispose() method, save a reference to the ancestor by calling
I/flutter (30369): inheritFromWidgetOfExactType() in the widget's didChangeDependencies() method.
I/flutter (30369):

I made a dialog with a TextField when i press on it i receive this error
I/flutter (30369): ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
I/flutter (30369): The following assertion was thrown building Builder(dirty):
I/flutter (30369): Looking up a deactivated widget's ancestor is unsafe.
I/flutter (30369): At this point the state of the widget's element tree is no longer stable. To safely refer to a
I/flutter (30369): widget's ancestor in its dispose() method, save a reference to the ancestor by calling
I/flutter (30369): inheritFromWidgetOfExactType() in the widget's didChangeDependencies() method.
I/flutter (30369):

Can you do like this :-
Widget build(BuildContext mainContext) {
}
and pass mainContext to the dialog.
try and reply if its working or not working..

pass the build functions BuildContext not the ScopedModelDescendant BuildContext both are different.

same Problem here is what is did
@override
Widget build(BuildContext mainContext) {
super.build(mainContext);
//shadow
var imagehight = 917;
var imagewidth = 622;
var scaleFactor = MediaQuery.of(mainContext).size.width / imagewidth;
this.pageHeight = MediaQuery.of(mainContext).size.height;
this.pageWidth = MediaQuery.of(mainContext).size.width;
this.scaleFactor1 = scaleFactor;
print('Screen height : $pageHeight   width:$pageWidth');
print('ScaleFactor:  $scaleFactor  page Height: $pageHeight ');
double shadowMargin = pageHeight * 0.4457 - 269.55;
//print(shadowMargin);
var height = scaleFactor * imagehight;
var width = MediaQuery.of(mainContext).size.width;

return Scaffold(
  //key: _scaffoldKey,
  body: Stack(
    children: <Widget>[
      PositionedTapDetector(
        child: ScopedModelDescendant<AyaList>(
            builder: (context, child, model) {
          this.ayaInPage = model.ayaInPage();
          this.selectModel = model;
          return mushafPageImage(
              height, width,mainContext); //ImageCarousel(model: model,);
        }),
        onTap: (position) {
          _togglebar();
          print('onTap: ${position.global}, ${position.relative}');
        },
        onLongPress: (position) {
          _toggleshadow();
          print('longPress: ${position.global}, ${position.relative}');
          _onLongPressSelectAya(_selectedAya(
              position.global.dx.ceil(), position.global.dy.ceil()));
        },
      ),
      _showShadow
          ? Container(
              margin: EdgeInsets.only(top: shadowMargin),
              child: ScopedModelDescendant<AyaList>(
                  builder: (context, child, model) {
                return CustomPaint(
                  painter: GreenPaint(
                      Colors.green.withOpacity(0.3888),
                      scaleFactor,
                      height,
                      model.isFirstAyaInPage() ? 0 : model.prevAya().x,
                      model.isFirstAyaInPage() ? 0 : model.prevAya().y,
                      model.aya.x,
                      model.aya.y),
                );
              }),
            )
          : Container(
              width: 0.0,
              height: 0.0,
            ),
      Opacity(
        child: ScopedModelDescendant<AyaList>(
            builder: (context, child, model) {
          return customAppBar1(mainContext);
        }),
        opacity: _showbar ? 1.0 : 0.0,
        //duration: Duration(milliseconds: 500),
      ),
      _showbar
          ? customButtomBar1(mainContext)
          : Container(
              width: 0.0,
              height: 0.0,
            ),
      _showbar
          ? copyIcon()
          : Container(
              width: 0.0,
              height: 0.0,
            ),
    ],
  ),
);

}
Widget customAppBar1(mainContext) {
return ScopedModelDescendant(
builder: (context, child, model) {
return Container(
width: MediaQuery.of(mainContext).size.width,
color: Colors.white,
//padding: EdgeInsets.fromLTRB(0.0, 20.0, 0.0, 0.0),
height: 100.0,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
SizedBox(width: 4.0),
GestureDetector(
onTap: () {
showDialog(
context: mainContext,
builder: (BuildContext mainContext) {
return AlertDialog(
content: //dynamicDialog(parent: this),
_AddFasel(),
                    );
                  });

            },
            child: Container(
              margin: EdgeInsets.fromLTRB(0.0, 0.0, 0.0, 10.0),
              child: Column(
                mainAxisAlignment: MainAxisAlignment.end,
                children: <Widget>[
                  Icon(
                    Icons.note_add,
                    color: Colors.teal[600],
                  ),
                  Text("فاصل جديد"),
                  SizedBox(height: 4.0)
                ],
              ),
            ),
          ),
          SizedBox(
            width: 1.0,
          ),
          Container(
              margin: EdgeInsets.only(top: 23.0, right: 8.0),
              height: 80.0,
              width: 0.5,
              color: Colors.black87),
          Container(
            margin: EdgeInsets.fromLTRB(0.0, 0.0, 0.0, 10.0),
            child: Column(
              mainAxisAlignment: MainAxisAlignment.end,
              children: <Widget>[
                GestureDetector(
                  child: Icon(
                    Icons.search,
                    color: Colors.teal[600],
                  ),
                ),
                Text("الفواصل"),
                SizedBox(height: 4.0)
              ],
            ),
          ),
          SizedBox(
            width: 5.0,
          ),
          Container(
              margin: EdgeInsets.only(top: 23.0),
              height: 80.0,
              width: 0.5,
              color: Colors.black87),
          SizedBox(width: 85.0),
          Row(
            children: <Widget>[
              Padding(
                padding: const EdgeInsets.only(
                  top: 20.0,
                ),
                child: GestureDetector(
                  onTap: //_showDialog,
                      () {
                    showDialog(
                        context: mainContext,
                        builder: (BuildContext context) {
                          return AlertDialog(
                            content: //dynamicDialog(parent: this),
                                ScopedModel<AyaList>(
                                    //mushaf()
                                    model: model,
                                    child: model != null
                                        ? dynamicDialog(
                                            parent: this,
                                            suraList1:
                                                this.widget.suratable,
                                          )
                                        : Container(
                                            height: 370.0,
                                            child: Center(
                                              child:
                                                  CircularProgressIndicator(),
                                            ),
                                          )),
                          );
                        });
                  },
                  child: Icon(
                    Icons.keyboard_arrow_down,
                    size: 28.0,
                    color: Colors.teal[600],
                  ),
                ),
              ),
              Column(
                children: <Widget>[
                  Container(
                      margin: EdgeInsets.only(top: 26.0, right: 42.0),
                      child: Text(
                        //"hg",
                        this.widget.suratable[model.aya.sura - 1].name,
                        style: TextStyle(fontSize: 18.0),
                      )),
                  Container(
                      padding: EdgeInsets.only(top: 0.0, right: 42.0),
                      child: Text(
                        //"الاية 1",
                        model.aya.aya.toString(),
                        style: TextStyle(fontSize: 18.0),
                      )),
                ],
              ),
            ],
          ),
        ],
      ),
    );
  },
);

}

its working,the problem is solved... thanks

its working,the problem is solved... thanks

Glad to know !!!!!!!!

I had the same issue with my app. The problem was I was trying to show a dialog using a previously popped context. The way I solved it was creating a global key for the scaffold in the page where I wanted the dialog to be shown, then instead of passing the current context to the showDialog() method, I passed the context from the scaffold.
Here is an incomplete code snippet for reference:
GlobalKey _scaffold = Global Key();
Scaffold(
  key: _scaffold
);
...
showDialog(context: _scaffold.currentContext)

Hope it helps
Genius!!! Great solution, thanks!!!

I made a dialog with a TextField when i press on it i receive this error
I/flutter (30369): ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
I/flutter (30369): The following assertion was thrown building Builder(dirty):
I/flutter (30369): Looking up a deactivated widget's ancestor is unsafe.
I/flutter (30369): At this point the state of the widget's element tree is no longer stable. To safely refer to a
I/flutter (30369): widget's ancestor in its dispose() method, save a reference to the ancestor by calling
I/flutter (30369): inheritFromWidgetOfExactType() in the widget's didChangeDependencies() method.
I/flutter (30369):

Can you do like this :-
Widget build(BuildContext mainContext) {
}
and pass mainContext to the dialog.
try and reply if its working or not working..

Worked!

For anyone experiencing this issue with a PopupMenuButton.
Setting captureInheritedThemes: false fixed it for me 🥳
More detail and source: https://stackoverflow.com/a/59690903


UX: In deployment process, the Deploy button should remain active all the time (clickable), but if you click it and can't continue for some reason, a pop up message should appear telling you the reason

Should be fixed in https://github.com/threefoldtech/www-mastodon/pull/86 , now the button is not disabled but if there is an error the `Tab will activate and then focus on the error field

Verified on https://getmastodon.threefold.io/
The Deploy button is now enabled all the time even when there's a validation issue or something missing with any of the fields. but once the user click on Deploy when there are errors in any of the fields, the mentioned filed will be focused on even if it's in another tab, with a clear error message explaining what is wrong with the field.
here's a simple flow if only a couple of fields are invalid
Get Mastodon (27).webm
and here's a video showing it work with every field
Get Mastodon (28).webm
The only issues i encountered was:

The region field not showing any errors when i selected a region with no node. and it was already reported before in #20
And the Certified option not showing error messages when there are no certified nodes in the selected region https://github.com/threefoldtech/www-mastodon/issues/90


Deserialize the empty map to unit () if requested.

Closes #9
Also contains the patch for #8.

Coverage decreased (-26.8%) to 63.142% when pulling bc44ac87433c4fba8dc41de25adc9e236ef3ec78 on emptymapunit into 3b3bed9e12a69d0d0c33b8936e28354307f82c51 on master.


Revert "Merge webpack-env.* into webpack.*"

This reverts commit b123aa5469db5e5a56f8517eca31c1cdaf569ed4.
As commented here https://github.com/borisyankov/DefinitelyTyped/pull/6243#commitcomment-13792564, I wrongly merged two file, that should be used in different context.
Sorry about this @use-strict

@vvakame , can you merge this? Thanks.

merged!

Variable 'require' must be of type 'RequireFunction'
still a major pain, occurs with node.d.ts, or any module which depends on it, e.g. redis.

Variable 'require' must be of type 'RequireFunction'
+1


Fix minor bug in transformers ext

Description
Remove unnecessary preprocessing_kwargs as kwargs in self.pipeline

Related Issues

Checklist

[ ] Is this code covered by new or existing unit tests or integration tests?
[ ] Did you run make test successfully?
[ ] Do new classes, functions, methods and parameters all have docstrings?
[ ] Were existing docstrings updated, if necessary?
[ ] Was external documentation updated, if necessary?

Additional Notes or Comments

Codecov Report
Attention: 1 lines in your changes are missing coverage. Please review.

Comparison is base (34830a7) 80.33% compared to head (d673f95) 67.06%.
Report is 132 commits behind head on main.

Files
Patch %
Lines

superduperdb/backends/base/artifact.py
66.66%
1 Missing :warning:

Additional details and impacted files
@@             Coverage Diff             @@
##             main    #1417       +/-   ##
===========================================
- Coverage   80.33%   67.06%   -13.27%
===========================================
  Files          95      103        +8
  Lines        6602     7282      +680
===========================================
- Hits         5304     4884      -420
- Misses       1298     2398     +1100

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


macOS MissingPluginException(No implementation found for method isLocationServiceEnabled

🐛 Bug Report

I'm trying to get users location on macOS, fails with the following error. Already tried clearing flutter cache, no effect.
[ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: MissingPluginException(No implementation found for method isLocationServiceEnabled on channel flutter.baseflow.com/geolocator)
#0      MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:165:7)
Expected behavior
Reproduction steps
serviceEnabled = await Geolocator.isLocationServiceEnabled();
Configuration
Version: geolocator: ^8.2.0
Platform:

macOS 12.3.1

user error, fixed by adding
geolocator_apple: ^2.1.2


System.ArgumentException: An item with the same key has already been added. Key: B4D3B69656E14D44865C8D818EAE47C4

Microsoft PowerToys version
<IP_ADDRESS>
Running as admin

[x] Yes

Area(s) with issue?
Installer
Steps to reproduce
When clicking the update notification it said "you need a new app to open this power toys link" leading me to the Store. After opening the store it said no fitting apps (duh).
I then opend the programm to manually update and after it was done it gave me this error and told me to write this Bug Report :)
It is running like normal now with the new version after a manual restart.
Version: <IP_ADDRESS>
OS Version: Microsoft Windows NT 10.0.19043.0
IntPtr Length: 8
x64: True
Date: 30.11.2021 21:54:28
Exception:
System.ArgumentException: An item with the same key has already been added. Key: B4D3B69656E14D44865C8D818EAE47C4
at System.Collections.Generic.Dictionary2.TryInsert(TKey key, TValue value, InsertionBehavior behavior)    at System.Collections.Generic.Dictionary2.Add(TKey key, TValue value)
at System.Linq.Enumerable.ToDictionary[TSource,TKey](IEnumerable1 source, Func2 keySelector, IEqualityComparer`1 comparer)
at PowerLauncher.SettingsReader.UpdateSettings(PowerLauncherSettings settings)
at PowerLauncher.SettingsReader..ctor(PowerToysRunSettings settings, ThemeManager themeManager)
at PowerLauncher.App.<>c__DisplayClass14_0.b__0()
at Wox.Infrastructure.Stopwatch.Normal(String message, Action action)
at PowerLauncher.App.OnStartup(Object sender, StartupEventArgs e)
at System.Windows.Application.OnStartup(StartupEventArgs e)
at System.Windows.Application.<.ctor>b__1_0(Object unused)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
2021-11-30.txt
✔ Expected Behavior
Updating and then Starting the new version.
❌ Actual Behavior
Updating but then crashing when it tries to auto start.
Other Software
No response

It's the folder plugin in the PT run. The tracking issue is #14308.
Thanks for reporting this!

ref: #14308

I just had the exact same issue. Same OS version, same app version, same System.ArgumentException, same apparent trace (I didn't do an exact text compare).

@jaimecbernardo this is a trend we have seen recently.

@crutkas ,
The main root for this is much older. Some PowerToys Run plugins are not being deleted by the uninstall process. Here's an older one which caused the old plugins load to fail, which was fixed by ignoring and logging that sort of fail load. https://github.com/microsoft/PowerToys/issues/11916
Now it's resurfacing due to the duplicated plugins being valid and loading correctly, causing the conflict afterwards.
In this case, it seems to have been caused by the original installation coming through the store? It's possible that the update scenario is not working well when the original installation was from the store.
@yuyoyuppe , Is there a way in which we can force the WiX logic to really delete the install folder contents on an uninstall? That might fix this.

@EstoyMejor , Could you please send a bug report?
@franky920920 , on this kind of errors where the solution is to uninstall and delete, please ask the user for a bug report before. The bug report contains a .txt with the install folder structure and hash for each file, which we can diff against the correct installation.
Thank you.

From the bug file sent, it seems the plugins we renamed recently were not deleted, which causes a fail to load the recent one while the older one being reported below (<IP_ADDRESS>).
Example:
[2021-11-30 21:54:27.8386] [ERROR] [S:\src\modules\launcher\Wox.Plugin\PluginPair.cs::141]
-------------------------- Begin exception --------------------------
Message: Couldn't load assembly for Program in C:\Program Files\PowerToys\modules\launcher\Plugins\Program\Microsoft.Plugin.Program.dll

Exception full name  : System.IO.FileLoadException
Exception message    : Assembly with same name is already loaded
Exception stack trace:
   at System.Runtime.Loader.AssemblyLoadContext.LoadFromPath(IntPtr ptrNativeAssemblyLoadContext, String ilPath, String niPath, ObjectHandleOnStack retAssembly)
   at System.Runtime.Loader.AssemblyLoadContext.LoadFromAssemblyPath(String assemblyPath)
   at Wox.Plugin.PluginPair.CreatePluginInstance()
Exception source     : System.Private.CoreLib
Exception target site: Void LoadFromPath(IntPtr, System.String, System.String, System.Runtime.CompilerServices.ObjectHandleOnStack)
Exception HResult    : -2146232799
-------------------------- End exception --------------------------

* Microsoft.Plugin.Program, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null (C:\Program Files\PowerToys\modules\launcher\Plugins\Microsoft.Plugin.Program\Microsoft.Plugin.Program.dll)

@yuyoyuppe , Is there a way in which we can force the WiX logic to really delete the install folder contents on an uninstall? That might fix this.

I think it could be done as a CA, and it should work unless the file is being used by another process.

@crutkas @jaimecbernardo @yuyoyuppe I'm seeing a very high volume of reports for this issue. Setting this to a p-2 issue, please adjust this if required.

(thinking out loud - might even be a #hotfix?)

we'll clean install directory before installation to mitigate this

This was fixed with our hotfix for 0.51.1

@crutkas Closing this issue?

@crutkas Closing this issue?

@crutkas Closing this issue?

@crutkas Closing this issue?

@crutkas Closing this issue?

@crutkas Closing this issue?


break TWITTER_BEARER_CREDENTIALS into two env variables

right now
TWITTER_BEARER_CREDENTIALS=your_twitter_key:your_twitter_secret
Let's make it so the user doesn't have to put the key and secret together

We will need to update dashtag solo to take the 2 new env variables

I pushed the refactoring change that we were working on. The test are passing. I think we can close this card.

Great! I just updated Dashtag_Solo and tested it. One small thing:
I noticed that twitter is calling the key "Consumer Key" and the secret 'Consumer Secret'; so let's keep our env variable names as close as possible to it. So let's change:
TWITTER_BEARER_KEY to TWITTER_CONSUMER_KEY
and
TWITTER_BEARER_SECRET to TWITTER_CONSUMER_SECRET


haproxy does not validate neutron

In a test environment where a neutron controller was never added, there was not test for haproxy to put it in a failed state. We should add at least one neutron test.

ha! I just ran into this again. This should really be fixed :)

should be fixed by #400


Rearranged and clean-up of "Contribute.md" doc

@zackchase @madjam @nswamy Please take a look.

Yes I'd suggest just removing the tutorials portion for now until the
process is better settled.
On Thu, May 11, 2017 at 9:29 AM, Naveen Swamy<EMAIL_ADDRESS>wrote:

@nswamy commented on this pull request.
In docs/community/contribute.md
https://github.com/dmlc/mxnet/pull/6183#discussion_r116035954:

+* If the API is dynamically generated from the MXNet backend, the documentation is in the C++ code(.cc
+file) where the operator is registered in describe method of the NNVM_REGISTER_OP. The file and line
+number for the function is usually printed with the API documentation on mxnet.io usually with strings
+"Defined in src/".
+* A clear and concise description of the function and its behavior.
+* List and describe each parameter with the valid input values, whether it is required or optional, and default value if the parameter is optional.
+* Add an example to help the user understand the API better. If the example can be language-neutral
+or is conceptual, add it in the C++ documentation. Make sure your example works
+by running a python version of the example.

If a concrete and simple language specific example can further clarify the API and the API arguments, add the
+example in language specific files.
+* Refer to these examples for guidance:- Embedding , ROIPooling , Reshape.

+### Tutorials
+
+Want to contribute an MXNet tutorial? To get started, download the tutorial template.
Isn't this outdated ? now that it require to be in a markdown format.
In docs/community/contribute.md
https://github.com/dmlc/mxnet/pull/6183#discussion_r116037762:

+```
+This prevents radically increasing the size of the repo with generated images sizes.

+### Test Cases
+
+* All of the test cases are in GitHub in tests
+* We use python nose for python test cases, and gtest for c++ unit tests.
+
+### Examples
+
+* Use cases and examples are on GitHub in examples
+* If you have blog posts about MXNet or

tutorials that use MXNet, please tell us and we'll add
a link to them in the examples on GitHub.

+## Documents Contribution
This shouldn't be a section on "Document Contribution."
It should be a standard for contributing APIs ie., every new API should
come with its own documentation.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/dmlc/mxnet/pull/6183#pullrequestreview-37627310, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ACR4ztDuEwcqyMNeibUGTdy2MBLuQ6M0ks5r4zd3gaJpZM4NV_b_
.

Addressed all comments.


fix: add kube-addon-manager v9.1.6 to vhd

Reason for Change:

Previously, for air-gapped clusters on k8s v1.25, kube-addon-manager would be stuck on ImagePullBackOff because it could not download the specified MCR 9.1.6 image. The VHD only contains 9.1.5.
This PR adds 9.1.6 to the VHD. Also, changes the GCR kube-addon-manager image to 9.1.6.
Issue Fixed:

Credit Where Due:
Does this change contain code from or inspired by another project?

[x] No
[ ] Yes

If "Yes," did you notify that project's maintainers and provide attribution?

[ ] No
[ ] Yes

Requirements:

[x] uses conventional commit messages

[ ] includes documentation
[ ] adds unit tests
[ ] tested upgrade from previous version

Notes:

/azp run


Herokuize project

add build step to project
add dev script
instruct to use DATABASE_URL
the flow is inspired by https://stackoverflow.com/a/34484065/630752

fixes #37

I updated this pr to have the server restart via nodemon when the source changes. And the start script builds the server before serving.

@rwieruch @morenoh149  - Love this but should it be a variable (ex: heroku=true) that a user can run at setup?

Why? The changes required to make the api run without issues in heroku do not prevent you from running it locally. These changes are just following best practices imo

Thanks for your changes @morenoh149 I will take this change into account once I rewrite the tutorial for this application. Thanks for your help here 👍

I get the following error for this PR:
2019-07-08T15:57:30.637694+00:00 heroku[web.1]: Starting process with command npm start
2019-07-08T15:57:33.209737+00:00 app[web.1]:
2019-07-08T15:57:33.209759+00:00 app[web.1]: ><EMAIL_ADDRESS>start /app
2019-07-08T15:57:33.209762+00:00 app[web.1]: > npm run build && node src/index.js
2019-07-08T15:57:33.209763+00:00 app[web.1]:
2019-07-08T15:57:33.683559+00:00 app[web.1]:
2019-07-08T15:57:33.683596+00:00 app[web.1]: ><EMAIL_ADDRESS>build /app
2019-07-08T15:57:33.683598+00:00 app[web.1]: > babel src --out-dir dist
2019-07-08T15:57:33.683600+00:00 app[web.1]:
2019-07-08T15:57:36.905982+00:00 app[web.1]: Successfully compiled 24 files with Babel.
2019-07-08T15:57:37.073024+00:00 app[web.1]: /app/src/index.js:3
2019-07-08T15:57:37.073028+00:00 app[web.1]: import 'dotenv/config';
2019-07-08T15:57:37.073030+00:00 app[web.1]: ^^^^^^^^^^^^^^^
2019-07-08T15:57:37.073031+00:00 app[web.1]:
2019-07-08T15:57:37.073037+00:00 app[web.1]: SyntaxError: Unexpected string

that's javascript complaining that import is not valid js. You can fix this by fixing the babel config or writing your code with syntax that is supported by nodejs without transpilation. I can't advise as I'm not working on a node/graphql api atm. Shouldn't be too hard to figure out imo.

@morenoh149 - What would you recommend as I haven't made any code changes. I only did a git clone.

@morenoh149 - I only did git clone and npm install.

@ACPK this repo was not developed to work on heroku, that is why I opened this issue because I thought running on heroku would be useful.


auto-check: compare rooms video input and speakers video output

Rooms video input and speakers video output have beeen removed in v2


pytriton is slower than triton

My model is a bert classification model. Triton inference is 17ms per request. Pytriton is 34ms per request. Could someone can help me?
blow is pytriton server code
import torch
from transformers import BertConfig, BertTokenizer, BertForSequenceClassification
import os
import json
import os
from pytriton.decorators import batch
from pytriton.model_config import ModelConfig, Tensor
from pytriton.triton import Triton
import numpy as np
from transformers import BertTokenizer
import requests

label_list = ["finance", "realty", "stocks", "education", "science", "society", "politics", "sports", "game",
                  "entertainment", ]

pretrained_bert_dir = "/models"
tokenizer = BertTokenizer.from_pretrained(pretrained_bert_dir)
bert_config = BertConfig.from_pretrained(pretrained_bert_dir, num_labels=len(label_list))

model = BertForSequenceClassification(bert_config)
model.load_state_dict(torch.load(os.path.join(pretrained_bert_dir, "bert_model.pth")))
model.to("cuda")
model.eval()

@batch
def _infer_fn(sentence: np.ndarray):
    print(sentence)
    sequences_batch = np.char.decode(sentence.astype("bytes"), "utf-8")
    print(sequences_batch)

    labels = []
    for s in sequences_batch:
        inputs = tokenizer(s[0], max_length=32, truncation="longest_first", return_tensors="pt")
        inputs = inputs.to("cuda")

        outputs = model(**inputs)
        print(outputs)

        logits = outputs[0]
        print(logits)
        label_pro = torch.max(logits.data, 1)[1].tolist()
        print(label_pro)
        label = label_list[label_pro[0]]
        print(label)
        labels.append(label)
    return {"label": np.char.encode(labels, "utf-8")}

with Triton() as triton:
    triton.bind(
        model_name="BERT",
        infer_func=_infer_fn,
        inputs=[
            Tensor(name="sentence", dtype=np.bytes_, shape=(1,)),
        ],
        outputs=[
            Tensor(name="label", dtype=np.bytes_, shape=(1,)),
        ],
        config=ModelConfig(max_batch_size=10)
    )
    triton.serve()

blow is pytriton client code
import requests

sequence = ["明天要考试了"]
d = {
  "id": "0",
  "inputs": [
    {
      "name": "sentence",
      "shape": [1,1],
      "datatype": "BYTES",
      "data": sequence
    }
  ]
}
res = requests.post(url="http://<IP_ADDRESS>:31800/v2/models/BERT/infer",json=d).json()
r = res["outputs"][0]["data"][0]
print(r)

Hi @yan123456jie,
thank you for raising the issue. Could you please share with us your Triton server code that is running the model so that we can try to reproduce this problem?

Hi @yan123456jie,
thank you for raising the issue. Could you please share with us your Triton server code that is running the model so that we can try to reproduce this problem?

Thanks, my model train process is blow:
1、Download base model from https://huggingface.co/bert-base-chinese/tree/main；
2、git clone https://github.com/zejunwang1/bert_text_classification
change train.py "torch.save(model.state_dict(), config.saved_model)" to  "model.save_pretrained(config.saved_model_dir)"
3、train model:
python main.py --mode train --data_dir ./data --pretrained_bert_dir ./pretrained_bert
4、copy vocab.txt、config.json to ./data/model/
5、python -m transformers.onnx --model=./data/model/ --feature=sequence-classification --framework=pt onnx_output/
Then start trion server:
use onnx_output/model.onnx to start triton
/var/log/model_repository/
    bert_classification_v1
        1
            model.onnx
        config.pbtxt

config.pbtx is
platform: "onnxruntime_onnx"
max_batch_size: 1
input [
  {
    name: "token_type_ids"
    data_type: TYPE_INT64
    dims: [ -1 ]
  },
  {
    name: "attention_mask"
    data_type: TYPE_INT64
    dims: [ -1 ]
  },
  {
    name: "input_ids"
    data_type: TYPE_INT64
    dims: [ -1 ]
  }
]
output [
  {
    name: "logits"
    data_type: TYPE_FP32
    dims: [ 10 ]
  }
]

start triton
docker run --rm --gpus 1 \
-p8100:8000 -p8101:8001 -p8102:8002 \
-v /var/log/model_repository:/models \
nvcr.io/nvidia/tritonserver:22.05-py3 \
tritonserver --strict-model-config=true --model-repository=/models

http requst is:
import numpy as np
import tritonclient.http as httpclient
from transformers import BertTokenizer
import requests

tokenizer = BertTokenizer.from_pretrained("/Users/nali/Downloads/onnx_model",do_lower_case= True)
sentence = "明天要考试了"
inputs = tokenizer(sentence, max_length=32, truncation="longest_first", return_tensors="pt")
input_ids = inputs["input_ids"].numpy().tolist()
token_type_ids = inputs["token_type_ids"].numpy().tolist()
attention_mask = inputs["attention_mask"].numpy().tolist()
print(input_ids)
shape_list = list(inputs["input_ids"].shape)
print(shape_list)
# input_dict = {"input_ids":inputs["input_ids"].numpy(), "token_type_ids":inputs["token_type_ids"].numpy(), "attention_mask":inputs["attention_mask"].numpy()}

request_data = {
"inputs": [
    {
        "name": "input_ids",
        "shape": shape_list,
        "datatype": "INT64",
        "data": input_ids
    },
    {
        "name": "token_type_ids",
        "shape": shape_list,
        "datatype": "INT64",
        "data": token_type_ids
    },
    {
        "name": "attention_mask",
        "shape": shape_list,
        "datatype": "INT64",
        "data": attention_mask
    },
],
"outputs": [{"name": "logits"}]
}
label_list = ["finance", "realty", "stocks", "education", "science", "society", "politics", "sports", "game",
                  "entertainment", ]
res = requests.post(url="http://<IP_ADDRESS>:8100/v2/models/bert_classification_v1/versions/1/infer",json=request_data).json()
outs = res["outputs"][0]["data"]

num = np.argmax(outs)
print(num)
print(label_list[num])

@yan123456jie Thank you for this, I was able to reproduce your deployment process and here are my conclusions:

The main difference between your PyTriton and Triton implementations is that on Triton you deploy the ONNX model that is run by onnxruntime library. On PyTriton you deploy vanilla PyTorch model. You can easily deploy the ONNX model in PyTriton as well using another tool we develop called Model Navigator. All you need to add to your script are these few lines under your model definition:

import model_navigator as nav

# set up the optimization config
# we can skip the config and let the navigator choose the best formats
optimize_config = nav.OptimizeConfig(
    target_formats=(nav.Format.ONNX,),
    runners=("OnnxCUDA",)
    # target_formats=(nav.Format.TENSORRT,),
    # runners=("TensorRT",)
)

# wrap model with nav.Module
model = nav.Module(model, optimize_config=optimize_config)

# run inference example
dummy_input = ["明天要考试了"] * batch_size
inputs = tokenizer(dummy_input, max_length=32, truncation="longest_first", return_tensors="pt")
inputs = inputs.to("cuda")
outputs_torch = model(**inputs)

# optimize the model
nav.optimize()

# confirm that the optimized model is working
outputs_optimized = model(**inputs)

Now the model will be run with onnxruntime as well.
You can also used the commented lines to optimize the model to TensorRT engine for even better performance.

Your _infer_fn does not utilize batching and you iterate over each sample in the batch and run multiple inferences when they can be merged into a single model call, I have slightly rewritten your inference function to do that:

@batch
def _infer_fn(sentence: np.ndarray):
    sequences_batch = np.char.decode(sentence.astype("bytes"), "utf-8")
    sequences_batch = [s[0] for s in sequences_batch]
    inputs = tokenizer(sequences_batch, max_length=32, truncation="longest_first", return_tensors="pt")
    inputs = inputs.to("cuda")
    outputs = model(**inputs) # single model call
    logits = outputs["logits"] # changed to use dict interface instead of list so it works with optimized model
    labels_pro = torch.max(logits.data, 1)[1].tolist()
    labels = [label_list[label_pro] for label_pro in labels_pro]
    return {"label": np.char.encode(labels, "utf-8")}

There are two factors that impact the difference between PyTriton and Triton performance.

When using Triton with ONNX backend you have to write your postprocessing code that is exctracting the labels on the client side. The server returns all of the logits from the model, this is quite a large tensor for larger batch sizes. In the PyTriton case everything is done on the server side and i/o is smaller. This means that for larger batch sizes you might get better performance with PyTriton in your case.

PyTriton adds a Python layer to Triton, this introduces a small overhead of a few milliseconds. This might mean that when computations are not heavy (e.g. a small model with a small batch size) you will get a slightly better performance with pure Triton.

When measuring performance remember to run a few "warm up" requests and then measure latency on multiple requests to get a reliable numbers, here is my very simple modification to the code calling PyTriton server:

import time
import requests

batch_size = 1024

sequence = [["明天要考试了"]] * batch_size
d = {
  "id": "0",
  "inputs": [
    {
      "name": "sentence",
      "shape": [batch_size,1],
      "datatype": "BYTES",
      "data": sequence
    }
  ]
}

# warm up
for _ in range(10):
    res = requests.post(url="http://<IP_ADDRESS>:8000/v2/models/BERT/infer",json=d).json()
    r = res["outputs"][0]["data"][0]

start_time = time.monotonic()
num_requests = 100
for _ in range(num_requests):
    res = requests.post(url="http://<IP_ADDRESS>:8000/v2/models/BERT/infer",json=d).json()
end_time = time.monotonic()

print("time: ", (end_time - start_time) / num_requests * 1000, "ms")

I have run your model in all configurations and also get the best performance with Triton for batch size 1, but PyTriton quickly catch up and even gets ahead as batch size gets bigger. Also you get the best performance with TensorRT engine instead of ONNX models. You can run your model with modifications I mentioned for different batch sizes and decide which configuration is optimal for your specific use case. I hope this would be helpful.

@ptarasiewiczNV Thank you very much for reply. You recommend is helpful.  I test your code and get good result by use onnx type. (I not use model_navigator, model_navigator has two error.)
The above time is long, because i send requests from my native computer. I copy my request code to server machine and get time cost result blow:

parallel requests\frame
triton(ms)
pytriton(ms)

1
10
14

2
8
17

3
12
17

5
21
20

10
29
29

20
66
36

Triton is faster when parallel requests is small. I guess may be there python web reason. When i send requests to empyt python fastapi web, also cost 4ms.
model_navigator two error is blow:
1、nav.optimize() error，my triton-model-navigator== 0.7.5 and nvidia-pytriton==0.2.5
    nav.optimize()
  File "/opt/conda/lib/python3.8/site-packages/model_navigator/inplace/__init__.py", line 21, in optimize
    module_registry.optimize()
  File "/opt/conda/lib/python3.8/site-packages/model_navigator/inplace/registry.py", line 57, in optimize
    module.load_optimized()
  File "/opt/conda/lib/python3.8/site-packages/model_navigator/inplace/wrapper.py", line 147, in load_optimized
    self._wrapper = OptimizedModule(
  File "/opt/conda/lib/python3.8/site-packages/model_navigator/inplace/model.py", line 255, in __init__
    runner = package.get_runner(return_type=TensorType.TORCH, strategy=inplace_config.strategy)
  File "/opt/conda/lib/python3.8/site-packages/model_navigator/package/package.py", line 169, in get_runner
    runtime_result = self._get_best_runtime(strategy=strategy, include_source=include_source)
  File "/opt/conda/lib/python3.8/site-packages/model_navigator/package/package.py", line 271, in _get_best_runtime
    runtime_result = RuntimeAnalyzer.get_runtime(self.status.models_status, strategy=strategy, formats=formats)
  File "/opt/conda/lib/python3.8/site-packages/model_navigator/runtime_analyzer/analyzer.py", line 122, in get_runtime
    raise ModelNavigatorRuntimeAnalyzerError("No matching results found.")
model_navigator.exceptions.ModelNavigatorRuntimeAnalyzerError: No matching results found.

2、When i remove nav.optimize(), code could run , but when my requests reached 100, these is blow error:
INFO:pytriton.triton:Infer function available as model: `/v2/models/BERT`
INFO:pytriton.triton:  Status:         `GET  /v2/models/BERT/ready/`
INFO:pytriton.triton:  Model config:   `GET  /v2/models/BERT/config/`
INFO:pytriton.triton:  Inference:      `POST /v2/models/BERT/infer/`
INFO:pytriton.triton:Read more about configuring and serving models in documentation: https://triton-inference-server.github.io/pytriton.
2024-01-12 17:38:11 INFO     Navigator: Removing exiting workspace at /root/.cache/model_navigator/transformers.models.bert.modeling_bert.BertForSequenceClassification/0
2024-01-12 17:38:11 INFO     Navigator: Creating workspace at /root/.cache/model_navigator/transformers.models.bert.modeling_bert.BertForSequenceClassification/0
2024-01-12 17:38:11 INFO     Navigator: Initializing log file.
/opt/conda/lib/python3.8/site-packages/model_navigator/pipelines/validation.py:85: ModelNavigatorConfigurationWarning: Custom configuration for format Format.TENSORRT is provided, but Format.TENSORRT is not in target formats. Custom configuration will be ignored.
  warnings.warn(
/opt/conda/lib/python3.8/site-packages/model_navigator/pipelines/validation.py:85: ModelNavigatorConfigurationWarning: Custom configuration for format Format.TORCH_TRT is provided, but Format.TORCH_TRT is not in target formats. Custom configuration will be ignored.
  warnings.warn(
2024-01-12 17:38:14 INFO     Navigator: ========================================== Pipeline 'Preprocessing' started ==========================================
2024-01-12 17:38:14 INFO     Navigator: ======================================== Command 'InferInputMetadata' started ========================================
2024-01-12 17:38:14 INFO     Navigator: ======================================= Command 'FetchInputModelData' started ========================================
2024-01-12 17:38:14 WARNING  Navigator: Requested sample_count (100) is larger than the number of available samples (1). Using 1 samples.
2024-01-12 17:38:14 INFO     Navigator: Collecting input samples for model.
2024-01-12 17:38:14 INFO     Navigator: Saving samples into the workspace.
2024-01-12 17:38:14 INFO     Navigator: ======================================= Command 'InferOutputMetadata' started ========================================
2024-01-12 17:38:14 INFO     Navigator: ======================================= Command 'FetchOutputModelData' started =======================================
2024-01-12 17:38:15 INFO     Navigator: ========================================= Pipeline 'PyTorch Export' started ==========================================
2024-01-12 17:38:15 INFO     Navigator: ========================================= Command 'ExportTorch2ONNX' started =========================================
2024-01-12 17:38:15 INFO     Navigator: PyTorch to ONNX export started
2024-01-12 17:38:15 INFO     Navigator: Command: /opt/conda/bin/python onnx/reproduce_export.py --exported_model_path 'onnx/model.onnx' --opset '17' --input_metadata '{"metadata": [{"name": "input__1", "shape": (-1, 32), "dtype": "int64"}, {"name": "input__2", "shape": (-1, 32), "dtype": "int64"}, {"name": "input__0", "shape": (-1, 32), "dtype": "int64"}], "pytree_metadata": {"metadata": ({"attention_mask": "input__0", "input_ids": "input__1", "token_type_ids": "input__2"},), "tensor_type": "torch"}, "is_legacy": False}' --input_names '["input__1", "input__2", "input__0"]' --output_names '["output__0"]' --dynamic_axes '{"input__0": [0], "input__1": [0], "input__2": [0]}' --batch_dim '0' --target_device 'cuda' --custom_args '{}'
2024-01-12 17:38:15 WARNING  Navigator: Command finished with ModelNavigatorUserInputError. The error is considered as external error. Usually caused by incompatibilities between the model and the target formats and/or runtimes. Please review the command output.
Traceback (most recent call last):
  File "/opt/conda/lib/python3.8/site-packages/model_navigator/commands/execution_context.py", line 169, in execute_local_runtime_script
    fire.Fire(func, unwrapped_args)
  File "/opt/conda/lib/python3.8/site-packages/fire/core.py", line 141, in Fire
    component_trace = _Fire(component, args, parsed_flag_args, context, name)
  File "/opt/conda/lib/python3.8/site-packages/fire/core.py", line 475, in _Fire
    component, remaining_args = _CallAndUpdateTrace(
  File "/opt/conda/lib/python3.8/site-packages/fire/core.py", line 691, in _CallAndUpdateTrace
    component = fn(*varargs, **kwargs)
  File "/opt/conda/lib/python3.8/site-packages/model_navigator/commands/export/exporters/torch2onnx.py", line 96, in export
    torch.onnx.export(
  File "/opt/conda/lib/python3.8/site-packages/torch/onnx/__init__.py", line 350, in export
    return utils.export(
  File "/opt/conda/lib/python3.8/site-packages/torch/onnx/utils.py", line 163, in export
    _export(
  File "/opt/conda/lib/python3.8/site-packages/torch/onnx/utils.py", line 1051, in _export
    symbolic_helper._set_opset_version(opset_version)
  File "/opt/conda/lib/python3.8/site-packages/torch/onnx/symbolic_helper.py", line 1309, in _set_opset_version
    GLOBALS.export_onnx_opset_version = opset_version
  File "/opt/conda/lib/python3.8/site-packages/torch/onnx/_globals.py", line 40, in export_onnx_opset_version
    raise ValueError(f"Unsupported ONNX opset version: {value}")
ValueError: Unsupported ONNX opset version: 17

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/opt/conda/lib/python3.8/site-packages/model_navigator/pipelines/pipeline.py", line 108, in _execute_unit
    command_output = execution_unit.command().run(**input_parameters)  # pytype: disable=not-instantiable
  File "/opt/conda/lib/python3.8/site-packages/model_navigator/commands/base.py", line 116, in run
    output = self._run(*args, **_filter_dict_for_func(kwargs, self._run))
  File "/opt/conda/lib/python3.8/site-packages/model_navigator/commands/export/torch.py", line 226, in _run
    context.execute_local_runtime_script(exporters.torch2onnx.__file__, exporters.torch2onnx.export, args)
  File "/opt/conda/lib/python3.8/site-packages/model_navigator/commands/execution_context.py", line 172, in execute_local_runtime_script
    raise ModelNavigatorUserInputError(f"Command to reproduce error: {' '.join(cmd)}") from e
model_navigator.exceptions.ModelNavigatorUserInputError: Command to reproduce error: /bin/bash onnx/reproduce_export.sh

my server code is blow:
# -*- coding: UTF-8 -*-
import torch
from transformers import BertConfig, BertTokenizer, BertForSequenceClassification
import os
import json
import os
from pytriton.decorators import batch
from pytriton.model_config import ModelConfig, Tensor
from pytriton.triton import Triton
import numpy as np
from transformers import BertTokenizer
import requests
import model_navigator as nav

label_list = ["finance", "realty", "stocks", "education", "science", "society", "politics", "sports", "game",
                  "entertainment", ]

pretrained_bert_dir = "/models"
tokenizer = BertTokenizer.from_pretrained(pretrained_bert_dir)
bert_config = BertConfig.from_pretrained(pretrained_bert_dir, num_labels=len(label_list))

# set up the optimization config
# we can skip the config and let the navigator choose the best formats
optimize_config = nav.OptimizeConfig(
    target_formats=(nav.Format.ONNX,),
    runners=("OnnxCUDA",)
    # target_formats=(nav.Format.TENSORRT,),
    # runners=("TensorRT",)
)
model = BertForSequenceClassification(bert_config)
model.load_state_dict(torch.load(os.path.join(pretrained_bert_dir, "bert_model.pth")))
model.to("cuda")
model.eval()
# wrap model with nav.Module
model = nav.Module(model, optimize_config=optimize_config)
# optimize the model
# nav.optimize()

@batch
def _infer_fn(sentence: np.ndarray):
    sequences_batch = np.char.decode(sentence.astype("bytes"), "utf-8")
    sequences_batch = [s[0] for s in sequences_batch]
    inputs = tokenizer(sequences_batch, max_length=32, padding="max_length", truncation=True, return_tensors="pt")
    inputs = inputs.to("cuda")
    outputs = model(**inputs) # single model call
    logits = outputs["logits"] # changed to use dict interface instead of list so it works with optimized model
    labels_pro = torch.max(logits.data, 1)[1].tolist()
    labels = [label_list[label_pro] for label_pro in labels_pro]
    return {"label": np.char.encode(labels, "utf-8")}

with Triton() as triton:
    triton.bind(
        model_name="BERT",
        infer_func=_infer_fn,
        inputs=[
            Tensor(name="sentence", dtype=np.bytes_, shape=(1,)),
        ],
        outputs=[
            Tensor(name="label", dtype=np.bytes_, shape=(1,)),
        ],
        config=ModelConfig(max_batch_size=1024)
    )
    triton.serve()

Hi,
it looks like a problem with the environment and old onnx version.
I would recommend using the latest NGC container.
You could also downgrade the opset version manually with this modification:
optimize_config = nav.OptimizeConfig(
    target_formats=(nav.Format.ONNX,),
    runners=("OnnxCUDA",),
    custom_configs=nav.OnnxConfig(opset=15) # you would have to try which one works
)

I would also recommend running Model Navigator without a specified target format so that it can choose the best one:
optimize_config = nav.OptimizeConfig(
    custom_configs=nav.OnnxConfig(opset=15) # you would have to try which one works
)

As the PyTriton issue seems to be resolved I would like to close this issue and if you have any more problem with Model Navigator please open an issue in it's repository.

Thanks, issue has bean resolved.


🐞 database error when reading replies?

bug found in master at 3a03fd1f4ce9c898bf8c4f24e4bfd1ba9fba64d6
bug is probably related to null/undefined handling, recent dbmage change allowing null probably related https://github.com/chase-moskal/dbmage/commit/d675ddb24b03a41b81bb5ba0538c8c13ee7b132a

steps to reproduce:

add a comment
add a reply to that comment
refresh page

looking into this...


fix: allow react 18 for peerdependencies

Added peerdependecies fix for react 18 support
Changed types to allow for react 18 support
Made parcel a devdependency because users dont need this builder when installing the package
Updated parcel to latest v2 stable

@juliankrispel

Looks nice!
@juliankrispel Can you consider merging this?


Live data

This is a great tool and I could see it replace our physical board and be used by remote people. However, in order to prevent chaos, we would need to have a live data flow.
I'd suggest adding a socket.io to the application and have a separate route, generating little json response in real time.
I shall take care of it, once I have some spare time.
Happy to discuss.

Might be easier ways to do this as a dashboard using iFrame....

Easier, maybe. But would it work in a long term, when there would be changes such as updating the stories or user authentication?


Proposed changes to Home.md

@kcranston and I would like to propose some changes to the documentation wiki.
The main idea is to bring the different modules in the index to facilitate the finding of specific pieces.
Please see the proposed changes below regarding the Home.md file of the wiki. If we agree, I will change it directly in the wiki (and the links to other wiki pages will work).

Index of DINA-Web system documentation:
Overview

[[Overview]] of the goals, guidelines, principles and decisions.

User manual

[[User manual]] for collection managers.

Modules
Accounts management

[[ Account Management ]] documentation
GitHub Account-Management project

Collection management

[[ Collection Management ]] documentation
Use Cases
GitHub Collection-Management project
GitHub DINA-collections-data-model project

Taxonomy management

[[ Taxonomy Management ]] documentation

Developers documentation

Guidelines
[[ Development manual ]] for developers
[[ Technology-overview ]]
[[ Docker Practices ]]

Private Space
Login required
Tasks

Current tasks are tracked on Redmine
(requires login)

Services
This contains all services related to DINA. Please see the [[User Manual]] for links only to regular user interface  (requires login).

Collections manager: https://alpha-cm.dina-web.net/login

Mockup data version: https://alpha-cm-mock.dina-web.net/login

Style guide: https://alpha-style.dina-web.net/
API schema and documentation: https://alpha-api-docs.dina-web.net/
Keycloak account management console: https://alpha-keycloak.dina-web.net
Slim-Taxonomy mockup API: https://alpha-slim-taxonomy.dina-web.net

Parts of the manual are work-in-progress or still awaiting final decisions (TBD).
Manual will be written in English. (Possible translations of stabilized documentation will be discussed later.)

Thanks for the suggestions! I'd like to keep the front page quite short and simple, so that it's not overwhelming for non-technical end users. See latest changes - do you feel this is good for finding the pieces?

Thanks, @mikkohei13 ! Looks better. @cgendreau and I just started at AAFC and are trying to get up to speed on DINA. You may see minor changes to the wiki from us in the future (assuming that is ok).

Ok. Note that many things have been changing here at NRM lately (project plan & some tools, people and technologies), and the wiki doesn't yet reflect all the changes. I'll be doing some more changes soon. Ask me or Stefan if you want to know something specific.


Unable to resolve service for type 'Passwordless.PasswordlessOptions' while attempting to activate 'Passwordless.PasswordlessClient'.' after upgrading to beta2

After upgrading to beta2 I get this error when trying to log in with passkey.
Exception thrown: 'System.InvalidOperationException' in System.Private.CoreLib.dll: 'Unable to resolve service for type 'Passwordless.PasswordlessOptions' while attempting to activate 'Passwordless.PasswordlessClient'.'
   at Microsoft.Extensions.DependencyInjection.ActivatorUtilities.ThrowHelperUnableToResolveService(Type type, Type requiredBy)
   at Microsoft.Extensions.Http.DefaultTypedHttpClientFactory`1.CreateClient(HttpClient httpClient)
   at Microsoft.Extensions.DependencyInjection.HttpClientBuilderExtensions.AddTransientHelper[TClient,TImplementation](IServiceProvider s, IHttpClientBuilder builder)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite, RuntimeResolverContext context, ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.DynamicServiceProviderEngine.<>c__DisplayClass2_0.<RealizeService>b__0(ServiceProviderEngineScope scope)
   at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType)
   at Microsoft.AspNetCore.Http.RequestDelegateFactory.<>c__DisplayClass102_2.<<HandleRequestBodyAndCompileRequestDelegateForJson>b__2>d.MoveNext()
   at Microsoft.AspNetCore.Routing.EndpointMiddleware.<<Invoke>g__AwaitRequestTask|7_0>d.MoveNext()
   at Microsoft.AspNetCore.Session.SessionMiddleware.<Invoke>d__8.MoveNext()
   at Microsoft.AspNetCore.Session.SessionMiddleware.<Invoke>d__8.MoveNext()
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.<Invoke>d__11.MoveNext()
   at robRezCore.LogPostDataMiddleware.<InvokeAsync>d__3.MoveNext() in /Users/robertivanc/src/robrezervacije/robRezCore/Startup.cs:line

My registration is as follows:
services.AddDefaultIdentity<User>(options =>
      {
        options.SignIn.RequireConfirmedAccount = true;
        options.User.RequireUniqueEmail = true;
        options.Password.RequireDigit = false;
        options.Password.RequireUppercase = false;
        options.Password.RequireNonAlphanumeric = false;
        options.Password.RequiredLength = 6;

      }).AddDefaultUI()
      .AddDefaultTokenProviders()
      .AddPasswordless(Configuration.GetSection("Passwordless"));

downgrading to beta1 makes it work again.

v2.0.0-beta3 should have this fixed. Please try it and let me know.

That error is fixed, however now I get:
System.InvalidOperationException: The request message was already sent. Cannot send the same request message multiple times.
at System.Net.Http.HttpClient.CheckRequestMessage(HttpRequestMessage request)
at System.Net.Http.HttpClient.CheckRequestBeforeSend(HttpRequestMessage request)
at System.Net.Http.HttpClient.SendAsync(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationToken cancellationToken)
at Passwordless.PasswordlessHttpHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) in //src/Passwordless/PasswordlessHttpHandler.cs:line 22
at System.Net.Http.HttpClient.g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
at Passwordless.PasswordlessClient.VerifyTokenAsync(String verifyToken, CancellationToken cancellationToken) in //src/Passwordless/PasswordlessClient.cs:line 83
at Passwordless.AspNetCore.Services.Implementations.PasswordlessService2.LoginUserAsync(PasswordlessLoginRequest loginRequest, CancellationToken cancellationToken) in /_/src/Passwordless.AspNetCore/Services/Implementations/PasswordlessService.cs:line 200    at Passwordless.AspNetCore.PasswordlessApiEndpointRouteBuilderExtensions.<MapPasswordless>g__PasswordlessLogin|3_1[TRegisterBody](PasswordlessLoginRequest loginRequest, IPasswordlessService1 passwordlessService, CancellationToken cancellationToken) in /_/src/Passwordless.AspNetCore/PasswordlessApiEndpointRouteBuilderExtensions.cs:line 69
at Microsoft.AspNetCore.Http.RequestDelegateFactory.ExecuteTaskResult[T](Task`1 task, HttpContext httpContext)
at Microsoft.AspNetCore.Http.RequestDelegateFactory.<>c__DisplayClass102_2.<b__2>d.MoveNext()

Interesting @clarity99, I will take a look tomorrow. Would you please create a new issue with this and repro code snippet?


Set named content labels

Allows easier filtering for clients using label filters to do reverse lookups for base layers or configs. Retains existing labeling scheme objects which are not layers or configs.

Going to close this for now, created a tracking issue to get back to it


split the properties class with any runtime class like SourceOrSink,

Source or Sink, the properties object will only return the
runtime setting object, only which is used in runtime

Pull request test result: success :star:

Pull request test result: success :star:

I did not see that you have introduced yet another Json Library, please remove it and use one of the 2 that already exists json-io or jackson. Both of them are already available in the maven dependencies since they are both used by daikon.

Pull request test result: success :star:

Pull request test result: success :star:

Pull request test result: success :star:

LGTM, please merge.


Dependency on dev version of TypeScript

Currently the plugin depends on the nightly build of TypeScript. How do you see this evolve?
When 1.9 releases, depending on this version? Isn't it better to lock the dev version till the 1.9 release to prevent bugs in the nightly build causing the plugin to break?

I am planning to pin to 1.8.2 when it is released (hopefully next week).

I've updated to use<EMAIL_ADDRESS>


Key pressed event missed due to multiple keycodes for one keysym

I had trouble making the deamon react to a key press from XF86AudioPlay coming from a bluetooth headset, due to this keysym have multiple codes associated (had 172 by default and the headset sent a 208).
It seems the reason is the same as described here : https://github.com/electron/electron/issues/2210 , in short XKeyGrab is only used with code 172 thus code 208 aren't registered.
I manually added a XKeyGrab for the code 208 and it worked, but I haven't found a more elegant solution (not really familiar with Xlib). I have seen people use xbindkeys to detect key pressed event with this code and map it to send a XF86AudioPlay key pressed event with xdotool, maybe lefthk could also have some way to configure keys by code?

@Lieunoir I'd like to replicate your setup (both failing and working) because I want to support multiple combos -> one action on my system. Could you share any files you changed with before/after states?


Changing hostname (for flakes)

Currently when running hostname we see the result localhost which is also used to locate the system target for nix-on-droid switch when using flakes.
It would be helpful to change this to allow several nix-on-droid devices to be included in the same flake. Of course there could be other workarounds such as aliasing the command, if not possible, but it would be nice if this were possible.

Oops, missed that in search because of the space. The actual hostname of the device isn't 'localhost' though, so this has something to do with the chroot?

Consider closing this as a duplicate 🙏


Soft upgrades and version numbers [Tracking Issue]

We should increase range of upgrades that can be conducted as a "soft" upgrade rather than a "hard" upgrade (requiring a blockchain restart). The related RFC, which is now open at https://github.com/tendermint/spec/pull/222, has more detail on the proposed solution.
Combined with upgrade tooling (https://github.com/tendermint/tendermint/issues/5595), it will be much easier for users to upgrade Tendermint Core.
Version numbers will play a key role in this. Here are a few outstanding issues that deal with versioning across Tendermint Core:

Add version to KMS handshake: https://github.com/tendermint/tendermint/issues/2665
Converge on AppVersion: https://github.com/tendermint/tendermint/issues/2448
Version WAL: https://github.com/tendermint/tendermint/issues/785

Originally: https://github.com/tendermint/tendermint/issues/5680

This document is very valuable contextual knowledge relevant to this issue:
https://docs.google.com/document/d/1z8zDNRyeGPsG2aqq5a-rwv2YhVKbOpQ1BfGpjQD934I/edit
(Note the above doc is a copy of this original, which might disappear since the original owner seems gone.)


Allow user to select the SDK version from a drop-down box in the generate SDK step for data plane

Scenario:  The release planner app always selects the most recent version for the SDK release.  However, services can have multiple releases in progress.  In this scenario, Ronnie was experimenting with using the release plan for the "SDK team releases the SDK on behalf of the service partner" use cases.  There were already other releases in progress, so he needs to choose the version that relates to the SDKs that he is releasing not the "next" version.
Requirement:  Show all versions and allow user to select the version.
Link to Event Grid Namespace release plan - https://aka.ms/sdk-release-planner?release-plan-id=16511fa0-f719-ef11-9f8a-0022480bd0ae

Closing as a dup of #8514

I had a discussion with Ronnie and he provided more information about this scenario.  I will update the GitHub issues description and schedule time for us to discuss with engineering before mid-September 2024 (so we can include in roadmap).


Dialog refresh issue

Video:
https://drive.google.com/file/d/0BwjvL6x2McNZSmhoTjBNaFBVTUk/view?usp=sharing
A 3D point picking tool is activated by the toolbox component.
I give to the tool (it's an independent class) the reference to a callback function to call when the user clicks on the 3D model.
When the dialog shows it doesn't show button icons and input text until i resize the window (!!!) and the same happens then i try to close the dialog window as you can see in the video.
Trying to call directly the openDialog function without using a callback it works perfectly, so I think the problem is the use of services in callback functions. Is it possible?
To reproduce the issue i think it's sufficient to open a dialog from a callback function.
Angular versions: 4.00 -> 4.4.3
Typescript version: 2.3.6
Material versions: 2.0.0 beta-8 -> beta 11
Browser: Chrome/Firefox
There is no message in F12 developer tools neither in Chrome nor in Firefox

Just solved!!!
To make the dialog working correctly I used a promise instead of the callback I used previously.
Anyway I think it should be possible to open dialogs from callback functions too.

Can you share a little code?

There is not any preventing a dialog from opening from within a callback.  Likely the callback is occurring outside of the angular zone, requiring something else to trigger a change detection cycle.


Docs - Page Not Found

Looks like this has great potential, but I'm getting a 404 on the docs links. :(
https://reactql.org/docs

weird. Fixed.


how can i change the schedule color?

Hi, thank you for this useful service.
can i get how to change the each schdule bar color?
if possible, could you give me an example?
app:sticker_colors="@array/~" <- is this attribute of chainging color?

I ran into same issue. I looked into code, and it seems stickers are colored based on arrayList pushed in to timetable.
For example, if you pushed arraylist that contains monday and wednesday course at 8:00 to 9:00 am, it will be pushed into first index of timeTable, timeTable[0], which will then be colored with color at first index of array, color[0].
So to achieve your goal, you might want to push arrayList that each arrayList contains only one course. Then, Timetable that contains each arrayList will assign course in each arrayList, which will only have one course, resulting in all different color for all sticker.
Btw, you are right for attribute.  app:sticker_colors="@array/~", sets color for each sticker.


Updated podspec to include VideoToolbox due to most recent update

Got a long linker error relating to H624 something or other. Most likely relating to some update in webrtc.  Adding VideoToolbox to the required frameworks fixed it.

wonderful. thanks!

i just started another jenkins job just now so after about 2 hours there should be a new cocoapod posted


Use config manager in Importers

In this change, I'm using Vuex (the official state manage for Vue) to hold and represent the config object from configManager.
Then, I'm using vuex-persist. This is a little library to create a Vuex Plugin- a function that called every time the state is changed. With vuex-persist I can define a handler for a specific module, so I created a handler for the config Vuex module, to load this state from configManager and save it with configManager every time it changes.
This leads us to the fact that the state will always be the same as the config. We have to remember this in both directions.

The consistent naming convetion in the repo is camelCase for dirs and files so I would name the dir configManager


Multi-root: Compound debug configurations across workspaces?

With multi-root its quite common to have back-end and front-end projects as separate folders loaded in the same workspace. Today a compound defined in one workspace folder doesn't seem to be able to reference another workspace debug config
We should enable compound debug configurations to work across workspaces, to enable a full-stack debug experience.  We already provide a aggregated debug config list in the Debug UI.

I think this feature request makes perfect sense. But I would wait a bit for users to pick up multi root workspaces and see if users jump on this feature before doing anything here.

@auchenberg in your initial comment you said "Today a compound defined in one workspace folder doesn't seem to be able to reference another workspace debug config".
I assume that you've meant:  "Today a compound defined in one workspace folder doesn't seem to be able to reference another debug config in a different folder of the same workspace."
I've changed the title of this issue to reflect this.

We have to decide whether a compound launch config spanning different folders is only allowed in a workspace launch config or in individual folder launch configs. The former case is covered by feature request: #36967

You could make the argument that a workspace compound should be within <workspace>/.vscode/launch.json in order to be able to reference a specific launch config within a workspace folder.

Is there an estimated release date for this?

One part of this feature is a new syntax for root-folder based variables.
See this related feature request: #38977

This work is planned for January.


invalid signature when using maxpurge

Since around a week ago, I started seeing this on my CD deploys, I thought perhaps there was just an issue that would correct itself in a day or so, but it's still happening.
[madcdn] >>> purging /builds/edge/<some asset>.js
: Invalid signature

Purge failed after 98.198724ms.

./scripts/deploy edge returned exit code 2

Action failed: ./scripts/deploy edge

Just to see if I could reproduce it locally, I ran maxpurge on my localhost and it has the same : Invalid signature error output.
I rotated my credentials just in case there was some reason they were expired/revoked, but even with the new credentials it's the same story.
Did something change internally that wasn't accounted for here? For now I just am logging into the admin panel to purge the files.

We are getting the same issue. Did you manage to fix this?

I have not managed to fix it, nor have I heard a response about it.
On Monday, November 21, 2016, Roger Lightfoot<EMAIL_ADDRESS>wrote:

We are getting the same issue. Did you manage to fix this?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/MaxCDN/maxcli/issues/15#issuecomment-261973294, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ABCjgjnOcgG1Vp0zMZqKzfVmzcaZ6SQNks5rAbuegaJpZM4K0CC2
.

We are in contact with MaxCDN support. I'll let you know if and when I have a resolution. This is potentially a deal-breaker for us.

@ondreian @rogerlightfoot I'll take a look and see if I can find a quick fix. Otherwise, please post here what you hear from Max's support.
Cheers!

@ondreian @rogerlightfoot Please confirm that you're still seeing these issues...
Purge successful after: 3.969191319s.

Cheers!

Also, please verify your version...
maxpurge version 1.0.4

Appreciate you taking a look.
still seems to be happening for me:
maxpurge -v
maxpurge version 1.0.4

example:
maxpurge -z <zone> --file <file> -a $MAXCDN_ALIAS -t $MAXCDN_CONSUMER_KEY -s $MAXCDN_CONSUMER_SECRET
: Invalid signature

Purge failed after 264.804229ms.

Okay, I seem to be getting the same error with a single file purge. Let me continue to dig in and see what I can find.

In the mean time, as a workaround, you should be able curl an individual file like so do purge it...
curl  -sI https://<cdn domain>/purge/<file path>

Not sure if that helps?

The issue appears to be here. The API is now expecting files and not file. While not a complicated fix, it's going to take a bit for me test and update.

I've updated the core lib to fix this error. You'll need to run go get -u github.com/maxcdn/maxcli/maxpurge to rebuild with the update. As the code for maxpurge itself didn't change, there's no version bump and I have yet to rebuild the binaries. I'm going to leave this open until that's done.

much appreciated on getting this resolved @jmervine

For sure, mind confirming if all is working correctly for you.

@jmervine Thank you very much for looking into this. Your tools have been so helpful for us. I'm in the UK and unable to test this from home at the moment. Also, I will need the Windows executables but have no idea how to create these. Are you planning on rebuilding these please?

@rogerlightfoot Glad to hear the tools are helpful. I was not planning on cross compiling at this time. The process has changed quite a bit since I last looked at this and I'm going to need to spend some time getting the process updated.
In the mean time, you should be able to get the golang windows install here -- https://golang.org/dl/. I haven't worked on Windows in quite some time, but on a quick search, this link -- http://www.wadewegner.com/2014/12/easy-go-programming-setup-for-windows/ -- looks like it'll run you through getting setup real quick.
I'll post here again any updates to build versions for Windows, Mac and the other OSs.
Cheers!

@jmervine Thanks very much for that. I'll give it a try.

@rogerlightfoot To cross compile for windows on either mac or linux you should be able to do the following (on go 1.5 and up)...
env GOOS=windows GOARCH=amd64 go build -o maxpurge.exe github.com/MaxCDN/maxcli/maxpurge

That said, I'm hoping to have binaries for windows, mac and linux available some time tomorrow.

@jmervine That would be fantastic - thanks!

@rogerlightfoot et al --
Updated binaries are now linked to from the README. maxpurge should now be version 1.0.5. I'm going to close this issue. Please let me know if you have any additional issues.
Cheers!

@jmervine the new binaries are working. You are a top man -- thank you so much.

same, works for me. thanks again.


iavl: use build tag gcc to run CLevelDB benchmarks appropriately

Use build tag
+build gcc
to isolate and guard and only run benchmarks
such as:

BenchmarkImmutableAvlTreeCLevelDB
in a separate file on systems that use gcc as the compiler,
otherwise benchmarks will just crash and noisly mud the test output,
say for example on my Mac and others' when running benchmarks.

Also refactored and moved the common benchmark code into
a helper benchmarkImmutableAvlTreeWithDB that the various
benchmarks can invoke with the desired DB i.e

db := db.NewDB("test", db.MemDBBackendStr, "")
benchmarkImmutableAvlTreeWithDB(b, db)

Fixes https://github.com/tendermint/merkleeyes/issues/39

/cc @ebuchman