Travis: point at rbx-3.84 on Trusty

This PR changes the Rubinius line in the CI matrix.

use 3.84
this only works on Travis' Trusty dist, so choose that, explicitly

This looks sane but we need this applied against all the other repos via PR (theres command line tools in this repo to help with that)

@JonRowe Cool.
Do you usually make a test-run with a single change to Travis config, and then apply the other PRs?

No, we usually just shotgun because its easier and we need to know what breaks where.

@JonRowe Is the order of actions:

make a change to this repo,
check it in via this PR
apply to each repo using the Rake tasks for that

Can you confirm?

Generally we apply changes to the repo via prs before merging any pr on this repo

I tried the rake task.

Current branch master is up to date.

==================================================
# rspec-core
----------------------------------------
git checkout -b update-travis-build-scripts-2017-09-07-for-master
Switched to a new branch 'update-travis-build-scripts-2017-09-07-for-master'
git add .
git commit -m 'Updated travis build scripts (from rspec-dev)'
[update-travis-build-scripts-2017-09-07-for-master 3068f07a] Updated travis build scripts (from rspec-dev)
 8 files changed, 11 insertions(+), 10 deletions(-)

==================================================
# rspec-expectations
----------------------------------------
git checkout -b update-travis-build-scripts-2017-09-07-for-master
Switched to a new branch 'update-travis-build-scripts-2017-09-07-for-master'
git add .
git commit -m 'Updated travis build scripts (from rspec-dev)'
[update-travis-build-scripts-2017-09-07-for-master 6cfb4248] Updated travis build scripts (from rspec-dev)
 8 files changed, 11 insertions(+), 10 deletions(-)

==================================================
# rspec-mocks
----------------------------------------
git checkout -b update-travis-build-scripts-2017-09-07-for-master
Switched to a new branch 'update-travis-build-scripts-2017-09-07-for-master'
git add .
git commit -m 'Updated travis build scripts (from rspec-dev)'
[update-travis-build-scripts-2017-09-07-for-master 4b3e4cb2] Updated travis build scripts (from rspec-dev)
 8 files changed, 11 insertions(+), 10 deletions(-)

==================================================
# rspec-rails
----------------------------------------
git checkout -b update-travis-build-scripts-2017-09-07-for-master
Switched to a new branch 'update-travis-build-scripts-2017-09-07-for-master'
./script/before_update_travis_build.sh
Backing up custom Travis config
./script/after_update_travis_build.sh
Restoring custom Travis config
git add .
git commit -m 'Updated travis build scripts (from rspec-dev)'
[update-travis-build-scripts-2017-09-07-for-master 6af2304e] Updated travis build scripts (from rspec-dev)
 7 files changed, 7 insertions(+), 7 deletions(-)

==================================================
# rspec-support
----------------------------------------
git checkout -b update-travis-build-scripts-2017-09-07-for-master
Switched to a new branch 'update-travis-build-scripts-2017-09-07-for-master'
git add .
git commit -m 'Updated travis build scripts (from rspec-dev)'
[update-travis-build-scripts-2017-09-07-for-master f1c07d8] Updated travis build scripts (from rspec-dev)
 8 files changed, 11 insertions(+), 10 deletions(-)

==================================================
# rspec-core
----------------------------------------
fatal: remote error:
  You can't push to git://github.com/rspec/rspec-core.git
  Use https://github.com/rspec/rspec-core.git
Push failed, force? (y/n)
n
git checkout master && git branch -D update-travis-build-scripts-2017-09-07-for-master
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.
Deleted branch update-travis-build-scripts-2017-09-07-for-master (was 3068f07a).

==================================================
# rspec-expectations
----------------------------------------
fatal: remote error:
  You can't push to git://github.com/rspec/rspec-expectations.git
  Use https://github.com/rspec/rspec-expectations.git
Push failed, force? (y/n)
n
git checkout master && git branch -D update-travis-build-scripts-2017-09-07-for-master
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.
Deleted branch update-travis-build-scripts-2017-09-07-for-master (was 6cfb4248).

==================================================
# rspec-mocks
----------------------------------------
fatal: remote error:
  You can't push to git://github.com/rspec/rspec-mocks.git
  Use https://github.com/rspec/rspec-mocks.git
Push failed, force? (y/n)
n
git checkout master && git branch -D update-travis-build-scripts-2017-09-07-for-master
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.
Deleted branch update-travis-build-scripts-2017-09-07-for-master (was 4b3e4cb2).

==================================================
# rspec-rails
----------------------------------------
fatal: remote error:
  You can't push to git://github.com/rspec/rspec-rails.git
  Use https://github.com/rspec/rspec-rails.git
Push failed, force? (y/n)
n
git checkout master && git branch -D update-travis-build-scripts-2017-09-07-for-master
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.
Deleted branch update-travis-build-scripts-2017-09-07-for-master (was 6af2304e).

==================================================
# rspec-support
----------------------------------------
fatal: remote error:
  You can't push to git://github.com/rspec/rspec-support.git
  Use https://github.com/rspec/rspec-support.git
Push failed, force? (y/n)
n
git checkout master && git branch -D update-travis-build-scripts-2017-09-07-for-master
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.
Deleted branch update-travis-build-scripts-2017-09-07-for-master (was f1c07d8).

Hmm of course, you could update origin on all your repos to match up with forks, or patch the code to push to your forks?

Fixed by @JonRowe in #188. Thanks!


consume latest cxplat and add undocked submodule

Consume the latest cxplat submodule and, recursively, the undocked submodule.
 We still need to work around a few shortcomings of the undocked submodule.

Waiting to recursively consume https://github.com/microsoft/undocked/pull/39


Feature extractor refactoring + more granular test-related config

My main goal going into this PR was to make the extractor-related unit tests less dependent on AWS. That way, GitHub CI could run more of those tests, so that the next round of package updates could be more thoroughly tested with GitHub CI (with multiple combos of package versions, which is onerous to test outside of CI).
To do that, I wanted to come up with some code that gave valid EfficientNet extractor weights, without actually having to load CoralNet's weights from its AWS infrastructure. The result of that is the EfficientNetExtractor.untrained_instance() method in this PR.
To get there, I found it easier to refactor out some of the pyparams passing which was going on in the extractor classes/functions, and this entailed moving most of the non-class functions into the Extractor classes. That naturally led to related refactors. I also ended up aiming farther than the original goal regarding unit test dependencies.
Overall, I'll summarize with what I added to the CHANGELOG:

Feature extractor class changes:

FeatureExtractor and its built-in subclasses should now be imported like from spacer.extractors import <class> instead of from spacer.extract_features import <class>.

High-level usage of FeatureExtractor instances is the same as before - invoking __call__() performs feature extraction on an image. However, subclass implementations should now generally define a patches_to_features() method instead of overriding __call__().

There is now a TorchExtractor class which has details that are specific to PyTorch but not to EfficientNet. So, it's suitable as a starting point for a custom PyTorch extractor that uses another type of network. EfficientNetExtractor now inherits from TorchExtractor.

There are now CROP_SIZE and BATCH_SIZE class-level variables available.

Config and test changes:

Some former usages of TEST_BUCKET have been changed to CN_FIXTURES_BUCKET, to more clearly denote test fixtures that are currently only available to CoralNet devs.

The remaining usages of TEST_BUCKET are now usable by anyone with an AWS account. This can be any S3 bucket that you have read and write access to.

TEST_EXTRACTORS_BUCKET is now known as CN_TEST_EXTRACTORS_BUCKET, again denoting fixtures currently only available to CoralNet devs.

Related to these changes, now more tests are runnable without needing CoralNet AWS credentials. More tests are runnable in GitHub Actions CI, as well (even though that doesn't use AWS at all).

And the result in CI is: 42 skipped tests out of 193, whereas it was previously 50 skipped tests out of 194 (PR #110).


Loading pretrained models

Thank you for your consideration
I've tried to load your model_final_beta.pth as a pretrained model for training on my custom dataset. I changed the WEIGHTS in the config file like this

but I receive this message

Did I do the righting for loading a pre-trained model? If not, can you help me with the right way to do so. Thank you so much.

My bad. I think I can load the pretrained model now. However, I've had this error, which I didn't have when training from scratch (with R-50.pkl)

Also, I've searched for a solution suggesting that I should change some values in configs. I've changed them as follow:

but the problem still occurs. Can you help me with this issue? Thank you a lot.

Sorry for not clarifying the question. I meant that the validation during the training causes the error.


Using the 1.1 DCAP client without having $HOME defined causes a deadlock

Trace below. This isn't right, at worst an error should be returned, and at best it should proceed without the cache.
#0  0x00007f65e325d7e7 in __pthread_once_slow () from /lib/x86_64-linux-gnu/libpthread.so.0
#1  0x00007f65e183ef39 in ?? () from /usr/lib/libdcap_quoteprov.so
#2  0x00007f65e1840935 in void std::call_once<void (&)()>(std::once_flag&, void (&)()) () from /usr/lib/libdcap_quoteprov.so
#3  0x00007f65e183f698 in ?? () from /usr/lib/libdcap_quoteprov.so
#4  0x00007f65e183fdf1 in local_cache_get(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) () from /usr/lib/libdcap_quoteprov.so
#5  0x00007f65e1833dd6 in sgx_ql_get_quote_config () from /usr/lib/libdcap_quoteprov.so
#6  0x00007f65e3d63889 in ?? () from /usr/lib/x86_64-linux-gnu/libsgx_dcap_ql.so.1
#7  0x00007f65e3d6495b in ?? () from /usr/lib/x86_64-linux-gnu/libsgx_dcap_ql.so.1
#8  0x00007f65e3d6337d in ?? () from /usr/lib/x86_64-linux-gnu/libsgx_dcap_ql.so.1
#9  0x0000000000475492 in oe_sgx_qe_get_quote_size (quote_size=0x7f65e1a4a620) at ../host/sgx/sgxquote.c:32
#10 0x0000000000471f7a in sgx_get_quote_size (quote_size=<optimized out>) at ../host/sgx/quote.c:178
#11 sgx_get_quote (report=<optimized out>, quote=<optimized out>, quote_size=<optimized out>) at ../host/sgx/quote.c:201
#12 0x00000000004718f9 in HandleGetQuote (arg_in=<optimized out>) at ../host/sgx/ocalls.c:135
#13 0x000000000046ad50 in _handle_ocall (enclave=<optimized out>, tcs=<optimized out>, func=<optimized out>, arg_in=<optimized out>, arg_out=<optimized out>) at ../host/sgx/calls.c:485
#14 __oe_dispatch_ocall (arg1=985171008421888, arg2=<optimized out>, arg1_out=<optimized out>, arg2_out=<optimized out>, tcs_=<optimized out>, enclave=<optimized out>) at ../host/sgx/calls.c:606
#15 0x000000000047b058 in __oe_host_stack_bridge () at ../host/sgx/linux/enter.S:271
#16 0x000000000047afa0 in __morestack () at ../host/sgx/linux/enter.S:144
#17 0x000000000046b8d6 in _do_eenter (enclave=<optimized out>, tcs=<optimized out>, aep=<optimized out>, code_in=OE_CODE_ECALL, arg_in=<optimized out>, func_in=<optimized out>,
    code_out=<optimized out>, func_out=<optimized out>, result_out=<optimized out>, arg_out=<optimized out>) at ../host/sgx/calls.c:228
#18 oe_ecall (enclave=<optimized out>, func=<optimized out>, arg=<optimized out>, arg_out_ptr=<optimized out>) at ../host/sgx/calls.c:775
#19 0x000000000046bc36 in oe_call_enclave_function_by_table_id (enclave=0x7f65e1a4a620, table_id=<optimized out>, function_id=<optimized out>, input_buffer=<optimized out>, input_buffer_size=202,
    output_buffer=0x1, output_buffer_size=<optimized out>, output_bytes_written=<optimized out>) at ../host/sgx/calls.c:852
#20 0x000000000046be06 in oe_call_enclave_function (enclave=0x7f65e1a4a620, function_id=<optimized out>, input_buffer=0x7f65e325d7e7 <__pthread_once_slow+119>, input_buffer_size=202,
    output_buffer=0x1, output_buffer_size=0, output_bytes_written=<optimized out>) at ../host/sgx/calls.c:890
#21 0x000000000046a603 in enclave_create_node (enclave=0x89c640, _retval=0x7ffd8d646e07, config=<optimized out>, node_cert=0x10a0030 "", node_cert_size=4096, node_cert_len=0x7ffd8d646e18,
    quote=0x10a1040 "", quote_size=10240, quote_len=0x7ffd8d646e10, recover=<optimized out>) at ccf_u.cpp:91
#22 0x00000000004157dc in host::Enclave::create_node (this=<optimized out>, config=..., node_cert=std::vector of length 4096, capacity 4096 = {...},
    quote=std::vector of length 10240, capacity 10240 = {...}, recover=false) at ../src/host/enclave.h:88
#23 0x000000000040be69 in main (argc=9025584, argv=0x1000000) at ../src/host/main.cpp:252

To clarify, 1.0 does not exhibit this behaviour.

I'm hitting the same, in my case because running this inside a Docker container where $HOME=/ and then it fails with:

dcap_quoteprov: [ERROR]: Unknown exception thrown, error: Error creating directory '//.az-dcap-client/': Permission denied

@msft-jonnadul

+1

Ah interesting, just for context the .azure-dcap-client/ folder is created to house the local cache of pck certificates for faster quote generation. This was not an issue in 1.0 because local caching was shipped with 1.1.
Currently the logic in the Azure DCAP is such that if a AZDCAP_CACHE environment variable is specified then it'll house the local cache there if not it'll default to HOME. If HOME is undefined, then it'll actually throw a runtime exception but in this case it is defined but to /, which invoked this permissions issue.
To unblock, you can pass in the AZDCAP_CACHE environment variable to some permissible location into your Docker instance. We can work on a fix where if HOME is undefined or set to / we'll just not attempt to do any local caching.

This is addressed here: https://github.com/microsoft/Azure-DCAP-Client/pull/97

@achamayou do you mind rechecking and closing with latest?

@deschuma I can confirm that this is fixed in 1.4.


C# Language Reference keywords: ref

Starting in C# 7, the ref keyword can be used on local variables and method returns, in addition to method parameters and arguments.

@rpetrusha Is this one done already? Can we close it?


DBT failing to execute CREATE TABLE command because it assigned a column DEFAULT value

Is this a new bug in dbt-core?

[X] I believe this is a new bug in dbt-core
[X] I have searched the existing issues, and I could not find an existing issue for this bug

Current Behavior
I am using DBT for Data Testing. Over here I have a few not_null checks on delta tables which are in databricks and I am running them by using the below command:
dbt build --profile {our_data_testing_profile} -t {our_env} --select "models/models_to_test+" --store-failures| tee dbt_issues.log || true
Here I am storing the output of data testing into delta tables in databricks which are under dbt_test__audit schema. While doing it we are getting the below error stating:
Runtime Error in test our_internal_test_name WRONG_COLUMN_DEFAULTS_FOR_DELTA_FEATURE_NOT_ENABLED] Failed to execute CREATE TABLE command because it assigned a column DEFAULT value, but the corresponding table feature was not enabled. Please retry the command again after executing ALTER TABLE tableName SET
 TBLPROPERTIES('delta.feature.allowColumnDefaults' = 'supported')

On debugging I found that it dbt is using the below query to create table in dbt_test__audit schema from dbt.log file:

This is occurring because databricks does not let us create a table which is based on an empty dataframe.
Output of the select query:

To resolve in query we need to add the below property in the above query which is suggested by databricks as well in the error message. After this the query works as per expectations:

Even after creating the above table when I rerun the dbt test then it fails because it uses the query in first screenshot above which does not have the TBLPROPERTIES command in it. I searched in dbt documentations but did not find any option that let's me add table properties. I I run only the dbt build query then the data testing works without any error but when I run it with commands to store the results then it fails due to above TBLPROPERTIES not present in the create table query generated by dbt-core.
Expected Behavior
The expected behavior can be divided in two parts:

DBT should add this table property by default in the create table query for databricks as a source.
There should be an option to configure table properties when we are storing the failures.

Steps To Reproduce

Configure a not null check on a delta table in databricks which will pass.

Run the below command: dbt build --profile {your_data_testing_profile} -t {your_environment} --select "models/models_to_test+" --store-failures| tee dbt_issues.log || true

Make sure that the target for storing the results is databricks.  Secondly the source table which is undergoing data test has a column which has default value assigned to it like below:

You will get the below error for your test case:

Runtime Error in test our_internal_test_name WRONG_COLUMN_DEFAULTS_FOR_DELTA_FEATURE_NOT_ENABLED] Failed to execute CREATE TABLE command because it assigned a column DEFAULT value, but the corresponding table feature was not enabled. Please retry the command again after executing ALTER TABLE tableName SET
 TBLPROPERTIES('delta.feature.allowColumnDefaults' = 'supported')

Relevant log output
No response
Environment
- OS: Ubuntu 22.04.4 LTS
- Python: 3.8.18
- dbt-core:1.8.4

Which database adapter are you using with dbt?
other (mention it in "Additional Context")
Additional Context
The adapter used is Databricks

Hello @dbeatty10 ,
Any updates on the above issue? Feel free to reach out to me in case of any queries. Also, I'll be happy to assist you in resolving the above and contribute to this repo :)

@shloktech curious if you would be willing to share with me why you're using the dbt-spark adapter for Databricks rather than the dbt-databricks adapter?

Hello @amychen1776 , I am using dbt-databricks 1.8.4 at my end. Below is a sample of my profiles.yml:
data_testing:
  outputs:
    dev:
      host: databricks_workspace
      http_path: path_to_warehouse
      schema: my_schema
      token: xxxx
      **type: databricks**
      connect_timeout: xx
      connect_retries: xx
      threads: x
  target: dev

cc: @dbeatty10

Oh thank you - @dpguthrie this issue needs to be tracked with dbt-databricks then.

Hello @amychen1776 , @dpguthrie can you please transfer the issue to dbt-databricks repo as I don't have the subsequent write access in either of the repo:

Github article: https://docs.github.com/en/issues/tracking-your-work-with-issues/transferring-an-issue-to-another-repository
cc: @dbeatty10

@shloktech since dbt-databricks is in a different GitHub organization, we can't transfer it to that repo either. So I'm going to close this issue and you'll need to open up a new issue there instead.

Thank you @dbeatty10 created a issue in dbt-databricks: https://github.com/databricks/dbt-databricks/issues/758


Extend the time frame for the crash bug summary

Resoles #2155
Checklist

[ ] Type annotations added to new functions
[ ] Docs added to functions touched in main classes
[x] Dry-run produced the expected results
[ ] The to-be-announced tag added if this is worth announcing

Example from the dry-run
Crash report: https://crash-stats.mozilla.org/report/index/a1baa457-5a02-419c-94d5-cce680230624
MOZ_CRASH Reason: MOZ_DIAGNOSTIC_ASSERT(0)
Top 10 frames of crashing thread:
0  firefox-bin  arena_t::ArenaRunRegAlloc  memory/build/mozjemalloc.cpp:2504
0  firefox-bin  arena_t::MallocSmall  memory/build/mozjemalloc.cpp:3235
0  firefox-bin  arena_t::Malloc  memory/build/mozjemalloc.cpp:3281
0  firefox-bin  BaseAllocator::malloc  memory/build/mozjemalloc.cpp:4485
0  firefox-bin  Allocator<MozJemallocBase>::malloc  memory/build/malloc_decls.h:51
0  firefox-bin  PageMalloc  memory/replace/phc/PHC.cpp:1197
0  firefox-bin  replace_malloc  memory/replace/phc/PHC.cpp:1201
0  firefox-bin  Allocator<ReplaceMallocBase>::malloc  memory/build/malloc_decls.h:51
0  firefox-bin  malloc  memory/build/malloc_decls.h:51
1  libxul.so  nsStringBuffer::Alloc  xpcom/string/nsStringBuffer.cpp:68

Here are some insights about the crash signature based on the last 2 months of Nightly data:

Crash kind: Browser Crash
Is startup crash: No
Has user comments: No
Is null crash: Yes - 4 out of 6 crashes happened on null or near null memory address
Is use after free crash: No

By analyzing the backtrace, the regression may have been introduced by a patch [1] to fix Bug 1836879.
[1] https://hg.mozilla.org/mozilla-central/rev?node=2e153261c79c
:bwc, since you are the author of the potential regressor, could you please take a look?


Add blur amount

first of all thank you guys for making this, it's a great tool to build beautiful screens.
I was wondering if you could add blur amount support, something like:
https://unsplash.it/200/300/?blur=5px
When I have some time I can check out the code and see about submitting a PR, but just thought I'd ask.

1+ on this, blur is kind of extreme.
Text option would also be great like placehold.it

I'll need to see how this scales, but will try to add it during the rewrite currently being done 👍

This has now been added: You can specify a blur amount between 1 and 10 to adjust the amount, eg https://picsum.photos/200?blur=2


Added some examples

As said in #4, examples do not work. The whole lib/ folder is missing. I add a working example using CDN's, and another not-working example to work on.
I guessed the libraries version numbers looking at the original code on kingcode.com.

Dear Kasper Olesen, are you still interested in this project? if not, could you please let me a collaborator of yours for this project?


Add a real world example to the docs.

Testing with mocks can have lots of subtle cases where it's not clear how to properly use them. A Guide as discussed in #10 would help somewhat, but many approaches are better explained in the context of real code. Therefore, as a complement to the Guide and Reference, there should be some sort of "real world examples" section where the mock package is used to build a real app, small in scope, in a literate-programming fashion. As testing problems naturally occur while developing the app, the study can suggest various mocking approaches and when to use them.

Possible name/term: The Mock Walkthrough


Car Issue:

Is there an existing issue for this?

[X] I have searched both the existing open issues & recently closed issues and did not find a duplicate of this issue.

Version of the Tesla component
3.20.4
Version of the Tesla car software
2024.2.7
Model
Model Y
Current Behavior
I have an authentication issue. I've removed the integration due to the (re-)authentication problem and added it again. After the adding process (using proxy, adding refresh token) the integration says "success". But no car is added and the integration remains in "could not authenticate" error.
Expected Behavior
I expect that the car in my tesla account is added to HA as device with all his entities.
Debug logs
2024-03-22 11:18:08.452 DEBUG (MainThread) [teslajsonpy.connection] Token expiration in -19805 days, 12:41:52
2024-03-22 11:18:08.452 DEBUG (MainThread) [teslajsonpy.connection] Oauth expiration detected
2024-03-22 11:18:08.452 DEBUG (MainThread) [teslajsonpy.connection] Refreshing access token with refresh_token
2024-03-22 11:18:08.756 DEBUG (MainThread) [teslajsonpy.connection] Unable to refresh sso oauth token
2024-03-22 11:18:08.756 DEBUG (MainThread) [teslajsonpy.connection] Auth returned {'error': 'login_required', 'error_description': 'Login required', 'referenceID': 'c217a33d-f0ee-4eec-9681-02f8527186a5-1711102688648'}
2024-03-22 11:18:08.757 WARNING (MainThread) [homeassistant.config_entries] Config entry<EMAIL_ADDRESS>for tesla_custom integration could not authenticate

Anything else?
No response

This is happening to a lot of people while using the reauthentication config flow; there's a bug where it seems to reuse the same refresh token twice, which is no longer allowed.  The workaround is to delete the car and add it back again.  But you said you've already done that, so I don't know what the issue is.

To be clear here, with "to delete the car" you mean the integration in HA?

A few days ago I made a major change to the proxy addon. Now it no longer generates refresh tokens. Please update, then delete this integration and add it back, and use Tesla Auth app to generate the refresh token, and let us know if this is still an issue.

I removed the addon today and reinstalled it again. Configured it point to point. Removed the tesla integration and added the car again, using the refresh token (from Chrome Tesla Token addon). Configuration ended without an error, but the integration still remains in "could not authenticate". Adding the car without the proxy works without any issues, so I assume the fault in the proxy, but there is no error logged (enabled debug mode).

Here's some more debug info from the integration:
2024-03-30 10:48:25.708 DEBUG (MainThread) [custom_components.tesla_custom.config_flow] Running in supervised environment 2024-03-30 10:48:25.842 DEBUG (MainThread) [custom_components.tesla_custom.config_flow] Found addon: c03d64a7_tesla_http_proxy 2024-03-30 10:48:50.135 DEBUG (MainThread) [custom_components.tesla_custom.config_flow] Credentials successfully connected to the Tesla API 2024-03-30 10:48:50.137 DEBUG (MainThread) [custom_components.tesla_custom] <ssl.SSLContext object at 0x7fa6ad0f6050> 2024-03-30 10:48:50.178 DEBUG (MainThread) [teslajsonpy.controller] 552 endpoints loaded 2024-03-30 10:48:50.179 DEBUG (MainThread) [teslajsonpy.connection] Token expiration in -19813 days, 13:11:10 2024-03-30 10:48:50.179 DEBUG (MainThread) [teslajsonpy.connection] Oauth expiration detected 2024-03-30 10:48:50.179 DEBUG (MainThread) [teslajsonpy.connection] Refreshing access token with refresh_token 2024-03-30 10:48:51.406 DEBUG (MainThread) [teslajsonpy.connection] Received bad auth response:  2024-03-30 10:48:51.407 DEBUG (MainThread) [teslajsonpy.connection] Unable to refresh sso oauth token 2024-03-30 10:48:52.880 DEBUG (MainThread) [teslajsonpy.connection] Token expiration in -19813 days, 13:11:08 2024-03-30 10:48:52.880 DEBUG (MainThread) [teslajsonpy.connection] Oauth expiration detected 2024-03-30 10:48:52.880 DEBUG (MainThread) [teslajsonpy.connection] Refreshing access token with refresh_token 2024-03-30 10:48:54.895 DEBUG (MainThread) [teslajsonpy.connection] Received bad auth response:  2024-03-30 10:48:54.895 DEBUG (MainThread) [teslajsonpy.connection] Unable to refresh sso oauth token 2024-03-30 10:48:57.829 DEBUG (MainThread) [teslajsonpy.connection] Token expiration in -19813 days, 13:11:03 2024-03-30 10:48:57.829 DEBUG (MainThread) [teslajsonpy.connection] Oauth expiration detected 2024-03-30 10:48:57.830 DEBUG (MainThread) [teslajsonpy.connection] Refreshing access token with refresh_token 2024-03-30 10:48:58.664 DEBUG (MainThread) [teslajsonpy.connection] Received bad auth response:  2024-03-30 10:48:58.664 DEBUG (MainThread) [teslajsonpy.connection] Unable to refresh sso oauth token 2024-03-30 10:49:02.850 DEBUG (MainThread) [teslajsonpy.connection] Token expiration in -19813 days, 13:10:58 2024-03-30 10:49:02.850 DEBUG (MainThread) [teslajsonpy.connection] Oauth expiration detected 2024-03-30 10:49:02.850 DEBUG (MainThread) [teslajsonpy.connection] Refreshing access token with refresh_token 2024-03-30 10:49:04.260 DEBUG (MainThread) [teslajsonpy.connection] Received bad auth response:  2024-03-30 10:49:04.260 DEBUG (MainThread) [teslajsonpy.connection] Unable to refresh sso oauth token 2024-03-30 10:49:05.180 DEBUG (MainThread) [teslajsonpy.connection] Token expiration in -19813 days, 13:10:55 2024-03-30 10:49:05.180 DEBUG (MainThread) [teslajsonpy.connection] Oauth expiration detected 2024-03-30 10:49:05.180 DEBUG (MainThread) [teslajsonpy.connection] Refreshing access token with refresh_token 2024-03-30 10:49:06.181 DEBUG (MainThread) [teslajsonpy.connection] Received bad auth response:  2024-03-30 10:49:06.181 DEBUG (MainThread) [teslajsonpy.connection] Unable to refresh sso oauth token 2024-03-30 10:49:06.182 WARNING (MainThread) [homeassistant.config_entries] Config entry<EMAIL_ADDRESS>for tesla_custom integration could not authenticate

In debug mode, the proxy should log every incoming HTTP request, like this:
Received GET request for /api/1/products
2024-03-29T21:23:48-07:00 [debug]
If you don’t see that, then I guess the request is getting lost on its way to the addon somehow.
Which chrome app are you using to make the token? It needs to support Fleet API.

Which chrome app are you using to make the token? It needs to support Fleet API.

I'm using Access Token Generator for Tesla: https://chromewebstore.google.com/search/Access Token Generator for Tesla

The source code for that app shows it's using the old Owner API, that will not work here.
If you don't have a Mac or iOS device to run the app I linked above, the best alternative I've seen is the Python script someone shared here: https://github.com/llamafilm/tesla-http-proxy-addon/discussions/69

Hi Elliott,
this is it :-) The refresh token from the app (I used the iPhone from my son) did the job. Thanks a lot, I didn't imagine that the tesla tokens are so different.


set options minDate not working with timepicker

Hi,
this.setOptions({
minDate:start_date
}),
timepicker:true
minDate:YOURDATE does not work when you use timepicker and is set to current "now" date.

Did you have any luck with this?  Getting the same issue


How to run polars dataframe methods on large FASTQ files in a memory efficient way

As I mentioned in this comment, I'm interested in applying "groupby" function on polars dataframe. My goal is counting all unique sequences in a FASTQ file. I have a few questions:

How can I take advantage of biobear to read large FASTQ files without loading the whole data into memory?
How can I use multiprocessing to accelerate the computation time? e.g. https://docs.pola.rs/user-guide/misc/multiprocessing/

Thanks for you time.

related https://github.com/wheretrue/biobear/issues/89 and https://github.com/ArcInstitute/ScreenPro2/issues/28

Thanks again for the filing these issues.
For the first, without loading everything into memory, you can stream through the RecordBatchReader from pyarrow like so:
import biobear as bb

session = bb.connect()

result = session.sql("SELECT name, sequence FROM fastq_scan('./624-02_lib26670_nextseq_n0240_151bp_R1.fastq.gz')")

rbr = result.to_arrow_record_batch_reader()

for batch in rbr:
    chunk_df = pl.from_arrow(batch)

This would stream arrow record batches from disk, and you'd work on chunks of 8192 records as polars dfs.
Like I mentioned in the other issue, whatever you push down into SQL will be lazy and use all of your cores (except the fastq file IO). So if you can do more there, you'll get better performance.
Going back to the parquet point, if you initially write the data to parquet, you can use pl.scan_parquet as is described in the polars docs, and you'll also avoid loading everything into memory https://docs.pola.rs/user-guide/lazy/using/. This would give you multiprocessing during the file scan and subsequent computation.

FWIW, I'm look at implementing multithreaded readers for some of the common bioinformatic formats, but it's complex as you might imagine.

Hey @tshauck – thanks for your response.
One more technical question; should a user "close" / "disconnect" session after doing this? I didn't see that in any of your examples so I wanted to confirm.
session = bb.connect()

Hey @abearab -- sorry for the confusion, you don't need to worry about closing or disconnecting. It's implicitly local, but at some point may take an external server to connect to.

I see, thanks for clarification. Is there any way to allocate the resources? For instance, can we say just use X number of CPUs and Y amount of memory?

Currently it's possible to set the number of CPUs used for a few different parts, mostly that control the underlying query engine's (Apache DataFusion) parallelism...

You can modify this within a session like:
In [1]: import biobear as bb

In [2]: s = bb.connect()

In [3]: s.execute("SET datafusion.execution.target_partitions=1")

In [5]: s.sql("SHOW datafusion.execution.target_partitions").to_polars()
Out[5]:
shape: (1, 2)
┌───────────────────────────────────┬───────┐
│ name                              ┆ value │
│ ---                               ┆ ---   │
│ str                               ┆ str   │
╞═══════════════════════════════════╪═══════╡
│ datafusion.execution.target_part… ┆ 1     │
└───────────────────────────────────┴───────┘

In [6]: s.execute("SET datafusion.execution.target_partitions=4")

In [7]: s.sql("SHOW datafusion.execution.target_partitions").to_polars()
Out[7]:
shape: (1, 2)
┌───────────────────────────────────┬───────┐
│ name                              ┆ value │
│ ---                               ┆ ---   │
│ str                               ┆ str   │
╞═══════════════════════════════════╪═══════╡
│ datafusion.execution.target_part… ┆ 4     │
└───────────────────────────────────┴───────┘


svml: optimize {mm256,mm512}cdfnorm{ps,pd}

Looks good, thanks!
I'm going to merge this as it is, but if you want a little speed bost a good optimization might be to use FMA instructions here instead of separate multiply + add.


OpenSimulator Inventory Archives

if there's time please update  "OpenSimulator Inventory Archives" (IAR)  this is still not working...
thanks

Duplicate of: https://github.com/InWorldz/halcyon/issues/10


procon.hpp include guard is broken

Second line has a space in it:
#ifndef PROCON_DRIVER_H
#define PROCON DRIVER_H

:-O Thanks!


Message from gmail with wrong UID

Describe the bug
Messages are loaded but cannot be searched individually, the problem is with the UID, although it is removed from the inbox, when searching the message it is not found and this is not related to the fact that the identifier is dynamic.
Messages with a low UID like 200 return the wrong content and messages with a high UID like 200,000, which is what I'm looking for, are not found, all the ids are wrong and that only happens with Gmail.
Used config
The default configuration is used, the only change was the sorting way going from ASC to DESC.
Code to Reproduce
Follow the procedure below

Log into a gmail account and enable the less secure app option for IMAP login:
https://myaccount.google.com/lesssecureapps

Configure the package with the account credentials as per documentation.

Get the UID of a message:

$account = \Webklex\IMAP\Facades\Client::account('default')->connect(); // view:  https://github.com/Webklex/laravel-imap/issues/419
$folder = $account->getFolders()->all()[0]; // Select inbox
$message = $folder->messages()->all()->setFetchBody(false)->limit(1)->get();  // Retrieve all messages and return only 1
foreach($message as $ms){
return $ms->getUID();
}

Locate and display the respective message for the user to read:

$uid = '200.000'; // dynamically using or equivalent: $_GET["name"]
$account = \Webklex\IMAP\Facades\Client::account('default')->connect(); // view:  https://github.com/Webklex/laravel-imap/issues/419
$folder = $account->getFolders()->all()[0]; // Select inbox
$message = $folder->query()->where('uid', $uid)->limit(1)->get(); // Find a message with the same UID
//print($message); //Throw an exception because the content is an array or object, use dd()
dd($message);

Expected behavior
The expected behavior is to provide a valid, localizable UID that can be used on the next screen to make the respective message available for reading.
Screenshots

Desktop / Server (please complete the following information):

OS: Linux CentOS 7
PHP: 7.4
Version 2.4.0

Additional context
Gmail documentation for UID message location: https://developers.google.com/gmail/imap/imap-extensions#access_to_the_gmail_unique_message_id_x-gm-msgid

Hi @igmacedo ,
many thanks for posting it here. I'm currently playing around with it, with some success. Do you know if the X-GM-MSGID can be used as an UID alternative?
For example like this:
C: A003 X-GM-MSGID COPY<PHONE_NUMBER>230334865 foo
S: A003 OK COPY completed

..instead of:
C: A003 COPY 2:4 foo
S: A003 OK COPY completed

This is my little test setup:
$client = $cm->make([
    'host'  => 'imap.gmail.com',
    'port'  => 993,
    'encryption'    => 'ssl',
    'validate_cert' => true,
    'username' => 'username',
    'password' => 'password',
    'protocol' => 'imap',
]);
$client->connect();

$con = $client->getConnection();
$con->enableDebug();

var_dump($con->id(["name", "php-imap", "version", "3.0.0", "vendor", "company", "contact", "someone"]));

$folder = $client->getFolder("INBOX");
$client->openFolder($folder->path);
var_dump($con->fetch(["X-GM-MSGID"], 1));

Result:
>> TAG2 ID ("name" "php-imap" "version" "3.0.0" "vendor" "company" "contact" "someone")
<< ID ("name" "GImap" "vendor" "Google, Inc." "support-url" "https://support.google.com/mail" "version" "gmail_imap_211029.07_p0" "remote-host" "<MY_IP>")
<< OK Success

>> TAG3 LIST "" "*"
<< LIST (\HasNoChildren) "/" "INBOX"
<< LIST (\HasChildren \Noselect) "/" "[Gmail]"
<< LIST (\All \HasNoChildren) "/" "[Gmail]/Alle Nachrichten"
<< LIST (\Drafts \HasNoChildren) "/" "[Gmail]/Entw&APw-rfe"
<< LIST (\HasNoChildren \Sent) "/" "[Gmail]/Gesendet"
<< LIST (\Flagged \HasNoChildren) "/" "[Gmail]/Markiert"
<< LIST (\HasNoChildren \Trash) "/" "[Gmail]/Papierkorb"
<< LIST (\HasNoChildren \Junk) "/" "[Gmail]/Spam"
<< LIST (\HasNoChildren \Important) "/" "[Gmail]/Wichtig"
<< OK Success

>> TAG4 SELECT "INBOX"
<< FLAGS (\Answered \Flagged \Draft \Deleted \Seen $NotPhishing $Phishing)
<< OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen $NotPhishing $Phishing \*)] Flags permitted.
<< OK [UIDVALIDITY 1] UIDs valid.
<< 10 EXISTS
<< 0 RECENT
<< OK [UIDNEXT 11] Predicted next UID.
<< OK [HIGHESTMODSEQ 19015]
<< OK [READ-WRITE] INBOX selected. (Success)

>> TAG5 FETCH 1 (X-GM-MSGID)
<< 1 FETCH (X-GM-MSGID<PHONE_NUMBER>719176764)
<< OK Success

Here is a custom search:
$folder = $client->getFolder("INBOX");
$message = $folder->query()->where("CUSTOM X-GM-MSGID", "1644288497719176764")->limit(1)->get()->first();
$header = $message->header;
var_dump($message->uid, $header->get("x_google_id"), $header->get("message_id"));

Result:
>> TAG2 ID ("name" "php-imap" "version" "3.0.0" "vendor" "company" "contact" "someone")
<< ID ("name" "GImap" "vendor" "Google, Inc." "support-url" "https://support.google.com/mail" "version" "gmail_imap_211029.07_p0" "remote-host" "<MY_IP>")
<< OK Success

>> TAG3 LIST "" "*"
<< LIST (\HasNoChildren) "/" "INBOX"
<< LIST (\HasChildren \Noselect) "/" "[Gmail]"
<< LIST (\All \HasNoChildren) "/" "[Gmail]/Alle Nachrichten"
<< LIST (\Drafts \HasNoChildren) "/" "[Gmail]/Entw&APw-rfe"
<< LIST (\HasNoChildren \Sent) "/" "[Gmail]/Gesendet"
<< LIST (\Flagged \HasNoChildren) "/" "[Gmail]/Markiert"
<< LIST (\HasNoChildren \Trash) "/" "[Gmail]/Papierkorb"
<< LIST (\HasNoChildren \Junk) "/" "[Gmail]/Spam"
<< LIST (\HasNoChildren \Important) "/" "[Gmail]/Wichtig"
<< OK Success

>> TAG4 SELECT "INBOX"
<< FLAGS (\Answered \Flagged \Draft \Deleted \Seen $NotPhishing $Phishing)
<< OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen $NotPhishing $Phishing \*)] Flags permitted.
<< OK [UIDVALIDITY 1] UIDs valid.
<< 10 EXISTS
<< 0 RECENT
<< OK [UIDNEXT 11] Predicted next UID.
<< OK [HIGHESTMODSEQ 19015]
<< OK [READ-WRITE] INBOX selected. (Success)

>> TAG5 UID SEARCH X-GM-MSGID<PHONE_NUMBER>719176764
<< SEARCH 1
<< OK SEARCH completed (Success)

>> TAG6 UID FETCH 1 (FLAGS)
<< 1 FETCH (UID 1 FLAGS ())
<< OK Success

>> TAG7 UID FETCH 1 (RFC822.HEADER)
<< 1 FETCH (UID 1 RFC822.HEADER {4833}
<< Delivered-To: my_email\r\n
<< Received: by <IP> with SMTP id c7csp5527971ltc; Tue, 10 Sep\r\n
<< ...
<< OK Success

As you can see in TAG7 im using the UID obtained from the search. The big question however is still the same - what else can you do with the X-GM-MSGID? If you have any ideas or thoughts, please feel free to share them with us :)
Best regards,

Hi @igmacedo ,
I did some more messing around. Please give the current master a try;
$client = $cm->make([
    'host'  => 'imap.gmail.com',
    'port'  => 993,
    'encryption'    => 'ssl',
    'validate_cert' => true,
    'username' => 'username',
    'password' => 'password',
    'protocol' => 'imap',
    "extensions" => ["X-GM-MSGID", "X-GM-THRID", "X-GM-LABELS"], // auto. fetch these extensions
]);

$client->connect();
$con = $client->getConnection();
//$con->enableDebug();

$folder = $client->getFolder("INBOX");

// Handle custom gmail labels
$client->openFolder($folder->path);
$con->store(["foo"], $uid = 1, null, "+", false, IMAP::ST_UID, "X-GM-LABELS"); // add a label
$con->store(["foo"], $uid = 1, null, "-", false, IMAP::ST_UID, "X-GM-LABELS"); // remove a label

// Advanced querying - fetch additional information by providing a list of supported extensions
$message = $folder->query(["X-GM-MSGID", "X-GM-THRID", "X-GM-LABELS"])->all()->limit(1)->get()->first();
$header = $message->getHeader();

$uid = $message->uid;
$x_google_id = $header->get("x_google_id");
$message_id = $header->get("message_id");
// Access fetched extensions
$MSGID = $header->get("X-GM-MSGID");
$THRID = $header->get("X-GM-THRID");
$LABELS = $header->get("X-GM-LABELS");

// Custom queries
$message = $folder->query()->where("CUSTOM X-GM-MSGID", $MSGID)->get()->first();

$thread = $folder->query()->where("CUSTOM X-GM-THRID", $THRID)->get();

$messages = $folder->query()->where("CUSTOM X-GM-LABELS", "foo")->get();

Best regards,

Thanks for the answer.
I created a project from scratch to test your suggestions and discard any chance of conflict with other packages and I arrived with the result:

The first method didn't work.

The second of the extension works fine, finds the message with msgid, but not with UID...

Do you have any suggestions for identifying these Google servers? Gmail will need special handling and people may be using a Gsuite corporate account; in this case, the server will not be imap.gmail.com, but imap.mydomain.com, all other imap servers work fine with UID, the problem is specific with Google
The new extension will be welcome.
Best regards.

Hi @igmacedo ,
I'm not sure what problem you are describing.

Which "first method" do you mean?
Which second extension works but is having problems with uids?
Whats the value of options.sequence config/imap.php#L145?
What do you mean by "identifying these Google servers"?
What do you mean by "Gmail will need special handling" - how does it needs to be handled?
Are you using v3.0.0-alpha?

You don't have to use my settings, such as imap.gmail.com you can use whatever host, port, etc you want or need. You can however set defaults inside config/imap.php#L49-L66.
If you want to fetch a single message by its UID you can also use this method:
$message = $folder->query()->getMessageByUid($uid);

If you want to tell the server who you are, you can call the id command like this:
/** @var \Webklex\PHPIMAP\Client $client */
$client->connect();
$client->getConnection()->id(["name", "php-imap", "version", "3.0.0", "vendor", "webklex", "contact", "email@domain.tld"]);

..or:
/** @var \Webklex\PHPIMAP\Client $client */
$client->connect();
$client->Id(["name", "php-imap", "version", "3.0.0", "vendor", "webklex", "contact", "email@domain.tld"]);

..or request the id:
/** @var \Webklex\PHPIMAP\Client $client */
$client->connect();
$id = $client->Id();

Best regards,

To recap:

The first method I referred to was your first message and the second method was your second message.
Default settings are being used and the master version (3.0) has been installed as recommended.
This  $message = $folder->query(["X-GM-MSGID", "X-GM-THRID", "X-GM-LABELS"])->all()->limit(100)->paginate();  retrieves the X-GM-MSGID attribute correctly and this $message = $folder->messages()->all()->where("CUSTOM X-GM-MSGID", $msgid)->get()->first(); allows to get the correct message through the code returned by X-GM-MSGID, in this particular the message location issue has been resolved.
When I said that Gmail needed special handling, I was talking about not working with getMessage(), messages should be searched by the code returned by the X-GM-MSGID attribute and not by the UID, see the difference between a Server's codes Normal IMAP and from a Gmail server:

IMAP
function namefunction($uid = 1){
         $account = \Webklex\IMAP\Facades\Client::account('default');
         $folder = $account->getFolders()->all()[0]; // Select inbox
         $message = $folder->getMessage($uid);
         return $message->getTEXTbody();
}

Gmail Server
<?php

use Webklex\PHPIMAP\ClientManager;
use Webklex\PHPIMAP\IMAP;

function gmailfunction($msgid, $thrid){
     $cm = new ClientManager();
     $client = $cm->make([
        'host'  => 'imap.gmail.com',
        'port'  => 993,
        'encryption'    => 'ssl',
        'validate_cert' => true,
        'username' => 'username',
        'password' => 'password',
        'protocol' => 'imap',
        "extensions" => ["X-GM-MSGID", "X-GM-THRID", "X-GM-LABELS"], // auto. fetch these extensions
    ]);
    $client->connect();
    $con = $client->getConnection();
    $folder = $client->getFolder("INBOX");
    $client->openFolder($folder->path);
    $message = $folder->messages()->all()->where("CUSTOM X-GM-MSGID", $msgid)->get()->first();
    return $message->getTEXTbody();
}

In that sense, I need to know if it's a Google/Gmail server to switch between these two search methods:
Imap: $folder->getMessage($uid);
Gmail: $folder->messages()->all()->where("CUSTOM X-GM-MSGID", $msgid)->get()->first();
That's what I mean by "Identify Google Servers", the way to retrieve a specific message is different in Gmail.

Hi @igmacedo ,
thanks a lot for the clarification. You can reliably identify gmail users by checking the capabilities:
if(in_array("X-GM-EXT-1", $client->getConnection()->getCapabilities())) {
    // is Gmail
}else{
    // is something else
}

You can ignore the $con and $client->openFolder($folder->path);:
function gmailfunction($msgid, $thrid){
     $cm = new ClientManager();
     $client = $cm->make([
        'host'  => 'imap.gmail.com',
        'port'  => 993,
        'encryption'    => 'ssl',
        'validate_cert' => true,
        'username' => 'username',
        'password' => 'password',
        'protocol' => 'imap',
        "extensions" => ["X-GM-MSGID", "X-GM-THRID", "X-GM-LABELS"], // auto. fetch these extensions
    ]);
    $client->connect();
    $folder = $client->getFolder("INBOX");
    $message = $folder->messages()->all()->where("CUSTOM X-GM-MSGID", $msgid)->get()->first();
    return $message->getTEXTbody();
}

The folder will be opened automatically as soon as you start to query any messages.
Best regards,

Thanks, this solves the problem.

I am not able to get this working. I keep getting this error when I try to do CUSTOM X-GM-MSGID search. Using v5.5.
Webklex\PHPIMAP\Exceptions\ImapServerErrorException

BAD
Could
not
parse
command


Update docs

Description

Update with new logo
Update usage.md with clearer instructions on what code goes where

Type of change
Please check the options that are relevant.

[ ] Bug fix (non-breaking change that fixes an issue)
[ ] Proposes a change (non-breaking change that isn't necessarily a bug)
[ ] Refactor
[ ] New feature (non-breaking change that adds a new functionality)
[ ] Breaking change (fix or feature that would break some existing functionality downstream)
[ ] This is a unit test
[x] Documentation only change
[ ] Datasets Release
[ ] Models Release

Type of requested review

[ ] I want a thorough review of the implementation.
[x] I want a high level review.
[ ] I want a deep design review.

Before and After

Testing
Documentation-only change
Checklist:

[ ] I have performed manual end-to-end testing of the feature in my environment.
[ ] I have added Docstrings and comments to the code.
[ ] I have made changes to existing documentation where needed.
[ ] I have added tests that show that the PR is functional.
[ ] New and existing unit tests pass locally with my changes.
[ ] I have added relevant collaborators to review the PR before merge.
[ ] [Polymetis only] I have verified that all scripts in tests/scripts runs on hardware.

Codecov Report

Merging #883 (5d533bb) into main (dc75345) will decrease coverage by 0.00%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             main     #883      +/-   ##
==========================================
- Coverage   32.68%   32.67%   -0.01%
==========================================
  Files         340      340
  Lines       33123    33123
==========================================
- Hits        10825    10824       -1
- Misses      22298    22299       +1

Impacted Files
Coverage Δ

interpreter/robot/tests/world.py
88.32% <0.00%> (-0.73%)
:arrow_down:


Connectivity issue between digital bank app and mongodb

We applied mongodb from hyper-protect-dbaas service, and verified that we are able to login db via terminal, looks like the db works pretty well. I modified .env config file and replaced parameters with correct mongodb string, then deployed digital bank app on k8s cluster, but pod can not be up and running.
innovate-accounts-deployment-5cd49d786c-ff9gf   0/1     Pending            0          4m12s
innovate-portal-deployment-696557dfb7-jnmk2     0/1     Pending            0          5m49s

The MongoDB database service in IBM cloud doesn't seem to have a free tier (since compose went away) - so the pattern should specify another option for Mongo   @amalamine @stevemart

you should create a pvc. check the issue with kubectl describe pod podname


Desired slidesPresented implementation

I think the effect could be nicer, but in any case I've extended the implementation to support multiple slides presented.
Hope that helps!

This is incredible! Thanks so much @FlorianRappl  - the only issue I'm having is the way the slide jumps from one to another, there is a lag... I'm sorry to ask you so many questions, but do you know what may be causing this? Having a hard time figuring it out.

I'm sorry to ask you so many questions, but do you know what may be causing this?

My assumption: The CSS transition would need some adjustment here. Another thought: The drag handling is not ideal.
If you want the picture above realized (i.e., using buttons) then it should feel more smooth. Not really sure though.
Maybe I'll find the time to revisit it, but this week is already quite packed.
PS: If you are interested in microfrontends or maybe are in the future - make sure to star Piral :star:. Much appreciated!

No worries, understood. For now, I don't need the drag functionality, but any ideas of where to start to see how it can transition from slide to slide without jumping?

@wwwhatley I was able to fix the jumping by multiplying the quotient of the shift calculation by the number of slides presented

@wwwhatley I was able to fix the jumping by multiplying the quotient of the shift calculation by the number of slides presented


Updated "Work Ethics" for issue# 95.

Updated the text for "Work Ethics" under starting the franchise.

I will create a new issue for this and then will create a PR.


Switch device/Switch Playlist Template: "undefined" Error with Tabs

Hi,
thanks for your nice module. I have one problem with it:
I have a view "Spotify" with the switch, device and switch playlist templates working.
But only if that view is called directly in the browser.
With the spotify view within a tabs widget it doens't work and says "undefined" when I try to open the select list.
http://<IP_ADDRESS>:8082/vis/index.html?main#Spotify ---> Works
http://<IP_ADDRESS>:8082/vis/index.html?main#Tabs --> #Spotify called within the tabs - slidertabs widget --> Error "undefined"

Which VIS version are you using? I think it is a VIS Problem because I my templates are only VIS standard stuff. What is "undefined" in detail? Can you also post an export of YouTube tab-view?

this is the spotify template (based on marcel85s awesome template)
[{"tpl":"tplValueString","data":{"oid":"spotify-premium.0.playbackInfo.artistName","g_fixed":true,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"name":"Artist"},"style":{"left":"173px","top":"596px","width":"265px","height":"20px","font-family":"RobotoCondensed-Light","font-style":"normal","font-variant":"normal","font-weight":"normal","color":"#bababa","text-align":"center","font-size":"","z-index":"2"},"widgetSet":"basic"},{"tpl":"tplValueString","data":{"oid":"spotify-premium.0.playbackInfo.trackName","g_fixed":true,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"name":"Track"},"style":{"left":"57px","top":"564px","width":"500px","height":"25px","font-family":"RobotoCondensed-Light","font-style":"normal","font-variant":"normal","font-weight":"normal","color":"white","text-align":"center","font-size":"20px","z-index":"2"},"widgetSet":"basic"},{"tpl":"tplHqCircle","data":{"g_fixed":true,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":true,"g_css_border":true,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","oid":"spotify-premium.0.playbackInfo.progressMs","min":"0","max":"{spotify-premium.0.playbackInfo.durationMs}","digits":"0","step":"100","is_comma":false,"displayPrevious":"true","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"descriptionLeft":"javascript.0.Spotify.PlaybackInfo.progress_ms","readOnly":false,"hideNumber":true,"linecap":false,"color":"#2487e5","unit":"ms","oid-working":"","bgcolor":"#959595","thickness":"0,03","name":"Spotify Progress","cursor":""},"style":{"left":"151px","top":"205px","width":"300px","height":"300px","box-shadow":"0px 0px 15px #2487e5","padding":"","z-index":"2","border-radius":"180px"},"widgetSet":"hqwidgets"},{"tpl":"tplHqButton","data":{"oid":"spotify-premium.0.player.skipPlus","min":"true","max":"true","iconName":"/icons-mfd-png/audio_ff.png","btIconWidth":"49","offsetAuto":false,"leftOffset":"8","topOffset":"9","timeAsInterval":"true","infoLeftFontSize":"12","infoFontRightSize":"12","caption":"","captionOn":"","iconOn":"control_arrow_right.svg","gestures-offsetX":0,"gestures-offsetY":0,"signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"pushButton":false,"usejQueryStyle":false,"g_visibility":true,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","styleActive":"hq-button-no-background","name":"Forward","infoLeftPaddingLeft":"15","infoLeftPaddingRight":"50","infoRightPaddingRight":"15","gestures-swipeLeft-limit":"-1","gestures-rotateLeft-limit":"2","styleNormal":"hq-button-no-background","changeEffect":"","testActive":false,"descriptionLeft":"Robby state","lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"descriptionLeftDisabled":true},"style":{"left":"491px","top":"315px","width":"60px","height":"60px","border-width":"1px","border-style":"none","border-color":"","border-radius":"2px","z-index":"2","text-align":"center","font-size":"small","box-shadow":""},"widgetSet":"hqwidgets"},{"tpl":"tplHqButton","data":{"oid":"spotify-premium.0.player.skipMinus","min":"true","max":"true","iconName":"/icons-mfd-png/audio_rew.png","btIconWidth":"49","offsetAuto":false,"leftOffset":"15","topOffset":"9","timeAsInterval":"true","infoLeftFontSize":"12","infoFontRightSize":"12","caption":"","captionOn":"","iconOn":"/icons-mfd-png/control_arrow_left.svg","gestures-offsetX":0,"gestures-offsetY":0,"signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"pushButton":false,"usejQueryStyle":false,"g_visibility":true,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","styleActive":"hq-button-no-background","name":"Rewind","infoLeftPaddingLeft":"15","infoLeftPaddingRight":"50","infoRightPaddingRight":"15","gestures-swipeLeft-limit":"-1","gestures-rotateLeft-limit":"2","styleNormal":"hq-button-no-background","changeEffect":"","testActive":false,"descriptionLeft":"Robby state","lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"descriptionLeftDisabled":true},"style":{"left":"51px","top":"315px","width":"60px","height":"60px","border-width":"1px","border-style":"none","border-color":"","border-radius":"2px","z-index":"2","text-align":"center","font-size":"small","box-shadow":""},"widgetSet":"hqwidgets"},{"tpl":"tplValueStringImg","data":{"oid":"spotify-premium.0.playbackInfo.artistImageUrl","g_fixed":true,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":true,"g_css_border":true,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","refreshInterval":"1000","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"name":"Spotify Cover"},"style":{"left":"156px","top":"210px","width":"290px","height":"290px","z-index":"2","box-shadow":"","border-radius":"180px"},"widgetSet":"basic"},{"tpl":"tplShapes","data":{"g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":true,"g_css_shadow_padding":true,"g_css_border":true,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","svgType":"circle","strokeColor":"rgba(255,255,255,0.0)","fill":"rgba(255,255,255,0.0)","strokeWidth":"0,1","scaleWidth":"1","scaleHeight":"1","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0},"style":{"left":"130px","top":"180px","z-index":"2","background":"","width":"350px","height":"350px","box-shadow":"0px 0px 1px white","border-style":"none","border-radius":"180px"},"widgetSet":"basic"},{"tpl":"tplHqButton","data":{"oid":"spotify-premium.0.player.pause","min":"true","max":"true","iconName":"/icons-mfd-png/audio_pause.png","btIconWidth":"49","offsetAuto":false,"leftOffset":"15","topOffset":"9","timeAsInterval":"true","infoLeftFontSize":"12","infoFontRightSize":"12","caption":"","captionOn":"","iconOn":"/icons-mfd-png/control_arrow_left.svg","gestures-offsetX":0,"gestures-offsetY":0,"signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"pushButton":false,"usejQueryStyle":false,"g_visibility":true,"visibility-cond":"==","visibility-val":"true","visibility-groups-action":"hide","styleActive":"hq-button-no-background","name":"Pause","infoLeftPaddingLeft":"15","infoLeftPaddingRight":"50","infoRightPaddingRight":"15","gestures-swipeLeft-limit":"-1","gestures-rotateLeft-limit":"2","styleNormal":"hq-button-no-background","changeEffect":"","testActive":false,"descriptionLeft":"Robby state","lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"descriptionLeftDisabled":true,"oid-working":"","visibility-oid":"spotify-premium.0.playbackInfo.isPlaying"},"style":{"left":"275px","top":"100px","width":"60px","height":"60px","border-width":"1px","border-style":"none","border-color":"","border-radius":"2px","z-index":"2","text-align":"center","font-size":"small","box-shadow":"","background":"","background-repeat":""},"widgetSet":"hqwidgets"},{"tpl":"tplJquiSelectList","data":{"oid":"spotify-premium.0.playlists.playlistList","g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","values":"{spotify-premium.0.playlists.playlistListIds}","texts":"{spotify-premium.0.playlists.playlistListString}","height":"100","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"no_style":true,"open":false},"style":{"left":"106px","top":"640px","width":"400px"},"widgetSet":"jqui"},{"tpl":"tplJquiSelectList","data":{"oid":"spotify-premium.0.devices.deviceList","g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","values":"{spotify-premium.0.devices.availableDeviceListIds}","texts":"{spotify-premium.0.devices.availableDeviceListString}","height":"100","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"no_style":true},"style":{"left":"228px","top":"700px","width":"400px"},"widgetSet":"jqui"},{"tpl":"tplHqButton","data":{"oid":"spotify-premium.0.player.play","min":"true","max":"true","iconName":"/icons-mfd-png/audio_play.png","btIconWidth":"49","offsetAuto":false,"leftOffset":"15","topOffset":"9","timeAsInterval":"true","infoLeftFontSize":"12","infoFontRightSize":"12","caption":"","captionOn":"","iconOn":"/icons-mfd-png/control_arrow_left.svg","gestures-offsetX":0,"gestures-offsetY":0,"signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"pushButton":false,"usejQueryStyle":false,"g_visibility":true,"visibility-cond":"==","visibility-val":"false","visibility-groups-action":"hide","styleActive":"hq-button-no-background","name":"Play","infoLeftPaddingLeft":"15","infoLeftPaddingRight":"50","infoRightPaddingRight":"15","gestures-swipeLeft-limit":"-1","gestures-rotateLeft-limit":"2","styleNormal":"hq-button-no-background","changeEffect":"","testActive":false,"descriptionLeft":"Robby state","lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"descriptionLeftDisabled":true,"oid-working":"","visibility-oid":"spotify-premium.0.playbackInfo.isPlaying"},"style":{"left":"275px","top":"100px","width":"60px","height":"60px","border-width":"1px","border-style":"none","border-color":"","border-radius":"2px","z-index":"2","text-align":"center","font-size":"small","box-shadow":"","background":"","background-repeat":""},"widgetSet":"hqwidgets"}]

When I open the spotify view directly it works.
But add a new view and put in the "tabs- SliderTabs" widget and call spotify there "View for Tab[1]"
then it just says "undefined". And furthermore it's strange that the css alignment is different then.

I tested by myself with VIS version 1.1.5 today and there is not "undefined" problem. Can you please test with a new VIS version?
My Test template export:
Tabs-widgid:
[{"tpl":"tplSTab","data":{"g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","height":"100","show_tabs":"2","title_tab_1":"Spotify1","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"title_tab_2":"Spotify2","contains_view_1":"Spotify1","contains_view_2":"Spotify2"},"style":{"left":"555px","top":"128px","width":"641px","height":"540px"},"widgetSet":"tabs"}]

View 1 (Spotify1):
[{"tpl":"tplSTab","data":{"g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","height":"100","show_tabs":"2","title_tab_1":"Spotify1","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"title_tab_2":"Spotify2","contains_view_1":"Spotify1","contains_view_2":"Spotify2"},"style":{"left":"555px","top":"128px","width":"641px","height":"540px"},"widgetSet":"tabs"}]

View 2 (Spotify2):
[{"tpl":"tplJquiSelectList","data":{"oid":"spotify-premium.0.playlists.playlistList","g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","values":"{spotify-premium.0.playlists.playlistListIds}","texts":"{spotify-premium.0.playlists.playlistListString}","height":"100","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0},"style":{"left":"20px","top":"19px","width":"248px","height":"23px"},"widgetSet":"jqui"},{"tpl":"tplJquiSelectList","data":{"oid":"spotify-premium.0.playbackInfo.playlist.trackList","g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","values":"{spotify-premium.0.playbackInfo.playlist.trackListNumber}","texts":"{spotify-premium.0.playbackInfo.playlist.trackListString}","height":"100","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0},"style":{"left":"20px","top":"50px","width":"247px","height":"23px"},"widgetSet":"jqui"}]

I have tried it with 1.1.5. thats really strange.
when I test it with your test templates it works (with your 2 view tab test templates).
when I copy your working playlist widget to my existing tab setup (6 tabs with different stuff in it) it shows the undefined error.
I couldn't investigate what exactly causes the problem. Will try to remove part by part to see what widget? tab count? ..? causes trouble.

one easy way to produce the bug is to just add a odometer widget (with assigned values, if nothing is assinged it works). Then I immediately get the "undefined" message.
in the browser debug console there's this:

2018-06-25T00:16:14.966Z Authenticated: true
conn.js:292:25
Request 0 states.
2018-06-25-Spotify.zip

vis.js:3112:25
Create inner vis object sonoff.0.AiR-Fernseher.ENERGY_Total
vis.js:2969:21
Create inner vis object spotify-premium.0.playbackInfo.playlist.trackList
vis.js:2969:21
Create inner vis object spotify-premium.0.playbackInfo.playlist.trackListNumber
vis.js:2969:21
Create inner vis object spotify-premium.0.playbackInfo.playlist.trackListString
vis.js:2969:21
Create inner vis object spotify-premium.0.playlists.playlistList
vis.js:2969:21
Create inner vis object spotify-premium.0.playlists.playlistListIds
vis.js:2969:21
Create inner vis object spotify-premium.0.playlists.playlistListString
vis.js:2969:21
[1529885776035] Request 1 states.
vis.js:2548:13
[1529885776039] Request 6 states.
vis.js:2548:13
Trying to get empty list, because the whole list could not be loaded
conn.js:714:17

the odometer is part from ioBroker.vis-hqWidgets right? Which version are you using?

yes:
hqwidgets 1.1.2
vis 1.1.5
admin 3.4.6
spotify premium adatper 0.3.1
js-controller 1.4.2

detailed error description, as this seems to be more a vis/tabs problem than spotify adapter:
#https://github.com/ioBroker/ioBroker.vis/issues/179


An error occurred when I run "lanenet_hnet_predict.py"

Traceback (most recent call last):
File "lanenet_hnet_predict.py", line 177, in
predict(args.image_path, args.lanenet_weights, args.hnet_weights)
File "lanenet_hnet_predict.py", line 171, in predict
mask_image = hnet_predict(image_hnet, hnet_weights, lanes_pts, image_vis)
File "lanenet_hnet_predict.py", line 139, in hnet_predict
cv2.circle(image, (coefficient_back[0][j], coefficient_back[1][j]), 1, (color[0], color[1], color[2]), 1)
TypeError: Scalar value for argument 'color' is not numeric

@zwb204 Hi, I met the same problem with you ,have you solved it?

@zwb204 Hi, I met the same problem with you ,have you solved it?

cv2.circle(image, (int(coefficient_back[0][j]), int(coefficient_back[1][j])), 1, (int(color[0]), int(color[1]), int(color[2])), 1)

@ashergaga
cv2.circle(image, (int(coefficient_back[0][j]), int(coefficient_back[1][j])), 1, (int(color[0]), int(color[1]), int(color[2])), 1)


Cannot destructure property 'underline' of 'chalk_1.default' as it is undefined.

I have installed sfdx cli with my new laptop, when I try open my default org or any CLI Command, will throw error, can some one look in to this please?
here is log info.
TypeError: Cannot destructure property 'underline' of 'chalk_1.default' as it is undefined.     at Object.<anonymous> (C:\Program Files (x86)\sfdx\client\node_modules\@oclif\plugin-help\lib\command.js:8:9)     at Module._compile (C:\Program Files (x86)\sfdx\client\node_modules\v8-compile-cache\v8-compile-cache.js:194:30)     at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)     at Module.load (internal/modules/cjs/loader.js:985:32)     at Function.Module._load (internal/modules/cjs/loader.js:878:14)     at Module.require (internal/modules/cjs/loader.js:1025:19)     at require (C:\Program Files (x86)\sfdx\client\node_modules\v8-compile-cache\v8-compile-cache.js:161:20)     at Object.<anonymous> (C:\Program Files (x86)\sfdx\client\node_modules\@oclif\plugin-help\lib\index.js:7:19)     at Module._compile (C:\Program Files (x86)\sfdx\client\node_modules\v8-compile-cache\v8-compile-cache.js:194:30)     at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)
<
!--
NOTICE: GitHub is not a mechanism for receiving support under any agreement or SLA. If you require immediate assistance, please use official support channels.
-->
Summary
Short summary of what is going on or to provide context.
Steps To Reproduce:
Repository to reproduce: dreamhouse-lwc
NOTE: If your issue is not reproducable by dreamhouse-lwc, i.e. requires specific metadata or files, we require a link to a simple Salesforce project repository with a script to setup a scratch org that reproduces your problem.

This is step 1.
This is step 2. All steps should start with '1.'

Expected result
Describe what should have happened.
Actual result
Describe what actually happened instead.
Additional information
Feel free to attach a screenshot.
SFDX CLI Version(to find the version of the CLI engine run sfdx --version):
SFDX plugin Version(to find the version of the CLI plugin run sfdx plugins --core)
OS and version:

Can you please follow the issue template so we can see the versions of the plugins that you have installed?  That helps us know where to look.
Also, try running your command with --dev-debug and share the output so we can see exactly where it's breaking

I noticed this error in both VS Code and Illuminated Cloud 2 but have also isolated it to the command-line. When I run:
Steps To Reproduce:
Step 1 : type command sfdx force:org:list
Expected result:
show the list of available org
Actual result:
TypeError: Cannot destructure property 'underline' of 'chalk_1.default' as it is undefined.     at Object.<anonymous> (C:\Program Files (x86)\sfdx\client\node_modules\@oclif\plugin-help\lib\command.js:8:9)     at Module._compile (C:\Program Files (x86)\sfdx\client\node_modules\v8-compile-cache\v8-compile-cache.js:194:30)     at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)     at Module.load (internal/modules/cjs/loader.js:985:32)     at Function.Module._load (internal/modules/cjs/loader.js:878:14)     at Module.require (internal/modules/cjs/loader.js:1025:19)     at require (C:\Program Files (x86)\sfdx\client\node_modules\v8-compile-cache\v8-compile-cache.js:161:20)     at Object.<anonymous> (C:\Program Files (x86)\sfdx\client\node_modules\@oclif\plugin-help\lib\index.js:7:19)     at Module._compile (C:\Program Files (x86)\sfdx\client\node_modules\v8-compile-cache\v8-compile-cache.js:194:30)     at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)
Additional information:
any sfdx command will end up error as above. I have reinstalled VSCode, SFDX Cli and Node.js

SFDX CLI Version(to find the version of the CLI engine run sfdx --version):
SFDX plugin Version(to find the version of the CLI plugin run sfdx plugins --core)

I just did the install from that same url, on a windows box, with no issues (windows x64).

If you've got anything else I could try, let me know.

any update on this issue, i am facing the same issue repeatedly

@sandyvis34 - there won't be any update on this closed issue without additional information which includes the required information from the template and reproducible steps.


Add analysis of 128-bit CEN length

I believe that the rationale for the choice of 128-bit CENs was motivated by considerations about the Bluetooth layer.  I don't think there should be a problem related to random collisions, but it would be good to have a brief analysis that this is actually the case.

We have a max of 20 bytes [160 bit] for iOS/Android though it may be possible to push to 26-31 bytes according to docs. I chose 128 bit [8 bytes] because Scott's starting point had 64-bit + 64 bit reveal patterns from mid-march and much more didnt seem needed (insert collision probability analysis on what times square imposter would do). I believe using the remaining available space (of which there may be 4-15 bytes) should be for (a) specifying meta data of what protocol we're on (BT people who have seen the standard evolves will have a lot of opinion this); (b) specifying already broadcast symptom/infection bits, which should no longer be considered private on first symptom report but are other wise not set; I believe a good protocol should treat the human as freely broadcasting "I'm sick, I am displaying these self-reported symptoms ___, I'm infected with ___" all under the humans control. It is extremely unlikely that the symptoms and disease space will be mapped in the year 2020 because new symptoms + diseases are invented by the new strains all the time and so an extensible design is the only way to solve the problem, which BT itself is designed to do. (c) I don't see the problem at this point to have 1 characteristic, 1 pandemic and have the semantics of the bits decided per pandemic, e.g. for COVID-19, the 4-15 bytes have these semantics, for Ebola the 4-15 bytes have these semantics, and that the concepts of symptoms are mapped into byte form in a per pandemic way. This all makes for a bit of future proofing.


Release Flux v1.11.1

@hiddeco Yes, but the bumping of the deployment is scripted as a later step.
Sorry for always forgetting.


[SOLVED] Duplicated notifications of the same event

Some times, most of the times, I get two telegram message for same event, one without the event clips link and one with.
The sent snapshots are almost the same, maybe some frame later the second message.
Is it possible to avoid the message without the clip?

Thanks

Thanks @freefd
I see the nosnap option in the config file, but I don't see in the docs the noclip.
This is the log related to an event where I get one message without clip link and a second one with the link
2024/11/05 13:24:32 +0100 INF events/mqtt.go:76 > New event received event_id=1730809471.544451-cqptxf
2024/11/05 13:24:32 +0100 INF events/mqtt.go:90 > Event Detected camera=vialetto event_id=1730809471.544451-cqptxf label=person zones=
2024/11/05 13:24:32 +0100 DBG events/mqtt.go:93 > Event start time: 2024-11-05 13:24:31 +0100 CET event_id=1730809471.544451-cqptxf
2024/11/05 13:24:32 +0100 INF events/filters.go:30 > Event dropped - No snapshot or clip available event_id=1730809471.544451-cqptxf
2024/11/05 13:24:32 +0100 INF events/mqtt.go:80 > Event update received event_id=1730809471.544451-cqptxf
2024/11/05 13:24:32 +0100 INF events/mqtt.go:90 > Event Detected camera=vialetto event_id=1730809471.544451-cqptxf label=person zones=
2024/11/05 13:24:32 +0100 DBG events/mqtt.go:93 > Event start time: 2024-11-05 13:24:31 +0100 CET event_id=1730809471.544451-cqptxf
2024/11/05 13:24:32 +0100 DBG events/cache.go:82 > Event not in cache, adding... camera=vialetto event_id=1730809471.544451-cqptxf zones=
2024/11/05 13:24:32 +0100 DBG events/mqtt.go:115 > Object entered new zone camera=vialetto event_id=1730809471.544451-cqptxf label=person zones=
2024/11/05 13:24:32 +0100 DBG notifier/webhook.go:33 > Custom message template used event_id=1730809471.544451-cqptxf provider=Webhook rendered_template="{\"camera\":\"vialetto\",\"id\":\"1730809471.544451-cqptxf\",\"label\":\"person\"}"
2024/11/05 13:24:32 +0100 DBG notifier/telegram.go:24 > Custom message template used event_id=1730809471.544451-cqptxf provider=Telegram rendered_template="Motion alle 13:24:31 del 05/11/2024\nCamera: vialetto\nLabel: person (76%)\n\n\n\n\n\n"
2024/11/05 13:24:32 +0100 INF events/mqtt.go:80 > Event update received event_id=1730809471.544451-cqptxf
2024/11/05 13:24:32 +0100 INF events/mqtt.go:90 > Event Detected camera=vialetto event_id=1730809471.544451-cqptxf label=person zones=viale
2024/11/05 13:24:32 +0100 DBG events/mqtt.go:93 > Event start time: 2024-11-05 13:24:31 +0100 CET event_id=1730809471.544451-cqptxf
2024/11/05 13:24:32 +0100 DBG events/cache.go:93 > Found new zone not in cache camera=vialetto event_id=1730809471.544451-cqptxf zones=viale
2024/11/05 13:24:32 +0100 DBG events/mqtt.go:115 > Object entered new zone camera=vialetto event_id=1730809471.544451-cqptxf label=person zones=viale
2024/11/05 13:24:32 +0100 DBG notifier/webhook.go:33 > Custom message template used event_id=1730809471.544451-cqptxf provider=Webhook rendered_template="{\"camera\":\"vialetto\",\"id\":\"1730809471.544451-cqptxf\",\"label\":\"person\"}"
2024/11/05 13:24:32 +0100 DBG notifier/telegram.go:24 > Custom message template used event_id=1730809471.544451-cqptxf provider=Telegram rendered_template="Motion alle 13:24:31 del 05/11/2024\nCamera: vialetto\nLabel: person (77%)\n\n - Event Clip: http://<IP_ADDRESS>:5000/api/events/1730809471.544451-cqptxf/clip.mp4\n\n\n\n"
2024/11/05 13:24:32 +0100 INF notifier/telegram.go:77 > Alert sent event_id=1730809471.544451-cqptxf provider=Telegram
2024/11/05 13:24:32 +0100 INF notifier/telegram.go:77 > Alert sent event_id=1730809471.544451-cqptxf provider=Telegram
2024/11/05 13:24:33 +0100 INF notifier/webhook.go:59 > Alert sent event_id=1730809471.544451-cqptxf provider=Webhook
2024/11/05 13:24:33 +0100 INF notifier/webhook.go:59 > Alert sent event_id=1730809471.544451-cqptxf provider=Webhook
2024/11/05 13:24:42 +0100 DBG events/mqtt.go:134 > Event ended event_id=1730809471.544451-cqptxf
2024/11/05 13:24:42 +0100 DBG events/cache.go:114 > Event removed from cache camera=vialetto event_id=1730809471.544451-cqptxf zones=viale

@woody4165, as we can see you have configured zone and related events.
unzoned:

2024/11/05 13:24:32 +0100 DBG events/mqtt.go:115 > Object entered new zone camera=vialetto event_id=1730809471.544451-cqptxf label=person zones=

zoned:

2024/11/05 13:24:32 +0100 DBG events/mqtt.go:115 > Object entered new zone camera=vialetto event_id=1730809471.544451-cqptxf label=person zones=viale

For the doubled events, I guess, you hit the known issue #66.
But why the has_clip: true parameter is not set in the first event - that is the question. I would suggest to set trace log level instead of debug and find raw (https://github.com/0x2142/frigate-notify/blob/main/events/mqtt.go#L68-L70) event objects from MQTT broker.

@freefd
now I've set unzoned to drop and I don't get anymore the message without the clip link
That message was, strangely, without a zone even if the zone for that camera is almost the whole area and I'm sure that the motion is detected within the zone defined
Thanks
Let me know if I can close as solved this issue

I've set unzoned to drop and I don't get anymore the message without the clip link

@woody4165, definitely, you've solved the initial root cause with unwanted behavior of the unzoned notification.
But the second part with the question “why unzoned events don't have has_clip: true” remains unanswered.
Nevertheless, I'd suggest to:

Rename the issue to something like "Duplicated notifications of the same event"
Mark issue as solved/closed

And analyze and try to solve the second part next time by a request from someone else :)

thanks @freefd
I really don't know how to answer to second question!!!