text:
failed for task ':app:kaptDebugKotlin'     java.lang.NoClassDefFoundError: com/grosner/kpoet/TypeNameExtensionsKt

ISSUE_TEMPLATE
DBFlow Version: 5.0.0-alpha2
Bug or Feature Request:
build failure
buildscript {
ext.kotlin_version = "1.4.10"
repositories {
google()
mavenCentral()
maven { url "https://www.jitpack.io" }
}
dependencies {
classpath 'com.android.tools.build:gradle:4.2.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    def nav_version = "2.3.4"
    classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"

    classpath 'com.google.dagger:hilt-android-gradle-plugin:2.28-alpha'

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}

}
allprojects {
repositories {
google()
mavenCentral()
maven { url "https://www.jitpack.io" }
}
}
def dbflow_version = "5.0.0-alpha2"
def sqlcipher_version = "4.4.3"
// Use if Kotlin user.
kapt "com.github.agrosner.dbflow:processor:${dbflow_version}"

// Annotation Processor
// if only using Java, use this. If using Kotlin do NOT use this.

//    annotationProcessor "com.github.agrosner.dbflow:processor:${dbflow_version}"
// core set of libraries
implementation "com.github.agrosner.dbflow:core:${dbflow_version}"
implementation "com.github.agrosner.dbflow:lib:${dbflow_version}"

// sql-cipher database encryption (optional)

//    implementation "com.github.agrosner.dbflow:sqlcipher:${dbflow_version}"
//    implementation "net.zetetic:android-database-sqlcipher:${sqlcipher_version}@aar"
// RXJava 2 support
implementation "com.github.agrosner.dbflow:reactive-streams:${dbflow_version}"

// Kotlin Coroutines
implementation "com.github.agrosner.dbflow:coroutines:${dbflow_version}"

// Android Architecture Components Paging Library Support
implementation "com.github.agrosner.dbflow:paging:${dbflow_version}"

// Android Architecture Components LiveData Library Support
implementation "com.github.agrosner.dbflow:livedata:${dbflow_version}"

// adds generated content provider annotations + support.
implementation "com.github.agrosner.dbflow:contentprovider:${dbflow_version}"

Description:
Execution failed for task ':app:kaptDebugKotlin'.

A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution
java.lang.reflect.InvocationTargetException (no error message)

Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.

Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:kaptDebugKotlin'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:200)
at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:263)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:198)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:179)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:109)
at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:62)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:76)
at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:76)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:41)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:372)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:359)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:352)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:338)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
Caused by: org.gradle.workers.internal.DefaultWorkerExecutor$WorkExecutionException: A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution
at org.gradle.workers.internal.DefaultWorkerExecutor$WorkItemExecution.waitForCompletion(DefaultWorkerExecutor.java:336)
at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForItemsAndGatherFailures(DefaultAsyncWorkTracker.java:142)
at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForItemsAndGatherFailures(DefaultAsyncWorkTracker.java:94)
at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForAll(DefaultAsyncWorkTracker.java:80)
at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForCompletion(DefaultAsyncWorkTracker.java:68)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$3.run(ExecuteActionsTaskExecuter.java:563)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:71)
at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:71)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:540)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:523)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$300(ExecuteActionsTaskExecuter.java:108)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.executeWithPreviousOutputFiles(ExecuteActionsTaskExecuter.java:271)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:260)
at org.gradle.internal.execution.steps.ExecuteStep.lambda$execute$0(ExecuteStep.java:33)
at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:33)
at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:26)
at org.gradle.internal.execution.steps.CleanupOutputsStep.execute(CleanupOutputsStep.java:67)
at org.gradle.internal.execution.steps.CleanupOutputsStep.execute(CleanupOutputsStep.java:36)
at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:49)
at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:34)
at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:43)
at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:73)
at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:54)
at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:44)
at org.gradle.internal.execution.steps.SnapshotOutputsStep.execute(SnapshotOutputsStep.java:54)
at org.gradle.internal.execution.steps.SnapshotOutputsStep.execute(SnapshotOutputsStep.java:38)
at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:42)
at org.gradle.internal.execution.steps.CacheStep.executeWithoutCache(CacheStep.java:159)
at org.gradle.internal.execution.steps.CacheStep.execute(CacheStep.java:72)
at org.gradle.internal.execution.steps.CacheStep.execute(CacheStep.java:43)
at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:44)
at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:33)
at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:38)
at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:24)
at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:92)
at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:85)
at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:55)
at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:39)
at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:76)
at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:37)
at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:36)
at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:26)
at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:94)
at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:49)
at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:79)
at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:53)
at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:74)
at org.gradle.internal.execution.steps.SkipEmptyWorkStep.lambda$execute$2(SkipEmptyWorkStep.java:78)
at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:78)
at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:34)
at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:39)
at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:40)
at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:28)
at org.gradle.internal.execution.impl.DefaultWorkExecutor.execute(DefaultWorkExecutor.java:33)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:187)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:179)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:109)
at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:62)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:76)
at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:76)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:41)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:372)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:359)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:352)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:338)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
Caused by: java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.jetbrains.kotlin.gradle.internal.KaptExecution.run(KaptWithoutKotlincTask.kt:158)
at org.gradle.workers.internal.AdapterWorkAction.execute(AdapterWorkAction.java:57)
at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:63)
at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:67)
at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:63)
at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:97)
at org.gradle.workers.internal.NoIsolationWorkerFactory$1.lambda$execute$0(NoIsolationWorkerFactory.java:63)
at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44)
at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:76)
at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:76)
at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41)
at org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:60)
at org.gradle.workers.internal.DefaultWorkerExecutor.lambda$submitWork$2(DefaultWorkerExecutor.java:200)
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:215)
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:164)
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:131)
... 3 more
Caused by: java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.jetbrains.kotlin.kapt3.base.AnnotationProcessingKt.doAnnotationProcessing(annotationProcessing.kt:75)
at org.jetbrains.kotlin.kapt3.base.AnnotationProcessingKt.doAnnotationProcessing$default(annotationProcessing.kt:34)
at org.jetbrains.kotlin.kapt3.base.Kapt.kapt(Kapt.kt:45)
... 31 more
Caused by: com.sun.tools.javac.processing.AnnotationProcessingError: java.lang.NoClassDefFoundError: com/grosner/kpoet/TypeNameExtensionsKt
at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:992)
at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:896)
at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1222)
at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1334)
at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1258)
at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1157)
... 37 more
Caused by: java.lang.NoClassDefFoundError: com/grosner/kpoet/TypeNameExtensionsKt
at com.dbflow5.processor.definition.BaseDefinition.(BaseDefinition.kt:84)
at com.dbflow5.processor.definition.DatabaseDefinition.(DatabaseDefinition.kt:33)
at com.dbflow5.processor.DatabaseHandler.onProcessElement(Handlers.kt:260)
at com.dbflow5.processor.DatabaseHandler.onProcessElement(Handlers.kt:255)
at com.dbflow5.processor.AnnotatedHandler.handle(Handlers.kt:65)
at com.dbflow5.processor.ProcessorManager.handle(ProcessorManager.kt:235)
at com.dbflow5.processor.DBFlowProcessor.process(DBFlowProcessor.kt:73)
at org.jetbrains.kotlin.kapt3.base.incremental.IncrementalProcessor.process(incrementalProcessors.kt)
at org.jetbrains.kotlin.kapt3.base.ProcessorWrapper.process(annotationProcessing.kt:161)
at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:980)
... 42 more
Caused by: java.lang.ClassNotFoundException: com.grosner.kpoet.TypeNameExtensionsKt
... 52 more

I am experiencing the same issue. Then I am trying to solve this issue by adding the following dependency to the build.gralde
    implementation 'com.squareup:javapoet:1.8.0'
    implementation 'com.github.agrosner:KPoet:1.0.0' // version of KPoet

But I am getting the new error
> Could not resolve all files for configuration ':app:debugRuntimeClasspath'.
   > Failed to transform KPoet-1.0.0.jar (com.github.agrosner:KPoet:1.0.0) to match attributes {artifactType=android-dex, dexing-enable-desugaring=true, dexing-incremental-desugaring-v2=false, dexing-is-debuggable=true, dexing-min-sdk=23, org.gradle.category=library, org.gradle.libraryelements=jar, org.gradle.status=release, org.gradle.usage=java-runtime}.
      > Execution failed for DexingWithClasspathTransform: /Users/jifang/.gradle/caches/transforms-2/files-2.1/113cdc5e19a30d0ca1d2c0edd4ea825b/jetified-KPoet-1.0.0.jar.
         > Error while dexing.

... ...

Caused by: com.android.tools.r8.utils.b: Error: Method name '@$default' in class 'com.grosner.kpoet.MethodExtensionsKt' cannot be represented in dex format.

kapt 'com.squareup:javapoet:1.8.0'
kapt 'com.github.agrosner:KPoet:1.0.0' // version of KPoet

authors: 1993hzw anypwx jifang

repo: agrosner/DBFlow


text:
improve performance of get

@vkarpov15
To improve the performance of mongoose, I optimized mpath.get()
Benchmarks:
Before:
mpath.get("first", obj) x 7,258,829 ops/sec ±1.02% (89 runs sampled)
mpath.get("first.second", obj) x 3,276,021 ops/sec ±0.54% (91 runs sampled)
mpath.get("first.second.third.1.name", obj) x 1,597,895 ops/sec ±0.53% (92 runs sampled)
mpath.get("comments", obj) x 4,858,920 ops/sec ±0.64% (90 runs sampled)
mpath.get("comments.1", obj) x 3,531,918 ops/sec ±0.55% (89 runs sampled)
mpath.get("comments.2.name", obj) x 2,494,564 ops/sec ±0.67% (91 runs sampled)
mpath.get("comments.2.comments.1.comments.0.val", obj) x 1,132,979 ops/sec ±1.30% (93 runs sampled)
mpath.get("comments.name", obj) x 1,320,459 ops/sec ±0.87% (90 runs sampled)

After:
mpath.get("first", obj) x 59,995,806 ops/sec ±0.47% (95 runs sampled)
mpath.get("first.second", obj) x 4,726,077 ops/sec ±0.49% (96 runs sampled)
mpath.get("first.second.third.1.name", obj) x 3,373,241 ops/sec ±0.40% (92 runs sampled)
mpath.get("comments", obj) x 23,057,858 ops/sec ±1.34% (87 runs sampled)
mpath.get("comments.1", obj) x 4,074,548 ops/sec ±0.31% (93 runs sampled)
mpath.get("comments.2.name", obj) x 3,708,106 ops/sec ±0.44% (89 runs sampled)
mpath.get("comments.2.comments.1.comments.0.val", obj) x 2,740,973 ops/sec ±0.45% (94 runs sampled)
mpath.get("comments.name", obj) x 1,609,356 ops/sec ±0.23% (95 runs sampled)

I would add more optimizations if this one gets accepted. ;)

@AbdelrahmanHafez
:)

I really wonder why retrieving "comments" is half the speed of "first". Maybe a deoptimization?!

Added benchmarks for stringToParts
Before:
stringToParts("first") x 11,072,720 ops/sec ±1.06% (86 runs sampled)
stringToParts("first.second") x 5,598,882 ops/sec ±0.31% (92 runs sampled)
stringToParts("first.second.third.1.name") x 3,068,168 ops/sec ±0.52% (91 runs sampled)
stringToParts("comments") x 7,866,749 ops/sec ±0.59% (93 runs sampled)
stringToParts("comments.1") x 7,193,658 ops/sec ±0.44% (95 runs sampled)
stringToParts("comments.2.name") x 5,328,157 ops/sec ±0.63% (91 runs sampled)
stringToParts("comments.2.comments.1.comments.0.val") x 2,332,454 ops/sec ±0.58% (91 runs sampled)
stringToParts("comments.name") x 5,605,289 ops/sec ±0.47% (91 runs sampled)
stringToParts("foo[1mystring]") x 2,805,068 ops/sec ±0.52% (90 runs sampled)
stringToParts("foo[1mystring].bar[1]") x 1,854,413 ops/sec ±0.48% (94 runs sampled)
stringToParts("foo[1mystring][2]") x 2,034,563 ops/sec ±0.53% (90 runs sampled)

After
stringToParts("first") x 72,483,520 ops/sec ±1.16% (93 runs sampled)
stringToParts("first.second") x 6,557,565 ops/sec ±0.46% (89 runs sampled)
stringToParts("first.second.third.1.name") x 6,602,806 ops/sec ±0.38% (94 runs sampled)
stringToParts("comments") x 71,338,213 ops/sec ±1.23% (91 runs sampled)
stringToParts("comments.1") x 6,600,806 ops/sec ±0.37% (95 runs sampled)
stringToParts("comments.2.name") x 6,694,227 ops/sec ±0.46% (92 runs sampled)
stringToParts("comments.2.comments.1.comments.0.val") x 6,632,548 ops/sec ±0.40% (94 runs sampled)
stringToParts("comments.name") x 6,595,215 ops/sec ±0.38% (92 runs sampled)
stringToParts("foo[1mystring]") x 3,924,286 ops/sec ±1.03% (89 runs sampled)
stringToParts("foo[1mystring].bar[1]") x 2,894,064 ops/sec ±0.92% (89 runs sampled)
stringToParts("foo[1mystring][2]") x 3,163,046 ops/sec ±1.01% (88 runs sampled)

As you can see, the performance for splitting is slighty slower, but more stable when we have more dots.

I use now a regex as delimiter:
stringToParts("first") x 72,895,088 ops/sec ±1.15% (94 runs sampled)
stringToParts("first.second") x 9,295,418 ops/sec ±0.50% (91 runs sampled)
stringToParts("first.second.third.1.name") x 5,661,157 ops/sec ±0.45% (95 runs sampled)
stringToParts("comments") x 71,932,231 ops/sec ±0.99% (92 runs sampled)
stringToParts("comments.1") x 9,847,519 ops/sec ±0.89% (93 runs sampled)
stringToParts("comments.2.name") x 7,918,027 ops/sec ±0.43% (94 runs sampled)
stringToParts("comments.2.comments.1.comments.0.val") x 4,387,123 ops/sec ±0.42% (93 runs sampled)
stringToParts("comments.name") x 9,477,638 ops/sec ±0.32% (94 runs sampled)
stringToParts("foo[1mystring]") x 4,491,337 ops/sec ±0.90% (88 runs sampled)
stringToParts("foo[1mystring].bar[1]") x 3,401,067 ops/sec ±1.31% (88 runs sampled)
stringToParts("foo[1mystring][2]") x 3,747,096 ops/sec ±1.21% (91 runs sampled)

So the performance degrades with every additional dot.
If we use a dot as string for a delimiter, there is no performance degredation.
@vkarpov15 What is the better tradeoff?

I reverted that change. I think it is better to have a stable  performance, than have a very fast degrading performance. But it is your call.

benchmark for set had wrong parameter order
benchmark of set against master
mpath.set("first", obj, val) x 4,888,609 ops/sec ±0.94% (92 runs sampled)
mpath.set("first.second", obj, val) x 2,833,099 ops/sec ±0.31% (96 runs sampled)
mpath.set("first.second.third.1.name", obj, val) x 1,307,018 ops/sec ±0.20% (93 runs sampled)
mpath.set("comments", obj, val) x 3,149,258 ops/sec ±0.37% (92 runs sampled)
mpath.set("comments.1", obj, val) x 3,079,246 ops/sec ±0.25% (94 runs sampled)
mpath.set("comments.2.name", obj, val) x 2,208,094 ops/sec ±0.23% (98 runs sampled)
mpath.set("comments.2.comments.1.comments.0.val", obj, val) x 1,051,480 ops/sec ±0.36% (93 runs sampled)
mpath.set("comments.name", obj, val) x 2,047,667 ops/sec ±0.21% (96 runs sampled)

Improved set
Benchmarks after
mpath.set("first", obj, val) x 25,653,711 ops/sec ±0.41% (95 runs sampled)
mpath.set("first.second", obj, val) x 4,050,477 ops/sec ±0.47% (92 runs sampled)
mpath.set("first.second.third.1.name", obj, val) x 2,673,824 ops/sec ±0.32% (94 runs sampled)
mpath.set("comments", obj, val) x 14,821,293 ops/sec ±0.53% (93 runs sampled)
mpath.set("comments.1", obj, val) x 3,316,825 ops/sec ±0.49% (91 runs sampled)
mpath.set("comments.2.name", obj, val) x 3,012,609 ops/sec ±0.33% (92 runs sampled)
mpath.set("comments.2.comments.1.comments.0.val", obj, val) x 2,145,037 ops/sec ±0.43% (92 runs sampled)
mpath.set("comments.name", obj, val) x 3,023,309 ops/sec ±0.25% (93 runs sampled)

@vkarpov15
@AbdelrahmanHafez
Ok, I am done. Everything is imho up to standard. :). Can you review it please?

on node 14
master
stringToParts("first") x 11,226,719 ops/sec ±0.59% (89 runs sampled)
stringToParts("first.second") x 5,564,152 ops/sec ±0.39% (89 runs sampled)
stringToParts("first.second.third.1.name") x 3,071,618 ops/sec ±0.56% (86 runs sampled)
stringToParts("comments") x 7,853,022 ops/sec ±0.43% (93 runs sampled)
stringToParts("comments.1") x 7,231,409 ops/sec ±0.39% (93 runs sampled)
stringToParts("comments.2.name") x 5,166,704 ops/sec ±0.43% (94 runs sampled)
stringToParts("comments.2.comments.1.comments.0.val") x 2,311,376 ops/sec ±0.50% (94 runs sampled)
stringToParts("comments.name") x 5,772,828 ops/sec ±0.52% (95 runs sampled)
stringToParts("foo[1mystring]") x 2,826,174 ops/sec ±0.63% (90 runs sampled)
stringToParts("foo[1mystring].bar[1]") x 1,890,382 ops/sec ±0.37% (94 runs sampled)
stringToParts("foo[1mystring][2]") x 2,109,377 ops/sec ±0.56% (92 runs sampled)
mpath.get("first", obj) x 6,475,577 ops/sec ±0.83% (89 runs sampled)
mpath.get("first.second", obj) x 2,798,907 ops/sec ±0.51% (92 runs sampled)
mpath.get("first.second.third.1.name", obj) x 1,359,754 ops/sec ±0.53% (91 runs sampled)
mpath.get("comments", obj) x 4,047,669 ops/sec ±0.77% (93 runs sampled)
mpath.get("comments.1", obj) x 2,953,036 ops/sec ±0.78% (91 runs sampled)
mpath.get("comments.2.name", obj) x 2,161,514 ops/sec ±0.39% (90 runs sampled)
mpath.get("comments.2.comments.1.comments.0.val", obj) x 973,012 ops/sec ±0.68% (90 runs sampled)
mpath.get("comments.name", obj) x 1,182,390 ops/sec ±0.50% (95 runs sampled)
mpath.has("first", obj) x 6,320,144 ops/sec ±0.97% (91 runs sampled)
mpath.has("first.second", obj) x 1,995,017 ops/sec ±0.48% (91 runs sampled)
mpath.has("first.second.third.1.name", obj) x 1,064,239 ops/sec ±0.38% (97 runs sampled)
mpath.has("comments", obj) x 3,071,560 ops/sec ±0.60% (94 runs sampled)
mpath.has("comments.1", obj) x 2,725,564 ops/sec ±0.43% (96 runs sampled)
mpath.has("comments.2.name", obj) x 1,833,013 ops/sec ±0.43% (97 runs sampled)
mpath.has("comments.2.comments.1.comments.0.val", obj) x 865,523 ops/sec ±0.58% (95 runs sampled)
mpath.has("comments.name", obj) x 1,949,026 ops/sec ±0.43% (95 runs sampled)
mpath.has("foo[1mystring]", obj) x 1,485,573 ops/sec ±0.52% (96 runs sampled)
mpath.has("foo[1mystring].bar[1]", obj) x 1,231,943 ops/sec ±0.45% (95 runs sampled)
mpath.has("foo[1mystring][2]", obj) x 1,284,794 ops/sec ±0.47% (93 runs sampled)
mpath.has(["comments", "2", "comments","1","comments","0","val"], obj) x 8,859,907 ops/sec ±0.56% (92 runs sampled)
mpath.set("first", obj, val) x 4,373,948 ops/sec ±0.41% (94 runs sampled)
mpath.set("first.second", obj, val) x 2,543,945 ops/sec ±0.27% (93 runs sampled)
mpath.set("first.second.third.1.name", obj, val) x 1,317,064 ops/sec ±0.52% (92 runs sampled)
mpath.set("comments", obj, val) x 3,572,302 ops/sec ±0.30% (96 runs sampled)
mpath.set("comments.1", obj, val) x 2,724,744 ops/sec ±0.22% (91 runs sampled)
mpath.set("comments.2.name", obj, val) x 1,976,067 ops/sec ±0.50% (92 runs sampled)
mpath.set("comments.2.comments.1.comments.0.val", obj, val) x 970,860 ops/sec ±0.29% (94 runs sampled)
mpath.set("comments.name", obj, val) x 1,856,040 ops/sec ±0.18% (95 runs sampled)
mpath.set("arr.test", [[42]], obj)) x 2,486,191 ops/sec ±0.41% (94 runs sampled)
To get some reliable benchmarks, replace in unset return delete cur[part]; with return true.
mpath.unset("first", obj) x 3,923,270 ops/sec ±0.44% (91 runs sampled)
mpath.unset("first.second", obj) x 2,772,676 ops/sec ±0.46% (94 runs sampled)
mpath.unset("first.second.third.1.name", obj) x 1,860,037 ops/sec ±0.50% (95 runs sampled)
mpath.unset("comments", obj) x 3,113,825 ops/sec ±0.51% (92 runs sampled)
mpath.unset("comments.1", obj) x 2,929,182 ops/sec ±0.42% (94 runs sampled)
mpath.unset("comments.2.name", obj) x 2,493,021 ops/sec ±0.54% (91 runs sampled)
mpath.unset("comments.2.comments.1.comments.0.val", obj) x 1,435,760 ops/sec ±0.66% (91 runs sampled)
mpath.unset("comments.name", obj) x 2,574,483 ops/sec ±0.33% (94 runs sampled)

this branch
> node ./benchmarks

stringToParts("first") x 73,568,537 ops/sec ±0.25% (93 runs sampled)
stringToParts("first.second") x 6,592,612 ops/sec ±0.30% (95 runs sampled)
stringToParts("first.second.third.1.name") x 6,599,756 ops/sec ±0.33% (93 runs sampled)
stringToParts("comments") x 72,313,409 ops/sec ±0.55% (92 runs sampled)
stringToParts("comments.1") x 6,609,289 ops/sec ±0.28% (94 runs sampled)
stringToParts("comments.2.name") x 6,602,317 ops/sec ±0.28% (94 runs sampled)
stringToParts("comments.2.comments.1.comments.0.val") x 6,386,758 ops/sec ±0.35% (95 runs sampled)
stringToParts("comments.name") x 6,622,182 ops/sec ±0.26% (93 runs sampled)
stringToParts("foo[1mystring]") x 4,565,073 ops/sec ±0.53% (91 runs sampled)
stringToParts("foo[1mystring].bar[1]") x 3,441,588 ops/sec ±0.55% (89 runs sampled)
stringToParts("foo[1mystring][2]") x 3,991,700 ops/sec ±0.61% (92 runs sampled)
mpath.get("first", obj) x 26,399,064 ops/sec ±1.23% (83 runs sampled)
mpath.get("first.second", obj) x 4,424,826 ops/sec ±0.30% (93 runs sampled)
mpath.get("first.second.third.1.name", obj) x 3,396,147 ops/sec ±0.39% (93 runs sampled)
mpath.get("comments", obj) x 21,574,192 ops/sec ±0.89% (89 runs sampled)
mpath.get("comments.1", obj) x 3,909,708 ops/sec ±0.35% (92 runs sampled)
mpath.get("comments.2.name", obj) x 3,681,866 ops/sec ±0.42% (92 runs sampled)
mpath.get("comments.2.comments.1.comments.0.val", obj) x 2,824,078 ops/sec ±0.59% (94 runs sampled)
mpath.get("comments.name", obj) x 1,527,945 ops/sec ±0.97% (91 runs sampled)
mpath.has("first", obj) x 34,901,892 ops/sec ±4.62% (69 runs sampled)
mpath.has("first.second", obj) x 4,375,331 ops/sec ±0.34% (91 runs sampled)
mpath.has("first.second.third.1.name", obj) x 3,422,446 ops/sec ±0.51% (95 runs sampled)
mpath.has("comments", obj) x 18,468,901 ops/sec ±1.29% (84 runs sampled)
mpath.has("comments.1", obj) x 4,181,470 ops/sec ±0.40% (94 runs sampled)
mpath.has("comments.2.name", obj) x 3,859,458 ops/sec ±0.45% (91 runs sampled)
mpath.has("comments.2.comments.1.comments.0.val", obj) x 3,075,983 ops/sec ±0.31% (95 runs sampled)
mpath.has("comments.name", obj) x 4,073,711 ops/sec ±0.54% (89 runs sampled)
mpath.has("foo[1mystring]", obj) x 2,056,865 ops/sec ±0.24% (94 runs sampled)
mpath.has("foo[1mystring].bar[1]", obj) x 1,752,298 ops/sec ±0.36% (94 runs sampled)
mpath.has("foo[1mystring][2]", obj) x 1,927,552 ops/sec ±0.54% (92 runs sampled)
mpath.has(["comments", "2", "comments","1","comments","0","val"], obj) x 8,401,156 ops/sec ±0.78% (92 runs sampled)
mpath.set("first", obj, val) x 19,417,628 ops/sec ±1.04% (89 runs sampled)
mpath.set("first.second", obj, val) x 4,044,316 ops/sec ±0.28% (94 runs sampled)
mpath.set("first.second.third.1.name", obj, val) x 2,984,935 ops/sec ±0.28% (95 runs sampled)
mpath.set("comments", obj, val) x 13,202,177 ops/sec ±0.93% (89 runs sampled)
mpath.set("comments.1", obj, val) x 3,630,334 ops/sec ±0.69% (89 runs sampled)
mpath.set("comments.2.name", obj, val) x 3,394,605 ops/sec ±0.48% (92 runs sampled)
mpath.set("comments.2.comments.1.comments.0.val", obj, val) x 2,451,853 ops/sec ±0.30% (94 runs sampled)
mpath.set("comments.name", obj, val) x 3,142,130 ops/sec ±0.73% (93 runs sampled)
mpath.set("arr.test", [[42]], obj)) x 3,412,588 ops/sec ±0.27% (95 runs sampled)
To get some reliable benchmarks, replace in unset return delete cur[part]; with return true.
mpath.unset("first", obj) x 19,953,208 ops/sec ±0.69% (92 runs sampled)
mpath.unset("first.second", obj) x 5,080,429 ops/sec ±0.40% (93 runs sampled)
mpath.unset("first.second.third.1.name", obj) x 5,091,129 ops/sec ±0.42% (93 runs sampled)
mpath.unset("comments", obj) x 19,640,944 ops/sec ±0.75% (91 runs sampled)
mpath.unset("comments.1", obj) x 5,065,029 ops/sec ±0.40% (90 runs sampled)
mpath.unset("comments.2.name", obj) x 5,078,789 ops/sec ±0.44% (91 runs sampled)
mpath.unset("comments.2.comments.1.comments.0.val", obj) x 4,935,632 ops/sec ±0.34% (95 runs sampled)
mpath.unset("comments.name", obj) x 5,044,646 ops/sec ±0.37% (93 runs sampled)

Re: https://github.com/aheckmann/mpath/pull/14#issuecomment-1016242711, "I think it is better to have a stable performance, than have a very fast degrading performance", I agree, predictable performance is better for this lib.

@vkarpov15
@AbdelrahmanHafez
I fixed your remarks. I added the ability to set an additional tokenizer cache. In my benchmark I use a simple Map, but you are able to use e.g. lru-cache.
On node 14
> node ./benchmarks/bench.js

stringToParts("first") x 69,526,920 ops/sec ±0.36% (95 runs sampled)
stringToParts("first.second") x 6,540,082 ops/sec ±0.30% (94 runs sampled)
stringToParts("first.second.third.1.name") x 6,467,865 ops/sec ±0.56% (92 runs sampled)
stringToParts("comments") x 67,906,617 ops/sec ±0.88% (94 runs sampled)
stringToParts("comments.1") x 6,465,457 ops/sec ±0.59% (92 runs sampled)
stringToParts("comments.2.name") x 6,509,926 ops/sec ±0.44% (88 runs sampled)
stringToParts("comments.2.comments.1.comments.0.val") x 6,376,303 ops/sec ±0.67% (93 runs sampled)
stringToParts("comments.name") x 6,515,347 ops/sec ±0.28% (93 runs sampled)
stringToParts("foo[1mystring]") x 4,563,333 ops/sec ±0.69% (93 runs sampled)
stringToParts("foo[1mystring].bar[1]") x 3,248,934 ops/sec ±0.61% (88 runs sampled)
stringToParts("foo[1mystring][2]") x 3,983,136 ops/sec ±0.72% (92 runs sampled)
mpath.get("first", obj) x 33,572,570 ops/sec ±0.60% (93 runs sampled)
mpath.get("first.second", obj) x 4,717,555 ops/sec ±0.28% (92 runs sampled)
mpath.get("first.second.third.1.name", obj) x 3,434,640 ops/sec ±0.53% (91 runs sampled)
mpath.get("comments", obj) x 17,803,279 ops/sec ±0.69% (95 runs sampled)
mpath.get("comments.1", obj) x 4,074,737 ops/sec ±0.26% (95 runs sampled)
mpath.get("comments.2.name", obj) x 3,625,081 ops/sec ±0.43% (91 runs sampled)
mpath.get("comments.2.comments.1.comments.0.val", obj) x 2,682,924 ops/sec ±0.29% (96 runs sampled)
mpath.get("comments.name", obj) x 1,631,523 ops/sec ±0.29% (93 runs sampled)
mpath.has("first", obj) x 28,257,533 ops/sec ±1.28% (87 runs sampled)
mpath.has("first.second", obj) x 4,240,977 ops/sec ±0.72% (91 runs sampled)
mpath.has("first.second.third.1.name", obj) x 3,426,092 ops/sec ±0.43% (93 runs sampled)
mpath.has("comments", obj) x 17,531,812 ops/sec ±0.91% (89 runs sampled)
mpath.has("comments.1", obj) x 4,181,889 ops/sec ±0.56% (91 runs sampled)
mpath.has("comments.2.name", obj) x 3,759,199 ops/sec ±0.35% (93 runs sampled)
mpath.has("comments.2.comments.1.comments.0.val", obj) x 3,025,369 ops/sec ±0.45% (94 runs sampled)
mpath.has("comments.name", obj) x 3,937,535 ops/sec ±0.38% (92 runs sampled)
mpath.has("foo[1mystring]", obj) x 1,974,290 ops/sec ±0.49% (90 runs sampled)
mpath.has("foo[1mystring].bar[1]", obj) x 1,711,743 ops/sec ±0.41% (91 runs sampled)
mpath.has("foo[1mystring][2]", obj) x 1,900,625 ops/sec ±0.41% (91 runs sampled)
mpath.has(["comments", "2", "comments","1","comments","0","val"], obj) x 8,381,485 ops/sec ±0.67% (91 runs sampled)
mpath.set("first", obj, val) x 20,013,360 ops/sec ±0.56% (93 runs sampled)
mpath.set("first.second", obj, val) x 4,030,378 ops/sec ±0.78% (90 runs sampled)
mpath.set("first.second.third.1.name", obj, val) x 2,665,468 ops/sec ±0.41% (92 runs sampled)
mpath.set("comments", obj, val) x 13,445,133 ops/sec ±1.27% (89 runs sampled)
mpath.set("comments.1", obj, val) x 3,177,031 ops/sec ±0.97% (88 runs sampled)
mpath.set("comments.2.name", obj, val) x 3,083,730 ops/sec ±0.48% (94 runs sampled)
mpath.set("comments.2.comments.1.comments.0.val", obj, val) x 2,203,725 ops/sec ±0.36% (94 runs sampled)
mpath.set("comments.name", obj, val) x 2,985,744 ops/sec ±0.40% (95 runs sampled)
mpath.set("arr.test", [[42]], obj)) x 3,188,097 ops/sec ±0.30% (93 runs sampled)
To get some reliable benchmarks, replace in unset return delete cur[part]; with return true.
mpath.unset("first", obj) x 17,863,091 ops/sec ±1.07% (84 runs sampled)
mpath.unset("first.second", obj) x 4,648,304 ops/sec ±0.64% (91 runs sampled)
mpath.unset("first.second.third.1.name", obj) x 4,606,684 ops/sec ±0.41% (93 runs sampled)
mpath.unset("comments", obj) x 19,293,496 ops/sec ±0.80% (91 runs sampled)
mpath.unset("comments.1", obj) x 5,006,040 ops/sec ±0.38% (95 runs sampled)
mpath.unset("comments.2.name", obj) x 5,031,569 ops/sec ±0.36% (92 runs sampled)
mpath.unset("comments.2.comments.1.comments.0.val", obj) x 5,028,283 ops/sec ±0.40% (92 runs sampled)
mpath.unset("comments.name", obj) x 5,163,328 ops/sec ±0.42% (91 runs sampled)

> node ./benchmarks/bench-with-cache.js

stringToParts("first") x 55,035,746 ops/sec ±0.29% (95 runs sampled)
stringToParts("first.second") x 124,344,121 ops/sec ±0.61% (96 runs sampled)
stringToParts("first.second.third.1.name") x 125,387,034 ops/sec ±0.93% (97 runs sampled)
stringToParts("comments") x 52,652,732 ops/sec ±0.39% (96 runs sampled)
stringToParts("comments.1") x 123,813,267 ops/sec ±0.66% (95 runs sampled)
stringToParts("comments.2.name") x 122,354,410 ops/sec ±0.31% (94 runs sampled)
stringToParts("comments.2.comments.1.comments.0.val") x 125,275,601 ops/sec ±0.56% (94 runs sampled)
stringToParts("comments.name") x 124,528,396 ops/sec ±0.98% (93 runs sampled)
stringToParts("foo[1mystring]") x 100,125,510 ops/sec ±6.57% (78 runs sampled)
stringToParts("foo[1mystring].bar[1]") x 67,375,712 ops/sec ±2.31% (85 runs sampled)
stringToParts("foo[1mystring][2]") x 122,988,971 ops/sec ±0.89% (95 runs sampled)
mpath.get("first", obj) x 26,438,262 ops/sec ±1.09% (93 runs sampled)
mpath.get("first.second", obj) x 14,638,445 ops/sec ±1.27% (93 runs sampled)
mpath.get("first.second.third.1.name", obj) x 8,258,785 ops/sec ±0.97% (88 runs sampled)
mpath.get("comments", obj) x 15,823,542 ops/sec ±0.78% (91 runs sampled)
mpath.get("comments.1", obj) x 10,922,029 ops/sec ±0.63% (93 runs sampled)
mpath.get("comments.2.name", obj) x 9,441,785 ops/sec ±2.23% (82 runs sampled)
mpath.get("comments.2.comments.1.comments.0.val", obj) x 5,125,201 ops/sec ±1.01% (86 runs sampled)
mpath.get("comments.name", obj) x 2,352,914 ops/sec ±0.38% (95 runs sampled)
mpath.has("first", obj) x 23,823,239 ops/sec ±0.99% (90 runs sampled)
mpath.has("first.second", obj) x 14,094,837 ops/sec ±1.40% (89 runs sampled)
mpath.has("first.second.third.1.name", obj) x 9,633,501 ops/sec ±1.61% (87 runs sampled)
mpath.has("comments", obj) x 15,897,412 ops/sec ±0.82% (91 runs sampled)
mpath.has("comments.1", obj) x 12,590,462 ops/sec ±1.09% (89 runs sampled)
mpath.has("comments.2.name", obj) x 13,234,734 ops/sec ±1.40% (83 runs sampled)
mpath.has("comments.2.comments.1.comments.0.val", obj) x 7,586,033 ops/sec ±0.51% (95 runs sampled)
mpath.has("comments.name", obj) x 10,863,456 ops/sec ±1.03% (92 runs sampled)
mpath.has("foo[1mystring]", obj) x 9,732,172 ops/sec ±1.02% (84 runs sampled)
mpath.has("foo[1mystring].bar[1]", obj) x 10,220,312 ops/sec ±0.73% (93 runs sampled)
mpath.has("foo[1mystring][2]", obj) x 10,172,951 ops/sec ±0.75% (92 runs sampled)
mpath.has(["comments", "2", "comments","1","comments","0","val"], obj) x 8,524,693 ops/sec ±0.61% (91 runs sampled)
mpath.set("first", obj, val) x 16,819,567 ops/sec ±1.01% (92 runs sampled)
mpath.set("first.second", obj, val) x 9,351,171 ops/sec ±0.57% (92 runs sampled)
mpath.set("first.second.third.1.name", obj, val) x 4,925,642 ops/sec ±0.38% (92 runs sampled)
mpath.set("comments", obj, val) x 11,523,814 ops/sec ±0.78% (88 runs sampled)
mpath.set("comments.1", obj, val) x 6,557,040 ops/sec ±1.18% (92 runs sampled)
mpath.set("comments.2.name", obj, val) x 6,460,976 ops/sec ±0.56% (93 runs sampled)
mpath.set("comments.2.comments.1.comments.0.val", obj, val) x 3,633,191 ops/sec ±0.28% (92 runs sampled)
mpath.set("comments.name", obj, val) x 6,115,856 ops/sec ±0.89% (89 runs sampled)
mpath.set("arr.test", [[42]], obj)) x 6,845,332 ops/sec ±0.65% (93 runs sampled)
To get some reliable benchmarks, replace in unset return delete cur[part]; with return true.
mpath.unset("first", obj) x 17,165,169 ops/sec ±0.75% (93 runs sampled)
mpath.unset("first.second", obj) x 18,900,890 ops/sec ±1.23% (90 runs sampled)
mpath.unset("first.second.third.1.name", obj) x 19,776,773 ops/sec ±1.29% (86 runs sampled)
mpath.unset("comments", obj) x 14,991,654 ops/sec ±1.05% (92 runs sampled)
mpath.unset("comments.1", obj) x 16,700,442 ops/sec ±1.40% (89 runs sampled)
mpath.unset("comments.2.name", obj) x 23,575,072 ops/sec ±1.33% (89 runs sampled)
mpath.unset("comments.2.comments.1.comments.0.val", obj) x 18,612,758 ops/sec ±1.03% (80 runs sampled)
mpath.unset("comments.name", obj) x 15,589,431 ops/sec ±0.58% (90 runs sampled)

In production you would of course use e.g. lru-cache

Ok... I think I am done. I dont know how I can improve the speed any further :).
I ensured that if you dont use caching, the performance wont get hurt. I added another benchmark for fast-lru.
Here the latest benchmarks on node 14.
> node ./benchmarks/bench.js

tokenize("first") x 73,602,314 ops/sec ±0.35% (95 runs sampled)
tokenize("first.second") x 6,653,143 ops/sec ±0.61% (95 runs sampled)
tokenize("first.second.third.1.name") x 6,633,484 ops/sec ±0.32% (95 runs sampled)
tokenize("comments") x 71,939,005 ops/sec ±0.95% (95 runs sampled)
tokenize("comments.1") x 6,683,093 ops/sec ±0.35% (94 runs sampled)
tokenize("comments.2.name") x 6,642,379 ops/sec ±0.30% (94 runs sampled)
tokenize("comments.2.comments.1.comments.0.val") x 6,507,134 ops/sec ±0.32% (95 runs sampled)
tokenize("comments.name") x 6,643,137 ops/sec ±0.38% (91 runs sampled)
tokenize("foo[1mystring]") x 4,512,247 ops/sec ±0.66% (87 runs sampled)
tokenize("foo[1mystring].bar[1]") x 3,344,177 ops/sec ±0.60% (92 runs sampled)
tokenize("foo[1mystring][2]") x 4,047,169 ops/sec ±0.98% (92 runs sampled)
mpath.get("first", obj) x 40,151,591 ops/sec ±0.40% (97 runs sampled)
mpath.get("first.second", obj) x 4,417,092 ops/sec ±0.30% (94 runs sampled)
mpath.get("first.second.third.1.name", obj) x 3,137,493 ops/sec ±0.52% (91 runs sampled)
mpath.get("comments", obj) x 21,629,229 ops/sec ±2.37% (91 runs sampled)
mpath.get("comments.1", obj) x 3,642,275 ops/sec ±0.45% (91 runs sampled)
mpath.get("comments.2.name", obj) x 3,346,850 ops/sec ±0.59% (89 runs sampled)
mpath.get("comments.2.comments.1.comments.0.val", obj) x 2,471,729 ops/sec ±1.13% (92 runs sampled)
mpath.get("comments.name", obj) x 1,353,844 ops/sec ±1.09% (85 runs sampled)
mpath.has("first", obj) x 38,068,509 ops/sec ±4.69% (76 runs sampled)
mpath.has("first.second", obj) x 4,301,352 ops/sec ±0.43% (90 runs sampled)
mpath.has("first.second.third.1.name", obj) x 3,435,863 ops/sec ±0.42% (94 runs sampled)
mpath.has("comments", obj) x 20,141,263 ops/sec ±2.11% (79 runs sampled)
mpath.has("comments.1", obj) x 4,183,104 ops/sec ±0.37% (91 runs sampled)
mpath.has("comments.2.name", obj) x 3,814,918 ops/sec ±0.38% (93 runs sampled)
mpath.has("comments.2.comments.1.comments.0.val", obj) x 3,071,276 ops/sec ±0.35% (94 runs sampled)
mpath.has("comments.name", obj) x 4,015,664 ops/sec ±0.37% (94 runs sampled)
mpath.has("foo[1mystring]", obj) x 2,043,284 ops/sec ±0.59% (94 runs sampled)
mpath.has("foo[1mystring].bar[1]", obj) x 1,755,779 ops/sec ±0.42% (89 runs sampled)
mpath.has("foo[1mystring][2]", obj) x 1,910,760 ops/sec ±0.50% (96 runs sampled)
mpath.has(["comments", "2", "comments","1","comments","0","val"], obj) x 8,552,324 ops/sec ±1.58% (89 runs sampled)
mpath.set("first", obj, val) x 20,171,790 ops/sec ±0.77% (92 runs sampled)
mpath.set("first.second", obj, val) x 4,011,799 ops/sec ±0.38% (94 runs sampled)
mpath.set("first.second.third.1.name", obj, val) x 2,705,552 ops/sec ±0.75% (90 runs sampled)
mpath.set("comments", obj, val) x 13,949,810 ops/sec ±1.07% (93 runs sampled)
mpath.set("comments.1", obj, val) x 3,369,428 ops/sec ±0.52% (91 runs sampled)
mpath.set("comments.2.name", obj, val) x 3,066,993 ops/sec ±0.39% (92 runs sampled)
mpath.set("comments.2.comments.1.comments.0.val", obj, val) x 2,133,967 ops/sec ±0.25% (95 runs sampled)
mpath.set("comments.name", obj, val) x 3,045,378 ops/sec ±0.31% (92 runs sampled)
mpath.set("arr.test", [[42]], obj)) x 3,188,002 ops/sec ±0.27% (95 runs sampled)
To get some reliable benchmarks, replace in unset return delete cur[part]; with return true.
mpath.unset("first", obj) x 20,145,459 ops/sec ±1.21% (89 runs sampled)
mpath.unset("first.second", obj) x 5,141,114 ops/sec ±0.40% (93 runs sampled)
mpath.unset("first.second.third.1.name", obj) x 5,058,658 ops/sec ±0.31% (96 runs sampled)
mpath.unset("comments", obj) x 20,190,378 ops/sec ±1.03% (84 runs sampled)
mpath.unset("comments.1", obj) x 5,037,352 ops/sec ±0.55% (94 runs sampled)
mpath.unset("comments.2.name", obj) x 5,060,874 ops/sec ±0.41% (94 runs sampled)
mpath.unset("comments.2.comments.1.comments.0.val", obj) x 5,083,899 ops/sec ±0.54% (94 runs sampled)
mpath.unset("comments.name", obj) x 5,097,223 ops/sec ±0.46% (91 runs sampled)

> node ./benchmarks/bench-map.js

tokenize("first") x 119,427,554 ops/sec ±0.92% (92 runs sampled)
tokenize("first.second") x 118,660,542 ops/sec ±0.81% (92 runs sampled)
tokenize("first.second.third.1.name") x 117,976,287 ops/sec ±0.91% (91 runs sampled)
tokenize("comments") x 119,042,523 ops/sec ±0.70% (92 runs sampled)
tokenize("comments.1") x 118,511,372 ops/sec ±0.80% (90 runs sampled)
tokenize("comments.2.name") x 117,701,226 ops/sec ±0.90% (93 runs sampled)
tokenize("comments.2.comments.1.comments.0.val") x 115,852,937 ops/sec ±1.40% (91 runs sampled)
tokenize("comments.name") x 116,984,552 ops/sec ±1.12% (93 runs sampled)
tokenize("foo[1mystring]") x 118,267,634 ops/sec ±1.38% (94 runs sampled)
tokenize("foo[1mystring].bar[1]") x 77,620,970 ops/sec ±7.28% (66 runs sampled)
tokenize("foo[1mystring][2]") x 114,087,019 ops/sec ±0.65% (95 runs sampled)
mpath.get("first", obj) x 67,350,325 ops/sec ±1.71% (90 runs sampled)
mpath.get("first.second", obj) x 19,136,542 ops/sec ±0.53% (90 runs sampled)
mpath.get("first.second.third.1.name", obj) x 8,054,298 ops/sec ±1.14% (86 runs sampled)
mpath.get("comments", obj) x 20,022,972 ops/sec ±2.22% (81 runs sampled)
mpath.get("comments.1", obj) x 13,664,586 ops/sec ±1.50% (86 runs sampled)
mpath.get("comments.2.name", obj) x 10,130,770 ops/sec ±1.54% (83 runs sampled)
mpath.get("comments.2.comments.1.comments.0.val", obj) x 4,911,963 ops/sec ±0.82% (90 runs sampled)
mpath.get("comments.name", obj) x 2,499,963 ops/sec ±0.39% (95 runs sampled)
mpath.has("first", obj) x 51,661,206 ops/sec ±1.99% (85 runs sampled)
mpath.has("first.second", obj) x 18,008,804 ops/sec ±2.85% (82 runs sampled)
mpath.has("first.second.third.1.name", obj) x 10,305,092 ops/sec ±1.18% (89 runs sampled)
mpath.has("comments", obj) x 22,988,539 ops/sec ±2.41% (85 runs sampled)
mpath.has("comments.1", obj) x 18,740,067 ops/sec ±2.15% (79 runs sampled)
mpath.has("comments.2.name", obj) x 14,143,804 ops/sec ±1.60% (89 runs sampled)
mpath.has("comments.2.comments.1.comments.0.val", obj) x 7,885,299 ops/sec ±0.93% (91 runs sampled)
mpath.has("comments.name", obj) x 14,976,906 ops/sec ±1.92% (78 runs sampled)
mpath.has("foo[1mystring]", obj) x 8,562,702 ops/sec ±0.48% (94 runs sampled)
mpath.has("foo[1mystring].bar[1]", obj) x 8,852,109 ops/sec ±0.66% (93 runs sampled)
mpath.has("foo[1mystring][2]", obj) x 8,979,580 ops/sec ±0.54% (85 runs sampled)
mpath.has(["comments", "2", "comments","1","comments","0","val"], obj) x 8,787,499 ops/sec ±0.66% (90 runs sampled)
mpath.set("first", obj, val) x 25,249,135 ops/sec ±1.09% (88 runs sampled)
mpath.set("first.second", obj, val) x 12,579,603 ops/sec ±0.70% (92 runs sampled)
mpath.set("first.second.third.1.name", obj, val) x 5,389,175 ops/sec ±0.57% (94 runs sampled)
mpath.set("comments", obj, val) x 14,762,096 ops/sec ±1.32% (92 runs sampled)
mpath.set("comments.1", obj, val) x 9,261,277 ops/sec ±0.57% (91 runs sampled)
mpath.set("comments.2.name", obj, val) x 7,903,874 ops/sec ±0.75% (92 runs sampled)
mpath.set("comments.2.comments.1.comments.0.val", obj, val) x 4,125,593 ops/sec ±0.39% (94 runs sampled)
mpath.set("comments.name", obj, val) x 7,836,323 ops/sec ±0.87% (90 runs sampled)
mpath.set("arr.test", [[42]], obj)) x 6,715,982 ops/sec ±0.45% (94 runs sampled)
To get some reliable benchmarks, replace in unset return delete cur[part]; with return true.
mpath.unset("first", obj) x 30,230,903 ops/sec ±1.99% (89 runs sampled)
mpath.unset("first.second", obj) x 25,048,250 ops/sec ±2.46% (86 runs sampled)
mpath.unset("first.second.third.1.name", obj) x 30,069,523 ops/sec ±2.09% (86 runs sampled)
mpath.unset("comments", obj) x 24,948,306 ops/sec ±2.64% (87 runs sampled)
mpath.unset("comments.1", obj) x 26,954,343 ops/sec ±2.71% (85 runs sampled)
mpath.unset("comments.2.name", obj) x 30,262,407 ops/sec ±2.56% (88 runs sampled)
mpath.unset("comments.2.comments.1.comments.0.val", obj) x 30,309,162 ops/sec ±2.14% (90 runs sampled)
mpath.unset("comments.name", obj) x 30,403,412 ops/sec ±1.67% (87 runs sampled)

> node ./benchmarks/bench-lru.js

tokenize("first") x 78,565,481 ops/sec ±0.19% (96 runs sampled)
tokenize("first.second") x 76,301,576 ops/sec ±0.96% (89 runs sampled)
tokenize("first.second.third.1.name") x 76,752,938 ops/sec ±0.63% (93 runs sampled)
tokenize("comments") x 76,718,757 ops/sec ±0.61% (90 runs sampled)
tokenize("comments.1") x 77,216,999 ops/sec ±0.52% (92 runs sampled)
tokenize("comments.2.name") x 78,738,757 ops/sec ±0.30% (91 runs sampled)
tokenize("comments.2.comments.1.comments.0.val") x 79,546,661 ops/sec ±0.55% (92 runs sampled)
tokenize("comments.name") x 78,946,878 ops/sec ±0.84% (92 runs sampled)
tokenize("foo[1mystring]") x 79,946,830 ops/sec ±0.47% (94 runs sampled)
tokenize("foo[1mystring].bar[1]") x 79,432,349 ops/sec ±0.52% (95 runs sampled)
tokenize("foo[1mystring][2]") x 68,379,280 ops/sec ±5.20% (83 runs sampled)
mpath.get("first", obj) x 39,745,173 ops/sec ±1.47% (89 runs sampled)
mpath.get("first.second", obj) x 18,572,919 ops/sec ±1.13% (93 runs sampled)
mpath.get("first.second.third.1.name", obj) x 8,525,283 ops/sec ±0.70% (92 runs sampled)
mpath.get("comments", obj) x 22,134,515 ops/sec ±1.86% (82 runs sampled)
mpath.get("comments.1", obj) x 11,333,987 ops/sec ±0.50% (91 runs sampled)
mpath.get("comments.2.name", obj) x 9,603,373 ops/sec ±0.78% (90 runs sampled)
mpath.get("comments.2.comments.1.comments.0.val", obj) x 5,550,875 ops/sec ±0.75% (95 runs sampled)
mpath.get("comments.name", obj) x 2,411,148 ops/sec ±0.34% (97 runs sampled)
mpath.has("first", obj) x 43,554,156 ops/sec ±2.22% (87 runs sampled)
mpath.has("first.second", obj) x 15,476,908 ops/sec ±2.16% (84 runs sampled)
mpath.has("first.second.third.1.name", obj) x 10,903,294 ops/sec ±0.94% (89 runs sampled)
mpath.has("comments", obj) x 22,291,814 ops/sec ±2.82% (83 runs sampled)
mpath.has("comments.1", obj) x 17,515,340 ops/sec ±2.12% (85 runs sampled)
mpath.has("comments.2.name", obj) x 13,063,961 ops/sec ±2.19% (83 runs sampled)
mpath.has("comments.2.comments.1.comments.0.val", obj) x 7,772,087 ops/sec ±0.93% (91 runs sampled)
mpath.has("comments.name", obj) x 12,714,557 ops/sec ±1.28% (90 runs sampled)
mpath.has("foo[1mystring]", obj) x 10,634,882 ops/sec ±0.96% (85 runs sampled)
mpath.has("foo[1mystring].bar[1]", obj) x 10,466,770 ops/sec ±0.88% (93 runs sampled)
mpath.has("foo[1mystring][2]", obj) x 10,526,990 ops/sec ±0.83% (91 runs sampled)
mpath.has(["comments", "2", "comments","1","comments","0","val"], obj) x 8,785,434 ops/sec ±0.73% (93 runs sampled)
mpath.set("first", obj, val) x 22,569,056 ops/sec ±0.99% (91 runs sampled)
mpath.set("first.second", obj, val) x 9,681,512 ops/sec ±1.89% (86 runs sampled)
mpath.set("first.second.third.1.name", obj, val) x 5,420,669 ops/sec ±0.40% (93 runs sampled)
mpath.set("comments", obj, val) x 15,424,779 ops/sec ±0.49% (94 runs sampled)
mpath.set("comments.1", obj, val) x 7,594,027 ops/sec ±0.76% (91 runs sampled)
mpath.set("comments.2.name", obj, val) x 5,833,113 ops/sec ±0.34% (95 runs sampled)
mpath.set("comments.2.comments.1.comments.0.val", obj, val) x 3,074,046 ops/sec ±0.27% (93 runs sampled)
mpath.set("comments.name", obj, val) x 6,773,152 ops/sec ±0.65% (94 runs sampled)
mpath.set("arr.test", [[42]], obj)) x 6,869,394 ops/sec ±0.54% (94 runs sampled)
To get some reliable benchmarks, replace in unset return delete cur[part]; with return true.
mpath.unset("first", obj) x 27,365,755 ops/sec ±2.01% (92 runs sampled)
mpath.unset("first.second", obj) x 22,100,363 ops/sec ±3.08% (84 runs sampled)
mpath.unset("first.second.third.1.name", obj) x 27,436,755 ops/sec ±1.89% (88 runs sampled)
mpath.unset("comments", obj) x 22,448,781 ops/sec ±2.74% (85 runs sampled)
mpath.unset("comments.1", obj) x 25,760,376 ops/sec ±1.86% (89 runs sampled)
mpath.unset("comments.2.name", obj) x 22,357,883 ops/sec ±2.90% (83 runs sampled)
mpath.unset("comments.2.comments.1.comments.0.val", obj) x 25,384,935 ops/sec ±2.42% (87 runs sampled)
mpath.unset("comments.name", obj) x 21,294,295 ops/sec ±2.72% (87 runs sampled)

> node bench-fast-lru.js
tokenize("first") x 80,119,006 ops/sec ±0.42% (93 runs sampled)
tokenize("first.second") x 78,265,237 ops/sec ±0.31% (89 runs sampled)
tokenize("first.second.third.1.name") x 77,256,486 ops/sec ±1.18% (95 runs sampled)
tokenize("comments") x 78,519,284 ops/sec ±0.26% (94 runs sampled)
tokenize("comments.1") x 78,244,371 ops/sec ±0.57% (95 runs sampled)
tokenize("comments.2.name") x 78,652,327 ops/sec ±0.22% (94 runs sampled)
tokenize("comments.2.comments.1.comments.0.val") x 78,405,391 ops/sec ±0.34% (90 runs sampled)
tokenize("comments.name") x 78,706,567 ops/sec ±0.15% (95 runs sampled)
tokenize("foo[1mystring]") x 73,550,946 ops/sec ±2.98% (89 runs sampled)
tokenize("foo[1mystring].bar[1]") x 49,859,259 ops/sec ±1.75% (85 runs sampled)
tokenize("foo[1mystring][2]") x 75,926,118 ops/sec ±0.41% (95 runs sampled)
mpath.get("first", obj) x 59,887,267 ops/sec ±0.25% (97 runs sampled)
mpath.get("first.second", obj) x 18,115,810 ops/sec ±0.31% (95 runs sampled)
mpath.get("first.second.third.1.name", obj) x 7,336,169 ops/sec ±1.36% (83 runs sampled)
mpath.get("comments", obj) x 22,251,326 ops/sec ±1.42% (92 runs sampled)
mpath.get("comments.1", obj) x 12,460,248 ops/sec ±1.39% (86 runs sampled)
mpath.get("comments.2.name", obj) x 9,621,482 ops/sec ±2.64% (81 runs sampled)
mpath.get("comments.2.comments.1.comments.0.val", obj) x 4,876,255 ops/sec ±1.66% (85 runs sampled)
mpath.get("comments.name", obj) x 2,338,906 ops/sec ±0.47% (92 runs sampled)
mpath.has("first", obj) x 45,249,502 ops/sec ±1.41% (88 runs sampled)
mpath.has("first.second", obj) x 17,095,561 ops/sec ±3.19% (83 runs sampled)
mpath.has("first.second.third.1.name", obj) x 9,785,630 ops/sec ±1.37% (88 runs sampled)
mpath.has("comments", obj) x 26,945,777 ops/sec ±2.61% (78 runs sampled)
mpath.has("comments.1", obj) x 16,020,595 ops/sec ±2.12% (88 runs sampled)
mpath.has("comments.2.name", obj) x 12,986,558 ops/sec ±1.85% (88 runs sampled)
mpath.has("comments.2.comments.1.comments.0.val", obj) x 7,925,644 ops/sec ±0.76% (91 runs sampled)
mpath.has("comments.name", obj) x 14,081,286 ops/sec ±1.77% (84 runs sampled)
mpath.has("foo[1mystring]", obj) x 10,511,316 ops/sec ±0.88% (90 runs sampled)
mpath.has("foo[1mystring].bar[1]", obj) x 10,605,603 ops/sec ±0.95% (86 runs sampled)
mpath.has("foo[1mystring][2]", obj) x 10,472,399 ops/sec ±0.85% (92 runs sampled)
mpath.has(["comments", "2", "comments","1","comments","0","val"], obj) x 8,754,251 ops/sec ±0.68% (92 runs sampled)
mpath.set("first", obj, val) x 24,368,354 ops/sec ±1.09% (77 runs sampled)
mpath.set("first.second", obj, val) x 12,281,550 ops/sec ±0.82% (90 runs sampled)
mpath.set("first.second.third.1.name", obj, val) x 5,561,399 ops/sec ±0.60% (94 runs sampled)
mpath.set("comments", obj, val) x 16,616,562 ops/sec ±1.09% (91 runs sampled)
mpath.set("comments.1", obj, val) x 8,473,119 ops/sec ±0.64% (93 runs sampled)
mpath.set("comments.2.name", obj, val) x 6,498,360 ops/sec ±0.52% (94 runs sampled)
mpath.set("comments.2.comments.1.comments.0.val", obj, val) x 3,823,884 ops/sec ±0.46% (91 runs sampled)
mpath.set("comments.name", obj, val) x 6,691,750 ops/sec ±0.89% (93 runs sampled)
mpath.set("arr.test", [[42]], obj)) x 6,932,162 ops/sec ±0.34% (94 runs sampled)
To get some reliable benchmarks, replace in unset return delete cur[part]; with return true.
mpath.unset("first", obj) x 28,115,245 ops/sec ±1.91% (85 runs sampled)
mpath.unset("first.second", obj) x 24,723,464 ops/sec ±1.17% (91 runs sampled)
mpath.unset("first.second.third.1.name", obj) x 24,373,236 ops/sec ±2.67% (84 runs sampled)
mpath.unset("comments", obj) x 27,049,606 ops/sec ±1.96% (86 runs sampled)
mpath.unset("comments.1", obj) x 23,514,034 ops/sec ±2.60% (87 runs sampled)
mpath.unset("comments.2.name", obj) x 23,906,961 ops/sec ±2.74% (83 runs sampled)
mpath.unset("comments.2.comments.1.comments.0.val", obj) x 26,186,249 ops/sec ±2.65% (88 runs sampled)
mpath.unset("comments.name", obj) x 27,175,413 ops/sec ±1.92% (89 runs sampled)

@kibertoad
@mcollina
wroom wroom
Any idea how to improve the perf further?

I would improve perf by using new Function to compile functions to do this for me. You would see quite a massive performance boost as those would become as expensive as a normal property lookup.

@mcollina Could you please clarify which particular part of the code would benefit from this change?

The lookup of the property is currently done iterating an array. However it could be generated as a function, cached and called.

@mcollina
I played a little bit around and have to say that this is a great performance booster. Thank you for this great idea.
@vkarpov15
Despite the great idea of mcollina: would you please consider to review and merge it? This PR already means a great performance boost for the package.
I could implement the suggestion of mcollina in the next iteration, version 1.0.0 :).
We could actually already use the optimized tokenize method in various places of mongoose to replace the path.split(".") and gain potentially performance.

Hi @vkarpov15
What is the goal for the future?
Should I refactor the package completely?

@Uzlopak sorry for missing the convo on this PR. The idea of precompiling a function is an interesting one, but the problem is that this package needs to support adhoc lookups. I don't want to have to do something Ramda-like where I need to create a function to access a given property, and then store that function. We potentially could do that with Mongoose by caching functions for every schema path, but I'm not sure the complexity is worth it.
Either way, I like this PR as is. Minus the one issue with tokenize().

@vkarpov15
Done

@vkarpov15
I dont know ramda. But the the performance of mpath depends on two parts: The tokenization and the property access. While tokenization is an easy gain with caching, you can significantly improve the performance by avoiding tokenizing repeatedly. But the bigger performance gain can be achieved by actually building functoins on the fly. I tried it and if done simple cases like just accessing non Array attributes the performance is indeed like matteo writes crazy fast.
See here:
https://github.com/Uzlopak/mpath2/blob/master/lib/get.js
uzlopak@Battlestation:~/workspace/mpath2$ node benchmark/get.js
mpath.get("first", obj) x 93,118,411 ops/sec ±0.33% (94 runs sampled)
mpath.get("first.second", obj) x 62,086,489 ops/sec ±0.50% (92 runs sampled)
mpath.get("first.second.third", obj) x 61,563,902 ops/sec ±0.50% (93 runs sampled)
mpath.get("first", obj) x 62,156,817 ops/sec ±1.06% (97 runs sampled)

So there is no real difference between accessing a one parter and a three parter.
Issues arise when trying to write super generic code to handle arrays and combining them. I guess i would need still some time to figure it out.
But still, matteos approach makes it crazy fast. But the trade-off is of course memory. And by reading your comments on mongoose I guess, a memory trade-off is not desired.
But if you ever want to do the trade off, let me know.

source: gharchive/pull-request

authors: Uzlopak kibertoad mcollina vkarpov15

repo: aheckmann/mpath

license: mit

license_type: permissive

license_source: bigquery


text:
Compilation failed

undefined reference to `dhcps_set_dns'
sadly...

same on esp8266 nodemcu v3

I am also not going to

source: gharchive/issue

authors: Avile333 Oopas khvalera

license: MIT

license_source: github-api


text:
使用useFilterPlugin点击筛选列的“重置”按钮后，上一次选择的值还存在

版本升级到0.1.7后，重置问题还是存在
package.json
"@ahooksjs/next-form-table": "^0.1.7",
"@ahooksjs/use-adapt-plugin": "^0.1.7",
"@ahooksjs/use-async-default-plugin": "^0.1.7",
"@ahooksjs/use-filter-plugin": "^0.1.7",
"@ahooksjs/use-selection-plugin": "^0.1.7",
"@ahooksjs/use-sortable-plugin": "^0.1.7",
"@ahooksjs/use-tree-plugin": "^0.1.7",

codesandbox
demo

感觉这个内置做不太好，因为如果有两个字段需要 filter，这个时候重置某一个之后，我这边不清楚你设置的 transformer 的处理逻辑是什么，可能会把一些不必要的数据给情况掉了。所以加上 transformer 之后，你需要自己控制数据。
你加上 transformer 的使用场景是需要要加上另外参数还是想改变传给后端参数 key 名而已？

改变传给后端参数 key 名，可以参考 https://github.com/ahooksjs/useTable/blob/master/packages/use-filter-plugin/demo/transformer.tsx

authors: Gamehu monkindey

repo: ahooksjs/useTable


text:
🛑 Bot is down

In 6a55862, Bot (https://ahq-miness.ahqsecret.repl.co/) was down:

HTTP code: 500
Response time: 4973 ms

Resolved: Bot is back up in 447c757.


text:
Sending data back with ZMQ

Hi,
I have added the following code snippet to here:
https://github.com/ahundt/grl/blob/master/include/grl/kuka/KukaJAVAdriver.hpp#L355
`         kukaJavaDriverP->start_async_receive_buffers();
      if (kukaJavaDriverP->receive_buffers_empty()){
        std::cout << "apparently buffers are empty " << "\n";
      }

      while (!kukaJavaDriverP->receive_buffers_empty()) {

          auto rbP = kukaJavaDriverP->get_back_receive_buffer_with_data();
      		auto rbPstart = &(rbP->begin()[0]);

      		auto verifier = flatbuffers::Verifier(rbPstart,rbP->size());
      		auto bufOK = grl::flatbuffer::VerifyKUKAiiwaStatesBuffer(verifier);

          if(bufOK){

     		     auto fbKUKAiiwaStates = flatbuffer::GetKUKAiiwaStates(rbPstart);
             auto fbstates = fbKUKAiiwaStates->states();
             auto fbMonitorState = fbstates->Get(0)->monitorState();
             auto wrench = fbMonitorState->CartesianWrench();
             auto force = wrench->force();

      		  std::cout << "received: x:" << force.x() << "z:" << force.z() << "\n";
          } else {
            std::cout << "Failed verification. bufOk: " <<bufOK << "\n";
          }

         }`

and added this snippet to the JAVA code here:
https://github.com/ahundt/grl/blob/master/src/java/grl/src/grl/ZMQManager.java#L104
public void sendMessage(ByteBuffer msg) { subscriber.send(msg.array()); }
The result is that
kukaJavaDriverP->receive_buffers_empty()
returns true.
Also tried binding the subscriber socket the local zmq address here:
https://github.com/ahundt/grl/blob/master/src/java/grl/src/grl/ZMQManager.java#L59
which resulted in errors on the controller pointing to the line that contains binding.

It seems that AzmqFlatbuffersTest is working because the receive and send object, are the same object(So binding to same address does not cause problems)... Anyhow, the above problem has not been solved yet...

I designed the message being sent from the arm to the computer to be the
same message being sent from the computer to the arm. Are you trying to use
different data types (shouldn't be needed) or is the problem that the test
was never run on two separate computers?
You can check the azmq, jeromq, and flatbuffers documentation for
additional examples of their respective APIs as well.
Sorry I don't have a great answer at the moment, have someone visiting this
week so won't have much time to look into the details till next week.
On Monday, June 20, 2016, Ashkan372 notifications@github.com wrote:

It seems that AzmqFlatbuffersTest is working because the receive and send
object, are the same object(So binding to same address does not cause
problems)... Anyhow, the above problem has not been solved yet...
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/ahundt/grl/issues/100#issuecomment-227317680, or mute
the thread
https://github.com/notifications/unsubscribe/AADZwAVeKatXkfM7LEv0BliG_5CADCO7ks5qN0AbgaJpZM4I513D
.

--
Cheers!
Andrew Hundt
Ph.D. Student
Johns Hopkins University

Both are KUKAiiwaStates flatbuffers... I studied zmq and flatbuffers documentations thoroughly... Still no idea... I have to finish this by tmrw... Any suggestion would be greatly appreciated

I think there may have been problems when the sleep 1ms wasn't there... I don't remember why but that may be worth testing.
Have you verified that bytes are being sent both directions via wireshark?
Have you checked the error codes on your message send call?
The line you linked to looks like a blank line between functions:
https://github.com/ahundt/grl/blob/master/src/java/grl/src/grl/ZMQManager.java#L104
Perhaps you mean to put it somewhere like in the while loop here?
https://github.com/ahundt/grl/blob/master/src/java/grl/src/grl/ZMQManager.java#L133

Are you talking about the sleep in Java code?
I tried removing the whole azmq stuff, and replaced it with zmq to avoid using io_service and other stuff.. if both sides are in zmq.dealer I can see data being sent and received in wireShark.. however it's a mess, and commands would be executed a long time after we have sent them...(if we stop sending messages from the robot, this works fine.. But when we send, it causes problems, probably to the messag queues ..)
Another thing I tried is to put a subscriber and a publisher socket on each port... In this configuration, the publisher on the robot side cannot send anything for some reason(or probably this publisher cannot connect to the subscriber on other side for some reason) (I should mention that I cannot bind the publisher on the robot port, can only connect it)

Do you have any idea on why the java code does not allow binding sockets to robot ip address? I used a couple of random ports, and it gave the error "Address already in use"...

There are only 10 ports open on the robot as specified in the robot
documentation. The one I usually use is one of them, try the one already
specified in my code +1. Random ports won't work.
On Thursday, June 23, 2016, Ashkan372 notifications@github.com wrote:

Do you have any idea on why the java code does not allow binding sockets
to robot ip address? I used a couple of random ports, and it gave the error
"Address already in use"...
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/ahundt/grl/issues/100#issuecomment-228030719, or mute
the thread
https://github.com/notifications/unsubscribe/AADZwLM6LCSmRKys6LolEVtnwmxbn3tbks5qOndzgaJpZM4I513D
.

--
Cheers!
Andrew Hundt

I tried +1 +2  -1 -2 of your port, which is 30010, still cannot bind...  How can I know about these 10 open ports? I looked at the documentation, and there was nothing..

Email kuka then I don't have access to my docs right now. Though sadly they
may take days to respond. Risto also has access to my copy of the kuka docs
you could ask him to search then
On Thursday, June 23, 2016, Ashkan372 notifications@github.com wrote:

I tried +1 +2 -1 -2 of your port, which is 30010, still cannot bind... How
can I know about these 10 open ports? I looked at the documentation, and
there was nothing..
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/ahundt/grl/issues/100#issuecomment-228095904, or mute
the thread
https://github.com/notifications/unsubscribe/AADZwLoEPiYTWZm6nwEq68_G2LbC4mMDks5qOqwpgaJpZM4I513D
.

--
Cheers!
Andrew Hundt

oh... so the other approach would be to use this current dealer-dealer pattern... which kindaa works!
the problem is that from the moment you start sending data back from robot, the messages are not sent from the computer to robot(in wire shark you would only see data being sent back, nothing from pc to robot)... however after a long wait(20 s) the command gets executed on the robot... (also I should mention that before sending messages from robot to pc, the messages were perfectly sent from pc to robot... they are stopped from sending, only when we start sending messages from the robot to pc)
I tried using different ports for each direction... the problem is still there, so it might not have anything to do with zmq message queues.. .

wow that sounds very strange indeed... so when you enabled robot->computer it interfered with computer->robot?
I don't know if it is relevant, but part of what I had done on the C++ side is disable asynchronous messages because there were problems with them so even if it says async, the messages are currently synchronous. Perhaps that could be related?
You can see the change here:
https://github.com/ahundt/grl/blob/master/include/grl/AzmqFlatbuffer.hpp#L75
The fix for async_send is hopefully to modify it to use weak_ptr to fix the hanging problem. I'm not 100% sure why it wouldn't always send...
https://github.com/zeromq/azmq/issues/99#issuecomment-130098105

One of the best approaches I found was to implement a very small loop that just sends something, like an int or like in my test app a control point, then just have another thing sending back. Instead of a simplified C++ => C++ example you could create a super simple C++ => Java => C++ to eliminate most of the confounding variables and establish something simple but working that can be built on.
Hopefully that suggestion helps.

yes, we are doing it in a simple way as well, thank you for your suggestion.... now we found out that if we send the messages from the robot with less frequency, it works better (but it would be slow) ... we suspect network buffers are being filled on the pc side,we should some how clear them... or manage to send messages back synchronously..

repo: ahundt/grl


text:
Client Twitter Login issue: Error: {"errors":[{"code":399,"message":"Incorrect. Please try again."}]}

Describe the bug
When I try to test the Twitter client, I get this message in the loading twitter client error.
Error: {"errors":[{"code":399,"message":"Incorrect. Please try again."}]}

To Reproduce

Expected behavior

Screenshots

Additional context

Got the same it seems to be related to suspicious login checks from X

Got the same it seems to be related to suspicious login checks from X

+1, even i'm getting same issue. I created a new account for the agent.

for those trying to set eliza up on a vps
from the discord:
Managed to login to twitter finally by spoofing the browser for VPS
For anyone that is having trouble this is way easier than setting up graphic interface or VPN

used Firefox settings > Network settings > manual proxy config

Set SOCKS Host to 127.0.0.1 on port 8080
ssh -D 127.0.0.1:8080 user@<vps ip address>.
#this using Mac/Windows you may need to generate keys

Then use firefox browser to login and complete verification

i wasn't able to do this succesfully but if someone can take this knowledge and suggest another way would be greaytly appreciated

@aj47 it didn't work :(

Followed @aj47 procedure and it works! Solved!

Same problem...

why is this closed?  it's not fixed.

for those trying to set eliza up on a vps from the discord:
Managed to login to twitter finally by spoofing the browser for VPS
For anyone that is having trouble this is way easier than setting up graphic interface or VPN

used Firefox settings > Network settings > manual proxy config

Set SOCKS Host to 127.0.0.1 on port 8080
ssh -D 127.0.0.1:8080 user@<vps ip address>.
#this using Mac/Windows you may need to generate keys

Then use firefox browser to login and complete verification

i wasn't able to do this succesfully but if someone can take this knowledge and suggest another way would be greaytly appreciated

thanks it works

authors: 0xfortes KarimovMurodilla MSghais ZhiminHeGit aj47 metatxn nfwGytautas zkvm


text:
Update attention.py

A small linebreak typo that makes the doc look strange
See https://rl4co.readthedocs.io/en/latest/_content/api/models/zoo.html#rl4co.models.zoo.ham.attention.HeterogenousMHA:~:text=possible (Mask _sphinx_paramlinks_rl4co.models.zoo.ham.attention.HeterogenousMHA.forward.should contain 1 if attention is not) –
Description
Added a line break.

Small but welcome change :+1:

authors: bokveizen fedebotu


text:
Mekanism BUG with wind turbine...

Hello everyone, I'm new here and I need some help...
The issue I have... is  the wind turbine, I have some pictures here to see this, I place the wind turbine on a block without blocks blocking the sky:

5 seconds later, this happen:

The turbine just face towards back and says that is blocked by a block in the sky...BUT there's NOTHING!

The wind turbine doesn't crash the game but it just don't collect energy for my machines!
If someone know what is this and what can be doing this, just tell me plz 👍
(ps: I'm using the modpack from FTB Infinity 1.10.2 and I'm using the latest version of mekanism mod)

The cable breaking crash has an open pull request ( #3967 )
I've tried to reproduce your issue with the wind generator not working, but when trying to replicate your situation it works as supposed. Can you make sure there isn't any block above it (even transparant ones) or try to place it one block further.

The cable breaking crash has an open pull request ( #3967 )
I've tried to reproduce your issue with the wind generator not working, but when trying to replicate your situation it works as supposed. Can you make sure there isn't any block above it (even transparant ones) or try to place it one block further.

I tryed multiples locations and there isn't any transparent block, I sure of it! Thank you anyway ;)

use a mekansim cable in front of the out put place for a cable which is in front of it and that whould work normally
\

and when it says the sky is blocked it means the there is something blocking the air from turbines which is the red tree

and maybe it rotated because you right click it with a wrench

use a mekansim cable in front of the out put place for a cable which is in front of it and that whould work normally

Nop, looks the same :/

and when it says the sky is blocked it means the there is something blocking the air from turbines which is the red tree

I tryed others locations and biomes and looks the same!

and maybe it rotated because you right click it with a wrench

I didn't. The wind turbine just rotate for itself and now this isn't just happening with wind turbine, and yes with other machines... they just keep rotate for itselves. Thanks for the help anyway 👍

i think its caused by walia so can you try to go in a flag large empty space and use only mekanism mod block and items

or try in another world

See also #3977 for more machine rotation oddities.  The random rotation is not confined to the wind turbine.

I'm having the same issue with the wind generators in the image shown by the OP. Sometimes when I log onto my single player world, they're all facing the opposite direction away from the cables and saying the sky is blocked. Since they're literally IN the sky, with nothing above or around them, there is definitely nothing blocking them. Sometimes, logging out and then in again will fix it, and they're all turned the right direction again. But sometimes not. I ended up just wrapping cable around both sides so that no matter what way they randomly decide to face, they stay connected.

authors: EvilGamer HyperBlueCore McSassyK Ommina thommy101

repo: aidancbrady/Mekanism


text:
losing templates when restarting Obsidian

Hi, I am having the following issue using the plugin on Obsidian installed on MacOS Ventura. It is actually pretty simple to explain. Every time I re-open Obsidian, the literature note template vanishes and goes back to the default templating, not the one I have configured.
Could it be related to the fact that my Vault is in Google Drive for syncing?

My bad, I found the issue.

My bad, I found the issue.

Well, what was the issue? Was it that you hadn't exported the templates to files from the settings? It might be useful for others to know.

authors: MSBack chickymonkeys

repo: aidenlx/obsidian-zotero


text:
Kitchen Sink: Todolist bugs fixed

Please describe the changes this PR makes and why it should be merged:
Two relevant bugs were solved, the first one is the clear input functionality after add a task, and a bug related with list item deletion.
Status

[X] Code changes have been tested against prettier, or there are no code changes
[ ] I know how to update typings and have done so, or typings don't need updating

Semantic versioning classification:

[ ] This PR changes the codebase

[ ] This PR includes breaking changes (methods removed or renamed, parameters moved or removed)
[ ] This PR changes the internal workings with no modifications to the external API (bug fixes, performance improvements)

[x] This PR only includes non-code changes, like changes to documentation, README, etc.

Pull Request Test Coverage Report for Build 6767999400

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 25.706%

Totals

Change from base Build 6738886424:
0.0%

Covered Lines:
1257

Relevant Lines:
5082

💛  - Coveralls

authors: coveralls oliverloops

repo: aidenybai/million


text:
Complete instructions on SSH key pair

In step 2 of the README, there is a point to create an SSH key pair, however, it doesn't detail what to do with the generated pair. I imagine this should be added to the ~/.ssh folder in the machine from which the deployment is performed. I suspect however that this requires to use the name id_rsa. At least in step 5, I tried running terraform plan, after terraform init completed successfully, which failed with the error:
╷
│ Error: Invalid function argument
│
│   on modules/cluster/main.tf line 15, in resource "azurerm_kubernetes_cluster" "k8s":
│   15:       key_data = file(var.ssh_public_key)
│     ├────────────────
│     │ while calling file(path)
│     │ var.ssh_public_key is "~/.ssh/id_rsa.pub"
│
│ Invalid value for "path" parameter: no file exists at "~/.ssh/id_rsa.pub"; this function works only with files that are distributed as part of the configuration source code, so if this file will be created by a resource in this
│ configuration you must instead obtain this result from an attribute of that resource.

P.S.: the README does not suggest to run terraform plan but to go straight to terraform apply. Maybe it would be good to first suggest to run plan. This is also what the output of terraform init suggests in any case.

I believe this has been addressed

authors: ltalirz sphuber

repo: aiidalab/aiidalab-on-azure


text:
Сделать возможность управлять количеством попыток прохождения опросника

Добавить дополнительный параметр у опросника "Количество попыток" для возможности перепрохождения

Нужна проработка

authors: Nenuahule germanovn

repo: aikus/sql-exam


text:
working towards AndOrGraphSearch

Issue: https://github.com/aimacode/aima-scala/issues/6

@a1shadows can I get a review of this PR?

@BusyByte Yes, of course. Could I do it after the 17th, please? I have a college exam that day.

@a1shadows sure thing, no hurry

@BusyByte Hey, you can add me as a reviewer. I'll look over the pull request to the best of my abilities.

@a1shadows I think @ctjoreilly may have to I don't have admin rights on the repo and your name doesn't come up if I try to request a review.

repo: aimacode/aima-scala


text:
Install exception due to https://api.github.com/graphql rate limiting

/   |  ()__ ___  ___  ____  _____
/ /| | / / __ __  / _ / __ / /
/ __  |/ / / / / / / / // /_
//  |/// // //_/_/____/
Congratulations! You successfully set up your Aimeos shop!
Video tutorials: https://www.youtube.com/c/aimeos
Documentation: https://aimeos.org/docs
Get help: https://aimeos.org/help
Contribute: https://github.com/aimeos
Made with love by the Aimeos community. Be a part of it!
Script App\Composer::success handling the post-create-project-cmd event terminated with an exception
[Composer\Downloader\TransportException]
The "https://api.github.com/graphql" file could not be downloaded: failed to
open stream: Connection refused

Seems like there was a problem with Github at the time of your installation.
Nevertheless, your installation may work. If not, try to install it again from scratch.

authors: aimeos godadada

repo: aimeos/aimeos


text:
QuicStreamAdapter should implement more methods of BaseTransport

TLDR: At least need to implement:

is_closing
close

Long Story
It seems that StreamWriter returned by QuicConnectionProtocol#create_stream will cause error when GC-ed.
Here is the minimal example:
import asyncio

from aioquic.asyncio import QuicConnectionProtocol

async def tmp():
    proto = QuicConnectionProtocol(None)
    reader, writer = proto._create_stream(123)
    del writer
asyncio.run(tmp())

The following exception occurred:
Exception ignored in: <function StreamWriter.__del__ at 0x1034b5e40>
Traceback (most recent call last):
  File ".../python3.11/asyncio/streams.py", line 395, in __del__
    if not self._transport.is_closing():
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File ".../python3.11/asyncio/transports.py", line 25, in is_closing
    raise NotImplementedError
NotImplementedError:

It is called in StreamWriter#__del__:
class StreamWriter:
    ...
    def close(self):
        return self._transport.close()

    def __del__(self):
        if not self._transport.is_closing():
            self.close()

As noted in #169 i am not happy with the API, and am still considering dropping it in version 1.0

Understand. :)

authors: jlaine lotabout

repo: aiortc/aioquic


text:
removing dag from UI

Is it possible to remove a DAG from UI?
I already remove the dag from dags folder,  but it still showing in the UI.

For now the cleanup happens when re-starting the web server.
Short term solution could be to remove from the DagBag on the refresh event for that DAG, which forces people to click that refresh button on the main DAGs view, but I can't think of logical other ways as changing the DagBag's content has to take part in the scope of a web request.
Long term solution is to have a stateless web server serving serialized DAGs (pickles) from the DB

Actually the challenge is that each worker on the webserver has its own DagBag, and that hitting a cleanup endpoint only cleans up one of the workers.

Thanks! I find a similiar post with the answer.

@mistercrunch you could also serve the dags from hbase or hdfs (or s3, nfs for that matter) which would remove the issue of separate DagBags right?

Well the DagBag is an in memory representation of all the DAGs in the dags_folder. Reprocessing all the DAGs in the folder can't be done as part of a web request, it's just too long. Re-evaluating an individual DAG from a file as part of the web request is not ideal.
Serializing the DAG to a database or caching engine (memcache or whatever k/v store or the airflow metadata db) has some issues that could be ironed out (serializing a jinja template, non-serializable object put in people's DAG's params or default_args) but may be the best bet. There are still questions as to how who drives the serialization (most likely the scheduler, but what if you don't have a scheduler running?) and how is versioning / cleanup managed... Fun stuff.

Also note that the process of refreshing a DAG in the UI puts a timestamp essentially expiring the DAG with a specific timestamp. The DagBag has mechanics to check that timestamp and refresh from source files if its in memory representation is older than the expiration timestamp.

authors: bolkedebruin mistercrunch pedrorjbr

repo: airbnb/airflow


text:
Controls for area viz type

Done:

Added Advanced Analytics and Chart Options for area viz type

@needs-review @ascott

Thanks for reviewing!! Addressed all comments in the new commit :) @ascott

closing this since we are going to take a different approach, as discussed.

authors: ascott vera-liu

repo: airbnb/caravel


text:
Implement matchesClass method for class name matching with RegExp

This allows you do so stuff like:
expect(wrapper.hasClass(/foo/)).to.be(true)

This is especially useful in instances where folks may be using CSS modules that are being scoped with appended hash values.

I'd prefer a new API, like matchesClass, to overloading an existing one. Polymorphic APIs are confusing and harder to maintain.

Sounds good to me, I'll make that change ASAP.

@ljharb implemented matchesClass and update the test suites 👍

@Aweary which library are you using that returns hashed css classnames?  That answers the question as to why this method would be needed, but I'm wondering if there is another way to solve this.  It seems like the css module library could be used in the test and you could assert on the presence of that class instead of using a matchesClassName function, which seems like a highly specialized method.
I am imagining something like:
import Component from './components/Component';
import styles from './styles/Component';

// ...

const wrapper = shallow(<Component />);
expect(wrapper.find(`.${styles.someClassName}`)).to.have.length(4);

or something like that. Does that seem possible?

That would be preferred but the issue we have relates to https://github.com/css-modules/webpack-demo/issues/15.  We're using Jest as our test runner and the best option we've found out there is to just ignore these imported CSS files so it doesn't throw.

ping @lelandrichardson any updates on this? 😃

@Aweary I'm still pretty wary on making this a core API. I understand your use case but regex matching on classnames feels like the wrong approach in general to me.
In the mean time, do you think you would be able to get by with just adding your own prototype methods to enzyme for your project?
import { ShallowWrapper } from 'enzyme';
ShallowWrapper.prototype.matchesClass = function (regex) { ... };

I think you're right, after thinking about it more I don't think it's a correct approach in the general case. Im going to think about this more and see if there's some other approach that would cover my use case and also be useful as a core API.

Related to https://github.com/airbnb/enzyme/issues/1629.

authors: Aweary aweary danny-andrews-snap lelandrichardson ljharb

repo: airbnb/enzyme


text:
Updated dependencies in doc

Updated the developer and user dependencies required into Docs

Why is this helpful or necessary? The dependencies are listed in package.json - maintaining a separate list both seems pointless, and also creates additional burden of keeping this list in sync. "Dependencies.md" is also not a convention I've seen in any npm package repos.

authors: aggayush ljharb

repo: airbnb/hypernova


text:
Fix android edgePadding

We found that the edgePadding value while using map.fitToCoordinates was not being taken into account on Android.
Sample:
this.map.fitToCoordinates(coordinates, {
      animated: animate,
      edgePadding: {
        top: Math.ceil(props.markerPadding.top + this.mapLayout.height * props.viewport.top),
        right: Math.ceil(props.markerPadding.right + this.mapLayout.width * props.viewport.right),
        bottom: Math.ceil(props.markerPadding.bottom + this.mapLayout.height * props.viewport.bottom),
        left: Math.ceil(props.markerPadding.left + this.mapLayout.width * props.viewport.left),
      },
    });

On iOS this was working as expected, but on Android the edgePadding values made no difference.
Looking at the source, the user's edgePadding value was immediately overwritten with 0,0,0,0.
The intention of this seems to be to prevent the Google Logo from moving upwards based on the bottom padding, however (a) this made edgePadding pointless and (b) the Google Logo moving when padding is set is an intentional part of the Google Maps API (see https://developers.google.com/maps/documentation/android-api/map#map_padding)
Additionally the screen's density was not taken into account (thanks to #239 for inspiration on the second point).
iOS and Android edgePadding now works the same.
Related to issue #1356,  and PR #239

@benvium Thanks for doing this. I'll merge this if you resolve the conflicts.

this is not working when you set edgePadding on the MapView on iOS. Would be useful to have in on iOS Google Maps too. .fitToCoordinates works fine but you should also be able to set it as a prop to the map.

I've opened a new PR for to add setPadding support via the "mapPadding" prop:
https://github.com/airbnb/react-native-maps/pull/1750

Hey thanks for submitting this. Just merged https://github.com/airbnb/react-native-maps/pull/1750 that addresses the issue across both platforms.

authors: benvium christopherdro gpeal juergengunz peterjuras

repo: airbnb/react-native-maps


text:
Update schema 08102018

to: @ryandeivert
cc: @airbnb/streamalert-maintainers
size: medium
resolves #
Background
Update schemas for

Aliyun ActionTrail where apiVersion should be optional.
CarbonBlack has some new schemas added and schema update.

Testing

Rule testing

python manage.py lambda test --processor all
...
StreamAlertCLI [INFO]: (76/76) Successful Tests
StreamAlertCLI [INFO]: (36/36) Alert Tests Passed

Coverage remained the same at 97.234% when pulling 7db4a0524a2e174beb60ec934cc1b6a9c1693973 on update_schema_08102018 into 0dfca60195eedaf93bd79bbc9a82fc6f51fba4fa on master.

authors: chunyong-lin coveralls

repo: airbnb/streamalert


text:
LDAP example and more accurate volume mount hack

I think it would be useful to add an example ldap config. I had to do quite a bot of digging to find something that worked. A simple example can at least get a user pointed in the right direction. I also changed the volume mount hack to be a better example. The aiflow uid/gid is 50000, so it seems logical to have a sample that matches.

What issues does your PR fix?

fixes values.yaml
fixes #YYY

What does your PR do?
Adds an LDAP example to the values.yaml file. Added a more accurate and usable volume mount hack.
Checklist

[ ] Commits are signed
[ ] Commits are squashed (if appropriate)
[ ] Chart version bumped
[x] Chart documentation updated
[ ] Passes linting

Signed-off-by: cocampbe cocampbe[at]gmail.com

Im sorry, but as we wont be supporting features which are only present in airflow 1.10 going forwards (after version 8.0.0 of this chart).
Because airflow 2.0 depreciated the non-RBAC WebUI, you have to configure LDAP using the webserver_config.py now.
NOTE: I am still finalising 2.0 support, see https://github.com/airflow-helm/charts/issues/58

NP. Makes sense.

authors: cocampbe thesuperzapper

repo: airflow-helm/charts


text:
librga.so文件要求gcc版本吗?我是gcc9.4.0报错

错误提示
librga fail to get driver version! Legacy mode will be enabled.
rga_api version 1.8.0_[0]
RgaBlit(1465) RGA_BLIT fail: Bad address

用上一个版本  1.3.2 就可以了

repo: airockchip/librga


text:
[Bug Report] 关于vue/cli3.0引用发现的组件问题：

VUX version
2.9.2
OS/Browsers version
所有浏览器
Vue version
2.5.17
Code
1.创建好项目后，在cmd中用命令“vue add vux” 安装可以不配做相关配置即可直接使用，
但所有组件都无法在main.js中全局引用，引用后就报错…，
只能局部引用，像loading，alert，cell,group.. 这样各个页面必用的组件只能重复引用，心好累…
2.因为刚开始用，暂时发现 querystring 组件连局部引用都不行，一样报错。
3.各种百度google，说是vue-loader 降级不会报错，但然并卵…

Steps to reproduce
呃，重现步骤是什么鬼？
What is Expected?
vux组件是目前见到功能最全的组件，在项目中可以让效率大大的提高，现在cli3.0已经是正式版，比2.0有很大的改进，不需要做额外的配置，有更友好的视图界面创建项目，希望能够针对cli3.0升级版本…
What is actually happening?
祝vux越做越好…

WARNING  Compiled with 2 warnings                                                                              15:04:15
warning  in ./node_modules/vux/src/plugins/locale/index.js
"export 'default' (imported as 'querystring') was not found in '../../tools/querystring'
warning  in ./node_modules/vux/index.js
"export 'default' (reexported as 'querystring') was not found in './src/tools/querystring/index.js'
App running at:

Local:   http://localhost:8080
Network: http://192.168.0.159:8080

以上是在main.js引用组件的报错内容，不管引用哪个组件都是报的这个错，不知道如何屏蔽了…

import Vue from 'vue'
import  { AlertPlugin,LoadingPlugin,ToastPlugin } from 'vux'
Vue.use(AlertPlugin,LoadingPlugin,ToastPlugin )
// 像这么引用，点击事件调用会报错  必须 单独写才行，
但像这样单独写的话，设置默认参数不起作用
import  { ToastPlugin } from 'vux'
Vue.use(ToastPlugin, {position: 'middle'})
设置默认参数不起作用

针对第一问回答，如果说在 main.js 全局引用/注册组件的话确实会报错，并且页面加载不出来，所以我的做法是在 App.vue 中注册全局组件，如下

<script>
  import Vue from 'vue'

  import { XButton } from 'vux'

  Vue.component('x-button', XButton)
</script>

ps：萌新勿喷，欢迎讨论，谢谢

WARNING  Compiled with 1 warnings                                                                              14:07:54
warning  in ./src/App.vue
"export 'default' (imported as 'vue_script') was not found in '!!babel-loader!../node_modules/vux-loader/src/script-loader.js!../node_modules/vue-loader/lib/selector?type=script&index=0!./App.vue'
直接在 App.vue 中 引用组件当全局来使用的话， 会有上面的 警告，我觉得还是某些组件有问题

authors: gendseo thpngj

repo: airyland/vux


text:
构建中找不到 timeline-item 组件

版本 2.9.6
运行命令 npm run xbuild 之后
在 dist/components 目录中以及子目录中不存在 timeline-item 组件.
这个组件在构建时被遗漏?

看了一下是由于对应的metas.yml文件配置错误导致，着急用可以在 vux_component_list.json 文件暂时添加
"items": [       "timeline",       "timeline-item"  ],
再次运行 npm run xbuild 即可，晚些时间我再重新处理发版