Documentation Request Clarification (For custom tag and global config span tags)

We are reviewing your documentation on adding custom tags and global config span tags in order to surface additional details and while there is some simple code provided here, it isn't entirely clear where certain changes are to be made in the XML to generate these tags.
For some of our HTTP and DB calls we are looking to surface some additional tags. So while the spans are being generated correctly there is just some added context we would like to create.
and then we are also doing a custom flow into an IBM mainframe and for this we are trying to get the appropriate basic tagging to be provided for this so it will treat it as if it is a DB call. Namely to surface basic things like "span.kind" = client, and "db.name" = IBM so it will allow Splunk APM to create inferred services for these as a DB call.
for the custom tags, it seems like if you add this to the general OTEL config xml it will just put this tag on all flows/spans which isn't helpful when we just want one single tag added for a specific flow. And for the global config span tags, it looks like this would be more in line with getting a tag added to just one specific flow, however it's not clear where you set the "Remote_Request_configuration.otel.peer.service=my_remote_api" in your example.

Hello, just to add, it looks like one piece we were missing and not quite understanding was that with a multi-XML project you need to add at the top of each XML file the Namespace references and Schema links. Otherwise it will throw an error that

The prefix "opentelemetry" for element "opentelemetry:add-custom-tags" is not bound.

Once we resolved that issue by adding the schema information at the top, we injected the "add-custom-tags" into the code, and it threw an error on compiling:

[Application] There was '1' error while parsing the given file 'flows/get-customer-details.xml'. - Exit code: 1, Restart count: 2

So it didn't like where we added the XML into the code for some reason. We are trying to troubleshoot that further.
We are still unclear where to try and add the Global tags.

Thank you @lorenzoash @jefair2 for reaching out here. Let me see if I can clarify it here -
As in the Custom Tags documentation,

In addition to all the trace attributes captured by the module, it is possible to add custom tags to the current trace using an operation opentelemetry:add-custom-tags.

opentelemetry:add-custom-tags is a new operation on the connector. You would use that as any other operation in mule within flow/sub-flow.

it seems like if you add this to the general OTEL config xml it will just put this tag on all flows/spans

Any tags added using this operation will get added to the current trace's parent span representing that request processing, and NOT on any other flow spans or request spans. If that flow is invoked 4 times with 4 different orderId, the 4 traces will have their own orderNumber tag with a value from attributes. So, custom tags are added at the request level.
NOTE: With this, you cannot add a custom tag using this operation to a specific connector operation or processor.
Global Config Span tags

... is a way to add additional tags to the spans of components that use global configuration elements.

For how to do it part -

To add a tag peer.service=my_remote_api to http:request 's span, you can set following system property on mule runtime -
Remote_Request_configuration.otel.peer.service=my_remote_api

There are multiple ways to set system properties for mule runtime like adding in mule wrapper conf, setting on runtime manager etc. See Mule Docs.
@jefair2

it looks like one piece we were missing and not quite understanding was that with a multi-XML project you need to add at the top of each XML file the Namespace references and Schema links.

I don't know how your mule code is structured. In general, for any mule XML to use any operation or source or component, corresponding XML namespace must be declared at the top. It is a normal Mule behavior.  Do you mean you had to add it to mule XML configurations that do not have any usage of opentelemetry:add-custom-tags operation?

So it didn't like where we added the XML into the code for some reason.

Could you add full error details here?

We are still trying to work through getting the tags to work, but the issue I was commenting on appears to be associated with not running the latest version of 1.2, as we didn't realize this feature was added in that version. Once we cleared through that it seemed to resolve the issues we were facing.
We focused in on the global config span tags, since that seems more conducive to being able to set the values directly based on the description.
So we have this HTTP Request configuration we were going to use just to test this. You can see if has a "name" defined

So we set the Global property using the same formatting suggested in the docs as follows:

And then redeployed and ran some tests:

On this you can see the "inferred span" is still going with the default name of the HTTP URL instead of the override which should take preference for "peer.service" if this was getting applied.

And you can see there is no "peer.service" tag showing up in the results. Note that you can tell this is for sure the same config stanza since the tag that's automatically put in for "mule.app.processor.confRef" points to the same "TSOCreds_HTTP_Request_configuration" we were setting.
So what are we missing here on trying to get this configured?

We are still trying to work through getting the tags to work, but the issue I was commenting on appears to be associated with not running the latest version of 1.2, as we didn't realize this feature was added in that version. Once we cleared through that it seemed to resolve the issues we were facing.
We focused in on the global config span tags, since that seems more conducive to being able to set the values directly based on the description.
So we have this HTTP Request configuration we were going to use just to test this. You can see if has a "name" defined

So we set the Global property using the same formatting suggested in the docs as follows:

And then redeployed and ran some tests:

On this you can see the "inferred span" is still going with the default name of the HTTP URL instead of the override which should take preference for "peer.service" if this was getting applied.

And you can see there is no "peer.service" tag showing up in the results. Note that you can tell this is for sure the same config stanza since the tag that's automatically put in for "mule.app.processor.confRef" points to the same "TSOCreds_HTTP_Request_configuration" we were setting.
So what are we missing here on trying to get this configured?

@jefair2 your HTTP Config seems correct. However, I think there may be some confusion with what peer.service can do on Splunk side.

On this you can see the "inferred span" is still going with the default name of the HTTP URL instead of the override which should take preference for "peer.service" if this was getting applied.

As per Splunk documentation peer.service is used to identify name of the inferred service and not the name of the span. HTTP URL is name of the span and thus is independent of the peer.service.
So, by setting the peer.service, you will get a change in the value you abstracted in your screenshot.
Global Config spans are supported via System Properties. Setting global-property in mule configuration isn't getting into system properties and hence the attribute is not set. You may want to check System Properties for On-Prem or Runtime Manager for setting attribute values.
Also, name of the span is different than span attributes. Name is immutable and cannot be changed once a span is created. However attributes (e.g http.host, http.method etc) is what can possibly be changed using global config span.
May I ask what are you intending to achieve with those attributes?

Sure, so ultimately the IBM connection we are trying to effectively build that to represent as an RPC or HTTP type connection. Since this is not one of your defined auto-instrumented flows (e.g. HTTP Requests), it is just showing up as a span, but without any of the relevant values captured. So we are ultimately trying to add and/or override certain values captured in that flow.
To test getting it to work at all, we were simply trying to manipulate a different and working HTTP Request as per the example just to try and figure out how to get the value to override before trying to apply that functionality outside of your documented route and see about manipulating the IBM requests.
As for the purpose of peer.service I am aware of what it is intended for, If it was working correctly on the example "retriveTSOCredentials" call it would override the inferred service from the HTTP URL to the value we tried to specify (In this case "test").
Ultimately we need a way to set properties for any flow according to the OpenTelemetry Tracing Specifications:
https://github.com/open-telemetry/opentelemetry-specification/tree/main/specification/trace/semantic_conventions
As these have very specific meanings, the properties need to be put into the spans as they are listed in the specification, as that is what any destination product (in this case Splunk APM, but I would imagine the other products expect similar behavior) is expecting to see. Hopefully this helps?

the IBM connection we are trying to effectively build that to represent as an RPC or HTTP type connection

"IBM connection" -> Is this a different mule connector? OR just over HTTP APIs?

Since this is not one of your defined auto-instrumented flows

If it is a connector, then maybe supporting it with its own processor is the correct way of collecting attribute data for it.
Here are screenshots of our demo application using global config spans for Splunk -
Properties configuration when running from Anypoint Studio -

Global Config spans are supported via System Properties. Setting global-property in mule configuration isn't getting into system properties and hence the attribute is not set (see #85 ). You may want to check System Properties for On-Prem or Runtime Manager for setting attribute values.

Trace with inferred spans:

**NOTE: Even though peer.service was sent and used, Splunk is still **
Service maps make it more clear for when peer.service is used. For example, the representation of map for above trace -

Regarding semantic conventions, all the span data (name, kind, and attributes/tags) collected by this module are as per the specifications in those conventions and are put into the span representing that component. Any OpenTelemetry-compliant APM backend should be able to accept and process those.
For adding/modifying module collected data, only attributes are possible to be overridden by users using global config (starting v1.2.0) but they are limited to be at a particular configuration level. If two operations are sharing the same global config then both spans will get those attributes. So, it is best to be used it that way.
If you haven't tried setting global config tags with System properties, please try it that way and you should see the service name changing on the Splunk side.

We managed to finally get it to work correctly by setting it as a VM argument. This is definitely clunky but it's better than nothing for when you need to build a custom connector that isn't something you support yet.
That said, yes the IBM Connector is a mulesoft connector that can be added. It isn't super commonly used by everyone, but is something we are using here. It's for connections into IBM Mainframe.
We also have some other things that aren't quite working as intended, but we are going to do some additional digging and try and circle back in a few days, in the meantime, what I would suggest is to expand your documentation on the Global tagging to include some of the details provided here in this thread as it made the difference in being able to get it to work correctly.


Html attributes within collections

Hey
thanks for putting together :)
I'm currently unable to get anything back whilst using @value within a collection:
				seasons: 'select, [option]',  //'2007-08\r\n2008-09\r\n2009-10\r\n2010-11'
				seasonsID: 'select option@value', //2007-08
				seasonsID: 'select [option@value]', //null-empty

Just wondering if I'm doing something obviously wrong here.

Possible work around, something lile
x(url, 'select', [{
  options: x('option', [{
    text: '@text',
    value: '@value'
  }])
}]


add caching for getServicePriceByFlavor service

fixes #1699
Called service getServicePriceByFlavor firstly without cache:

Called service getServicePriceByFlavor again with cache:

Called service getPricesByService firstly without cache:

Called service getPricesByService again with cache:

LGTM


Clean up or remove outdated monitoring tools

There's a number of outdated pieces of monitoring code left across the repo.
Questions:

Do we need it?
Will we still be using our old monitoring strategy into the future or use a different one?

I have thoughts on how an stats and/or internal metrics exporter module might look like.
WIll discuss with @ttmc and decide on an action plan.

@krish7919 We certainly want monitoring tools, but I think @sohkai created this issue to clean up the old and broken (but how broken?) cluster monitoring system that Ryan wrote and described in:
https://docs.bigchaindb.com/projects/server/en/v0.8.0/clusters-feds/monitoring.html
I honestly don't know how broken that system is. Maybe it's just better to remove it for now and to create one or more new issues about monitoring systems (which are on the roadmap).

@ttmc Yes, sure. The cleanup can be one phase, and adding support for new performance/benchmarking metrics can be the second phase.

Cleanup monitoring related:

[ ] code
[ ] configuration (file and envs)
[ ] documentation
[ ] docker files
[ ] dependencies (setup.py)


process.env.DEBUG

I don't want to receive codegen logs, but when I set the value DEBUG to undefined it affects the whole project

Thanks @Qeneke !


linter-jshint for attempts to read pug files as full JavaScript, causing extremely annoying linting errors

This is a problem that I did not have with language-jade before switching over.
If there is a unbuffered JavaScript inside of the pug file and it is edited, it seems to trigger linter-jshint to run the entire pug file. The only way to get the errors to go away is to reload the file. Editing code outside of the script section will not trigger this problem. Note: I am not talking about JS inside of a script block, but something like this:
- var someVar = "sds"
-
   var someOtherVar = "asdsa"

As specified in https://pugjs.org/language/code.html
Please fix this, it is really annoying. I would use language-jade but from what I understand there is no way to set it as a default loader in atom for the .pug file extension.

There is an issue for linter-jshint that seems to be related, but I believe the underlying problem is with language-pug. https://github.com/AtomLinter/linter-jshint/issues/359

Also experiencing this issue


Flickering with 1/8 Scan Panel

Hi there.  I'm building a "PixelTimes" clock with a 1/8 scan panel.  I had to modify the initialization to display.begin(8); but it works mostly great, but I do get some pretty substantial flickering.

I tried an ESP8266 at both 80 mhz and 160 mhz.  (It was slightly better at 160mhz)
I also tried an ESP32 (which took some minor work to get the PixelTimes project to compile) I believe the ESP32 runs at 240mhz.  The flicker was about the same as the 8266 @ 160 mhz. I have included a video below of the flickering (which you can still clearly make out even with the poor frame rate and color palette of an animated gif)

I don't suppose you have any suggestions on what might be causing the issue?
Thanks for PxMatrix and your PixelTimes projects. I've enjoyed building one so far.

Just as-is.  I haven't tried uncommenting #define SPIFFS_ENABLE yet or even getting an openweathermap API key.
Side note, I think power supply is sufficient.  I'm running it off a bench power supply and the voltage is a steady 5v.  When running the animation above draws the most current (of the 3 built in animations) at about 0.9A (on the ESP32)

Ok good (SPIFFS will result in flicker for sure).
As a test - could you try enabling fast update: set display.setFastUpdate(true); after  begin.
Also use display.display(0) in the ticker/ISR function

Thanks for the suggestions.

On an ESP8266 display.setFastUpdate(true) almost fixes the problem at 160mhz.  Just a slight general flicker.  display.display(0)fixes the flicker, but seems to reduce the brightness quite a bit.
On an ESP32 neither fix seemed to do anything and the flicker remained.  I'm not sure why.  I'm wondering if the updates even loaded to the module properly.  I might investigate further later.

I think I can find a happy medium with display.display that strikes a nice balance of brightness to flicker.  Maybe a brightness/40 or something like that.    I think I read 1/8 scan displays are less bright than 1/4 scan displays, so perhaps it is an artifact of the hardware.
Thanks for your help.  Do you have any other thoughts/suggestions?  Otherwise I think we can close this issue. 👍

You could try reducing the ticker period to
display_ticker.attach(0.002, display_updater);
That can help since it gives the CPU more idle time.

Thanks.  Fast update with a 0.002 seems to work nicely. Thanks!
I’m still not sure why the ESP32 still flickers, even with these tweaks.  I’d think that it would be better given the faster clock speed.  I might play with it eventually but for now I’ll continue my build with an ESP8266.
Thanks again for the suggestions.

No worries ... have fun with pixeltimes :)

Side note for future readers researching ESP32s for PixelTimes.
I tried a few of the things in this thread.  Specifically:

adding #define CONFIG_DISABLE_HAL_LOCKS 1 to esp32-hal.h
Increasing SPI.setFrequency(...) to 40mhz

The first didn't work (flicker remained).  The second seemed to be too fast for the LED panel, and caused odd colors bit the graphics were somewhat recognizable... and the flicker seemed to remain.
"Slow SPI" seems to be a known thing on the ESP32 but the usual fixes didn't seem to work for me.  Given the ESP32's dual cores, probably would make sense for a full rewrite fork using an RTOS to take advantage of tasks on both cores.  (Maybe something I'll tackle someday, but probably not)
Again, for now, will just use the tweaks recommended by @2dom on an ESP8266 for my PixelTimes.
Thanks again.


main window suddenly doesn't come up

Hi,
app version is 1.5.5, Windows 7 x64 SP1, NET FW 4.7.03062
App was running fine for some time, now it starts, but its window doesn't come up. Process is visible in task manager with some 30-35MB RAM & 0% CPU (at start it shows some CPU activity and goes to idle 0%), no issues etc are visible under event viewer. Windows is updating automatically, so it might have to do something with it. I've reinstalled the app, tried version 1.5.4, tried repair of NET FW, but to no avail. NVIDIA Graphic driver is 8.1.940.0, no gaming/clocking apps. AV is Symantec End Point.
Further, I found a restore point of the app, which crashes instantly with a "P9: System.IO.FileNotFoundException" message in event viewer, "Faulting module path: C:\Windows\system32\KERNELBASE.dll" and a .NET Runtime Error message "Description: The process was terminated due to an unhandled exception. Exception Info: System.IO.FileNotFoundException". However this occurs only when I start the app from the restore point.
I've tried copying d3d9.dll & kernelbase.dll to TL folder, but didn't help.
Any suggestions what I could try next to fix this issue?

This looks like a graphics card driver issue since TL is a .NET WPF application and WPF is rendered on the graphics card. Though, I don't have any clue what would cause your problem. Since TL did not receive any UI related changes for over a year it must be something on your machine. But that's not something I can remote-debug, unfortunately.


Use style tag instead of inline styling for svelte

Use style tags for styling svelte components

If we are doing it for Svelte, we must do it for every other framework.
That's why we keep it simple.


Error: exit status 125

see print screen

sedge-v0.2.0-linux-amd64

Hello @egk10, thanks for opening an issue. What you are facing here is a known issue of ours in Linux :(
By any chance did you read this in our docs?
I would appreciate more information from your side:

Your Linux distribution (OS)
Do you have the compose plugin installed? Try running docker compose.

Ubuntu 22.04.1 lts
Docker compose v2.6.1
Em dom., 7 de ago. de 2022 14:41, Miguel Tenorio @.***>
escreveu:

Hello @egk10 https://github.com/egk10, thanks for opening an issue.
What you are facing here is a known issue of ours in Linux :(
By any chance did you read this
https://docs.sedge.nethermind.io/docs/troubleshooting#docker-compose-not-found-after-sedge-installs-it
in our docs?
I would appreciate more information from your side:

Your Linux distribution (OS)
Do you have the compose plugin installed? Try running docker compose.

—
Reply to this email directly, view it on GitHub
https://github.com/NethermindEth/sedge/issues/70#issuecomment-1207453815,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AQUW3GKYVVST237VEFHK4ODVX7YNLANCNFSM552VLZEQ
.
You are receiving this because you were mentioned.Message ID:
@.***>

I noticed the same error myself, only with already installed docker compose
Problem:
Error with Docker compose, if installed before manually in some cases there is an error where the sedge cli will recognize the installation of docker compose, but when running it will not detect docker compose plugin and exits
[ERRO] it seems docker compose plugin is not installed. please install it and try again. Error: exit status 125
I’ve seen this reported a few times now, from others and with different versions of docker compose. I’m not sure how docker compose is installed in those cases, but I have reproduced by installing from apt repository.

To Replicate:
Fresh install of Ubuntu 20.04LTS, install docker compose
sudo apt install docker compose
install sedge v0.5.0
Run sedge cli

to fix I had to uninstall docker compose and docker and start again with sedge installing those dependencies, and it worked.
possible solution:
delete any old previous versions
sudo apt-get remove docker-engine docker.io containerd runc
sudo apt-get remove docker-compose docker-compose-plugin

Is there reason to not do this by default, and just have sedge remove older versions and install docker & compose plugin.


Two More Quick Questions!  (RE: Creating Groups, & Classes)

Hi Again David, @dwbutler
Thanks again for your time.

To make custom groups, do we simply type: group = Group.new?  In other words, to create the math group, we'd just type math = Group.new?  Does that also create a class of the same name?

Could you kindly explain the following in a bit more depth?

class Organization < Group
  has_members :offices, :equipment
end

What is the class 'Organization'?  Is that a group name?  How was that created?  By the command organization = Group.new?  In which file is this?  organization.rb (the model)?
For an example with French, would it be: has_members :native_speakers, :learners, :tutors, :teachers?  Do you have a use case of how we'd use the various member designations?  I.e. what to do with :native_speakers, :learners, etc.?

Any clarification on how to create custom group names would (i.e. these issues) would be soooooo wonderfully helpful.
Thanks!
-Monroe Mann
Break Diving, Inc.
www.BreakDiving.org

Hi,
Any model can be made into a Groupify group by simply including the Groupify::Group concern. Making a Group model is common, but not necessary. The Organization model is just an example of using Single Table Inheritance.
For your language group example, you could create a LanguageGroup model, if you wish, and specify that it can have users as members. Then add these users with a particular role to indicate what they do within the group. Some example code might look like:
french_group = LanguageGroup.create!(name: "French")
french_group.add(monroe, as: :teacher)


Carthage is Building Scheme "CI" for tag  ios-v5.11.0

*** Building scheme "CI" in ios.xcworkspace
Build Failed
Task failed with exit code 65:
this is resulting into failure

Also here some more info on how to reproduce the problem would be great...

Closing due to inactivity.


Cannot find ILMerge executable

It is unable to find my ilmerge package.
Nuget packages can be stored under C:\Users%USERNAME%.nuget\packages
It might also be one level deeper under a version folder, like "packages\ilmerge\2.13.307"

Sorry, wrong project.

If both packages: "ILMerge-MSBuild-Task" and "ILMerge" are under the same "packages" folder, the build task should be able to resolve it, for example:

In above scenario it doesn't matter where "packages" is located, as long as your Visual Studio solution is aware of it and "ILMerge-MSBuild-Task" is running from there.
If you are still experiencing issues, please send your build log, it may help me narrow it down.

I'm also seeing this. Build output shows:
Task lib location: C:\Users\%USERNAME%\.nuget\packages\ilmerge.msbuild.task\1.0.3\tools
Package location: C:\Users\%USERNAME%\.nuget\pacakges\ilmerge.msbuild.task
No folder starting with 'ILMerge' were found under C:\Users\%USERNAME%\.nuget\packages\ilmerge.msbuild.task.
...

By looking at ExeLocationHelper.cs, I can see it's only going up two levels from the Task lib location on line 134.
Sorry, I don't have time to open a PR myself, but hopefully that gives someone else a head start.

Nuget changed its package layout since @emerbrito posted that screenshot - now instead of packages\assembly.version\tools\..., we have packages\assembly\version\tools\.... It's now necessary to go 3 levels up instead of 2, for that reason.

This issue still seems to be a problem. It works when the ILMerge nuget used is version 2.14.1203, but breaks with this error in more current versions for some reason

My apologies. My delay is due to email notifications issues that I hope I fixed for good this time.
Are you still experiencing this? I just tested it with the latest ILMerge package (3.0.21) and the latest extension version and it worked just fine.
If it is still an issue could you please provide me more details on how I can reproduce it so I can work on it ASAP? Please include versions of vs, .net framework and packages you are using.

well i got this issue for the latest Version of ILMerge  check the pic in number 1 , when u download it from NuGet the ILMerge.exe is in a wrong folder it inside packages\ILMerge.3.0.21\tools\net452
but it should be like Number 2
packages\ILMerge.3.0.21\tools
when i copied it and pasted inside the correct destination it worked

it's ok am glad that i can help

@emerbrito when i use vs2017 + ilmerge 3.0.21 + msbuild.ilmerge.task 1.0.5, it has following error
"system.io.filenotfoundexception: cannot find ilmerge executable."

i guess this might fix your issue
https://github.com/emerbrito/ILMerge-MSBuild-Task/issues/13#issuecomment-443531408


Prelinking breaks LTO on GCC

https://github.com/swaywm/wlroots/pull/2969 introduced prelinking, where we produce a single .o file for wlroots that we can post-process.
However, when LTO and prelinking are both enabled, linking to an application (examples are enough) will fail with symbol conflicts, suggesting something is broken. The objcopy symbol filtering step breaks things further, making pretty much all symbols undefined.

I have created the following repository with a minimal reproduction of our prelink issues: https://git.sr.ht/~kennylevinsen/prelink_test

related: https://github.com/InBetweenNames/gentooLTO/issues/49

/cc @emersion


Add reverse proxy option to config

Is your feature request related to a problem? Please describe.
Ability to reverse proxy a container to a specific address.
e.g.
domain.com/app1 --> Docker container 1 port 8080
domain.com/app2 --> Docker container 2 port 8081
Describe the solution you'd like
Basically you need to inject something like  this into proxy/data/conf.d/default.conf:
location /app2 {
                proxy_pass http://app2:8081
        }

so the nginx template would need to be updated with some new variables.

Please check nginx-proxy for more information related to nginx template and options.

@lklic you can also put a nginx behind this proxy and do your proxy forward option.

This was just a feature request to make it more simple when using your scripts. I know you can configure this manually.
There seemed to be a lot of interest in it since this issue has been opened up several times in the past.
Anyways, very handy set of scripts, nice work!


Content Issue - https://nhsconnect.github.io/FHIR-NOO-API/foundations_use_case_get_the_fhir_conformance_profile.html

Who is the service provider ?

I'll need to find out how NDOP is going to be branded. I've temp changed it to NHS Digital Spine for now, and will revisit this once the branding has been confirmed.


Blob is not a constructor

I'm using Blob in node.js (v8.10.0) for creating a dummy file for the unit test. Below is my code
const Blob = require('blob');
let dummyFileData = new Uint8Array( [ 137, 80, 78, 71, 130  ] );
let dummyFileBlob = new Blob([ dummyFileData ], { type: 'image/png' });

try this instead - https://npmjs.com/package/node-blob


How do dynamically connect to new hosts?

The use statement seems to hard code the host and the port. Is it possible to make it dynamic?

Client.start_link(:thrift_client_util.new('localhost', 1234, :some_service_thrift, []))


Add consortium member's mint limit and daily mint limit, minted token and daily minted token attributes

What would you like to be added:
Need to add the following attributes: mint limit and daily mint limit, minted token and daily minted token. https://github.com/DeFiCh/ain/blob/90c05a00d40381bf6da1b5db05a5e6301cd95a33/test/functional/feature_consortium.py#L392
Why is this needed:
We need to show the following on the Bridge UI:

To show the daily limit + daily minted
To show an error message if the daily/member limit has been reached

/triage accepted
/area apps


fatal error: cdi/storage.h: No such file or directory  #include "cdi/storage.h"

Compiling build/src/modules/drivers/common/cdi/CdiDisk.obj
In file included from src/modules/drivers/common/cdi/CdiDisk.cc:20:0:
src/modules/drivers/common/cdi/CdiDisk.h:35:25: fatal error: cdi/storage.h: No such file or directory
#include "cdi/storage.h"
^
compilation terminated.
scons: *** [build/src/modules/drivers/common/cdi/CdiDisk.obj] Error 1
scons: building terminated because of errors.

Thanks!


Project Title

WHEN I enter my project title
THEN this is displayed as the title of the README

Complete


Setup Prerequisite Apache Cordova VS2017 use sandbox checkbox no longer exists.

I am new to the project and running through the Project Prerequisites for setting up and first build and on the Configure Visual Studio External Web Tools -> (Step 5) Uncheck "Use a sandboxed version of NodeJs" this checkbox is no longer present in the current VS2017 release.

@CliffAgius  Are you following the prerequisite_install_guide.md? Specifically https://github.com/HTBox/allReady/blob/master/docs/prerequisite_install_guide/prerequisite_install_guide.md#visual-studio.
I'm currently updating documentation #2011.  And found it a bit confusing since there are multiple versions of very similar things.  Some which should have been deprecated because is no longer applies.
I've tested the Visual Studio installation instructions above on a clean VM.  Some of the screenshots are out of date but it works.

@CliffAgius Which version of VS2017 are you using? We should keep that step in the instructions but add a note that it only applies to VS2017 15.x or earlier.

@c0g1t8 The instruction worked I was just highlighting that the last step
Uncheck "Use a sandboxed version of NodeJs"
Was not an option in my version of VS2017.
@jonparker my version of VS2017 is 15.4.4 so the latest stable as of last week, so I agree the instructions should just state to check if the box exists and if so uncheck but on the later versions of VS the box may be missing and it's not an issue if it is.


Update step-10-test-suite-and-automated-testing-07c97a2.md

fixing the relative path

Hi @distareza , thanks for your contribution! We'll look into it and will get back to you.

Fixed from UI5 1.127


quantized models don't have .to

Description:
Remove breaking .to(device)
Issue:
ValueError: `.to` is not supported for `4-bit` or `8-bit` bitsandbytes models. Please use the model as it is, since the model has already been set to the correct devices and casted to the correct `dtype`.

@kyegomez

thanks join the swarms community
https://discord.gg/Tt2RmhaX


CLOUDSTACK-10129: Allow navigation from VRs to network, instances, owners etc.

The following navigation filtering is supported:

Instances connected to a network, Networks -> view instances
View account/owner and instances from a VR, Infra -> VR -> View account (if it's not project or system), view instances, view network(s) (Network -> list of VRs/tab already exists)
Show redundant state for VPC VRs in parenthesis at Infra -> VRs -> list of VPC VRs

Pinging for review @DaanHoogland @wido @PaulAngus @nvazquez @borisstoyanov @DagSonstebo @glennwagner @rafaelweingartner @GabrielBrascher @fmaximus @ustcweizhou @resmo @NuxRo and others
Screenshots:
Network to Instances:

VR listing

VR to instances, owner account and networks

creating an new experiment env with this as it was developed in an env used for other things
@blueorangutan package

@DaanHoogland a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.

Packaging result: ✔centos6 ✔centos7 ✔debian. JID-1193

just discussed with @rhtyd
holding off for now as he is adding some more informational links regarding VRs and networks

@DaanHoogland a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.

@DaanHoogland a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.

Packaging result: ✔centos6 ✖centos7 ✖debian. JID-1196

Packaging result: ✔centos6 ✔centos7 ✔debian. JID-1198

@blueorangutan package
Thanks @resmo @borisstoyanov, testing UI should be enough.

@rhtyd a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.

Packaging result: ✔centos6 ✔centos7 ✔debian. JID-1199

My JavaScript knowledge is really low. Can't help here :)

Thanks @wido, how do you feel about the overall look and feel, navigation/filtering aspects of this small UI feature.


Navbar Upadted

@arpitghura background and navbar size changed please check it

This is the issue that arises below 380px. Make it responsive so that I will appear side by side below 380px also.

@arpitghura changed the dimension of button after 380px

@arpitghura changed the dimension of button after 380px


Is this project dead?

Is this project dead?  If not, when is the last known working date of this Python API working with Google Voice?
Google has apparently recently changes their Voice interface: http://apple.stackexchange.com/a/189766/13179

I haven't tested it in a while, but I have a slightly different version of the pygooglevoice that worked on Nov 1st 2014. https://github.com/voltnor/SmokeSignals/tree/master/lib/googlevoice. I remember having to revert parts of pygooglevoice to older code to get it to work.

This version still works
https://code.google.com/r/kkleidal-pygooglevoiceupdate/

On 6/4/15, 1:33 PM, Tom Enos wrote:

This version still works
https://code.google.com/r/kkleidal-pygooglevoiceupdate/

Thanks, quite helpful. Does the above still work even after Google's
very-recent Voice API changes (
http://apple.stackexchange.com/a/189766/13179 )?

This was never really a "project", I just briefly resurrected the original (which had actually been dead for 2 years already) from googlecode a few years ago and stuck it up here so I could use it. I would definitely go for an alternative.

Seems to work, I can login, send and receive texts.  haven't tested much else

On 6/4/15, 1:50 PM, Tom Enos wrote:

[ https://code.google.com/r/kkleidal-pygooglevoiceupdate ] Seems to
work, I can login, send and receive texts. haven't tested much else

Perfect, that's all I'm looking to do in the near term. Thanks.
On 6/4/15, 1:49 PM, Nick Pettazzoni wrote:

This was never really a "project", I just briefly resurrected the
original (which had actually been dead for 2 years already) from
googlecode a few years ago and stuck it up here so I could use it. I
would definitely go for an alternative.

Understood, thanks. If I do attempt anything, I'll be trying Tom's
reference above.

I am getting a LoginError. Are we sure this still works?

The kkleidal version is working.  I just tested it. Wed, Jun 17 2015 23:05 PDT
You should uninstall any old versions and also delete any pyc files for those version.

It's looking like maybe I can't get around google's suspicious activity filter.

You’ll have to enable “less secure login”
https://support.google.com/accounts/answer/6010255

thanks tom-slick, I think thats the problem.


MartaAndreea/Calendar

Together with Andreea, I understood and edited the Calendar code in order for the window to close automatically when the app window is closed.

Why did you delete the Tools CMenu with the word count in the main.qml ??


readonly fields should be writable: false

Suggestion
When useDefineForClassFields is enabled readonly and static readonly fields should be emitted with writable: false.
🔍 Search Terms

readonly
fields
define

✅ Viability Checklist
My suggestion meets these guidelines:

[ ] This wouldn't be a breaking change in existing TypeScript/JavaScript code
[x] This wouldn't change the runtime behavior of existing JavaScript code
[x] This could be implemented without emitting different JS based on the types of the expressions
[x] This isn't a runtime feature (e.g. library functionality, non-ECMAScript syntax with JavaScript output, new syntax sugar for JS, etc.)
[x] This feature would agree with the rest of TypeScript's Design Goals.

⭐ Suggestion
Emit writable: false when a field is readonly and useDefineForClassFields is enabled
📃 Motivating Example
readonly fields now are runtime readonly too.

You checked  “This could be implemented without emitting different JS based on the types of the expressions”
but isn’t this specifically asking for different JS based on information from the static type system?

Maybe I misunderstood what that meant, but to me a field declaration is not an expression. It is a different kind of parser entry.

Well, I expect this will be declined as it does not allow type erasure.

How is it not allowing type erasure? There is already a well defined JS way of doing just this. I was slightly surprised that turning on useDefineForClassFields didn't do this anyway.

Also be aware that readonly properties are implicitly compatible with the mutable counterpart. Your class can implement interfaces where the property is not marked readonly.

Hopefully this is possible at runtime with the new TC39 decorators proposal, and there would be a way for TypeScript to recognize the property descriptor modifications made by the decorator so the readonly keyword isn't necessary.

I don't know well enough what writable actually does to determine whether this has an impact.

It is similar to how Object.freeze works. Namely, it is shallow and in normal mode the assignments are ignored. In strict mode a TypeError is thrown.

Hopefully this is possible at runtime with the new TC39 decorators proposal.

I don't quite understand this, yes the configuration is done at run time but it really should be done in a constructor. The annoying thing is is that without this proposal, the equivalent code is rather obtuse:

With proposal:
class Foo {
  readonly foo = "1";
}

const f = new Foo();

(f as any).foo = "2"; // error

Current situation:
interface Foo {
  readonly foo: string;
}

class Foo {
  constructor() {
    Object.defineProperty(this, "foo", {
      enumerable: true,
      configurable: true,
      writable: false,
      value: "1"
    });
  }
}

const f = new Foo();

(f as any).foo = "2"; // error

The current situation is necessary so that a second Object.defineProperty isn't emitted in the constructor.

(f as any).foo = "2"; // error

But why should that be an error? readonly only applies to the specific TypeScript type. It does not mean immutable, only "can't write via this type". Like I mentioned, the mutable counter-part is implicitly compatible:
class Foo { readonly foo = "1"; }
class MFoo { foo = "1"; }

function changeFoo(x: MFoo) { x.foo = "abc"; }

const foo = new Foo();
changeFoo(foo);

But why should that be an error? readonly only applies to the specific TypeScript type. It does not mean immutable, only "can't write via this type". Like I mentioned, the mutable counter-part is implicitly compatible:

Well that is what I am proposing. Namely a change.
And furthermore, I know that you can change the readonly-ness of child classes too. But that is compatible with my proposal because I am not talking about changing the configurable flag.

How is it not allowing type erasure?

Because currently the readonly modifier is not part of ECMAScript, it's part of TypeScript's static type system.  It sounds like you want the type system to affect the emitted JavaScript, which is counter to type erasure.

There is already a well defined JS way of doing just this. I was slightly surprised that turning on useDefineForClassFields didn't do this anyway.

If you're suggesting that the readonly modifier should be considered part of class fields and not part of the static type system, then sure, this isn't a type erasure issue.  But then you're asking for a runtime feature involving "non-ECMAScript syntax with JavaScript output".   TypeScript won't introduce such new runtime features; such requests would belong in  https://github.com/tc39/proposal-class-fields/, such as the (closed) https://github.com/tc39/proposal-class-fields/issues/83.
Or am I missing what we are trying to achieve here?

The only non-type-directed-emit case I can see here would be class fields, and readonly class fields are intentionally writable in the constructor, so this is a no-go.


Disable passcode entry completely

I have tried disabling by using policy authenticationPolicy: .biometryCurrentSet and authenticationPolicy: .biometryAny but after three failed attempts the app asks for a passcode. How do I remove passcode completely?

Did you mean that you want to enable biometrics, but you do not want the passcode fallback, right? If so it's impossible. The passcode fallback option is always provided by the system.

I see other apps have done it though, it possible to do it without using this library maybe?

See this https://stackoverflow.com/questions/50820505/how-to-ignore-ios-device-pin-prompt-after-3-incorrect-touch-face-id-recognitions

This configuration can also be done via the library. Give it a try.

Please guide me sir

let keychain = Keychain()
keychain
    .accessibility(.whenPasscodeSetThisDeviceOnly, authenticationPolicy: .touchIDAny)
keychain["..."] = ...

I haven't tested but it should work.

It does not work, please add the feature to your library thanks

@kipropkorir
I have confirmed that the above code works. Perhaps you are using the library in the wrong way.
I won't change the library because it is working properly. If my perception of your problem is wrong, please provide me more information tells me that.

Hey @kishikawakatsumi , thanks for the update, my case scenario is as below.
keychain
.accessibility(.whenPasscodeSetThisDeviceOnly, authenticationPolicy: .userPresence)
Using the above code shows both biometric and passocode option.
But when I use:
keychain
.accessibility(.whenPasscodeSetThisDeviceOnly, authenticationPolicy: .touchIDAny)
or
keychain
.accessibility(.whenPasscodeSetThisDeviceOnly, authenticationPolicy: .biometricAny)
It doesn't show the passcode option at first but after three failed biometric auth attempts it falls back to "enter passcode", kindly confirm this 👍

Show full code. I believe you do not use return value or running it on the main thread.

Here is the full code:
import Foundation
import KeychainAccess
import LocalAuthentication
public struct KeyChainKeys {
public static let MASTER_MSISDN = "master-msisdn"
public static let BIOMETRIC_ID_KEY = "touch-id-store"
}
protocol BiometricIDService {
var biometricSupported: BiometricType { get }
func checkForBiometricId(completion: @escaping ((_ pincode: String?, _ error: Error?) -> Void))
func storePinForBiometricId(_ pin: String, completion: @escaping ((_ error: Error?) -> Void))
func removeBiometricIdPin(completion: @escaping ((_ error: Error?) -> Void))

}
class BiometricIDServiceDefault: BiometricIDService {
private let bundleId = Bundle.main.bundleIdentifier!

let biometricSupported = LAContext().biometricType

func checkForBiometricId(completion: @escaping ((_ pincode: String?, _ error: Error?) -> Void)) {

    let keychain = Keychain(service: bundleId)
    DispatchQueue.global().async {
        do {
            let storedPin = try keychain
                .authenticationPrompt(NSLocalizedString("login", comment: "login" ))
                .get(KeyChainKeys.BIOMETRIC_ID_KEY)

            Logger.debug("pincode: \(String(describing: storedPin))")
            DispatchQueue.main.async {
                completion(storedPin, nil)
            }

        } catch let error {
            DispatchQueue.main.async {
                completion(nil, error)
            }
        }
    }

}

func storePinForBiometricId(_ pin: String, completion: @escaping ((_ error: Error?) -> Void)) {

    let keychain = Keychain(service: bundleId)
    DispatchQueue.global().async {
        do {
            try keychain
                .accessibility(.whenPasscodeSetThisDeviceOnly, authenticationPolicy: .touchIDAny)
                .set(pin, key: KeyChainKeys.BIOMETRIC_ID_KEY)
            DispatchQueue.main.async {
                completion(nil)
            }
        } catch let error {
            DispatchQueue.main.async {
                completion(error)
            }
        }
    }

}

func removeBiometricIdPin(completion: @escaping ((Error?) -> Void)) {

    let keychain = Keychain(service: bundleId)
    do {
        try keychain.remove(KeyChainKeys.BIOMETRIC_ID_KEY)
        DispatchQueue.main.async {
            completion(nil)
        }
    } catch let error {
        DispatchQueue.main.async {
            completion(error)
        }
    }

}

}
enum BiometricType: String {
case none
case touchID
case faceID
}
private extension LAContext {
var biometricType: BiometricType {
var error: NSError?
    guard canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error) else {
        Logger.debug("Cannot evaluate biometrics policy \(error?.localizedDescription ?? "Error unavailable")")
        return .none
    }

    guard #available(iOS 11.0, *) else {
        return .touchID
    }
    switch biometryType {
    case .none:
        return .none
    case .touchID:
        return .touchID
    case .faceID:
        return .faceID
    @unknown default:
        assertionFailure("Unknown biometry type detected")
        return .none
    }
}

}

Thanks. I have run your code. It seems working as expected.
When the first failure, it shows retry and cancel button. Then the second failure, shows only the cancel button. There is no passcode fallback. Isn't this the behavior you want?

First Failure
Second Failure


Storage Component (toolboxes, backpacks, etc)

Closes #53
Summary
Adds a component for containers that store entities, which defines a storage capacity that it can hold.
Entities that can be stored have the storeable component, and the item component type is a subtype of the storeable component now which defines stored size.
This is heavily based on the entity spawn panel which was made by @PJB3005, who on top of that gave me metric tons of help working with godot's UI editor so much thanks to him wouldn't have been possible without him.
Status
This is about 90% completed. The container works exactly as it should, both with entering and removal of items. The primary issues that exist right now are

Due to a silly few reasons and my apparently bad memory when I made the interaction system the use item system was a total failure and I need to (re)implement it, so right now this UI opens just when you add an item or click on it when an empty hand.
I need to change up what causes the UI to open itself after fixing the above, as described in the prior bullet point
I need some small fix for directed component messages to be done or looked at by someone else in the engine first

This PR now fixes the use interaction not ever working, for both the active held item bound key as well as left clicking on the active hand in the hands gui. All it requires now is some minor tweaks to when the UI opens and it's completely finished.

Alright this is finished, the only issue it has is that I have trouble reopening the UI window when it closes, and I get like 3 different various errors normally related to scene control or missing element references.

Gonna need a way to load tscn files from content WITHOUT loading GodotSharp.

Fixed


possible replication of first frame in large datasets on Intel integrated GPU

🐛 Bug
from  https://forum.image.sc/t/napari-stuck-view-in-3d-cube/40899/4
I haven't had time to try to reproduce this yet, but @kapoorlab is seeing a strange issue in which the first timepoint of a relatively large (82, 65, 967, 516) 4D volume is superimposed on all later timepoints.  If he crops Z to ~16 planes, it seems to go away.

Here is an example dataset to try this:
https://drive.google.com/file/d/1qqXiGunUN3ecpR5j8K4QIz2_196-cVU1/view?usp=sharing

Thanks,  I tried to recreate with synthetic data but it didn't happen:
import numpy as np
import napari

shape = (82, 65, 967, 516)
data = np.ones(shape)
for i in range(len(data)):
    start = 50+5*i
    strip = slice(start, start + 7)
    data[i,:,:,strip] = 3

with napari.gui_qt():
    viewer = napari.view_image(data, rgb=False, scale=[1, 1, 0.16, 0.16], contrast_limits=(0, 3))

so I'll take a look at this dataset

hmm... i also couldn't see it with your dataset, though I opened it with napari path/to/file.tif instead of using imread...  Could you 1) paste the output of your napari --info here ... and 2) give me more details on the imread?  is that from skimage?  tifffile?

also, just want to double check that you tested this smaller dataset shape = (10, 27, 967, 516) and definitely still see it?

My napari --info output:
`
napari: 0.3.6
Platform: Darwin-18.7.0-x86_64-i386-64bit
Python: 3.6.9 |Anaconda, Inc.| (default, Jul 30 2019, 13:42:17)  [GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)]
Qt: 5.14.2
PyQt5: 5.14.2
NumPy: 1.18.4
SciPy: 1.4.1
Dask: 2.17.2
VisPy: 0.6.4
GL version:  2.1 INTEL-12.10.12
MAX_TEXTURE_SIZE: 16384
Plugins:

napari-plugin-engine: 0.1.5
svg: 0.1.3
`

I see this problem for small dataset also, but it goes away if I choose Z = 16. Changing Image dtype from uint8 to float16 also does not help.
imread is from tifffile but I also tried it from skimage and same result as from tifffile. I have not tried to load dataset using napari  /path/to/file.tif though.

Ok, wow this one is a surprise!!
Cross-posting my comment from image.sc - i'm curious if you drop the scale arg do weird things still happen?
Curious if you go back in time before https://github.com/napari/napari/pull/1445 then do bad things still happen?

Hi, yeah there is one more surprise I noticed but first, I went back in time n cloned the dev repo, napari info for that:
`(base) AIMachines-MacBook-Pro:napari aimachine$ napari --info
napari: 0.1.dev768+g9b90648
Platform: Darwin-18.7.0-x86_64-i386-64bit
Python: 3.7.3 (default, Mar 27 2019, 16:54:48)  [Clang 4.0.1 (tags/RELEASE_401/final)]
Qt: 5.14.2
PyQt5: 5.14.2
NumPy: 1.18.4
SciPy: 1.4.1
Dask: 2.5.2
VisPy: 0.6.4
GL version:  2.1 INTEL-12.10.12
MAX_TEXTURE_SIZE: 16384
Plugins:

napari-plugin-engine: 0.1.6
svg: 0.1.3
`
No scale set, just drag n drop the image and choose the cube and same error as wee see it now. Also setting scale or unsetting it does not help, it is still showing the same bug with no scaling set in the view_mage.

Now the next surprise, If I want to edit labels on the image and put the scale keyword inn the view_image napari does not allow me to draw or edit labels, only turning it off lets me edit labels. But that seems to be a feature than a bug right? So I did not point it out before but just mentioning it in the passing.

If I want to edit labels on the image and put the scale keyword inn the view_image napari does not allow me to draw or edit labels, only turning it off lets me edit labels. But that seems to be a feature than a bug right?

maybe, but probably something that should be fixed, can you make a dedicated issue for this one

Now the next surprise, If I want to edit labels on the image and put the scale keyword inn the view_image napari does not allow me to draw or edit labels, only turning it off lets me edit labels. But that seems to be a feature than a bug right? So I did not point it out before but just mentioning it in the passing.

could You try if for code from this PR this problem is fixed? https://github.com/napari/napari/pull/1360
It may be connected with wrong handling scale when creating labels.
I meet this problem on other side of scale (large values) in #1407
It is partially fixed (for your case also should be).

Hi @Czaki ,
I tried the PR #1360 but it does not solve the issue because scaling does not seem to cause this problem. Even with no scaling the problem remains.

Could you provide information about RAM in your computer?
Could you describe steps?
Did You have access to other computer and could reproduce any of these two bugs?

@Czaki I am using a standard Macbook pro. I open a Jupyter notebook where the images are tiff files of about 3 GB and read using imread and then I launch napari gui from the notebook and switch to the cube view and I see this error. Even drag n drop in napari would cause the same issue.
Maybe you can try the dataset I uploaded and see if you see the same error as me?

@kapoorlab
I try this on Ubuntu and on MacOS (MacBook Pro (Retina, 15-inch, Mid 2015) 16 GB RAM). And not see this error.
Only difference which I see is that I use pure CPython (from pyenv) and You use Python from Anaconda.
I could paint on labels (it work only in 2D mode). And first layer does replicate.
I think that You need to provide more information to allow other person to reproduce this problem. I may be details as laptop model. graphic card etc.
napari: 0.3.6
Platform: Darwin-18.7.0-x86_64-i386-64bit
Python: 3.6.9 (default, May 7 2020, 20:21:55) [GCC 4.2.1 Compatible Apple LLVM 11.0.0 (clang-1<IP_ADDRESS>)]
Qt: 5.14.2
PyQt5: 5.14.2
NumPy: 1.19.1
SciPy: 1.5.2
Dask: 2.21.0
VisPy: 0.6.4

GL version: 2.1 ATI-2.11.21
MAX_TEXTURE_SIZE: 16384

Plugins:
- napari_plugin_engine: 0.1.7
- svg: 0.1.3

My Napari info is as follows:
napari: 0.3.6
Platform: Darwin-18.7.0-x86_64-i386-64bit
Python: 3.7.3 (default, Mar 27 2019, 16:54:48)  [Clang 4.0.1 (tags/RELEASE_401/final)]
Qt: 5.14.2
PyQt5: 5.14.2
NumPy: 1.19.1
SciPy: 1.5.2
Dask: 2.21.0
VisPy: 0.6.4
GL version:  2.1 INTEL-12.10.12
MAX_TEXTURE_SIZE: 16384
Plugins:

napari-plugin-engine: 0.1.6
svg: 0.1.3

Maybe it is my plugin engine which has a version lower?
My Macbook Pro 14,2 info:
Processor Name:	Intel Core i7
Memory:	16 GB

Hm. In this moment I have no idea. I cannot reproduce this bug. Maybe someone else will have better idea.

@kapoorlab, can you

try loading data with napari path/to/image.tif and see if it still happens for you?
provide a full script with imports showing how the data is loaded
try my synthetic example above and see if it happens for you

@tlambert03
So I tried loading data with napari path/to/image.tif and it still happens.
My script:
`
import os
from tifffile import imread
import napari
ImageName = '/Users/aimachine/Downloads/C2-Raw_Timelapse_87E_Tomato_GFP.tif'
scaleX = 0.161
scaleY = 0.161
scaleZ = 1
Name = os.path.basename(os.path.splitext(ImageName)[0])
Image = imread(ImageName)
Image= Image.astype('float16')
print(Image.dtype)
with napari.gui_qt():
print(Image.shape)
viewer = napari.view_image(Image, name='Raw', rgb=False)
`
With the synthetic image also it happens, see my screenshots here:
Synthetic example
So something is wrong locally on my system it seems.

So something is wrong locally on my system it seems.

yep, I'm coming to the same conclusion... but it's still quite interesting.  I'd like to try to recreate it locally... can you do conda list --export > requirements.txt and upload the file here?  And if you have time, create a fresh conda environment and see if the problem persists?

`
This file may be used to create an environment using:
$ conda create --name  --file
platform: osx-64
_anaconda_depends=2019.03=py37_0
alabaster=0.7.12=py37_0
anaconda=custom=py37_1
anaconda-client=1.7.2=py37_0
anaconda-project=0.8.3=py_0
appdirs=1.4.3=pypi_0
appnope=0.1.0=pypi_0
appscript=1.1.0=py37h1de35cc_0
asciitree=0.3.3=pypi_0
asn1crypto=0.24.0=py37_0
astroid=2.3.1=py37_0
astropy=3.2.1=py37h1de35cc_0
atomicwrites=1.3.0=py37_1
attrs=19.2.0=py_0
babel=2.8.0=pypi_0
backcall=0.2.0=pypi_0
backports=1.0=py_2
backports.os=0.1.1=py37_0
backports.shutil_get_terminal_size=1.0.0=py37_2
beautifulsoup4=4.8.0=py37_0
bitarray=1.0.1=py37h1de35cc_0
bkcharts=0.2=py37_0
blas=1.0=mkl
bleach=3.1.0=py37_0
blosc=1.16.3=hd9629dc_0
bokeh=1.3.4=py37_0
boto=2.49.0=py37_0
bottleneck=1.2.1=py37h1d22016_1
btrack=0.3.8=pypi_0
bzip2=1.0.8=h1de35cc_0
ca-certificates=2020.1.1=0
cachey=0.2.1=pypi_0
certifi=2020.6.20=pypi_0
cffi=1.12.3=py37hb5b8e2f_0
chardet=3.0.4=py37_1003
click=7.0=py37_0
cloudpickle=1.2.2=py_0
clyent=1.2.2=py37_1
colorama=0.4.1=py37_0
conda=4.8.3=py37_0
conda-package-handling=1.6.0=py37h1de35cc_0
contextlib2=0.6.0=py_0
cryptography=2.7=py37ha12b0ac_0
csbdeep=0.5.1=pypi_0
curl=7.65.3=ha441bb4_0
cvxopt=1.2.5=pypi_0
cycler=0.10.0=pypi_0
cython=0.29.13=py37h0a44026_0
cytoolz=0.10.0=py37h1de35cc_0
dask=2.21.0=pypi_0
dask-core=2.5.2=py_0
dbus=1.13.6=h90a0687_0
decorator=4.4.2=pypi_0
defusedxml=0.6.0=py_0
distlib=0.3.0=pypi_0
distributed=2.5.2=py_0
docutils=0.16=pypi_0
entrypoints=0.3=py37_0
et_xmlfile=1.0.1=py37_0
expat=2.2.6=h0a44026_0
fastcache=1.1.0=py37h1de35cc_0
fasteners=0.15=pypi_0
filelock=3.0.12=py_0
flask=1.1.1=py_0
freetype=2.9.1=hb4e5f40_0
freetype-py=2.2.0=pypi_0
fsspec=0.5.2=py_0
get_terminal_size=1.0.0=h7520d66_0
gettext=<IP_ADDRESS>=h15daf44_3
gevent=1.4.0=py37h1de35cc_0
glib=2.56.2=hd9629dc_0
glob2=0.7=py_0
gmp=6.1.2=hb37e062_1
gmpy2=2.0.8=py37h6ef4df4_2
greenlet=0.4.15=py37h1de35cc_0
h5py=2.10.0=pypi_0
hdf5=1.10.4=hfa1e0ec_0
heapdict=1.0.1=py_0
html5lib=1.0.1=py37_0
icu=58.2=h4b95b61_1
idna=2.10=pypi_0
imagecodecs=2020.2.18=pypi_0
imageio=2.9.0=pypi_0
imagesize=1.2.0=pypi_0
importlib-metadata=1.7.0=pypi_0
intel-openmp=2019.4=233
ipykernel=5.3.4=pypi_0
ipython=7.16.1=pypi_0
ipython-genutils=0.2.0=pypi_0
ipython_genutils=0.2.0=py37_0
ipywidgets=7.5.1=py_0
isort=4.3.21=py37_0
itsdangerous=1.1.0=py37_0
jbig=2.1=h4d881f8_0
jdcal=1.4.1=py_0
jedi=0.17.2=pypi_0
jinja2=2.11.2=pypi_0
joblib=0.13.2=py37_0
jpeg=9b=he5867d9_2
json5=0.8.5=py_0
jsonschema=3.0.2=py37_0
jupyter=1.0.0=py37_7
jupyter-client=6.1.6=pypi_0
jupyter-core=4.6.3=pypi_0
jupyter_client=5.3.3=py37_1
jupyter_console=6.0.0=py37_0
jupyter_core=4.5.0=py_0
jupyterlab=1.1.4=pyhf63ae98_0
jupyterlab_server=1.0.6=py_0
keras=2.3.1=pypi_0
keras-applications=1.0.8=pypi_0
keras-preprocessing=1.1.2=pypi_0
keyring=18.0.0=py37_0
kiwisolver=1.2.0=pypi_0
krb5=1.16.1=hddcf347_7
labelme=3.16.7=pypi_0
lazy-object-proxy=1.4.2=py37h1de35cc_0
libarchive=3.3.3=h786848e_5
libcurl=7.65.3=h051b688_0
libcxx=4.0.1=hcfea43d_1
libcxxabi=4.0.1=hcfea43d_1
libedit=3.1.20181209=hb402a30_0
libffi=3.2.1=h475c297_4
libgfortran=3.0.1=h93005f0_2
libiconv=1.15=hdd342a3_7
liblief=0.9.0=h2a1bed3_2
libpng=1.6.37=ha441bb4_0
libsodium=1.0.16=h3efe00b_0
libssh2=1.8.2=ha12b0ac_0
libtiff=4.0.10=hcb84e12_2
libxml2=2.9.9=hf6e021a_1
libxslt=1.1.33=h33a18ac_0
llvm-openmp=4.0.1=hcfea43d_1
llvmlite=0.32.1=pypi_0
locket=0.2.0=py37_1
lxml=4.4.1=py37hef8c89e_0
lz4-c=<IP_ADDRESS>=h1de35cc_0
lzo=2.10=h362108e_2
markupsafe=1.1.1=py37h1de35cc_0
matplotlib=3.2.1=pypi_0
mccabe=0.6.1=py37_1
mistune=0.8.4=py37h1de35cc_0
mkl=2019.4=233
mkl-service=2.3.0=py37hfbe908c_0
mkl_fft=1.0.14=py37h5e564d8_0
mkl_random=1.1.0=py37ha771720_0
mock=3.0.5=py37_0
monotonic=1.5=pypi_0
more-itertools=7.2.0=py37_0
mpc=1.1.0=h6ef4df4_1
mpfr=4.0.1=h3018a27_3
mpmath=1.1.0=py37_0
msgpack-python=0.6.1=py37h04f5b5a_1
multipledispatch=0.6.0=py37_0
napari=0.3.6=pypi_0
napari-plugin-engine=0.1.6=pypi_0
napari-svg=0.1.3=pypi_0
nb_conda=2.2.1=py37_0
nb_conda_kernels=2.2.2=py37_0
nbconvert=5.6.0=py37_1
nbformat=4.4.0=py37_0
ncurses=6.1=h0a44026_1
networkx=2.4=pypi_0
nltk=3.4.5=py37_0
nose=1.3.7=py37_2
notebook=6.0.1=py37_0
numba=0.49.1=pypi_0
numcodecs=0.6.3=pypi_0
numexpr=2.7.0=py37h7413580_0
numpy=1.19.1=pypi_0
numpy-base=1.17.2=py37h6575580_0
numpydoc=1.1.0=pypi_0
olefile=0.46=py37_0
ont=1.0.0=pypi_0
opencv-python=<IP_ADDRESS>=pypi_0
openpyxl=3.0.0=py_0
openssl=1.1.1g=h1de35cc_0
packaging=20.4=pypi_0
pandas=0.25.1=py37h0a44026_0
pandoc=<IP_ADDRESS>=0
pandocfilters=1.4.2=py37_1
parso=0.7.1=pypi_0
partd=1.0.0=py_0
path.py=12.0.1=py_0
pathlib2=2.3.5=py37_0
patsy=0.5.1=py37_0
pcre=8.43=h0a44026_0
pep8=1.7.1=py37_0
pexpect=4.8.0=pypi_0
phantomjs=2.1.1=1
pickleshare=0.7.5=pypi_0
pillow=7.1.2=pypi_0
pip=19.2.3=py37_0
pipenv=2018.11.26=pypi_0
pkginfo=<IP_ADDRESS>=py37_0
pluggy=0.13.0=py37_0
ply=3.11=py37_0
prometheus_client=0.7.1=py_0
prompt-toolkit=3.0.5=pypi_0
prompt_toolkit=2.0.10=py_0
psutil=5.7.2=pypi_0
ptyprocess=0.6.0=pypi_0
py=1.8.0=py37_0
py-lief=0.9.0=py37h1413db1_2
pycodestyle=2.5.0=py37_0
pycosat=0.6.3=py37h1de35cc_0
pycparser=2.19=py37_0
pycrypto=2.6.1=py37h1de35cc_9
pycurl=<IP_ADDRESS>=py37ha12b0ac_0
pyflakes=2.1.1=py37_0
pygments=2.6.1=pypi_0
pylint=2.4.2=py37_0
pyodbc=4.0.27=py37h0a44026_0
pyopengl=3.1.5=pypi_0
pyopenssl=19.0.0=py37_0
pyparsing=2.4.7=pypi_0
pyqt=5.9.2=py37h655552a_2
pyqt5=5.14.2=pypi_0
pyqt5-sip=12.8.0=pypi_0
pyrsistent=0.15.4=py37h1de35cc_0
pyside2=5.13.2=pypi_0
pysocks=1.7.1=py37_0
pytables=3.5.2=py37h5bccee9_1
pytest=5.2.1=py37_0
pytest-arraydiff=0.3=py37h39e3cac_0
pytest-astropy=0.5.0=py37_0
pytest-doctestplus=0.4.0=py_0
pytest-openfiles=0.4.0=py_0
pytest-remotedata=0.3.2=py37_0
python=3.7.3=h359304d_0
python-dateutil=2.8.1=pypi_0
python-libarchive-c=2.8=py37_13
python.app=2=py37_9
pytz=2020.1=pypi_0
pywavelets=1.1.1=pypi_0
pyyaml=5.3.1=pypi_0
pyzmq=19.0.1=pypi_0
qt=5.9.7=h468cd18_1
qtawesome=0.6.0=py_0
qtconsole=4.7.5=pypi_0
qtpy=1.9.0=py_0
read-roi=1.5.2=pypi_0
readline=7.0=h1de35cc_5
requests=2.24.0=pypi_0
rope=0.14.0=py_0
ruamel_yaml=0.15.46=py37h1de35cc_0
scikit-image=0.17.2=pypi_0
scikit-learn=0.21.3=py37h27c97d8_0
scipy=1.5.2=pypi_0
seaborn=0.9.0=py37_0
selenium=3.141.0=py37h1de35cc_0
send2trash=1.5.0=py37_0
setuptools=49.2.0=pypi_0
shiboken2=5.13.2=pypi_0
simplegeneric=0.8.1=py37_2
singledispatch=<IP_ADDRESS>=py37_0
sip=4.19.8=py37h0a44026_0
six=1.15.0=pypi_0
sklearn=0.0=pypi_0
snappy=1.1.7=he62c110_3
snowballstemmer=2.0.0=py_0
sortedcollections=1.1.2=py37_0
sortedcontainers=2.1.0=py37_0
soupsieve=1.9.3=py37_0
sphinx=3.1.2=pypi_0
sphinxcontrib=1.0=py37_1
sphinxcontrib-applehelp=1.0.2=pypi_0
sphinxcontrib-devhelp=1.0.2=pypi_0
sphinxcontrib-htmlhelp=1.0.3=pypi_0
sphinxcontrib-jsmath=1.0.1=py_0
sphinxcontrib-qthelp=1.0.3=pypi_0
sphinxcontrib-serializinghtml=1.1.4=pypi_0
sphinxcontrib-websupport=1.1.2=py_0
spyder=3.3.6=py37_0
spyder-kernels=0.5.2=py37_0
sqlalchemy=1.3.9=py37h1de35cc_0
sqlite=3.30.0=ha441bb4_0
stardist=0.5.0=pypi_0
statsmodels=0.10.1=py37h1d22016_0
sympy=1.4=py37_0
tbb=2019.4=h04f5b5a_0
tblib=1.4.0=py_0
termcolor=1.1.0=pypi_0
terminado=0.8.2=py37_0
testpath=0.4.2=py37_0
tifffile=2020.7.24=pypi_0
tiffile=2018.10.18=pypi_0
tk=8.6.8=ha441bb4_0
toolz=0.10.0=py_0
tornado=6.0.4=pypi_0
tqdm=4.46.0=pypi_0
traitlets=4.3.3=py37_0
unicodecsv=0.14.1=py37_0
unixodbc=2.3.7=h1de35cc_0
urllib3=1.25.10=pypi_0
virtualenv=20.0.18=pypi_0
virtualenv-clone=0.5.4=pypi_0
vispy=0.6.4=pypi_0
wcwidth=0.2.5=pypi_0
webencodings=0.5.1=py37_1
werkzeug=0.16.0=py_0
wheel=0.33.6=py37_0
widgetsnbextension=3.5.1=py37_0
wrapt=1.12.1=pypi_0
wurlitzer=1.0.3=py37_0
xlrd=1.2.0=py37_0
xlsxwriter=1.2.1=py_0
xlwings=0.15.10=py37_0
xlwt=1.3.0=py37_0
xz=5.2.4=h1de35cc_4
yaml=0.1.7=hc338f04_2
zarr=2.3.2=pypi_0
zeromq=4.3.1=h0a44026_3
zict=1.0.0=py_0
zipp=3.1.0=pypi_0
zlib=1.2.11=h1de35cc_3
zstd=1.3.7=h5bba6e5_0
`

I created a new minimal environment with fresh install of napari and still napari path/to/.tif gives me the same error. The requirements file for this environment contains:
This file may be used to create an environment using:
$ conda create --name  --file
platform: osx-64
alabaster=0.7.12=pypi_0
appnope=0.1.0=pypi_0
babel=2.8.0=pypi_0
backcall=0.2.0=pypi_0
ca-certificates=2020.6.24=0
cachey=0.2.1=pypi_0
certifi=2020.6.20=py36_0
chardet=3.0.4=pypi_0
dask=2.21.0=pypi_0
decorator=4.4.2=pypi_0
docutils=0.16=pypi_0
freetype-py=2.2.0=pypi_0
heapdict=1.0.1=pypi_0
idna=2.10=pypi_0
imageio=2.9.0=pypi_0
imagesize=1.2.0=pypi_0
importlib-metadata=1.7.0=pypi_0
ipykernel=5.3.4=pypi_0
ipython=7.16.1=pypi_0
ipython-genutils=0.2.0=pypi_0
jedi=0.17.2=pypi_0
jinja2=2.11.2=pypi_0
jupyter-client=6.1.6=pypi_0
jupyter-core=4.6.3=pypi_0
libcxx=10.0.0=1
libedit=3.1.20191231=h1de35cc_1
libffi=3.3=hb1e8313_2
markupsafe=1.1.1=pypi_0
napari=0.3.6=pypi_0
napari-plugin-engine=0.1.7=pypi_0
napari-svg=0.1.3=pypi_0
ncurses=6.2=h0a44026_1
numpy=1.19.1=pypi_0
numpydoc=1.1.0=pypi_0
openssl=1.1.1g=h1de35cc_0
packaging=20.4=pypi_0
parso=0.7.1=pypi_0
pexpect=4.8.0=pypi_0
pickleshare=0.7.5=pypi_0
pillow=7.2.0=pypi_0
pip=20.1.1=py36_1
prompt-toolkit=3.0.5=pypi_0
psutil=5.7.2=pypi_0
ptyprocess=0.6.0=pypi_0
pygments=2.6.1=pypi_0
pyopengl=3.1.5=pypi_0
pyparsing=2.4.7=pypi_0
pyqt5=5.14.2=pypi_0
pyqt5-sip=12.8.0=pypi_0
python=3.6.10=hf48f09d_2
python-dateutil=2.8.1=pypi_0
pytz=2020.1=pypi_0
pyyaml=5.3.1=pypi_0
pyzmq=19.0.1=pypi_0
qtconsole=4.7.5=pypi_0
qtpy=1.9.0=pypi_0
readline=8.0=h1de35cc_0
requests=2.24.0=pypi_0
scipy=1.5.2=pypi_0
setuptools=49.2.0=py36_0
six=1.15.0=pypi_0
snowballstemmer=2.0.0=pypi_0
sphinx=3.1.2=pypi_0
sphinxcontrib-applehelp=1.0.2=pypi_0
sphinxcontrib-devhelp=1.0.2=pypi_0
sphinxcontrib-htmlhelp=1.0.3=pypi_0
sphinxcontrib-jsmath=1.0.1=pypi_0
sphinxcontrib-qthelp=1.0.3=pypi_0
sphinxcontrib-serializinghtml=1.1.4=pypi_0
sqlite=3.32.3=hffcf06c_0
tifffile=2020.7.24=pypi_0
tk=8.6.10=hb0a8c7a_0
toolz=0.10.0=pypi_0
tornado=6.0.4=pypi_0
traitlets=4.3.3=pypi_0
urllib3=1.25.10=pypi_0
vispy=0.6.4=pypi_0
wcwidth=0.2.5=pypi_0
wheel=0.34.2=py36_0
wrapt=1.12.1=pypi_0
xz=5.2.5=h1de35cc_0
zipp=3.1.0=pypi_0
zlib=1.2.11=h1de35cc_3

I created a new minimal environment with fresh install of napari and still napari path/to/.tif gives me the same error.

wow.  well I just tried both environments, and I still can't reproduce it here locally... and I double checked to make sure the environments are the same.  so I fear that means we now need to consider things like opengl drivers/platforms... which is harder (for me at least) to debug.  The only other thing I might try on your end is an environment with python3.8

OpenGL could connected with replication, but I cannot imageine how it could be connected with label editing.

I also tried python3.8 environment, still the same bug for me!

Did you have possibility to get acces to other computer and test on it?

Not at the moment, am on holidays but will do that as soon as I am back in the office.

Hello, I can confirm that the issue only shows up on my Mac and not on the more powerful computer that I have. On my mac I still see the stuck view but for the same image/program running on server/powerful computer with >60 GB of RAM the issue does not exist.

Maybe it is some OpenGL bug

Hi all, sounds like this bug ended up being fairly hardware specific/ possibly openGL / memory related. I'll leave this open for a couple more days in case anyone can shed any further light on this and then I will close it. Sorry we couldn't get to the bottom of it @kapoorlab! Thanks for reporting it

https://github.com/napari/napari/issues/1393#issuecomment-745615931
I am on the current python 3.9.0 napari testenv and I still have the sticky issue till now, it is just not going away. My current napari info in this enviornment:
`
napari: 0.4.2
Platform: macOS-10.16-x86_64-i386-64bit
Python: 3.9.0 | packaged by conda-forge | (default, Nov 26 2020, 07:54:06)  [Clang 11.0.0 ]
Qt: 5.15.2
PyQt5: 5.15.2
NumPy: 1.19.4
SciPy: 1.5.4
Dask: 2020.12.0
VisPy: 0.6.6
GL version:  2.1 INTEL-16.0.49
MAX_TEXTURE_SIZE: 16384
Plugins:

napari_plugin_engine: 0.1.8
svg: 0.1.4
`
OS: Mac OS Sur

@kapoorlab can you test pyside2, we've been having some pyqt5 only related problems when lots of memory is being used

@sofroniewn I just did and it has the same behaviour as pyqt5. If I open ZT view it works fine with dragging either Z or T slider but as soon as I switch to the cube view and drag the slider the first frame (pyside2) sticks over the others.

You might see on the link above @kapoorlab that the issue happened to @sofroniewn when we were developing the I2K tutorial. He "fixed" it by downscaling the image. Not much of a fix but a clue at least! It might be interesting, for example, to see if it happens to more people given large enough volumes...

Ah the issue is still alive I just reproduced it in  python 3.9.7 on a Mac for image of dimensions: (74, 22, 973, 512)

Ah the issue is still alive I just reproduced it in python 3.9.7 on a Mac for image of dimensions: (74, 22, 973, 512)

Thanks for the bump. Maybe @nclack can try digging into this one at some point in time. It seems to be hardware specific. It would probably be good to figure out if this can be reproduced with vispy only. @AhmetCanSolak might have ideas too as I think he might have seen some other memory leaks in the past too

I very briefly looked at this. I suspect there's a gl failure somewhere along the line. Is there a way to turn on gl error checking?
Setting
vispy.util.config['gl_debug']=True

nominally enables checking for errors after each gl call; errors are silently ignored normally.  However, I'm not able to reproduce the problem and I can't confirm the above actually turned on the error checking :)

This issue feels very similar to one with neuroglancer (https://github.com/google/neuroglancer/issues/51), in which the first layer of each chunk would be replicated, but only on computers with Intel integrated video (e.g., any 13/14" Intel  MacBook Pro, but not the Intel MacBookPro 15/16" or desktop with discrete graphics -- consistent with what I've seen in this issue.)
This was related to OpenGL SL allowing division to be replaced by multiplication by the reciprocal.
@jbms has a much more complete description here.

There have certainly been a lot of GPU-specific bugs in Neuroglancer related to floating point precision issues.  However, I don't know enough about how napari implements rendering to say whether there is likely to be any conneciton.  If napari renders from 3-d or higher-d textures/buffers stored in GPU memory, then I think it is possible there is a similar issue.  If napari renders from 2-d textures/buffers in GPU memory, then it is less likely to be a similar issue.

@nclack thanks for the tip, I tried it but it did not show errors, I think what @perlman is pointing out is the case here as this only happens on my Mac of 14" and not on my linux workstation. Well I will just buy a new laptop with linux as it seems to be the easiest solution :).

Late to the party but I am able to reproduce the problem with synthetic data(haven't tried the original dataset yet) on an intel mac BigSur 11.6. I went through the discussion here but also there seems to be multiple image.sc threads on this issue. Anyone has the whole picture on where we are at debugging this? So I can take it over from there and debug this.
I already tried @nclack 's vispy.util.config['gl_debug']=True suggestion but I am not getting any gl error. @tlambert03 @nclack @sofroniewn @jni @Czaki any of you working on this?

I'm so glad you can reproduce @AhmetCanSolak. I never got very far. I initially thought it might be memory related, but my guess now is that it has something to do with the raycasting shader in vispy.  It could be that there's not enough precision somewhere...something is causing that first frame to be sampled for every frame. That's pure speculation though.

@AhmetCanSolak I'd be curious to see the synthetic example.

This happened to me again last week. @perlman I can reproduce this with
import napari
import dask.array as da

data = da.random.random((2, 200, 200, 200)) # Get error
# data = da.random.random((2, 100, 100, 100)) # Works fine

viewer = napari.Viewer()
layer = viewer.add_image(data)

entering 3D rendering mode and toggling between the first two frames. Note the smaller dataset works fine.
I'm running on macbook pro. If you are fine on both just go up to 300, 400 etc. Let me know if you cannot reproduce, i can add videos too
I would be huge @perlman if you could get to bottom of this!!!!

Huh, does it have to be dask? Have we already narrowed this to dask?

no @tlambert03 , it can be observed with numpy too.

@sofroniewn If you replace your dask script with numpy you also see it?

@sofroniewn If you replace your dask script with numpy you also see it?

yup! same behaviour with numpy!! sorry, i was modifying a "real" example I had that happened to be using dask

I'm running on macbook pro.
intel or arm64? intel or discrete video?

I am unable to reproduce this on macOS+arm64, but I can reproduce on macOS+intel+integrated video.
Has anyone seen this with anything other than Intel graphics cards?
Also, I found it a lot easier to see (in 3D) by assigning a different color to each frame:
data[0,:,:,:] = 0.75
data[1,:,:,:] = 0.25```

Well, my efforts to tweak the shader to sample with a very minor offset had no effect.
Stepping through the code, on change of t (the one slider in 3d view), an entirely new 3D texture is being loaded with the expected values [e.g., vol is equal to data[0,:,:,:] or data[1,:,:,:]). Thus, I'm even more confused that we get a bizarre rendering only at t=0.
@brisvag Can you think of why the slider (and associated dims object) would have an effect on how VolumeVisual renders? I feel like I must be missing something obvious.

I'm a bit lost, late to the party. If I understand correctly, If I run this code:
import napari
import numpy as np

data = np.zeros((2, 200, 200, 200)) # Works fine
data[0,:,:,:] = 0.75
data[1,:,:,:] = 0.25

viewer = napari.Viewer()
layer = viewer.add_image(data, contrast_limits=(0, 1))

I'm supposed to see... Something strange like the stripy artifacts from @perlman? Everything looks fine on my machine.
napari: 0.4.16rc2.dev161+g66ffffc2
Platform: Linux-5.18.12-arch1-1-x86_64-with-glibc2.35
System: Arch Linux
Python: 3.10.5 (main, Jun 6 2022, 18:49:26) [GCC 12.1.0]
Qt: 5.15.2
PyQt5: 5.15.6
NumPy: 1.22.4
SciPy: 1.8.1
Dask: 2022.6.0
VisPy: 0.10.0

OpenGL:
- GL version: 4.6.0 NVIDIA 515.57
- MAX_TEXTURE_SIZE: 16384

Screens:
- screen 1: resolution 1920x1080, scale 1.0
- screen 2: resolution 1200x1920, scale 1.0
- screen 3: resolution 1920x1080, scale 1.0

@brisvag In addition to running the code, you'd need to switch to 3D mode, rotate the volume a bit, and toggle layers. But, I wouldn't expect you to see anything odd with NVIDIA graphics. This seems to occur on Intel integrated graphics only.

One thing that this reminds me of is this other time when @alisterburt saw a different behaviour from mine on his mac (can't recall what it was exactly atm), and it turned out to be caused by different initialization in shader code depending on the platform.

I could see that being an issue here. I'll skim through the volume shader code to see if anything looks fishy.

Anyone have an intel mac with integrated graphics to see if this is still an issue?
Maybe @andy-sweet ?
Upside is, those macs are getting long in the tooth so should be less and less common?

Anyone have an intel mac with integrated graphics to see if this is still an issue?
Maybe @andy-sweet ?

I just tried the example that @brisvag posted at 3596cfc8e2b6f2cf2464d6c0f795c5707eb87d68 in my napari dev environment and I didn't see any issues. Here's my full environment.
(napari-dev-pyqt5) ➜  napari git:(main) napari --info
napari: 0.5.0a2.dev379+g3596cfc8e
Platform: macOS-10.16-x86_64-i386-64bit
System: MacOS 13.6
Python: 3.9.6 (default, Jul 30 2021, 09:31:09)  [Clang 10.0.0 ]
Qt: 5.15.2
PyQt5: 5.15.4
NumPy: 1.25.1
SciPy: 1.10.1
Dask: 2023.6.1
VisPy: 0.14.1
magicgui: 0.7.3
superqt: 0.5.3
in-n-out: 0.1.5
app-model: 0.2.2
npe2: 0.7.2

OpenGL:
  - GL version:  2.1 INTEL-20.6.4
  - MAX_TEXTURE_SIZE: 16384

Screens:
  - screen 1: resolution 3440x1440, scale 1.0
  - screen 2: resolution 1440x900, scale 2.0

Upside is, those macs are getting long in the tooth so should be less and less common?

Hey! Compared to my personal mac (late 2013), this thing is practically a baby!

0.5.0 is released so I'm going to close. If this pops up again on Intel macs, we can reopen.


Mount user's ~/.tlaplus dir in docker container

Aims to fix the docker integration issues hit in #1317, and this PR is into
that feature branch.
This is probably the desired behavior for the docker container in any case,
since it allows it to function even more accurately as a mimic of the
uncontained executable.

[ ] Tests added for any new code
[ ] Ran make fmt-fix (or had formatting run automatically on all files edited)
[ ] Documentation added for any new functionality
[ ] Entry added to UNRELEASED.md for any new functionality

Codecov Report

Merging #1324 (b572382) into ik/fix-stats (374f2e1) will increase coverage by 0.00%.
The diff coverage is n/a.

:exclamation: Current head b572382 differs from pull request most recent head 175b618. Consider uploading reports for the commit 175b618 to get more accurate results

@@              Coverage Diff              @@
##           ik/fix-stats    #1324   +/-   ##
=============================================
  Coverage         74.91%   74.91%
=============================================
  Files               334      334
  Lines             10837    10837
  Branches            533      522   -11
=============================================
+ Hits               8118     8119    +1
+ Misses             2719     2718    -1

Impacted Files
Coverage Δ

...he/io/annotations/parser/CommentPreprocessor.scala
93.97% <0.00%> (ø)

.../forsyte/apalache/tla/pp/ConstSimplifierBase.scala
97.43% <0.00%> (+1.28%)
:arrow_up:

Continue to review full report at Codecov.

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


PoC/research ERC20 compatibility

Changed title to ERC20 as ETH is done.

Covered by https://github.com/iov-one/iov-core/issues/8


Character Cache

A cache for basic character info (name, faction ID) would be good because:

We'd hit the Census less for repeated accesses of this basic info.
Much quicker access to this info after the first fetch.

I think a simple GenServer that maps the character ID to the info will do for now. Later it may be worth it to additionally persist the info to the DB, and let records periodically expire (at which point we'd have to hit the Census again to refresh the character's info, as in the rare case of name changes).
@dm0896665 any thoughts?

Looks good to me. How do we want to go about storing the data from saves? I mean like if we save all data at a certain time for one player. How do we go about saving it for others around the same time without duplicate data, but still retaining the time for each character's save? I guess we can look for log-in/out events up just thinking logic-wise.

You mean for session saves? How exactly are you thinking of going about it? If we save the specific events that make up a session, I don't think duplication would be of concern. My initial thought would be to put a boolean column like "isExpirable" on the event tables, where "true" means the event is a part of a saved session. The thing is that would be another column that takes up space, where most of the values will be "false" anyway (since most sessions aren't going to be saved).

Well, it should only take up 1 bit (0 or 1 for true or false), but I was wondering if they were to want to keep a session how would we look at getting that data back. I'm not really sure how to go about it

Ah you're right, I wasn't thinking with actual numbers lol. I'll open a new issue that outlines my vague idea of what saving sessions looks like (I think this is a bit off topic for the cache)


Need the Copyright Statement field to be static, not dynamic

Need the Copyright Statement field to be static, not dynamic: (the metadata values we currently have for the rights statement are from a controlled list of terms); need to be able to filter by rights statement (right now it’s an open text field that I cannot filter contents by)

Ongoing Data Migration
Description:
Currently, interns are working on moving content rights information from the "Right Statement" field to the "Rights Holder" field. No development is needed on this issue at the moment.
Next Steps:
After all the data has been migrated, the "Rights Statement" field can be deleted.


[5.6] Skip SplFileInfo dependent tests on Windows

I noticed that we have 33 broken tests on Windows

I dug into the problem and noticed that they caused by not deleted folders due to permission error

I don't know how to resolve this correctly without skipping.
This advice doesn't help. I tried set iterator value to null with link usage but it has no effect
foreach ($files->allFiles($this->tempDir) as &$file) {
    $allFiles[] = $file->getFilename();
    $file = null;
}

Maybe someone has some advice on how to fix this in an appropriate way?
Also, I've fixed problem with DB format testing which was caused by mocked Carbon::now()

I think a better way would be to give every test a separate folder to run in.
Here's an example using md5 to have characters safe for the file-system, and appends the test's name for easy tracking down of who doesn't clean up after itself. An added rmdir also makes sure that we try to remove the folder from previous runs.
public function setUp()
{
    $this->tempDir = __DIR__.'/tmp/' . md5($this->getName()) . '-' . $this->getName(false);
    @rmdir($this->tempDir);
    mkdir($this->tempDir, 0777, true);
}

I've had this problem with my own tests that involve deleting the same folder in windows. It works couple of times, but then after another delete call, the folder locks with permission denied, and it's not cleaned up until the process stops. Cant even access the folder through explorer. I tried everything, using cmd to delete folders, delaying folder delete etc.. windows just doesn't like folder seletion in quick bursts and locks with permission error no matter what you use.

I've had this problem with my own tests that involve deleting the same folder in windows. It works couple of times, but then after another delete call, the folder locks with permission denied, and it's not cleaned up until the process stops. Cant even access the folder through explorer. I tried everything, using cmd to delete folders, delaying folder delete etc.. windows just doesn't like folder deletion in quick bursts and locks with permission error no matter what you use.

@donnysim I definitely faced the same problem.
@sisve if we use your advice we just create multiple not deleted folders, but it allow us only to avoid folder name conflict, but not unlock it to delete in correct way.
Has anyone any better advice how to unlock folder, locked by SplFileInfo used in iterator?

It feels like it would be better to actually fix these problems instead of just skipping them?

@taylorotwell I open this PR to find a solution and fix them in the next commits.
Have you or anyone else any suggestions how to fix these problems?


chore: add image for <svelte:document> example

Add thumbnail of example added in https://github.com/sveltejs/svelte/pull/8387

The examples have been moved to a new location: https://github.com/sveltejs/svelte/tree/master/documentation/examples


Integration with job history server with GCS as the backend storage

[ ] Provide a reference template for the job history server Deployment.
[ ] Add documentation.

Spark history server does not need another image, requires only deployment and service yamls. One need to add to yaml command (override the entrypoint) as /opt/spark/sbin/start-history-server.sh with some specific storage configurations, for S3 these are secrets. I can probably PR the proposal we use and iterate over if that fits for GCS (it is a prototype version).

@mrow4a Thanks for the reference to what you have built! For logging to GCS, we need an image that has the GCS connector built-in, e.g., this one. I think we can host different templates here for different backend storage, e.g., one for GCS and one for S3. I'm also thinking of adding a field to SparkApplicationSpec, e.g., eventLogDir that if set means event logging is enabled and the value is used to set spark.eventLog.di. This saves users from having to set both keys in sparkConf.

Another thing to consider with job history server being S3 or GCS is how renames are handled. We observe timeouts with S3 on renaming "*.inprogress" files to normal file when application finishes - in HDFS rename is atomic metadata operation, while in S3 it is data operation, possibly of multi MBs of data.

@mrow4a it's an interesting idea about running the history server as a separate process in the operator itself. I think this is a better option than running the history server as a separate Deployment.

@liyinan926 there could possibly be also a flag passed to operator in order not to spawn history server process - in case someone wants to customise it and have separate deployment.

there could possibly be also a flag passed to operator in order not to spawn history server process - in case someone wants to customise it and have separate deployment.

Makes sense. There could also be a flag for specifying the even log path.

To chime in here, I have a PR pending for a history server chart, although I haven't figured out how to fix the CI error (it worked fine during testing on my cluster). It supports using HDFS and PersistentVolumeClaims as event log storage and provides a sample NFS-backed PVC setup. I could also enhance it to support S3 and GCS.

@yuchaoran2011 it would be great if you could also make it work with S3 and GCS.

@liyinan926 I added support for GCS in my PR and fixed the CI. Feel free to give it a try.


Update Marketo getMultipleLeads function

In util.sjs:
Currently using lastUpdatedAt, which is a deprecated function.
Update to lastUpdateAtSelector
http://developers.marketo.com/documentation/soap/getmultipleleads/
http://developers.marketo.com/blog/retrieving-customer-and-prospect-information-from-marketo-using-the-api/

Low priority. (Nice to do, but eh - lastUpdatedAt works 😄 )


Output error

The parameter -o does not work on this version?
aioscpy crawl quotes -o data.json
Note: I have used the same file provided in the example.

Temporarily does not support this operation -o sink type, but can be reserved for future features


Manually adjust file type

Is your feature request related to a problem? Please describe.
Sometimes the provided file type identification can fail to properly assign the type, e.g. when the file is short or contains an unusual combination. It doesn't mean that the identification is wrong by default, but handling some cases can be tricky.
An example:
A file starting like this:
import setuptools
import requests;

was classified as code/java, it is however unusual, but fully correct Python code.
Describe the solution you'd like
I'd like to be able to explicitly tell AssemblyLine what is the type of the given file.
Describe alternatives you've considered
Reporting every failure is nice, but it's hard to expect 100% correctness.
Additional context

So what you want is the ability to force Assemblyline to identify a file a certain way, but what is to say that the type that you are forcing is correct?

Nothing :D My idea is to have it as an optional mechanism, when I really know what I'm doing

(There is a method but it is hacky)

My head goes in the direction: set a yara identification rule with the hash of the file. Is it what are you thinking about? ;D
re:sample - this file was identified as code/java

Another reason to aim toward the goal of a better Identify is that if you have files that are wrongly identified, and you can specify it manually, you also assume that every other user will do the same. On top of it, if your file is extracted from an archive or dynamically downloaded from a server, then you won't be able to help Assemblyline do a good job on the original submission. You could resubmit that file on its own, but you may lose important information from the original submission for further processing. i.e. an eml file that contains a python script that writes a passworded zip file to the folder, the original submission may be able to use information from the eml to open the zip file, but by creating a new submission for the python script, you'll lose that context. That is without taking caching into account. That one is more subtle, but I believe the file type is not part of the caching key for the results.
I don't know how much of a problem it could be for those "one-off", but then one-off could become the norm for certain people. I guess if your instance of AL is used by a single or a few researchers, the whole "users" is not that much of an issue. But think of the global community! 😇
That python setup.py sample has both the mimetype and the magic pointing toward java, that's going to be a rough one. :(

I understand, and yeah, I really appreciate the community-oriented approach. It's really nice to see how you support the global effort with the AssemlyLine. I wanted to suggest a solution to an edge-case problem, but if you believe it may turn back against the community, then it's probably better to reject it :)
On the other hand

that's going to be a rough one. :(

:innocent:

Thanks for the sample! I'll work on identifying it correctly :) In the meantime, I'll close this ticket and comment again with the relevant PR.

This should do it https://github.com/CybercentreCanada/assemblyline-base/pull/1420

Thank you!


add a feature that plugin will use min value of image original width or user setting init witdh.

add a feature that plugin will use min value of image original width or user setting init witdh.

Thanks for your pull request!

@nicojeske What is this  new update supposed to do differently? It looks the same to me 😅


Backport Changes

Backport changes made for Tolino b300 devices
Add in possible additional change to BoardConfig.mk

@Ryogo-X
Hey!
So here are the changes I made. You should try them out.
The USB stuff (adb/mtp/none) using configfs works beautifully. And now you no longer need to bang at init.rc to get it to do what you want ;) But you'll need to change the productid/vendorid to match the nook.
BTW, I changed zImage-dtb to zImage because I believe zImage-dtb is incorrect, since (at least on the tolino) the dtb is not appended to the kernel (it works either way on the tolino, though).
I think not-hardcoding the rotation (in the EPD patch) is a generally good idea. TW_ROTATION := 90 (along with the various "flip" settings) worked well for me.
I threw in that debugfs stuff since the source I was copying init.recovery.usb.rc from had it as well... not really important either way I guess.
BTW, check out the cool "materialized" TWRP theme at my releases page. It's super sweet.

@iscilyas thank you. I don't have a test device on my hands right now, but I hope to merge back your changes and test them one day :)


snet: clean split between interface/basic types and implementation

WIP: I would like to get some feedback about snet interface design
and how it's split into pkg internal and snetutils. @shitz
Fixes #1504

This change is

@scrye I will fix the conflicts later once we finalize the design for snet and snetutils.

Most new packages no longer use implementations directly and instead use interfaces, relying on main to initialize implementations. This eliminates all import cycles in a cleaner way. Closing this since it no longer applies.
(Also #1833, #2460, and #2462 introduced new interfaces that other packages can use instead of the concrete implementations)


Refresh token

Refresh an expired access_token

We don't have any specification on how we can refresh an expired access_token.

This is draft documentation around the refresh token.
https://docs.google.com/document/d/1Hsk-ij1c_kO2ctonyfUPgLXMFDlvi3MK77DRbhEXUjI/edit#

Since the refresh token call is essentially the same API call to get access token, just with a different payload, would it be possible to modify https://github.com/nebulab/omniauth-bolt/blob/main/lib/omniauth/strategies/bolt.rb#L41 so that it can do either of the calls based on parameters provided?


Download config

Closes #29
TODO:

[ ] Tests
[x] Determine appropriate filename

I did some more thinking about the semantics of agio config and how it compares to the semantics of the submissions and projects subcommands.
The submissions subcommand shows a JSON blob with submission metadata.  The submissions --download flag downloads a copy of a submission's uploaded files.
The projects subcommand shows a JSON blob with limited project configuration metadata.
The current config  subcommand shows a JSON blob with extensive project configuration metadata.  In particular, what the autograder API calls "ag_test_suites".  It doesn't include the info that the projects subcommand produces.
I think the agio config --download is confusing because it's very different from agio submissions --download.  If we were going to implement a --download flag it should probably be to download the autograder support files AKA "instructor_files_needed" e.g. autograder-999a3f1b.tar.gz.
Option 1: New subcommand (current)
Continue to use a new subcommand.  Now that I think about agio config is a bit confusing because it's not obvious that we're getting a project config.  I mean, it could the config for a course or a single test suite.  Options could include agio project-config, agio project-test-suite-config, or something else.
Option 1: projects subcommand flag
We could implement the autograder testcase config dump as agio projects --verbose, agio projects --config, agio projects --test-suite-config, or something along those lines.
WDYT?

I like agio projects --config. Would you then add a --download and a --filename flag?

I like agio projects --config

OK, let's do it!

Would you then add a --download and a --filename flag?

Option 1: do nothing and let the user do agio projects --config > myconfig.json
Option 2: agio projects --output myconfig.json
Option 3: A global --output option much like --debug that sends any final output to a file.
Now that I think about it some more, I kinda like Option 3.  We could do the easy route for now (Option 1) and create an issue for Option 3.

Codecov Report

Merging #35 (4beb4be) into develop (651e59b) will decrease coverage by 0.72%.
The diff coverage is 40.00%.

@@             Coverage Diff             @@
##           develop      #35      +/-   ##
===========================================
- Coverage    70.48%   69.75%   -0.73%
===========================================
  Files            4        4
  Lines          454      453       -1
===========================================
- Hits           320      316       -4
- Misses         134      137       +3

Impacted Files
Coverage Δ

agiocli/__main__.py
76.14% <40.00%> (-2.95%)
:arrow_down:

Continue to review full report at Codecov.

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

Test is kinda underwhelming but given that this route just downloads a long JSON file I think it's appropriate.

This is merged but I think we need to update on Pypi now?

This is merged but I think we need to update on Pypi now?

Done!


Refactor to move up Producer/Consumer classes

Reason for Change

The previous MessageQueue class took parameters for both a Producer and Consumer, which was misleading since both needed different information.
We wanted to be able to instantiate the Consumer or Producer independently.

Change

Used namespacing to create a MessageQueue::Producer and MessageQueue::Consumer.
Added namespacing for the queue listener class as well.
Adjust tests
Update README.md.

Minor

Get TravisCI working against the most recent few rubies.
Add a TravisCI badge to the README.md.
Bump version number.
Add a huge warning to the readme.

@alieander Ready for re-review!

:dango:


Buildbot: 0.8.12 -> 0.8.14

Buildbot: 0.8.12 -> 0.8.14
Current Buildbot8 package is broken.  This commit fixes it.

Built on Linux
Tested execution of all binary files

cc @lancelotsix
Also see #17699

will wait for https://github.com/NixOS/nixpkgs/pull/17699/files to merge and rebase

Please rebase.

I've just removed buildbot_8 (#18192) since we now have the latest version, so I am closing this PR.


[Feature]: A way to print the function code to the console by default

Guidelines

[X] I agree to follow this project's Contributing Guidelines.

Description
A user was trying to print the raw function to the console to inspect it and expected that it would print the raw function code with a call like below.
match_spec()

But the code just referenced another function.
Problem
No
Proposed Solution
Make the below code print the raw function by default.
match_spec()

Alternatives Considered
No

This is a side effect of S3 methods and cannot be avoided; see https://stackoverflow.com/questions/19226816/how-can-i-view-the-source-code-for-a-function for details.
To look at the code anyway, use the following commands:
methods(match_spec)
OpenSpecy:::match_spec.default

The first line lists all methods of the function. The second line is used to get the code of one particular method, here the default one. Don't forget to put three colons after the package name.


Withdrawing balance can be considered when issuer transfer balance to gxc.null

When user try to withdraw more than cached balance, issuer should have a permission of revert overdrwan balance and take it.
In current progress, issuer should carry out two actions - deposit overdrawn balance and transfer it to gxc.null. It looks like can be saved if issuer is able to transfer withdrawing balance when not enough balance in deposit.

This issue is related to contracts instead of mainnet. Moved to Game-X-Coin/gxc.contracts.