Issue with Package publish to Gitlab Registry

Environment
Device and OS: Mac OS, Linux, and Linux via WSL (tried all 3)
App version: Zarf v0.34.0
Kubernetes distro being used: K3D
Other:
Steps to reproduce

Run zarf package create
Run zarf package deploy (check that packages deploys locally well, which it does)
Run zarf package publish xxxxx.tar.zst oci://myregistry.url.com/suburl (zarf says successfully published)
Login to gitlab instance and view container registry. Tag shows up but next to tag is a yellow triangle icon with the warning "Invalid Tag: missing manifest digest"
Try running zarf package deploy  oci://myregistry.url.com/suburl/package:0.0.1 and get error ""Failed to deploy package: unable to load the package: sha256:zzzz: not found: no matching manifest was found in the manifest list"

Expected result
Zarf package publishes to registry, registry recognizes it and processes it, other computers can pull package from registry and deploy.
Actual Result
Gitlab registry sees the tag but no other details like architecture or package size. Says 0B for size. Git errors such as file not found when trying to include in a UDS bundle and no matching manifest when deploying.
Visual Proof (screenshots, videos, text, etc)

Severity/Priority
Additional Context
I've also noticed that sometimes the upload takes a normal amount of time for the size of the package and other times (even on a brand new package) it uploads over a gig instantly.
Thanks!

@cbrech Thanks for opening this issue!
I believe there are two separate issues here.
The first issue is a bug in GitLab that does not handle OCI image indexes correctly, which is the format used for Zarf packages.
See these GitLab issues for more details:

Container Registry - multi arch docker images no longer available from Gitlab 15.8.x : Invalid tag: missing manifest digest
Show supported platform(s) of multi-architecture container registry images in the UI
Display additional details for container registry tags that point to manifest lists/indexes
Improve container registry multi-architecture images UX

Here is what a Zarf package's OCI image index looks like for an arm64 package:
{
 "schemaVersion": 2,
 "mediaType": "application/vnd.oci.image.index.v1+json",
 "manifests": [
   {
     "mediaType": "application/vnd.oci.image.manifest.v1+json",
     "digest": "sha256:348322b5ef9d6ee492488f5b0e9410bda5f06ac23df9b48ff246c4db7b7f32a9",
     "size": 2872,
     "platform": {
       "architecture": "arm64",
       "os": "multi"
     }
   }
 ]
}

The second issue is likely due to mismatched CPU architectures. The error no matching manifest was found in the manifest list happens because the package architecture does not match your deployment machine's architecture. For example, deploying an arm64 package on an amd64 machine without using --architecture=arm64 will cause this error.
Ensure the package's architecture matches the target cluster's architecture. If deploying from a machine with a different architecture than the package, use the --architecture flag to specify the correct package architecture during deployment.
You can check a package's architecture with:
zarf package inspect oci://myregistry.url.com/suburl:tag

And check the .metadata.architecture field
Let us know if this resolves your issue!

Thanks for the quick reply.
Is it your understanding that the Gitlab container registry handles OCI images correctly but the UI does not or that its registry does not handle OCI packages properly?
Have y'all seen any best practices for using a gitlab registry with Zarf? Should we be naming each package with its architecture?

Is it your understanding that the Gitlab container registry handles OCI images correctly but the UI does not or that its registry does not handle OCI packages properly?

Yes that is my understanding. The GitLab container registry API accepts the upload successfully from zarf package publish and seemingly stores Zarf packages correctly since they can be pulled and deployed from there. The UI does not handle the data correctly though and displays the slightly confusing and misleading warning Invalid tag: missing manifest digest

Have y'all seen any best practices for using a gitlab registry with Zarf? Should we be naming each package with its architecture?

I am not aware of any specific best practices for using GitLab container registry with Zarf. We have had this issue brought up with the GitLab container registry UI not displaying Zarf packages correctly, but as seen in the linked issues above, that is not specific to Zarf.
I would not recommend naming each package with its architecture. That may be a tempting thing to do to work around the GitLab bug, but it isn't a pattern I would recommend because the standard place to store and retrieve architecture metadata for OCI artifacts is the OCI image index, which is where it is currently stored for Zarf packages.


Incomplete Documentation!

Need to update the documentation.
Clarify the process of adding proxies, editing config file, etc.

in which format should i have my proxies? the written one is incorrect


continuous_covariate error

Hi,
Thank you for the continuous great work!
I ran into an error with model = scvi.model.SCVI(adata). It fails when I added the continuous covariate
scvi.data.setup_anndata(adata, batch_key = 'batch', layer="counts",                         continuous_covariate_keys = ['percent.mt', 'nCount_RNA'])
Below is the error message. Thanks in advance!
`---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
 in
----> 1 model = scvi.model.SCVI(adata)
/sbgenomics/workspace/pkgs/lib/python3.8/site-packages/scvi/model/scvi.py in init(self, adata, n_hidden, n_latent, n_layers, dropout_rate, dispersion, gene_likelihood, latent_distribution, use_cuda, **model_kwargs)
74         **model_kwargs,
75     ):
---> 76         super(SCVI, self).init(adata, use_cuda=use_cuda)
77         self.model = VAE(
78             n_input=self.summary_stats["n_vars"],
/sbgenomics/workspace/pkgs/lib/python3.8/site-packages/scvi/core/models/base.py in init(self, adata, use_cuda)
35             self.scvi_setup_dict_ = adata.uns["scvi"]
36             self.summary_stats = self.scvi_setup_dict["summary_stats"]
---> 37             self.validate_anndata(adata, copy_if_view=False)
38
39         self.is_trained = False
/sbgenomics/workspace/pkgs/lib/python3.8/site-packages/scvi/core/models/base.py in _validate_anndata(self, adata, copy_if_view)
95             )
96
---> 97         check_anndata_setup_equivalence(self.scvi_setup_dict, adata)
98
99         return adata
/sbgenomics/workspace/pkgs/lib/python3.8/site-packages/scvi/data/_anndata.py in _check_anndata_setup_equivalence(adata_source, adata_target)
1167             raise ValueError('extra_continuous_keys not in adata.uns["_scvi"]')
1168         target_cont_keys = adata.uns["_scvi"]["extra_continuous_keys"]
-> 1169         if not _scvi_dict["extra_continuous_keys"].equals(target_cont_keys):
1170             raise ValueError(
1171                 "extra_continous_keys are not the same between source and target"
AttributeError: 'numpy.ndarray' object has no attribute 'equals'`

Hi @notimenocall -- sorry this should be more clear, but this feature won't be fully available until the next major release (< 1 month hopefully)

Hi @notimenocall -- sorry this should be more clear, but this feature won't be fully available until the next major release (< 1 month hopefully)

Thanks. Excited to know it is coming!

Thanks. Excited to know it is coming!

Yes! And we have some examples showing how well it can work.

Yes! And we have some examples showing how well it can work.


ActivityPod as OIDC provider?

Could ActivityPub integrate with something like https://gitlab.com/yaal/canaille/ so that it could provide web2.0 auth services too?
Canaille would need to be forked to use ActivityPod as the backend.

We talked about this with @Laurin-W today.
Indeed ActivityPods could become an OIDC provider. You could then connect to it like any other OIDC provider and get in return some informations about the user, like the WebID, the email and such.
Some related resources:
https://github.com/panva/node-oidc-provider
https://nat.sakimura.org/2013/07/28/write-openid-connect-server-in-three-simple-steps/

That means there is a possibility to provide solid oidc auth through activitypods ?

In https://github.com/assemblee-virtuelle/activitypods/pull/123 we have implemented the node-oidc-provider library so it should be possible in the future to use ActivityPods as a OIDC provider (at least it is advertised that the Community Solid Server can do that, and it uses the same library)

Nice! I'll try and check it out soon.

@samuk Unless you try to launch locally https://github.com/assemblee-virtuelle/activitypods/pull/123, you will have to wait for the release of ActivityPods 2.0, which is planned next spring.

I added a request for it to be packaged as a PikaPod. I don't know if they'll be interested in doing that.
https://feedback.pikapods.com/posts/426/https-github-com-assemblee-virtuelle-activitypods

Nice ! For information, as part of the NLnet grant I received, I will get support to package ActivityPods with Nix as well.


Update .clang-format

The configuration related to the Objective-C language (Language: ObjC) and the PointerAlignment was adjusted based on general C++ and Objective-C style guides.

Summary:

Changelog:

Test Plan:

These mostly seem to be whitespace changes. Please make a minimal PR that only adjusts the lines you wish to change.


Add Music Controls Shortcut (like pause, next song, play, previous song)

I've been using Scrcpy to play music on my phone while studying on my computer. Music helps me focus but my problem is that there's no keyboard shortcut for music controls. I would be happy if you would add music control shortcuts to Scrcpy.

You should open an issue, not a pull request.
And in fact there is already an existing issue: #1824

related: #4080


Use of Pinia state inconsistent across dev environments

Reproduction

Steps to reproduce the bug
When developing with Pinia, the team I work with will access a state by just writing out the states name to get the value that is inside of it.
When I am working with Pinia I have to write out the states name then .value to get the value that is inside of it.
For example  if we were to develop the counter at https://pinia.vuejs.org/core-concepts/state.html#usage-with-the-options-api
The rest of the team would have to do store.count++ to iterate the counter.
I however have to do store.count.value++ to iterate the counter.
Expected behavior
To be able to access a store by doing store.variable
Actual behavior
I need to add value to access my stores variable, like store.variable.value
Additional information
I have freshly installed my environment and this issue persists, however it works fine on my laptop.
IDK if this is useful to know but my desktop has an AMD processor and my laptop, along with the rest of my teams devices have Intel processors.

Sorry for not providing a reproducting link, repo is private and have a meeting soon so can't set up a codepen

We really won't be able to help you without any details in the form of a runnable code example and reproduction steps.
We can re-open the issue once you provide hose.

Here's a reproduction link :)
https://codepen.io/Matthew-E-Gould/pen/OJEpeGe


Add recommendation engine example query use case to example queries

This pull request only adds documentation in the Query Examples section.
I'm adding an example use case that I worked out and have deployed in a production system.
We are still pretty new to Neo4j and welcome any and all feedback!
Pings:
@cheerfulstoic
@subvertallchris

@kyle-rader prose looks fine, I don't know neo4j though so ¯\_(ツ)_/¯

Codecov Report

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

@@            Coverage Diff             @@
##           master    #1441      +/-   ##
==========================================
+ Coverage   96.82%   96.84%   +0.02%
==========================================
  Files         205      205
  Lines       12555    12552       -3
==========================================
  Hits        12156    12156
+ Misses        399      396       -3

Impacted Files
Coverage Δ

lib/neo4j/tasks/migration.rake
32.14% <0%> (+0.83%)
:arrow_up:

Continue to review full report at Codecov.

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

Hey @kyle-rader
I just remembered that this PR is still out here.  Have you gotten a chance to work on it?

@cheerfulstoic I finally pushed up your requested changes! Thanks for the review!

Awesome, thanks!


Multivariate normal distribution crashes on broadcast

Environment info
Operating System: Mac OS X 10.11.5
If installed from binary pip package, provide:

Which pip package you installed.
https://storage.googleapis.com/tensorflow/mac/tensorflow-0.9.0-py3-none-any.whl

The output from python -c "import tensorflow; print(tensorflow.__version__)".
0.9.0

Issue
The Multivariate Normal distribution in contrib.distributions claims to support broadcasting but it does not appear to work. This script will illustrate the issue:
import numpy as np
import tensorflow as tf

# dimensions
a = 2
b = 3
c = 4

mu = tf.reshape(tf.constant(
    np.arange(a * b * c * 1.0)),
    [a, b, c])

sigma = tf.batch_matrix_diag(tf.reshape(tf.constant(
    np.arange(a * b * c * 1.0) + 1),
    [a, b, c]))

mvn = tf.contrib.distributions.MultivariateNormal(mu, sigma)

with tf.Session() as sess:
    # works because shape(input) == shape(mu)
    sess.run(mvn.pdf(np.ones((a, b, c))))

    # fails even though input and mu are broadcastable
    sess.run(mvn.pdf(np.ones((1, a, b, c))))

Hello Andy,
Thanks for bringing this to our attention.  I verified that this operation indeed raises an error during the broadcast attempt.  Just today we have updated the MultivariateNormal API (PR).  I verified that your example works in the new API.  For your reference, in the new API you would do:
mvn = tf.contrib.distributions.MultivariateNormalFull(mu, sigma)

This defines an MVN via the full covariance matrix.  Also see MultivariateNormalCholesky.  I'll add MultivariateNormalDiag soon as well.

@langmore very cool! Looking forward to the new tools. I'll close this issue.


LV2 Worker feature

Hey there,
Thank you for this repo!
I am pretty new to both Rust and LV2, but this is my attempt to add support for the LV2 Worker feature. It's still a work in progress and not yet adequately tested (like, not at all) but I figured now would be a good time to open a draft PR and potentially get some feedback if possible as the basic structure is there.
Honestly this was pretty challenging and I had to use a lot of unsafe code that made me a bit uncomfortable. But I guess the worker feature is unsafe by nature - running the plugin in the real-time thread while it simultaneously does work in another thread is pretty much the definition of unsafe.
Here is some pseudo-code of how I intended it to work:
let instance = plugin.instantiate(...)
let worker = instance.get_worker().unwrap()

// In real-time thread:
plugin.run()

// In another thread
while(plugin_is_alive) {
  worker.do_work()
}

I am not yet sure how to make sure the worker does not outlive the plugin instance - I have a bit to learn yet on rust lifetimes.

If I understand correctly, worker.do_work should be run continuously as long as the plugin instance is alive. The plugin instance dies during Instance::drop. If that's the case, how about:
struct Instance {
    ...
    is_alive: std::sync::Arc<std::sync::Mutex<bool>>, // true while alive
}
let instance = plugin.instantiate(...)
struct Worker {
    ...
    is_alive: std::sync::Arc<std::sync::Mutex<bool>>, // shared with instance
}
let worker = instance.get_worker().unwrap()

// In real-time thread:
plugin.run()

// In thread where items are dropped. Hopefully not realtime, but things happen lol.
// In the drop method:
//    1. is_alive mutex will attempt to lock. May have to wait if `worker.do_work` is running.
//    2. is_alive is set to false. `worker.do_work` should no longer do anything.
//    3. the underlying `lilv::instance::ActiveInstance` drop methods are run and `worker.do_work` should no longer run.
drop(plugin)

// In another thread.
let is_alive = worker.is_alive.lock().unwrap();
while(is_alive) {
  worker.do_work()
}
drop(is_alive); // Release the mutex. This happens implicitly so no need to manual drop.

Thanks for the mutex suggestion, that should work well - I forgot we could lock a mutex in the drop method. I have implemented it pretty much as you described. I've also added a WorkerManager to run workers and drop them when their respective plugin is no longer alive.
So, intended usage is now:
let worker_manager = WorkerManager::new();

let instance = plugin.instantiate(...);

if let Some(worker) = instance.get_worker() {
  worker_manager.add_worker(worker);
}

// real-time thread
instance.run()

// non-real-time thread/main loop
while(true) {
  worker_manager.run_workers();
  // wait a short time or do something else
}

What else would you need done to get this into a merge-able state?
I would ideally want to have some unit tests that demonstrate this working with a plugin that uses the worker feature. One such plugin is the setBfree organ. I don't love the idea of having to install third party plugins just to make unit tests pass, but I guess that is a lot less work than writing plugin code into this library as well. I did some reading on mocking in rust to see if it was possible to mock out lilv library components but it seems like we'd have to substantially change the plugin.rs code to hide the ActiveInstance and lilv::plugin::Plugin behind traits. What do you think?

Testing a plugin is the safest thing. For example, src/lib.rs has test_mda_epiano. You can do something similar with setBfree organ. For GitHub actions, you can add setbfree to .github/workflows/test.yml line 19.
Eventually, I'd like to test most plugins anyways.

I think the lint error can be resolved with adding the following to the affected structs/functions
#[allow(clippy::mutex_atomic)] We definitely don't want AtomicBool as holding the lock is desired.

Have updated per your feedback! It looks to be in reasonable shape now I think except I still need to add a test. I'll try to work on writing a test that uses setBFree or similar to schedule and perform some work, I guess all in a single thread and calling worker.do_work() between calls to instance.run().
I agree it's nice to test real plugins, and ideally many, but that is a lot of work. I wonder if there is a plugin out there written for test purposes that implements as many features as possible, or perhaps that would be a useful thing to develop in parallel with a library like livi. The other thing I noticed is each test that loads a plugin takes a while to set up because lilv has to initialize all the plugins, which will get out of hand pretty quickly as you add more tests. I think that would be avoided by adding support for load_bundle though, so perhaps I can try that.

I tried running your fork with http://gareus.org/oss/lv2/b_synth and there seem to be issues with the way livi is handling midi/events.
Good news is I managed to fix the issues (by referencing jalv) and will push out a fix this weekend. Other than that, this PR seems to work!

WIP: https://github.com/wmedrano/livi-rs/pull/13

Thanks, I have rebased and written an integration test. I ended up using eg-sampler instead of b_synth because it was much easier to figure out how to build a message to trigger some work to be done. The test file is hopefully self-explanatory, but in summary:

we write a sample to a file
we load the sample in the sampler plugin (using the worker feature)
we play the sample to prove it loaded correctly

For some reason the tests are failing on github. I'm not sure what is happening there. I tried scoping the tests command in the workflow file to only run my new test (cargo test --verbose test_sampler -- --nocapture) and it ran fine, so perhaps another test is failing?

There is a seg fault when getting the worker interface from the eg-metro plugin which has extension_data = NULL. I think this could be a bug with the lv2_raw lib so I opened an issue there: https://github.com/poidl/lv2_raw/issues/4
I'll try to come up with a workaround to check if extension_data is null but not sure how to do that!

Looks like this can be fixed in lilv_sys.
wmedrano@donuts:~/Git/ctsexton/livi-rs$ valgrind /home/wmedrano/Git/ctsexton/livi-rs/target/debug/deps/livi-d656d3ff69ab653a test_all_plugins --nocapture
==25281== Memcheck, a memory error detector
==25281== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==25281== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
==25281== Command: /home/wmedrano/Git/ctsexton/livi-rs/target/debug/deps/livi-d656d3ff69ab653a test_all_plugins --nocapture
==25281==
==25281== Syscall param statx(file_name) points to unaddressable byte(s)
==25281==    at 0x4B479FE: statx (statx.c:29)
==25281==    by 0x204B50: statx (weak.rs:139)
==25281==    by 0x204B50: std::sys::unix::fs::try_statx (fs.rs:139)
==25281==    by 0x2013A2: std::sys::unix::fs::stat (fs.rs:1188)
==25281==    by 0x1C5A54: metadata<&std::path::PathBuf> (fs.rs:1636)
==25281==    by 0x1C5A54: get_dbpath_for_term (searcher.rs:50)
==25281==    by 0x1C5A54: from_name (mod.rs:83)
==25281==    by 0x1C5A54: from_env (mod.rs:69)
==25281==    by 0x1C5A54: new<std::io::stdio::Stdout> (mod.rs:159)
==25281==    by 0x1C5A54: test::term::stdout (term.rs:33)
==25281==    by 0x1B1D55: test::console::run_tests_console (console.rs:255)
==25281==    by 0x1C7B64: test::test_main (lib.rs:124)
==25281==    by 0x1C8C70: test::test_main_static (lib.rs:143)
==25281==    by 0x12FFA2: livi::main (lib.rs:1)
==25281==    by 0x139A0A: core::ops::function::FnOnce::call_once (function.rs:227)
==25281==    by 0x18323D: std::sys_common::backtrace::__rust_begin_short_backtrace (backtrace.rs:123)
==25281==    by 0x14ABB0: std::rt::lang_start::{{closure}} (rt.rs:145)
==25281==    by 0x1FD3CA: call_once<(), (dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe)> (function.rs:259)
==25281==    by 0x1FD3CA: do_call<&(dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe), i32> (panicking.rs:406)
==25281==    by 0x1FD3CA: try<i32, &(dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe)> (panicking.rs:370)
==25281==    by 0x1FD3CA: catch_unwind<&(dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe), i32> (panic.rs:133)
==25281==    by 0x1FD3CA: {closure#2} (rt.rs:128)
==25281==    by 0x1FD3CA: do_call<std::rt::lang_start_internal::{closure#2}, isize> (panicking.rs:406)
==25281==    by 0x1FD3CA: try<isize, std::rt::lang_start_internal::{closure#2}> (panicking.rs:370)
==25281==    by 0x1FD3CA: catch_unwind<std::rt::lang_start_internal::{closure#2}, isize> (panic.rs:133)
==25281==    by 0x1FD3CA: std::rt::lang_start_internal (rt.rs:128)
==25281==  Address 0x0 is not stack'd, malloc'd or (recently) free'd
==25281==
==25281== Syscall param statx(buf) points to unaddressable byte(s)
==25281==    at 0x4B479FE: statx (statx.c:29)
==25281==    by 0x204B50: statx (weak.rs:139)
==25281==    by 0x204B50: std::sys::unix::fs::try_statx (fs.rs:139)
==25281==    by 0x2013A2: std::sys::unix::fs::stat (fs.rs:1188)
==25281==    by 0x1C5A54: metadata<&std::path::PathBuf> (fs.rs:1636)
==25281==    by 0x1C5A54: get_dbpath_for_term (searcher.rs:50)
==25281==    by 0x1C5A54: from_name (mod.rs:83)
==25281==    by 0x1C5A54: from_env (mod.rs:69)
==25281==    by 0x1C5A54: new<std::io::stdio::Stdout> (mod.rs:159)
==25281==    by 0x1C5A54: test::term::stdout (term.rs:33)
==25281==    by 0x1B1D55: test::console::run_tests_console (console.rs:255)
==25281==    by 0x1C7B64: test::test_main (lib.rs:124)
==25281==    by 0x1C8C70: test::test_main_static (lib.rs:143)
==25281==    by 0x12FFA2: livi::main (lib.rs:1)
==25281==    by 0x139A0A: core::ops::function::FnOnce::call_once (function.rs:227)
==25281==    by 0x18323D: std::sys_common::backtrace::__rust_begin_short_backtrace (backtrace.rs:123)
==25281==    by 0x14ABB0: std::rt::lang_start::{{closure}} (rt.rs:145)
==25281==    by 0x1FD3CA: call_once<(), (dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe)> (function.rs:259)
==25281==    by 0x1FD3CA: do_call<&(dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe), i32> (panicking.rs:406)
==25281==    by 0x1FD3CA: try<i32, &(dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe)> (panicking.rs:370)
==25281==    by 0x1FD3CA: catch_unwind<&(dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe), i32> (panic.rs:133)
==25281==    by 0x1FD3CA: {closure#2} (rt.rs:128)
==25281==    by 0x1FD3CA: do_call<std::rt::lang_start_internal::{closure#2}, isize> (panicking.rs:406)
==25281==    by 0x1FD3CA: try<isize, std::rt::lang_start_internal::{closure#2}> (panicking.rs:370)
==25281==    by 0x1FD3CA: catch_unwind<std::rt::lang_start_internal::{closure#2}, isize> (panic.rs:133)
==25281==    by 0x1FD3CA: std::rt::lang_start_internal (rt.rs:128)
==25281==  Address 0x0 is not stack'd, malloc'd or (recently) free'd
==25281==

running 1 test
Testing block_size 64 with plugin: http://lv2plug.in/plugins/eg-metro
Get instance
Get extension data
==25281== Thread 2 tests::test_all_:
==25281== Jump to the invalid address stated on the next line
==25281==    at 0x0: ???
==25281==    by 0x14AE62: lilv_instance_get_extension_data (inline_fns.rs:106)
==25281==    by 0x14AE62: lilv::instance::Instance::extension_data (instance.rs:115)
==25281==    by 0x16EFD5: livi::features::worker::maybe_get_worker_interface (worker.rs:153)
==25281==    by 0x17986A: livi::plugin::Plugin::instantiate (plugin.rs:103)
==25281==    by 0x15439D: livi::tests::test_all_plugins (lib.rs:338)
==25281==    by 0x17B4B9: livi::tests::test_all_plugins::{{closure}} (lib.rs:291)
==25281==    by 0x13995D: core::ops::function::FnOnce::call_once (function.rs:227)
==25281==    by 0x1D2D72: call_once<fn(), ()> (function.rs:227)
==25281==    by 0x1D2D72: test::__rust_begin_short_backtrace (lib.rs:585)
==25281==    by 0x1D17F3: call_once<(), (dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global> (boxed.rs:1694)
==25281==    by 0x1D17F3: call_once<(), alloc::boxed::Box<(dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global>> (unwind_safe.rs:271)
==25281==    by 0x1D17F3: do_call<core::panic::unwind_safe::AssertUnwindSafe<alloc::boxed::Box<(dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global>>, ()> (panicking.rs:406)
==25281==    by 0x1D17F3: try<(), core::panic::unwind_safe::AssertUnwindSafe<alloc::boxed::Box<(dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global>>> (panicking.rs:370)
==25281==    by 0x1D17F3: catch_unwind<core::panic::unwind_safe::AssertUnwindSafe<alloc::boxed::Box<(dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global>>, ()> (panic.rs:133)
==25281==    by 0x1D17F3: run_test_in_process (lib.rs:608)
==25281==    by 0x1D17F3: test::run_test::run_test_inner::{{closure}} (lib.rs:500)
==25281==    by 0x19DA4D: {closure#1} (lib.rs:527)
==25281==    by 0x19DA4D: std::sys_common::backtrace::__rust_begin_short_backtrace (backtrace.rs:123)
==25281==    by 0x1A2857: {closure#0}<test::run_test::run_test_inner::{closure#1}, ()> (mod.rs:484)
==25281==    by 0x1A2857: call_once<(), std::thread::{impl#0}::spawn_unchecked::{closure#1}::{closure#0}> (unwind_safe.rs:271)
==25281==    by 0x1A2857: do_call<core::panic::unwind_safe::AssertUnwindSafe<std::thread::{impl#0}::spawn_unchecked::{closure#1}::{closure#0}>, ()> (panicking.rs:406)
==25281==    by 0x1A2857: try<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::{impl#0}::spawn_unchecked::{closure#1}::{closure#0}>> (panicking.rs:370)
==25281==    by 0x1A2857: catch_unwind<core::panic::unwind_safe::AssertUnwindSafe<std::thread::{impl#0}::spawn_unchecked::{closure#1}::{closure#0}>, ()> (panic.rs:133)
==25281==    by 0x1A2857: {closure#1}<test::run_test::run_test_inner::{closure#1}, ()> (mod.rs:483)
==25281==    by 0x1A2857: core::ops::function::FnOnce::call_once{{vtable-shim}} (function.rs:227)
==25281==    by 0x204442: call_once<(), dyn core::ops::function::FnOnce<(), Output=()>, alloc::alloc::Global> (boxed.rs:1694)
==25281==    by 0x204442: call_once<(), alloc::boxed::Box<dyn core::ops::function::FnOnce<(), Output=()>, alloc::alloc::Global>, alloc::alloc::Global> (boxed.rs:1694)
==25281==    by 0x204442: std::sys::unix::thread::Thread::new::thread_start (thread.rs:106)
==25281==  Address 0x0 is not stack'd, malloc'd or (recently) free'd
==25281==
==25281==
==25281== Process terminating with default action of signal 11 (SIGSEGV)
==25281==  Bad permissions for mapped region at address 0x0
==25281==    at 0x0: ???
==25281==    by 0x14AE62: lilv_instance_get_extension_data (inline_fns.rs:106)
==25281==    by 0x14AE62: lilv::instance::Instance::extension_data (instance.rs:115)
==25281==    by 0x16EFD5: livi::features::worker::maybe_get_worker_interface (worker.rs:153)
==25281==    by 0x17986A: livi::plugin::Plugin::instantiate (plugin.rs:103)
==25281==    by 0x15439D: livi::tests::test_all_plugins (lib.rs:338)
==25281==    by 0x17B4B9: livi::tests::test_all_plugins::{{closure}} (lib.rs:291)
==25281==    by 0x13995D: core::ops::function::FnOnce::call_once (function.rs:227)
==25281==    by 0x1D2D72: call_once<fn(), ()> (function.rs:227)
==25281==    by 0x1D2D72: test::__rust_begin_short_backtrace (lib.rs:585)
==25281==    by 0x1D17F3: call_once<(), (dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global> (boxed.rs:1694)
==25281==    by 0x1D17F3: call_once<(), alloc::boxed::Box<(dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global>> (unwind_safe.rs:271)
==25281==    by 0x1D17F3: do_call<core::panic::unwind_safe::AssertUnwindSafe<alloc::boxed::Box<(dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global>>, ()> (panicking.rs:406)
==25281==    by 0x1D17F3: try<(), core::panic::unwind_safe::AssertUnwindSafe<alloc::boxed::Box<(dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global>>> (panicking.rs:370)
==25281==    by 0x1D17F3: catch_unwind<core::panic::unwind_safe::AssertUnwindSafe<alloc::boxed::Box<(dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global>>, ()> (panic.rs:133)
==25281==    by 0x1D17F3: run_test_in_process (lib.rs:608)
==25281==    by 0x1D17F3: test::run_test::run_test_inner::{{closure}} (lib.rs:500)
==25281==    by 0x19DA4D: {closure#1} (lib.rs:527)
==25281==    by 0x19DA4D: std::sys_common::backtrace::__rust_begin_short_backtrace (backtrace.rs:123)
==25281==    by 0x1A2857: {closure#0}<test::run_test::run_test_inner::{closure#1}, ()> (mod.rs:484)
==25281==    by 0x1A2857: call_once<(), std::thread::{impl#0}::spawn_unchecked::{closure#1}::{closure#0}> (unwind_safe.rs:271)
==25281==    by 0x1A2857: do_call<core::panic::unwind_safe::AssertUnwindSafe<std::thread::{impl#0}::spawn_unchecked::{closure#1}::{closure#0}>, ()> (panicking.rs:406)
==25281==    by 0x1A2857: try<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::{impl#0}::spawn_unchecked::{closure#1}::{closure#0}>> (panicking.rs:370)
==25281==    by 0x1A2857: catch_unwind<core::panic::unwind_safe::AssertUnwindSafe<std::thread::{impl#0}::spawn_unchecked::{closure#1}::{closure#0}>, ()> (panic.rs:133)
==25281==    by 0x1A2857: {closure#1}<test::run_test::run_test_inner::{closure#1}, ()> (mod.rs:483)
==25281==    by 0x1A2857: core::ops::function::FnOnce::call_once{{vtable-shim}} (function.rs:227)
==25281==    by 0x204442: call_once<(), dyn core::ops::function::FnOnce<(), Output=()>, alloc::alloc::Global> (boxed.rs:1694)
==25281==    by 0x204442: call_once<(), alloc::boxed::Box<dyn core::ops::function::FnOnce<(), Output=()>, alloc::alloc::Global>, alloc::alloc::Global> (boxed.rs:1694)
==25281==    by 0x204442: std::sys::unix::thread::Thread::new::thread_start (thread.rs:106)
==25281==
==25281== HEAP SUMMARY:
==25281==     in use at exit: 40,082,657 bytes in 609,753 blocks
==25281==   total heap usage: 1,684,340 allocs, 1,074,587 frees, 104,765,496 bytes allocated
==25281==
==25281== LEAK SUMMARY:
==25281==    definitely lost: 7,560 bytes in 158 blocks
==25281==    indirectly lost: 14,280 bytes in 447 blocks
==25281==      possibly lost: 18,583 bytes in 395 blocks
==25281==    still reachable: 40,042,234 bytes in 608,753 blocks
==25281==         suppressed: 0 bytes in 0 blocks
==25281== Rerun with --leak-check=full to see details of leaked memory
==25281==
==25281== For lists of detected and suppressed errors, rerun with: -s
==25281== ERROR SUMMARY: 4 errors from 3 contexts (suppressed: 0 from 0)
Segmentation fault (core dumped)

==25281==    by 0x14AE62: lilv_instance_get_extension_data (inline_fns.rs:106)
I'll put in a fix.

Possible workaround: use std::mem::transmute to cast to Option<_> in https://github.com/wmedrano/lilv-sys-rs/blob/master/src/inline_fns.rs#L106
Casting example: https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=a634e1418d134bbb651a02b64f28dd94


More granular install_site

In a lot of ways, I want the functionality of the following line:
install_site = TRUE
Here is a problem: when I have an existing codebase, this line blows away my settings.php file.
In some sites I work on, this is the place in which global configuration is placed. It also may contain database settings, and such.
Blowing this away with Drupal's default.settings.php, while desirable for spinning up a brand new site, is not ideal for an existing code base.
However, I do want the ability for the following:

DrupalVM to provision a local database and database account
DrupalVM to (optionally) provision an environment-specific 'sandbox.settings.php' in lieu of overwriting settings.php, integration with settings.php and/or the host name settings to effectively bootstrap upon install

I am more than confident you have thought of this but I have yet to determine how to set this up.

Oh, and, what would be really slick is if I can somehow pull down an existing database to perform the site install (whether that's a local SQL file or a Drush alias)

Not sure if there's a good way to solve this as the drush installation step just calls Drupal cores drupal_rewrite_settings function.
Where I work we do the following:

install_site set to false.
a sites/default/example.settings.local.php configured for the VM
a note in the projects README about copying this to settings.local.php and running the drush sql-sync @production @dev command.

The two last steps could be added to a post provisioning script.

@oxyc I don't foresee a need to always invoke Drupal's built-in installation. The term "install_site" is a bit ambiguous then.
I think there is merit to evaluating some more granular configuration where we separate the installation of DrupalVM's database and other scaffolding needed (like the set up of a VirtualHost) from DrupalVM's site installation routine.
Some configuration like "provision_database", "provision_vhost", "provision_drupal_site" (equating to a DrupalVM specific multi site), etc would be really beneficial.

Might need some better docs. The only tasks that are done if install_site is set to true are:

drush si to install the site (Drupals install.php)
Enable the modules set in drupal_enable_modules

Neither of these are something you want to do when importing an existing database and it seems like these are the only two steps you wish to exclude.

I believe @geerlingguy mentioned he would be interested in adding ansible tags if vagrant adds support for it. Meaning that if vagrant supported  vagrant provision --tags=database, Drupal VM would add support as well. Currently that's not the case though.

Sorry for spamming... One last thing. The site installation will only occur during the first provision when drush status bootstrap informs us that it's not installed yet. Any provision done after will not invoke the site installation.

@oxyc - you bring up a great point. We should really emphasize the use cases and try to articulate them more clearly. I'm not fully convinced this doesn't warrant some development attention. As such, here goes:

As a developer, I want to provision a DrupalVM from an existing code base and an existing database (from alias or from SQL)
As a developer, I want the ability to bring over aliases from my local system to use within DrupalVM for remote sites
As a developer, I want documentation (and configuration templates) for the various ways to configure DrupalVM for new sites or existing sites
As a developer, I want to have the ability to configure DrupalVM to not overwrite a standard settings.php file that ships with an existing codebase.

I would be curious to discuss this with @oxyc or @geerlingguy

As a developer, I want to provision a DrupalVM from an existing code base and an existing database (from alias or from SQL)

Currently not supported. My personal opinion would be that an example post provisioning script would be enough. Otherwise might be something worth adding to geerlingguy.drupal if it gets cleaned up.

As a developer, I want the ability to bring over aliases from my local system to use within DrupalVM for remote sites

The way I see it is a project should be entirely contained within a version controlled repository. Currently you can store drush aliases in sites/all/drush which is what I do for work. I feel this solves this issue.

As a developer, I want documentation (and configuration templates) for the various ways to configure DrupalVM for new sites or existing sites

This is a constant work in progress and needs improvement for sure. http://docs.drupalvm.com/en/latest/deployment/local-codebase/ covers some of these already.

As a developer, I want to have the ability to configure DrupalVM to not overwrite a standard settings.php file that ships with an existing codebase.

Setting install_site: false solves this right?

This was kind of the idea behind the Yeoman config generator, to abstract the config overrides to question prompts that explain it a bit more.
https://github.com/kevinquillen/generator-drupalvm
In any case, this is something that is likely solvable from updating or extending on the current documentation.

My personal opinion would be that an example post provisioning script would be enough.

I actually value DrupalVM because I don't have to script around it :) I'd love to find some way to incorporate this because I see it as a principle use case for installing a local VM and working with an existing site locally.

The way I see it is a project should be entirely contained within a version controlled repository

While I agree, I think most hosting providers and agencies maintain their aliases outside of repositories to centrally control them. It would be helpful if DrupalVM provided a construct to specify a list of local alias files (e.g. ~/.drush/mysite.aliases.php, ~/.drush/mysite2.aliases.php) to bring over and install upon provision.

Setting install_site: false solves this right?

Yes, but there may be merit to having another utility upon provision to create a DrupalVM specific settings file, as noted before.
Maybe an additional user story is:
As a developer, I want my DrupalVM specific settings to be added into my code-base as it's own settings file and potentially as it's own site.
Adding hooks to do so would be a huge time saver, in my opinion.

@kevinquillen I'm not familiar with the approach, but if it solves one or more of the user stories I mentioned, I'd be happy to try it

My personal opinion would be that an example post provisioning script would be enough.

I actually value DrupalVM because I don't have to script around it :) I'd love to find some way to incorporate this because I see it as a principle use case for installing a local VM and working with an existing site locally.

True, and me too :) My concern is that there's quite a few steps to integrate this properly. Eg. in my case I need to use a ssh proxy to access our production environments as I keep signing in from weird IP locations around the globe. The VM also need to have the private key required to access production. And then we need to have ansible fetch and authorize the RSA fingerprints. There are probably more scenarios which I missed.

The way I see it is a project should be entirely contained within a version controlled repository

While I agree, I think most hosting providers and agencies maintain their aliases outside of repositories to centrally control them. It would be helpful if DrupalVM provided a construct to specify a list of local alias files (e.g. ~/.drush/mysite.aliases.php, ~/.drush/mysite2.aliases.php) to bring over and install upon provision.

Oh. You mean you have a separate repository for aliases only or how do you distribute these to everyone in the organisation? Also, why is this better than bundling the aliases with the repo in question?

Setting install_site: false solves this right?

Yes, but there may be merit to having another utility upon provision to create a DrupalVM specific settings file, as noted before.

I agree, this would make a nice addition now that Drupal actually has core support for it!

I'm going to close this in favor of keeping the discussion around #305.
For personal use, I have about 12 clones of Drupal VM with different config.yml files and different post-provisioning scripts, along with self-managed Drush alias files that allow me to do things like:
drush @mysite.live sql-dump | drush @mysite.local sql-cli

That syncs the database back. Then I have another drush command, or a shell script, ansible playbook, etc., that resets everything locally.
In a team environment, there might be a set of Phing tasks, or a shell script, etc. that is called to finish the provisioning or resetting of a local developer's environment.
But in general, overarching changes to the individual "site synchronization" or "reset" (I shy away from calling that installation, because in my mind install means you have no database, no files... just a codebase, and you install a fresh database with either a standin local.settings.php or just a fresh new settings.php) will go into something like a Drupal VM 3.0, or even a side project like Lunchbox.
Acquia has an internal system called 'Bolt' that manages all those aspects (building, syncing, testing, resetting and debugging a site that's installed inside Drupal VM). I don't want to maintain both a development environment and a full deployment system all in one—there are too many variables there to make a nice, simple, maintainable solution.
I'd rather the deployment/synchronization solutions be managed separately. For myself, that almost always means a drush alias and a couple shell scripts.

Also, for team-based aliases, I do something like a drush-aliases.sh script inside the scripts directory:
#!/bin/bash
#
# Configure Drush aliases for Sysco Intranet VMs.

DRUSH_HOME=/home/vagrant/.drush

mkdir -p $DRUSH_HOME
chown vagrant:vagrant $DRUSH_HOME
chmod 775 $DRUSH_HOME
cp /vagrant/scripts/projectname.aliases.drushrc.php $DRUSH_HOME/projectname.aliases.drushrc.php

And then I just stick the aliases (e.g. live, test, local) into projectname.aliases.drushrc.php next to the shell script.

I read over #305 and yes I think it makes sense.
I was thinking of creating a DrupalVM utilities Ansible role for these types of use cases. I may explore this on my own accord with the intent as a bolt-on set of candidate functionality.

Any plans for Acquia to release Bolt? ;) For deployment I'm using capistrano and love it.

I hope, but not my battle to fight right now :(
Have you seen the ansistrano role for Ansible?

Oh, I haven't. I'll take a look. Thanks

Nice, saw that Acquia recently released Bolt 👍

@oxyc - Was it formally announced anywhere yet? I know they stuck it on GitHub... but I've been waiting for a more formal announcement before spreading the good news elsewhere :/

Not that I've seen. I just found it by snooping around randomly. I solved one of the issues with my own base repo thanks to it.


Add new report module

"Probes" are meant to be inserted into pipelines to "probe" data that flies by.  This is different from a "report" that reports on data/state outside a pipeline.
To differentiate between them, I would like to create report.py and add report-like functions there.  (And possibly migrate existing probe functions to that space.  I know there is at least one probe in distributed that will be so moved.)

Hi Mark—
I like the names (they're intuitive).  In my mind though, anything that could be dropped into an operator pipeline should be called a probe.
If I understand your examples (like use of log_worker_location() in leap_ec.distributed.asynchronous), what you have in mind for a report is a function that takes one or more intidivuals as inputs, but returns None.
But if you just add return individual to the end of log_worker_location(), then it becomes a true probe, eh?  And then people have the flexibility to either put it in the pipeline directly, or call it as part of their extra-pipeline evolution logic.
I dunno.  Do you have an example of a report that wouldn't make sense if we doubled it as an operator?  In my mind a true report might be something that aggregates statistics over an entire run or multiple runs (in which case a probe approach may make less sense).


update readme to include link to repo aligned with videos

As discussed in #25, readme update to reference repo associated with videos @shiffman


Declare typingsInstaller as optional for ProjectService

Fixes #53803, see https://github.com/typescript-eslint/typescript-eslint/pull/6754/files#r1161949194
The code already handled undefined.

Done, though that required a code change.


css styles that have the same properties in variations can cause styling problems？

example
css({
 variants: {
    size: {
      sm: {
        '.lu-badge__dot': {
          minWidth: `{size.badge.sm}`,
          height: `{size.badge.sm}`
        }
      },
      default: {
        '.lu-badge__dot': {
           minWidth: 'default',
          height: 'default'
        }
      },
      options: {
        default: 'default'
      }
    },
    dot: {
      true: {
        '.lu-badge__dot': {
          minWidth: '{size.badge.dotSize}',
          height: '{size.badge.dotSize}',
          fontSize: '0px',
        }
      },
      options: {
        default: false
      }
    }
  }
})

generate css style is
{
     min-width: var(--size-badge-default);
     height: var(--size-badge-default);
}

Perhaps we can refer to @layer's mechanism to solve this problem
@layer doc is here https://developer.mozilla.org/en-US/docs/Web/CSS/@layer

Could you go deeper and explain how using @layer would help in fixing this issue?
Targeting the same selector and same attribute with two different rules will obviously lead to precedence issues.


Turn on CSRF protection

Also deleted patch of Rails method handle_unverified_request
I don't know why forgery protection was not turned on in ror4.  Maybe I misunderstood the documentation and thought it was on by default.
Questions:

Will raising an exception and deleting our patch of handle_unverified_request work with the API? It would be helpful if @raysuelzer and @pellaea could review the notes at http://api.rubyonrails.org/classes/ActionController/RequestForgeryProtection.html to see if the changes will work with the API.
Do we use persistent cookies to store user information?  See http://guides.rubyonrails.org/security.html#csrf-countermeasures

This will probably break the ajax controllers.
Ray Suelzer
Mobile:<PHONE_NUMBER>
On Wed, Feb 4, 2015 at 11:40 AM, Joseph D. Cohen<EMAIL_ADDRESS>wrote:

Also deleted patch of Rail method handle_unverified_request
I don't know why forgery protection was not turned on in ror4. Maybe I
misunderstood the documentation and thought it was on by default.
Questions:

Will raising an exception and deleting our patch of
handle_unverified_request work with the API? It would be helpful if
@raysuelzer https://github.com/raysuelzer and @pellaea
https://github.com/pellaea could review the notes at
http://api.rubyonrails.org/classes/ActionController/RequestForgeryProtection.html
to see if the changes will work with the API.
Do we use persistent cookies to store user information? See
http://guides.rubyonrails.org/security.html#csrf-countermeasures

You can view, comment on, or merge this pull request online at:
https://github.com/MushroomObserver/mushroom-observer/pull/68
Commit Summary

Turn on CSRF protection

File Changes

M app/controllers/application_controller.rb
https://github.com/MushroomObserver/mushroom-observer/pull/68/files#diff-0
(14)

Patch Links:

https://github.com/MushroomObserver/mushroom-observer/pull/68.patch
https://github.com/MushroomObserver/mushroom-observer/pull/68.diff

--
Reply to this email directly or view it on GitHub
https://github.com/MushroomObserver/mushroom-observer/pull/68.

Coverage increased (+0.01%) to 83.91% when pulling b938bae67ff0938162ec1ce17a3d5174e0101087 on JoeCohen:csrf into c252da5119c25f2290d4d21dc227c297c972961f on MushroomObserver:ror4.

Can probably (and probably should!) turn of csrf for api.
Cookies are used to store the user_id (for autologin, see also session
below), and as a hacky way to report the user's timezone back to the server.
We mostly use the session (stored in cookie, I think, because it has the
best performance, despite being limited in size) for the user id.  But also
a couple other non-sensitive things:
:notice -- The flash_notice/warning/error message.  (I've never liked how
this mechanism works, despite it apparently being a golden standard in
rails.  It's not RESTful and results in error message ending up displaying
in the wrong tab frequently.  Yuck.)
'return-to' -- The "back to" address in some cases, an old throwback to MO
days before even I signed on.  You've probably all seen the
"store_location" at the top of a lot of actions.  It stores "safe" fallback
points periodically so that after, for example, logging in, it knows where
to go afterward.  In general it was a bad idea, and if you use multi-tab
browsing, it frequently results in confusing behavior.  It's not RESTful, I
really need say no more, I think.
:checklist_source -- May be obsolete.  Used to have something to do with
prepopulating list of names in create_species_list.
:js_override -- I think this mechanism is now broken, and unused, too.
Used to be able to override the auto-detecction of whether you had
js-capable browser or not.
:pattern -- Last search pattern.  I'm okay with this use: it just allows
page to keep the last search pattern in the search bar from page to page as
a handy default.
:theme, :layout -- Don't remember what if anything these are used for.
:admin -- Turns on "admin" mode.  Quick and dirty, only affects Nathan and
me, I'm fine with it.
:hide_thumbnail_maps, :thumbnail_size -- Allows users who aren't logged in
to change thumbnail size (and hide maps?).  This seems entirely appropriate
and harmless.
-Jason
On Wed, Feb 4, 2015 at 11:46 AM, Coveralls<EMAIL_ADDRESS>wrote:

[image: Coverage Status] https://coveralls.io/builds/1864739
Coverage increased (+0.01%) to 83.91% when pulling b938bae
https://github.com/MushroomObserver/mushroom-observer/commit/b938bae67ff0938162ec1ce17a3d5174e0101087
on JoeCohen:csrf into c252da5
https://github.com/MushroomObserver/mushroom-observer/commit/c252da5119c25f2290d4d21dc227c297c972961f
on MushroomObserver:ror4.
—
Reply to this email directly or view it on GitHub
https://github.com/MushroomObserver/mushroom-observer/pull/68#issuecomment-72924440
.

Which will probably break the ajax controller:
(a) forgery protection in general,
(b) forgery protection with: :exception,
(c) using Rails' native handle_unverified_request,
(d) other?
Do we have tests which will detect whether this breaks the controller?  (All current tests passed.)

I suspect it doesn't break api.  CSRF is enforced by a before_filter, and
I have almost all filters disabled for api.  You could try disabling
skip_filter   :verify_authenticity_token

in self.disable_filters in app_controller.rb.  That might cause
api_controller_test.rb to fail if it tests any posts.
-Jason
On Wed, Feb 4, 2015 at 12:31 PM, Joseph D. Cohen<EMAIL_ADDRESS>wrote:

Which will probably break the ajax controller:
(a) forgery protection in general, (b) forgery protection with:
:exception, (c) using Rails' native handle_unverified_request, (d) other?
Do we have tests which will detect whether this breaks the
controller? (All current tests passed.)

—
Reply to this email directly or view it on GitHub
https://github.com/MushroomObserver/mushroom-observer/pull/68#issuecomment-72932859
.


distance error

hello, I just saw that SondeHub indicated an error on the distance of the probe of about +10km, I checked my GPS point and the one indicated on SondeHub which is identical, but when I click on a probe, the distance is 10km higher than the real distance or by decoding with TTGOs, I took the GPS point of the probe and checked on google maps and I find 10km less than SondeHub indicates to me, thank you

This might be because the distance indicated on sondehub is the 'straight
line' distance (which includes the height of the balloon), which will be
longer than the distance over ground.
On Sat, 24 Dec 2022, 11:46 14ri004, @.***> wrote:

hello, I just saw that SondeHub indicated an error on the distance of the
probe of about +10km, I checked my GPS point and the one indicated on
SondeHub which is identical, but when I click on a probe, the distance is
10km higher than the real distance or by decoding with TTGOs, I took the
GPS point of the probe and checked on google maps and I find 10km less than
SondeHub indicates to me, thank you
[image: Capture]
https://user-images.githubusercontent.com/87615097/209416604-edfabae7-a1b8-461a-84e5-cc9039e046f9.PNG
—
Reply to this email directly, view it on GitHub
https://github.com/projecthorus/sondehub-tracker/issues/275, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAH57EZKCRNKL7Q73GIGXSTWOZFG3ANCNFSM6AAAAAATIFQR5Y
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

Hello mark, I'm thinking about it but 10 km makes a lot of difference, at the same time on RDZsonde and MysondyGo I have 10km less than on SondeHub, I'm going to double check today with two other friends to see if it comes from home (possible), I'll let you know what happens next, thank you and have a good end of the year

After looking at the code, I can confirm that the range used is the 'direct' range to the transmitter, wherever it may be in altitude, not the 'distance-over-ground'.
This is intended, as otherwise if you have a sonde almost above you, the range would be near 0, which is nonsensical.

indeed mark, after verification the probe was at 32000 m altitude, which could explain the difference in distance, thank you for your answer, and happy new year.


actool: default os and arch to GOOS and GOARCH

If the user isn't explicit add these labels as helpers.

lgtm.


Show Kernel ID and not Transaction ID in UTXO details

It was decided by Sasha to show Kerner ID and not Transaction ID in UTXO screen
@alexandrashelenkova  please change also in the design, so it will not confuse in future

Design here: https://zpl.io/29wO7Zd

Design here: https://zpl.io/V0Lqvmo

checked


Test_PR

High Level Description

This repo has @mesosphere-mergebot integration. You can interact with the following commands.
@@mesosphere-mergebot label [Ready For Review | question | enhancement | Work In Progress | invalid | bug | help wanted | duplicate | wontfix]
@@mesosphere-mergebot bump-ee ```
----

Additional Instructions:
PR creators can apply one of  <coroutine object RepoConfig.get_user_labels at 0x108530af0>. Owners can apply any label.

This repo has @mesosphere-mergebot integration. You can interact with the following commands.
@@mesosphere-mergebot label [bug | Ready For Review | Work In Progress | wontfix | help wanted | question | invalid | enhancement | duplicate]
@@mesosphere-mergebot bump-ee

Details:

PR creators can apply one of  ['Ready For Review', 'Work In Progress']. Owners can apply any label.

This repo has @mesosphere-mergebot integration. You can interact with the following commands.
@mesosphere-mergebot bump-ee @mesosphere-mergebot label [duplicate | Work In Progress | question | enhancement | Ready For Review | help wanted | bug | wontfix | invalid]

Details:

PR creators can apply one of  [Ready For Review| Work In Progress]. Owners can apply any label.

This repo has @mesosphere-mergebot integration. You can interact with the following commands.
@mesosphere-mergebot label [enhancement | duplicate | Work In Progress | Ready For Review | help wanted | question | wontfix | bug | invalid]
@mesosphere-mergebot bump-ee

Details:

PR creators can apply one of  [Ready For Review| Work In Progress]. Owners can apply any label.

This repo has @mesosphere-mergebot integration. You can interact with the following commands.
@mesosphere-mergebot bump-ee
@mesosphere-mergebot label [Work In Progress | bug | duplicate | Ready For Review | invalid | help wanted | question | enhancement | wontfix]

Details:

PR creators can apply one of  [Ready For Review| Work In Progress]. Owners can apply any label.

This repo has @mesosphere-mergebot integration. You can interact with the following commands.
@mesosphere-mergebot label [help wanted| Work In Progress| enhancement| invalid| question| bug| wontfix| duplicate| Ready For Review]
@mesosphere-mergebot bump-ee

Details:

PR creators can apply one of  [Ready For Review| Work In Progress]. Owners can apply any label.

This repo has @mesosphere-mergebot integration. You can interact with the following commands.
@mesosphere-mergebot bump-ee
@mesosphere-mergebot label [wontfix| help wanted| question| bug| invalid| Work In Progress| Ready For Review| enhancement| duplicate]

Details:

PR creators can apply one of  [Ready For Review| Work In Progress]. [Owners]https://github.com/mesosphere-mergebot/mesosphere-mergebot/blob/master/owners.json can apply any label.

This repo has @mesosphere-mergebot integration. You can interact with the following commands.
@mesosphere-mergebot label [help wanted| enhancement| duplicate| Work In Progress| Ready For Review| question| bug| wontfix| invalid]
@mesosphere-mergebot bump-ee

Details:

PR creators can apply one of  [Ready For Review| Work In Progress]. Owners can apply any label.

This repo has @mesosphere-mergebot integration. You can interact with the following commands.
@mesosphere-mergebot bump-ee
@mesosphere-mergebot label [question| Ready For Review| invalid| help wanted| wontfix| enhancement| Work In Progress| bug| duplicate]

Details:

PR creators can apply one of  [Ready For Review| Work In Progress]. Owners can apply any label.

This repo has @mesosphere-mergebot integration. You can interact with the following commands.
@mesosphere-mergebot label [invalid |Ready For Review |question |wontfix |enhancement |Work In Progress |bug |duplicate |help wanted]
@mesosphere-mergebot bump-ee

Details:

PR creators can apply one of  [Ready For Review |Work In Progress]. Owners can apply any label.


Ignition Notifications

I have my iTracMT-1V8 (H02 port 5013) working "correctly" with your TraccarDemo4 server.

Web/email notifications work correctly for example with the GeoFences, ...but I do not receive Ignition ON/OFF changes which are displayed (reversed) on the device screen.
Do I have to configure ignition notifications somewhere else?
THANKS

Please check following thread:
https://www.traccar.org/forums/topic/mistake-in-ignition/

From there i'm coming because you told me:
"That’s a completely different issue. Please don’t make a mess out of this thread"
...????

OK, I though you were talking about them being reversed. Is ignition information included in every message?

Status: TRUE / FALSE. This is what appears in the ATTRIBUTES column when I export reports:

What do you see in the "state" panel? Does it change there?

Ignition: toggles between YES and NO for each movement of the ignition-key.
I do not know if it can be related, but in the StatePanel the "Valid" field always stays in "NO" (and when exporting reports the "VALID" column always "FALSE")

Can I have access to the web console to take a look?

@tananaev
should we remove check for "valid" here? https://github.com/tananaev/traccar/blob/master/src/org/traccar/events/IgnitionEventHandler.java#L36

I didn't even realize we had it there. Yes, we should probably remove it.


help info needs to be larger

We've added so much to the help menu (the thing that pops up when you press F1) that it's all smooshed.
Let's make it a bit bigger.

I would love to work on this :)

It would be appreciated!
Let us know if you have any questions.
Thanks

@bexrr there are a few items in the help screen that are missing new lines \n.  Could you add those while you're in there?
https://github.com/dfirebaugh/spritely/blob/beb544f1d9894a717db6bbe02585a8db6ab14e52/src/input.c#L17


Write readme

[ ] To add a description to the repository, create a “README.md” file in the project root if it doesn't already exist.
[ ] Edit this content in markdown, it will be displayed automatically


Broken list in the included checklist inside readme

Seems like something went wrong when updating the markdown inside the readme file, probably related to #10

https://github.com/bahmutov/update-markdown/issues/6


Annotate with the controller-runtime unstructured client

We should drop the dependencies to the GitOps Toolkit API packages and use the controller-runtime unstructured client to annotate the GitOps Toolkit objects.

I am picking up this issue.


Clarity on names.md

https://github.com/DS219/spark-seprep/blob/ab7bfea06d7d27f3c340865628f7f8d7b5fc50c1/assignments/assignment3/assignment3.md?plain=1#L20
I thought it would be more clear if instead of <Their Name.md> it would be <P2 Name.md>
Same thing with line 52. Our group was a little confused at first so we did each other's names.
https://github.com/DS219/spark-seprep/blob/ab7bfea06d7d27f3c340865628f7f8d7b5fc50c1/assignments/assignment3/assignment3.md?plain=1#L52

I apologize for the confusion @ryanznie
Just add your name file to the folder.
For you, it will be ryan.md


Create an API Proxy

Tutorials: https://developers.sap.com/tutorials/hcp-apim-create-api.html
Hi, I notice from last update all interface and steps are changed, could you update the tutorial too?

@kulkarnir Please also update the author information. Thank you.

@kulkarnir can you please respond to this user's feedback?


Refactor Camera component to use libcamera

Updated Camera component to use libcamera instead of OpenCV, addresses Refactor System Reference Camera component to use libcamera#2106

Added libcamera @ bde9b04 git submodule

Added parameter for setting image resolution (instead of setting the value with a configImg command), addresses #15
Added CameraNotDetected and CameraCaptureFail events
Added documentation on how to build libcamera (natively and for other architectures), addresses Cleanup System Reference Documentation#2105

Future work includes adding cmake option for building the System Reference with or without libcamera

Added python script for processing images (to be ran on the ground)

Included documentation and example on how to run it
Removed ImageProcessor component since processing will be done on the ground

Documentation cleanup, addresses Cleanup System Reference Documentation#2105

Other changes included in this PR:

Add documentation for cross-compiling, addresses #11
Fix path to wiring diagram in README, addresses #45

Future work includes adding a section for hardware setup (including camera, actuator, etc.)

Will address the above comments/feedback in a separate issue nasa/fprime#2266


Installer says that nginx is unsupported but it is

According to the documentation, this version is supported, but the installer says otherwise

Same situation for 1.20.2-1-jammy
Ubuntu 22.04 for ARM

Hi @dumprop,
Thank you for reaching out! The issue is that ARM isn't supported, not that the nginx version isn't supported, we'll work on adjusting our installer to produce a better error message.
Closing the ticket - you can follow up on our progress to support ARM here.


Feature/wpml update

Thanks @tombroucke! Test changelog works with sitepress-multilingual-cms and wpml-string-translation but havent checked if the others follow the same markup pattern.


WIP unit test example

Description
Please include a summary of the change and which issue is fixed.
How Has This Been Tested?

[ ] Not applicable

Inverter type

[ ] Simulated inverter
[ ] Inverter type e.g. Growatt 1500 TL-X

Stick type

[ ] Shine X
[ ] Shine S
[ ] Lolin32
[ ] Nodemcu32

Does currently not compile because of missing WString in ArduinoFake
pio test -e test -vvv


Issues with DMARC wizard when an existing DMARC record already exists

Example URL(s)
https://dash.cloudflare.com/<account-id>/<zone-name>/email/dmarc-management/dmarc-reports/dmarc/wizard

Actual Behavior

The displayed value of the updated record is truncated.  On hover there is no tooltip to show the full value.  Because the new rua value is shown first, there's no way to verify that the existing rua is still present.
When editing the updated entry (via the ellipsis menu -> Edit at the right edge of the new entry), the user is taken to the DNS records screen with no records highlighted/editable.

Expected Behavior

There would be some way to see the full value of the updated record, to let the user confirm both the new and existing rua values are still present.
The updated record's edit link would open the DNS console with the new record editable.

Additional information
No response

Howdy @f3575115-4ae9-4a6c-a2ad-8bf54ce2cbb3, can pass along this feedback internally... but going to close out this issue b/c this is a documentation repo and the scope of that fix is outside our docs or anything in GitHub.


docs: add an exampel for withSequence recursion.

Add an exampel for step recursion.

Yes, withsequence -recursion is better！ This question came from my client, I searched with sequence and didn't find anything similar, so I wrote it

This question came from my client, I searched with sequence and didn't find anything similar, so I wrote it

By the way, this is good context to have. I would encourage writing some of this rationale in your PR descriptions as it helps to understand the background. Same way that I might link to a Slack conversation from a user in one of my PRs

Is it considered recursion? I thought I would see a template invoke itself or a template invoke something else which invoked itself, but I don't. Sorry, I may be missing something.

Is it considered recursion? I thought I would see a template invoke itself or a template invoke something else which invoked itself, but I don't. Sorry, I may be missing something.

It feels a bit like it. I can't think of a more suitable word to describe it right now.

Is it considered recursion?

Oh, you're right, it's not. I didn't even pay attention, good catch!
All the templates eventually call hello, so indeed there is no recursion or mutual recursion

It feels a bit like it. I can't think of a more suitable word to describe it right now.

Yea it is certainly a bit "meta" to use the outputs of a step to determine how many times to run the next step, although I also can't quite think of a term for that off the top of my head (if there is one) 🤔

Simplifying this in code I think makes it easier to understand:
import random

def entrypoint():
  for i in range(hello()):
    for j in range(hello()):
      hello()
    for j in range(hello()):
      hello()

def hello():
  result = random.randint(0,5)
  print(result)
  return result

In Argo's case there is a potentially interesting nuance that stdout is used as the result of a template, but otherwise it isn't as interesting in code

Looking at the code makes it a bit easier to identify -- maybe we just call this withSequence-nested?

May be it need a withSequence example.

You're right it is missing a withSequence example.
I'm not sure about including this one there however, as the walk through should have primarily simple examples, while this one takes a bit to comprehend.

May be it need a withSequence example.

You're right it is missing a withSequence example.
I'm not sure about including this one there however, as the walk through should have primarily simple examples, while this one takes a bit to comprehend.

I add a simple example, can you take a look? Thanks

Thank you very much！


Add Lasso X as a certified connector

This PR submits the connector for Lasso X to be certified.

I've gone ahead and removed all the Danish translations, even if it does mean a hit to Usability (Most of the terms used are financial concepts, which are hard to use in a translated fashion).


On tab open, CodeNav shows collapsed

When opening a code file, CodeNav displays as in below image:

I have to click the expand button twice.
I have looked for settings that might cause this, but I find nothing.

Hi, I have encountered something similar too.
The conditions for reproducing the problem in my case:
-codenav default window display mode is set to none
-codenav is open as a dockable window

The problem occurs every time I open visual studio.
If I click once in the codenav dockable window and clicks twice on a line of code problem disappears.


jet of pow using comp with exp, mul, log

This implementation is numerically unstable (the test begins to fail when the upper limit is about 35), but it's unclear if there's another way to implement jet of pow easily.
Co-authored-by: Jesse Bettencourt<EMAIL_ADDRESS>(@jessebett)
Co-authored-by: David Duvenaud<EMAIL_ADDRESS>(@duvenaud)

I guess the more numerically stable but also more expensive alternate would be to recursively apply the JVP rule?

@shoyer yeah you can see in the tests the function that looks like recursive calls to jvp:
https://github.com/google/jax/blob/c9c14c02d4c0e2ed6ebbc9bb4e6071a9d1c548fc/tests/jet_test.py#L33-L43
However this is significantly slower. Interesting to see if it's more numerically stable, though, because I'd expect the opposite. Not confident about intuition.

I guess the more numerically stable but also more expensive alternate would be to recursively apply the JVP rule?

I think 77b7d9b fixes this. I changed the primal_out propagated through the exp rule to be x ** y (before it was exp(y * log x).
I modified the tests in c75855b, to include the option to check jets on only finite values (by casting np.inf, -np.inf, and np.nan to np.nan). I also added separate lims (to keep the base x positive but allow the power y to be negative). With these modifications the tests for jet(pow) pass on a wide range of values.

Looks good to me!
@jacobjinkelly  That's kind of you to mark me as a co-author, but I think a one line review suggestion barely qualifies :)
@jessebett @duvenaud googlebot still needs your OK on this (@googlebot I consent.) before we can merge

@googlebot I consent.

@jacobjinkelly could you kindly either remove my "co-author" status from the commit or use by google email instead (shoyer@google.com)?

@shoyer Ok rebased the relevant commit with your google email!

@jessebett this still needs your consent

@googlebot I consent.

Thanks everyone!

just to keep track this addresses #2431


Conditional Route on sign_out using Devise with Rails

I am working on an app in which there is a model User with roles member and Admin.
As per requirement, I have to made two separate login pages for Admin and Member.
with http://localhost:3000/admin/admin_login
it goes to admin login page and with
http://localhost:3000/users/sign_in
it goes to member login page. Just after login I route them according to their roles to Admin panel or simple website for members.
But at time of logout both goes to  http://localhost:3000
but I want admin to go to http://localhost:3000/admin/admin_login,
while http://localhost:3000 is fine for member's logout.
Is there a way to see User's Role at time of Sign_out and route them accordingly.

Currently after_sign_out_path_for receives only the resource_name and not the signed out resource object, so looks like this isn't easily possible now :(
Any patches to make it support the resource instance instead (thus making the method flexible enough for scenarios like that) will be much appreciated.

May I Override sign_out of Devise and than do it.
Is that possible?

Yeah, that could work if you load the resource and follow through the original logic.

Another thing, Does Devise clear all sessions on Sign_out?


refactor: cleanup middleware stacks

Description
Cleaning up the middleware stacks using evmos as inspiration.
closes: #773

Before we can merge this PR, please make sure that all the following items have been
checked off. If any of the checklist items are not applicable, please leave them but
write a little note why.

[ ] Targeted PR against correct branch (see CONTRIBUTING.md)
[ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work.
[ ] Code follows the module structure standards.
[ ] Wrote unit and integration tests
[ ] Updated relevant documentation (docs/) or specification (x/<module>/spec/)
[ ] Added relevant godoc comments.
[ ] Added a relevant changelog entry to the Unreleased section in CHANGELOG.md
[ ] Re-reviewed Files changed in the Github PR explorer
[ ] Review Codecov Report in the comment section below once CI passes

Codecov Report

Merging #1248 (e0e405e) into main (311379f) will increase coverage by 0.04%.
The diff coverage is 57.89%.

@@            Coverage Diff             @@
##             main    #1248      +/-   ##
==========================================
+ Coverage   80.05%   80.10%   +0.04%
==========================================
  Files         166      166
  Lines       11910    11951      +41
==========================================
+ Hits         9535     9573      +38
- Misses       1914     1920       +6
+ Partials      461      458       -3

Impacted Files
Coverage Δ

modules/apps/27-interchain-accounts/module.go
57.69% <ø> (ø)

modules/apps/29-fee/module.go
55.55% <ø> (ø)

...ps/27-interchain-accounts/controller/ibc_module.go
86.00% <33.33%> (-7.48%)
:arrow_down:

modules/apps/29-fee/ibc_module.go
95.10% <69.23%> (+3.67%)
:arrow_up:

modules/apps/29-fee/types/codec.go
43.75% <0.00%> (-26.25%)
:arrow_down:

modules/apps/29-fee/types/keys.go
96.66% <0.00%> (-3.34%)
:arrow_down:

modules/apps/29-fee/keeper/keeper.go
92.34% <0.00%> (-0.91%)
:arrow_down:

modules/core/04-channel/types/packet.go
67.56% <0.00%> (ø)

modules/apps/29-fee/keeper/msg_server.go
78.04% <0.00%> (+3.04%)
:arrow_up:

... and 1 more

awesome! feel free to use our BDD tests too ❤

awesome! feel free to use our BDD tests too heart

Nice, I'll check em out. Can you link?
Great work btw, I really like the pattern you used. Thanks for the inspiration :handshake:

I think this is good to merge now?


Google Map and Searchbar  - Idle event is triggered after searchbar is in focus

Short description of the problem:
Searchbar or text box in header. Googlemap in ion-context (100%). Focus on searchbox trigger google map idle event and focus is moved out of searchbox. Basically you can't input any text

It has no problem in broswer testing
It has no problem with compiled IOS app
It only happens in APK

What behavior are you expecting?
Steps to reproduce:
Use conference app as template. Modify map page with following

add searchbox in header

<ion-header>
  <ion-navbar>
    <button menuToggle>
      <ion-icon name="menu"></ion-icon>
    </button>
     <ion-searchbar></ion-searchbar>
  </ion-navbar>
</ion-header>

<ion-content class="map-page">

</ion-content>

add map idle listener in  ionViewLoaded()

google.maps.event.addListener(map, 'idle', () => {
     this.presentToast();
   });

create toast message if idle event is triggered so we know idle event is triggered

presentToast() {
    let toast = this.toastCtrl.create({
      message: "loading",
      duration: 1000,
      position: 'bottom'

    });

    toast.present();
  }

ionic build android ... load it in android. Focus on searchbar in map page. Toast is triggered and focus is out

of course import ToastController add it into constructor

import { NavParams ,ToastController} from 'ionic-angular';
constructor(public confData: ConferenceData,private toastCtrl: ToastController) {}

Version: Ionic V2 Beta 11
It was OK in beta 7 or 8. Don't recall when it starts. I tried any things. Add padding-top to ion-content... It doesn't help. Don't understand why focus on text area will trigger map event

APK to download
https://rink.hockeyapp.net/apps/d60115b2914a4e45b7975151ef08e8b9/app_versions/1
Gihub Code
https://github.com/zywh/ionic-conference-app/tree/master/app

Simple question: May a z-index change the behaviour? I remember something like this in the cordova plugin, but can't find the issue or thread regarding it by now :(

I tried to move search box to modal page (popup over map page). It should have higher z-index. Although modal page hide entire map page under .  focus on searchbox still trigger map event.
I even tried to limit size of ion-content div to much smaller size without overlapping header . It still trigger . It drives me nuts-:(
Sent from my iPhone

On Aug 26, 2016, at 9:51 AM, sr972<EMAIL_ADDRESS>wrote:
Simple question: May a z-index change the behaviour? I remember something like this in the cordova plugin, but can't find the issue or thread regarding it by now :(
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.

Hello all! As this seems like more of an issue with the google maps plugin and not the Ionic framework I am going to be closing this issue for now. Thanks for using Ionic!


Cannot specify nullable=true on a Generic T type ref parameter

I recently upgraded my API to a .net core 3.1 server using Swashbuckle 5 with the newtonsoft json nuget, which produces an openapi 3 schema. I then use NSwag to generate a C# API. Previously I had a .net core 2.2 server with swashbuckle 4, producing a swagger 2.0 api schema.
I have a generic response class for all responses, containing some metadata about the response like status code and a message, plus a Payload property of Generic type T containing the meat of the response.
When the response is an error code, I set the payload property to null. I am struggling to find a way to define my api so that swashbuckle and NSwag combined produce a C# api that will allow the payload property to be null on deserialization. (swagger 2.0 / swashbuckle 4 worked without issue).
Try as I might, the Payload property always gets the annotation [Newtonsoft.Json.JsonProperty("payload", Required = Newtonsoft.Json.Required.DisallowNull...] and the [System.ComponentModel.DataAnnotations.Required] annotation.
As I understand it, open API 3 now allows "$ref" properties to have the "nullable": true attribute in the schema definition. If I add this manually to my definition after it is created, NSwag correctly removes the Required attribute in the CSharp api and crucially sets the JsonProperty Required attribute to be "Default" (not required) instead of "DisallowNull".
However, nothing that I mark up the payload property with causes the nullable: true to appear in my schema json definition.
What I want is this:
"properties": {
          "payload": {
            "nullable": true,
            "$ref": "#/components/schemas/VisualService.Client.Models.MyResultClass"
          },

What I get is this:
"properties": {
          "payload": {
            "$ref": "#/components/schemas/VisualService.Client.Models.MyResultClass"
          },

What would also work is setting the "nullable"=true on the definition of the referenced $ref object itself. I can't find a way to do this either.
I have tried the following remedies, to no success.

Marking up the property in the dto class with JsonProperty in different ways:
[JsonProperty(Required = Required.AllowNull)]
public T Payload { get; set; }

[AllowNull]
public T Payload { get; set; }

[MaybeNull]
public T Payload { get; set; }

Trying to tell Swashbuckle / Newtonsoft to use my custom Json Resolver as described in this github issue- doesn't seem to obey

    services.AddControllers()
                        .AddNewtonsoftJson(options =>
                        {                        options.SerializerSettings.ContractResolver = MyCustomResolver();

I created my own custom attribute and filter to try to set the property as nullable
[NullableGenericProperty]
public T Payload { get; set; }

   [AttributeUsage(AttributeTargets.Property)]
    public class NullableGenericPropertyAttribute : Attribute
    {

    }

    public class SwaggerNullablePayloadFilter : ISchemaFilter
    {
        public void Apply(OpenApiSchema schema, SchemaFilterContext context)
        {
            if (schema?.Properties == null || context?.Type == null)
                return;

            var nullableGenericProperties = context.Type.GetProperties()
                .Where(t =>
                    t.GetCustomAttribute<NullableGenericPropertyAttribute>()
                    != null);

            foreach (var excludedProperty in nullableGenericProperties)
            {
                if (schema.Properties.ContainsKey(excludedProperty.Name.ToLowerInvariant()))
                {
                    var prop = schema.Properties[excludedProperty.Name.ToLowerInvariant()];

                    prop.Nullable = true;
                    prop.Required = new HashSet<string>() { "false" };
                }
            }
        }
    }

I had minor success with this one, in that adding the prop.Nullable = true; caused the attribute[System.ComponentModel.DataAnnotations.Required] to be removed from the c# api. However, the [Newtonsoft.Json.JsonProperty("payload", Required = Newtonsoft.Json.Required.DisallowNull...] still remained, so it didn't help that much. I added prop.Required = new HashSet<string>() { "false" }; as an additional try, but it doesn't seem to do anything.
I could downgrade to .net core 2.2 /  swashbuckle 4 again but 2.2 is out of long term support and I want to stay at 3.1 if at all possible. I could also do a find and replace on my generated API client every time but I don't want to have to manually remember to do it every time I regenerate the api which can be several times a day in development cycles.
I've got a hacky workaround - which is that I'm intercepting the json response and adding the "nullable" = true on my server where it's needed, by using a regex match on the response Body json string, before serving it to the client. It's really hacky though and I'd like a native way to do this if it exists.
Any and all help appreciated!

As I understand it, open API 3 now allows "$ref" properties to have the "nullable": true attribute in the schema definition

I think you're mistaken - the $ref keyword cannot be used in conjuction with other schema properties because the referenced defintion essentially overrites all of them. See the following for related discussions:

https://stackoverflow.com/questions/40920441/how-to-specify-a-property-can-be-null-or-a-reference-with-swagger
https://github.com/OAI/OpenAPI-Specification/issues/1368

From a spec perspective, the recommended workaround is to create a new definition that "extends" the referenced one (using allOf keyword) and adds the additional nullable property. If you'd like Swashbuckle to do this automatically, apply the UseAllOfToExtendReferenceSchemas setting. However, I don't know if NSwag honors this or not.

Thanks very much for the quick response @domaindrivendev - UseAllOfToExtendReferenceSchemas  did what I needed, and NSwag studio behaved itself in respecting the nullables T's.

Thanks alot. We had the same issue and i also tried a lot out like you. Nothing worked. Thanks to this post i did not lose my sanity.


Not working in FF V123.0.1 (Win10 x64)

Hi
I just tried to use your FF extension:
https://addons.mozilla.org/en-US/firefox/addon/github-release-download-count/ (V1.3.4)
Installs from the FF add-ons page, but does not appear to show anything when I navigate to the Github "Release" page.
I also attempted to install the *.xpi directly from this repository and FF says "Cant install extension as file appears to be corrupt..." or similar.
Looks like a convenient add-on, so I will watch and try again soon :)
Best regards
Axle

Maybe possible rewrite to userScript? (Tampermonkey, Violentmonkey or Greasemonkey)


How can I use this library and still request a different profile when browser is launched?

Question:
my current script has the following where I open Firefox and run the test using specific profile? also does it have selenium library or I have to add that?
*** Settings ***
Documentation    Verify x site can be accessed
Library    SeleniumLibrary
*** Variables ***
${URL}      https://sitex.com
*** Test Cases ***
Start firefox
Open Browser    ${URL}   browser=ff   ff_profile_dir=/Users/me/Documents/newprofile1
How would I change my script here after using Browser library and this container:
*** Settings ***
Documentation    Verify x site can be accessed
Library    SeleniumLibrary
Library    Browser
*** Variables ***
${URL}      https://sitex.com
*** Test Cases ***
Start firefox
Open Browser    ${URL}   browser=ff   ff_profile_dir=/Users/me/Documents/newprofile1

This is not supported by Playwirght, as far I know. There are ways to emulate same thing example by adding cookies or manipulating http headers.
If you want support for it, please raise an issue to Playwright side. But because there is not anything which we could do on Browser library side, closing this issue.

This is now days supported in PW launchPersistentContext. Which is different that the PW launch. Main difference is that launch returns a PW browser instance, but launchPersistentContext returns directly a context. The browser/context/page is deeply hard coded in the Browser library side, but I do not think it is impossible to do this. It might be hard and is definitely out of my TS skills.

I need to load an chrome extension through robotframework-browser.  Since 'new context' keyword creates an incognito tab, it is not possible to load an extension. This feature might be useful to achieve that.

I vote for implementation of  launch persisten context from playwrith that would be really useful. One of the problems that I'm facing is that in incognito mode a browser console log is really pure, only few things being logged.

launch persisten context from playwrith   YES PLEASE!!! make it a ON/OFF switch...
I really do not want to use an incognito modus in some cases. it should be possible to turn that off very easily!
please in new version Browser library.

@valentijnpeters you can also open the context on suite setup to re-use the same context in multiple tests.

If you need to share cookie or LocalStorage auth between multiple tests check out https://marketsquare.github.io/robotframework-browser/Browser.html#Save Storage State


Improving Quick Sort in Python by reduction of number of lines of code

🚀 Feature
To improve the existing quick sort in python by reducing the number of lines of code
Have you read the Contributing Guidelines on Pull Requests?
Yes
Kindly assign me this as a part of Gssoc 21

/assign

@Sri-vishnu-r1431 Incomplete issue no existing code file issue number mentioned which you want to modify

kindly reissue to me again as exams were going on I was not able to contribute.I deeply apologize for my fault@ankitaggarwal23


Incorrect exampe for replacing MAINTAINER with LABEL

Problem description
The documentation for the deprecated MAINTAINER says that we should replace MAINTAINER with LABEL.
But the example is inconsistent with the documentation for LABEL.
The example says:
LABEL maintainer<EMAIL_ADDRESS>
But shouldn't it be:
LABEL<EMAIL_ADDRESS>

Problem location

https://docs.docker.com/engine/reference/builder/#/maintainer-deprecated

#dibs

I tested building 4 images using Dockfiles that only differ in "LABEL". The "LABEL" filelds are respectively defined in the Dockerfiles as follows:

LABEL maintainer<EMAIL_ADDRESS>LABEL maintainer<EMAIL_ADDRESS>LABEL maintainer<EMAIL_ADDRESS>LABEL<EMAIL_ADDRESS>
All images are successfully built. Then, I checked the image info by running docker inspect <image ID>.  The output shows that the images all have the same correct maintainer filed as I specified. Here are some screenshots referring to the building process and the output.

I built an image again using Dockfile with the following label defined:

LABEL maintainer<EMAIL_ADDRESS>description "test adding labels in Dockfile"
The image is also successfully built. But the output of docker inspect is as follows.

It shows that the maintainer info and the description info are mixed up.
So I think if only one item is included in LABEL, it is OK to define LABEL without "=" (that is, in "LABEL key value" format, such as LABEL maintainer<EMAIL_ADDRESS>); but if there are two or more items, "=" is necessary.
To avoid misleading, it is better to add  "=" between key and value.

Add "=" via #32682.

@thaJeztah WDYT? I don't think the things in the Dockerfile usually have the equals signs. Are labels different?

@mstanleyjones I think LABEL, ENV (and others) supports both notation (with and without an equal sign). But without an equal sign, it can get tricky 👼

Review happening upstream. Going ahead and counting this.

Closing as the work has shifted to moby/moby. Thanks @scjane!


@alloy => Added example for .eigen file

Adds an example to the documentation of the .eigen file.

Perfect.


Users add countries to their 'profiles'

Allow a user to add their country to a 'profile', and have Robo read that when people come in and add/remove regions from the alert list as required

if a user with a country on their profile joins the room, automatically add that region to the alerts list
if a user leave, check if any other users have the same region, remove it from the alerts if there isn't
-- do the same if a user goes afk??
-- maybe we need a /notlistening command for that for when people pop into meetings etc but don't want to leave the room??


New instructions for authorizing service account scopes

I still have hope team will fix this soon so let's hold on your for now. Trying to get an estimate out of them.
Jay

Jay,
Thanks for your efforts. I changed my version as people are getting redirected to the new URL and were lost as to what to do.
Ross
<EMAIL_ADDRESS>
On Aug 29, 2020, at 10:08 AM, Jay Lee<EMAIL_ADDRESS>wrote:
I still have hope team will fix this soon so let's hold on your for now. Trying to get an estimate out of them.
Jay
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub https://github.com/jay0lee/GAM/pull/1230#issuecomment-683317054, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACCTYL7KMYGUFWGIE4LIWXTSDEY2PANCNFSM4QPA6P4Q.


[FIX] User status badge and icon visualisation

The pull request fix some issues with the badge and the icon loading on windows.
(every thing works correctly right now on all Platforms like before
[FIX] a bug introduces by the following commit:
[NEW] Show account status in menu bar #759
There some points still open:

Creating status icon's for Windows and Linux (I will create one soon) to follow the other discussions pls see: discussion

Yes or i can remove it and check in the correct string when i finished the icons.
I think that‘s the best way