text:
Build Android release Failed

Describe the bug
build Android release on Mac  with command ./build.sh -p android release failed,  4 problems occrued, all with the same stack trace.
Logs
org.gradle.api.InvalidUserCodeException: Read system property 'https.proxyHost'
at org.gradle.configurationcache.SystemPropertyAccessListener.systemPropertyQueried(SystemPropertyAccessListener.kt:92)
at org.gradle.internal.classpath.Instrumented$DecoratingProperties.getProperty(Instrumented.java:313)
at org.gradle.internal.classpath.Instrumented$DecoratingProperties.getProperty(Instrumented.java:307)
at com.android.build.gradle.internal.SdkLibDataFactory.createProxy(SdkLibDataFactory.kt:85)
at com.android.build.gradle.internal.SdkLibDataFactory.getSettingsController(SdkLibDataFactory.kt:55)
at com.android.build.gradle.internal.SdkLibDataFactory.getDownloader(SdkLibDataFactory.kt:50)
at com.android.build.gradle.internal.SdkLibDataFactory.getSdkLibData(SdkLibDataFactory.kt:42)
at com.android.build.gradle.internal.SdkComponentsBuildService$sdkHandlerDelegate$1.invoke(SdkComponents.kt:102)
at com.android.build.gradle.internal.SdkComponentsBuildService$sdkHandlerDelegate$1.invoke(SdkComponents.kt:90)
at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
at com.android.build.gradle.internal.SdkComponentsBuildService.getSdkHandler(SdkComponents.kt:107)
at com.android.build.gradle.internal.SdkComponentsBuildService.ndkLoader(SdkComponents.kt:278)
at com.android.build.gradle.internal.SdkComponentsBuildService.versionedNdkHandler(SdkComponents.kt:301)
at com.android.build.gradle.internal.cxx.gradle.generator.CxxConfigurationModelKt.tryCreateConfigurationParameters(CxxConfigurationModel.kt:197)
at com.android.build.gradle.internal.cxx.configure.CxxCreateGradleTasksKt.createCxxVariantBuildTask(CxxCreateGradleTasks.kt:70)
at com.android.build.gradle.internal.LibraryTaskManager.doCreateTasksForVariant(LibraryTaskManager.java:214)
at com.android.build.gradle.internal.TaskManager.createTasksForVariant(TaskManager.kt:399)
at com.android.build.gradle.internal.TaskManager.createTasks(TaskManager.kt:317)
at com.android.build.gradle.internal.plugins.BasePlugin.createAndroidTasks(BasePlugin.java:771)
at com.android.build.gradle.internal.profile.NoOpAnalyticsConfiguratorService.recordBlock(NoOpAnalyticsConfiguratorService.kt:48)
at com.android.build.gradle.internal.plugins.BasePlugin.lambda$createTasks$13(BasePlugin.java:650)
at com.android.build.gradle.internal.crash.CrashReporting$afterEvaluate$1.execute(crash_reporting.kt:37)
at com.android.build.gradle.internal.crash.CrashReporting$afterEvaluate$1.execute(crash_reporting.kt:35)
at org.gradle.configuration.internal.DefaultUserCodeApplicationContext$CurrentApplication$1.execute(DefaultUserCodeApplicationContext.java:100)
at org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingAction$1.run(DefaultListenerBuildOperationDecorator.java:152)
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.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingAction.execute(DefaultListenerBuildOperationDecorator.java:149)
at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:95)
at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:83)
at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:43)
at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:245)
at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:157)
at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:61)
at org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:346)
at org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:249)
at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:141)
at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:37)
at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
at com.sun.proxy.$Proxy40.afterEvaluate(Unknown Source)
at org.gradle.configuration.project.LifecycleProjectEvaluator$NotifyAfterEvaluate$1.execute(LifecycleProjectEvaluator.java:183)
at org.gradle.configuration.project.LifecycleProjectEvaluator$NotifyAfterEvaluate$1.execute(LifecycleProjectEvaluator.java:180)
at org.gradle.api.internal.project.DefaultProject.stepEvaluationListener(DefaultProject.java:1454)
at org.gradle.configuration.project.LifecycleProjectEvaluator$NotifyAfterEvaluate.run(LifecycleProjectEvaluator.java:189)
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.configuration.project.LifecycleProjectEvaluator$EvaluateProject.lambda$run$0(LifecycleProjectEvaluator.java:105)
at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.lambda$applyToMutableState$0(DefaultProjectStateRegistry.java:250)
at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.lambda$withProjectLock$3(DefaultProjectStateRegistry.java:310)
at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:213)
at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.withProjectLock(DefaultProjectStateRegistry.java:310)
at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.fromMutableState(DefaultProjectStateRegistry.java:291)
at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.applyToMutableState(DefaultProjectStateRegistry.java:249)
at org.gradle.configuration.project.LifecycleProjectEvaluator$EvaluateProject.run(LifecycleProjectEvaluator.java:91)
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.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:63)
at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:723)
at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:150)
at org.gradle.execution.TaskPathProjectEvaluator.configure(TaskPathProjectEvaluator.java:41)
at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:69)
at org.gradle.configuration.DefaultProjectsPreparer.prepareProjects(DefaultProjectsPreparer.java:46)
at org.gradle.configuration.BuildTreePreparingProjectsPreparer.prepareProjects(BuildTreePreparingProjectsPreparer.java:64)
at org.gradle.configuration.BuildOperationFiringProjectsPreparer$ConfigureBuild.run(BuildOperationFiringProjectsPreparer.java:52)
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.configuration.BuildOperationFiringProjectsPreparer.prepareProjects(BuildOperationFiringProjectsPreparer.java:40)
at org.gradle.initialization.DefaultGradleLauncher.prepareProjects(DefaultGradleLauncher.java:226)
at org.gradle.initialization.DefaultGradleLauncher.doClassicBuildStages(DefaultGradleLauncher.java:164)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:149)
at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:125)
at org.gradle.internal.invocation.GradleBuildController$1.create(GradleBuildController.java:71)
at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:213)
at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:67)
at org.gradle.internal.invocation.GradleBuildController.run(GradleBuildController.java:56)
at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:31)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.launcher.exec.BuildOutcomeReportingBuildActionRunner.run(BuildOutcomeReportingBuildActionRunner.java:66)
at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
at org.gradle.tooling.internal.provider.FileSystemWatchingBuildActionRunner.run(FileSystemWatchingBuildActionRunner.java:90)
at org.gradle.launcher.exec.BuildCompletionNotifyingBuildActionRunner.run(BuildCompletionNotifyingBuildActionRunner.java:41)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:49)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:44)
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.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:44)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.lambda$execute$0(InProcessBuildActionExecuter.java:59)
at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:86)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:58)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:30)
at org.gradle.launcher.exec.BuildTreeScopeLifecycleBuildActionExecuter.lambda$execute$0(BuildTreeScopeLifecycleBuildActionExecuter.java:34)
at org.gradle.internal.buildtree.BuildTreeState.run(BuildTreeState.java:53)
at org.gradle.launcher.exec.BuildTreeScopeLifecycleBuildActionExecuter.execute(BuildTreeScopeLifecycleBuildActionExecuter.java:33)
at org.gradle.launcher.exec.BuildTreeScopeLifecycleBuildActionExecuter.execute(BuildTreeScopeLifecycleBuildActionExecuter.java:28)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:104)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:55)
at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:64)
at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:37)
at org.gradle.tooling.internal.provider.SessionScopeLifecycleBuildActionExecuter.lambda$execute$0(SessionScopeLifecycleBuildActionExecuter.java:54)
at org.gradle.internal.session.BuildSessionState.run(BuildSessionState.java:67)
at org.gradle.tooling.internal.provider.SessionScopeLifecycleBuildActionExecuter.execute(SessionScopeLifecycleBuildActionExecuter.java:50)
at org.gradle.tooling.internal.provider.SessionScopeLifecycleBuildActionExecuter.execute(SessionScopeLifecycleBuildActionExecuter.java:36)
at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:36)
at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:25)
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:59)
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:31)
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:58)
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:42)
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:47)
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:31)
at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:65)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:39)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:29)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:35)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:78)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:75)
at org.gradle.util.Swapper.swap(Swapper.java:38)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:75)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:63)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:84)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:52)
at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:297)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
at java.base/java.lang.Thread.run(Thread.java:830)

This failure seems internal to Gradle (we don't read http.proxy). Try disabling configuration caching or try to clear the configuration cache.

repo: google/filament


text:
Gopacket capture losing data

I was implementing an application using pcap.OpenLive to capture the data directly from an interface and tcpassembly to reassembly HTTP streams. The streams that I was trying to assemble are GET requests to files with a size of 2,2 MB. When I try to run the program capturing data from a network interface, the program hangs in the reading of the request body. When I captured the network data with wireshark and run my program reading the packets from the pcap the program runs without problems.
After trying several things to fix this problem, I found this closed issue #237.
I adjusted the script from the issue mentioned above  and then sent a file twice using netcat, one with gopacket sniffing the network and the other with wireshark. From the  pcap generated  by wireshark I was able to extract a correct copy of the file but with the  gopacket's pcap I was not. Thus, I was able to reproduce the error mentioned in this issue.
Is this a bug or a known limitation (#329)?
Temporary solution
I solved this problem using AF_PACKET to capture the network data. With this, I was able to reassemble HTTP sessions with my program and successfully extract a file sent with netcat from a gopacket's pcap.

Sorry, but I didn't find the code where I had this problem...

source: gharchive/issue

repo: google/gopacket

license_type: permissive

license_source: bigquery


text:
Tweaks to Suggest LOI card and Job Card

-Moved collect data button to right side
-Update Suggest LOI card text
-Updating styling for both Job cards and Suggest LOI cards

/gcbrun

/gcbrun

/gcbrun

Fixes #1653

/gcbrun

/gcbrun

source: gharchive/pull-request

repo: google/ground-android


text:
Clean up MapAdapter

This PR contains two minor clean up changes to the MapAdapter:

Use timber for logging
Remove the renderJsonLayer -- we don't need it anymore since we now take a viewport based approach to offline area selection

Thanks @shobhitagarwal1612! It's ready for another check when you get a chance.


text:
Updated Makefile (on OSX) to use xcrun (from xcode) versus sw_vers to…

… discover SDK version. This prevents failed builds when using OSX 10.11 with the newest Xcode 10.12.

xcrun doesn't give you the OS_VERSION. It is used to get the SDK version.
You should change SDK_NAME instead of OS_VERSION. Otherwise, if Apple releases a new CRASH_REPORTER your build will break.

repo: google/honggfuzz


text:
Return the node created with elementOpen(Start)/elementVoid

This would allow further manipulation e.g. animations

I think this would also solve https://github.com/google/incremental-dom/issues/41?

Before I can accept this pull request, you will need to sign a contributor license agreement. Please just leave a comment in this pull request if you decide to sign it.

It would solve #41 which is both awesome and terrifying

Signed the agreement, appended return to documentation

authors: cramforce jridgewell sparhami webcss

repo: google/incremental-dom


text:
Classpath wildcards

It would be nice if j2objc -classpath parameter supported wildcards in the same way like javac, as documented here:
https://docs.oracle.com/javase/8/docs/technotes/tools/windows/classpath.html#A1100762
Expanded lists of all jars are becoming too long.
It could be also considered for -sourcepath.
Discussion: https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!msg/j2objc-discuss/Qq7vHN0VaUM/t8wWa7NjAAAJ

Thanks for submitting the issue, I'll take a look.

FYI, j2objc supports '@' files, which are files containing a list of
arguments. This helps in two ways: first, it allows teams to avoid command
lines that are longer than the shell allows, as you mentioned. The second
is that it makes all arguments intentional, and not dependent upon whatever
jars happen to match a wildcard. These @ files are frequently included in a
project, where they both support the build and serve as documentation for
what its dependencies are.
I agree with this issue that j2objc should work like javac, but would never
recommend using wildcards in a build's classpath as it can introduce
perplexing errors when different developers have different sets of matching
jars.
On Mon, Nov 4, 2019 at 6:51 AM Antonio notifications@github.com wrote:

Thanks for submitting the issue, I'll take a look.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/google/j2objc/issues/1141?email_source=notifications&email_token=AAW2JL7YK6MFA5IEXELM53DQSAZHLA5CNFSM4JISMSFKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEC7QHHA#issuecomment-549389212,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAW2JL6PKRZCQZ6IXK4VZ2TQSAZHLANCNFSM4JISMSFA
.

Fixed in latest source.

FYI, j2objc supports '@' files, which are files containing a list of arguments.

Thank you, I was not aware of @files support, it works well for me.

authors: antonio-cortes-perez blazek tomball


text:
TypeError: Shapes must be 1D sequences of concrete values of integer type- dynamic_slice

Description
I'm using jax to implement a pca function, but I get an error. Here's the code
import numpy as np
import jax.numpy as jnp
from jax import jit, vmap
import jax
from jax import lax
from functools import partial

class PCA:
    def __init__(self, n_components=None, svd_solver='full'):
        self.n_components = n_components
        self.svd_solver = svd_solver
        self.components = None
        self.mean = None
        self.explained_variance = None

    def QR_GivenRot(self,mat):
        rows, cols = mat.shape

        R = jnp.copy(mat)
        Q = jnp.eye(cols)

        def loop_body_fn(col, RQ):
            R, Q = RQ
            def update_RQ(RQ):
                R, Q = RQ
                if jnp.abs(R[row, col]) < 1e-6:
                    return R, Q

                f = R[col, col]
                s = R[row, col]
                den = jnp.sqrt(f*f + s*s)
                c = f / den
                s = s / den

                T = jnp.eye(rows)
                T = T.at[col, col].set(c)
                T = T.at[row, row].set(c)
                T = T.at[row, col].set(-s)
                T = T.at[col, row].set(s)

                R = jnp.dot(T, R)
                Q = jnp.dot(T, Q)

                return R, Q

            R, Q = lax.cond(jnp.abs(R[row, col]) < 1e-6, lambda _: (R, Q), update_RQ, (R, Q))

            return R, Q

        _, Q = lax.fori_loop(0, cols, loop_body_fn, (R, Q))

        return jnp.transpose(Q), R

    def QR_Heisenberg(self,mat):
        rows, cols = mat.shape
        Hsbg = jnp.copy(mat)

        eigv = jnp.eye(cols)

        def loop_body_fn(row, H_eigv):
            H, eigv = H_eigv
            array = H[row:, row-1]

            # Householder
            a = jnp.linalg.norm(array)

            e = jnp.zeros((rows - row,))
            e = e.at[0].set(1.0)
            num = array - a * e
            u = num / jnp.linalg.norm(num)

            H = jnp.eye(rows - row) - 2 * jnp.outer(u, u)

            # Hsbg
            T = jnp.eye(rows)
            T = T.at[row:, row:].set(H)

            H = jnp.dot(jnp.dot(T.T, H), T)
            eigv = jnp.dot(eigv, T.T)

            return H, eigv

        _, eigv = lax.fori_loop(1, rows - 1, loop_body_fn, (Hsbg, eigv))
        eigv = eigv.T

        # Given
        def given_loop_body_fn(_, H_eigv):
            H, eigv = H_eigv
            q, r = self.QR_GivenRot(H)
            H = jnp.dot(r, q)
            eigv = jnp.dot(eigv, q)
            return _, (H, eigv)

        _, (Hsbg, eigv) = lax.fori_loop(0, 50, given_loop_body_fn, (None, (Hsbg, eigv)))

        return jnp.diag(Hsbg), eigv

    def SortEig(self,eig, eigV):
        e = jnp.copy(eig)
        v = jnp.copy(eigV)
        indices = jnp.argsort(e)
        e = jnp.sort(e)
        for i, j in enumerate(indices):
            v = v.at[:, i].set(eigV[:, j])

        return e, v

    def SVD_Solver(self,mat, Func):
        aTa = jnp.dot(mat.T, mat)
        aaT = jnp.dot(mat.T, mat)

        eig, eigv = Func(aTa)
        eig, eigv = self.SortEig(eig, eigv)

        rows, cols = mat.shape
        U = eigv
        S = jnp.zeros_like(mat)
        for i in range(rows):
            S = S.at[i, i].set(eig[i])

        eig, eigv = Func(aaT)
        eig, eigv = self.SortEig(eig, eigv)
        V = eigv

        return U, jnp.sqrt(S), V

    def SVD(self, mat, Method):
        # Method: 0: QR_Basic, 1: QR_Heisenberg, 2: Jacobi_Basic
        if Method == 0:
            U, S, V = self.SVD_Solver(mat, self.QR_Heisenberg)
        return U, S, V

    def fit(self, X):
        self.mean = jnp.mean(X, axis=0)
        X_centered = X - self.mean
        if self.svd_solver == 'full':
            U, S, V = self.SVD(X_centered, 0)
        V = V[:self.n_components]
        # V = lax.dynamic_slice(V, (0, 0), (self.n_components,V.shape[0]))
        S = S[:self.n_components]
        self.components = V
        self.explained_variance = S**2
        return self

    def transform(self, X):
        X_centered = X - self.mean
        return jnp.matmul(X_centered, self.components.T)

    @property
    def variance(self):
        return self.explained_variance

X = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
pca = PCA(n_components=2)
pca.fit(X)

The location of the error is

Cell In[71], line 63, in PCA.QR_Heisenberg.<locals>.loop_body_fn(row, H_eigv)
     61 def loop_body_fn(row, H_eigv):
     62     H, eigv = H_eigv
---> 63     array = H[row:, row-1]
     65     # Householder
     66     a = jnp.linalg.norm(array)
File /opt/homebrew/Caskroom/miniforge/base/envs/sf/lib/python3.8/site-packages/jax/_src/numpy/lax_numpy.py:3908, in _rewriting_take(arr, idx, indices_are_sorted, unique_indices, mode, fill_value)
   3905       return lax.dynamic_index_in_dim(arr, idx, keepdims=False)
   3907 treedef, static_idx, dynamic_idx = _split_index_for_jit(idx, arr.shape)
-> 3908 return _gather(arr, treedef, static_idx, dynamic_idx, indices_are_sorted,
   3909                unique_indices, mode, fill_value)

File /opt/homebrew/Caskroom/miniforge/base/envs/sf/lib/python3.8/site-packages/jax/_src/numpy/lax_numpy.py:3917, in _gather(arr, treedef, static_idx, dynamic_idx, indices_are_sorted, unique_indices, mode, fill_value)
   3914 def _gather(arr, treedef, static_idx, dynamic_idx, indices_are_sorted,
   3915             unique_indices, mode, fill_value):
   3916   idx = _merge_static_and_dynamic_indices(treedef, static_idx, dynamic_idx)
-> 3917   indexer = _index_to_gather(shape(arr), idx)  # shared with _scatter_update
   3918   y = arr
   3920   if fill_value is not None:

File /opt/homebrew/Caskroom/miniforge/base/envs/sf/lib/python3.8/site-packages/jax/_src/numpy/lax_numpy.py:4169, in _index_to_gather(x_shape, idx, normalize_indices)
   4160 if not _all(_is_slice_element_none_or_constant(elt)
   4161             for elt in (start, stop, step)):
   4162   msg = ("Array slice indices must have static start/stop/step to be used "
   4163          "with NumPy indexing syntax. "
   4164          f"Found slice({start}, {stop}, {step}). "
   (...)
   4167          "dynamic_update_slice (JAX does not support dynamically sized "
   4168          "arrays within JIT compiled functions).")
-> 4169   raise IndexError(msg)
   4170 if not core.is_constant_dim(x_shape[x_axis]):
   4171   msg = ("Cannot use NumPy slice indexing on an array dimension whose "
   4172          f"size is not statically known ({x_shape[x_axis]}). "
   4173          "Try using lax.dynamic_slice/dynamic_update_slice")

IndexError: Array slice indices must have static start/stop/step to be used with NumPy indexing syntax. Found slice(Traced<ShapedArray(int32[], weak_type=True)>with<DynamicJaxprTrace(level=1/0)>, None, None). To index a statically sized array at a dynamic position, try lax.dynamic_slice/dynamic_update_slice (JAX does not support dynamically sized arrays within JIT compiled functions).

When I modify it with lax.dynamic_slice array = lax.dynamic_slice(H, (row, row - 1), (rows - row,))
An error occurs again
TypeError                                 Traceback (most recent call last)
Cell In[72], line 156
    154 X = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
    155 pca = PCA(n_components=2)
--> 156 pca.fit(X)

Cell In[72], line 138, in PCA.fit(self, X)
    136 X_centered = X - self.mean
    137 if self.svd_solver == 'full':
--> 138     U, S, V = self.SVD(X_centered, 0)
    139 V = V[:self.n_components]
    140 # V = lax.dynamic_slice(V, (0, 0), (self.n_components,V.shape[0]))

Cell In[72], line 131, in PCA.SVD(self, mat, Method)
    128 def SVD(self, mat, Method):
    129     # Method: 0: QR_Basic, 1: QR_Heisenberg, 2: Jacobi_Basic
    130     if Method == 0:
--> 131         U, S, V = self.SVD_Solver(mat, self.QR_Heisenberg)
    132     return U, S, V

Cell In[72], line 113, in PCA.SVD_Solver(self, mat, Func)
    110 aTa = jnp.dot(mat.T, mat)
    111 aaT = jnp.dot(mat.T, mat)
--> 113 eig, eigv = Func(aTa)
    114 eig, eigv = self.SortEig(eig, eigv)
    116 rows, cols = mat.shape

Cell In[72], line 84, in PCA.QR_Heisenberg(self, mat)
     80     eigv = jnp.dot(eigv, T.T)
     82     return H, eigv
---> 84 _, eigv = lax.fori_loop(1, rows - 1, loop_body_fn, (Hsbg, eigv))
     85 eigv = eigv.T
     87 # Given

    [... skipping hidden 12 frame]

Cell In[72], line 63, in PCA.QR_Heisenberg.<locals>.loop_body_fn(row, H_eigv)
     61 def loop_body_fn(row, H_eigv):
     62     H, eigv = H_eigv
---> 63     array = lax.dynamic_slice(H, (row, row - 1), (rows - row,))
     65     # Householder
     66     a = jnp.linalg.norm(array)

    [... skipping hidden 1 frame]

File /opt/homebrew/Caskroom/miniforge/base/envs/sf/lib/python3.8/site-packages/jax/_src/core.py:2039, in canonicalize_shape(shape, context)
   2037 except TypeError:
   2038   pass
-> 2039 raise _invalid_shape_error(shape, context)

TypeError: Shapes must be 1D sequences of concrete values of integer type, got (Traced<ShapedArray(int32[], weak_type=True)>with<DynamicJaxprTrace(level=1/0)>,).
If using `jit`, try using `static_argnums` or applying `jit` to smaller subfunctions.
The error occurred while tracing the function scanned_fun at /opt/homebrew/Caskroom/miniforge/base/envs/sf/lib/python3.8/site-packages/jax/_src/lax/control_flow/loops.py:1668 for scan. This concrete value was not available in Python because it depends on the value of the argument loop_carry[0].

How can I fix it? Thanks a lot!
What jax/jaxlib version are you using?
jax  0.4.8, jaxlib  0.4.7
Which accelerator(s) are you using?
GPU
Additional system info
python 3.8 , linux/mac
NVIDIA GPU info
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 465.19.01    Driver Version: 465.19.01    CUDA Version: 11.3     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA Tesla V1...  Off  | 00000000:1A:00.0 Off |                    0 |
| N/A   33C    P0    37W / 250W |   3361MiB / 32510MiB |      0%      Default |
|                               |                      |                  N/A |

The issue is that row is a traced value, so array = H[row:, row-1] has a dynamic shape. JAX transorms like jit and vmap, as well as higher-order functions like scan and fori_loop require shapes to be static. This means that the shapes of arrays cannot depend on dynamic values like row in your program. If you want to use JAX, you'll have to re-express your program in terms of statically-shaped arrays.
You can read more at JAX Sharp Bits: Dynamic Shapes.

I don’t see any easy way to express this program in terms of static shapes, but I probably don’t understand the algorithm as well as you do.

Understood - it’s not possible to split out the first n components if n is dynamic. Note that dynamic_slice will not help you here because it is for slicing a static number of elements at a dynamic location, not slicing a dynamic number of elements. You’ll have to figure out how to re-express your algorithm in terms of statically-sized slices if you want to use this algorithm with JAX. It’s not clear to me that there’s a straightforward approach to this given your code, but you may be able to figure one out.

authors: hacker-jerry jakevdp

repo: google/jax

license_source: github-api


text:
CPU: incorrect result from combo of arg donation, sharding constraint, and --xla_force_host_platform_device_count=2

Description
This test passes on GPU (1 or 2 GPUs), on CPU on MacOS M1 (with or without the XLA FLAG), and Linux CPU (without the flag)
But with the --xla_force_host_platform_device_count=2 (or 8), on linux, on x64 CPU, the assertion fails with seemingly random garbage being returned instead. I've seen it on three different machines.
Removing the donation or the sharding constraints, or the flag makes this test past. I've instantiated other versions of this bug, but I think (hope) they're all the same.
(levanter) dlwh@john1:~/src/levanter$ XLA_FLAGS=--xla_force_host_platform_device_count=8 python tests/test_xx.py
Traceback (most recent call last):
  File "/juice2/u/dlwh/src/levanter/tests/test_xx.py", line 45, in <module>
    test_minimize()
  File "/juice2/u/dlwh/src/levanter/tests/test_xx.py", line 41, in test_minimize
    assert jnp.all(model0[-1] == state[-1]), f"{model0[-1]} != {state[-1]}... {model0[0]}"
AssertionError: [[ 0.00386154]
 [-0.01053566]] != [[-0.00554077]
 [ 0.02703212]]... [[-0.00099001]
 [-0.01423136]]

 from functools import partial

import jax
import jax.numpy as jnp
from jax.sharding import Mesh, NamedSharding, PartitionSpec

def test_minimize():
    In = 2
    Out = 1

    mesh = Mesh(jax.devices(), ("devices",))

    def init_fn(key):
        k1, k2 = jax.random.split(key)

        w1 = jax.random.normal(k1, (In, Out)) * 0.02
        w2 = jax.random.normal(k2, (In, Out)) * 0.02

        # without these sharding constraints, the test passes
        w1 = jax.lax.with_sharding_constraint(w1, NamedSharding(mesh, PartitionSpec()))
        w2 = jax.lax.with_sharding_constraint(w2, NamedSharding(mesh, PartitionSpec()))
        return (w1, w2)

    # without argument donation, the test passes
    # @jax.jit
    @partial(jax.jit, donate_argnums=0)
    def init_and_merge(l2, k):
        l1, _ = init_fn(k)
        return l1, l2

    k0 = jax.random.PRNGKey(0)
    k1 = jax.random.PRNGKey(1)

    model0 = jax.jit(init_fn)(k0)

    state = init_and_merge(model0[-1], k1)

    # reinit b/c donated
    model0 = jax.jit(init_fn)(k0)
    assert jnp.all(model0[-1] == state[-1]), f"{model0[-1]} != {state[-1]}... {model0[0]}"

if __name__ == "__main__":
    test_minimize()

System info (python version, jaxlib version, accelerator, etc.)
python -c "import jax; jax.print_environment_info()"
jax:    0.4.23
jaxlib: 0.4.23
numpy:  1.26.2
python: 3.10.13 (main, Sep 11 2023, 13:44:35) [GCC 11.2.0]
jax.devices (1 total, 1 local): [CpuDevice(id=0)]
process_count: 1

I can't seem to repro this in my environment:
In [10]: jax.print_environment_info()
jax:    0.4.25.dev20240224+f9e20d587
jaxlib: 0.4.24.dev20240120
numpy:  1.24.3
python: 3.11.7 (main, Dec  8 2023, 14:22:46) [GCC 13.2.0]
jax.devices (1 total, 1 local): [CpuDevice(id=0)]
process_count: 1

Can you try with jax nightly on CPU?

Commands: https://jax.readthedocs.io/en/latest/installation.html#nightly-installation

yep, works fine. my bad.


text:
[breadboard-web] Update the UI (#1 of ... some)

This is the first update for #202 🎉
Will keep on with this, but thought it best to land the changes now before the patch got unwieldy!

🥳  LGTM! Please land when you're ready 😀

authors: dglazkov paullewis

repo: google/labs-prototypes


text:
Windows builds are a disaster

I've done this before a year ago, figured out the magic incantation to get Windows builds working.  I'm trying to do it again (lost access to that wiki page), and I'm struggling, again.  Bazel is a garbage system.  I'm having to hack the python_configure.bzl to get it to recognize that Python.exe is actually an executable.  PLEASE somebody actually start with a fresh Windows VM and outline the proper steps.  So frustrating.

It's from a fork, but maybe you'd have some luck with this: https://github.com/TFORevive/vaudio_lyra?tab=readme-ov-file#compile-on-windows
(and yes Bazel is pain, but I think Lyra might also be needing some older version or something)

Thanks much for the link, that'll help.  I've gotten pretty far using Git Bash as the environment, MSYS was not doing the right thing for me.  Running in a Windows cmd shell absolutely did not work.  Newest versions of Bazel have very-breaking changes, and it seems pytorch depends on a newer version of Bazel than 5.0.0 that was originally used for Lyra.  It's great tech, but the build process is garbage.  There are some good things in that repo you mentioned.  I'll post an update here for posterity once I get things working.

Leaving this here for future Windows devs.  Lyra is very sensitive to Bazel versions.  5.0.0 did not work, but 5.3.2 does, 7.3.1 does not.  Build systems are supposed to be agnostic to what they build.  Sigh.  Seems to me Bazel is increasing fragility of codebases, but hey, nobody asked my opinion.  ;-)

repo: google/lyra


text:
Version 0.1 of Auth software.

This is to add Version 0.1 of the software portion.

Appropriate blocks were added and formatting was changed to 2-space indents

repo: google/makerspace-authbox


text:
mini mega footer no responsive

hello, I have problems with the footer. it is no responsive,with chrome/ie11/opera.
i use only the originals examples. Any ideas?

Thanks

Add footer inside of <main class='mdl-layout__content'> block.

authors: flinxc sgwanlee

repo: google/material-design-lite


text:
Add to install-action

It would be cool if one could install mdbook-i18n-helpers using install-action.

Hi @mgeisler , I am interested in working on this.
When I generate manifest the guide from install-action,

Hi @miroim, nice to meet you!
Thanks for looking into this. I agree we should generate binaries as part of the release — could you look into how people normally do that?
My Rust projects have mostly been libraries so far, and there nobody asked for binaries to be released 🙂
I use https://github.com/mgeisler/rust-release-gh-action for releasing my libraries and I would like to use it here too (eventually). Right now, the action requires a lib.rs file,p but that is something which should be fixed.

To make sure everything works as expected, I'll first conduct tests in the forked repository before integrating any changes into the main project.

That's the best way for this kind of thing! Then you can (force-)push as much as you want and get quick feedback!

authors: mgeisler miroim


text:
[iOS] App is only listed in US App Store!

I just tried downloading MechaHamster on the iOS App Store, and it is not possible. You guys listed it only in the US App Store. The rest of the world is left out.....

Hi D1no,
Apologies but due to GDPR compliance requirements we've had to make the app only available in the US for now. Its not ideal but if you download the Github repo you can build your own apk or iOS version with Unity in the meantime.

repo: google/mechahamster


text:
Is coordinate axis fixed for mediapipe facemesh ?

Hello,
I am trying to understand how coordinates are captured in mediapipe facemesh.
If my face is not stationary , but constantly moving with respect to my webcam , the coordinates keep changing.
I wanted to understand if the origin is static for the entire 2-D plan where my image is captured or the origin keeps on changing as my face orientation (or angle) changes.
Kindly suggest.
Thanks,
Aarushi

Adding @ ivan-grishchenko as he already addressed your similar issues here 1724

Hey Aarushi! Yes, you are right that the coordinates origin is static for the entire 2D plane and located in the top left corner. In other words, the top left corner is always (0, 0) and the bottom right corner is (255, 255).

authors: aarushi-mittal ablavatski sgowroji

repo: google/mediapipe


text:
Facemesh TfLite model giving out of bound feature points in the static image

Hi, I tried using tflite model given here to get landmarks on a static image. Even though the image is 192x192, I'm getting landmark locations over 200 along width and height. Are those two supposed to be in different coordinate systems?

Are you using the Facemesh example or just the TFlite file? The output of the Facemesh TFlite model is Normalized landmarks with value 0 to 1 of the input image width or input image height https://github.com/google/mediapipe/blob/master/mediapipe/modules/face_landmark/face_landmark_cpu.pbtxt#L129

Hi,
I am also facing the same issue, I ran the model: face_landmark.tflite on a static image using tflite.Interpreter(), but the model seems to give out-of-bounds mesh points and very distorted meshes. Can you please clarify if some transformation is needed?
This is what I've done:-
import numpy as np
import tensorflow as tf
import tflite_runtime.interpreter as tflite
import matplotlib.pyplot as plt
import cv2
Load TFLite model and allocate tensors.
interpreter = tflite.Interpreter(model_path="face_landmark.tflite")
interpreter.allocate_tensors()
Get input and output tensors.
input_details = interpreter.get_input_details()
output_details = interpreter.get_output_details()
Test model on random input data.
input_shape = input_details[0]['shape']
img = cv2.imread("test.jpg")
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
img = cv2.resize(img, (192,192))
img1=np.empty((1,192,192,3))
img1[0,:,:,:]=img
img=img1
input_data = np.array(img, dtype=np.float32)
interpreter.set_tensor(input_details[0]['index'], input_data)
interpreter.invoke()
detections = interpreter.get_tensor(output_details[0]['index'])
x = [detections[0,0,0,i] for i in range(0,1404,3)]
y = [detections[0,0,0,i] for i in range(1,1404,3)]
img=np.reshape(img,(192,192,3))
img=img.astype(int)
plt.imshow(img, zorder=1)
plt.scatter(x, y, zorder=2, s=4.0)
plt.show()

Hi Aashish,
Were you able to fix this issue?
I am stuck as well here, if you could provide any help.

+1

anyone found a solution ? :(

Hi, can anyone suggest image processing pipeline for facial landmark detection?. I have loaded "facial_landmark.tflite" model and made prediction on cropped face image. But I am getting distorted mesh.

Hi, can anyone suggest image processing pipeline for facial landmark detection?. I have loaded "facial_landmark.tflite" model and made prediction on cropped face image. But I am getting distorted mesh.

I guess normalize the input image could be helpful, but I'm not sure how to normalize it.

Hi @shashank-yadav and others,  Could you please test the above with the latest release and let us know if you still see the observation. Thanks!

Hello!
The image normalization fix the landmarks prediction
input_data = np.array(img, dtype=np.float32)/255

authors: AryanSethi HaoZhang-umich aashishwaikar ahmedAlmasri azeme1 mgyong midhulavijayan nitin26gupta sgowroji shashank-yadav


text:
three.js r149

Fixes transparent rendering regression and specular/ior export.

@mrdoob Looking good!

repo: google/model-viewer


text:
Isolate child element in equivalence map

It is possible to link a proofreading layer to a labels layer and use annotations to merge labels using an EquivalenceMap(). The parent label can then also be isolated and split from its children using the isolate_element() function. Is there an easy way to isolate a child label based on an intersecting annotation? It would be straight forward to do this on the underlying array, but it doesn't seem like there is an existing way to modify the state, like there is for the union.
A simple example with merging and then isolating a parent element:

After merging, we can split the parent label (1) from its child (2) and then (2) from its child (3). The ideal behavior would be to isolate, for example, (3) directly from (1). It seems like the children are tracked directly because hovering over shows the equivalence, e.g 3 --> 2 | 2 --> 1, so is there a way to go backwards, and update the state?
Example code:
import neuroglancer
import numpy as np
import webbrowser

neuroglancer.set_server_bind_address("0.0.0.0")

viewer = neuroglancer.Viewer()

data = np.arange(2*2, dtype=np.uint64).reshape(2,2)

dims = neuroglancer.CoordinateSpace(
    names=["x", "y"],
    units="m",
    scales=[1,]*2,
)

vol = neuroglancer.LocalVolume(data=data, dimensions=dims)

def union(s):
    segments = set()
    for segment in s.viewer_state.layers["anno"].annotations:
        if segment.segments:
            ids = [i for s in segment.segments for i in s if i != 0]
            segments.update(ids)

    with viewer.txn() as txn:
        for segment in segments:
            txn.layers["labels"].equivalences.union(max(segments), segment)
        txn.layers["anno"].annotations = None

def isolate(s):
    segments = set()
    for segment in s.viewer_state.layers["anno"].annotations:
        if segment.segments:
            ids = [i for s in segment.segments for i in s if i != 0]
            segments.update(ids)

    with viewer.txn() as txn:
        for segment in segments:
            txn.layers["labels"].equivalences.isolate_element(segment)
        txn.layers["anno"].annotations = None

with viewer.txn() as s:

    s.layers["labels"] = neuroglancer.SegmentationLayer(source=vol)

    s.layers["anno"] = neuroglancer.LocalAnnotationLayer(
        linked_segmentation_layer={"segments": "labels"}, dimensions=dims
    )

    s.layout = "xy"
    s.position = [1, 1]
    s.cross_section_scale = 0.005

viewer.actions.add("union", union)
viewer.actions.add("isolate", isolate)

with viewer.config_state.txn() as s:
    s.input_event_bindings.viewer["keyu"] = "union"
    s.input_event_bindings.viewer["keyi"] = "isolate"

url = str(viewer)
print(url)

try:
    webbrowser.open_new_tab(url)
except:
    webbrowser.open_new(url)

Perhaps you can explain a bit more exactly what type of action you want?
Note that the Neuroglancer itself now contains slightly better support for dealing with local equivalences.  You can now perform split and merge actions directly in Neuroglancer, independently from the Python integration.  The splitting and merging is based on a spanning tree representation.
It is not currently documented, but here is how you can try it out:

Open the layer side panel for the segmentation layer that you want to reconstruct, e.g. by right clicking it in the layer bar.
Select the "Source" tab if not already selected.
At the bottom of the Source tab, there is a "+" button for adding a new data source.  Click that, then type "local://equivalences" and press enter.  Underneath the added data source "local segmentation graph" should be listed.
Select the "Seg" tab.
Note that "Merge" and "Split" are now listed at the top of the Seg tab.  While holding down the left mouse button to click the empty "[ ]" to the left of  "Merge", press a letter key a-z that you want to use for merging, such as "x".  Since you will have to hold down shift to use these keys, and will want to reserve your right hand for the mouse (assuming you use the mouse with your right hand), make sure to pick a key that is near the left shift key.  Likewise hold down the left mouse button over the empty "[ ]" to the left of "Split" and pick a different key, e.g. "s".  This will allow you to merge and split by holding down "shift+x" and "shift+s" respectively.
There is just one last key binding you should set up.  Select the "Render" tab.  While holding down the left mouse button to click on the empty "[ ]" next to "Base segment coloring", press another letter a-z, such as "c".
To merge segments, you first need to set the "anchor" segment to which all of your added segments will be merged.  To do this, make sure the desired anchor segment is selected (e.g. by double clicking it), then hold down shift+x and right click on the segment.  You can change the anchor segment at any time with shift+x rightclick.
Once you have set the anchor segment, you can merge segments to it by holding down shift+x, hovering the mouse over the segment you want to merge, and left clicking.  When you hold down shift+x, the display changes to show a preview of the merge that will be performed.  All selected segments are hidden, and the anchor segment as well as the segment you are currently hovering over are shown.  For example if you are picking the continuation segment in 2d, you can just hover over it while holding down shift+x and if you wait a second for it to load, it will be shown in 3d as well without needing to double click.
Once you have performed the merge, the new merged segment will all be shown in the same color.  If you press shift+c, though, that toggles base segment coloring, which allows you to see the base segments that make up an agglomerated segment.
If you make a mistake when merging, you can correct it by splitting.  This works similarly to merging: there is an anchor segment (same one used for merging), which you can set with shift+s rightclick.  Then while holding down shift+s, only the agglomerated anchor segment is shown.  If you hover over a portion of the agglomerated anchor segment, a preview of the split is shown, by using two separate colors to show the two parts that will result from the split.  You don't explicitly choose exactly where the split will occur.  Instead, Neuroglancer remembers the tree of merges that you performed, and always splits according to this same tree.  The split point within this tree is chosen so that the segment you hover over (the part to split off) is as small as possible.

And here is an example link:
Example link
One caveat is that the EquivalenceMap class in the Python API is not yet updated to properly preserve or work with the spanning tree.  Instead, if you attempt to manipulate the equivalences using the Python API, the equivalences themselves will be correctly preserved, but the spanning tree will be lost, which means subsequent split actions won't work very well.

That's exactly what I had in mind, but a little more involved. Ideally I would be able to just remove a child element (i.e supervoxel) from a merged label when a point annotation intersects with the element. The rest of the merged children would remain merged. It would be good to be able to access this pythonically to wrap it in a lightweight callback. It is easy enough to do this with the merging right now, could you point me to the splitting code? Thank you!

I'm not sure I understand what you are trying to accomplish differs from the existing EquivalenceMap.isolate_element method.

isolate_element seems to return the parent not the child, regardless of where a point is placed. maybe a 3d example is better:
we have two segments (parents) which each consist of 8 children:

we accidentally merge the two together (yellow dots 4th child down in each segment):

Now we try to isolate the 4th element down in the left segment (yellow dot):

we end up isolating the parent node (top element, left segment), regardless of where we place the node:

but the ideal behavior would be to split away the 4th element:

Oh, I see.  The issue is that when you create an annotation with a related segment, the id used is always the root segment id, not the base supervoxel id.  However, Python action callbacks can obtain the base supervoxel id from ActionState.selected_values.  In particular, for the segmentation layer if the mouse is over a mapped id, then the value will be a SegmentIdMapEntry.

Hmm that could work for removing a single element per callback, but I guess the problem is a case where > 1 element needs to be selected - since selected_values only knows the id under the mouse. The nice thing for the union case is that we know each segment to be merged:
for segment in s.viewer_state.layers["anno"].annotations:
        print(segment.segments)

but after merging, the only segment stored is the parent segment which can't give us the children. I guess a mapping could be created whenever merging (e.g 1 --> 2) which could then be used as a reverse lookup during a split (2 --> 1). If the mapping exists (i.e after a merge), it could be stored directly inside annotations.segments for each annotation. Is this something similar to the splitting in the example you sent?

Actually, isolating a single child element works fine in my case. So something like this would work for both parent and child:
def isolate(s):

    with viewer.txn() as txn:
        equivalences = txn.layers["labels"].equivalences

        try:
            key = s.selected_values["labels"].value.key

            del equivalences._parents[key]
            del equivalences._weights[key]
            del equivalences._prev_next[key]
            del equivalences._min_values[key]

        except:
            key = s.selected_values["labels"].value
            equivalences.isolate_element(key)

authors: jbms sheridana

repo: google/neuroglancer


text:
Set the description and URL of this GitHub repo

(sorry for the fake PR; the Issues tab is disabled)

Thanks.  Fixed!

authors: dandv rspier

repo: google/new-project


text:
Some bindings are missing

Some bindings that im missing for my project so far are:

createVertexArray
bindVertexArray
texSubImage3D

I use this for creating an ForceDirectedGraph https://64f.de/steam-graph/

I was looking in to adding these along with multisampling, but the createVertexArray implementation doesnt seem to have a direct EGL binding

Oh interesting - so you're running the graphics session headless to power a steam app?

@FoxelFox ^ sorry missed this earlier.

@nkreeger Currently the points are moved by the GPU on client side. For larger workloads i thought i can prebuild the graph on server side and just sending the final state to the client.
The steam-graph is just a test app. Here is an older version that clusters all NPM Packages
https://64f.de/npm-graph/ but you will need a good GPU because they are 6 times more.

authors: AlexVestin FoxelFox nkreeger

repo: google/node-gles


text:
SWIG Exceptionon Windows when trying to create a RoutingModel

Version: 8.0.8283
Language: C#
I'm using the Routing Solver in a crossplatform project. While executed from macOS/Linux, everything works fine, on Windows I get an exception while trying to create a RoutingModel.
The type initializer for 'Google.OrTools.ConstraintSolver.operations_research_constraint_solverPINVOKE' threw an exception. :
   at Google.OrTools.ConstraintSolver.operations_research_constraint_solverPINVOKE.new_RoutingIndexManager__SWIG_1(Int32 jarg1, Int32 jarg2, Int32 length3, Int32[] jarg3, Int32 length4, Int32[] jarg4)
   at Google.OrTools.ConstraintSolver.RoutingIndexManager..ctor(Int32 num_nodes, Int32 num_vehicles, Int32[] starts, Int32[] ends)

All machines are using the current stable .netcore 3.1, the Windows machine runs Windows Server 2016 (1607).

Can you show us the source ?
Did you manage to run some examples ?
It seems it is the ctor of RoutingIndexManager than RoutingModel;

Yup, you're right, it's the RoutingIndexImanager.
As for the source code, I am not allowed to share much, but the line building the index manager looks like this:
Manager = new RoutingIndexManager(
                        Problem.NumberOfEndpoints,
                        Problem.NumberOfVehicles,
                        Problem.Vehicles.Select(v => (int)v.Start.Index).ToArray(),
                        Problem.Vehicles.Select(v => (int)v.Finish.Index).ToArray()
                    );

, where, according to the debugger in this specific case:

Problem.NumberOfEndpoints is an {int} with value {27}
Problem.NumberOfVehicles is an {int} with value {40}
Problem.Vehicles.Select(v => (int)v.Start.Index).ToArray() is {int[40} with values 25 or 26 only
Problem.Vehicles.Select(v => (int)v.Finish.Index).ToArray() is {int[40} with values 25 or 26 only

I'll try to run the examples and get back to you ASAP.

OK. So I've tried with the example cscvrptw.csproj. I got similar, but more detailed error on Windows. There is some kind of problem with loading google-ortools-native dll. It's there but probably some depedencies are missing. I'm building the project using dotnet publish -r win-x64 on macOS machine. I will try to track missing depedencies...
Unhandled Exception: System.TypeInitializationException: The type initializer for 'Google.OrTools.ConstraintSolver.operations_research_constraint_solverPINVOKE' threw an exception. ---> System.TypeInitializationException: The type initializer for 'SWIGExceptionHelper' threw an exception. ---> System.DllNotFoundException: Unable to load DLL 'google-ortools-native' or one of its dependencies: Nie można odnaleźć określonego modułu. (Exception from HRESULT: 0x8007007E)
   at Google.OrTools.ConstraintSolver.operations_research_constraint_solverPINVOKE.SWIGExceptionHelper.SWIGRegisterExceptionCallbacks_operations_research_constraint_solver(ExceptionDelegate applicationDelegate, ExceptionDelegate arithmeticDelegate, ExceptionDelegate divideByZeroDelegate, ExceptionDelegate indexOutOfRangeDelegate, ExceptionDelegate invalidCastDelegate, ExceptionDelegate invalidOperationDelegate, ExceptionDelegate ioDelegate, ExceptionDelegate nullReferenceDelegate, ExceptionDelegate outOfMemoryDelegate, ExceptionDelegate overflowDelegate, ExceptionDelegate systemExceptionDelegate)
   at Google.OrTools.ConstraintSolver.operations_research_constraint_solverPINVOKE.SWIGExceptionHelper..cctor()
   --- End of inner exception stack trace ---
   at Google.OrTools.ConstraintSolver.operations_research_constraint_solverPINVOKE.SWIGExceptionHelper..ctor()
   at Google.OrTools.ConstraintSolver.operations_research_constraint_solverPINVOKE..cctor()
   --- End of inner exception stack trace ---
   at Google.OrTools.ConstraintSolver.operations_research_constraint_solverPINVOKE.new_RoutingIndexManager__SWIG_1(Int32 jarg1, Int32 jarg2, Int32 length3, Int32[] jarg3, Int32 length4, Int32[] jarg4)
   at CapacitatedVehicleRoutingProblemWithTimeWindows.Solve(Int32 number_of_orders, Int32 number_of_vehicles) in /Users/msl/Projects/optidata/or-tools/examples/dotnet/cscvrptw.cs:line 243
   at CapacitatedVehicleRoutingProblemWithTimeWindows.Main(String[] args) in /Users/msl/Projects/optidata/or-tools/examples/dotnet/cscvrptw.cs:line 367

using dotnet publish -r win-x64 on macOS machine.

don't get it

dotnet publish is a neat way to build deployable C# packages with all the dependencies (in theory). It's able to produce builds for different platforms from the command line...  Apparently it somehow doesn't handle the OrTools well enough, which is weird because the Google.OrTools.dll gets loaded with no issues.
I'll try to build the thing in the Windows docker...

OK. I've managed to fix the issue. The problem was a missing DLL dependency for google-ortools-native.dll: VCRUNTIME140_1.dll. Apparently older installers of the Visual Studio Redistributable missed this file by mistake...
Thanks for your time and assistance!

Thanks for the feedback !

authors: Mizux mslazynski

repo: google/or-tools


text:
CMake Error: CMake can not determine linker language for target: ortools_init

What version of OR-Tools and what language are you using?
Version: 9.0
Language: C++
Problem description
cmake-3.19.6 fails:
-- Configuring done
CMake Error: CMake can not determine linker language for target: ortools_init
-- Generating done
CMake Generate step failed.  Build files cannot be regenerated correctly.
*** Error code 1

on FreeBSD 12.2

I have solved it with simple sed -i '11i \ \ LINKER_LANGUAGE Cxx' ortools/init/CMakeLists.txt.

@Mizux The problem is still present in 9.1 released 4 days ago.

@yurivict My workaround should still work, I can create a pull request fixing this issue.

Seems to work with FreeBSD 13 (vagrant box)
https://github.com/google/or-tools/runs/3788581120?check_suite_focus=true
I'll try to see if I can test locally on a FreeBSD 12 VM.
Otherwise @yurivict could you test with CMake 3.21.3 to see if it's an error fixed in CMake ?

The workaround works on FreeBSD. It should just be committed.

For the record: https://cmake.org/cmake/help/latest/prop_tgt/LINKER_LANGUAGE.html

authors: Mizux tpimh yurivict


text:
Java: MPSolverParameters LpAlgorithmValues

Version: 9.10.4067
Language: Java
The same issue as https://github.com/google/or-tools/issues/97
MPSolverParameters.java contain enums to change the LP algorithm of CLP, e.g. PRIMAL, DUAL, BARRIER. These enums seem to be missing in IntegerParam.

from the code:
// Expose the MPSolverParameters::LpAlgorithmValues enum.
%unignore operations_research::MPSolverParameters::LpAlgorithmValues;  // no test
%unignore operations_research::MPSolverParameters::DUAL;  // no test
%unignore operations_research::MPSolverParameters::PRIMAL;  // no test
%unignore operations_research::MPSolverParameters::BARRIER;  // no test

from the generated code:  (MPSolverParameters.java)
/**

LP algorithm to use.
/
public enum LpAlgorithmValues {
/*
*  Dual simplex.
/
DUAL(mainJNI.MPSolverParameters_DUAL_get()),
/*
*  Primal simplex.
/
PRIMAL(mainJNI.MPSolverParameters_PRIMAL_get()),
/*
*  Barrier algorithm.
*/
BARRIER(mainJNI.MPSolverParameters_BARRIER_get());

authors: lperron tzaretskaya


text:
Fix bug in jvm prebuild check

The prebuild check for JVM projects has missed the consideration of a method call across multiple lines, this cause some prebuild check failed to locate the target method call when it is split into multiple lines which result in false negative denial of possible valid fuzzing harnesses. This PR proposes a fix in the prebuild check to ensure multiple lines target method call could be recognised and fix the problem of false negative denial of possible valid fuzzing harnesses.

I'll test this once we get introspector.oss-fuzz.com's API up and running again

experiment in https://github.com/google/oss-fuzz-gen/pull/340

authors: DavidKorczynski arthurscchan

repo: google/oss-fuzz-gen


text:
Nagle's algorithm adds 40ms delay to trace_processor_shell queries on old Linux kernels

Using the local trace_processor_shell binary on an old Linux distribution like CentOS 7 results in very slow loading since many queries are performed in serial and each takes ~40ms rather than <1ms. This is the classic 40ms bug which affects older Linux kernels.
I've confirmed locally that setting the TCP_NODELAY socket option fixes this, although I did it in a hacky way for testing rather than putting it properly in the base socket abstraction.
I'm not sure which kernel version fixed the issue and if there's any Linux distributions supported by Perfetto that are affected by this. In order to build Perfetto on CentOS 7 I had to do some tinkering with the hermetic builds to create/find versions which didn't used GLIBC 2.18 which is too new for CentOS 7.

Thanks a lot fo the report.
Just to confirm does it go away just by adding TCP_NODELAY to the listening socket in trace_processor_shell?

@trishume  can you try  https://android-review.googlesource.com/c/platform/external/perfetto/+/1492639 and confirm it fixes for you?

Thanks! I haven't had a chance to test out your exact commit yet but that looks very similar to the working code I used so I suspect it does. I used SOL_TCP but a cursory internet search suggests IPPROTO_TCP does the same thing and is maybe the more correct one.

authors: primiano trishume

repo: google/perfetto


text:
Display dma_fence events in a single row

The "dma_fence" events currently show-up 1 per row (format "%s-%s%llu-%lld", driver_name, timeline_name, context, seqno).
I'm looking at a 25s trace with over 3000 rows under "Misc Global Tracks" named like driver-timelinex-1000,  driver-timelinex-1001,  driver-timelinex-1002,  driver-timelinex-1003, etc. Each row containing only 1 "fence" slice.
It would be nice if all the seqno of the same "driver_name,timeline_name,context" could be presented in the same row (with the seqno in the slice name).
Is this possible to do within the viewer, or does it require the Linux driver to present its events differently?

Yes it's possible to make the change within trace processor: you just need to change the code at https://cs.android.com/android/platform/superproject/main/+/main:external/perfetto/src/trace_processor/importers/ftrace/drm_tracker.cc;bpv=1
Patches to fix this welcome (contribution guide is available at https://perfetto.dev/docs/contributing/getting-started) but it's likely not something we will get to ourselves.

Thanks for the code link. I think I misunderstood the track name format in the issue description. According to GetFenceTimelineByContext, what I assumed to be seqno (number at the end of the track name) were actually contexts. It's probably something specific to the driver I'm investigating to increment contexts for each fence. I'll study this a bit more (might take a while).

Closing out as this might be WAI on the Perfetto side. Please reopen if you find more out here.

It's probably something specific to the driver I'm investigating to increment contexts for each fence.

Confirmed the driver was using a unique context per fence (seqno=1) intentionally to prevent the automatic use of fence_is_later() (incorrect for this driver). I'm thankful the ui is opensource so I could use a custom workaround.

I'm thankful the ui is opensource so I could use a custom workaround.

Seems rather overkill to maintain a fork just for this, it would probably be easy to visualize this using debug tracks (or if you wanted more control write + upstream a UI plugin to visualize this how you want). But whatever works :)

I agree it's overkill, not to mention inconvenient when sharing traces.
It's not just about visualizing the fences though. I also want to remove the thousands of single-slice tracks generated by those fences under "Misc Global Tracks". I tried to just fixup the context and seqno values with the trace processor, but it wouldn't let me modify the "internal_args" table. I was able to do it in sqlite, but I'm not sure if I how to bring this back into a trace format. (Pardon my ugly SQL. Could be prettier with EXTRACT_ARGS but it doesn't exist in mysql)
-- Copy value from context to seqno for mybadfence and myotherbadfence
UPDATE internal_args SET int_value = c.seqno
FROM (
  SELECT arg_set_id, context.int_value AS seqno
  FROM ftrace_event
    JOIN args AS context USING(arg_set_id)
    JOIN args AS timeline USING(arg_set_id)
  WHERE ftrace_event.name LIKE 'dma_fence_%'
    AND context.key = 'context'
    AND timeline.key = 'timeline'
    AND timeline.string_value IN ('mybadfence','myotherbadfence')
  ) AS c
WHERE key = 'seqno' AND internal_args.arg_set_id = c.arg_set_id;
-- Hardcode a unique context value for mybadfence
UPDATE internal_args SET int_value = 1000
FROM (
  SELECT arg_set_id
  FROM ftrace_event JOIN args AS timeline USING(arg_set_id)
  WHERE ftrace_event.name LIKE 'dma_fence_%'
    AND timeline.key = 'timeline'
    AND timeline.string_value = 'mybadfence'
  ) AS c
WHERE key = 'context' AND internal_args.arg_set_id = c.arg_set_id;
-- Do the same for myotherbadfence ...

I also want to remove the thousands of single-slice tracks generated by those fences under "Misc Global Tracks".

You'd probably be using the upcoming work we are doing to have "custom workspaces" so that you can choose to show/hide whatever tracks you want. You can see the beginings of that feature emerging with the recently landed track filtering support on autopush UI. @stevegolton will certainly be interested in your usecase here.

I tried to just fixup the context and seqno values with the trace processor, but it wouldn't let me modify the "internal_args" table.

That's not really how trace processor works: you cannot modify the tables generated at processing time to change how the UI works as everything is read-only. Instead, the way to do it is create new tables with new tracks. As I say, the right thing here is to just hide the tracks at the UI level even while preserving the tracks in TP.

authors: LalitMaganti gramound


text:
Prettier spec testing

New output:
$ cargo run -- -s spec-0.27.txt
    Finished debug [unoptimized + debuginfo] target(s) in 0.0 secs
     Running `target/debug/pulldown-cmark -s spec-0.27.txt`
[  1]XXX.X XXX.. [ 11]X.... ..X.. [ 21]..... ..... [ 31]..... ...X.
[ 41]..... ....X [ 51]XXX.. ..XX. [ 61]...X. ..... [ 71]X.... X..XX
[ 81]X...X .X... [ 91]....X ..... [101].X..X .X... [111]..... XXXXX
[121].XXXX XXXXX [131]XXX.X XXX.X [141]XXXXX XXXXX [151]X.XXX X..X.
[161]....X ..... [171]..X.. ..... [181]..... .X... [191].X... .X...
[201]..... ..... [211]..... ..X.. [221]..X.X .X... [231]XXXXX ...XX
[241]X.... X...X [251]..... ..... [261]....X .XX.X [271]..... .....
[281]..... ..X.. [291]..X.. X.... [301]..... X.... [311]X.... .....
[321]..... ..... [331]..... ..... [341]...X. ..... [351]..... .....
[361]..... ..... [371]..... ..... [381]..... ..X.. [391]X.... .....
[401]..X.. ..... [411]..... ..... [421]..... ..... [431]..... .....
[441]XX.X. ..... [451]..... ..... [461]X...X ....X [471]..... .....
[481]..X.. ..... [491]..... .X... [501]..... ....X [511]X.... .X...
[521]...X. ..... [531]..... X.... [541]..... ..... [551]....X .....
[561]..... XX.X. [571]..... ..... [581]....X ..... [591]..... .....
[601]..... ..... [611]...X. ..... [621].
504/621 tests passed

FAIL 1:

---input---
→foo→baz→→bim

---wanted---

foo→baz→→bim

---got---

foo baz     bim

Original output:
$ cargo run -- -s spec-0.27.txt
    Finished debug [unoptimized + debuginfo] target(s) in 0.0 secs
     Running `target/debug/pulldown-cmark -s spec-0.27.txt`
[  1]FAIL 1:

---input---
→foo→baz→→bim

---wanted---

foo→baz→→bim

---got---

foo baz     bim

XX. XXXX. [ 10].X... ...X. [ 20]..... ..... [ 30]..... ....X
[ 40]..... ..... [ 50]XXXX. ...XX [ 60]....X ..... [ 70].X... .X..X
[ 80]XX... X.X.. [ 90]..... X.... [100]..X.. X.X.. [110]..... .XXXX
[120]X.XXX XXXXX [130]XXXX. XXXX. [140]XXXXX XXXXX [150]XX.XX XX..X
[160]..... X.... [170]...X. ..... [180]..... ..X.. [190]..X.. ..X..
[200]..... ..... [210]..... ...X. [220]...X. X.X.. [230].XXXX X...X
[240]XX... .X... [250]X.... ..... [260]..... X.XX. [270]X.... .....
[280]..... ...X. [290]...X. .X... [300]..... .X... [310].X... .....
[320]..... ..... [330]..... ..... [340]....X ..... [350]..... .....
[360]..... ..... [370]..... ..... [380]..... ...X. [390].X... .....
[400]...X. ..... [410]..... ..... [420]..... ..... [430]..... .....
[440].XX.X ..... [450]..... ..... [460].X... X.... [470]X.... .....
[480]...X. ..... [490]..... ..X.. [500]..... ..... [510]XX... ..X..
[520]....X ..... [530]..... .X... [540]..... ..... [550]..... X....
[560]..... .XX.X [570]..... ..... [580]..... X.... [590]..... .....
[600]..... ..... [610]....X ..... [620]..
504/621 tests passed

Sorry, I merged the other PR (about improving trivially failing tests) first, so there's a merge conflict. Hopefully it should be pretty simple. I'm all in favor of nicer output, thanks!

Done!

Thanks!

authors: critiqjo raphlinus

repo: google/pulldown-cmark

license: MIT


text:
hostname-mismatch error

Issue description
I use the library as part of a contact us form, and I get the error: hostname-mismatch. I know for sure that I only use the keys on this website.
Environment
OS name and version: Windows 10 Pro
PHP version: PHP 8.0.3
Web server name and version: ubuntu 20.04
google/ReCaptcha version: v.3
Browser name and version: Chrome 89.0.4389.90 (Official Build) (64-bit)
How can I fix this?

The same here. we use $_SERVER["REMOTE_ADDR"] in our code and after debugging I found that its value is IP address.
after change $_SERVER["SERVER_NAME"]  it helped

I just had this problem and the solution was to only send the hostname, not including the protocol or anything else. For example if your site is http://example.com then don't send that, send just example.com

authors: Jimmi08 jessicana svivian

repo: google/recaptcha


text:
"illegal operands" and "already defined symbol" in generated .S test

Hi everyone,
The version I'm working with: commit 5a79a54f8330c904eae98e51be55bbb55ac30c82
Here is my riscv_core_setting.sv:

// Implemented previlieged CSR list
`ifdef DSIM
privileged_reg_t implemented_csr[] = {
`else
const privileged_reg_t implemented_csr[] = {
`endif
// Machine mode mode CSR
MSTATUS,    // Machine status
MISA,       // ISA and extensions
MTVEC,      // Machine trap-handler base address
MEPC,       // Machine exception program counter
MCAUSE     // Machine trap cause
};

And here is base_testlist.yaml with my custom test:

test: sample_jump
description: >
Arithmetic instruction test, no load/store/branch instructions
gen_opts: >
+num_of_tests=5
+num_of_sub_program=5
+instr_cnt=1000
+directed_instr_0=riscv_jump_instr,8
+no_csr_instr=1
iterations: 10
gen_test: riscv_instr_base_test
rtl_test: core_base_test

The errors I`m getting:

out_2021-05-20/asm_test/sample_jump_0.S: Assembler messages:
out_2021-05-20/asm_test/sample_jump_0.S:307: Error: illegal operands `la t1,'
out_2021-05-20/asm_test/sample_jump_0.S:317: Error: symbol `_j0' is already defined
out_2021-05-20/asm_test/sample_jump_0.S:579: Error: illegal operands `la s5,'
out_2021-05-20/asm_test/sample_jump_0.S:586: Error: symbol `_j0' is already defined
out_2021-05-20/asm_test/sample_jump_0.S:845: Error: illegal operands `la a3,'
out_2021-05-20/asm_test/sample_jump_0.S:856: Error: symbol `_j0' is already defined
out_2021-05-20/asm_test/sample_jump_0.S:1127: Error: illegal operands `la t3,'
out_2021-05-20/asm_test/sample_jump_0.S:1136: Error: symbol `_j0' is already defined

Could you please point out what am I doing wrong here?

I am also facing illegal operand error in one of the testcase.

Hi,
I have solved "already defined symbol" issue and currently working on "illegal operands".
Thank you

authors: UrvishkumarPatel anwesh-27 mykola-mmm

repo: google/riscv-dv


text:
Seeking to certain points of a video leads to buffering happening outside of the desired range

I'm testing shaka player with a fairly standard MPD. The total duration of my video is around 540 s.
When I try to use seeking I'm finding a very weird issue where if I execute the following command in the chrome console:
document.getElementById('video').currentTime = 100
The video gets stuck in a buffering state. When I check the buffered property of the video I can see that for some reason the buffer starts a few seconds after the 100s mark.
> document.getElementById('video').currentTime = 100.0
< 100
> document.getElementById('video').buffered.start(0)
< 109.412426
> document.getElementById('video').buffered.end(0)
< 127.04

Oddly enough if I try to seek using the same method to the 200s mark it works fine and the buffers include the time I'm trying to play.
> document.getElementById('video').currentTime = 200.0
< 200
> document.getElementById('video').buffered.start(0)
< 193.329342
> document.getElementById('video').buffered.end(0)
< 221.08

It seems like in some cases the player is fetching the chunk just ahead of the one the one that I need. Is there some configuration I could have missed? What are good ways to try to debug this issue?

There are a number of ways a manifest could be inaccurate, and we do our best to compensate.  But some content is just broken (badly-encoded, missing or wrong information in the manifest, etc.)  It could also be a true bug in the client.  I don't think I've seen exactly this behavior before, so it's hard to guess.
Could you also check these values after seeking to 100?
app.player_.videoSource_.streamsByType_.video.sbm_.sourceBuffer_.buffered.start(0);
app.player_.videoSource_.streamsByType_.video.sbm_.sourceBuffer_.buffered.end(0);
app.player_.videoSource_.streamsByType_.audio.sbm_.sourceBuffer_.buffered.start(0);
app.player_.videoSource_.streamsByType_.audio.sbm_.sourceBuffer_.buffered.end(0);

The video element's buffered range is the intersection of the individual SourceBuffer ranges, so it would be informative to know what the SourceBuffers have to say.  Often-times, one stream or the other is actually the cause.
Also, is the stream publicly available?  If our team had access to the manifest and the content, that would really help.  If this is not something you can share publicly, please feel free to send me a private email.

Running the values of the audio and video buffer independently yield similar results
> app.player_.videoSource_.streamsByType_.video.sbm_.sourceBuffer_.buffered.start(0);
< 109.4
> app.player_.videoSource_.streamsByType_.audio.sbm_.sourceBuffer_.buffered.start(0);
< 109.412426
> app.player_.videoSource_.streamsByType_.video.sbm_.sourceBuffer_.buffered.end(0);
< 226.8
> app.player_.videoSource_.streamsByType_.audio.sbm_.sourceBuffer_.buffered.end(0);
< 540

I'll send you the link to the stream privately so you can check it out.

Thanks, @javess.  We'll take a look and try to reproduce.

Here's a simplified version of what I'm seeing in the manifest:
<SegmentTemplate timescale="25000" duration="175454" startNumber="0" media="segment_$Number$.m4s" initialization="init.mp4"/>
duration / timescale gives each segment a length of 7.018 seconds.  Segment 0 starts at t=0, segment 1 starts at t=7.018, etc.
Let's calculate the segment which contains t=100.  100 / 7.018 = 14.249, so we expect timestamp 100 to be in segment 14.  According to the manifest, segment 14 should start at t=98.254 and end at t=105.272.
If I examine the segments, this is what I find:

Segment Number
Calculated Timestamp
Actual Timestamp

0
0
0

1
7.018
10.920

2
14.036
22.920

3
21.054
32.920

...
...
...

14
98.254
109.400

So it seems that your manifest is inaccurate from the very beginning.  I don't think it's reasonable for the player to detect or handle this.
What encoder are you using?  How did you create this particular piece of content?

joey this was handed to me by a coworker but I believe it was done using bitmovin.
How did you examine the segments? I've been looking for a way to manually do that for a while

I used mp4info from Bento4.  Here's the skeleton of what I did:
# Download segments
wget http://foo.bar/path/to/init.mp4
wget http://foo.bar/path/to/segment_0.m4s

# Combine media segment with init segment so Bento4 can read the segment
cat init.mp4 segment_0.m4s > s0.mp4

# Show the first 10 frames and their timestamps:
mp4info --verbose --show-samples s0.mp4 | grep cts | head -n 10

Output looks like this:
[000001] size=   227 duration=  1000 (    40 ms) offset=      4134 dts=         0 (         0 ms) cts=      2000 (        80 ms) [0] [S]
[000002] size=    41 duration=  1000 (    40 ms) offset=      4361 dts=      1000 (        40 ms) cts=      6000 (       240 ms) [0]

[000003] size=    37 duration=  1000 (    40 ms) offset=      4402 dts=      2000 (        80 ms) cts=      4000 (       160 ms) [0]
[000004] size=    37 duration=  1000 (    40 ms) offset=      4439 dts=      3000 (       120 ms) cts=      3000 (       120 ms) [0]
[000005] size=    37 duration=  1000 (    40 ms) offset=      4476 dts=      4000 (       160 ms) cts=      5000 (       200 ms) [0]
[000006] size=    43 duration=  1000 (    40 ms) offset=      4513 dts=      5000 (       200 ms) cts=     10000 (       400 ms) [0]

[000007] size=    39 duration=  1000 (    40 ms) offset=      4556 dts=      6000 (       240 ms) cts=      8000 (       320 ms) [0]
[000008] size=    37 duration=  1000 (    40 ms) offset=      4595 dts=      7000 (       280 ms) cts=      7000 (       280 ms) [0]
[000009] size=    37 duration=  1000 (    40 ms) offset=      4632 dts=      8000 (       320 ms) cts=      9000 (       360 ms) [0]
[000010] size=    43 duration=  1000 (    40 ms) offset=      4669 dts=      9000 (       360 ms) cts=     14000 (       560 ms) [0]

Since this seems to be badly-encoded or badly-packaged content, I'm going to close this issue.  Please follow up with bitmovin for resolution and feel free to reference this conversation for the technical details.  Thanks for using Shaka!

authors: javess joeyparrish

repo: google/shaka-player


text:
TensorFlowEstimator.restore Error: tensorflow.python.pywrap_tensorflow.StatusNotOK

Restore is still not working for the text_classification.py example.  I am getting the following exception:
I tensorflow/core/common_runtime/local_device.cc:40] Local device intra op parallelism threads: 4
I tensorflow/core/common_runtime/direct_session.cc:58] Direct session inter op parallelism threads: 4
Traceback (most recent call last):
  File "/Users/harsimranb/PycharmProjects/TensorFlowTest/TextRNN.py", line 103, in <module>
    runner.run_classification("amigo what time you close?")
  File "/Users/harsimranb/PycharmProjects/TensorFlowTest/TextRNN.py", line 56, in run_classification
    classifier = skflow.TensorFlowEstimator.restore(self.trained_model_path)
  File "/Users/harsimranb/Library/Python/2.7/lib/python/site-packages/skflow/__init__.py", line 332, in restore
    estimator._restore(path)
  File "/Users/harsimranb/Library/Python/2.7/lib/python/site-packages/skflow/__init__.py", line 314, in _restore
    self._saver.restore(self._session, checkpoint_path)
  File "/Users/harsimranb/Library/Python/2.7/lib/python/site-packages/tensorflow/python/training/saver.py", line 891, in restore
    sess.run([self._restore_op_name], {self._filename_tensor_name: save_path})
  File "/Users/harsimranb/Library/Python/2.7/lib/python/site-packages/tensorflow/python/client/session.py", line 368, in run
    results = self._do_run(target_list, unique_fetch_targets, feed_dict_string)
  File "/Users/harsimranb/Library/Python/2.7/lib/python/site-packages/tensorflow/python/client/session.py", line 446, in _do_run
    six.reraise(e_type, e_value, e_traceback)
  File "/Users/harsimranb/Library/Python/2.7/lib/python/site-packages/tensorflow/python/client/session.py", line 428, in _do_run
    target_list)
tensorflow.python.pywrap_tensorflow.StatusNotOK: Internal: Unable to get element from the feed.

Related to #40

Hm, it works in the case of just text_classification.py - I created an example in text_classification_save_restore.py.
Are you doing anything custom in the model that is different?

I think it's the same issue as #43 - you were using relative path and TF doesn't work currently very well with that. I made a workaround by upping to absolute path when you call save/restore. Please try again and let me know if it doesn't work!

That was it, thanks!

authors: harsimranb ilblackdragon

repo: google/skflow


text:
Remove two unused error variants of tarpc::Error.

NoAddressFound - we return io::Error from fn connect and fn listen now, so this variant of tarpc::Error is no longer needed.
ReplyCanceled - I don't remember how this was previously used, but now any error type returned by an rpc impl will be encoded in the App variant.

This change is nice because now there are only three classes of errors we expose:

I/O
Serialization
Application-specific

LGTM, merging

(When checks complete)

authors: shaladdle tikue

repo: google/tarpc

license: mit


text:
Added --no-cache for cmd/build

Added --no-cache to force Docker to rebuild all layers from scratch. This prevents errors caused by outdated package references by always fetching the latest package versions.

Make this an optional argument when installing? Only to be called by cmd/install

authors: MariusBaldovin jboddey

repo: google/testrun


text:
Tests fail when path contains whitespaces

Try renaming your src folder to "s r c" and watch the errors swing by.

Stupid Makefile. make does not work with spaces in the path. Giving up.

repo: google/traceur-compiler


text:
Getting Error on running cargo build command in UBUNTU

Error is shown like this...
error: pub(restricted) syntax is experimental (see issue #32409)
--> /home/shubham/.cargo/registry/src/github.com-1ecc6299db9ec823/libflate-0.1.9/src/zlib.rs:202:9
|
202 |     pub(crate) fn read_from(mut reader: R) -> io::Result
|         ^^^^^
error: pub(restricted) syntax is experimental (see issue #32409)
--> /home/shubham/.cargo/registry/src/github.com-1ecc6299db9ec823/libflate-0.1.9/src/gzip.rs:98:5
|
98 | pub(crate) struct Trailer {
|     ^^^^^
error: pub(restricted) syntax is experimental (see issue #32409)
--> /home/shubham/.cargo/registry/src/github.com-1ecc6299db9ec823/libflate-0.1.9/src/gzip.rs:370:9
|
370 |     pub(crate) fn read_from(mut reader: R) -> io::Result
|         ^^^^^
error: pub(restricted) syntax is experimental (see issue #32409)
--> /home/shubham/.cargo/registry/src/github.com-1ecc6299db9ec823/libflate-0.1.9/src/deflate/mod.rs:29:5
|
29 | pub(crate) mod symbol;
|     ^^^^^
error: pub(restricted) syntax is experimental (see issue #32409)
--> /home/shubham/.cargo/registry/src/github.com-1ecc6299db9ec823/libflate-0.1.9/src/non_blocking/deflate/decode.rs:72:9
|
72 |     pub(crate) fn bit_reader_mut(&mut self) -> &mut TransactionalBitReader {
|         ^^^^^
error: struct field shorthands are unstable (see issue #37340)
--> /home/shubham/.cargo/registry/src/github.com-1ecc6299db9ec823/libflate-0.1.9/src/non_blocking/deflate/decode.rs:117:60
|
117 |                     DecoderState::ReadNonCompressedBlock { len }
|                                                            ^^^
error: struct field shorthands are unstable (see issue #37340)
--> /home/shubham/.cargo/registry/src/github.com-1ecc6299db9ec823/libflate-0.1.9/src/non_blocking/transaction.rs:15:34
|
15 |         TransactionalBitReader { inner, savepoint }
|                                  ^^^^^
error: struct field shorthands are unstable (see issue #37340)
--> /home/shubham/.cargo/registry/src/github.com-1ecc6299db9ec823/libflate-0.1.9/src/non_blocking/transaction.rs:15:41
|
15 |         TransactionalBitReader { inner, savepoint }
|                                         ^^^^^^^^^
error: struct field shorthands are unstable (see issue #37340)
--> /home/shubham/.cargo/registry/src/github.com-1ecc6299db9ec823/libflate-0.1.9/src/non_blocking/transaction.rs:68:13
|
68 |             inner,
|             ^^^^^
error: struct field shorthands are unstable (see issue #37340)
--> /home/shubham/.cargo/registry/src/github.com-1ecc6299db9ec823/libflate-0.1.9/src/bit.rs:79:13
|
79 |             inner,
|             ^^^^^
error: pub(restricted) syntax is experimental (see issue #32409)
--> /home/shubham/.cargo/registry/src/github.com-1ecc6299db9ec823/libflate-0.1.9/src/bit.rs:143:9
|
143 |     pub(crate) fn state(&self) -> BitReaderState {
|         ^^^^^
error: pub(restricted) syntax is experimental (see issue #32409)
--> /home/shubham/.cargo/registry/src/github.com-1ecc6299db9ec823/libflate-0.1.9/src/bit.rs:150:9
|
150 |     pub(crate) fn restore_state(&mut self, state: BitReaderState) {
|         ^^^^^
error: pub(restricted) syntax is experimental (see issue #32409)
--> /home/shubham/.cargo/registry/src/github.com-1ecc6299db9ec823/libflate-0.1.9/src/bit.rs:171:5
|
171 | pub(crate) struct BitReaderState {
|     ^^^^^
error: aborting due to 13 previous errors

Check your rust compiler's version, it may be outdated

repo: google/xi-editor


text:
IME Support

Trying to support MacIME.
Currently I handled IME translating range on frontend,
But I'm worried whether it should be managed by the backend..
And replacing IME markedRange is very rush job (replacing by delete and inserting..)

I'll take a closer look later, but I tried it and it seems to work. I also saw these 5 warnings, and I'm trying to keep compilation warning-free.
/Users/raph/Documents/xcode/xi-editor/XiEditor/EditView.swift:201:25: warning: variable 'markRangeStart' was never mutated; consider changing to 'let' constant
                    var markRangeStart = cix - markedRange().length
                    ~~~ ^
                    let
/Users/raph/Documents/xcode/xi-editor/XiEditor/EditView.swift:209:25: warning: variable 'selectedRangeStart' was never mutated; consider changing to 'let' constant
                    var selectedRangeStart = cix - markedRange().length + selectedRange().location
                    ~~~ ^
                    let
/Users/raph/Documents/xcode/xi-editor/XiEditor/EditView.swift:305:17: warning: variable 'i' was never used; consider replacing with '_' or removing it
        for var i in 0..<aRange.length {
                ^
                _
/Users/raph/Documents/xcode/xi-editor/XiEditor/EditView.swift:318:13: warning: variable 'effectiveRange' was never mutated; consider changing to 'let' constant
        var effectiveRange = self.replaceCharactersInRange(self.replacementMarkedRange(replacementRange), withText: aString)
        ~~~ ^
        let
/Users/raph/Documents/xcode/xi-editor/XiEditor/EditView.swift:331:21: warning: variable 'i' was never used; consider replacing with '_' or removing it
            for var i in 0..<_markedRange.length {
                    ^
                    _

Thanks very much for this contribution! Input method is high on my list of things I wanted to support, but I didn't get around to it yet because it's not simple.

@raphlinus Thank you for your review! I just make my code warning-free!

Thanks!


text:
Getting stack over flow error while creating adsServiceClient

We are getting stack overflow error when calling createGoogleAdsServiceClient in the GetCampaigns.java example. Have tried debugging but was not able to get the exact cause.
Stack-trace is as follows:
java.lang.StackOverflowError
at java.io.StringWriter.write(StringWriter.java:112)
at com.google.gson.stream.JsonWriter.string(JsonWriter.java:590)
at com.google.gson.stream.JsonWriter.writeDeferredName(JsonWriter.java:401)
at com.google.gson.stream.JsonWriter.value(JsonWriter.java:526)
at com.google.gson.internal.bind.TypeAdapters$11.write(TypeAdapters.java:312)
at com.google.gson.internal.bind.TypeAdapters$11.write(TypeAdapters.java:297)
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:69)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:127)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:245)
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:69)......

Hi,
Closing this issue since I haven't heard back on the open question, but please reopen and provide more details if you're still encountering this error.
Thanks

authors: jradcliff trrishabh

repo: googleads/google-ads-java


text:
BundleID and ProductName should be taken from the runtime Application class

With different bundle identifiers and localised product names, it's more than annoying that I have to set the BundleID, ProductName, and BundleVersion variables every time I compile for a different target. Instead of variables, both BundleID and ProductName currently have runtime variables that can and should be used instead:
http://docs.unity3d.com/ScriptReference/Application-bundleIdentifier.html
http://docs.unity3d.com/ScriptReference/Application-productName.html
There is currently no way to get the bundle version at runtime (which is stupid on Unity's behalf), but that should ideally also come from the PlayerSettings instead of having to be set manually on the GoogleAnalytics prefab.

Yes is annoing, we had to modify the GA C# class so it takes the codes from our config files, including name/version.

Yes is annoing, we had to slighty alter the GA C# class so it takes the params from our config files, at runtime.

This cannot be done blindly in the case of BundleID.  In standalone targets, Application.bundleIdentifier is not user defined, but rather identifies the unity build itself.  That's not suitable for Analytics API bundleID, which maps to the "App ID" in the Analytics service.  App ID should identify my app, not unity.

We've implemented it ourselves, it would be easy to make this a mobile specific patch using:
#if !UNITY_EDITOR && (UNITY_IOS || UNITY_ANDROID)

authors: AdriaandeJongh BTooLs adrianmavenhut belm0 raldred


text:
feat: introduce problem severity levels

Issues with API definitions might be of different criticality. Some issues are of informative character and some are very critical.
To differentiate we can introduce problem severity field. It can be used to, for example, decide whether a violation should be blocking (not allowed) or not (informative).

Ok so I noticed that we have a Category string field and it was added for a similar reason (see https://github.com/googleapis/api-linter/issues/82). What I don't understand is why there aren't any pre-defined categories. There is a reasoning stated in that issue is as follows:

it is up to users to define them in their configuration, so they can develop/use downstream tools to target their categories

So I am wondering if we should do one of the following:

Go with this PR to add Severity as a purpose-built field
Introduce some pre-defined Category values that emulate Severity publicly
Introduce some pre-defined Category values that emulate Severity internally (which our analyzers would key off of when reporting to critique)

WDYT? I can see the benefit of adding a Severity "enum", but I'm also worried about bloat considering it is slightly related to Category.
@GregFurmanek WDYT?

we would enable teams to decide how they want API owners to react to the problems in their (e.g. project) scope.

I don't think we want to give individual API teams (not PAs, but individual APIs within a PA) the ability to downgrade a linter warning. If they are exempt they can disable the rule in the proto with a comment or in their config. But the rule author should decide how serious a linter warning is IMO. Also, I'd be worried about config bloat/complexity. These configs should be dead simple to look at and interpret.
We should keep a severity style attribute on the lint.Problem.

I agree with Noah. Linter is an automated test tool of sorts. Tests are pretty dimple in their function and answer one question: does the code pass specific scenario. The concept of severity is more useful in error reporting. Not so much in testing.

I might not have been clear above, but, I don't disagree with adding a severity-style field to lint.Problem that we can use in Tricorder to indicate if the finding is Blocking or not. I just believe it should be a property of lint.Problem, and not in the lint.Config, because the author of the rule should decide if the finding is blocking or not.

authors: maxim-tschumak noahdietz

repo: googleapis/api-linter