Flutter tools support for packaging/linking to native libraries

We want to enable Flutter apps and plugins to bind to native (C/C++) libraries directly via the Dart FFI. This requires support from Flutter tools. There are four categories of use cases we'd like to enable:

A Flutter plugin wants to interact with a native library which should be available on the target device (e.g. Android Audio).

A Flutter app wants to ship business logic written in C/C++ (e.g. some add-to-app scenarios).

A Flutter plugin wants to ship a prebuilt native library (.so on Android or .framework on iOS) within its package (e.g. closed-source or vendored plugins like Realm).

A Flutter plugin wants to ship source code within its package which should be compiled by the client developer.

We should also keep in mind support for desktop, server and non-Flutter use cases (which also broadly fall into the above categories).

I've identified how all four use cases can be solved within the existing Gradle/Cocoa Pods systems for Flutter on Android, iOS and MacOS.
Both systems have first-class support for "native" (C/C++) dependencies, both in source and binary forms. There is nothing special which needs to be done to make these usable from the FFI, but I've written an overview of the solutions as a Wiki page
We don't have a story for packaging native code inside Dart packages independently of Flutter yet.

/cc @jonahwilliams

@sjindel-google Thanks for the wiki, I'm able to invoke native libraries via dart:ffi on both android and IOS. In IOS case, I was using a statically linked library built from rust-lang, and on dart side, I was able to get the handle with DynamicLibrary.process(), the only problem I have is, DynamicLibrary.process is on flutter dev channel only which I'm not fully confident to take as a hard dependency,  is there roadmap on when DynamicLibrary.process will be shipped to stable / beta channel? Thanks in advance!

@hanabi1224 DynamicLibrary.process is here to stay and will be included whenever Flutter ships their next release.
I believe it's already available on their dev channel.

@hanabi1224 Do you mind share the detail of your configuration? I have similar case, I have library built from rust, and I'm successfully test it on dart VM. But still have no clue how to integrate it with flutter on Android and iOS as there no much detailed documentation available at the moment. If you write you step on your blog or anywhere, or if you follow someone's step, please share it. Thanks

@zean00 Basically, you just build .so and .a libs for android and ios respectively following https://github.com/kennytm/rust-ios-android . Note that you don't really need to write JNI wrappers for android when you only load it from dart, and on IOS, write .h and .m files invoke any dummy FFI functions otherwise xcode will be smart enough to drop the .a file.
On dart side, use ffi.open('libxxx.so') for android and use ffi.process() to get the handle

Thanks @hanabi1224 . It is working now :)

I've added a walkthrough to the wiki page: https://github.com/flutter/flutter/wiki/Binding-to-native-code-via-FFI
This illustrates how to add the C/C++ sources directly so they will be compiled for the correct architecture for the end application.
Please don't upload .so or .a files directly to Flutter plugins on Pub: it's a security hazard and it can cause compatibility issues.

Could you elaborate on what you mean when you say "plugin"? Currently 'Flutter plugin' tends to refer to the thing created by flutter create --template=plugin, which uses method channels to communicate using APIs that differ by platform. I wouldn't expect any of that plumbing/boilerplate to be relevant to the FFI use case. (I.e., step 1 of what's currently on the wiki doesn't seem like what we would want the solution to be.)
It might be helpful to come up with a different term for an FFI-based package, or at least distinguish clearly (e.g., a method-channel plugin vs. an FFI plugin)

I would also like to have a different template for an FFI-based package, but the plugin system actually provides a lot of useful plumbing besides method channels.

Including "native" code: the FFI can also bind to Swift, Objective-C and Java (via JNI).

Compilation & linking: the plugin system ensures that C/C++ is compiled with the correct compiler (NDK on Android and Xcode on iOS) and ABI for the target system and that the result of compilation (static or dynamic library) is in the system linker's path at runtime.

Code signing: on iOS and MacOS, the plugin system (via Xcode) ensures that the results of compilation are signed appropriately.

Architecture selection: the plugin system generates fat files on Darwin and the JNI-libs directory structure on Android so the correct version of the native library is loaded at runtime and others can be stripped by the App or Play store.

So we have already a way to include native libraries into a plugin/package to be deployed in pub ?
Something like:
native_libraries:
 platform:
    android:
        assets/binary/android.so
    ios:
        assets/binary/ios.so
    macos:
        assets/binary/macos.so

And they flutter is configuring native projects to include them automatically.
That would be super useful instead of asking packages user to deal with native binaries. Because most of the time they don't know how/what to do with them.

What about a Dart library wrapping a C library using FFI. The C library is pre-compiled and available for "all" platforms, desktop as well as Android/iOS.
How can this be distributed to be consumable for both flutter & dart "other/server" apps?
I've been able to manually create a flutter app example that depends on the dart-library but I had to add an implementation dependency on the aar package directly to the example/app/build.gradle. Is there a way this dependency could be specified within the dart-library/flutter-plugin so that its users wouldn't need to take do it manually (especially, because the version of the aar dependency is different than the dart-lib/flutter-plugin).
I've tried to do it here by "converting" the dart-library to a flutter-package (running flutter create --template=plugin on the existing folder) but the original example doesn't work, after I've moved the dependency into dart-library/flutter-plugin android/build.gradle

Hello @hanabi1224 I'm trying to use my Go library in Flutter. I'm exporting framework thanks to gomobile. And after that i'm including .framework file in xcode project. When I try to call lookup function after DynamicLibrary.process() it gives the error [VERBOSE-2:ui_dart_state.cc(148)] Unhandled Exception: Invalid argument(s): Failed to lookup symbol (dlsym(RTLD_DEFAULT, increment): symbol not found)
Do you have an idea how I can solve it? There is no problem in lookup when i try ffi with native C code.

@baldemir Sorry, not very familiar with golang :(

@sjindel-google Due to https://github.com/flutter/flutter/issues/39916 , do you think it's good idea to put up a WARNING if ppl use ffi features to build IOS apps? Or can you please suggest some workaround?

cc @dcharkes

I've been able to manually create a flutter app example that depends on the dart-library but I had to add an implementation dependency on the aar package directly to the example/app/build.gradle. Is there a way this dependency could be specified within the dart-library/flutter-plugin so that its users wouldn't need to take do it manually (especially, because the version of the aar dependency is different than the dart-lib/flutter-plugin).
I've tried to do it here by "converting" the dart-library to a flutter-package (running flutter create --template=plugin on the existing folder) but the original example doesn't work, after I've moved the dependency into dart-library/flutter-plugin android/build.gradle

I was able to get this working, see https://github.com/objectbox/objectbox-dart/pull/79 if you're interested. In short, I was missing the following declaration in the library's pubspec.yaml:
flutter:
  plugin:
    android:

The document does not seems to cover how to integrate prebuilt statically linked library (libxxx.a) on IOS, where I actually had some problem.  Everything work fine with debug build (flutter run --debug), however, in release build (flutter run --release),  it complains symbol(from libxxx.a) not found. I guess it's some build args that strip the symbol, can you please give some hints on it?  Thanks in advance!

We recently updated the documentation for non-prebuilt (including the source in Xcode) statically linked libraries, see the discussion on https://github.com/dart-lang/ffi/issues/28#issuecomment-562238818. If I run the example from the tutorial (native add), which is a non-prebuilt statically linked library, it works both with flutter run --debug and flutter run --release when statically linking the symbol into the app.
Note that we had to add the source code in the Xcode project to get it statically linked in. However, that was the same for both debug and release modes.
Can you provide a minimal example where flutter run --release doesn't work with a prebuilt library? (P.s. feel free to open a new specific issue instead of making this thread longer, and cc me.)

@dcharkes  Sure! Please use this example project  it will print a version number from native code when there's no error
I did not commit the statically link library to the repo, you can download from here and place it under {plugin}/ios folder manually

I'm able to reproduce the error on --release.
Failed to lookup symbol (dlsym(RTD_DEFAULT, ffi_lz4_version_string): symbol not found).
I'm not very familiar with the XCode setup of Flutter projects, but it looks like the flutter_native_compression is only included in Development.

I'll dig a bit deeper.

cc Flutter tools team: @jonahwilliams @jmagman

@dcharkes just FYI, when I use the (native) symbol from obj-c / swift code, everthing works, I can confirm that the library is linked, but the symbols are not accessible from dart VM in release build

In that case, it might be related to https://github.com/flutter/flutter/issues/46887 (dart_api.h symbols not visible in release).

cc Flutter tools team: @jonahwilliams @jmagman

After I added the libdart_native_compression.a and podspec from Archive.zip the example project built in Xcode in Debug and Release.
I was also able to use it in the Runner app.
import flutter_native_compression
...
let test = ffi_lz4_version_number();

(lldb) p test
(Int32) $R0 = 10902

I was a bit surprised ffi_lz4_version_number() didn't need an extern in that header, that could be causing other issues if the symbol needs to be used elsewhere.
Was there something else you needed us to look at, @dcharkes?

After I added the libdart_native_compression.a and podspec from Archive.zip the example project built in Xcode in Debug and Release.

Hm, if I run it with flutter run --release, it doesn't find the symbol. How exactly did you run in release mode @jmagman? With that command? From XCode?

@dcharkes I unzipped and copied the contents of Archive.zip to flutter_native_extensions/src/compression/flutter_native_compression/ios, which adds libdart_native_compression.a as a vendored library.
I did hit a cached module problem at some point and had to delete ~/Library/Developer/Xcode/DerivedData.
It then compiled in Xcode in Debug and Release, flutter build ios and flutter run --release

@jmagman Did you run it in emulator or real device?  In real device, I always see (only in release build) error message of 'symbol not found'. And I believe @dcharkes had the same experience, thanks!

I've tried to include a static lib as part of the plugin, but I could not make it work on the Simulator either, running with flutter run --debug.
On the plugin .podspec freshly generated from the plugin template I've included the following:
  s.static_framework = true
  s.vendored_libraries = "**/*.a"

Then I added the compiled archive inside the my_plugin/ios/libs folder. After a pod install on my_plugin/example/ios, I can see that the library was included as part of the linking process:

On XCode, navigating to Pods > Target Support Files > Pods-Runner.debug.cxconfig I can see that the library has been added to the linking variable:

The code compiles, but clicking the button leads to a failed lookup on the symbol. This is the same code that works on Android, so I kept investigating.
[VERBOSE-2:dart_isolate.cc(813)] Unhandled exception:
Invalid argument(s): Failed to lookup symbol (dlsym(RTLD_DEFAULT, colmeia_dat1_sync): symbol not found)

The file was generated with lipo. Looking at libcolmeia_dat1_ffi.a the symbol is defined:
$ lipo -info libcolmeia_dat1_ffi.a
Architectures in the fat file: libcolmeia_dat1_ffi.a are: x86_64 arm64

$ strings libcolmeia_dat1_ffi.a | grep 'colmeia_da1_sync` # shows up
$ otool -tV libcolmeia_dat1_ffi.a | grep "colmeia_dat1_sync:" # shows up

But looking at the generated frameworks and app, I can't find any of the symbols. I think this is something about how iOS deals with static and dynamic frameworks on the same build. I would expect it to fail during linking phase. That is how far I've investigated.
otool -tV example/build/ios/Debug-iphonesimulator/Runner.app/Runner | grep "colmeia_da1_sync" # nothing shows up.
strings  example/build/ios/Debug-iphonesimulator/Runner.app/Runner | grep "colmeia_da1_sync" # nothing shows up.

Manually editing the file Pods-Runner.debug.xcconfig and including -force_load ./libcolmeia_dat1_ffi.a allowed me pass beyond the compilation phase, and load the symbol from Dart.
OTHER_LDFLAGS = [...] -force_load "${PODS_ROOT}/../.symlinks/plugins/my_plugin/ios/libs/libcolmeia_dat1_ffi.a"

The app crashes right after, but I believe this is something on my code panicking on the FFI side.
I have not investigated how to include the line as part of the podspec or the podfile yet.

@bltavares For static linking, you need to define any dummy function from the lib from .h header. Although it works only in debug build

Are these docs out of date? https://flutter.dev/docs/development/platform-integration/c-interop

Are these docs out of date? https://flutter.dev/docs/development/platform-integration/c-interop

No, not that I'm aware of. The dynamic linking solution is what I use here locally and it works.
Do you have a specific problem?

No it works for me too! Just didn’t know if there was a bug relating to this issue

I seem to be hitting this too.
My main Flutter project references a plugin (https://github.com/nmfisher/flutter_chinese_character_recognition) that invokes a function in a statically linked Rust library (compiled separately) via FFI.
The plugin itself is bundled as a static framework:
https://github.com/nmfisher/flutter_chinese_character_recognition/blob/2cf35a0b659a591f52dc447f54c4d800e1da62d7/ios/chinese_character_recognition.podspec#L18
and links to the static library via the vendored_libraries config property in the plugin's podspec.
I also included a dummy method in the plugin to ensure the function wasn't optimized out.
Everything works in debug mode and release mode, both on the simulator and a physical device (iPhone). Also works fine on Android emulator (just waiting to test on a physical Android device).
The issue is only encountered when archiving and submitting to the App Store/TestFlight:

Have tried

adding "s.xcconfig = { 'OTHER_LDFLAGS' => '-all_load' }" to the plugin's podspec:
removing "use_frameworks!" from the main project's Podfile (caused compilation errors with other plugins)
unchecking "Strip Dead Code" and "Strip Swift symbols",
directly linking the main project with the static library in Xcode
adding a dummy method to the main project's GeneratedPluginRegistrant.m (though I'm not sure if this was overwritten before build or not).
None of these worked.

If I directly dump the symbols from the release Runner build, I can see the library has been linked correctly:
nickfisher@Nicks-Mac fluent_academy_app % nm /Users/nickfisher/Library/Developer/Xcode/DerivedData/Runner-chnndanceemyvefanaokyerbrdah/Build/Products/Release-iphoneos/Runner.app/Runner | grep lookup
...
000000010000ad6c T _lookupFFI

But trying to do the same for the archive shows nothing:
nickfisher@Nicks-Mac fluent_academy_app % nm /Users/nickfisher/Library/Developer/Xcode/Archives/2020-04-09/Runner\ 9-4-20,\ 9.30\ am.xcarchive/Products/Applications/Runner.app/Runner | grep lookup
nickfisher@Nicks-Mac fluent_academy_app %

So I'm 99% sure the "Archive" step is stripping the code, but I can't find anything else in Xcode that might be doing this. Any suggestions?
flutter doctor
[✓] Flutter (Channel dev, v1.18.0, on Mac OS X 10.15.3 19D76, locale en-AU)
    • Flutter version 1.18.0 at /Users/nickfisher/Downloads/flutter
    • Framework revision de1e572916 (3 days ago), 2020-04-06 16:15:07 -0700
    • Engine revision df257e59c2
    • Dart version 2.8.0 (build 2.8.0-dev.20.0 1210d27678)

[✗] Android toolchain - develop for Android devices
    ✗ Unable to locate Android SDK.
      Install Android Studio from: https://developer.android.com/studio/index.html
      On first launch it will assist you in installing the Android SDK components.
      (or visit https://flutter.dev/docs/get-started/install/macos#android-setup for detailed instructions).
      If the Android SDK has been installed to a custom location, set ANDROID_SDK_ROOT to that location.
      You may also want to add it to your PATH environment variable.

[✓] Xcode - develop for iOS and macOS (Xcode 11.4)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.4, Build version 11E146
    • CocoaPods version 1.9.1

I've added a walkthrough to the wiki page: flutter/flutter/wiki/Binding-to-native-code-via-FFI
This illustrates how to add the C/C++ sources directly so they will be compiled for the correct architecture for the end application.

Thanks for the walkthrough.

Please don't upload .so or .a files directly to Flutter plugins on Pub: it's a security hazard and it can cause compatibility issues.

If not that, then what's the right way to package .so files on pub right now?

@devxpy right now, uploading .so files is the only way. See my update in https://github.com/dart-lang/sdk/issues/36712.
@nmfisher @bltavares The Rust questions are orthogonal are orthogonal to this specific GitHub issue. Feel free to open another GitHub issue or ask on StackOverflow. Please document if you've got the whole chain working with rust so we can add it to the FFI documentation.

I've tried to include a static lib as part of the plugin, but I could not make it work on the Simulator either, running with flutter run --debug.
On the plugin .podspec freshly generated from the plugin template I've included the following:
  s.static_framework = true
  s.vendored_libraries = "**/*.a"

Then I added the compiled archive inside the my_plugin/ios/libs folder. After a pod install on my_plugin/example/ios, I can see that the library was included as part of the linking process:

On XCode, navigating to Pods > Target Support Files > Pods-Runner.debug.cxconfig I can see that the library has been added to the linking variable:

The code compiles, but clicking the button leads to a failed lookup on the symbol. This is the same code that works on Android, so I kept investigating.
[VERBOSE-2:dart_isolate.cc(813)] Unhandled exception:
Invalid argument(s): Failed to lookup symbol (dlsym(RTLD_DEFAULT, colmeia_dat1_sync): symbol not found)

The file was generated with cargo-lipo from a Rust project. Looking at libcolmeia_dat1_ffi.a the symbol is defined:
$ lipo -info libcolmeia_dat1_ffi.a
Architectures in the fat file: libcolmeia_dat1_ffi.a are: x86_64 arm64

$ strings libcolmeia_dat1_ffi.a | grep 'colmeia_da1_sync` # shows up
$ otool -tV libcolmeia_dat1_ffi.a | grep "colmeia_dat1_sync:" # shows up

But looking at the generated frameworks and app, I can't find any of the symbols. I think this is something about how iOS deals with static and dynamic frameworks on the same build. I would expect it to fail during linking phase. That is how far I've investigated.
otool -tV example/build/ios/Debug-iphonesimulator/Runner.app/Runner | grep "colmeia_da1_sync" # nothing shows up.
strings  example/build/ios/Debug-iphonesimulator/Runner.app/Runner | grep "colmeia_da1_sync" # nothing shows up.

After a lot of search, this Stackoverflow reply helped a bit more. Manually editing the file Pods-Runner.debug.xcconfig and including -force_load ./libcolmeia_dat1_ffi.a allowed me pass beyond the compilation phase, and load the symbol from Dart.
OTHER_LDFLAGS = [...] -force_load "${PODS_ROOT}/../.symlinks/plugins/my_plugin/ios/libs/libcolmeia_dat1_ffi.a"

The app crashes right after, but I believe this is something on my code panicking on the FFI side. ~I have not investigated how to include the line as part of the podspec or the podfile yet.~
I've added the following to the Podspec file on the Runner project

I've tried to include a static lib as part of the plugin, but I could not make it work on the Simulator either, running with flutter run --debug.
On the plugin .podspec freshly generated from the plugin template I've included the following:
  s.static_framework = true
  s.vendored_libraries = "**/*.a"

Then I added the compiled archive inside the my_plugin/ios/libs folder. After a pod install on my_plugin/example/ios, I can see that the library was included as part of the linking process:

On XCode, navigating to Pods > Target Support Files > Pods-Runner.debug.cxconfig I can see that the library has been added to the linking variable:

The code compiles, but clicking the button leads to a failed lookup on the symbol. This is the same code that works on Android, so I kept investigating.
[VERBOSE-2:dart_isolate.cc(813)] Unhandled exception:
Invalid argument(s): Failed to lookup symbol (dlsym(RTLD_DEFAULT, colmeia_dat1_sync): symbol not found)

The file was generated with cargo-lipo from a Rust project. Looking at libcolmeia_dat1_ffi.a the symbol is defined:
$ lipo -info libcolmeia_dat1_ffi.a
Architectures in the fat file: libcolmeia_dat1_ffi.a are: x86_64 arm64

$ strings libcolmeia_dat1_ffi.a | grep 'colmeia_da1_sync` # shows up
$ otool -tV libcolmeia_dat1_ffi.a | grep "colmeia_dat1_sync:" # shows up

But looking at the generated frameworks and app, I can't find any of the symbols. I think this is something about how iOS deals with static and dynamic frameworks on the same build. I would expect it to fail during linking phase. That is how far I've investigated.
otool -tV example/build/ios/Debug-iphonesimulator/Runner.app/Runner | grep "colmeia_da1_sync" # nothing shows up.
strings  example/build/ios/Debug-iphonesimulator/Runner.app/Runner | grep "colmeia_da1_sync" # nothing shows up.

After a lot of search, this Stackoverflow reply helped a bit more. Manually editing the file Pods-Runner.debug.xcconfig and including -force_load ./libcolmeia_dat1_ffi.a allowed me pass beyond the compilation phase, and load the symbol from Dart.
OTHER_LDFLAGS = [...] -force_load "${PODS_ROOT}/../.symlinks/plugins/my_plugin/ios/libs/libcolmeia_dat1_ffi.a"

The app crashes right after, but I believe this is something on my code panicking on the FFI side. ~I have not investigated how to include the line as part of the podspec or the podfile yet.~
I've added the following to the Podspec file on the Runner project

Update the '.a' with -force_load worked for me, I wonder is there any other solution?

@bltavares bltavares Hi, I add '-all_load' in the build setting's other_link_flags of  the project. It also worked.

@dcharkes Documentation can't be found here: https://flutter.dev/docs/development/platform-integration/c-interop and here: https://github.com/flutter/flutter/wiki/Binding-to-native-code-via-FFI. Are there any alternatives?

Hope those help

https://github.com/Sunbreak/native_interop.tour
https://github.com/Sunbreak/cronet_flutter
https://github.com/woodemi/quick.flutter

Update the '.a' with -force_load worked for me, I wonder is there any other solution?

Yes, there is; for iOS and macOS, I'd recommend building an XCFramework and set up your podspec to ship that XCFramework. XCFrameworks support iOS, iOS Simulator, and macOS without lipo-ing everything together (which is no longer recommended). Take a look here: https://github.com/GregoryConrad/mimir/blob/main/packages/flutter_mimir/ios/flutter_mimir.podspec
Same podspec file for iOS & macOS because of using the XCFramework


Curators would like to increase the velocity of dataset revisions

Context
@jychien wrote:
Here is my current process for a revision:

download h5ad using Download UX
read h5ad and make changes to something (something like cell type update or dataset title)
drop portal specific columns
save to h5ad
upload the correct h5ad to the appropriate dataset_id

This process is relatively painless when it's a few dataset for the collection. But recently, I've had to do one with 20 datasets and another which had a 5-10Gb h5ad (which required me to have my EC2 running).
It would be great to somehow make this process semi-automated. Something like we do during migration. It would be nice if something like this was in place independent of a full migration, especially if we want to be able to efficiently update cell types ontologies, where the revisions that need to be made are across multiple collections for multiple dataset.

Needs discovery

This would require updating all of the downstream assets(CXG and seurat). An MVP could be to create an API endpoint to allow some datasets fields to be modified that are compatible with light reprocessing.

Just a thought: it seems like we'd want to avoid requiring the curators to upload the same X matrix more than once, under any circumstances. It would be nice to have a revision paradigm that accepted metadata submissions which we then attach to the original h5ad objects. It could also reduce the validation time (i.e. no need to validate the same X and raw.X twice). Something to consider. It might be over-engineering for the given situation... or it might not.

Before scheduling this work, I propose waiting to stand-up the Jupyterhub cluster we plan to host in our AWS account to give remote curation access to curators. This work may alleviate the pain points that led to this request such that its not as pressing to implement this feature.
This solution is an evolution of the proposed solution in #145, which is focused on uns-only updates (which is a simpler problem we already have infrastructure to accommodate)
Estimate: 5-6 weeks x 2 engineers

Create endpoint PATCH /v1/collections/{collection_id}/datasets for submitting uns + obs dataset updates across a revision
Propose a request schema capturing common patterns for scripting dataset updates (i.e. {"update":{"cell_ontology_term_id": "CL:0000001", "donor_id": 1}} to capture 'update CL to CL:0000001 if donor_id is 1')
Input validation in the endpoint to determine if its a valid update action
trigger batch job that will parse request schema and perform the actions on datasets in the revision if conditions are met (or on all datasets in the revision if no conditions to check)
Create a new batch job similar to dataset_metadata_update.py that iterates across datasets in a revision, parses the request schema for actions, and creates new dataset versions + applies applicable actions to the relevant dataset H5ADs (while updating dataset statuses accordingly). Then, apply those updates to the rds and cxg artifacts as well without going through the full conversion process.
- NOTE: unlike  dataset_metadata_update.py, this batch job WILL require re-triggering the validation step if there are updates to the obs
- To counter redundant work, Create an optional flag in the cellxgene-schema CLI to skip validating the X / raw.X matrix. Validating with this option will cover any potential new validation issues and avoid the most time / memory expensive operation.

For future reference, this doc discusses the Jupyterhub cluster being created for curators:

Curation infrastructure for Lattice


docker build found clib undefined

I'm not sure if it was caused by libxml-2.0, but there was an error prompt when building：
github.com/lestrrat-go/libxml2@v0.0.0-xxx/xpath/xpath.go:179:9: undefined: clib.XMLXPathContextSetContextNode
github.com/lestrrat-go/libxml2@v0.0.0-xxx/xpath/xpath.go:149:2: undefined: clib.XMLXPathFreeCompExpr
github.com/lestrrat-go/libxml2@v0.0.0-xxx/xpath/xpath.go:91:13: undefined: clib.XMLXPathObjectNodeList
too many errors

When i execute pkg-config --list-all (on docker contain), terminal output:
pkg-config --list-all
systemd          systemd - systemd System and Service Manager
icu-io           icu-io - International Components for Unicode: Stream and I/O Library
icu-i18n         icu-i18n - International Components for Unicode: Internationalization library
icu-uc           icu-uc - International Components for Unicode: Common and Data libraries
libxml-2.0       libXML - libXML library version2.
icu-lx           icu-lx - International Components for Unicode: Paragraph Layout library
shared-mime-info shared-mime-info - Freedesktop common MIME database
icu-le           icu-le - International Components for Unicode: Layout library

The libxml-2.0 was installed.
My dockerfile in here:
FROM ubuntu:16.04 as builder
MAINTAINER asyncins
RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
RUN sed -i 's/security.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
RUN apt-get update -y
RUN apt-get install gcc g++ libxml2 libxml2-dev libxslt-dev wget pkg-config -y
RUN wget https://dl.google.com/go/go1.15.6.linux-amd64.tar.gz
RUN tar -C /usr/lib/ -xzf go1.15.6.linux-amd64.tar.gz
ENV GOROOT=/usr/lib/go
ENV PATH=$PATH:/usr/lib/go/bin
ENV GOPATH=/root/go
ENV PATH=$GOPATH/bin/:$PATH
ENV GO111MODULE=on \
    GOPROXY=https://goproxy.cn,direct

ADD . /go/src/application
WORKDIR /go/src/application
RUN go get all

RUN GOOS=linux GOARCH=386 go build -o MyApp ./main.go

FROM alpine
COPY --from=builder /go/src/application/main /usr/local/bin/MAP

CMD ["MAP"]

can you help me?

can you help me?

No, I'm sorry, I can't. I am not your personal debugger, nor do you provide any reproducible code.
And it's definitely not this library's problem.

Hello @asyncins , did you manage to solve this issue?

收到，谢谢。祝您生活愉快


Adding Ionic2 docs

There was an error while validating job 04b7453c-f891-4f86-89d9-390d42a4ee22 Message:
Result status: Failed
There was a problem accessing Github repository 'https://github.com/Microsoft/cordova-docs.git'.
Details:Microsoft.LightweightJobEngine.Core.Language.ContextCommandBase+ContextCommandException:
Result status: Failed
There was a problem accessing Github repository 'https://github.com/Microsoft/cordova-docs.git'.
---> System.AggregateException: One or more errors occurred. ---> System.ArgumentException: Error clonning repository ---> LibGit2Sharp.NotFoundException: Branch 317 not found. Available branches: origin/master
at Microsoft.DPS.Services.LibGit2SharpSourceControlProvider.GetBranch(Repository repo, String name)
at Microsoft.DPS.Services.LibGit2SharpSourceControlProvider.<>c__DisplayClass30.<>c__DisplayClass34.b__29(KeyValuePair2 branch)    at System.Collections.Generic.List1.ForEach(Action1 action)    at Microsoft.DPS.Services.LibGit2SharpSourceControlProvider.<>c__DisplayClass30.<CloneRepository>b__28()    at Microsoft.Practices.EnterpriseLibrary.TransientFaultHandling.RetryPolicy.<>c__DisplayClass1.<ExecuteAction>b__0()    at Microsoft.Practices.EnterpriseLibrary.TransientFaultHandling.RetryPolicy.ExecuteAction[TResult](Func1 func)
at Microsoft.Practices.EnterpriseLibrary.TransientFaultHandling.RetryPolicy.ExecuteAction(Action action)
at Microsoft.DPS.Services.LibGit2SharpSourceControlProvider.CloneRepository(String url, IDictionary2 branches)    --- End of inner exception stack trace ---    at Microsoft.DPS.Services.LibGit2SharpSourceControlProvider.CloneRepository(String url, IDictionary2 branches)
at Microsoft.DPS.Services.LibGit2SharpSourceControlProvider.CloneRepository()
at Microsoft.DPS.Services.LibGit2SharpSourceControlProvider.GetVersionAsync(String path)
at Microsoft.DPS.Commands.IdentifyDocumentsToPublish.CheckExternalServicesCommand.Do(IDictionary2 context)    --- End of inner exception stack trace ---    --- End of inner exception stack trace ---    at Microsoft.LightweightJobEngine.Core.Language.ContextCommandBase.ThrowIfErrorsLogged()    at Microsoft.DPS.Commands.IdentifyDocumentsToPublish.CheckExternalServicesCommand.Do(IDictionary2 context)
at Microsoft.LightweightJobEngine.Core.Language.JobWorkflow1.RunCommands(Guid jobId, IDictionary2 context, CancellationTokenSource cancelSignal)


Change the user@host:dir colors

Hi!
Recently I started using atom and I really love platformio-atom-ide-terminal.
However, the terminal is monochromatic and it is kind of difficult to find the beginning of the line when we have a long output.

I was wondering if there is any way to change only the "user@host:dir" colors in the terminal? Similar to Ubuntu.
Thank you!

We would need to know what OS, the terminal in use, like powershelll, cmd, bash, git bash, wsl bash and so on.

I am currently using Ubuntu 18.04 and I use bash.
I eventually manage to change the colors by putting the following command in the the section "Auto Run Command" in Options.
PS1="\[\e[32;1m\]\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$\[\e[m\] " ; tput reset
It's not the perfect solution, but it works just fine.

This is a path issue of sorts, your workaround would likely not be needed if you have it in  ~/.bash_profile
In any case you'd be better served with terminus its a fork of this project which also is in JavaScript instead of CoffeeScript.

This is a path issue of sorts, your workaround would likely not be needed if you have it in ~/.bash_profile
You are right, is way better solution than mine, thank you ;)

In any case you'd be better served with terminus its a fork of this project which also is in JavaScript instead of CoffeeScript.
I will try it out then.

Thank you again for your help!


Plugin doesn't show up as installed

Hi @dmitrijkir
Thank you for your service!

I just installed the release archived file to /opt/mattermost/plugins and extracted the directory com.dmkir.calendar.
When I check it in the System Console > Plugins > Plugin Management  > Installed plugins, it doesn't show any installed plugins.

Mattermost:
Version: 9.11.1
Build Number:<PHONE_NUMBER>4
Build Date: Fri Aug 16 12:36:01 UTC 2024
Build Hash: 81c8b64b61d93520e731b86189000280082950f6
Build Enterprise Ready: true

Hi @dmitrijkir  just checking if have tested this plugin to latest version 9.11.1?
Kindest Regards,

Hi, no, I haven't tested it with version 9.11. Have you tried installing any other plugins? Do they install correctly?

Hi @dmitrijkir  - turns out it was a directory permission issue. I am closing this issue now.
Found another issue in this ticket: https://github.com/dmitrijkir/mattermost-plugin-calendar/issues/29


custom dpms settings

betterlockscreen does check if DPMS is enabled, but if "Enabled" it hard codes the screen off time to 5 minutes, rather than using the user defined values in xset.  Maybe could be switched to use user defined values?

never mind... I found the .config/betterlockscreenrc section in the code.


Bug: player not working

Checklist

[] Verified whether your issue exists in the latest version Mux Element(s) release: npm install @mux/[element_name] or yarn @mux/[element_name].

(NOTE: If the issue is not occurring in the latest version, we may not resolve it.)

[] Confirmed that this issue hasn't already been filed.

Which Mux Elements/Packages has a bug?

mux-video

Which browser(s) are you using?

compile error

Which operating system(s) are you using?
Window
(For example: macOS, Windows, iOS, Android)
How are you using Mux Elements?
"@mux/mux-video-react": "^0.5.1",
(For example: npm package, <script> tag)
Describe the bug
<EMAIL_ADDRESS>Can't import the named export 'useEffect' from non EcmaScript module (only default export is available)

Steps To Reproduce

Link to code example:

The current behavior
The expected behavior

@ankuragrawal29 thanks for opening the issue. We'll need some more details in order to help.
Doing some googling based on that error message "Can't import the named export 'useEffect' from non EcmaScript module (only default export is available)" I found a this which might be related:

https://stackoverflow.com/questions/69343038/cant-import-the-named-export-xxxx-from-non-ecmascript-module-only-default-expo

Since useEffect comes from React, I think the issue you're running into has to do with your current React version, or your webpack config

closing as this seems to be a React build issue.
our demo apps are building ok
https://elements-demo-create-react-ljge6oqbm-mux.vercel.app/#/MuxVideo


add modules to project

On how to add modules the doc says: "If the module is native to a platform (like node-postgres) or otherwise should be included with the published package (i.e. bcrypt, openbci), it should be listed under dependencies in ./app/package.json.".
I had question about the part which is in bold (can see here: https://github.com/chentsulin/electron-react-boilerplate/issues/1545), namely I didn't know how does one know that a module should be included with the published package like bcrypt.
In the correspondence I linked, the question was closed but as one can see from the thread it is still entirely unclear why and what the sentence "should be included with the published package (i.e. bcrypt, openbci)" entails.
The person who communicated in the thread just said he would change it, but it occurs he/she is busy.
I don't plan to submit a PR, because I don't know why that sentence should be removed (I can't explain it if someone asks).
Hence I am posting this for someone either to explain what that sentence means, or to modify it in docs, so that the docs are up to date and correct.

Merging this into https://github.com/chentsulin/electron-react-boilerplate/issues/1545. Please don't create duplicates. Thanks


[test-triage] chip_sw_uart_tx_rx_bootstrap times out in DV

Hierarchy of regression failure
Block level
Failure Description
chip_sw_uart_tx_rx_bootstrap sometimes fails in the nightlies but passes with the same commit and seeds when testing locally, so it seems we just need to increase the timeout value.
## Test Results
|  Stage  |     Name     | Tests                        |  Max Job Runtime  |  Simulated Time  |  Passing  |  Total  |  Pass Rate  |
|:-------:|:------------:|:-----------------------------|:-----------------:|:----------------:|:---------:|:-------:|:-----------:|
|   V2    | chip_sw_boot | chip_sw_uart_tx_rx_bootstrap |      1.918h       |     77.672ms     |     1     |    1    |  100.00 %   |
|   V2    |              | **TOTAL**                    |                   |                  |     1     |    1    |  100.00 %   |
|         |              | **TOTAL**                    |                   |                  |     1     |    1    |  100.00 %   |

INFO: [FlowCfg] [scratch_path]: [chip] [/home/luismarques/opentitan/scratch/HEAD/chip_earlgrey_asic-sim-vcs]

          [   legend    ]: [Q: queued, D: dispatched, P: passed, F: failed, K: killed, T: total]
00:02:13  [    build    ]: [Q: 0, D: 0, P: 1, F: 0, K: 0, T: 1] 100%
01:58:51  [     run     ]: [Q: 0, D: 0, P: 1, F: 0, K: 0, T: 1] 100%

Steps to Reproduce

GitHub Revision: be3d980075
dvsim invocation command to reproduce the failure: ./util/dvsim/dvsim.py hw/top_earlgrey/dv/chip_sim_cfg.hjson -i chip_sw_uart_tx_rx_bootstrap --build-seed<PHONE_NUMBER>0245376283659198434338498577935164172956485671224275001047693479661 --fixed-seed<PHONE_NUMBER>3898283980953037674008943558298359986442654654162433213547823833994

Tests with similar or related failures
No response

Duplication of ticket:
Improved but now failing completely.
Failure Description
Job chip_earlgrey_asic-sim-vcs_run_default killed due to: Exit reason: User job exceeded runlimit: User job timed out

Steps to Reproduce
GitHub Revision: https://github.com/lowRISC/opentitan/commit/01a208901a5b8c29dc74f8a500b64b6b2cb5cf4c
dvsim invocation command to reproduce the failure, inclusive of build and run seeds:
./util/dvsim/dvsim.py hw/top_earlgrey/dv/chip_sim_cfg.hjson -i chip_sw_uart_tx_rx_bootstrap --fixed-seed<PHONE_NUMBER>450362255802387402225996801695448381906300269912928029522279831259 --waves fsdb

Resolved by https://github.com/lowRISC/opentitan/pull/23620


Add support for riscv64 and arm32v6

can we add support for riscv64 and arm32v6?
so we have hello-world for any possibly arch?

Regarding riscv64, I'd mirror my comment on https://github.com/docker-library/busybox/issues/87:

We can certainly work on making sure it builds successfully, but we won't be merging anything officially unless/until https://github.com/docker-library/official-images/issues/8794 is resolved with some proper build/test hardware.

Regarding arm32v6, that's unfortunately not an architecture that Debian officially supports, which is the build environment for our binaries (since it has the most supported architectures).  That being said, the ARMv5 binary should work fine there, and given we don't do much more than "print a string and exit successfully" I'm not sure whether floating point optimizations are actually relevant here?
Additionally, the number of arm32v6 systems that exist make me really question whether it's worth going to more effort to support (like getting a cross-compiler from elsewhere); the only popular boards I'm aware of are the Raspberry Pi 1 and Raspberry Pi Zero.  If we were to "support" this, I think we would do so by labelling the arm32v5 build as arm32v6, which I don't think actually provides much value, since most popular container runtimes should already walk down the list of supported architectures in the manifest list on an arm32v6 device and run the arm32v5 image instead (barring minor bugs like the one I fixed in containerd in https://github.com/containerd/containerd/pull/4530).


app:run output seems to be truncated

I ran a command via commander app:run that appeared to exit without any indication of why.  Running the same command in the shell showed substantially more text, which contained an actual error message at the end.

Here's a simple repro
commander -env dev app:run apiary 'date; sleep 10; date'

The last date never make it to the console.
This version exists early after ~20sec
commander -env dev app:run apiary 'date; sleep 100; date'

Looks like a straightforward fix: switch Stream from false to true in the AttachToContainerOptions struct.


Unable to import psycopg2 due to mixing packages from different Python installations

Issue Report Checklist

[x ] Searched the issues page for similar reports
[x] Read the relevant sections of the Spyder Troubleshooting Guide and followed its advice
[x] Reproduced the issue after updating with conda update spyder (or pip, if not using Anaconda)
[x] Tried basic troubleshooting (if a bug/error)
[x] Completed the Problem Description, Steps to Reproduce and Version sections below

Problem Description
I have an M2 mac running Ventura.
I am unable to import psycopg2 into Spyder. I installed spyder using the standalone MacOS installer. I manage the packages with pip and have added the path to PYTHONPATH manager in Spyder. I am using the python executable that came with the mac (3.9.6), though I tried spyder's included executable too.
A number of packages were broken by the new mac chips. Usually you can get around it by installing with --no-binary
You can find lots of issues googling psycopg2 build errors with M1 macs. Generally the solution involves installing psycopg2-binary or installing some brew casks (libpq,openssl,postgresql) and then trying again to pip install psycopg2. This works, and if you successfully pip install either of these, you can open a python shell and import psycopg2.
However you can not import them into spyder. Both versions of psycopg2 give similar but distinct errors with the file _psycopg.cpython-39-darwin.so
What steps reproduce the problem?

pip install psycopg2 or psycopg2-binary on M2 mac
import psycopg2 in spyder

What is the expected output? What do you see instead?
Expected output would be a successful import
Current output is an ImportError with this file: _psycopg.cpython-39-darwin.so
Paste Traceback/Error Below (if applicable)

#if you have installed psycopg2-binary
import psycopg2

  File ~/Library/Python/3.9/lib/python/site-packages/psycopg2/__init__.py:51
    from psycopg2._psycopg import (                     # noqa

ImportError: dlopen(/Users/my_username/Library/Python/3.9/lib/python/site-packages/psycopg2/_psycopg.cpython-39-darwin.so, 0x0002): tried: '/Users/my_username/Library/Python/3.9/lib/python/site-packages/psycopg2/_psycopg.cpython-39-darwin.so' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64')), '/System/Volumes/Preboot/Cryptexes/OS/Users/my_username/Library/Python/3.9/lib/python/site-packages/psycopg2/_psycopg.cpython-39-darwin.so' (no such file), '/Users/my_username/Library/Python/3.9/lib/python/site-packages/psycopg2/_psycopg.cpython-39-darwin.so' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64')))

#if you have installed psycopg2
import psycopg2

  File ~/Library/Python/3.9/lib/python/site-packages/psycopg2/__init__.py:51
    from psycopg2._psycopg import (                     # noqa

ImportError: dlopen(/Users/my_username/Library/Python/3.9/lib/python/site-packages/psycopg2/_psycopg.cpython-39-darwin.so, 0x0002): symbol not found in flat namespace '_PQbackendPID'

Versions
5.4.4 and 6.0.0a1 (I tried both)

Spyder version: 5.4.4 and 6.0.0a1 (I tried both)
Python version: 3.9.6
Operating System name/version: MacOS Ventura

Dependencies

# Mandatory:
atomicwrites >=1.2.0                                                        :  1.4.1 (OK)
chardet >=2.0.0                                                             :  5.1.0 (OK)
cloudpickle >=0.5.0                                                         :  2.2.1 (OK)
cookiecutter >=1.6.0                                                        :  2.1.1 (OK)
diff_match_patch >=20181111                                                 :  20230430 (OK)
intervaltree >=3.0.2                                                        :  3.1.0 (OK)
IPython >=7.31.1,<9.0.0,!=8.8.0,!=8.9.0,!=8.10.0,!=8.11.0,!=8.12.0,!=8.12.1 :  8.14.0 (OK)
jedi >=0.17.2,<0.19.0                                                       :  0.18.2 (OK)
jellyfish >=0.7                                                             :  0.9.0 (OK)
jsonschema >=3.2.0                                                          :  4.17.3 (OK)
keyring >=17.0.0                                                            :  23.13.1 (OK)
nbconvert >=4.0                                                             :  7.6.0 (OK)
numpydoc >=0.6.0                                                            :  1.5.0 (OK)
parso >=0.7.0,<0.9.0                                                        :  0.8.3 (OK)
pexpect >=4.4.0                                                             :  4.8.0 (OK)
pickleshare >=0.4                                                           :  0.7.5 (OK)
psutil >=5.3                                                                :  5.9.5 (OK)
pygments >=2.0                                                              :  2.15.1 (OK)
pylint >=2.5.0,<3.0                                                         :  2.17.4 (OK)
pylint_venv >=3.0.2                                                         :  3.0.2 (OK)
pyls_spyder >=0.4.0                                                         :  0.4.0 (OK)
pylsp >=1.7.2,<1.8.0                                                        :  1.7.3 (OK)
pylsp_black >=1.2.0,<3.0.0                                                  :  1.3.0 (OK)
qdarkstyle >=3.0.2,<3.2.0                                                   :  3.1 (OK)
qstylizer >=0.2.2                                                           :  0.2.2 (OK)
qtawesome >=1.2.1                                                           :  1.2.3 (OK)
qtconsole >=5.4.2,<5.5.0                                                    :  5.4.3 (OK)
qtpy >=2.1.0                                                                :  2.3.1 (OK)
rtree >=0.9.7                                                               :  1.0.1 (OK)
setuptools >=49.6.0                                                         :  67.7.2 (OK)
sphinx >=0.6.6                                                              :  7.0.1 (OK)
spyder_kernels >=3.0.0b1,<3.0.0b2                                           :  3.0.0b1 (OK)
textdistance >=4.2.0                                                        :  4.5.0 (OK)
three_merge >=0.1.1                                                         :  0.1.1 (OK)
watchdog >=0.10.3                                                           :  3.0.0 (OK)
zmq >=22.1.0                                                                :  25.1.0 (OK)

# Optional:
cython >=0.21                                                               :  0.29.35 (OK)
matplotlib >=3.0.0                                                          :  3.7.1 (OK)
numpy >=1.7                                                                 :  1.25.0 (OK)
pandas >=1.1.1                                                              :  2.0.2 (OK)
scipy >=0.17.0                                                              :  1.10.1 (OK)
sympy >=0.7.3                                                               :  1.12 (OK)

Hey @travisstenerson-concert, thanks for reporting. You said:

I manage the packages with pip and have added the path to PYTHONPATH manager in Spyder

What exact path did you add to Spyder through our PYTHONPATH manager?

Hey @travisstenerson-concert, thanks for reporting. You said:

I manage the packages with pip and have added the path to PYTHONPATH manager in Spyder

What exact path did you add to Spyder through our PYTHONPATH manager?

The folder that pip installs packages into:
/Users/my_username/Library/Python/3.9/lib/python/site-packages
I was wondering if I had to also add the location that homebrew installed libpq to, but I have not done that.

The folder that pip installs packages into:
/Users/my_username/Library/Python/3.9/lib/python/site-packages

Ok, I was thinking that. And are you using our Mac application? Or how did you install Spyder?

I was wondering if I had to also add the location that homebrew installed libpq to, but I have not done that.

Better not to for now. I'll explain you why after you answer my previous question.

@ccordoba12  Is your question about the install or did I miss another question?
Installation was via the installer at this link https://github.com/spyder-ide/spyder/releases/latest/download/Spyder.dmg
But then I uninstalled and used this link to the pre-release https://github.com/spyder-ide/spyder/releases/download/v6.0.0a1/Spyder-6.0.0a1-macOS-x86_64.pkg
I read a few items while searching for a solution that using a conda installation or conda controlled environment may solve the problem, but I figured you might want to know that this common package was working through a python shell but not through spyder so I posted here instead of trying that.
Thanks again for your help

@mrclary, could you check if you're able to add a path similar to
/Users/<username>/Library/Python/3.9/lib/python/site-packages

through our PYTHONPATH manager?
We try to prevent that to avoid the problem I described above, but it seems it's possible on Mac.

@ccordoba12
I have installed spyder-kernels. I upgraded it for the 6.0.0 spyder version:
Package            Version
------------------ --------
.....
spyder-kernels     3.0.0b1
.....

Also I have been using the interpreter that the python shell uses. I believe this is the default location on a mac, as I did not update python since getting the new macbook. I also tried the spyder-included interpreter but that did not work.

Is your recommendation to reinstall spyder with conda and use a conda environment?

Is your recommendation to reinstall spyder with conda and use a conda environment?

Nop, that's not necessary. What you did was what users should do to use another Python interpreter in Spyder, so it's fine.
Then, please remove this entry in our PYTHONPATH manager
/Users/<username>/Library/Python/3.9/lib/python/site-packages

and your problem should be fixed (I hope).

@mrclary, could you check if you're able to add a path similar to
/Users/<username>/Library/Python/3.9/lib/python/site-packages

through our PYTHONPATH manager?

I can add an arbitrary path. In my case I added /Users/rclary/opt/mambaforge/envs/test/lib/python3.10/site-packages, which is not already part of the IPython console environment I was using.
It seems to me that the real issue in this post is not using properly formed environments.
@travisstenerson-concert, I'm confused about what environment you are using. When you installed psycopg2, what was the exact command that you used? In your first step to reproduce the issue you say pip install psycopg2, but this is not possible on macOS since pip does not exist; if you installed into the system python environment (HIGHLY discouraged), then you must use pip3 install psycopg2. Additionally, Spyder does not list the system Python for use in IPython consoles, so I don't know which Python environment you are using.
Your second step says "import psycopg2 into spyder". What does this mean? Are you using the command import psycopg2 in the IPython console? If so, then this will not work because the default Python environment is the same as Spyder's runtime environment, which does not have psycopg2. Adding some path to PYTHONPATH will not work either, since psycopg2 must be installed into a fully qualified Python environment.
I recommend the following:

Install Spyder (it doesn't matter whether 5.4.4 or 6.0.0a1).
If you don't want to use conda, then create a new Python environment in a Terminal like so:$ python3 -m venv new_env
$ source new_env/bin/activate
(new_env) $ python -m pip install spyder-kernels psycopg2-binary

Follow the instructions at http://docs.spyder-ide.org/current/faq.html#using-existing-environment to use the new environment in Spyder
In Spyder's IPython console, you should be able toimport psycopg2

Sorry, @ccordoba12 and @travisstenerson-concert; my wrote my latest comment before your latest responses and didn't see them before I posted it.

No worries. You said:

I can add an arbitrary path. In my case I added /Users/rclary/opt/mambaforge/envs/test/lib/python3.10/site-packages, which is not already part of the IPython console environment I was using.

The problem is that the regexp we're using to check for possible site-packages additions through our PPM (which we forbid) is not covering cases like Python 3.10 envs nor those like the one @travisstenerson-concert is trying to use.

It seems to me that the real issue in this post is not using properly formed environments.

I thought the same for a bit but after seeing @travisstenerson-concert's error I thought it had something to do with mixing Python installations:

ImportError: dlopen(/Users/my_username/Library/Python/3.9/lib/python/site-packages/psycopg2/_psycopg.cpython-39-darwin.so, 0x0002): tried: '/Users/my_username/Library/Python/3.9/lib/python/site-packages/psycopg2/_psycopg.cpython-39-darwin.so' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64')), '/System/Volumes/Preboot/Cryptexes/OS/Users/my_username/Library/Python/3.9/lib/python/site-packages/psycopg2/_psycopg.cpython-39-darwin.so' (no such file), '/Users/my_username/Library/Python/3.9/lib/python/site-packages/psycopg2/_psycopg.cpython-39-darwin.so' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64')))

The problem is that the regexp we're using to check for possible site-packages additions through our PPM (which we forbid) is not covering cases like Python 3.10+ envs nor those like the one @travisstenerson-concert is trying to use.

Okay, got it. We could look into fixing that.

I thought the same for a bit but after seeing @travisstenerson-concert's error I thought it had something to do with mixing Python installations:

but is an incompatible architecture (have 'arm64', need 'x86_64'))

Okay, I'll check on my M1 and report back regarding mixing architecture. In any case, one cannot install psycopg2 into an arbitrary directory, separate from a Python environment, and expect it work properly.
@travisstenerson-concert, can you check if you have Rosetta installed?
$ pgrep -lf oahd

When creating a venv environment and using it for IPython console on my M1 I get the following:
venv creation
>> /usr/bin/python3 -m venv new_env
>> source new_env/bin/activate
(new_env) >> pip install spyder-kernels psycopg2-binary
Collecting spyder-kernels
  Downloading spyder_kernels-2.4.4-py2.py3-none-any.whl (98 kB)
     |████████████████████████████████| 98 kB 2.0 MB/s
Collecting psycopg2-binary
  Downloading psycopg2_binary-2.9.7-cp39-cp39-macosx_11_0_arm64.whl (2.5 MB)
     |████████████████████████████████| 2.5 MB 2.3 MB/s
Collecting wurlitzer>=1.0.3
  Downloading wurlitzer-3.0.3-py3-none-any.whl (7.3 kB)
Collecting jupyter-client<9,>=7.4.9
  Downloading jupyter_client-8.3.0-py3-none-any.whl (103 kB)
     |████████████████████████████████| 103 kB 1.9 MB/s
Collecting pyzmq>=22.1.0
  Downloading pyzmq-25.1.0-cp39-cp39-macosx_10_15_universal2.whl (1.8 MB)
     |████████████████████████████████| 1.8 MB 5.5 MB/s
Collecting ipython!=8.10.0,!=8.11.0,!=8.12.0,!=8.12.1,!=8.8.0,!=8.9.0,<9,>=7.31.1
  Downloading ipython-8.14.0-py3-none-any.whl (798 kB)
     |████████████████████████████████| 798 kB 6.7 MB/s
Collecting cloudpickle
  Downloading cloudpickle-2.2.1-py3-none-any.whl (25 kB)
Collecting ipykernel<7,>=6.23.2
  Downloading ipykernel-6.25.1-py3-none-any.whl (154 kB)
     |████████████████████████████████| 154 kB 5.7 MB/s
Collecting matplotlib-inline>=0.1
  Using cached matplotlib_inline-0.1.6-py3-none-any.whl (9.4 kB)
Collecting packaging
  Using cached packaging-23.1-py3-none-any.whl (48 kB)
Collecting comm>=0.1.1
  Downloading comm-0.1.4-py3-none-any.whl (6.6 kB)
Collecting nest-asyncio
  Downloading nest_asyncio-1.5.7-py3-none-any.whl (5.3 kB)
Collecting appnope
  Using cached appnope-0.1.3-py2.py3-none-any.whl (4.4 kB)
Collecting jupyter-core!=5.0.*,>=4.12
  Downloading jupyter_core-5.3.1-py3-none-any.whl (93 kB)
     |████████████████████████████████| 93 kB 5.9 MB/s
Collecting debugpy>=1.6.5
  Downloading debugpy-1.6.7.post1-py2.py3-none-any.whl (4.9 MB)
     |████████████████████████████████| 4.9 MB 272 kB/s
Collecting traitlets>=5.4.0
  Using cached traitlets-5.9.0-py3-none-any.whl (117 kB)
Collecting psutil
  Downloading psutil-5.9.5-cp38-abi3-macosx_11_0_arm64.whl (246 kB)
     |████████████████████████████████| 246 kB 8.7 MB/s
Collecting tornado>=6.1
  Downloading tornado-6.3.2-cp38-abi3-macosx_10_9_universal2.whl (424 kB)
     |████████████████████████████████| 424 kB 8.8 MB/s
Collecting pickleshare
  Using cached pickleshare-0.7.5-py2.py3-none-any.whl (6.9 kB)
Collecting backcall
  Using cached backcall-0.2.0-py2.py3-none-any.whl (11 kB)
Collecting stack-data
  Using cached stack_data-0.6.2-py3-none-any.whl (24 kB)
Collecting decorator
  Using cached decorator-5.1.1-py3-none-any.whl (9.1 kB)
Collecting pygments>=2.4.0
  Downloading Pygments-2.16.1-py3-none-any.whl (1.2 MB)
     |████████████████████████████████| 1.2 MB 16.0 MB/s
Collecting typing-extensions
  Downloading typing_extensions-4.7.1-py3-none-any.whl (33 kB)
Collecting jedi>=0.16
  Downloading jedi-0.19.0-py2.py3-none-any.whl (1.6 MB)
     |████████████████████████████████| 1.6 MB 9.4 MB/s
Collecting prompt-toolkit!=3.0.37,<3.1.0,>=3.0.30
  Downloading prompt_toolkit-3.0.39-py3-none-any.whl (385 kB)
     |████████████████████████████████| 385 kB 8.3 MB/s
Collecting pexpect>4.3
  Using cached pexpect-4.8.0-py2.py3-none-any.whl (59 kB)
Collecting parso<0.9.0,>=0.8.3
  Using cached parso-0.8.3-py2.py3-none-any.whl (100 kB)
Collecting python-dateutil>=2.8.2
  Downloading python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB)
     |████████████████████████████████| 247 kB 8.9 MB/s
Collecting importlib-metadata>=4.8.3
  Downloading importlib_metadata-6.8.0-py3-none-any.whl (22 kB)
Collecting zipp>=0.5
  Downloading zipp-3.16.2-py3-none-any.whl (7.2 kB)
Collecting platformdirs>=2.5
  Downloading platformdirs-3.10.0-py3-none-any.whl (17 kB)
Collecting ptyprocess>=0.5
  Using cached ptyprocess-0.7.0-py2.py3-none-any.whl (13 kB)
Collecting wcwidth
  Using cached wcwidth-0.2.6-py2.py3-none-any.whl (29 kB)
Collecting six>=1.5
  Downloading six-1.16.0-py2.py3-none-any.whl (11 kB)
Collecting pure-eval
  Using cached pure_eval-0.2.2-py3-none-any.whl (11 kB)
Collecting executing>=1.2.0
  Using cached executing-1.2.0-py2.py3-none-any.whl (24 kB)
Collecting asttokens>=2.1.0
  Using cached asttokens-2.2.1-py2.py3-none-any.whl (26 kB)
Installing collected packages: six, zipp, wcwidth, traitlets, pure-eval, ptyprocess, platformdirs, parso, executing, asttokens, typing-extensions, tornado, stack-data, pyzmq, python-dateutil, pygments, prompt-toolkit, pickleshare, pexpect, matplotlib-inline, jupyter-core, jedi, importlib-metadata, decorator, backcall, appnope, psutil, packaging, nest-asyncio, jupyter-client, ipython, debugpy, comm, wurlitzer, ipykernel, cloudpickle, spyder-kernels, psycopg2-binary
Successfully installed appnope-0.1.3 asttokens-2.2.1 backcall-0.2.0 cloudpickle-2.2.1 comm-0.1.4 debugpy-1.6.7.post1 decorator-5.1.1 executing-1.2.0 importlib-metadata-6.8.0 ipykernel-6.25.1 ipython-8.14.0 jedi-0.19.0 jupyter-client-8.3.0 jupyter-core-5.3.1 matplotlib-inline-0.1.6 nest-asyncio-1.5.7 packaging-23.1 parso-0.8.3 pexpect-4.8.0 pickleshare-0.7.5 platformdirs-3.10.0 prompt-toolkit-3.0.39 psutil-5.9.5 psycopg2-binary-2.9.7 ptyprocess-0.7.0 pure-eval-0.2.2 pygments-2.16.1 python-dateutil-2.8.2 pyzmq-25.1.0 six-1.16.0 spyder-kernels-2.4.4 stack-data-0.6.2 tornado-6.3.2 traitlets-5.9.0 typing-extensions-4.7.1 wcwidth-0.2.6 wurlitzer-3.0.3 zipp-3.16.2
WARNING: You are using pip version 21.2.4; however, version 23.2.1 is available.
You should consider upgrading via the '/Users/ryan/new_env/bin/python3 -m pip install --upgrade pip' command.

IPython console traceback
Traceback (most recent call last):
File "/Users/ryan/new_env/lib/python3.9/site‑packages/spyder_kernels/console/__main__.py", line 24, in
start.main()
File "/Users/ryan/new_env/lib/python3.9/site‑packages/spyder_kernels/console/start.py", line 293, in main
from ipykernel.kernelapp import IPKernelApp
File "/Users/ryan/new_env/lib/python3.9/site‑packages/ipykernel/kernelapp.py", line 52, in
from .ipkernel import IPythonKernel
File "/Users/ryan/new_env/lib/python3.9/site‑packages/ipykernel/ipkernel.py", line 20, in
from .comm.comm import BaseComm
File "/Users/ryan/new_env/lib/python3.9/site‑packages/ipykernel/comm/__init__.py", line 3, in
from .comm import Comm
File "/Users/ryan/new_env/lib/python3.9/site‑packages/ipykernel/comm/comm.py", line 15, in
from ipykernel.kernelbase import Kernel
File "/Users/ryan/new_env/lib/python3.9/site‑packages/ipykernel/kernelbase.py", line 38, in
import psutil
File "/Users/ryan/new_env/lib/python3.9/site‑packages/psutil/__init__.py", line 123, in
from . import _psosx as _psplatform
File "/Users/ryan/new_env/lib/python3.9/site‑packages/psutil/_psosx.py", line 13, in
from . import _psposix
File "/Users/ryan/new_env/lib/python3.9/site‑packages/psutil/_psposix.py", line 28, in
from . import _psutil_osx
ImportError: dlopen(/Users/ryan/new_env/lib/python3.9/site‑packages/psutil/_psutil_osx.abi3.so, 0x0002): tried: '/Users/ryan/new_env/lib/python3.9/site‑packages/psutil/_psutil_osx.abi3.so' (mach‑o file, but is an incompatible architecture (have 'arm64', need 'x86_64')), '/System/Volumes/Preboot/Cryptexes/OS/Users/ryan/new_env/lib/python3.9/site‑packages/psutil/_psutil_osx.abi3.so' (no such file), '/Users/ryan/new_env/lib/python3.9/site‑packages/psutil/_psutil_osx.abi3.so' (mach‑o file, but is an incompatible architecture (have 'arm64', need 'x86_64'))
Traceback (most recent call last):
File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/runpy.py", line 197, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/runpy.py", line 87, in _run_code
exec(code, run_globals)
File "/Users/ryan/new_env/lib/python3.9/site‑packages/spyder_kernels/console/__main__.py", line 24, in
start.main()
File "/Users/ryan/new_env/lib/python3.9/site‑packages/spyder_kernels/console/start.py", line 293, in main
from ipykernel.kernelapp import IPKernelApp
File "/Users/ryan/new_env/lib/python3.9/site‑packages/ipykernel/kernelapp.py", line 52, in
from .ipkernel import IPythonKernel
File "/Users/ryan/new_env/lib/python3.9/site‑packages/ipykernel/ipkernel.py", line 20, in
from .comm.comm import BaseComm
File "/Users/ryan/new_env/lib/python3.9/site‑packages/ipykernel/comm/__init__.py", line 3, in
from .comm import Comm
File "/Users/ryan/new_env/lib/python3.9/site‑packages/ipykernel/comm/comm.py", line 15, in
from ipykernel.kernelbase import Kernel
File "/Users/ryan/new_env/lib/python3.9/site‑packages/ipykernel/kernelbase.py", line 38, in
import psutil
File "/Users/ryan/new_env/lib/python3.9/site‑packages/psutil/__init__.py", line 123, in
from . import _psosx as _psplatform
File "/Users/ryan/new_env/lib/python3.9/site‑packages/psutil/_psosx.py", line 13, in
from . import _psposix
File "/Users/ryan/new_env/lib/python3.9/site‑packages/psutil/_psposix.py", line 28, in
from . import _psutil_osx
ImportError: dlopen(/Users/ryan/new_env/lib/python3.9/site‑packages/psutil/_psutil_osx.abi3.so, 0x0002): tried: '/Users/ryan/new_env/lib/python3.9/site‑packages/psutil/_psutil_osx.abi3.so' (mach‑o file, but is an incompatible architecture (have 'arm64', need 'x86_64')), '/System/Volumes/Preboot/Cryptexes/OS/Users/ryan/new_env/lib/python3.9/site‑packages/psutil/_psutil_osx.abi3.so' (no such file), '/Users/ryan/new_env/lib/python3.9/site‑packages/psutil/_psutil_osx.abi3.so' (mach‑o file, but is an incompatible architecture (have 'arm64', need 'x86_64'))

So I couldn't even try to import psycopg2.
However, I was successful with a conda environment.
mamba create -n new_env spyder-kernels psycopg2

I have rosetta installed, so I think there may always be an architecture issue when using the system Python. I think the only solutions will be to either use conda or a brew-installed python; in any case, do not use the system Python.

Apologies for the reply delay.
@mrclary It's almost definitely an environment issue yes. I am not a developer or software eng.. in my role I never really need to worry about breaking applications or analyses on my local machine.. so I don't use well organized environments.  I use spyder to pull data from tons of sources, explore it and rearrange it. I've managed to do that without worrying too much about environments in the past.  The M2 chip is making me regret that.
re: rosetta, I actually installed rosetta as I had read it fixes architecture issues for the M1/2 chips, but I was never prompted to install it ever.
% pgrep -lf oahd
39978 /usr/libexec/rosetta/oahd

also re pip vs pip3.. I have aliased pip3 to pip and python3 to python in my .zsrch file. I should have mentioned that, sorry.
So if I reinstall python via homebrew, and point to that python exectuable in spyder.. do I leave the pip package install location in my PYTHONPATH? What will be the proper way to install psycopg2 after that?

@travisstenerson-concert, thanks for the additional info; that makes things a little more clear.

So if I reinstall python via homebrew, and point to that python exectuable in spyder.. do I leave the pip package install location in my PYTHONPATH? What will be the proper way to install psycopg2 after that?

I would definitely remove the alias to the system Python from your shell startup file. Using the system Python is highly discouraged on macOS. This is independent of Intel vs. Apple silicon. I highly recommend using conda (https://www.anaconda.com/download), but Python from Homebrew will work just fine too.
Regardless of your choice of conda or Homebrew Python, it is best practice to create a Python environment into which you want to install packages. In addition to being able to create multiple environments to serve different purposes, if something goes wrong with the environment it is easy to delete the environment and rebuild it. If you install into the primary Python environment, if something goes wrong your only option may be to reinstall Python; this is much more difficult, and in the case of macOS system Python, may be impossible.
You should remove the pip package install location from your PYTHONPATH. PYTHONPATH is generally reserved for Python packages and modules that you create yourself locally. Packages that you get from somewhere else (conda, PyPi, ...) should be installed into a Python environment in which case they will be found and do not require insertion into PYTHONPATH.
To create a new environment with conda:conda create --name new_env spyder-kernels psycopg2

But there is a lot of online tutorials about how to work with conda.
To create a new environment with Homebrew Python:$ python3 -m venv new_env
$ source new_env/bin/activate
(new_env) $ python -m pip install spyder-kernels psycopg2-binary

But make sure that python3 is the Homebrew Python. This should be the case if you've installed Python from Homebrew and removed the Python aliases in your shell startup file. But if in doubt, just be explicit: /opt/homebrew/bin/python3

I've successfully tested both the conda and Homebrew methods above on my M1 machine.

@mrclary thanks for the detailed instruction
I avoid conda because there are a lot of packages in medical informatics that don't work in conda, so I had to install them with pip. Or at least that was the case in the past. Using conda always made me run into problems with packages. So I prefer the pip installs as they always work.
I will try the python environment via homebrew and stop using the system's python executable.


modified caching test

added logic to test that cached response is specific to request payload.
Removed trailing '\0' from query parameter

No significant performance differences

No significant performance differences

No significant performance differences

Performance differences noted:
Benchmark                                                     cpu_time    real_time
----------------------------------------------------------  ----------  -----------
BM_IsolatedFilter<ClientDeadlineFilter, SendEmptyMetadata>       -7.50        -7.50

Known failures:
Basic Tests Windows: #10107 (c_windows_opt_native.vsprojects/Release/h2_http_proxy_test.exe connectivity)
Bazel Full Build & Tests - Ignored for now
gRPC_interop_pull_requests - #10576


Add support for attributes in VFS (IDFGH-13326)

Is your feature request related to a problem?
Currently virtual file system doesn't provide support for attributes, which is something rather "basic" in a file system.
Describe the solution you'd like.
This doesn't need to be anything fancy, simple ones like hidden, read-only, system would be quite enough.
All file systems that VFS tapps into offer this: FatFS, littlefs, SPIFFS.
Describe alternatives you've considered.
No response
Additional context.
Stumbled into this when making the migration from SPIFFs to littlefs for the flash storage in .NET nanoFramework nanoframework/nf-interpreter#2911.
Already discussed it with the author of littlefs for ESP extension. Please see issue here joltwallet/esp_littlefs#196.
It seems that there is path forward, still I believe it would be nice to have a couple of API to get and set attributes.

@josesimoes what would be the equivalent API you would use on a POSIX platform for this purpose?

I suppose the more suitable one would be chmod, right?
Still, hidden files would be missing because the current implementation lacks support for . started filenames, as stated in the docs.
I would suggest a more generic approach, such as providing setattr and getattr that accepts (or returns) an uint32 and then it's up to the file system to store and retrieve that number. It's up to the application layer to use as it sees fit.

@haberturdeur here they are:
littlefs has lfs_getattr
FatFS has chmod


Issues with in frame authentication for Tableau LWC using OneLogin IDP

We currently have pop-up authentication for the Tableau LWC and want to enable a seamless user authentication experience as our org has OneLogin SSO enabled for both Salesforce and Tableau Server even prior to our efforts of Tableau - Salesforce integration. We followed these two documentation links (this and this) but it was still unsuccessful. Below is the screenshot of the login issue users see in Salesforce:

On the OneLogin side, we chose to allow framing from the following origins: https://acme.lightning.force.com/ and https://tableau.analytics.acme.org. Question: Are both Tableau and Salesforce origins needed to enable in frame auth or only one of them?

On the Tableau side, we followed this instruction:
For Server-Wide SAML
Open a command prompt as an Administrator on the computer where Tableau Server is installed
Execute the following commands:
tsm configuration set –k wgserver.saml.iframed_idp.enabled -v true
tsm pending-changes apply
tsm restart

Questions: Is there anything else you think we might have missed in our configurations? Can you recommend a way to troubleshoot this issue?
Thanks so much.

Hi @anhhhh,
Please find my answers below:
- Are both Tableau and Salesforce origins needed to enable in frame auth or only one of them?
On the OneLogin side, you need to allow framing from the Salesforce org URL only: https://acme.lightning.force.com.
- Is there anything else you think we might have missed in our configurations? Can you recommend a way to troubleshoot this issue?
Multiple options that might resolve the problem:
- Ensure that the user accessing the view has their authentication type set to SAML.
- Could you check if you have iFrame embedding enable at the site level: Go to Settings > Authentification: Select                          Enable an additional authentication method, select SAML, and then select Edit connection and scroll down to embedding options and select Authenticate using an inline frame
Let me know if it is working
Gigi

@illonage just to confirm, below are the steps to be done in Tableau, correct?

Ensure that the user accessing the view has their authentication type set to SAML.
Could you check if you have iFrame embedding enable at the site level: Go to Settings > Authentification: Select Enable an additional authentication method, select SAML, and then select Edit connection and scroll down to embedding options and select Authenticate using an inline frame

For this step "Ensure that the user accessing the view has their authentication type set to SAML.", you can check both on the Salesforce and Tableau side. The second step is only on the Tableau side

@illonage thank you for clarifying! Will check with my team to make changes and circle back.

@illonage For this point, we can confirm that SAML is enabled for all users on both Salesforce & Tableau

Ensure that the user accessing the view has their authentication type set to SAML.

With the next step, we original saw this suggestion on Tableau doc for Tableau Online:

Could you check if you have iFrame embedding enable at the site level: Go to Settings > Authentification: Select Enable an additional authentication method, select SAML, and then select Edit connection and scroll down to embedding options and select Authenticate using an inline frame

The issue is our Tableau admin can't see these options on Tableau Server as there is no Authentication tab for them (see screenshot below)

Is it possible for us to get on a screensharing call with you to look at our Tableau server setup? We're based in both EST and PKT time zones, so it may be challenging to coordinate, but we would really appreciate your support here.

Can you open the developer console in Chrome (looks like Chrome) and check a couple of things. First look in the console output and see what it says. My guess is something like cant be displayed because X-Frame-Options set to deny or sameorigin. If not, I am curious what it says. If says that, it means you have not enabled AllowFraming on OneLogin. If you are getting a different error, then it could be that you setup the safelist incorreclty You need to put the SF domain in the list of places to allow framing. If you look at the response from Ping in the network trace, you should see a header that looks like Content-Security-Policy: frame-ancestors <>. That is where you shold see the SF domain that you are embedding in. Let me know what you see. Thanks!

@LGraber - I did see the error message below among a dozen other ones - not sure how relevant the others are but can show you on a call.

Refused to display 'https://edx.onelogin.com/' in a frame because it set 'X-Frame-Options' to 'deny'

In terms of the OneLogin setup, we added 3 domain origins to the framing protection setting:
https://acme.my.salesforce.com
https://acme.lightning.force.com
https://acme--c.documentforce.com
Is there anything else we're missing?
WRT to the below, I'm not sure I follow your instruction entirely. Can we get on a call and you show me how to?

You need to put the SF domain in the list of places to allow framing. If you look at the response from Ping in the network trace, you should see a header that looks like Content-Security-Policy: frame-ancestors <>. That is where you shold see the SF domain that you are embedding in.

Thank you!

Can you confirm that you checked "Allow framing from the following origins" in Onelogin?

@illonage yes, that is correct.

I just tested with my account, the issue might come from the second check-box. Can you select "Fall back to allowing ALL framing in those browsers (less secure)" and try again please?

@anhhhh Did you get this to work within OneLogin?

@michaeljfitzgerald - not yet, our OneLogin admin is still evaluating the impact of that option "Fall back to allowing ALL framing in those browsers (less secure)". Do you have any references or materials that can speak to the risk of such? thank you!

Yeah, doesn’t seem aligned to security best practices to just fall back to be wide open. Just thinking out loud but it may be because there are more domains than just the 3 you mentioned in allow listing. Maybe you can capture the network traffic to see the switching across all of the domains.
I also recently learned that Salesforce is coming out with enhanced domains on March 31. I’m not sure if that helps with all of the different sub domains but it seems like it may standardize them but not sure.

We contacted OneLogin support and they came back with this answer on why "Allow framing from the following origins" is not working:
"I did some research and found that the "Allow framing from the following origins" setting currently only applies to the Admin console and not the login page.
The settings should apply elsewhere (login page) but support for it has not been implemented consistently, so there is a mix, but practically application to admin seems to be where it is successfully implemented.
So, you may also select "Allow all framing regardless of origin (DEPRECATED, please migrate to origin whitelists below)" and it should work."

@illonage Thank you for the follow-up! Our IT admin is still assessing the option "Allow all framing...". In the meantime, we revert to "Disallow all framing" but the error "edx.onelogin.com refused to connect" still persists. Any advice on how we could get back to the pop-up user auth method? :(
@michaeljfitzgerald -  to your point re: capturing other domains, someone earlier in this thread told me to look at "Ping in the network trace, you should see a header that looks like Content-Security-Policy: frame-ancestors <>". However, I wasn't able to follow that instruction to the T. Do you have a suggestion on how to do so?

I waited till the next business day and still got the "onelogin refused to connect" error. Are there settings from Tableau Server we need to revert as well? Last time our Tableau admin ran these commands:
tsm configuration set –k wgserver.saml.iframed_idp.enabled -v true
tsm pending-changes apply
tsm restart

tsm configuration set –k wgserver.saml.iframed_idp.disabled -v true
would this work to reset Tableau Server?

@anhhhh Try: tsm configuration set –k wgserver.saml.iframed_idp.enabled -v false

Tableau Viz LWC is being Archived
All outstanding PRs and Issues are being addressed and closed. Please migrate to the new Tableau View LWC.
For more information about why the Tableau Viz LWC is being replaced by the Tableau View LWC, please see the README

@anhhhh @ashish413a It's possible that the new Tableau View LWC with seamless authentication will address the login concerns you have. If you run into issues using the new Tableau View LWC with seamless auth, please open a case through Salesforce.


Add "minimum should match" query

Example query: (one two three)@2

Completed in https://github.com/cozydev-pink/lucille/pull/23


How does keyvault authorisation work

It's not clear to me how KeyVault auth works through databricks.  If I select "Manage Principal" = Creator during keyvault setup, For example, if I call a notebook through ADF and that notebook accesses KeyVault, what security context does it run under? Is the executing notebook using ADF managed identity to authorise to keyvault? Does this setting have any bearing in this case?

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

ID: 810a218a-80a5-2da0-b540-26347f9ef908
Version Independent ID: 41c2a12f-99b6-0faa-500b-3e4308cd00de
Content: Secret scopes - Azure Databricks - Workspace
Content Source: databricks/security/secrets/secret-scopes.md
Service: azure-databricks
GitHub Login: @mssaperla
Microsoft Alias: saperla

@ElectricLlama - Thanks for posting the question. I am looking into it, will get back to you shortly.

@mssaperla - Can you please take a look and share your thoughts.

We hope to have this addressed in a related doc update soon.

Thanks. Much appreciated.

Thanks for your dedication to our documentation. Unfortunately, we have been unable to address your issue and apologize for the delayed response. We are closing this issue, but if you feel that it's still a concern, please let us know directly at<EMAIL_ADDRESS>#please-close

#please-close


2 dimensional scrolling widget with scrollBars and pinch/zoom

I too need a 2D scrollable view. I have a large number of Widgets to display, and I want to be able to scroll about to see them all. Some scroll bars are required to see where we are, and I also need to be able to pinch/zoom.
I've done this quite easily in iOS, but I haven't managed to do it in Flutter.
Here is my attempt - it will give an idea of where I'm going. I'm getting an overflow despite my best efforts to size things. I haven't even started on the scrollBars and pinch/zoom.

Please consider asking support questions in one of the other channels listed at http://flutter.io/support .

Please regard this as a feature request. Apologies if my original comment was not clear.
I believe this is the right place?

Sounds like https://stackoverflow.com/questions/45137297/implementing-a-bidirectional-listview-in-flutter?noredirect=1&lq=1

It does... however that thread doesn't have what the poster requested - its only a 1D scroll.
I have since found this "bidirectional_scroll_view" library which nearly does the job. However, this doesn't have pinch/zoom or scrollBars, and the performance and fell doesn't fit in with the other out-of-the-box widgets. I'm not experienced enough with this yet, otherwise I'd have a go.
Shouldn't this be an out-of-the-box Flutter feature?

Pinch/zoom should be demonstrated in Gallery app
#6449 (quite old comment though)

This sounds mostly like a duplicate of https://github.com/flutter/flutter/issues/20175. Feel free to add more details to that issue if anything is missing there or - if you still believe that this issue is totally different - feel free to reopen with additional details.


Add Shape and Scalar type to ChxVMVar

closes #18
Only adds enum and getter to ChxVMVar
Adding abseil for variant type since currently chainer-compiler uses C++14

Making the output of Shape operator chainerx::Shape seems to be a good start point to use this


Bug report: 0.4.23 broke my tables

What happened?
updating to 0.4.23.c made all my tables show 0 results.
going back to 0.4.22 fixed them
trying 0.4.23 (without any letter)  broke them again, so this is the version with the bug
example of broken table (I can provide more examples if needed):
DQL
TABLE WITHOUT ID
  file.link AS "Piano",
  Piano AS "Tipo",
  Sfera,
  Allineamento AS "All."
FROM "PF2/Ambientazione/Geografia" AND (#Cat/Piano OR #Cat/SemiPiano)
SORT
  number(Ordine) ASC

JS
No response
Dataview Version
0.4.23 - 0.4.23c
Obsidian Version
0.13.24
OS
Windows

Update again to 0.4.23d.

Update again to 0.4.23d.

unfortunately not fixed, it broke my tables again

Do you have any errors in the error log?

I am having the same issue. No errors in the error log, but I have managed to boil it down to the capitalization in tags.
LIST FROM #location works while LIST FROM #Location does not.

Aha...

Try 0.4.23f, which fixes a tag casing issue.

0.4.23f

It works! Thanks! :)

Good. I think this was the last major "everything broke" issue...


Performance enhancement for IPP-Get-Jobs

Version: 2.2-feature
CUPS.org User: twaugh.redhat
When handling a IPP-Get-Jobs request that has a first-job-id attribute, it could be much faster to use cupsArrayFind() to find the first job rather than looping through them all one by one.
Patch from Marek Kasik.

[master 9e6d7a0] Improve performance of web interface with large numbers of jobs (Issue #3819)


Some controls have incorrect theming

Describe the bug
Some controls in Download Manager have incorrect theming.
The following controls and forms have incorrect theming and need to be properly themed to match the theme of Download Manager:
Current Downloads:

[x] menuStrip1
[x] progressGridView

[x] FileNameColumn (DataGridViewTextBoxColumn)
[x] ProgressColumn (DataGridViewProgressColumn)
[x] Speed (DataGridViewTextBoxColumn)
[x] UrlColumn (DataGridViewLinkColumn)
[x] TotalReceived (DataGridViewTextBoxColumn)
[x] SizeColumn (DataGridViewTextBoxColumn)

[x] ColumnEditor

Debug Logging:

[x] menuStrip1

Download Form:

[x] trayContextMenu

Steps to reproduce

On a fresh install of windows 11 (with no third party theming modifications) open the Current Downloads window
See inconsistent theming

Expected behaviour
All the theming in Download Manager should be consistent and should always have a dark theme.
There should be no light theme elements.
Additionally, the Mica effect should be used where available.
Download Manager Version
Latest master branch (3595d63)
Windows Version
Windows 11 Pro Insider Preview 22H2 23620.1000
Comments
If possible, there should also be a way to display the Mica effect where available over the DataGridView control, however depending on limitations of winforms this may not be possible but should still be something that is looked into.
Some overriding of the built-in Paint() method may be required to achieve the desired effect.

Fixed in dbaf6bb


Refactoring the transformer plugin using Rust

Why do you need it?
The transformer plugin is being used more frequently, and we hope for better performance from this plugin. The previous implementation in Go was a bit rough (although the performance was still acceptable, being three times that of the same functionality in Spring Cloud Gateway). Additionally, there is the overhead of garbage collection in Go, which significantly decreases the performance for body conversion.
Implementation suggestions
On the basis of being compatible with the existing configuration, it is hoped to implement a new function, which is to perform header/body conversion based on proxywasm.GetProperty(), so as to work with the AI intent plugin to achieve the following functions:

When the AI intent determines it is a time-sensitive issue, add a header to bypass the AI cache logic.
The AI intent plugin identifies the issue type, and the transformer modifies the model parameter in the OpenAI completion request based on different types, thus coordinating with the model-router plugin to route to different models. This can achieve the auto model routing effect of openrouter.

For the second use case, the plugin actually also needs to be able to determine if the parameters in the body meet certain conditions before enabling the conversion. For example, it should only execute the relevant logic when it determines that the model parameter is set to auto.

rust插件是不是不太完善。我尝试跑了example/sse-timing 编译失败。
命令:
make

结果:

rust插件是不是不太完善。我尝试跑了example/sse-timing 编译失败。 命令:
make

结果:

删除Cargo.lock 再重新编译试下

https://github.com/alibaba/higress/pull/1502

可以把Cargo.lock给ignore掉，目前看没有很强的锁版本的诉求

可以把Cargo.lock给ignore掉，目前看没有很强的锁版本的诉求

我感觉可以，我pr里加下


/system/bin/sh: ./data/local/tmp/kisskiss: not executable: 64-bit ELF file

Got error like title.
I'm using real device Google nexus 4
followed steps in readme
What can possibly be wrong?

A nexus 4 is arm (32bit) not arm64/aarch64 - you're pushing the wrong binary to it.


Ensure ROM testing is complete

Review code flows and determine if test is in place

Add line item to SmartSheet for review time

Develop any identified missing tests

Add line item to SmartSheet for development time

Use code coverage data to identify any unexpected gaps

Add line item to SmartSheet for analysis time

Seems we have a big pile of newly labeled "ROM test" issues. These are blockers for this one?

I created the "ROM Test" issues from the "Test Gaps" list at https://github.com/chipsalliance/caliptra-sw/blob/main/rom/dev/doc/test-coverage/test-coverage.md?plain=1#L126
I don't think anyone should tapeout the ROM until all these gaps are addressed.

Now that we have the individual tests identified and issues opened to track them, we no longer need this placeholder. I will close this issue


Zuul did not pass GET request parameter to the microservice

spring-cloud-starter-zuul 1.0.3.RELEASE
zuul-core 1.0.28
It's random error. For about every 100 requests, 2 reqeusts will fail. I enabled the access logs for zuul and my micro service. Below are the logs.
 A project that this happens on?

Closing for lack of feedback.


feat: add optional param encryptValue to notify method

Fixed https://github.com/atsign-foundation/at_client_sdk/issues/1390
- What I did

encrypt notification value only if metadata.isEncrypted is set to true.
ability for caller to not encrypt notification value by setting optional param encryptValue = false in notify method
- How I did it
added optional param encryptValue in notify method. set atkey.metadata.isEncrypted to the optional param value.
changes in notification request transformer to encrypt notification value only if isEncrypted is set to true.
added unit and functional test
- How to verify it
unit and functional tests should pass
ran tests in at_onboarding_cli
https://github.com/atsign-foundation/at_libraries/pull/643
ran test in sshnoports
https://github.com/atsign-foundation/noports/pull/1330

Looks good @murali-shris - can you please add an e2e test also?

sure Gary

Looks good @murali-shris - can you please add an e2e test also?

done


🐛 Fix Russian numbers being detected as Kazakhstan numbers

The problem
currently, Russian numbers are being guessed as Kazakhstani numbers.
it should display the Russian flag for Russian numbers.

since Russia and Kazakhstan share the same country code, the only way to differentiate between them is by using the area code. ( for Kazakhstan it's 600 to 799 ).

Under an agreement with Russia signed on 11 June 2006, Kazakhstan was assigned zone codes 6xx and 7xx (x = 0 to 9) under the unified plan.

What has been done

added Kazakhstan area codes ( starts with either 7 or 6 )

changed the priority order to display Russian as the default country with a +7 country code ( required for the guessCountryByPartialNumber to change the country based on area codes )

Checklist before requesting a review

[x] I have read the contributing doc before submitting this PR.
[x] Commit titles correspond to the convention.
[x] I have performed a self-review of my code.
[x] Tests for the changes have been added (for bug fixes/features).
[ ] Docs have been added / updated (for bug fixes / features).

 THX GOD!!

can you submit these changes?


fix: update github.com/sabhiram/go-gitignore

This change updates the github.com/sabhiram/go-gitignore dependency that was, weirdly enough, giving compatibility errors for not respecting the v1 contract.

Hi @denysvitali, can you please fix the EasyCLI check?

@a-b : sorry, since this contribution was made as part of my work-time, I would have to sign the CLA as a company contributor.
This will definitely take a lot of time due to the bureaucracy involved. I'll get back to you ASAP.

Hi @denysvitali do you have any updates?

Given that this PR had no follow-up, I will proceed to close it. Feel free to reopen and we can revisit this discussion.


HTTP OPTIONS added

Not happy about sending some non-null content, but without it I am getting 500 status :-(

DCO check is failing. Please sign the commit using "git commit -s".

See https://github.com/hyperledger-labs/trusted-compute-framework/blob/master/CONTRIBUTING.md for DCO requirements and format. Sign your commit and git push -f the commit.

You should not close and reopen this PR.    Something like:
Signed-off-by: kubasiemion<EMAIL_ADDRESS>Then do a git push -f to your branch used for this PR:
push -f  https://github.com/kubasiemion/trusted-compute-framework/ kubasiemion:patch-1


Add 2023-05-01 FailoverGroup & ReplicationLinks API to composite v5 tag

ARM (Control Plane) API Specification Update Pull Request

[!TIP]
Overwhelmed by all this guidance? See the Getting help section at the bottom of this PR description.

PR review workflow diagram
Please understand this diagram before proceeding. It explains how to get your PR approved & merged.

Purpose of this PR
What's the purpose of this PR? Check the specific option that applies. This is mandatory!

[ ] New resource provider.
[ ] New API version for an existing resource provider. (If API spec is not defined in TypeSpec, the PR should have been created in adherence to OpenAPI specs PR creation guidance).
[ ] Update existing version for a new feature. (This is applicable only when you are revising a private preview API version.)
[ ] Update existing version to fix OpenAPI spec quality issues in S360.
[ ] Other, please clarify:

edit this with your clarification

Due diligence checklist
To merge this PR, you must go through the following checklist and confirm you understood
and followed the instructions by checking all the boxes:

[ ] I confirm this PR is modifying Azure Resource Manager (ARM) related specifications, and not data plane related specifications.
[ ] I have reviewed following Resource Provider guidelines, including
ARM resource provider contract and
REST guidelines (estimated time: 4 hours).
I understand this is required before I can proceed to the diagram Step 2, "ARM API changes review", for this PR.

Additional information

 Viewing API changes
For convenient view of the API changes made by this PR, refer to the URLs provided in the table
in the Generated ApiView comment added to this PR. You can use ApiView to show API versions diff.

Suppressing failures
If one or multiple validation error/warning suppression(s) is detected in your PR, please follow the
suppressions guide to get approval.

Getting help

First, please carefully read through this PR description, from top to bottom. Please fill out the Purpose of this PR and Due diligence checklist.
To understand what you must do next to merge this PR, see the Next Steps to Merge comment. It will appear within few minutes of submitting this PR and will continue to be up-to-date with current PR state.
For guidance on fixing this PR CI check failures, see the hyperlinks provided in given failure
and https://aka.ms/ci-fix.
For help with ARM review (PR workflow diagram Step 2), see https://aka.ms/azsdk/pr-arm-review.
If the PR CI checks appear to be stuck in queued state, please add a comment with contents /azp run.
This should result in a new comment denoting a PR validation pipeline has started and the checks should be updated after few minutes.
If the help provided by the previous points is not enough, post to https://aka.ms/azsdk/support/specreview-channel and link to this PR.

[like]  Saloni Jain reacted to your message:

From: Ji Wang @.>
Sent: Monday, May 6, 2024 12:32:14 AM
To: Azure/azure-rest-api-specs @.>
Cc: Saloni Jain @.>; Author @.>
Subject: Re: [Azure/azure-rest-api-specs] Add 2023-05-01 FailoverGroup & ReplicationLinks API to composite v5 tag (PR #28963)
@ericshape approved this pull request.
LGTM
can you please post the PR link in SQL API channel as well?
—
Reply to this email directly, view it on GitHubhttps://github.com/Azure/azure-rest-api-specs/pull/28963#pullrequestreview-2039849597, or unsubscribehttps://github.com/notifications/unsubscribe-auth/BCU5EKT6KIRZ7LI3OH4X6XTZA3FQ5AVCNFSM6AAAAABHFCSAUWVHI2DSMVQWIX3LMV43YUDVNRWFEZLROVSXG5CSMV3GSZLXHMZDAMZZHA2DSNJZG4.
You are receiving this because you authored the thread.Message ID: @.***>

/pr RequestMerge


CI: update crun to 0.16

Changes since 0.15:

https://github.com/containers/crun/releases/tag/0.16
https://github.com/containers/crun/releases/tag/0.15.1

LGTM