Building tangram-es with new android studio 2.2 with cmake support

Android studio 2.2 (preview version) has been launched which supports external cmake builds.
http://tools.android.com/tech-docs/external-c-builds
http://android-developers.blogspot.com/2016/05/android-studio-22-preview-new-ui.html
So I think it is possible now to build tangram-es inside android studio, please help me that how can I build and get access to native side of tangram-es inside android studio.

Hi Faraz,
You're correct! In theory, the CMake build support in Android Studio 2.2 should enable us to run native Android builds entirely from Android Studio. It's not clear from the release notes that the current releases support all the options that we'll need to use in CMake, but I can give it a try in a branch and let you know whether it works. We'll probably want to use this build process by default once this feature is in a stable release of Android Studio.

Hi @blair1618,
I have been trying to build tangram-es inside android studio 2.2 using cmake as externalNativeBuild support, and I am stuck. Below are the errors i got in android-studio, please review and help. I am using same cmakeLists.txt provided by you.
External Native Build Issues
Error while executing '/home/supporttech/Android/Sdk/cmake/bin/cmake' with arguments {-H/home/supporttech/tangramTest -B/home/supporttech/tangramTest/android/tangram/externalNativeBuild/cmake/debug/armeabi -GAndroid Gradle - Ninja -DANDROID_ABI=armeabi -DANDROID_NDK=/home/supporttech/Android/android-ndk-r10e -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/home/supporttech/tangramTest/android/tangram/build/intermediates/cmake/debug/obj/armeabi -DCMAKE_BUILD_TYPE=Debug -DCMAKE_MAKE_PROGRAM=/home/supporttech/Android/Sdk/cmake/bin/ninja -DCMAKE_TOOLCHAIN_FILE=/home/supporttech/Android/Sdk/cmake/android.toolchain.cmake -DANDROID_NATIVE_API_LEVEL=android-23}
-- Adjusting Android API level 'android-23' to 'android-21'
-- No target defined (give as parameter -DPLATFORM_TARGET=platform_name).
-- Targets available: darwin;ios;android;raspberrypi;linux.
-- Will use your OS: android.
-- Including android dependent cmake file : /home/supporttech/tangramTest/toolchains/android.cmake
-- Configuring incomplete, errors occurred!
See also "/home/supporttech/tangramTest/android/tangram/externalNativeBuild/cmake/debug/armeabi/CMakeFiles/CMakeOutput.log".
CMake Error at toolchains/android.cmake:4 (message):
Provide ndk make, located in <NDK_ROOT>/prebuilt//bin/,
-DMAKE_BUILD_TOOL=<NDK_PREBUILT_BIN>/make
Call Stack (most recent call first):
CMakeLists.txt:65 (include)
Error:executing external native build for cmake /home/supporttech/tangramTest/CMakeLists.txt
Error while executing '/home/supporttech/Android/Sdk/cmake/bin/cmake' with arguments {-H/home/supporttech/tangramTest -B/home/supporttech/tangramTest/android/tangram/externalNativeBuild/cmake/release/armeabi -GAndroid Gradle - Ninja -DANDROID_ABI=armeabi -DANDROID_NDK=/home/supporttech/Android/android-ndk-r10e -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/home/supporttech/tangramTest/android/tangram/build/intermediates/cmake/release/obj/armeabi -DCMAKE_BUILD_TYPE=Release -DCMAKE_MAKE_PROGRAM=/home/supporttech/Android/Sdk/cmake/bin/ninja -DCMAKE_TOOLCHAIN_FILE=/home/supporttech/Android/Sdk/cmake/android.toolchain.cmake -DANDROID_NATIVE_API_LEVEL=android-23}
-- Adjusting Android API level 'android-23' to 'android-21'
-- No target defined (give as parameter -DPLATFORM_TARGET=platform_name).
-- Targets available: darwin;ios;android;raspberrypi;linux.
-- Will use your OS: android.
-- Including android dependent cmake file : /home/supporttech/tangramTest/toolchains/android.cmake
-- Configuring incomplete, errors occurred!
See also "/home/supporttech/tangramTest/android/tangram/externalNativeBuild/cmake/release/armeabi/CMakeFiles/CMakeOutput.log".
CMake Error at toolchains/android.cmake:4 (message):
Provide ndk make, located in <NDK_ROOT>/prebuilt//bin/,
-DMAKE_BUILD_TOOL=<NDK_PREBUILT_BIN>/make
Call Stack (most recent call first):
CMakeLists.txt:65 (include)
Error:executing external native build for cmake /home/supporttech/tangramTest/CMakeLists.txt

Hi @blair1618
I resolved those errors and now i am getting following errors:
Error:Execution failed for task ':tangram:externalNativeBuildRelease'.

com.android.ide.common.process.ProcessException: Error while executing '/home/supporttech/Android/Sdk/cmake/bin/cmake' with arguments {--build /home/supporttech/tangramTest2/android/tangram/externalNativeBuild/cmake/release/armeabi --target alfons}
ninja: error: build.ninja:488: bad $-escape (literal $ must be written as $$)
Error:error: build.ninja:488: bad $-escape (literal $ must be written as $$)

I didn't find any help on this.

After replacing $(MAKE) by $$(MAKE) in build.ninja file it starts building process but stops with the following error:
Error:Execution failed for task ':tangram:externalNativeBuildRelease'.

com.android.ide.common.process.ProcessException: Error while executing '/home/supporttech/Android/Sdk/cmake/bin/cmake' with arguments {--build /home/supporttech/tangramTest2/android/tangram/externalNativeBuild/cmake/release/armeabi --target alfons}
[1/207] Building C object external/alfons/deps/harfbuzz-icu-freetype/CMakeFiles/icucommon.dir/icu/common/ubidiwrt.c.o
[2/207] Building C object external/alfons/deps/harfbuzz-icu-freetype/CMakeFiles/icucommon.dir/icu/common/ucnv_u7.c.o
[3/207] Building C object external/alfons/deps/harfbuzz-icu-freetype/CMakeFiles/icucommon.dir/icu/common/ucnv_u8.c.o
[4/207] Building C object external/alfons/deps/harfbuzz-icu-freetype/CMakeFiles/icucommon.dir/icu/common/ucnvdisp.c.o
[5/207] Building C object external/alfons/deps/harfbuzz-icu-freetype/CMakeFiles/icucommon.dir/icu/common/ucnvhz.c.o
[6/207] Building C object external/alfons/deps/harfbuzz-icu-freetype/CMakeFiles/icucommon.dir/icu/common/ucnvisci.c.o
[7/207] Building C object external/alfons/deps/harfbuzz-icu-freetype/CMakeFiles/icucommon.dir/icu/common/ucnvlat1.c.o
[8/207] Building CXX object external/alfons/deps/harfbuzz-icu-freetype/CMakeFiles/icucommon.dir/icu/common/ustrtrns.cpp.o
FAILED: /home/supporttech/Android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc  -DANDROID -DPIC -DPLATFORM_ANDROID -DU_COMMON_IMPLEMENTATION -DU_STATIC_IMPLEMENTATION=1 -isystem /home/supporttech/Android/android-ndk-r10e/platforms/android-21/arch-arm/usr/include -isystem /home/supporttech/Android/android-ndk-r10e/sources/cxx-stl/gnu-libstdc++/4.9/include -isystem /home/supporttech/Android/android-ndk-r10e/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi/include -isystem /home/supporttech/Android/android-ndk-r10e/sources/cxx-stl/gnu-libstdc++/4.9/include/backward -I../../../../../../external/alfons/deps/harfbuzz-icu-freetype/icu/common -I../../../../../../external/alfons/deps/harfbuzz-icu-freetype/icu/stubdata -I../../../../../../external/alfons/deps/harfbuzz-icu-freetype/icu/common/unicode -fexceptions -Wno-psabi --sysroot=/home/supporttech/Android/android-ndk-r10e/platforms/android-21/arch-arm -funwind-tables -finline-limit=64 -fsigned-char -no-canonical-prefixes -march=armv5te -mtune=xscale -msoft-float -fdata-sections -ffunction-sections -Wa,--noexecstack  -mthumb -fomit-frame-pointer -fno-strict-aliasing -O3 -DNDEBUG -fPIC -MMD -MT external/alfons/deps/harfbuzz-icu-freetype/CMakeFiles/icucommon.dir/icu/common/ubidiwrt.c.o -MF external/alfons/deps/harfbuzz-icu-freetype/CMakeFiles/icucommon.dir/icu/common/ubidiwrt.c.o.d -o external/alfons/deps/harfbuzz-icu-freetype/CMakeFiles/icucommon.dir/icu/common/ubidiwrt.c.o   -c /home/supporttech/tangramTest2/external/alfons/deps/harfbuzz-icu-freetype/icu/common/ubidiwrt.c
/home/supporttech/tangramTest2/external/alfons/deps/harfbuzz-icu-freetype/icu/common/ubidiwrt.c: In function 'ubidi_writeReordered_52':
/home/supporttech/tangramTest2/external/alfons/deps/harfbuzz-icu-freetype/icu/common/ubidiwrt.c:643:1: internal compiler error: in patch_jump_insn, at cfgrtl.c:1275
}
^
Please submit a full bug report,
with preprocessed source if appropriate.
See http://source.android.com/source/report-bugs.html for instructions.
ninja: build stopped: subcommand failed.

Is it a problem with alfons submodule, or am I doing it wrong?

Hi @FarazKhalidZaki, you're venturing into new territory here! Do you have a fork of tangram-es with these changes so that I might see exactly what your code is doing? Do you know which Android Studio preview version you're using? It's hard to say exactly what the problem is without seeing the code. I can give more feedback once I find some time to try this process myself, but for now I have 2 thoughts:

Modifying the ninja file is probably not the right approach - those files are only intended to be written and read by programs.
The Android Studio CMake integration is definitely still a beta product, things might just be broken 😄

Hi @blair1618, you are right it's still a beta product. :)
I am using android studio 2.2 preview 4 on ubuntu 14.04.1, NDK version I am using is r10e. Below is the build.gradle script I've used to build tangram-es with android-studio cmake support.
android {
  compileSdkVersion 23

  buildToolsVersion "21.1.2"

  defaultConfig {
    minSdkVersion 15
    targetSdkVersion 23
    versionCode buildVersionCode()
    versionName VERSION_NAME
    cmake{
      abiFilters 'armeabi-v7a'
      arguments "-DCMAKE_TOOLCHAIN=/home/supporttech/Android/android-ndk-r10e/toolchains/arm-linux-androideabi-clang3.6",
                "-DMAKE_BUILD_TOOL=/home/supporttech/Android/android-ndk-r10e/prebuilt/linux-x86_64/bin/make",
                "-DLIBRARY_OUTPUT_PATH_ROOT=/home/supporttech/tangram-es/android/tangram",
                "-DANDROID_STL=gnustl_static"
    }
  }
  externalNativeBuild {
    cmake {
      path "/home/supporttech/tangram-es/CMakeLists.txt"
    }
  }
  sourceSets.main {
    manifest.srcFile 'AndroidManifest.xml'
    java.srcDirs = ['src']
    jni.srcDirs = []
    jniLibs.srcDirs = ['libs']
  }
}

I think I messed up all the things :smile:
I was facing many problem due to cmake cache. Now I've cleaned the project and made some changes in cmake arguments in build.gradle following the "MakeFile" provided with tangram-es.
cmake{
      abiFilters 'armeabi-v7a'
      arguments "-DPLATFORM_TARGET=android",
              "-DCMAKE_TOOLCHAIN_FILE=/home/supporttech/tangram-es11/toolchains/android.toolchain.cmake",
              "-DCMAKE_TOOLCHAIN_NAME=arm-linux-androideabi-clang3.6",
              "-DMAKE_BUILD_TOOL=/home/supporttech/Android/android-ndk-r10e/prebuilt/darwin-x86_64/bin/make",
              "-DANDROID_STL=c++_static",
              "-DLIBRARY_OUTPUT_PATH_ROOT=/home/supporttech/tangram-es11/android/tangram",
	          "-DCMAKE_EXPORT_COMPILE_COMMANDS=TRUE"
    }

Now I am getting this error:
The LOCATION property may not be read from target "tangram".  Use the
target name directly with add_custom_command, or use the generator
CMake Error at toolchains/android.gdb.cmake:83 (get_property):
expression $<TARGET_FILE>, as appropriate.
Here is the log:

External Native Build Issues
Error while executing '/home/supporttech/Android/Sdk/cmake/bin/cmake' with arguments {-H/home/supporttech/tangram-es11 -B/home/supporttech/tangram-es11/android/tangram/externalNativeBuild/cmake/debug/armeabi-v7a -GAndroid Gradle - Ninja -DANDROID_ABI=armeabi-v7a -DANDROID_NDK=/home/supporttech/Android/android-ndk-r10e -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/home/supporttech/tangram-es11/android/tangram/build/intermediates/cmake/debug/obj/armeabi-v7a -DCMAKE_BUILD_TYPE=Debug -DCMAKE_MAKE_PROGRAM=/home/supporttech/Android/Sdk/cmake/bin/ninja -DCMAKE_TOOLCHAIN_FILE=/home/supporttech/Android/Sdk/cmake/android.toolchain.cmake -DANDROID_NATIVE_API_LEVEL=android-23 -DPLATFORM_TARGET=android -DCMAKE_TOOLCHAIN_FILE=/home/supporttech/tangram-es11/toolchains/android.toolchain.cmake -DCMAKE_TOOLCHAIN_NAME=arm-linux-androideabi-clang3.6 -DMAKE_BUILD_TOOL=/home/supporttech/Android/android-ndk-r10e/prebuilt/darwin-x86_64/bin/make -DANDROID_STL=c++_static -DLIBRARY_OUTPUT_PATH_ROOT=/home/supporttech/tangram-es11/android/tangram -DCMAKE_EXPORT_COMPILE_COMMANDS=TRUE}
-- Adjusting Android API level 'android-23' to 'android-21'
-- Platform chosen : ANDROID
-- Including android dependent cmake file : /home/supporttech/tangram-es11/toolchains/android.cmake
-- Will use make prebuilt tool located at : /home/supporttech/Android/android-ndk-r10e/prebuilt/darwin-x86_64/bin/make
-- Performing Test FLAG_WEXTRA
-- Performing Test FLAG_WEXTRA - Success
-- Looking for GLM
-- GLM include /home/supporttech/tangram-es11/external/../core/include/glm
-- Creating directory /home/supporttech/tangram-es11/android/tangram/externalNativeBuild/cmake/debug/armeabi-v7a/external/alfons/deps/harfbuzz-icu-freetype/freetype-2.6/include/freetype/config
-- Creating file /home/supporttech/tangram-es11/android/tangram/externalNativeBuild/cmake/debug/armeabi-v7a/external/alfons/deps/harfbuzz-icu-freetype/freetype-2.6/include/freetype/config/ftconfig.h
-- Looking for unistd.h
-- Looking for unistd.h - found
-- Looking for fcntl.h
-- Looking for fcntl.h - found
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Creating file /home/supporttech/tangram-es11/android/tangram/externalNativeBuild/cmake/debug/armeabi-v7a/external/alfons/deps/harfbuzz-icu-freetype/freetype-2.6/include/freetype/config/ftoption.h
-- harfbuzzfreetypeicucommon
-- ANDROID_LIB_DIR >>> /home/supporttech/tangram-es11/android/tangram
-- TARGET_LOCATION >>>
-- Configuring incomplete, errors occurred!
See also "/home/supporttech/tangram-es11/android/tangram/externalNativeBuild/cmake/debug/armeabi-v7a/CMakeFiles/CMakeOutput.log".
CMake Error at toolchains/android.gdb.cmake:83 (get_property):
The LOCATION property may not be read from target "tangram".  Use the
target name directly with add_custom_command, or use the generator
expression $<TARGET_FILE>, as appropriate.
Call Stack (most recent call first):
toolchains/android.cmake:63 (android_ndk_gdb_debuggable)
CMakeLists.txt:65 (include)
Error:executing external native build for cmake /home/supporttech/tangram-es11/CMakeLists.txt

Can you try removing those line from your configuration and see how it goes?
https://github.com/tangrams/tangram-es/blob/master/toolchains/android.cmake#L33_L34

hi @blair1618 I think you are right "android-studio 2.2 is still a beta product" :smile:
I got fed up with the unusual behavior of new android-studio 2.2 externalbuildTool :( . I think we should wait for stable release.
And one more thing, please tell me what IDE your team use for the development purpose of tangram-es. I want to contribute in rendering complex roof shapes and also shadow mapping. I have implemented custom roof shape rendering on tangram web, now i want to implement this functionality on tangram-es.
Here is an example.

Custom roof shapes are a very interesting domain, are you thinking of the roof shape tags in OSM? (http://taginfo.openstreetmap.org/keys/roof:shape#values)
CMake allows us to generate build files for many different IDEs and tools, so our team doesn't use a consistent build environment. Personally, I would say CLion works particularly well for our project, but I also use XCode and command line tools.

Thanks @blair1618 , I've setup the environment (CLion) on ubuntu and its working fine. :)

Combined CPP/Java Android builds in Gradle are now working in a branch: https://github.com/tangrams/tangram-es/tree/android-cmake. This currently requires installing Android Studio 2.2 RC 1 and updating the Android SDK to include 'ndk-bundle' and 'cmake'.
I would like to submit this as a PR but I'm unable to make these builds work on our CI server: https://travis-ci.org/tangrams/tangram-es/jobs/158072483
There doesn't yet seem to be a way to update the Android SDK to include 'ndk-bundle' and 'cmake' from command line - you have to go through the Android Studio GUI. Hopefully this will be corrected when Studio 2.2 is officially released and then we can make this our default build process.

Its giving me the same error with ninja.build files
Error:error: build.ninja:531: bad $-escape (literal $ must be written as $$)

The 'android-cmake' branch has an updated version of the yaml-cpp submodule which includes a fix for that error (the guilty code is removed in this commit https://github.com/tangrams/yaml-cpp/commit/f287811d4db63f2247cb21a013ba1cc90a57eda8). Try updating your submodules.

Hi @blair1618 I am able to build tangram-es inside Android Studio, but there is a linking problem with libtangram.so. Here is the log:
09-20 15:16:39.944 14564-14564/com.mapzen.tangram.android E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.mapzen.tangram.android, PID: 14564
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.mapzen.tangram.android-2/base.apk"],nativeLibraryDirectories=[/data/app/com.mapzen.tangram.android-2/lib/arm, /vendor/lib, /system/lib]]] couldn't find "libtangram.so"

I see this behavior too when I try to run the Android build on a new machine. Not sure what the issue is. But Android Studio 2.2 is released now! So we'll definitely move forward with this build system change soon.

Resolved by https://github.com/tangrams/tangram-es/pull/1152


Reset() don't work

What is the issue you are having?
Reset shards no longer works
What is BigCache doing that it shouldn't?
Empty the shards.
Using stats method i can see the how many items are in cache
cache, initErr := bigcache.NewBigCache(config)
cache.Stats()

Output: {"hits":1222,"misses":2,"delete_hits":0,"delete_misses":0,"collisions":0}

but when i run the method Reset to flush the shards, they are not flushed / empty, , in previously versions this method works correctly.
cache, initErr := bigcache.NewBigCache(config)
cache.Reset()

After i run the Reset() the stats are se same
Output: {"hits":1222,"misses":2,"delete_hits":0,"delete_misses":0,"collisions":0}
Environment:

Version (git sha or release<EMAIL_ADDRESS>OS (e.g. from /etc/os-release or winver.exe):  Debian GNU/Linux 10 (buster)
go version: 1.18.3

Hi, I created following tests and it looks like stats were never cleared. What version do you mean in this sentence:

in previously versions this method works correctly

package bigcache

import (
	"fmt"
	"testing"
	"time"
)

func TestCacheReset322(t *testing.T) {
	t.Parallel()

	// given
	cache, _ := NewBigCache(Config{
		Shards:             8,
		LifeWindow:         time.Second,
		MaxEntriesInWindow: 1,
		MaxEntrySize:       256,
	})
	keys := 1337

	// when
	for i := 0; i < keys; i++ {
		cache.Set(fmt.Sprintf("key%d", i), []byte("value"))
		cache.Get(fmt.Sprintf("key%d", i))
	}

	// then
	if int64(keys) != cache.Stats().Hits {
		t.Error("Stats not set")
	}

	// and when
	cache.Reset()

	// then
	if int64(0) != cache.Stats().Hits {
		t.Error("Stats not cleared")
	}
}

Hello, I think this problem is because Reset() did not reset the cacheShard.Stats
func (c *BigCache) Reset() error {
	for _, shard := range c.shards {
		shard.reset(c.config)
	}
	return nil
}

func (s *cacheShard) reset(config Config) {
	s.lock.Lock()
	s.hashmap = make(map[uint64]uint32, config.initialShardSize())
	s.entryBuffer = make([]byte, config.MaxEntrySize+headersSizeInBytes)
	s.entries.Reset()
	s.lock.Unlock()
}


[FEATURE] Use unique qualifier for root account CDK bootstrap

Required Basic Info
To properly assess the enhancement request, we require information on the version of the Accelerator you based this request upon:

Accelerator Version:  v1.3.8+

Is your feature request related to a problem? Please describe.
The ASEA deploys the CDK bootstrap using the default qualifier (hnb659fds), which causes collisions with subsequent default bootstrap deployments, such as for CDK v2.
See usage at https://github.com/aws-samples/aws-secure-environment-accelerator/search?q=hnb659fds.
Describe the solution you'd like
Specify a unique and distinctive qualifier for the ASEA's bootstrap.
Describe alternatives you've considered
Avoiding the use of the default qualifier in other bootstraps deployed in an ASEA environment.
Additional context
See https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html for additional background.

Thanks for the feedback!

When we moved off the default qualifier in all other accounts in the Organization, we made the design decision (rightly or wrongly) not to do so in the root account/home region based on the extra implementation complexity, required effort and the fact we never want customers in the root account anyway;
Customers will need to either use your work around and specify an alternative qualifier or leverage the ASEA CDK stack and version;
The very small set of skilled users allowed in the root account, and only on an extremely limited basis, must specify a qualifier to use a later CDK version in the root account home region;
This has no impact to all CDK users throughout the rest of the organization, in any sub-accounts, or in other regions in the root account.


User impersonation and vlan smart searching

These 4 commits reintroduce user impersonation for the nipap command line and add the possibility to smart search on the vlan field. Also includes a search command for the nipap tool in order to smart search with the command line.

I've added #684 for the part about CLI output, so essentially, there are three parts to this:

[ ] User impersonation (#540)
[ ] CLI output (#684)
[ ] Advanced search queries (#531)

And with the merge of PR #823, which closes #531, we should now fulfil all the requirements outlined in this PR, though with somewhat different solutions so I'm closing this.

That is, with the features of #531, you can now search for a specific VLAN using "vlan=100". It's the exactly the @ operator, but I think it's much better, since with this you can also do "vlan >= 100 and vlan < 200" to get all VLANs from 100 to 200, for example.


[jsfm] new mechanism for build frameworks

Now we can use npm run build:config to generate html5/runtime/frameworks.js (this file has been ignored by git now).
This command will find all the framework-*.js files in html5/runtime/ folder and register each of them to the generated file.
// built by npm run build:config

import * as Weex from '../default'
import * as Rx from 'weex-rx-framework'

export default {
  Weex,
  Rx
}

You can also run it like npm run build:config -- weex,rx to filter which frameworks we will include.
Be default the generated file html5/runtime/frameworks.js not existed but when we run npm run build:native,  npm run build:browser or  npm run build it will init once if the file hasn't been built.

Another example of vue is here: https://github.com/Jinjiang/weex/tree/jsfm-feature-build-vue/html5/runtime

The html5/runtime/frameworks.js file could output to another directory like config.


refactor: rejig hyper-connect usage of fetch

There seems to be a new issue when using hyper-connect on Vercel, more specifically passing a Request object to undici, which is what hyper-connect does.
See https://github.com/vercel/vercel/issues/9690 for background
While that issue is being addressed, I am going to have to update hyper-connect to -- not do that. I think I can take the Request object and pull off it's parts and then pass it to fetch

@kaloyanBozhkov I see your comment on the Vercel issue I filed. It's a different error than what we were seeing, but could very well be caused by the same underlying thing: Vercel overwriting undici with their own"version", and their "version" not supporting how you're using it.
I had to dig into undici and Vercel source code to verify that Vercel actually was doing this. Unfortunately, because this is a module resolution hook put in place by Vercel, and they aren't expressing any interest in solving this anytime soon, we had to change our code to use undici differently, in a way that Vercel's "version" was okay with.
I can't speak to your specific issue, other than suggest that you follow the same approach: dig into your code and your dependency code ie. @trpc/client and see if you can figure out a way to change your usage of undici until you can get it working on Vercel. It may require asking maintainers of @trpc/client for help. Then continue to comment on https://github.com/vercel/vercel/issues/9690 that this is an issue for you. If enough folks comment on the issue, maybe Vercel will address it.


Adding and Modifying Twig Variables in Plugins

First off:

I've been on GitHub for a while, but I haven't really contributed to anything before now. Sorry if I'm putting this question in the wrong place. I was going to throw this in Stack Overflow but have no idea how to categorize this question.
I'm currently in the process of developing my skills past the "Let's read the docs and build stuff like the instructions say" stage and towards the "let's rip the framework code apart and figure out how it works" stage. So bear with me.

okay, anyway:
I'm trying to update the jbleuzen/Pico-Private plugin to be compatible with Pico 1.0 and am running into a problem. Basically the plugin adds some twig vars like login_error, username, authed (to determine if the user is logged in), etc. It does this by editing the $twig_vars array in the before_render function. In Pico 1.0 this causes a "Fatal error: Cannot use object of type Twig_Environment as array" error. So, that array can't be modified anymore?
Is there any way to add Twig variables beyond those specified in \Pico::getTwigVariables? This plugin needs to make these variables available to the template. I'd like to try to follow the existing conventions and not just throw new variables in the Pico core.
Thanks so much for the contributions everyone has made to this project. Pico is awesome and I'm excited to finally give back a little to this project.

edit: I made a commit to reproduce the error in a branch here: bluesalt-labs/Pico-Private

First of all: We always love to hear that someone wants to contribute, so, welcome! :smiley:
At this point we use GitHub Issues for quite everything, including this kind of question, so you're completely right here. :+1:
We've changed the parameter order with Pico 1.0. The deprecated before_render event receives the parameters before_render(&$twig_vars, &$twig, &$template), however, the new onPageRendering event receives onPageRendering(Twig_Environment $twig, array &$twigVariables, &$templateName). Note that $twig_vars and $twig have been interchanged.

Wow, this was a long time ago. But I just wanted to thank you! I was able to get the PicoPrivate plugin working for Pico 1.0 :)


List of apps isn't loading

I can run the app and it loads up the buttons on the touch screen. After I click on one of them I can see that it is selected but it just stays like and doesn't load any list on the screen, it then freezes so I can no longer press the home button in the corner to return to the launcher.
I am using tubehax.

Same problem here
Tubehax as well

Same problem here
Tubehax as well

Ironhax here, same issue.

For me, the buttons don't even show up (see new issue), TubeHax here, on my 3DS XL

Same here TubeHax & IronHax Launch 3DS

Same

I'm nearly certain the root cause for this issue is that I've broken the backing server that hosted homebrew applications. However, my deepest apologies for this, but I've simply not had the time to maintain this project. If I ever work on it again, I'll probably re-do everything from scratch, but I don't know when that will happen.
Sorry guys! If I come back to this you'll know, I'll update the readme and do an announcement.


Update components contrib to v1.0.0-rc1

Description
Update components contrib to v1.0.0-rc1
Issue reference
We strive to have all PR being opened based on an issue, where the problem or feature have been discussed prior to implementation.
Please reference the issue this PR will close: End Game
Checklist
Please make sure you've  completed the relevant tasks for this PR, out of the following list:

[X] Code compiles correctly
[ ] Created/updated tests
[ ] Unit tests passing
[ ] End-to-end tests passing
[ ] Extended the documentation / Created issue in the https://github.com/dapr/docs/ repo: dapr/docs#[issue number]
[ ] Specification has been updated / Created issue in the https://github.com/dapr/docs/ repo: dapr/docs#[issue number]
[ ] Provided sample for the feature / Created issue in the https://github.com/dapr/docs/ repo: dapr/docs#[issue number]

/ok-to-test


TextClick_V2.Ips vs Text2308 - same lines

Hello, I am translating TextClick_V2 and  i see lot of same text in TextClick_V2 as in Text2308. I feel like im translating same things twice...
Should i only focus on TextClick_V2 ? Is it like new version for future update or something? Do i translate both?
Line 54: Text2308: 《我与主人的爱情故事》写好了！诶？不行吗
Line 52: TextClickV2 《我与主人的故事》写好了！诶？不行吗

Both, Text2308 is TextClick first edition  (focus on functional chat),
TextClick_V2 add more click text (focus on daily chat),
in this case, you can remove Line 54: Text2308: 《我与主人的爱情故事》写好了！诶？不行吗 in Text2308
This chat content has been optimized because I do not want to clarify the relationship between pets and their owners (Wife/Daughter)

So both files text2308 and texclickV2 are relevant for translation?
Should i polish further Text2308 or just focus on TextClick_V2?

All files are related to translation. I won't put translation files that haven't expired into the game.
However, there are indeed some translated content that may be discarded or no longer used in the game. In the future, I will take the time to reorganize the translated content.

OK I will just translate everything in TextClick_v2, Text2308, Text2307, TextSelect_v2,  maybe later Text 2309.
You can delete stuff later.  Thank you for clarification.

Thank you for translation

I am still not sure , If you should take my translation as official translation it will be better than the machine one though.


[MINOR][DOCS] Note that hudi.metadata-enabled in Trino is defunct

hudi.metadata-enabled has been removed in Trino 426 (https://github.com/trinodb/trino/pull/18840) because it has been unused since Trino 419 (https://github.com/trinodb/trino/pull/17392). There is currently no support for reading from metadata tables in Trino.

cc @codope for the reviewing ~


[Bug]: consistent operator pending mode has no effect for me

Make sure you have done the following

[X] I have updated to the latest version of the plugin.
[X] I have read the README.
[X] If the issue is about cw or dw, I have read the note on w in operator pending mode.

Bug Description
Whether I set consistentOperatorPending to true or false, I don't see any change in the behavior of motions.
My configuration is as follows,
{
	"chrisgrieser/nvim-spider",
	lazy = false,
	opts = {
		consistentOperatorPending = true,
	},
	config = function(_, opts)
		vim.keymap.set({ "n", "o", "x" }, "w", "<cmd>lua require('spider').motion('w')<CR>", { desc = "Spider-w" })
		vim.keymap.set({ "n", "o", "x" }, "e", "<cmd>lua require('spider').motion('e')<CR>", { desc = "Spider-e" })
		vim.keymap.set({ "n", "o", "x" }, "b", "<cmd>lua require('spider').motion('b')<CR>", { desc = "Spider-b" })
		-- See: https://github.com/chrisgrieser/nvim-spider#operator-pending-mode-the-case-of-cw
		vim.keymap.set("n", "cw", "ce", { remap = true })
	end,
},

Reproduction & Sample Text
operation used: dw
before:
foo bar
--  ^
baz

after:
foo
   ^
--
baz

What I expected as per what I understood from the README,
foo baz
    ^

neovim version
NVIM v0.10.0
Build type: Release
LuaJIT 2.1.1713484068

Special Settings
No response

Turns out Lazy is behaving weirdly here. Hasn't happened with me for other plugins, maybe it has something do with lazy = false.
I changed the config as follows and now it works as expected,
{
	"chrisgrieser/nvim-spider",
	lazy = false,
	-- opts = {
	-- 	consistentOperatorPending = true,
	-- },
	config = function()
		require("spider").setup({
			consistentOperatorPending = true,
		})
		vim.keymap.set({ "n", "o", "x" }, "w", "<cmd>lua require('spider').motion('w')<CR>", { desc = "Spider-w" })
		vim.keymap.set({ "n", "o", "x" }, "e", "<cmd>lua require('spider').motion('e')<CR>", { desc = "Spider-e" })
		vim.keymap.set({ "n", "o", "x" }, "b", "<cmd>lua require('spider').motion('b')<CR>", { desc = "Spider-b" })
		-- See: https://github.com/chrisgrieser/nvim-spider#operator-pending-mode-the-case-of-cw
		vim.keymap.set("n", "cw", "ce", { remap = true })
	end,
},

That's cause opts it's overridden by config. Usually you shouldn't use both of them at the same time. See the lazy.nvim readme


s3s-fs server giving error The AWS Access Key Id you provided does not exist in our records

I am not sure what is wrong, I have my client setup
s3 = boto3.client('s3', aws_access_key_id="asdf", aws_secret_access_key="asdf", endpoint_url='http://localhost:8014')

I also have the creds in my ~/.aws/credentias
[default]
aws_access_key_id=asdf
aws_secret_access_key=asdf

and even exported the env vars
and starting the server
target/debug/s3s-fs --access-key asdf --secret-key asdf ~/dev/s3

And getting the error
ERROR:root:An error occurred (InvalidAccessKeyId) when calling the CreateBucket operation: The AWS Access Key Id you provided does not exist in our records.
{'ResponseMetadata': {'HTTPStatusCode': 200, 'HTTPHeaders': {'content-type': 'application/xml', 'content-length': '193', 'date': 'Thu, 11 Jan 2024 21:36:22 GMT'}, 'RetryAttempts': 0}, 'Buckets': [{'Name': 'test', 'CreationDate': datetime.datetime(2024, 1, 11, 20, 40, 5, 24000, tzinfo=tzutc())}]}

Any idea what I am doing wrong?

@joestein
Have you tried using the start script:
$ ./scripts/s3s-fs.sh
I'm also attaching my ~/.aws/credentials file
credentials.txt
EXCEPT! you must rename it from credentials.txt -> credentials
When I used the start script and this credentials file, everything worked as expected.
With the key/secet as follows:
[default]
aws_access_key_id = AKEXAMPLES3S
aws_secret_access_key = SKEXAMPLES3S

I cannot reproduce the error. Could you provide debug logs?
export RUST_LOG="s3s_fs=debug,s3s=debug"

You can also try to modify the example start script.

Closing as stalled. Feel free to reopen if you have new information.


Doesn't work when Umbraco is running in virtual directory

Fix for the issue in pull request #61

Merged in pull request #61. Thanks Tim :)


Feature to disable and make page invisible or vice versa does not work properly

Current Behavior
When sending a payload to "ui-control" to disable a page or make it invisible when accessing the same page using the page link, the resource is completely inoperative
Expected Behavior
When the payload is sent to "ui-control", disabling or making the page invisible, it must become inaccessible via the sidebar and any other method, including accessing the page via direct link. Access via direct link also cannot change the page's invisible or disabled status.
Steps To Reproduce
Using a normal inject connected to a function node with the desired usage information, it must be connected to a ui-control node to run the tests. Below is the suggested content of the function.
node.send({ payload: { pages: { enable: ['Casa'] } } });
Environment

Dashboard version:
Node-RED version:
Node.js version:
npm version:
Platform/OS:
Browser:

Have you provided an initial effort estimate for this issue?
I have provided an initial effort estimate

for reference (incl. demo flow and detailed info), related thread here: https://discourse.nodered.org/t/how-to-enable-and-disable-pages-in-dashboard-2-0/87952/18?u=steve-mcl

Adding some extra detail from the forum - this is more of a Feature Request, than bug. It does work as designed currently, but the request is that a disabled/hidden page in the navigation shouldn't be navigable to, at all...
The challenge here is that there are perfectly valid reasons to hide/disable a link in the left navigation, and still want to be able to navigate to a page directly. So, we need to consider the state options here and their respective meanings to ensure coverage of all use cases.


Installation of commandovm.win10.installer.fireeye fails.

I get this message:
Failures
 - commandovm.win10.installer.fireeye (exited 1) - commandovm.win10.installer.fireeye not installed. An error occurred during installation:
 The remote name could not be resolved: 'az774065.vo.msecnd.net'

This message is pretty interesting:
The remote name could not be resolved: 'az774065.vo.msecnd.net'

I am not sure exactly what that is. If you are on a home network, I would recommend trying to install on a VPN to see if the DNS resolution is fixed.

I can reach the site (az774065.vo.msecnd.net), but it returns this message:
<Error> InvalidQueryParameterValue <Message> Value for one of the query parameters specified in the request URI is invalid. RequestId:32f5e45c-501e-0081-62ac-fbb750000000 Time:2021-02-05T10:47:30.7507449Z </Message> <QueryParameterName>comp</QueryParameterName> <QueryParameterValue/> <Reason/> </Error>

This message is pretty interesting:
The remote name could not be resolved: 'az774065.vo.msecnd.net'

I am not sure exactly what that is. If you are on a home network, I would recommend trying to install on a VPN to see if the DNS resolution is fixed.

I am having the same issue.  Obtained it both by running with my ExpressVPN service on and off.

@ryandalbert do you have a full tunnel VPN configured? Where did you VPN to?

It is a full tunnel starting at my host system. The termination point varies. Typically Houston Texas or New Jersey.
On Feb 5, 2021, 09:38 -0600, day1player<EMAIL_ADDRESS>wrote:

@ryandalbert do you have a full tunnel VPN configured? Where did you VPN to?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.

My VPN exits pretty randomly around the world. I tried to exit at a few different countries, but I get the same error.


Losen importlib-metedata requirement

📝 Description of the feature
The current pyensight requires importlib-metadata>=4.0,<5
Since we want to use this library in a solution based on SAF, we have dependencies conflicts with opentelemetry-api (1.18.0) that requires importlib-metadata >= 6.0.0

Is there a known issue that motivates a strong constraint on importlib-metadata?
💡 Steps for implementing the feature
No response
🔗 Useful links and references
No response

Hi @asbfall .
Sorry for coming to you only now, for some reasons I didn't get notified about it.
This hard constraint was introduced during the tech review process of the package.
Since it is only being used for identifying the version of PyEnSight and do the switch of the documentation on github, it should be probably ok for us to loosen it.
I will look into that and keep you posted.
Mario

@asbfall I have queued a build of a new release, v.0.6.1, which solves this issue.
Should be ready soon

Hello @mariostieriansys That's great. I'll test this new package. Many thanks


WebUI: agent edit/detail view: change the HELP url based on the backend

the default url is https://woodpecker-ci.org/docs/next/administration/backends/docker and that should remain.
but if it is local or kubernetes it would be nice to show different urls towards https://woodpecker-ci.org/docs/next/administration/backends/local and https://woodpecker-ci.org/docs/next/administration/backends/kubernetes.

I can try to do this

@tori-27 feel free to ask for help here or at matrix :)

Hi, I've done this. Here is a video with result
https://github.com/user-attachments/assets/c012026b-cf4f-4ca6-9fde-b34973f327a5


Add Willow to Mapped mapping file

What
Add Willow to Mapped mapping file
Why
Facilitate bi-directional relationships between the Mapped and Willow ontologies and improve interoperability. Previously, we could only map from Mapped to Willow.
Tested

Format Validation: Each new mapping, both for 'InputDtmi' and 'OutputDtmi', was verified against the accepted DTMI format, which checked for scheme, path, and version.
Duplication Check: The added mappings were checked for any potential duplication in 'InputDtmi' identifiers.

Closing for now, we will reopen this in the near future after a few more iterations


New version: Bambulab.Bambustudio version 1.8.4

[x] Have you signed the Contributor License Agreement?
[x] Have you checked that there aren't other open pull requests for the same manifest update/change?
[x] This PR only modifies one (1) manifest
[x] Have you validated your manifest locally with winget validate --manifest <path>?

[x] Does your manifest conform to the 1.6 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Microsoft Reviewers: Open in CodeFlow

Hi @mbilal234,

This PR's version number 1.8.4 has 3 parameters (sets of numbers between dots - major, minor, etc), which is less than the current manifest's version <IP_ADDRESS>, which has 4 parameters.

Does this PR's version number exactly match the version reported in the Apps & features Settings page? (Feel free to attach a screenshot.)
(Automated response - build 726)

Thanks for supplying a screenshot of the repo. Better would be a screenshot of the Apps & features Settings page. We need to verify that what's written to Registry matches the manifest contents - matching here drives upgrades, and incorrect information here can cause the "upgrade always available" error among other problems.

The installer lists it as <IP_ADDRESS>
Should I change the yaml files to reflect the same?

Yes, as the installer matches the Apps & features Settings page.

Automatic Validation ended with:

2024-02-10T06:41:17.8864198Z ##[error] One or more errors occurred. (Manifest: The manifest file path must match PackageIdentifier and PackageVersion properties from manifest. actual 'manifests\b\Bambulab\Bambustudio\1.8.4', expected 'manifests\b\Bambulab\Bambustudio\<IP_ADDRESS>') Manifest: The manifest file path must match PackageIdentifier and PackageVersion properties from manifest. actual 'manifests\b\Bambulab\Bambustudio\1.8.4', expected 'manifests\b\Bambulab\Bambustudio\<IP_ADDRESS>'

(Automated response - build 729.)

Hi @mbilal234,
The file path still needs to be changed.
Path: /1.8.4
Version: <IP_ADDRESS>
These need to match. This can be achieved through either creating a new folder with the correct name and moving the files there, or through renaming the current folder.

Hi @mbilal234,
The file path still needs to be changed.
Path: 1.8.4 Version: <IP_ADDRESS>
These need to match. This can be achieved through either creating a new folder with the correct name and moving the files there, or through renaming the current folder.

Ok, I shall do that


Explain how g(r.sub, p.sub, r.dom) works

https://casbin.org/docs/en/how-it-works#comment-5276609594

Can you tell how does casbin evaluates the policy file using matchers? The internals of Casbin where can I read that? I don't get g(r.sub, p.sub, r.dom) how this part works. Examples don't explain how the function g is working or how should this be read/interpreted

Add some new docs to: https://casbin.org/docs/en/rbac

Fixed by: https://github.com/casbin/casbin-website/pull/186


(Previously mislabeled as a duplicate) Feature to output all template tags and their values for URL

Please, read this rather than presume it is a duplicate.
This is different than the proposition that you wrote was not possible.
This feature request is to enable user to query for a URL, what each special sequence output template tag it was able to fill and its value.
I propose the output be separanted by new lines and tabulators by default.
For example,
youtube-dl --all-tags https://VideoHost.Com./?ID=A1B2C3
would output a list of the tags it supports, such as this:
extractor_id \t VideoHost
id \t A1B2C3
title \t A Video By Any Title
upload_date \t 2000-12-30
url \t https://VideoHost.Com./?ID=A1B2C3
Not Applicable values would be omitted.

No. Use keys from --dump-json.


What shall we back-port to v2.7.1?

$ git log --oneline v2.7.0..master

[x] 51910292 (origin/master, master) chore: Lint UI on CI, test diagnostics, skip bad test (#2587)
[x] 232bb115 fix(error handling): use Errorf instead of New when throwing errors with formatted text (#2598)
[x] eeb2f97b fix(controller): dag continue on failed. Fixes #2596 (#2597)
[x] 99c35129 docs: Fix inaccurate field name in docs (#2591)
[x] 21c73779 fix: Fixes lint errors (#2594)
[ ] 38aca5fa chore: Added ClusterWorkflowTemplate RBAC on quick-start manifests (#2576)
[ ] 59f746e1 feat: UI enhancement for Cluster Workflow Template (#2525)
[x] 0801a428 fix(cli): Show lint errors of all files (#2552)
[ ] c3535ba5 docs: Fix wrong Configuring Your Artifact Repository document. (#2586)
[ ] 79217bc8 feat(archive): allow specifying a compression level (#2575)
[x] 88d261d7 fix: Use outputs of last child instead of retry node itslef (#2565)
[x] 5c08292e style: Correct the confused logic (#2577)
[x] 3d146144 fix: Fix bug in deleting pods. Fixes #2571 (#2572)
[ ] cb739a68 feat: Cluster scoped workflow template (#2451)
[ ] c63e3d40 feat: Show workflow duration in the index UI page (#2568)
[x] 1520452a chore: Error -> Warn when Parent CronWf no longer exists (#2566)
[x] ffbb3b89 fix: Fixes empty/missing CM. Fixes #2285 (#2562)
[ ] d0fba6f4 chore: fix typos in the workflow template docs (#2563)
[ ] 49801e32 chore(docker): upgrade base image for executor image (#2561)
[ ] c4efb8f8 Add Riskified to the user list (#2558)
[ ] 8b92d33e feat: Create K8S events on node completion. Closes #2274 (#2521)
[ ] 2902e144 feat: Add node type and phase filter to UI (#2555)
[x] fb74ba1c fix: Separate global scope processing from local scope building (#2528)

@simster7 @sarabala1979 @whynowy once you'd added - please give me thumbs-up?

#2604 Should also be back-ported once it's merged


Add Zendesk as Oauth Provider

Description
This PR adds zendesk as an oAuth provider
Documentation available here: https://support.zendesk.com/hc/en-us/articles/4408845965210-Using-OAuth-authentication-with-your-application
The tricky part compared to current implementation is that there's no refresh token involved.
Tested E2E, error unrelated to oauth
https://github.com/user-attachments/assets/fc953319-300c-4780-9c51-fba99541c549
Risk

Deploy Plan
Need to add 2 secrets : OAUTH_ZENDESK_CLIENT_ID and OAUTH_ZENDESK_CLIENT_SECRET
Already added.

niiiice


target file is not generated while set_strip("debug")

xmake: v2.3.3+202005231421
os: ubuntu 20.04, wsl
gcc: 9.3.0
xmake.lua:
target("test")
    set_kind("binary")
    add_files("test.cpp")

    set_strip("debug")

After calling xmake, there's no executable 'test' in the output directory. If set_strip changed to "all", the target file can be generated.
The output of "xmake -v":
configure
{
    arch = x86_64
    ccache = true
    mode = debug
    ndk_stdcxx = true
    host = linux
    ld = /usr/bin/g++
    kind = static
    buildir = build
    cxx = /usr/bin/gcc
    plat = linux
}
[ 75%]: linking.debug test
/usr/bin/g++ -o build/linux/x86_64/debug/test build/.objs/test/linux/x86_64/debug/./test.cpp.o -S -m64 -L/usr/local/lib -L/usr/lib
[100%]: build ok!

I noticed that there's a '-S' option in the command line of g++, accroding to http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html#Link-Options:
-c
-S
-E

If any of these options is used, then the linker is not run, and object file names should not be used as arguments.

Is that option caused this issue?
About the feature of stripping the target file. I need to preserve some symbols instead of stripping all of them, is that possible?
thanks

I have fixed it, you can run xmake update dev and try it again.


RecursionError: maximum recursion depth exceeded

Describe the bug
A clear and concise description of what the bug is.
(...)
  File "/lib/python3.10/site-packages/sqlfmt/splitter.py", line 35, in maybe_split
    yield from self.split_at_index(line, i)
  File "/lib/python3.10/site-packages/sqlfmt/splitter.py", line 118, in split_at_index
    self.node_manager.append_newline(head_line)
  File "/lib/python3.10/site-packages/sqlfmt/node_manager.py", line 312, in append_newline
    node = self.create_node(token=nl, previous_node=previous_node)
  File "/lib/python3.10/site-packages/sqlfmt/node_manager.py", line 27, in create_node
    formatting_disabled = self.disable_formatting(token, previous_node)
  File "/lib/python3.10/site-packages/sqlfmt/node_manager.py", line 254, in disable_formatting
    previous_node.formatting_disabled.copy() if previous_node else []
  File "/lib/python3.10/site-packages/sqlfmt/node.py", line 88, in __len__
    return len(str(self))
RecursionError: maximum recursion depth exceeded

To Reproduce
Query with long enough oneline thing.
example.txt
File attached.
Expected behavior
Query has been formatted.
Actual behavior
  File "/lib/python3.10/site-packages/sqlfmt/splitter.py", line 35, in maybe_split
    yield from self.split_at_index(line, i)
  File "/lib/python3.10/site-packages/sqlfmt/splitter.py", line 118, in split_at_index
    self.node_manager.append_newline(head_line)
  File "/lib/python3.10/site-packages/sqlfmt/node_manager.py", line 312, in append_newline
    node = self.create_node(token=nl, previous_node=previous_node)
  File "/lib/python3.10/site-packages/sqlfmt/node_manager.py", line 27, in create_node
    formatting_disabled = self.disable_formatting(token, previous_node)
  File "/lib/python3.10/site-packages/sqlfmt/node_manager.py", line 254, in disable_formatting
    previous_node.formatting_disabled.copy() if previous_node else []
  File "/lib/python3.10/site-packages/sqlfmt/node.py", line 88, in __len__
    return len(str(self))
RecursionError: maximum recursion depth exceeded

Additional context
What is the output of sqlfmt --version?
sqlfmt, version 0.14.2

Oh that's super interesting. Thanks for the report. This should be an easy fix

@kcem-flyr This patch has been released as v0.14.3, and will be up on PyPI shortly.


Dockerize HealthCheck

For testing:

install docker from https://docs.docker.com/engine/install/
go to the repo in the terminal
build the image with this command: docker build -t healthcheck .
Run the container with this command: docker run -p 8501:8501 healthcheck

Notes:

I am getting SSL verification errors for every website during build. Worked around it by just ignoring these checks. We can't productionize like that
Uploading zips works but CDHSample doesn't work as it needs internet access
Investigate more efficient/faster base images/settings.

I would like to hold off on merging this for now, I don't know what is the proper protocol here - whether to even include the dockerfile in github at all, upload artefacts, etc. Let's get that figured out soon.


ensure EncodingPatternConverter#handlesThrowable is implemented

Giess the title is enough to understand what happens ;).
Long story short the handlesThrowable() logic to skip forced (by default) append of the exception does not work as soon as encoding is used which is almost always the case when outputing JSON/XML using PatternFormatter (since Json appender required 3rd party libs which are often undesired).
This PR implements this method by checking the nested formatters.

up?

Thanks for the contribution @rmannibucau! We had some discussion in the mailing list regarding the failing tests of this PR, though apparently we forgot about the ticket itself. :sweat_smile:
I will fix changes.xml for you – try to update it next time, please. I will also try to back-port this to release-2.x.

One last remark, a JIRA ticket is always handy. It helps us to link changes with tickets. I will create one for you.

since Json appender required 3rd party libs which are often undesired

JsonTemplateLayout doesn't require any 3rd party libs, FYI.


Semantic search -- Science benchmarks

Describe the blog post your would like to write
A clear and concise description of what subject the blog post will cover.
Benchmarking results for science experiments for Semantic search.
What is the title of the blog post?
Semantic search -- Science benchmarks
Who are the authors?
Who will be listed as the authors of this blog post
Milind Shyani, Dhrubo Saha, Jack Mazanec
What is the proposed posting date?
Provide the date which you wish this post to go live
March 6

@MilindShyani  - Are you still on track to publish this week or did you need a few more days? I know you had additional content updates. Please advise.
CC: @kolchfa-aws

Thanks for the reminder, Patti. The content will be ready by tomorrow.

Thanks, @MilindShyani. I'll review the PR and provide input.


Tests for GoogleSpreadSheet, salesforce soap, etcd, soap rest connectors using testerina

Please review and commit
Thanks
Erandi

Shall we follow [1] when doing commits and pull requests?
[1] - https://chris.beams.io/posts/git-commit/


pdfsam-basic: 4.2.12 -> 4.3.3

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/torakiki/pdfsam/releases.
meta.description for pdfsam-basic is: "Multi-platform software designed to extract pages, split, merge, mix and rotate PDF files"
meta.homepage for pdfsam-basic is: "https://github.com/torakiki/pdfsam"
meta.changelog for pdfsam-basic is: ""
Updates performed

Version update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
found 4.3.3 with grep in /nix/store/yly4s884ld4bya9wzak2x070q34hzyfi-pdfsam-basic-4.3.3
found 4.3.3 in filename of file in /nix/store/yly4s884ld4bya9wzak2x070q34hzyfi-pdfsam-basic-4.3.3

Rebuild report (if merged into master) (click to expand)

1 total rebuild path(s)

1 package rebuild(s)

First fifty rebuilds by attrpath
pdfsam-basic

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/yly4s884ld4bya9wzak2x070q34hzyfi-pdfsam-basic-4.3.3 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A pdfsam-basic https://github.com/r-ryantm/nixpkgs/archive/5dbcb8cd26f840e86725ed736a0586c9f1e59996.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/yly4s884ld4bya9wzak2x070q34hzyfi-pdfsam-basic-4.3.3
ls -la /nix/store/yly4s884ld4bya9wzak2x070q34hzyfi-pdfsam-basic-4.3.3/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

pdfsam-basic

Maintainer pings
cc @1000101 for testing.

Result of nixpkgs-review pr 183720 run on x86_64-linux 1

1 package built:

pdfsam-basic


enable configuration of securityContext in falco chart

Signed-off-by: kostas<EMAIL_ADDRESS>
What type of PR is this?

Uncomment one (or more) /kind <> lines:

/kind bug

/kind cleanup

/kind design

/kind documentation

/kind failing-test

/kind feature

If this PR will release a new chart version please make sure to also uncomment the following line:

/kind chart-release

Any specific area of the project related to this PR?

Uncomment one (or more) /area <> lines:

/area falco-chart

/area falco-exporter-chart

/area falcosidekick-chart

What this PR does / why we need it:
This PR aims to add support for full configuration of the securityContext for falco pods and containers.
Which issue(s) this PR fixes:

Fixes #
Special notes for your reviewer:
Please read notes in comment below, on how this PR aims to not break the previously added leastPrivileged.enabled attribute.
Checklist

[X] Chart Version bumped
[X] Variables are documented in the README.md
[X] CHANGELOG.md updated

Additional notes on how leastPrivileged.enabled is not being broken:
example:
leastPrivileged:
  enabled: false

securityContext:
  seccompProfile:
    type: RuntimeDefault

podSecurityContext:
  seccompProfile:
    type: RuntimeDefault

results in
...
        containers:
        - name: falco
          securityContext:
            privileged: true
            seccompProfile:
              type: RuntimeDefault
...
      securityContext:
        seccompProfile:
          type: RuntimeDefault
...

while:
leastPrivileged:
  enabled: true

securityContext:
  seccompProfile:
    type: RuntimeDefault

podSecurityContext:
  seccompProfile:
    type: RuntimeDefault

results in:
...
        containers:
        - name: falco
          securityContext:
            capabilities:
              add:
              - BPF
              - SYS_RESOURCE
              - PERFMON
            seccompProfile:
              type: RuntimeDefault
...
      securityContext:
        seccompProfile:
          type: RuntimeDefault
...

and
leastPrivileged:
  enabled: true
securityContext: {}

results in
          securityContext:
            capabilities:
              add:
              - BPF
              - SYS_RESOURCE
              - PERFMON

and
leastPrivileged:
  enabled: false
securityContext: {}

results in
          securityContext:
            privileged: true

and
leastPrivileged:
  enabled: false
securityContext:
  privileged: true
  capabilities:
    drop:
    - ALL

results in
          securityContext:
            privileged: true
            capabilities:
              drop:
              - ALL

and
leastPrivileged:
  enabled: true
securityContext:
  seccompProfile:
    type: RuntimeDefault
  privileged: true
  capabilities:
    drop:
    - ALL

results in
          securityContext:
            capabilities:
              add:
              - BPF
              - SYS_RESOURCE
              - PERFMON
            seccompProfile:
              type: RuntimeDefault

Note that:

if securityContext has priviliged or capabilities or both

leastPrivileged:
  enabled: true

securityContext:
  privileged: true
  capabilities:
    drop:
    - ALL

then, because both privileged and capabilities are dropped
Error: YAML parse error on falco/templates/daemonset.yaml: error converting YAML to JSON: yaml: line xx: did not find expected key

if securityContext has privileged

leastPrivileged:
  enabled: false

securityContext:
  privileged: true

then, because privileged is dropped
Error: YAML parse error on falco/templates/daemonset.yaml: error converting YAML to JSON: yaml: line xx: did not find expected key

LGTM label has been added.  Git tree hash: 9569501f225ed263af977463a5293fdf2d2a2988

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: Kostavro, leogr
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

falco/OWNERS [leogr]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment


Fix sidekiq_threshold ignored on first failure

DO NOT MERGE: This is just a placeholder PR to explain what's happening here.
We're using this branch in our Gemfile while rollbar/rollbar-gem#761 makes its way to master. I originally created the PR with a fork on my own Github account (ejoubaud/), so I'm pushing it here too (envato/ fork) so we can have a dependency on an envato repo.
As soon as rollbar/rollbar-gem#761 gets merged (or rejected), we can just delete this fork and unpin the gem.

Upstream PR has been merged and the gem unpinned a while ago, closing.


Has Beacon.LiveAdmin.Router moved / renamed

Hi,
I can't seem to get past this step in a setup I am following now:
defmodule SaassleIOWeb.Router do
  use SaassleIOWeb, :router
  use Beacon.Router
  use Beacon.LiveAdmin.Router

Compiling 4 files (.ex)
error: module Beacon.LiveAdmin.Router is not loaded and could not be found
│
4 │   use Beacon.LiveAdmin.Router
│   ^^^^^^^^^^^^^^^^^^^^^^^^^^^
│
└─ lib/saassle_io_web/router.ex:4: SaassleIOWeb.Router (module)
However, use Beacon.Router is working fine, and I can access the default page:
scope "/articles" do
    pipe_through :browser
    beacon_site "/", site: :blog
  end

Without a problem. I cloned beacon itself, but can't find Beacon.LiveAdmin.Router or the def for beacon_live_admin
Are these renamed perhaps?

Could you share how your router and mix.exs looks like?

Could you share how your router and mix.exs looks like?

Sure:
I hope floki is not the problem, other deps won'y allow me to modify the version
defmodule SaassleIO.MixProject do
  use Mix.Project

  @version "1.8.0"

  def project do
    [
      app: :saassle_io,
      version: @version,
      elixir: "~> 1.14",
      elixirc_paths: elixirc_paths(Mix.env()),
      start_permanent: Mix.env() == :prod,
      aliases: aliases(),
      deps: deps(),
      test_coverage: [tool: ExCoveralls],
      preferred_cli_env: [
        quality: :test,
        wallaby: :test,
        coveralls: :test,
        "coveralls.detail": :test,
        "coveralls.post": :test,
        "coveralls.html": :test,
        vcr: :test,
        "vcr.delete": :test,
        "vcr.check": :test,
        "vcr.show": :test
      ]
    ]
  end

  # Configuration for the OTP application.
  #
  # Type `mix help compile.app` for more information.
  def application do
    [
      mod: {SaassleIO.Application, []},
      extra_applications: [:logger, :runtime_tools]
    ]
  end

  # Specifies which paths to compile per environment.
  defp elixirc_paths(:test), do: ["lib", "test/support"]
  defp elixirc_paths(_), do: ["lib"]

  # Specifies your project dependencies.
  #
  # Type `mix help deps` for examples and options.
  # Type `mix deps.update --all` to update deps (won't updated this file)
  # Type `mix hex.outdated` to see deps that can be updated
  defp deps do
    [
      # Phoenix base
      {:phoenix, "~> 1.7.3"},
      {:phoenix_ecto, "~> 4.4"},
      {:ecto_sql, "~> 3.10"},
      {:postgrex, ">= 0.0.0"},
      {:phoenix_html, "~> 4.0", override: true},
      {:phoenix_live_reload, "~> 1.2", only: :dev},
      {:phoenix_live_view, "~> 0.20"},
      {:floki, ">= 0.34.3"},
      # {:floki, ">= 0.30.0"},
      {:phoenix_live_dashboard, "~> 0.8"},
      {:esbuild, "~> 0.8", runtime: Mix.env() == :dev},
      {:swoosh, "~> 1.11"},
      {:telemetry_metrics, "~> 1.0"},
      {:telemetry_poller, "~> 1.0"},
      {:gettext, "~> 0.24", override: true},
      {:jason, "~> 1.2"},
      {:bandit, "~> 1.0"},
      {:dns_cluster, "~> 0.1.1"},
      {:beacon, github: "BeaconCMS/beacon", override: true},
      # {:poison, "~> 3.1.0"},

      # Emails
      {:phoenix_swoosh, "~> 1.0"},
      {:gen_smtp, "~> 1.2"},
      {:premailex, "~> 0.3.0"},

      # Ecto querying / pagination
      {:query_builder, "~> 1.0"},

      # Authentication
      {:bcrypt_elixir, "~> 3.0"},
      {:ueberauth, "<= 0.10.5 or ~> 0.10.7"},
      {:ueberauth_google, "~> 0.10"},
      {:ueberauth_github, "~> 0.7"},

      # API
      {:open_api_spex, "~> 3.18"},

      # TOTP (2FA)
      {:nimble_totp, "~> 1.0.0"},
      {:eqrcode, "~> 0.1.10"},

      # Hashing
      {:hashids, "~> 2.0"},

      # Assets
      {:tailwind, "~> 0.2.0", runtime: Mix.env() == :dev},

      # Petal components and framework
      {:petal_components, "~> 1.9"},
      {:petal_framework, "~> 0.8", repo: "petal"},

      # Utils
      {:blankable, "~> 1.0.0"},
      {:currency_formatter, "~> 0.4"},
      {:timex, "~> 3.7", override: true},
      {:inflex, "~> 2.1.0"},
      {:slugify, "~> 1.3"},
      {:sizeable, "~> 1.0"},

      # HTTP client
      {:tesla, "~> 1.8.0"},
      {:finch, "~> 0.14"},

      # Testing
      {:wallaby, "~> 0.30", runtime: false, only: :test},
      {:faker, "~> 0.17", only: [:test, :dev]},
      {:mimic, "~> 1.7", only: :test},
      {:exvcr, "~> 0.15", only: :test},

      # Jobs / Cron
      {:oban, "~> 2.17"},

      # Security
      {:content_security_policy, "~> 1.0"},

      # Code quality
      {:sobelow, "~> 0.12", only: [:dev, :test], runtime: false},
      {:credo, "~> 1.7", only: [:dev, :test], runtime: false},
      {:excoveralls, "~> 0.10", only: [:dev, :test], runtime: false},
      {:styler, "~> 0.11", only: [:dev, :test], runtime: false},

      # Payments
      {:stripity_stripe, "~> 3.1"}

      # Temporary (to rename your project)
      # {:rename_project, "~> 0.1.0", only: :dev, runtime: false}
    ]
  end

  # Aliases are shortcuts or tasks specific to the current project.
  # For example, to install project dependencies and perform other setup tasks, run:
  #
  #     $ mix setup
  #
  # See the documentation for `Mix` for more info on aliases.
  defp aliases do
    [
      setup: ["deps.get", "ecto.setup", "assets.setup", "assets.build"],
      "ecto.setup": ["ecto.create", "ecto.migrate", "run priv/repo/seeds.exs"],
      "ecto.reset": ["ecto.drop", "ecto.setup"],
      test: ["ecto.create --quiet", "ecto.migrate --quiet", "test"],
      "assets.setup": ["tailwind.install --if-missing", "esbuild.install --if-missing"],
      "assets.build": ["tailwind default", "esbuild default"],
      "assets.deploy": ["tailwind default --minify", "esbuild default --minify", "phx.digest"],
      # Run to check the quality of your code
      quality: [
        "format",
        "sobelow --config",
        "coveralls",
        "credo"
      ],
      update_translations: ["gettext.extract --merge"],

      # Unlocks unused dependencies (no longer mentioned in the mix.exs file)
      clean_mix_lock: ["deps.unlock --unused"],

      # Only run wallaby (e2e) tests
      wallaby: ["test --only feature"],
      seed: ["run priv/repo/seeds.exs"]
    ]
  end
end

defmodule SaassleIOWeb.Router do
  use SaassleIOWeb, :router
  use Beacon.Router
  # use Beacon.LiveAdmin.Router

  import SaassleIOWeb.OrgPlugs
  import SaassleIOWeb.SubscriptionPlugs
  import SaassleIOWeb.UserAuth
  import SaassleIOWeb.UserImpersonationController

  alias SaassleIOWeb.OnboardingPlug

  pipeline :browser do
    plug :accepts, ["html"]
    plug :fetch_session
    plug :fetch_live_flash
    plug :put_root_layout, {SaassleIOWeb.Layouts, :root}
    plug :protect_from_forgery

    # plug :put_secure_browser_headers, %{
    #   "content-security-policy" =>
    #     ContentSecurityPolicy.serialize(struct(ContentSecurityPolicy.Policy, SaassleIO.config(:content_security_policy)))
    # }
    plug :put_secure_browser_headers

    plug Beacon.LiveAdmin.Plug

    plug :fetch_current_user
    plug :fetch_impersonator_user
    plug :kick_user_if_suspended_or_deleted
    plug PetalFramework.SetLocalePlug, gettext: SaassleIOWeb.Gettext
  end

  pipeline :public_layout do
    plug :put_layout, html: {SaassleIOWeb.Layouts, :public}
  end

  pipeline :authenticated do
    plug :require_authenticated_user
    plug OnboardingPlug
    plug :assign_org_data
  end

  pipeline :subscribed_entity do
    plug :subscribed_entity_only
  end

  pipeline :subscribed_org do
    plug :subscribed_org_only
  end

  pipeline :subscribed_user do
    plug :subscribed_user_only
  end

  # Public routes
  scope "/", SaassleIOWeb do
    pipe_through [:browser, :public_layout]

    # Add public controller routes here
    get "/", PageController, :landing_page
    get "/privacy", PageController, :privacy
    get "/license", PageController, :license

    get "/terms-and-conditions/zendesk-apps", PageController, :zendesk_apps_terms_and_conditions
    get "/terms-and-conditions/zendesk-zis-hub", PageController, :zendesk_zis_hub_terms_and_conditions

    get "/contact", MessageController, :new
    post "/contact", MessageController, :create

    live_session :public, layout: {SaassleIOWeb.Layouts, :public} do
      # Add public live routes here
    end
  end

  # scope "/cms-admin" do
  #   pipe_through :browser
  #   beacon_live_admin("/")
  # end

  scope "/articles" do
    pipe_through :browser
    beacon_site "/", site: :blog
  end

  # App routes - for signed in and confirmed users only
  scope "/app", SaassleIOWeb do
    pipe_through [:browser, :authenticated]

    # Add controller authenticated routes here
    put "/users/settings/update-password", UserSettingsController, :update_password
    get "/users/settings/confirm-email/:token", UserSettingsController, :confirm_email
    get "/users/totp", UserTOTPController, :new
    post "/users/totp", UserTOTPController, :create

    live_session :authenticated,
      on_mount: [
        {SaassleIOWeb.UserOnMountHooks, :require_authenticated_user},
        {SaassleIOWeb.OrgOnMountHooks, :assign_org_data},
        {SaassleIOWeb.SubscriptionPlugs, :subscribed_entity}
      ] do
      # Add live authenticated routes here

      use SaassleIOWeb.BillingRoutes

      live "/", DashboardLive
      live "/users/onboarding", UserOnboardingLive
      live "/users/edit-profile", EditProfileLive
      live "/users/edit-email", EditEmailLive
      live "/users/change-password", EditPasswordLive
      live "/users/edit-notifications", EditNotificationsLive
      live "/users/org-invitations", UserOrgInvitationsLive
      live "/users/two-factor-authentication", EditTotpLive

      live "/orgs", OrgsLive, :index
      live "/orgs/new", OrgsLive, :new

      scope "/org/:org_slug" do
        live "/", OrgDashboardLive
        live "/edit", EditOrgLive
        live "/team", OrgTeamLive, :index
        live "/team/invite", OrgTeamLive, :invite
        live "/team/memberships/:id/edit", OrgTeamLive, :edit_membership
      end
    end
  end

  if SaassleIO.config(:impersonation_enabled?) do
    use SaassleIOWeb.AuthImpersonationRoutes
  end

  scope "/" do
    use SaassleIOWeb.AuthRoutes
    use SaassleIOWeb.SubscriptionRoutes
    use SaassleIOWeb.MailblusterRoutes
    use SaassleIOWeb.AdminRoutes
    use SaassleIOApi.Routes

    # DevRoutes must always be last
    use SaassleIOWeb.DevRoutes
  end
end

A fresh phoenix project and beacon install seem to have the same problem

can't find Beacon.LiveAdmin.Router or the def for beacon_live_admin

Beacon.LiveAdmin.Router is available in https://github.com/BeaconCMS/beacon_live_admin so you'd need to install it first - just keep in mind that you can run admin as a separated project or in the same one as you're running beacon. To run in the same project you can skip to step 4 in that guide.

can't find Beacon.LiveAdmin.Router or the def for beacon_live_admin

Beacon.LiveAdmin.Router is available in https://github.com/BeaconCMS/beacon_live_admin so you'd need to install it first - just keep in mind that you can run admin as a separated project or in the same one as you're running beacon. To run in the same project you can skip to step 4 in that guide.

Oh, I though the override: true was to bring that in, so I need another dependancy?

so I need another dependancy?

Yep.

override: true

That's required to run beacon and beacon_live_admin in the same project.

Gotcha, thanks!


Add comment to bugs when receiving patches after being closed

Resolves #1318
Autonag wiki page
Bugs with patches after being closed

Purpose
Identify bugs that receive patches after being closed.

Action
Comment on the bug and email release managers.

Code
patch_closed_bug.py

Dry-run
Hi there,
The following bug received a patch after being closed:

BugSummaryResolutionLast patch

1762747

        Perma [Tier 2] /scroll-to-text-fragment/find-range-from-text-directive.html | Suffix need not be start bounded. - assert_equals: Expected to scroll expected true but got false

        9 hours

        5 hours

Sincerely,
  Release Management Bot

  See the search query on Bugzilla.

  See the source / report issues on the GitHub repo

Yep I agree about having duration after the bug has been closed.
I wonder if we should nag in the case of bug 1762747: @marco-c wdyt ?

Dry-run
Hi there,
The following bugs received patches after being closed:

BugSummaryResolutionLast patch

1762796

        slowdown on  a website due to slow Element.classList.values() (which slows down uBlock)

        3 days

        after 7 hours

1762747

        Perma [Tier 2] /scroll-to-text-fragment/find-range-from-text-directive.html | Suffix need not be start bounded. - assert_equals: Expected to scroll expected true but got false

        3 days

        after 3 hours

Sincerely,
    Release Management Bot

    See the search query on Bugzilla.

    See the source / report issues on the GitHub repo

Yep I agree about having duration after the bug has been closed. I wonder if we should nag in the case of bug 1762747: @marco-c wdyt ?

I guess it happens often that there are follow-ups in these cases. Maybe we can skip intermittent failure bugs (bugs filed by<EMAIL_ADDRESS>or with the "intermittent-failure" keyword)? Or we could set a short time which we don't warn about (e.g. 30 minutes after the bug is closed). We'd still have warned in this case where the time was 3 hours, but in general we might avoid to warn in many cases.
Another option is to just let this run for a while and see how often we are pinging in intermittent failure bugs and adjust if needed. I think I prefer this one, wdyt?


Token refreshed too frequently

Issue and Steps to Reproduce
Hi,
I'm encountering a "token refresh" problem.
Unfortunately I can't figure out a way to reproduce it all the time; I can only say it happens often in "development mode".
I'm using react 18.2.x on a vite.js build stack; react-oidc is configured with service_worker_only: true.
Versions
├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>
Screenshots

Expected
It should refresh every  ~20s to 30s .
Actual
It refresh every 1s like in screenshot.
What I can do to help identifying the problem?
Thanks.
Regards.

Hi @Gounlaf , thank you for your issue and ussing react oidc.
Do you have a sample of your react oidc configuration ?
Do you have this behavior with the demo?

Hum I think i have an idea of your problem. There is a random time laps for managing multitab cross refresh time. 20s or 30s are may be to short. I may have to manage this case with short livecycle.

Do you have a sample of your react oidc configuration ?

Nothing particular I guess:
const oidcConfig = {
  client_id: "myclientid",
  redirect_uri: window.location.origin + "/authentication/callback",
  scope: ["i","require","all","scopes"],
  authority: "https://my.keycloak.instance/auth/realms/myrealm",
  service_worker_relative_url: "/OidcServiceWorker.js",
  service_worker_only: true,
}

const trustedDomains = {
  default: [
    "https://my.api.url",
    "https://my.keycloak.instance/auth/realms/myrealm",
    "http://localhost:3000",
  ],
}

Do you have this behavior with the demo?

Will check asap.

I have this same issue on 6.19.2. I'm not using a service worker.
Setting token_renew_mode to access_token_invalid does not limit the amount of requests.

Hi @Gounlaf , do you have somewhere in keycloak a token lifetime to configure?

May you explain, desbribe your keycloack @hodorsoft configuration ? So i can try to reproduce it.

Sure @guillaume-chervet ; will test asap. Sorry for the delay.

do you have somewhere in keycloak a token lifetime to configure?

It seems so. I'm not an expert. Below 2 screenshots of settings I can update. They are all configured to the with default value.
In Realm Settings > Tokens (tab):

In Clients > my client > Settings (tab) > Advanced Settings pannel:

Hi @Gounlaf , thank you for the screenshot. I do not know well keycloack, but i think you can set all accesstoken lifetime to 5 minutes. Five minutes is still short for access token, you may set 1 hour or 4 hours, that depends of the your application security needs.

(Stupid) question: if my tokens are configured with 2 minutes, why the tokens are "renewed" every 20/30 seconds? Is there a security margin in the service worker?
Anyway I can and will change de lifetime and let you know if the weird behavior is still there.
I haven't (yet) configured the token_renew_mode; do you need I configure it for testing purpose?

hi @Gounlaf ,
yes the library take some time to be sure the token is always valid.
https://github.com/AxaFrance/react-oidc/tree/master/packages/react#readme.md
The property refresh_time_before_tokens_expiration_in_second: PropTypes.number,
allow to customize it. by default it is 2 minutes : configuration.refresh_time_before_tokens_expiration_in_second ?? 120;


Demo not working in Mac, am I missing something

I tried to open the demo download on the mac with chrome and all I get is a white screen.
I thought there is no server and it's completely html and css, am I missing something?

Hello,
There are Ajax requests. You need a server

Got it thanks! Is there no way to initially convert everything to Javascript and images?
Ajax calls to localhost seems a clumsy way to serve files. You can have the javascript spit out whatever it is processing atruntime and use that instead of importing the files.


sm-checkbox doesn't work

When i try to use sm-checkbox i get the following error in the browser console:
core.umd.js:3462 EXCEPTION: Uncaught (in promise): Error: Error in ./SemanticCheckboxComponent class SemanticCheckboxComponent - inline template:0:19 caused by: Cannot read property 'value' of undefined
Can you please fix it?

Hi, please give your full example.

Here is my full example:
<sm-checkbox label="Receip"></sm-checkbox>

Ok, I've created another issue for this.
Should be resolved by #100.


Setting a value for electronWinstallerConfig.exe causes failure during build

[x] I have read the contribution documentation for this project.
[x] I agree to follow the code of conduct that this project follows, as appropriate.
[x] I have searched the issue tracker for an issue that matches the one I want to file, without success.

Please describe your issue:
According to documentation, electronWinstallerConfig contains a field exe that allows defining the name of the executable file. When I set a value for this field, the build failed during the squirrel stage.
Console output
✔ Checking your system
✔ Resolving Forge Config
We need to package your application before we can make it
✔ Preparing to Package Application for arch: x64
✔ Compiling Application
✔ Preparing native dependencies
✔ Packaging Application
Making for the following targets:
✖ Making for target: squirrel - On platform: win32 - For arch: x64
An unhandled error has occurred inside Forge:
An error occured while making for target: squirrel
Failed with exit code: 1
Output:
Attempting to build package from 'id30.nuspec'.
File not found: 'id33.exe'.
Error: Failed with exit code: 1
Output:
Attempting to build package from 'id30.nuspec'.
File not found: 'id33.exe'.
at ChildProcess.proc.on.code (/usr/lib/node_modules/electron-forge/node_modules/electron-winstaller/lib/spawn-promise.js:62:16)
at emitTwo (events.js:125:13)
at ChildProcess.emit (events.js:213:7)
at maybeClose (internal/child_process.js:921:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:211:5)

What command line arguments are you passing?
electron-forge make --platform=win32 --verbose
What does your config.forge data in package.json look like?
{   "name": "id10",   "productName": "id11",   "description": "id12",   "author": "AH Productions",   "version": "1.0.0",   "main": "src/main.js",   "scripts": {     "start": "electron-forge start",     "package": "electron-forge package",     "make": "electron-forge make"   },   "repository": "https://github.com/electron/electron-quick-start",   "keywords": [   ],   "license": "CC0-1.0",   "devDependencies": {     "babel-plugin-transform-async-to-generator": "^6.24.1",     "babel-preset-env": "^1.6.0",     "babel-preset-react": "^6.24.1",     "electron-forge": "^3.2.0",     "electron-prebuilt-compile": "1.6.12"   },   "dependencies": {     "electron-compile": "^6.4.1"   },   "config": {     "forge": {       "make_targets": {         "win32": [           "squirrel"         ],         "darwin": [           "zip"         ],         "linux": [           "deb",           "rpm"         ]       },       "electronPackagerConfig": {         "name": "id20",         "icon": "chateau.ico",         "asar": true,         "win32metadata": {           "ProductName": "id21",           "InternalName": "id22",           "FileDescription": "id23"         }       },       "electronWinstallerConfig": {         "name": "id30",         "title": "id31",         "description": "id32",         "loadingGif": "loading-setup.gif",         "setupIcon": "tente.ico",         "iconUrl": "http://<IP_ADDRESS>/cabane.ico",         "exe": "id33.exe",         "setupExe": "id34.exe"       },       "electronInstallerDebian": {},       "electronInstallerRedhat": {},       "github_repository": {},       "windowsStoreConfig": {         "packageName": "id40"       }     }   } }
Detailed steps to reproduce your problem
Put an app in src/main.js (I used the electron quickstart sample). Use the provided config file. Make for Windows.
Evidence that the 'exe' field causes the issue : remove the line "exe": "id33.exe", in the config file and everything works fine.
Workaround
Apparently the final executable name is electronPackagerConfig.name postpended with .exe, and this field is not really visible anywhere else so it is an acceptable workaround for now.

@bursauxa That's a misinterpretation of the docs 👍 exe is the name of the existing EXE file created during the packaging phase, overriding that will definitely break your build.
You're looking for the setupExe option 👍

Thanks for the quick answer! I thought something along those lines with the error message. In that case, wouldn't it make sense to prevent any modification of this specific field from forge config, since the executable comes the previous stage of the pipeline ?


Custom code snippet

Hello!
I just wanted to understand if it's possible to customize the code preview snippet and the code section on the playground as needed. Right now I have something generated like this:
<.render cta_link="https://test/" cta_text="Call to action" description="Lorem ipsum dolor sit amet consectetur adipisicing elit. Aliquid pariatur, ipsum similique veniam." title="Default/Info message"/>
but actually what I want is for it to be showcased in these sections like:
<MyComponentLibrary.ComponentName cta_text="Call to action" description="Lorem ipsum ..." title="Title" />

To achieve what you want, you need to define your story function as & MyComponentLibrary.ComponentName/1 and not render/1

Sorry the delay and not sure if I understood, but right now I have this function defined as
  def function, do: &App.Shared.Components.NewButton.button/1
and I get this in the storybook:

when actually what I wanted was something like:
<App.Shared.Components.NewButton.button ...>
how do I achieve this?


Adds ZipkinExporter

This adds ZipkinExporter which allows you to report traces to Zipkin.
By default, this uses http, but it can also work with Kafka, SQS, etc
as you can override the Sender.
Fixes #428

Just got back online, but in transit. will try to push things tomorrow

fixed things I think. once we have an integrated example (something that produces spans) I'd like to test this

weird I used google code style plugin from idea :(

Codecov Report

Merging #620 into master will increase coverage by 2.09%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##             master     #620      +/-   ##
============================================
+ Coverage     76.06%   78.16%   +2.09%
- Complexity      716      767      +51
============================================
  Files           130      132       +2
  Lines          3439     3819     +380
  Branches        320      357      +37
============================================
+ Hits           2616     2985     +369
- Misses          759      769      +10
- Partials         64       65       +1

Impacted Files
Coverage Δ
Complexity Δ

.../opencensus/implcore/stats/MutableAggregation.java
97.11% <0%> (-0.67%)
1% <0%> (ø)

...a/io/opencensus/implcore/stats/IntervalBucket.java
100% <0%> (ø)
14% <0%> (+4%)
:arrow_up:

...re/src/main/java/io/opencensus/stats/ViewData.java
100% <0%> (ø)
6% <0%> (+3%)
:arrow_up:

core/src/main/java/io/opencensus/stats/View.java
100% <0%> (ø)
6% <0%> (+3%)
:arrow_up:

...ain/java/io/opencensus/stats/RpcViewConstants.java
100% <0%> (ø)
4% <0%> (+2%)
:arrow_up:

...a/io/opencensus/implcore/tags/TagContextsImpl.java
92.59% <0%> (ø)
14% <0%> (?)

.../src/main/java/io/opencensus/tags/TagContexts.java
80% <0%> (ø)
7% <0%> (?)

...main/java/io/opencensus/stats/AggregationData.java
97.43% <0%> (+0.46%)
1% <0%> (ø)
:arrow_down:

...census/implcore/trace/export/SpanExporterImpl.java
91.66% <0%> (+1.66%)
6% <0%> (ø)
:arrow_down:

.../io/opencensus/implcore/stats/MutableViewData.java
92.21% <0%> (+2.06%)
30% <0%> (+17%)
:arrow_up:

... and 1 more

Continue to review full report at Codecov.

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

Coverage remained the same at 77.93% when pulling 01dd4fc4d787b3f53104859db79693b0c4f62d3f on zipkin-trace-exporter into ebb32766203b9f948e7dbb7a2c63a926abaea96c on master.

Coverage remained the same at 77.93% when pulling 1980241d8ca4d2429980ef32e43dba608add53c5 on zipkin-trace-exporter into 3002fec5ccc251a9c50dfbfc1e195bd6d2380d15 on master.

Tested against gRPC snapshot

@adriancole to format the code use the formatter not the code style plugin see
https://github.com/google/google-java-format and lock for inteliJ plugin.

@adriancole for the code examples:
Tracing.getExportComponent().getSampledSpanStore()
        .registerSpanNamesForCollection(Arrays.asList("Sent.helloworld.Greeter.SayHello"));

This is needed only if you register the Z-Pages functionality.

Coverage remained the same at 77.93% when pulling 607a4b59b29b7dc2286ab863322e24aabbfd69cb on zipkin-trace-exporter into 3002fec5ccc251a9c50dfbfc1e195bd6d2380d15 on master.

might try to depend on this, if I get buy-in to release it https://github.com/openzipkin/zipkin-reporter-java/pull/66

@adriancole I want to do a release tomorrow. Do you mind submitted this as is to hit the release or you want to wait 4 weeks until the next release?

I need you to resolve the conflicts.

Coverage remained the same at 78.441% when pulling f7c1fc7cca0c77ee9ebdd9eb4190a1d53e28292f on zipkin-trace-exporter into 428ac6f0b1c0c0218224434aa12945f758cde302 on master.

ok commits resolved. no need to wait for reporter 2. merge when you like! I can do the test refactoring in a later PR (the sample span data)

Coverage remained the same at 78.336% when pulling b372efd1edad20291fb5702f5a37916ed8ade4cb on zipkin-trace-exporter into d9d80779e228a3fc7c40c683ed955ec300f6d03f on master.

Coverage remained the same at 78.336% when pulling b372efd1edad20291fb5702f5a37916ed8ade4cb on zipkin-trace-exporter into d9d80779e228a3fc7c40c683ed955ec300f6d03f on master.

now zipkin2ified!

Coverage remained the same at 78.336% when pulling 032f4ce51517618e7537aa4115f41d1f2a9256f9 on zipkin-trace-exporter into d9d80779e228a3fc7c40c683ed955ec300f6d03f on master.

@adriancole I had comments about the code can you solve them?

@bogdandrutu added the TODOs, though I think for test data a better SpanData.builder is better than keeping stock objects in hind-site. For example, I can easily navigate w/in the test file to see if something aligns, the clutter is around constructing things like timed events. If you are keen, I'd prefer to just enhance the builder.

Coverage remained the same at 78.65% when pulling f0f5c3d73be5d0e116cf2d8345e54ca7e0c92445 on zipkin-trace-exporter into 83f82dbe96fd5e0fc2468aa2b696a92953666c65 on master.


Generated SQL does not behave as expected

Hi,
I have come across a problem with the generated WHERE clauses in SQL whereby the WHERE clauses do not behave as expected given the OData filters passed through.
If I have the filter (Formatted for readability):
?$filter=Id eq 1663 and
(
LeapYear eq true and DayOfYear gt 59 and DayOfYear eq 62 or
LeapYear eq true and DayOfYear le 59 and DayOfYear eq 61 or
LeapYear eq false and DayOfYear eq 61
)

Given that I believe OData processes AND Before OR (See: OData Version 3.0, Section: <IP_ADDRESS>. Operator Precedence), I would expect to see generated WHERE clause to look something more like:
WHERE Id = @p0 AND
(
	(LeapYear = @p1 AND DayOfYear > @p2 AND DayOfYear = @p3) OR
	(LeapYear = @p4 AND DayOfYear > @p5 AND DayOfYear = @p6) OR
	(LeapYear = @p7 AND DayOfYear = @p8)
)

Which would produce the same outcome as expected.
However the generated WHERE clause actually generates as follows:
WHERE
(
	(
		(Id = @p0) AND
		(
			(
				(
					(
						(
							(
								(
									(LeapYear = @p1) AND (DayOfYear > @p2)
								) AND (DayOfYear = @p3)
							) OR (LeapYear = @p4)
						) AND (DayOfYear <= @p5)
					) AND (DayOfYear = @p6)
				) OR (LeapYear = @p7)
			) AND (DayOfYear = @p8)
		)
	)
)

This issue I believe I have with the generated WHERE clause is that it loses the grouping between the OR operators that surround the AND operators and ensure that the AND operators are run against each other prior to applying the OR operators.
Any assistance resolving this issue would be greatly appreciated.
Thanks.

It might just need you to specify the grouping yourself in the OData query, try this:
?$filter=Id eq 1663 and ( (LeapYear eq true and DayOfYear gt 59 and DayOfYear eq 62) or (LeapYear eq true and DayOfYear le 59 and DayOfYear eq 61) or (LeapYear eq false and DayOfYear eq 61) )
Also, you have some odd looking predicates in there - "LeapYear eq true and DayOfYear gt 59 and DayOfYear eq 62" seems weird to me, not sure why you're doing a greater than and an equals on the same property with 2 different values..

On 22 Jun 2016, at 17:09, KyeTech<EMAIL_ADDRESS>wrote:
Hi,
I have come across a problem with the generated WHERE clauses in SQL whereby the WHERE clauses do not behave as expected given the OData filters passed through.
If I have the filter (Formatted for readability):
?$filter=Id eq 1663 and
(
LeapYear eq true and DayOfYear gt 59 and DayOfYear eq 62 or
LeapYear eq true and DayOfYear le 59 and DayOfYear eq 61 or
LeapYear eq false and DayOfYear eq 61
)
Given that I believe OData processes AND Before OR (See: OData Version 3.0, Section: <IP_ADDRESS>. Operator Precedence), I would expect to see generated WHERE clause to look something more like:
WHERE Id = @p0 AND
(
(LeapYear = @p1 AND DayOfYear > @p2 AND DayOfYear = @p3) OR
(LeapYear = @p4 AND DayOfYear > @p5 AND DayOfYear = @p6) OR
(LeapYear = @p7 AND DayOfYear = @p8)
)
Which would produce the same outcome as expected.
However the generated WHERE clause actually generates as follows:
WHERE
(
(
(Id = @p0) AND
(
(
(
(
(
(
(
(LeapYear = @p1) AND (DayOfYear > @p2)
) AND (DayOfYear = @p3)
) OR (LeapYear = @p4)
) AND (DayOfYear <= @p5)
) AND (DayOfYear = @p6)
) OR (LeapYear = @p7)
) AND (DayOfYear = @p8)
)
)
)
This issue I believe I have with the generated WHERE clause is that it loses the grouping between the OR operators that surround the AND operators and ensure that the AND operators are run against each other prior to applying the OR operators.
Any assistance resolving this issue would be greatly appreciated.
Thanks.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.

Formatted the example above:
?$filter=Id eq 1663 and
(
(LeapYear eq true and DayOfYear gt 59 and DayOfYear eq 62) or
(LeapYear eq true and DayOfYear le 59 and DayOfYear eq 61) or
(LeapYear eq false and DayOfYear eq 61)
)

Hi Trevor,
Thanks for the info, that does work correctly, generating appropriate SQL.
I will use the precedence grouping operators as suggested to filter these scenarios.
Many thanks.

No worries, glad that sorted it!
Did my comment about the DayOfYear gt 59 and DayOfYear eq 62 make sense to you?

Yes, that sorted it thanks.
I understand why it seems a little strange and its a all to do with LeapYears and DayOfYear.
During a LeapYear the DayOfYear needs to be 1 day higher after the 59th day therefore the DayofYear would need to check for 62 rather than 61 to return the same day during a LeapYear vs a RegularYear.
Hope that makes sense to you? I am always open to suggestions on improvements.

I understand that part but what I wasn't sure made sense was having the gt and eq on the same property within a single predicate because if you have (LeapYear eq true and DayOfYear gt 59 and DayOfYear eq 62) and DayOfYear is not equal to 62 then it doesn't matter if it is still greater than 59.

I see your point, it should behave the same without the DayOfYear gt 59, I think this was down to how we were generating the values to use but having looked at it a bit further given the information you suggest I have taken out the DayOfYear gt 59 and adjusted the values we use accordingly.
Thanks for the suggestion, I will test the new method to ensure that it returns results in the same way.


[BUG] Can't delete volumesnapshot if backup removed first

Describe the bug
After using volumesnapshot to create backup, if we delete backup first then delete the volumesnapshot, the volumesnapshot delete will stuck forever
To Reproduce
Steps to reproduce the behavior:

Deploy Longhorn v1.3.0-rc3
Enable Install the Snapshot CRDs / controller introduced here (Use 4.0)
Create VolumeSnapshotClass longhorn-backup

kind: VolumeSnapshotClass
apiVersion: snapshot.storage.k8s.io/v1beta1
metadata:
  name: longhorn-backup
driver: driver.longhorn.io
deletionPolicy: Delete
parameters:
  type: bak

Create Longhorn volume test-vol of 5GB. Create PV/PVC for the Longhorn volume
Create a workload that uses the volume. Write some data to the volume
Create a VolumeSnapshot

apiVersion: snapshot.storage.k8s.io/v1beta1
kind: VolumeSnapshot
metadata:
  name: test-snapshot-longhorn-backup
spec:
  volumeSnapshotClassName: longhorn-backup
  source:
    persistentVolumeClaimName: test-vol

Verify that a backup is created
Verify volumesnpashot test-snapshot-longhorn-backup created
Delete backup
Delete volumesnapshot by command kubectl delete volumesnapshot test-snapshot-longhorn-backup
The delete process will stucked

Expected behavior
Volumesnpashot should delete successfully
Log or Support bundle
N/A
Environment

Longhorn version: v1.3.0-rc3
Installation method (e.g. Rancher Catalog App/Helm/Kubectl): kubectl
Kubernetes distro (e.g. RKE/K3s/EKS/OpenShift) and version: k3d

Number of management node in the cluster: 1
Number of worker node in the cluster: 3

Node config

OS type and version: Ubuntu 20.04

Underlying Infrastructure (e.g. on AWS/GCE, EKS/GKE, VMWare/KVM, Baremetal): VMWare
Number of Longhorn volumes in the cluster: 1

Additional context
If run kubectl delete volumesnapshot test-snapshot-longhorn-backup when backup exist, Both backup and volumesnapshot will delete successful

This seems the same behavior of older versions (ex: 1.2.4), so it should not be a regression but rather a new issue.
https://github.com/longhorn/longhorn-manager/blob/ec91a689daef211cd0435f840d7fed2f4fb2ae51/csi/controller_server.go#L798-L811 (1.3.0)
https://github.com/longhorn/longhorn-manager/blob/b661af0c6315d0f910a3400b650b0e9fba2df577/csi/controller_server.go#L692-L712 (1.2.4)

Use the same step double verify on v1.2.4, can reproduce on Longhorn v1.2.4
In kubectl terminal, can observe the volumesanpshot delete command will never complete and
In Rancher UI can see Resource scheduled for deletion as below picture shows

Verified in longhorn master 0e002d
Result Pass

With test steps here, volumesnapshot can be deleted when backup removed first.
If create volumesanpshot without backup target set, when deleting that volumesnapshot the deletion will stuck, after backup target setup correctly, the volumesnapshot will be deleted correctly after awhile.

@weizhe0422 is item 2 a correct behavior?
cc @PhanLe1010

If create volumesanpshot without backup target set, when deleting that volumesnapshot the deletion will stuck, after backup target setup correctly, the volumesnapshot will be deleted correctly after awhile.

Yes I can create volumesnapshot without backup target, volumesnapshot READYTOUSE state will be false, in this moment delete that volumesnapshot will stuck.
After add backup target into LH, the volumesnapshot delete progress will complete after while, then by command k get volumesnapshot can comfirm the volumesnapshot deleted.

Thanks, @chriscchien , so I think the volumesnapshot should be able to delete if it's not started yet. Could you create an issue for that? Thanks.

I think this is one of the things that can happen to users.
The delete would fail probably because the snapshot/backup could not be created.
However, the reason still needs to be further confirmed.
k describe VolumeSnapshotContent snapcontent-a21e2c1a-9942-4cf4-938e-e3c9af01cf0c
Events:
  Type     Reason                               Age    From                                Message
  ----     ------                               ----   ----                                -------
  Warning  SnapshotCreationFailed               4m49s  csi-snapshotter driver.longhorn.io  Failed to create snapshot: failed to take snapshot of the volume, pvc-2ea7aff0-8622-4a78-b97f-16e09fdac6dc: "timestamp: nil Timestamp"
  Warning  SnapshotContentCheckandUpdateFailed  4m49s  csi-snapshotter driver.longhorn.io  Failed to check and update snapshot content: failed to take snapshot of the volume, pvc-2ea7aff0-8622-4a78-b97f-16e09fdac6dc: "timestamp: nil Timestamp"


Lights lack SUPPORT_TRANSITION

I noticed that Lutron Caseta specificially lacks the SUPPORT_TRANSITION effects, yet the Lutron Caseta dimmers definitely seem to have support.

The dimmers transition, at least when you physically press the button, but the Android app doesn't seem to so I'm not sure if there's a good way to do it.

There is a GoToDimmedLevel command but thats all I could find

What do you mean by support transition?

For Hue there's a way to specify how long the lights should transition between off and on, but I haven't found anything similar for Caseta.

This worked for me:
{
    "CommuniqueType": "CreateRequest",
    "Header": {
        "Url": "/zone/7/commandprocessor"
    },
    "Body": {
        "Command": {
            "CommandType": "GoToDimmedLevel",
            "DimmedLevelParameters": {
                "Level": 0,
                "FadeTime":"00:00:10"
            }
        }
    }
}

But that would require reworking pylutron-caseta's set_value implementation to treat switches and dimmers separately.

How do you both know about GoToDimmedLevel but Google does not?

How do you both know about GoToDimmedLevel but Google does not?

https://ibotpeaches.github.io/Apktool/

I was sure the app did not support that, but it does contain GoToDimmedLevel. I'm not sure what for.

After merging #56 I have code for this on https://github.com/mdonoughe/pylutron-caseta/tree/dimmedlevel .
I'm using this in Home Assistant by copying my custom lutron_caseta folder to config/custom_components. The dependency update in manifest.json causes my dimmedlevel branch to be copied to config/deps. https://github.com/mdonoughe/home-assistant/tree/caseta-0.7/homeassistant/components/lutron_caseta