[Documentation] Squiz: Scope Closing Brace

Description
This PR adds documentation for the Squiz.WhiteSpace.ScopeClosingBrace sniff.
Suggested changelog entry
Add documentation for the Squiz Scope Closing Brace sniff
Related issues/external references
Part of #148
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

[ ] This change is only breaking for integrators, not for external standards or end-users.

[x] Documentation improvement

PR checklist

[x] I have checked there is no other PR open for the same change.
[x] I have read the Contribution Guidelines.
[x] I grant the project the right to include and distribute the code under the BSD-3-Clause license (and I have the right to grant these rights).
[ ] I have added tests to cover my changes.
[x] I have verified that the code complies with the projects coding standards.
[ ] [Required for new sniffs] I have added XML documentation for the sniff.

@jonmcp Thanks for making those updates!
Regarding the first section: as the code samples are now quite wordy, I'm not sure they each need their own <code_comparison> block. They could possibly be combined in one <code_comparison> block. What do you think ?

I tried this out locally, and it does look a lot cleaner. I've combined them in 9cd4fd223.

Regarding my comments about the second section: The mention of "newline" in the code sample descriptions is misleading as the close brace could be indented.

That's a very good point. I've combined the conditional with the class declaration in d3e406805 to better illustrate that statements can be indented. I also removed some of the related code comments, not only because they were syntactically invalid, but because I felt that they were making the code block quite messy. I've instead indented the invalid closing braces enough that it should be clear that they are misaligned, rather than relying upon the comments to describe it. I'm not 100% confident that that was the correct decision, so please let me know if you'd like me to work on it further.

And the sniff also allows for a mix of PHP and HTML, so the below would also be valid (but not comply with the description as currently in the docs):
    <?php if ($something) { ?>

sniff regards this as the close brace being on its own line, but the close brace is not directly preceded by a new line char';
    <?php } ?>

I think I've reworded it to be more clear now. I've also added an example illustrating your code example above in 9cd4fd223.
This may be somewhat unrelated, but the sniff does not catch this scenario:
<?php if ($something) { ?>

additional whitespace before closing brace

<?php   } ?>

Sorry to be a pain, but being precise is kind of important for these things for sniffs.

Not at all. I agree that it's very important, and I appreciate the time you're taking to thoroughly explain where I have fallen short in my descriptions.

This may be somewhat unrelated, but the sniff does not catch this scenario:
<?php if ($something) { ?>

additional whitespace before closing brace

<?php   } ?>

Good observation. For the above, the sniff does not actually check the indentation of the close brace, but the indentation of the PHP open tag preceding the close tag.
It would flag the code if the PHP open tag preceding the close curly would be indented differently from the start of the line containing the if - and it also determines the needed indentation based on the PHP open tag on the line containing the if.
<?php if ($something) { ?>

additional whitespace before closing brace

  <?php } ?>

Might be an idea to add an additional check to this sniff to verify that, if a PHP open tag is used to determine the indentation, there is only one space between the PHP open tag and the close brace.
If you think that is a good idea, you want to open an issue for it.

Might be an idea to add an additional check to this sniff to verify that, if a PHP open tag is used to determine whether the indentation is correct, there is only one space between the PHP open tag and the close brace.
If you think that is a good idea, you may want to open an issue for it.

I do think that it would be useful; in fact, I think it would be good to catch it either side of the closing brace, but that would perhaps be outside the scope of this sniff. I'll open an issue anyway, to avoid getting too far off topic in this PR. 🙂

I even think some of the remaining wordiness in the code samples could be trimmed down, as the code samples are clear enough as they are… all examples have too much indentation for the close brace…

Re the latter part - that's an oversight on my part. I will modify the code comparisons to also include an example of too little indentation, and I'll also take another look at the wordiness whilst I'm working on that.

I'm happy to provide guidance and/or answer questions to help you find your feet.

Thank you so much! 😊

Might be an idea to add an additional check to this sniff to verify that, if a PHP open tag is used to determine whether the indentation is correct, there is only one space between the PHP open tag and the close brace.
If you think that is a good idea, you may want to open an issue for it.

I do think that it would be useful; in fact, I think it would be good to catch it either side of the closing brace, but that would perhaps be outside the scope of this sniff. I'll open an issue anyway, to avoid getting too far off topic in this PR. 🙂

I even think some of the remaining wordiness in the code samples could be trimmed down, as the code samples are clear enough as they are… all examples have too much indentation for the close brace…

Re the latter part - that's an oversight on my part. I will modify the code comparisons to also include an example of too little indentation, and I'll also take another look at the wordiness whilst I'm working on that.

I'm happy to provide guidance and/or answer questions to help you find your feet.

Thank you so much! 😊

@jrfnl apologies for the delay in actioning the feedback here. I am only able to devote time on Mondays and Fridays due to work commitments.
I've reduced the wordiness of the code examples (let me know if I've reduced it too much!), and added an example of too little whitespace.
I'm not 100% sure whether I should have indented the example of too little whitespace or not, though…

... and added an example of too little whitespace. I'm not 100% sure whether I should have indented the example of too little whitespace or not, though…

@jonmcp Just a thought: what about removing the function bar() code sample and adjusting the class_exists('Foo') sample to have too much (two spaces instead of zero) indent for the if close brace and too little (two spaces instead of four) indent for the class close brace ?
Like this:
if (!class_exists('Foo')) {
    class Foo {
  }
  }

You could even consider reversing the expected indents:
if (!class_exists('Foo')) {
    class Foo {
}
    }

Re: the  tags for <?php } - would it make things clearer if those encapsuled that part of the code ? As in <?php } ?

Thanks @jrfnl, it looks a lot better that way, I think, in both cases.
I've also changed the example containing the
 to use  for better output as HTML.

As an aside: after this PR is complete, I'll be updating my committer name from Jon to Jay (my GitHub handle won't be changing just yet, though); I hope that's okay.

Whatever works for you and makes you feel most comfortable. Be yourself, whomever that may be.
I can't rewrite history for any earlier commits to the repo (of course), but I'll make sure to update my draft changelog notes to use Jay instead of Jon. Is that okay for you ?

Whatever works for you and makes you feel most comfortable. Be yourself, whomever that may be.
I can't rewrite history for any earlier commits to the repo (of course), but I'll make sure to update my draft changelog notes to use Jay instead of Jon. Is that okay for you ?

That's perfect, and appreciated. Thank you 💜


[Feature Request]: set focus on Search field on Insert Link Entity Select dialog

Describe the feature you'd like
When inserting a link (ctrl-k) and clicking the search icon, it would be nice to have the Search field gain focus automatically.

Describe the benefits this feature would bring to BookStack users
This will reduce keyboard->mouse->keyboard transitions, thus enhancing user workflow.
It would allow the immediate typing of a search term, or allow a user to TAB to the list of pre-populated pages for keyboard navigation.
Currently, TABbing on the Entity Select dialog cycles the cursor between fields on the shadowed Insert Link dialog underneath. There is no way to use the Entity Select dialog without a mouse.
Additional context
Sorry if this has come up before ... I did search, honest!

Thanks for the suggestion @dudeskeeroo.
This has now been implemented, to be part of the next patch release (v21.12.1).


Can't get sdl2 and kivy from brew to work together.

I brewed installed sdl2 sdl2_image sdl2_ttf sdl2_mixer gstreamer. I then ran pip install -I Cython==0.23
$ USE_OSX_FRAMEWORKS=0 pip install kivy
However, my kivy is non able to find a window provider. It resorts to pygame because it doesn't recognize sdl2.  I have brewed other system packages before for python packages, and am using a brewed python.
Also:
I like the Kivy.app but when running python applications in that manner how can I install system files, for the virtual environment. Specifically, I can't get OpenSSL working in the Kivy.app virtual environment. I need it to pip install cryptography.

Try this:
$ USE_OSX_FRAMEWORKS=0 pip install https://github.com/kivy/kivy/zipball/master

This is at least the 5th time I see this issue here+irc+SO+own attempt with stable on pip. I'm not sure if it doesn't fetch the variable or what, but I think it was fixed somewhere in master branch. I remember something about using master few months ago when I tried to install it in VM and I think it worked.
Don't have a clue about the second part, sorry.

Sorry, but this didn't work for me

I'm using macOS and I installed python3.5.3 with pkg https://www.python.org/downloads/release/python-353/
so brew installing sdl2 and other things is not linked to my python3?

After much wheel spinning with homebrew, the only thing that worked for me was to use macports to install the dependencies:
sudo port install libsdl2 libsdl2_image libsdl2_ttf libsdl2_mixer


Next steps for BIDS-Prov

I'm opening this issue to figure out what a finalized BIDS-Prov would look like. A couple options:

A PR to the specification (like bids-standard/bids-specification#487), and BIDS-Prov is 100% maintained within BIDS.
A separate repository for the format specification, like BIDS-Stats Models (https://bids-standard.github.io/stats-models/) or BIDS Execution (https://bids-standard.github.io/execution-spec/), with a relatively confined PR to BIDS proper that makes the relationship clear.

Other arrangements could be imagined, but I think the "in BIDS" or "alongside BIDS" distinction is the main one to settle on, and then work out the details.
Other questions:

How much, if any, validation should be done by the BIDS validator? Will there be a 3rd-party validator to call out to, as with HED?
For existing tooling in this repository, would there be a plan to merge it into another library, or keep it as its own thing? Will it be distributed on PyPI?

@bids-standard/steering
@bids-standard/maintainers

If future BIDS extensions like derivatives for ephys heavily depend on BIDS-Prov (i.e., to specify ephys derivatives one MUST use BIDS-Prov), then I think BIDS-Prov should be maintained 100% within BIDS.
Else, if BIDS-Prov becomes something like a "recommended way to document provenance" but not strictly necessary within BIDS, then I would vote for it living in its own repository (like statsmodels, execution, ... )with only a short mention in the BIDS spec.

re: validator --> I think irrespective of how the above decision turns out, maintaining a separate provenance validator that is "just integrated" into the BIDS validator would be simpler (I may be wrong with this assumption), and with the HED validator we already have a precedent

re: General prov tooling --> I agree with Robert in https://github.com/bids-standard/BEP028_BIDSprov/issues/125#issuecomment-1739485848 --> they should live in their own repos under the bids-standard organization

If future BIDS extensions like derivatives for ephys heavily depend on BIDS-Prov (i.e., to specify ephys derivatives one MUST use BIDS-Prov), then I think BIDS-Prov should be maintained 100% within BIDS.

I think we could have a situation where the BIDS-Prov format definition lives on its own, but some way of defining required entries could still live in BIDS. Similar to how we specify JSON metadata keys/values without defining JSON inside BIDS.

I do not think any derivatives should rely heavily depend on BIDS-Prov (jsonld) which is why we have introduced the descriptions.tsv, allowing to specify all the steps performed, but if one wants to include a full reproducible workflow then use BIDS-Prov
From a more general perspective, BIDS is about documenting data, and BIDS-Prov documents a process (which I agree gives rise to the data, still it's not the same as a json next to a file). In that respect it does make sense to live next to the main spec.

I am inviting @bclenet to the discussion as he will be working on BIDS-Prov form now.

I mildly disagree with @CPernet as most of the metadata in BIDS very much documents a process -- all the MRI acquisition parameters, difference in contrasts/modalities etc. Hence I do think that PROV is "natural" metadata to be added in my opinion.
And that is how BIDS-Prov is different from the examples in the Path 2. -- both BIDS-Stats Models and BIDS Execution are pretty much add-ons which describe processes which would use BIDS data, but do not describe data itself (raw or derived).
I do feel though that BIDS-Prov is sufficiently separate "extension" module which is at large independent from the rest of BIDS, and could have potentially benefited e.g. from its own versioning and "pluggable" tooling (e.g. to complement bids-validator). Hence in some bright future it could have may be became a "BIDS Extension" (see/comment on https://github.com/bids-standard/bids-2-devel/issues/74 where we already have BIDS-Prov listed).
Furthermore, BIDS-Prov is not per se about "reproducible workflow" either, although could potentially lead to it (as well as simple descriptions in descriptions.tsv potentially could ;-) ). The main obstacle IMHO is a "scary" full specification with all the ids etc, and we already had _desc entity IIRC "ready". That is why descriptions.tsv "won".  But IMHO, BIDS-PROV is gravely needed as a part of the standard since we do not have yet any alternative mechanism really besides making it completely "outside".
So I would vote to get back to https://github.com/bids-standard/bids-specification/pull/487 and reincarnate the activities there (I see now that I had given some suggestions there 3 years ago).  But I also think it should get tuned up (with example/discussions in #1970 in mind) to make it "more user friendly", but this is not the issue to expand on that.

But another point I want to reiterate is that there should be active push/activities, who has juice left? ;-)   I have created @bids-standard/bep028 team.

We (@bclenet and myself at least ;) ) have juice left!! We'll work on the PR and submit something.

I have pushed little styling changes to bep-028 in bids-specification but since PR #487 is closed nothing is updated in the diff there.
Overall

that branch better be rebased on master (or get master merged)
examples should go into Appendix somewhere

in common principles it should have only concise description: BIDS-Prov

I would like to discuss potential

allowance of presence of .jsonld at any level (not even subject to inheritance principle limitations since nothing would really to be inherited -- they are to be composed into the graph):
if not specific to any particular file, could in effect get _prov suffix, thus mimicing dataset level prov.jsonld. so there could be

prov.jsonld
sub-1/sub-1_prov.jsonld -- wide subject relevant provenance
sub-1/ses-2/sub-1_ses-2_prov.jsonld -- specific for the session
sub-1/ses-2/func/sub-1_ses-2_prov.jsonld -- for all the functionals
sub-1/ses-2/func/sub-1_ses-2_task-rest_bold.jsonld -- specific to those sub-1/ses-2/func/sub-1_ses-2_task-rest_bold.*
This way tools would have flexibility to express themselves at the level they are operating at (file level, or group of files etc).

dissolving "Justification for Separating Provenance from file JSON" section by allowing generatedBy to be specified in the corresponding .json file, potentially with further relaxations such as not demanding id (assume to be unique) and overall have a clear schema which we could encode in our BIDS schema and validate

would not need explicit @context (potentially related: #https://github.com/bids-standard/bids-specification/pull/1939)
it would be for the bids-prov tooling to extract those, equip with ids and add to the graph

WDYT?

BTW -- is there PROV-specific jsonschema to validate those example records?

I have pushed little styling changes to bep-028 in bids-specification but since PR #487 is closed nothing is updated in the diff there.

Thanks for this. The branch is totally out of date unfortunately :(

Overall
* that branch better be rebased on master (or get master merged)

Sure!

* examples should go into Appendix somewhere

Will do!

  * in common principles it should have only concise description: BIDS-Prov

Sounds good!

* I would like to discuss potential

Thanks for those suggestions! Let's have those as separate issues:

  * allowance of presence of .jsonld at any level (not even subject to inheritance principle limitations since nothing would really to be inherited -- they are to be composed into the graph):

https://github.com/bids-standard/BEP028_BIDSprov/issues/144

  * if not specific to any particular file, could in effect get `_prov` suffix, thus mimicing dataset level `prov.jsonld`. so there could be

    * `prov.jsonld`
    * `sub-1/sub-1_prov.jsonld` -- wide subject relevant provenance
    * `sub-1/ses-2/sub-1_ses-2_prov.jsonld` -- specific for the session
    * `sub-1/ses-2/func/sub-1_ses-2_prov.jsonld` -- for all the functionals
    * `sub-1/ses-2/func/sub-1_ses-2_task-rest_bold.jsonld` -- specific to those `sub-1/ses-2/func/sub-1_ses-2_task-rest_bold.*`
      This way tools would have flexibility to express themselves at the level they are operating at (file level, or group of files etc).

https://github.com/bids-standard/BEP028_BIDSprov/issues/145

* dissolving "Justification for Separating Provenance from file JSON" section by allowing `generatedBy` to be specified in the corresponding `.json` file, potentially with further relaxations such as not demanding `id` (assume to be unique) and overall have a clear schema which we could encode in our BIDS schema and validate

https://github.com/bids-standard/BEP028_BIDSprov/issues/146

  * would not need explicit `@context` (potentially related: #[[ENH] Add ContextURI to allow to define the context for the entity values bids-specification#1939](https://github.com/bids-standard/bids-specification/pull/1939))
  * it would be for the bids-prov tooling to extract those, equip with ids and add to the graph

https://github.com/bids-standard/BEP028_BIDSprov/issues/147

WDYT?

BTW -- is there PROV-specific jsonschema to validate those example records?

Not yet. Good point!
Note: Is this listed in what is expected from BEPs already or shall we document somewhere?


Unexpected problem with aliased NamedTuples with superclasses

I'm having some problems which seem to indicate a bug in Crystal, but might just as well be due to my limited knowledge of Crystal. I haven't found any other issues reported, but at the same time there might be concepts in Crystal I don't yet fully understand. Please bear with me.
I'm using NamedTuples to build a data structure inside my class, and one of the objects in the tuple is either nil or an Array of any instance of a subclass with a given superclass. Since this NamedTuple is used more than once, I've aliased it to my own type, like so:
alias PetType = NamedTuple(name: String, pets: Array(Animal)|Nil)

Where Animal is the text book example of Dog < Animal, Cat < Animal just to make my point here.
Sending pets: nil works, as expected. But passing any instance of a subclass of Animal causes an error:
no overload matches 'add_pet' with type NamedTuple(name: String, pets: Array(Cat))

While passing an instance of Animal works. I tried making Animal abstract, but that doesn't make any difference.
A failing example of the problem:
class Animal
end

class Dog < Animal
end

class Cat < Animal
end

alias PetType = NamedTuple(name: String, pets: Array(Animal)|Nil)

def add_pet(pets : PetType)
  p pets
end

add_pet({name: "Lassie", pets: [Cat.new]})
end

And by the way, thanks for Crystal. It's amazing!

[Cat.new] is an Array(Cat), not an Array(Animal). You can use: [Cat.new] of Animal to solve this. Please read this
I'm seriously considering now to make the of part of an array/hash literal mandatory to prevent this kind of surprises...

@zmalltalker Actually, this comment seems shorter and easier to understand why [Cat.new] doesn't work.

Thanks a million, @asterite. I understand this a lot better now, and for me it would definitely helped me understand better if of Animal had been mandatory.

@zmalltalker I've been thinking about it and it might not solve all problems. For example:
names = ["Garfield", "Tom"]
some_call(names.map { |name| Cat.new(name) }) # Array(Cat)

The compiler infers the Array returned by map to be Array(Cat), because all elements are Cat, and then you'll have the same problem as before. For this to work one has to "upcast" each value to Animal:
names = ["Garfield", "Tom"]
some_call(names.map { |name| Cat.new(name).as(Animal) }) # Array(Animal)

And here there aren't any array literals and there's still this problem/confusion, so forcing of on array literals won't solve much.


Create a class for storing GLM results

With the aim of simplifying the user interface.
Currently the user needs to pass around the Info, GLM results, and design matrix. This PR creates a class to handle this. It also provides useful functions.
This PR adds hooks to existing functionality. In follow up PRs I will add more class functions such as plotting, saving and loading data, etc.
This PR:

Adds a class for glm regression results. Its just a wrapper containing the nilearn regression results and the mne info structure.
Adds a class for glm contrast results. Similar to above its a wrapper.
Each class has several methods such as plot_topo, to_dataframe etc. That are just new interface to the existing code
Depreciates several of the existing functions in favour of the classes
Demonstrates the new classes in the examples

Once this PR is complete I will do the same for the second (group) level analysis

@larsoner this is my first time writing a class in python. Could you please provide an early review to let me know if I am on the right path or not? Have I made any rookie mistakes :) The class is defined in mne_nirs/statistics/_glm_type.py.
I need to add more tests and update the tutorial wording etc, but I think the tutorial code is already cleaner. Also please be critical of function names, I'd like to stabilise the API for a while after this.

Codecov Report

Merging #303 (cc5a4e7) into master (8d4efdb) will decrease coverage by 0.92%.
The diff coverage is 92.23%.

@@            Coverage Diff             @@
##           master     #303      +/-   ##
==========================================
- Coverage   97.10%   96.18%   -0.93%
==========================================
  Files          48       49       +1
  Lines        1314     1571     +257
  Branches      178      211      +33
==========================================
+ Hits         1276     1511     +235
- Misses         14       25      +11
- Partials       24       35      +11

Impacted Files
Coverage Δ

mne_nirs/statistics/_roi.py
86.48% <50.00%> (-7.27%)
:arrow_down:

...nirs/visualisation/_plot_GLM_surface_projection.py
79.31% <80.00%> (+1.53%)
:arrow_up:

mne_nirs/statistics/_glm_level_first.py
87.09% <87.09%> (ø)

mne_nirs/visualisation/_plot_GLM_topo.py
96.35% <96.77%> (+0.35%)
:arrow_up:

mne_nirs/_version.py
100.00% <100.00%> (ø)

mne_nirs/statistics/__init__.py
100.00% <100.00%> (ø)

mne_nirs/statistics/tests/test_glm_type.py
100.00% <100.00%> (ø)

mne_nirs/statistics/tests/test_statistics.py
100.00% <100.00%> (ø)

mne_nirs/statistics/tests/test_statsmodels.py
100.00% <100.00%> (ø)

mne_nirs/utils/_io.py
96.38% <100.00%> (+0.38%)
:arrow_up:

... and 4 more

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 8d4efdb...cc5a4e7. Read the comment docs.

Huge thanks @larsoner. That high level check gives me exactly the confidence I need to push on and add new features like save and load. Cheers!


Update storage-troubleshoot-file-connection-problems.md

Approved by SPM Divya Kamath

Hi @JarrettRenshaw, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!

It looks like you're a Microsoft contributor (Jarrett Renshaw). If you're full-time, we DON'T require a Contribution License Agreement. If you are a vendor, please DO sign the electronic Contribution License Agreement. It will take 2 minutes and there's no faxing! https://cla.microsoft.com.

TTYL, MSBOT;

@JarrettRenshaw : Thanks for your contribution to the Azure documentation! The author, @genlin, has been notified to review your proposed change.

#sign-off


Many examples failing to produce desired output

Environment Information

geemap version: 0.16.4
Python version: 3.9.7 64bits
Operating System: win10 64 bits

Description
Many examples are not exporting expteced data:
Example 34
out_dir = os.path.join(os.path.expanduser('~'), 'Downloads')
# out_csv = os.path.join(out_dir, 'points.csv')
out_shp = os.path.join(out_dir, 'ndvi.shp')
m.extract_values_to_points(out_shp)

==> no file, no error, nothing produced
123_sentinel1_timelapse.ipynb
timelapse = geemap.sentinel1_timelapse(
    roi,
    out_gif='sentinel1.gif',
    start_year=2019,
    end_year=2019,
    start_date='04-01',
    end_date='08-01',
    frequency='day',
    vis_params={"min": -30, "max": 0},
    palette="Greys",
    frames_per_second=3,
    title='Sentinel-1 Timelapse',
    add_colorbar=True,
    colorbar_bg_color='gray',
)

==>
Generating URL...
Expression evaluates to an empty image collection.
The input gif file does not exist.
The input gif file does not exist.
The input gif file does not exist.
What I Did
Just testing on a jupyter notebook stuff I download from examples repo.

I notice a similar problem for geemap.sentinel1_timelapse. I'll verify.

This bug has been fixed. It was caused by the sentinel1_filtering() function. The parameter orbitProperties_pass='ASCENDING' can lead to an empty collection. Changing to orbitProperties_pass=None solves the issue.
Update the package using geemap.update_package() and restart the kernel to take effect.


Removing failed, the directory you are trying to remove is not empty

I was trying to remove a directory from the server and i get this error. I can delete it locally, but not in the filemanager, anything not right with it because i use it when i am not at the server to edit locally and plan on using it more as it seems more efficient and does what i need, and thanks for this tool and it being lightweight and can make some workaround with the changes. 👍.

basically a summary is it wont delete a folder for some reason if its full.

Hi @Legoman99573 which bridge are you using? php(ftp) or php-local?

php-local

Hi @Legoman99573,
that's expected and wanted behavior. If you want to remove the dir, you need to remove it's content first. This is to prevent the user from accidentally removing files in the dir.
Since there isn't currently any support for dialogs like "This directory is not empty. Would you still like to remove it?", it was the best I could come with.


Unable to install the latest version of Guzzle

$ composer require guzzlehttp/guzzle

Using version ^6.2 for guzzlehttp/guzzle
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - scrutinizer/ocular 1.3.1 requires guzzlehttp/guzzle ~3.0 -> no matching package found.
    - scrutinizer/ocular 1.3.1 requires guzzlehttp/guzzle ~3.0 -> no matching package found.
    - scrutinizer/ocular 1.3.1 requires guzzlehttp/guzzle ~3.0 -> no matching package found.
    - Installation request for scrutinizer/ocular == <IP_ADDRESS> -> satisfiable by scrutinizer/ocular[1.3.1].

Potential causes:
 - A typo in the package name
 - The package is not available in a stable-enough version according to your minimum-stability setting
   see <https://groups.google.com/d/topic/composer-dev/_g3ASeIFlrc/discussion> for more details.

Read <https://getcomposer.org/doc/articles/troubleshooting.md> for further common problems.

Installation failed, reverting ./composer.json to its original content.

My suggestion is to drop the composer dependency and use the downloadable phar.

Nice! I recommended we remove ocular as a dep because its really old and unmaintained, but shoving a phar in there would be easier as it avoids me having to ask around and find out what oculas is required for. Let's doit.


Can't build Metal with profiler

Describe the bug
I'm trying to build Metal with the profiler enabled and getting build errors and failure. the exact error depends on the script used (either build_with_profiler_opt.sh or using -p for build_metal.sh).
To Reproduce

Reserve a Grayskull ird with the following image: ghcr.io/tenstorrent/tt-metal/tt-metalium/ubuntu-20.04-amd64:latest
Follow steps to set environment and clone the repo per the Metal installation instrcution.
use ./build_metal -p to build with profiler

The build fails with the following output:
FAILED: tmp/tracy_stamp/tracy_capture_tools-build
cd /proj_sw/user_dev/ayaacob/tt-metal/build_Release_tracy/tools/profiler/bin && cd /proj_sw/user_dev/ayaacob/tt-metal/tt_metal/third_party/tracy/capture/build/unix && CXX=g++ TRACY_NO_LTO=1 make -f /proj_sw/user_dev/ayaacob/tt-metal/tt_metal/third_party/tracy/capture/build/unix/Makefile && /usr/bin/cmake -E touch /proj_sw/user_dev/ayaacob/tt-metal/build_Release_tracy/tmp/tracy_stamp/tracy_capture_tools-build
make[1]: Entering directory '/proj_sw/user_dev/ayaacob/tt-metal/tt_metal/third_party/tracy/capture/build/unix'
make[1]: *** No rule to make target '/usr/include/capstone/m68k.h', needed by 'obj/release/o/o/o/../../../server/TracyWorker.o'.  Stop.
make[1]: Leaving directory '/proj_sw/user_dev/ayaacob/tt-metal/tt_metal/third_party/tracy/capture/build/unix'
make: *** [/proj_sw/user_dev/ayaacob/tt-metal/tt_metal/third_party/tracy/capture/build/unix/Makefile:7: release] Error 2

Please complete the following environment information:

OS: Ubuntu 20.04
branch based on commit 4f9574dc9ad on master from 10/14.

Additional context
Verified on clean build

Per @blozano-tt ,
If you do
sudo apt-get install libcapstone-dev

Does it work?

It says libcapastone-dev is already the newest (4.0.1+really+3.0.5-1build1). Isn't that the correct version?

You don't have a /usr/include/capstone/ in your container?

I do have it, but there is no m68k.h file. Any place I can get the missing file(s)?

OK wait - why is your build even looking for m68k... that seems like a very old architecture: https://en.wikipedia.org/wiki/Motorola_68000_series
I don't even have it on my development system:
(internal_python_env) rkim@e12cs07:~/tt-umd$ ls -hal /usr/include/capstone/
total 216K
drwxr-xr-x  2 root root 4.0K Jan 19  2024 .
drwxr-xr-x 68 root root  20K Sep 24 07:01 ..
-rw-r--r--  1 root root  28K Oct 18  2019 arm64.h
-rw-r--r--  1 root root  17K Oct 18  2019 arm.h
-rw-r--r--  1 root root  25K Oct 18  2019 capstone.h
-rw-r--r--  1 root root  16K Oct 18  2019 mips.h
-rw-r--r--  1 root root 3.2K Oct 18  2019 platform.h
-rw-r--r--  1 root root  22K Oct 18  2019 ppc.h
-rw-r--r--  1 root root  11K Oct 18  2019 sparc.h
-rw-r--r--  1 root root  14K Oct 18  2019 systemz.h
-rw-r--r--  1 root root  34K Oct 18  2019 x86.h
-rw-r--r--  1 root root 4.8K Oct 18  2019 xcore.h

@mo-tenstorrent any idea what's going on?

No idea, I am struggling to understand how the same docker image working on other instances is failing to build here. Wasn't that the entire point of docker?

No idea, I am struggling to understand how the same docker image working on other instances is failing to build here. Wasn't that the entire point of docker?

Yes, this is bizarre

what is the best way of starting with a clean image? I just made a reservation on a different machine and see the same

@mo-tenstorrent  @blozano-tt any ideas on how to start over with a clean image/container?

have you tried release your current ird reservation and trying a new one?

tried that, same results (even switched grom GS to WH)

@ttmchiou any idea what could be going on?

It should only be building for native...

Unfortunately, I won't have time to get back to this. If you've unblocked yourself, please close the issue or let us know if it keeps coming up
Please reach out to colleagues on your team to see how they set up similar flows. We don't see this with others using IRD.


New-NetFirewallRule - add option to skip dropped packets logging

I could not find Windows Firewall page on MicrosoftDocs, so I ask here.
I have created the rule:
New-NetFirewallRule -DisplayName 'Explorer' -Description 'C:\Windows\explorer.exe' -Program 'C:\Windows\explorer.exe' -Direction Outbound -Group "USER" -Protocol TCP -RemotePort '443' -Action Block
So now I ALWAYS see events about blocked connections.
I don't need to know anything about it.
The same with
"\device\harddiskvolume4\program files\parallels\client\tsclient.exe".
I could not find a key (parameter) to force skip logging of the dropped packets for a program.

@UnityUser
Note that the form that you have submitted this feedback from is intended for product documentation issues only.
Please consider checking any relevant resources and asking the community about your problem via the following link.
PowerShell Community
Thanks.

@officedocsbot close


Fix flaky Assignment#summary_json test

Proposed Changes
(Describe your changes here. Also describe the motivation for your changes: what problem do they solve, or how do they improve the application or codebase? If this pull request fixes an open issue, use a keyword to link this pull request to the issue.)
There is a flaky test, e.g. see https://github.com/MarkUsProject/Markus/actions/runs/9433478827/job/25984461081. The cause was the non-deterministic ordering of a query. This PR fixes the test by enforcing a consistent order.

Screenshots of your changes (if applicable)

Associated [documentation repository](https://github.com/MarkUsProject/Wiki) pull request (if applicable)

Type of Change
(Write an X or a brief description next to the type or types that best describe your changes.)

Type
Applies?

🚨 Breaking change (fix or feature that would cause existing functionality to change)

✨ New feature (non-breaking change that adds functionality)

🐛 Bug fix (non-breaking change that fixes an issue)

🎨 User interface change (change to user interface; provide screenshots)

♻ Refactoring (internal change to codebase, without changing functionality)

🚦 Test update (change that only adds or modifies tests)
X

📦 Dependency update (change that updates a dependency)

🔧 Internal (change that only affects developers or continuous integration)

Checklist
(Complete each of the following items for your pull request. Indicate that you have completed an item by changing the [ ] into a [x] in the raw text, or by clicking on the checkbox in the rendered description on GitHub.)
Before opening your pull request:

[x] I have performed a self-review of my changes.

Check that all changed files included in this pull request are intentional changes.
Check that all changes are relevant to the purpose of this pull request, as described above.

[x] I have added tests for my changes, if applicable.

This is required for all bug fixes and new features.

[x] I have updated the project documentation, if applicable.

This is required for new features.

[x] If this is my first contribution, I have added myself to the list of contributors.

After opening your pull request:

[ ] I have updated the project Changelog (this is required for all changes).
[ ] I have verified that the pre-commit.ci checks have passed.
[ ] I have verified that the CI tests have passed.
[ ] I have reviewed the test coverage changes reported by Coveralls.
[ ] I have requested a review from a project maintainer.

Questions and Comments
(Include any questions or comments you have regarding your changes.)

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Warning: This coverage report may be inaccurate.
This pull request's base commit is no longer the HEAD commit of its target branch. This means it includes changes from outside the original pull request, including, potentially, unrelated coverage changes.

For more information on this, see Tracking coverage changes with pull request builds.
To avoid this issue with future PRs, see these Recommended CI Configurations.
For a quick fix, rebase this PR at GitHub. Your next report should be accurate.

Details

2 of 2 (100.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 91.423%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
40000

Relevant Lines:
43079

💛  - Coveralls


Fix Git test when global gitconfig signs all commits

I have git signing enabled in my environment, and I don't have issues. Can you describe what behavior this fixes? Is the issue that you're prompted to enter a password to unlock the signing key?
I think it would be better for tests to run in isolation of the user's config, rather than piecemeal reset default configs. I remember doing this recently by monkeypatching the HOME variable (git-repo commit). That commit references the pytest-home plugin, so that's probably the best approach for this project.

sorry for not responding for so long, I forgot about this. I don't know what's the difference between our setups, but on my machine the tests outright fail. My only guess is that the GPG key is not associated with the mock email address, that's why gpg refuses to sign immediately.
 I only have a key for myself. And when I run the tests, the commits are signed by me (and not the committer).
My guess is that your git config is more strict about what commits it will sign.
I thought that the 2.3 release had fixed this issue, but I did some more investigation and it seems that my use of pytestmark wasn't working as intended. The 2.3.1 has additional checks to ensure that tests are isolated from the user's config. Please have a look and let me know if that doesn't fix the issue.


Can offer a code for the evaluation index？

I also hope to see the evaluation code because the result file for EC number prediction includes the top 5 possible predicted EC numbers and their corresponding probabilities, but it does not specify the final probability threshold for the selected EC number. I would like to know how the AUC, Precision, Recall, and F1 scores are calculated.


Use of a Broken or Risky Cryptographic Algorithm

The elliptic package is reported as not safe by npm audit, see the advisory. It needs to be updated to a version  >=6.5.4.

The elliptic package is reported as not safe by npm audit, see the advisory. It needs to be update to a version >=6.5.4.

thanks. I'll check it soon.

just published v2.0.2 fixes the problem.

Thanks, then could you update connex as well?

I created a PR to fix the other vulnerabilities.

Thanks, then could you update connex as well?

Connex was updated.

This issue is fixed, so I am closing it, but there are other vulnerabilities that are fixed by this PR.


Numerous Corrections

Numerous corrections and additions have been made to the documentation, including the inclusion of the recent GameInput API.

Assigning to Steve

Note that we mustn't put "en-us" (or any language tag) into urls. Also see how I shortened the urls to remove the domain.
Thanks!
-Steve

Thank you for the kind tip, I will review the style guidelines once more.


on delete_collection, if the collection does not exist, more clear error is shown

Description of changes

Improvements & Bug fixes

Clearer error thrown when trying to delete unexisting collection

Test plan

import chromadb

chroma_client = chromadb.Client()
chroma_client.delete_collection('test1')

>>> ...
>>> ValueError: Collection with name test1 does not exist
# Before: IndexError: list index out of range

Documentation Changes
No documentation changes necessary.

@druskacik thanks for this! can you write a test for this?

@jeffchuber Sure, I added the test and also previously forgotten update fastapi version.

steps:
- name: Checkout repository
uses: actions/checkout@v2
  - name: Set up Python ${{ matrix.python-version }}
    uses: actions/setup-python@v2
    with:
      python-version: ${{ matrix.python-version }}

  - name: Install dependencies and test dependencies
    run: |
      pip install chromadb
      python -m pip install -r requirements.txt
      python -m pip install -r requirements_dev.txt

Closing this because it is very stale, but we will address this.


webView evaluateJavascript is crashing when injecting script on Android 11 and 12 Devices

Im trying to inject javascript using mWebView.evaluateJavascript its crashing on android 11 and 12
but it's running normally on older devices
2022-04-06 22:24:41.450 29689-29689/io.kuenzler.whatsappwebtogo E/chromium: [ERROR:aw_browser_terminator.cc(123)] Renderer process (29717) crash detected (code 5). 2022-04-06 22:24:41.459 29689-29689/io.kuenzler.whatsappwebtogo A/chromium: [FATAL:crashpad_client_linux.cc(667)] Render process (29717)'s crash wasn't handled by all associated  webviews, triggering application crash. 2022-04-06 22:24:41.459 29689-29689/io.kuenzler.whatsappwebtogo A/libc: Fatal signal 5 (SIGTRAP), code -6 (SI_TKILL) in tid 29689 (whatsappwebtogo), pid 29689 (whatsappwebtogo)

Hi,
pls give me a bit more insight on what you're trying to do.

@92lleo basically Im trying to inject those https://github.com/tomer8007/whatsapp-web-incognito
can you tell me the right way to do it please


Use http consts for HTTP methods

Description
Prefer consts within the http package (i.e. http.MethodGet) instead of specifying the string literal "GET".

Current dependencies on/for this PR:

master

PR #958   👈

This comment was auto-generated by Graphite.


Performance as history grows

As the action log on the current map grows the game loop gradually slows down. Maybe because of the size of the action log display?

As a test I changed the view to only show the last 9 events from the action log and that definitely helps.


product_wysiwyg_editor_enabled preference not defined

Hello,
I know this gem was tested with Spree 4.3.1.
But just to let you know, with Spree 4.4, I get this error:
product_wysiwyg_editor_enabled preference not defined

I'll try to patch it :-)

Ok, I'm guessing, we should add the preference under your configuration.rb file.
Currently, I added it within my Spree initializer by following official documentation:
https://dev-docs.spreecommerce.org/internals/preferences#general-settings
Spree::AppConfiguration.class_eval do
  preference :product_wysiwyg_editor_enabled, :boolean, default: true
  preference :taxon_wysiwyg_editor_enabled, :boolean, default: true
end

Thanks @Kulgar, I will have a look and try to make it work if this setting is not available.
Is this the only issue you had with 4.4? I would be interested to support 4.4, although I am waiting for some stuff to be fixed there before I personally upgrade to it in my project.

@mrbrdo : well, yes... in fact your gem even fixed some issues I had with spree_globalize and latest spree version. For instance: when searching for products in the CMS (for button links), I didn't have the products name displayed with spree_globalize. I only had an empty blank dropdown even if the product actually exists.
This is no longer the case with your gem and I do get the product names properly.
And yes, I activated the wysiwyg editor for translations field and so far, I didn't get any other issues.
Thanks for your work ^^
Regarding the above issue, I think you would only have to add these two preferences within configuration.rb, wouldn't you?
And if you do, don't forget to add an explanation in the readme on how to customize these preferences with a spree app :-)

No need, these settings are part of Spree config, but it was moved to Spree::Backend::Config in 4.4 (previously Spree::Config).
I pushed a fix and released v1.2 with it. Please let me know if it works - you should be able to remove the config initializer that you added and it should still work correctly.
Thanks for your help.

Oh yeah, right, 4.4 is the version where they cut Spree into several pieces.
Ok, so I updated your gem and removed my initializer code, and it works, indeed.
Ow, and it seems that I'm facing the same issue as the one you posted on spree_globalize: https://github.com/spree-contrib/spree_globalize/issues/99


Merging top dev

Main changes:

Refactoring Cache Service Interface
Separating out $ and LCE
Adding UCE
Adding single core testbench
Updating documentation
Minor backend fixes

Thanks Sripathi and Shashank!
@farzamgl Can you take a quick pass over this?  It's a huge changeset, but it's had several eyes on it so just flag anything that looks very wrong

@dpetrisko Wow that's a lot of commits.
Can you point me to the BE fixes?

Biggest changes in the backend are in the dcache.  The interface change means that miss tracking is now in the cache instead of the LCE.  Additionally, the tag/data/stat_packets are ready-valid instead of valid-yumi. Last, fencei is now a cache instruction instead of a CSR instruction.

Oh, I mean backend like CAD fixes :), which were timing loop related


Clarification on Redis-Plugin and Data Fetching in Netopeer

Hi,
I am currently working with the Redis DB plugin in the context of Netopeer and Sysrepo, and I was hoping to clarify how data is fetched from Redis when triggered by a get-config operation. Initially, I assumed that the process involved a direct call to the Redis plugin via Sysrepo, with some form of query being executed to retrieve and parse the data. However, after tracing the callback function np2srv_rpc_get_cb, I believe my initial understanding may be incorrect, as the flow appears to be different.
Could you kindly help me understand how exactly the data is parsed and fetched in this case? Specifically, I would appreciate any guidance on how the Sysrepo plugin, Netopeer library, and the Redis plugin interact during the get-config operation, and how I can use them to retrieve data from Redis.
Thank you in advance for your time and assistance. I look forward to your response.
Best regards,
Vishal

To answer you exactly I would need to know the reason why you are looking into this. But chances are you can safely ignore how netopeer2 interacts with sysrepo and just focus on the redis plugin itself, reading data is performed by the load function.

You will have to go through the code to find out how exactly is everything stored.

Thanks @michalvasko
I was able to fetch and parse the data accordingly


doc: Add new developer guide to contributing.md

I assumed it would be helpful for new contributors to have some getting-started information on setting up their dev environments and using the Makefile, among other misc. tips for new developers.
Signed-off-by: Grayson Pike<EMAIL_ADDRESS>

This pull request didn't trigger Jenkins as its author isn't in the whitelist.
An organization member must perform one of the following:

To have this branch tested by Jenkins, use the "ok to test" command.
To have a one time test done, use the "test this please" command.

Those commands are simple Github comments of the format: "jenkins: COMMAND"

Thanks!


serialization error while upserting

Hi,
Im getting the following error.
Exception while upserting Error serializing to JSON: UnicodeEncodeError: 'utf-8' codec can't encode character '\udcb0' in position 128: surrogates not allowed
Traceback (most recent call last):
File "dynamicbatch_v6.py", line 337, in writer
client.upsert(
File "/home/gl/huggingface/venv/lib/python3.8/site-packages/qdrant_client/qdrant_client.py", line 757, in upsert
return self._client.upsert(
File "/home/gl/huggingface/venv/lib/python3.8/site-packages/qdrant_client/qdrant_remote.py", line 1123, in upsert
http_result = self.openapi_client.points_api.upsert_points(
File "/home/gl/huggingface/venv/lib/python3.8/site-packages/qdrant_client/http/api/points_api.py", line 1179, in upsert_points
return self._build_for_upsert_points(
File "/home/gl/huggingface/venv/lib/python3.8/site-packages/qdrant_client/http/api/points_api.py", line 601, in _build_for_upsert_points
body = jsonable_encoder(point_insert_operations)
File "/home/gl/huggingface/venv/lib/python3.8/site-packages/qdrant_client/http/api/points_api.py", line 22, in jsonable_encoder
return to_json(
File "/home/gl/huggingface/venv/lib/python3.8/site-packages/qdrant_client/_pydantic_compat.py", line 34, in to_json
return model.model_dump_json(*args, **kwargs)
File "/home/gl/huggingface/venv/lib/python3.8/site-packages/pydantic/main.py", line 353, in model_dump_json
return self.pydantic_serializer.to_json(
pydantic_core._pydantic_core.PydanticSerializationError: Error serializing to JSON: UnicodeEncodeError: 'utf-8' codec can't encode character '\udcb0' in position 128: surrogates not allowed

hi, @nairajay2k could you please provide a code snippet and data example to reproduce the error?

were you trying to upsert emojis?

Im not sure..It must have been some strange character not in utf-8. I have
escaped non utf-8 characters for now like
"bad string".encode('utf-8', 'surrogateescape').decode('utf-8')
On Mon, Sep 18, 2023 at 4:17 PM George @.***> wrote:

were you trying to upsert emojis?
—
Reply to this email directly, view it on GitHub
https://github.com/qdrant/qdrant-client/issues/302#issuecomment-1723163851,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AJ6XWJ5W3C6BQDXXHQZCRR3X3ARCVANCNFSM6AAAAAA436XL7E
.
You are receiving this because you were mentioned.Message ID:
@.***>

--
Regards
Ajay
8762803277


<M-[> appears to not be working as macro

I use the following config:
[macros.normal]
"<C-Q>" = ":qa<Enter>"
"<M-[>" = "gT"
"<M-]>" = "gt"

Pressing alt+] works flawlessly, however alt+[ does not and results in other shortcuts not working anymore until e.g. ctrl+c is being pressed.

<M-[> is going to appear like the start of a CSI sequence (^[[) in the terminal, so it's going to issues getting parsed by crossterm at the moment.  I believe this could be fixed enabling the keyboard enhancement protocol, which will make it work in some terminals like kitty, foot, or wezterm.

I've added support for enabling the Kitty keyboard enhancement protocol when it's available in #272, or attempting to turn on modifyOtherKeys when it's not. I've listed terminals that this works for over there, and I'll eventually update the website to include a Terminal Recommendations page on the site to help people find terminals with support.

Just a quick follow up: Thank you for fixing this, is there going to be a new release that will include the fix anytime soon? :)

I saw that a new version was released yesterday and updated. I can confirm that your fix works perfectly, <M-[> and <M-]> allow me to switch tabs now. Thank you!


Fix optics tutorial sample code (2)

Rename _address to _workAddress so the Prism sample code works.
As discussed in #95.

Regarding the documentation: I was wondering if the Composite tutorial could be expanded with sample code. As far as I understand, Composite would be useful to create a single, reusable form. For example, a form could be created to edit a Todo item, which could then be used in other contexts. The current Todo example not implemented this way. Instead each TodoRow directly uses the main model, hence it returns a TodoNode. In a different implementation a Todo could be edited inline and a single Todo would be overlayed with an edit form when its pencil is clicked. That would also mean that multiple Todo's could be in edit mode simultaneously and each Todo item would have its own state. Am I correct that composites would be used for this? In Elm this would be simple, but there are two locations where glue code is required. I could easily create a subModel (e.g. SingleTodo), subMessages (e.g. EditTodo) and corresponding view: SingleTodo -> Html SubMessage (in Monomer: buildUi) and update: SubMessage -> SingleTodo -> (SingleTodo, Cmd SubMessage) (in Monomer: handleEvent). When using it in the main application's view, I could use the sub view function and Html.map it to a parent's Message and similarly I could use Cmd.map in the parent's update function. How is this done in Monomer? What are these two "magic" functions in Monomer? Or is it discouraged? All I could find was in the TextField.hs source, but this probably isn't the way to do it. Maybe I have the wrong mindset of Composite, otherwise it would probably be useful to have some documentation about this "glue" code or a link to some example code.

At this point I just wanted to thank you for the library 🎉. In addition to a great design and extensive functionality it's been really helpful to have so much documentation and helpful responses and code samples to questions here on github 😊. This makes the library really accessible, even for beginners.

@Clindbergh thanks for the fix!

Regarding documentation, I do have plans for improving the Composite tutorial in the short term (there is a branch with an initial idea for an extended example). The current tutorial only explores the case where the model provided by the widget parent is the same as the one used by the composite. This works well if that model includes all the information you need to create the UI, but sometimes you may need extra fields in the state to handle temporal information. For example:

You create a user editing form with collapsible sections. Suppose the model you provide to the widget includes all the flags indicating which areas are collapsed/expanded (something like UserForm, which has an embedded User attribute). In that case, you can apply the same logic as in the current Composite example as it is the simplest solution. In other cases you might prefer to have users of the widget just provide a User instance and handle the flags internally.

This example can be implemented now, but it requires a bit more work that is not explained in the current tutorial. There is also a widget (ColorPopup) that can serve as an example, but I have not yet had time to add theming to it; it will be included in the next release and referenced in the documentation.
In both the normal and extended use cases of composite, the events you handle are separate from the main application. This is the main advantage compared to using a regular function that returns the desired widget tree.
I thought about using a composite for the TodoRow, but at the same time, I also wanted to show that in quite a few situations you can get by with just using a regular function. Hopefully, an enhanced tutorial is good enough.

Thank you. I noticed I missed the examples directory with all the code samples (including IsolatedComposite.hs) and so far only worked with the markdown documentation. I've also discovered Dretch/foundationdb-explorer Status.hs which might be a helpful example source too.
I've yet to wrap my head around these concepts and try to work with them.


resolve #153 - add parseURL function

Resolves #153
This adds a helper function to redis.ts (I think it's the right place? I don't really see any file for helpers and connection.ts seems to be more focused on internal operation of connecting to redis). It takes a redis URL and parses it according to IANA assignments for redis and rediss schemes.
Things I'm not certain of here:

location of the function. As mentioned, I'm not sure if redis.ts is the right place for it
tests and their location. I put them in connection_test.ts, but I don't know if they should stay there or go to general_test.ts. Also, originally I wanted there to be a test with a connection to server, but for some reason connect didn't want to work for me even with static values copied from a previous test that worked. Might be something with my environment though... EDIT: yes, it was something with my setup. No idea why, but it decided to start working. Added an actual connection test then.

@oplik0 LGTM, thank you for the contribution!

Released in v0.14.0!


Responsive stuff doesn't kick in until refresh

I have these responsiveOptions on a line chart:
[
        ['screen and (max-width: 640px)', {
          width: $('#main__chart-container').width()
        }]
]

However, if I resize my browser window to be small, the changes don't kick in (initially the chart is half the   #main__chart-container's witdh, see below) until I refresh it.
Additionaly,
width: ($('#main__chart-container').width()) / 2

is put in my options object, but once again resizing the browser (which in turn makes the container smaller), doesn't make the charts smaller.
Full code (there are 2 charts):

Reading

Writing

The layout stuff is simply from the Angular Material Library. It's a very simple wrapper around flexbox, but it may be a possible cause.
Edit: I tried without all the layout stuff, i.e

Same problem. It's independent of the layout.
new Chartist.Line('#main__reading-chart', {
        labels: readingActivty.map(function(n) {
          return n.day.format('{Weekday}');
        }),
        series: [
          readingActivty.map('did')
        ],
      }, {
        height: 250,
        width: ($('#main__chart-container').width()) / 2,
        axisX: {
          showGrid: false
        },
        axisY: {
          offset: 60,
        },
        lineSmooth: Chartist.Interpolation.cardinal({
          tension: 3
        })
      }, [
        ['screen and (max-width: 640px)', {
          width: $('#main__chart-container').width()
        }]
      ]);
      new Chartist.Line('#main__writing-chart', {
        labels: writingActivity.map(function(n) {
          return n.day.format('{Weekday}');
        }),
        series: [
          writingActivity.map('did')
        ],
      }, {
        height: 250,
        width: ($('#main__chart-container').width()) / 2,
        axisX: {
          showGrid: false
        },
        lineSmooth: Chartist.Interpolation.cardinal({
          tension: 3
        })
      }, [
        ['screen and (max-width: 640px)', {
          width: $('#main__chart-container').width()
        }]
      ]);
    }

This is most likely to be a problem on my side, but there are so may variables here that I decided to post an issue here just in case.

My best guess is that $('#main__chart-container').width() is not returning the correct value in the first place. Please re-open if still an issue.


There's a break in margin on fullscreen. Titlebar content overflow and break the main display

Environment
Windows build number: [run `[Environment]::OSVersion` for powershell, or `ver` for cmd]
Windows Terminal version (if applicable):

Any other software?

Steps to reproduce

Expected behavior

Actual behavior

Could you maybe share a screenshot? This sounds really similar to #2268, but without more details I'm not really sure what to do with this bug.


tests: Add cluster tests for bootkube-install (terraform-based)

Matchbox origin branches now test PXE booting and provisioning the following clusters on each commit:

3-node etcd
3-node etcd (terraform based)
3-node static Kubernetes
3-node self-hosted Kubernetes
3-node self-hosted Kubernetes (terraform-based, upstream for Tectonic)

These clusters bootstrap successfully most of the time, and other times hit flakes in underlying components or in the testing strategy itself.
Overall these function as smoke tests across 5 supported cluster types. A green test provides confidence in a commit while a failure usually highlights unreliability in some cluster bring-up, since these tests are subject to the flakes in every subcomponent. Repeated failures on the same cluster in the grid indicates a true regression. Reducing overall flakes is tracked in #523


Refactor QSharp.Core into Foundation + Core

This change refactors the Microsoft.Quantum.QSharp.Core project to introduce a new Microsoft.Quantum.QSharp.Foundation project, where Core is build on top of Foundation. This is the first step toward allowing for alternative decomposition packages (see https://github.com/microsoft/qsharp-runtime/issues/249). The Foundation project includes those fundamental elements of the language that all decomposition packages rely on, while the implementation that remains in Core is expected to be overridden/replaced with alternative implementation defined in a specific decomposition package. These decomposition packages will be introduced as part of a later change.

To make the larger effort of introducing decomposition packages easier to review and discuss, I'm going to have separate PRs that should roughly line up with the tasks in #249. This set of changes incorporates feedback from my earlier draft PR, #240.

I just noticed that ClassicalControl.qs opens the Microsoft.Quantum.Intrinsic namespace but doesn't use it. Between that and the fact that there are rewrite dependencies on it, it should get moved out of the Core and into the Foundation.

@bettinaheim I was able to confirm that there are no file duplications. I think the reason it seems like there are is because I moved several files that have both a .qs and .cs version, such as
src/Simulation/QsharpCore/Bitwise/Bitwise.cs → src/Simulation/QsharpFoundation/Bitwise/Bitwise.cs
src/Simulation/QsharpCore/Bitwise/Bitwise.qs → src/Simulation/QsharpFoundation/Bitwise/Bitwise.qs


Fix flyToInterpolator crash when transitioning to the same viewport center

Change List

Bump @math.gl/web-mercator

Coverage decreased (-2.5%) to 80.855% when pulling 69dd1e99e2505c4f6d121177e0a47e8b52c1aceb on x/bump-mercator-dep into e2b76a3fe23e43cb6a516b065a762d72b6a40b2c on master.


fix: add availability ton configure authenticationFlowBindingOverrides on client

This PR fix : https://github.com/adorsys/keycloak-config-cli/issues/170

 Here is an overview of what got changed by this pull request:

Issues
======
- Added 2

Clones added
============
- src/test/java/de/adorsys/keycloak/config/service/ImportClientsIT.java  22

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Issues
======
- Added 1

Clones added
============
- src/test/java/de/adorsys/keycloak/config/service/ImportClientsIT.java  22

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Issues
======
- Added 1

Clones added
============
- src/test/java/de/adorsys/keycloak/config/service/ImportClientsIT.java  22

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Issues
======
- Added 1

Clones added
============
- src/test/java/de/adorsys/keycloak/config/service/ImportClientsIT.java  27

See the complete overview on Codacy

Native builds checks seems to be broken since : 1b134d3
Please do a rebase

I miss a test minimum with an id instead a name.

Could you add a test that verifies that the import still works with a flow id?

If you not interested in some code optimization, just let me know and ignore my last comment. :)
Then I will merge it, if the test is there.

As it, it's not possible to import a realm with an authFlowBindingOverrides with an id instead a name. Really sure that we need this ?

As it, it's not possible to import a realm with an authFlowBindingOverrides with an id instead a name. Really sure that we need this ?

Are you 100% sure?
If I define the id of the flow inside my import like here
https://github.com/adorsys/keycloak-config-cli/blob/897155d2ed6d3d1ad233e08989ed0280550b6e38/src/test/resources/import-files/auth-flows/26_update_realm__update-non-top-level-flow-with-pseudo-id.json#L12
The id should be known, predictive and could be use by authFlowBindingOverrides.
Or does Keycloak override the id on creation?
Looking at Keycloaks source code, the id of the import model will be used if defined.
https://github.com/keycloak/keycloak/blob/5d5e56dde3bc841c7d1d0261cfcaf372cdf119bc/model/jpa/src/main/java/org/keycloak/models/jpa/RealmAdapter.java#L1724

As it, it's not possible to import a realm with an authFlowBindingOverrides with an id instead a name

Yes, it's possible. The example below partially work with master branch now but 2 runs are required first the flow, then the client. After that I could verify the the override setting at a client. Since the branch handle the import order of the settings, this error should be gone after merge.
Define overrides with an id works and are required if you want to import an exported realm with such configuration.
Demo realm config:
{
  "enabled": true,
  "realm": "test",
  "authenticationFlows": [
    {
      "id": "fbee9bfe-430a-48ac-8ef7-00dd17a1ab43",
      "alias": "custom flow",
      "description": "Custom flow for testing",
      "providerId": "basic-flow",
      "topLevel": true,
      "builtIn": false,
      "authenticationExecutions": [
        {
          "authenticator": "docker-http-basic-authenticator",
          "requirement": "DISABLED",
          "priority": 0,
          "userSetupAllowed": true,
          "autheticatorFlow": false
        }
      ]
    }
  ],
  "clients": [
    {
      "clientId": "another-client",
      "name": "another-client",
      "description": "Another-Client",
      "enabled": true,
      "clientAuthenticatorType": "client-secret",
      "secret": "my-other-client-secret",
      "redirectUris": [
        "*"
      ],
      "webOrigins": [
        "*"
      ],
      "authenticationFlowBindingOverrides": {
        "browser": "fbee9bfe-430a-48ac-8ef7-00dd17a1ab43"
      }
    }
  ]
}

Currently, the branch will throw an error that flow alias fbee9bfe-430a-48ac-8ef7-00dd17a1ab43 could not be found. At review, I saw this potential issue, that was the reason for the requested test.
This is should should be fixed by lookup flows by id first and if none found, fallback to the flow alias lookup.

Hi, I'll try to add that no problem.
When creating a new realm with a new flow, new client : no problem.
When updating a flow (in order to set an id, for exemple), since keycloak-config-cli recreates this flow and ignore id property ( https://github.com/adorsys/keycloak-config-cli/blob/2c0d021881b7641fa60c3c8667c7c22eef274c62/src/main/java/de/adorsys/keycloak/config/service/AuthenticationFlowsImportService.java#L266), is not possible to handle the case properly.
I have no idea for why this property is ignored here, but import of authenticationFlow seems to be a little tricky.
I'not sure about the impact of modifying this in AuthenticationFlowsImportService.

is not possible to handle the case properly.

I'm fine that this case just works on the initial realm creation.
A resource id feels immutable. If someone need this, he should create a new issue.
As alternative, he could define an override by flow alias as this PR provide this.

Shouldn't we handle only alias (on authFlow) to be more simple ?

I'm with you.
But keycloak-config-cli should support a default realm export at minimum and could enrich experience in some points.
An export generated by keycloak itself would put an id here.

Looks good to me

@jkroepke, is it possible to release this?

I would like to take a look at #183 first.
If you are using the docker image, the tag master should include this fix.

This is a critical piece of our system, I would rather not have our config set to master 😄
Have you a rough idea how long it will take to address #183 ?

@ybonnefond 2.3.0 is out.

Awesome, Thanks!


Error: noUiSlider: must pass a formatter for all handles.

I'm receiving the following error when I use the range slider format method. The code pretty much follows the demo.
search.instantsearch.addWidget(
    instantsearch.widgets.rangeSlider({
        container: '#journeys-price-widget',
        attributeName: 'price',
        templates: {
            header: 'Price'
        },
        autoHideContainer: false,
        tooltips: {
            format: function(formattedValue) {
                return '$' + formattedValue;
            }
        }
    })
);

This triggers the following errors.
Warning: Failed propType: Invalid prop `tooltips` supplied to `Nouislider`.

If I remove the format method the error does not occur.

Are you using the jsdelivr build or an npm one?

Using browserify / npm
David

On 4 Mar 2016, at 20:30, Vincent Voyer<EMAIL_ADDRESS>wrote:
Are you using the jsdelivr build or an npm one?
—
Reply to this email directly or view it on GitHub.

Ok so this is fixed in our develop branch that will be released soon.
You are experiencing this because of an update to one of the modules used by instantsearch.js (react-nouislider/nouislider) where this broke (tooltips).
I should be able to release it today (1.3)

1.3 was released, you can upgrade


Promote a 2GP Package

Changes

CumulusCI has a new task: promote_2gp_package. This task will promotes a Package2Version to the "IsReleased" state making it available for installation in production orgs. The task notifies users of any 1GP dependencies detected, as well as, any unpromoted 2GP dependencies (including unlocked packages). If any unpromoted 2GP dependencies are detected then the promotion operation is aborted. To promote all unpromoted dependencies, in addition to the target Package2Version, use --auto-promote True.

Sample Usage:
    $ cci task run promote_2gp_package --version_id 04t000000000000 --auto_promote True
This should be pretty close. Let me know if we think that more unit tests would be a good thing. I covered the three main execution paths that can occur when running the task:

No dependencies that need promoting are found, so target Package2Version is promoted
Unpromoted dependencies with --auto-promote False so we abort.
Unpromoted dependencies detected with --auto-promote True so we promote them, as well as the target Package2Version.

Task Output for when --auto-promote is False:

Task Output for when --auto-promote is True:

I did a refactor on the majority of the task after finishing, I have some tests failing still, but I'll fix those on Monday morning when I get in. This should be ready to review for the most part though.

We'll also need some doc updates here: https://cumulusci.readthedocs.io/en/stable/unlocked_package.html#promote-a-package-version

@Br4nd0R For logging the version I meant the version number, not the SubscriberPackageVersionId -- I'm thinking it would make it easier for someone to confirm at a glance whether the expected dependencies are there. But it requires querying more fields and can be a future enhancement.

I've gone ahead and created the following work items:

One for further discussion around a SalesforceQuery util class (in the tech debt epic)
One for auto-resolving 04ts which is I'm currently working on for the current sprint.
One for logging version_number along with the other information we display for dependencies in the promote_package_version task (in the 2GP epic).


[Lableing]: FloDisMod Digital Infrastructure

Summary
Suggest adjusting language describing the data services to call them "digital infrastructure"
Proposed solution
Modify the navigation title currently "data repository" to digital infrastructure
Other considerations
By adjusting the description, we can describe the larger set of digital services that FloDisMod is leveraging and this will help with long-term sustainability for the project. It also will help the team expand over time.
Additional context
We are using:
TDR
PT2050
DesignSafe
and other services.
In addition, we are developing new capabilities.  Starting with language around FAIR approaches and emphasizing the reusability/scalability will set the project up for future support and collaborations

Thank you for the suggestion. This has been updated in the newest version.


Backward compatibility for PHP 5.4

Hello, these lines add backward compatibility for PHP 5.4.x.
It can be useful for someone who is not able to have higher version of PHP on production server.

I understand you that you've dropped support of PHP 5.5. I am personally using latest version of PHP etc, but on my one project I had to use PHP 5.4.

Please do not use at least unsupported PHP versions (those red):

http://php.net/supported-versions.php

I think we should not add support for php 5.4, on the contrary we should remove support for php 5.5 and be reading to cut support for the 5.6 in the near future as it is being phased out.
I am closing this.

Nette 3.0 is going to be mostly PHP 7.1+, so I think you can bump this even further so it's fully compatible.
Also Zenify and Symplify packages are joining on PHP 7.1

@TomasVotruba I agree, the sooner we get rid of 5.x line, the better.

@juniwalk I'm with you on this. Let me know if you need PR on PHP 7. I'm quite skilled in it :)

@TomasVotruba I need to consult with @paveljanda about Nette 3 support (#452) so PHP 7 only release should be among the topics to discuss :)

:+1: It is gonna be next big thing :)


Allow the new minimap section headers to use configurable tags

Type: Feature Request

With the new minimap section headers introduced in 1.88, users can mark sections with #region foo or #MARK: foo comments. This would be even better if the tag used to mark a header were configurable.
Allowing the user to specify a string (or list of strings) to use would enable greater flexibility in marking file sections in different languages.

@AfroThundr3007730 I'm making the PR for this very soon!

I am kind of ok with using $LINE_COMMENT MARK: for all languages.
But would definitely love to have also optional section ending markers for comment based marks.
Then if the sections would create foldable regions as in #region/#endregion for any language that would be amazing: collapse all region (already editor.foldAllMarkerRegions) + potentially keybinds (https://github.com/microsoft/vscode/issues/210014) to go to next, etc.
This endings would not appear in the minimap, or be somehow smaller.
Probably simply configure the style by the user as in https://github.com/microsoft/vscode/issues/209989.
One style option would be to not render them in the minimap.

Could open a separate issue, but seemed related and discussable here

So, the patch is ready and it's working!

I would love to set a regex in the workspace settings.json to just do
function\\s*(.*)$

@Die4Ever that is exactly my PR! Vote on it sobit can be seen!

@Die4Ever if my PR gets merged, then you can can have:
{
   "editor.minimap.sectionHeaderDetectionRegExp": "\\bMARK:\\s*(.*)$"
}

@alexdima can you please check this issue and the PR?


Consistent Error 401: Unauthorized

Although yahoo_quote_download has been downloading for a while, the latest test_yqd.py is now generating:
HTTPError: HTTP Error 401: Unauthorized
Any suggestions?

This seems to be due to 'CrumbStore' not being returned in alines in line 59 of yqd.py.  crumb is calculated.

Duplicate of #3
Yahoo returns occasional 401 responses for unknown reason. The solution is to retry and obtain a new crumb. The test code does not do that. Please refer to the code in downloader. By the way, the crumb is stored in cookiejar and will be used automatically.
Thanks for the comments.

Thanks for your response.  I've tried yqdownload over two more days and am
still getting the same error.  See my comments on Unauthorized #15 issue.
JJ
On Sun, Mar 8, 2020 at 12:31 PM c0redumb<EMAIL_ADDRESS>wrote:

Duplicate of #3
https://github.com/c0redumb/yahoo_quote_download/issues/3
Yahoo returns occasional 401 responses for unknown reason. The solution is
to retry and obtain a new crumb. The test code does not do that. Please
refer to the code in downloader. By the way, the crumb is stored in
cookiejar and will be used automatically.
Thanks for the comments.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/c0redumb/yahoo_quote_download/issues/14?email_source=notifications&email_token=AA6RHSJPIGINCOBULYLLODLRGP6CZA5CNFSM4LD2JUN2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEOE7COY#issuecomment-596242747,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AA6RHSKFVYMOJXVNX3MDTPLRGP6CZANCNFSM4LD2JUNQ
.

--
Jenz Johnson,


@electron-forge/maker-zip: If using macUpdateManifestBaseUrl and RELEASES.json doesn't exist in S3, fails

Pre-flight checklist

[X] I have read the contribution documentation for this project.
[X] I agree to follow the code of conduct that this project uses.
[X] I have searched the issue tracker for a bug that matches the one I want to file, without success.

Electron Forge version
6.4.2
Electron version
v26.2.4
Operating system
macOS 13.5.2 (22G91)
Last known working Electron Forge version
No response
Expected behavior
When publishing with @electron-forge/maker-zip and macUpdateManifestBaseUrl with forge.config.ts like this:
makers: [
    new MakerZIP((arch) => ({
      macUpdateManifestBaseUrl: `https://my-bucket.s3.amazonaws.com/my-app-updates/darwin/${arch}`,
    })),
]

If https://my-bucket.s3.amazonaws.com/my-app-updates/darwin/${arch}/RELEASES.json does not yet exist, it should be created.
Actual behavior
The publish fails with an error:
An unhandled rejection has occurred inside Forge:
HTTPError: Response code 404 (Not Found)

I believe this is happening here:
https://github.com/electron/forge/blob/0734b0287c0fe37eee7e6910cfe78109d2e7af29/packages/maker/zip/src/MakerZIP.ts#L47-L51
await got.get(parsed.toString()); should be wrapped in a try/catch and ignore if the file doesn't exist yet in S3.
Steps to reproduce
Use @electron-forge/maker-zip and macUpdateManifestBaseUrl without RELEASES.json existing in S3
Additional information
No response

I'm also running into this issue, did you find a way around it @TranquilMarmot ?

@spaceandrew if you make an empty RELEASES.json file in S3 where electron-forge expects it to be, it should pass when publishing. You might have to put the current version in there as well, but I'm not sure. Let me know if you need more info and I can get it for you tomorrow!

@spaceandrew if you make an empty RELEASES.json file in S3 where electron-forge expects it to be, it should pass when publishing. You might have to put the current version in there as well, but I'm not sure. Let me know if you need more info and I can get it for you tomorrow!

Thank you!


Refreshing JWT adds duplicate audiences to token

The current implementation of getting the claims for the new token from the ClaimsPricipal of the expired token, creates duplicate audiences and thus fails after the first token refresh.
Recalculating the claims based on the userId from the ClaimsPrincipal resolves this issue.

Hi @akema-trebla,
Thanks for the pull request. Version 3.2.1 includes your fix and another fix from @emorell96, and it is released as a NuGet package now.

Hi @JonPSmith
That's great to know.  Happy to help.


ekf2: Add support for use of multiple GPS receivers

Submitted in response to  https://github.com/PX4/Firmware/issues/9431
This PR  gives ekf2 the ability to use two GPS receivers if available to create a blended solution where the blending weights and position/height offset correction adapts to the reported accuracy. If one receiver loses lock or data, it will automatically switch across to the good receiver.
Because a long term position offset is calculated separately for each receiver, switching between either GPS1, GPS2 and the blended solution can be performed without large position and altitude jumps.
This feature relies on use of the reported accuracy metrics contained in the vehicle_gps_position.eph, epv and s_variance_m_s messages.  The EKF2_GPS_MASK parameter controls which accuracy metrics are used to set the blending ratios. By default it is zero which disables the blending. If different model receivers are used, they must both have the same update rate and both output the accuracy metrics selected by the EKF2_GPS_MASK parameter. An RTK and non RTK receiver can be used.
The EKF2_GPS_TAU parameter controls the time constant used to adjust the position offset that is applied to each GPS solution.
The blended GPS solution is published as a third GPS instance and can be found in the log as vehicle_gps_position_2
Bench test log here: https://logs.px4.io/plot_app?log=1bfcfab1-1652-48e3-b349-a42cd493e3cd
Method used to log blended GPS to a third instance may not be correct. I am relying on the uORB orb_publish_auto function to correctly assign a new instance.
Noise on blended lat/lon in log needs investigating. It was not present on logs generated using earlier replay data.

@priseborough I'm done with review (can't approve on my phone). We will test it tomorrow.

There was a bug found during dynamic ground testing that caused the GPS output state to not be updated f one of the receivers was disconnected or lost lock. I've split the calc_gps_blend_outputs() function into three separate functions for updating steady state (filtered) offsets, correcting physical receiver data using the offsets and calculating a blended output using the corrected receiver data.
Testing on replay shows the algorithm is working properly. However, although printing the lat and lon values in the gps struct one line above where they are published shows the correct values, when I review the log generated by the ekf2 replay, the vehicle_gps_position_2.lat and lon values are not correct so I have a mistake in the publishing of the blended GPS.

The CI is showing px4fmu v2 to be out of flash space.

Bench testing at commit https://github.com/PX4/Firmware/pull/9765/commits/935b701d723720703d8f9acc5fe333d0767dba23 shows logging of the third (blended) GPS instance working as expected, so the logging problem appears to a replay issue.
The remaining issue is the large initialisation error in the blended solution for lat and lon that takes several seconds to remove - see bench test result below:

Replaying the same data gives a much smaller startup transient - see

Last commit https://github.com/PX4/Firmware/pull/9765/commits/79f41ce25726fa9534f49ef1695cab834efeee15 seems to have resolved remaining issues. Here are GPS alt, lat and lon from the last test:

After experimenting with some logging options with bench testing, it appears that unless estimator replay data logging is enabled via SDLOG_PROFILE, then the GPS blending does not work correctly and the blended instance logged closely tracks the second receiver . I suspect that publishing of the blended instance could be overwriting data from a physical receiver.

@priseborough We did two flights with dual gps:
In the first one something went wrong, one gps position was showing showing somewhere in the pacific
https://review.px4.io/plot_app?log=0a88185a-28b7-4ce8-b048-328b961d44a6
The second try was good, we managed to fly in position control mode. Maybe it was drifting a bit more than usual but it might not be related to the changes
https://review.px4.io/plot_app?log=4d30ebe3-48f0-433b-8fb9-b1eaf6da5392
I haven't had a chance to look into them.

@hamishwillee Good reminder. We will be setting the parameters so that the feature is disabled by default. Is there a way to flag a feature in master as 'beta'  until we are happy it has had enough community test coverage?

Good reminder. We will be setting the parameters so that the feature is disabled by default. Is there a way to flag a feature in master as 'beta' until we are happy it has had enough community test coverage?

There is no "formal" way. What I normally do is either
a) Document after it is "ready"
b) Put a big warning near where the feature is documented.
Is there any specialized QGC UI for setup, or is this just going to be a parameter? Obviously we now have to explain what ports you can add the second GPS to, how to turn it on, any tuning, and how to turn off anything else that might be using the port.
I would probably add doc here: https://docs.px4.io/en/gps_compass/, and possibly also here: https://docs.px4.io/en/advanced_features/

@hamish Just one parameter for most applications. There is second time constant parameter controlling how fast the individual GPS offsets are corrected, but I am hoping we can tune that so that 99% of users don't need to touch it.

@RomanBapst The first log appears to be afflicted by the same initialisation bug affecting the lat and lon output that I was chasing and fixed yesterday. The second log shows the blending working as expected for alt, lat, lon and velocity other than 0.4m 'switching' noise on the lat/lon output that appears at certain times. Running the data through the latest version reproduces the noise so this can be investigated and fixed. It does not affect the altitude, so is not an issue with the weighting calculation and appears to be a problem in the way global coordinates are converted to local position deltas and vice versa.
Data from the the second flight:

@hamish Just one parameter for most applications. There is second time constant parameter controlling how fast the individual GPS offsets are corrected, but I am hoping we can tune that so that 99% of users don't need to touch it.

Thanks. YOu could put in a Note in the param definition itself warning that the feature is still not robust, but you would have to remove it later.
I suspect users will also need to use a param to turn off whatever is using the port to which you attach the second GPS. ie SYS_COMPANION

Writing the blended GPS to a third instance of the GPS message is causing problems on replay with the lat,lon values in vehicle_gps_position_2 not matching the values logged using a custom message because the replay and ekf2 are both publishing to that instance.
@dagar is there any way I can make ekf2 write the blended output to a specified instance (eg index 3) when doing replay?

@RomanBapst I have been able to replay your log successfully after modifying the ekf2 to publish the blended GPS solution to a separate topic - see https://github.com/PX4/Firmware/pull/9765/commits/3198edfd0ad6ed7e5396e99075b9f5c406c11f2b.
Here are the blended lat, lon and alt:

@dagar and @RomanBapst The px4fmu v2 build is failing (again) due to lack of flash. I need some advice on what  we could remove from that build to get under the flash size  limit.

This is a reasonable option that won't further cripple px4fmu-v2. https://github.com/PX4/Firmware/pull/9770
I'll see if we can move it forward.

Would generating another version of vehicle_gps_position (eg vehicle_gps_position_blended) be sufficient instead of a new nearly duplicate message?
See vehicle_local_position as an example. https://github.com/PX4/Firmware/blob/master/msg/vehicle_global_position.msg#L30

@dagar Yes I thought of that, but don't need some of the other data that is in the vehicle_gps_position message would need to add the GPS select index.

@RomanBapst the review tracker is listing you as having outstanding change requests. Can you let me know if there are any outstanding items and if not can you please complete the approval process. TXS.

This is just a nitpick, but what do you guys think about having the current vehicle_gps_position topic renamed to sensor_gps, in line with what we use for the raw sensor data for other sensors, and use vehicle_gps_position for the blended solution? I generally don't like the specific `ekf_* topic naming.

@mhkabir I had the same thought, but I think it'll be relatively easy to move the GPS blending functionality once we make the necessary architectural changes. In the meantime this unblocks real world testing.
What we really need to figure out is a good general architecture for these sensor specific configurations. We don't want EKF2 to own the GPS positions, or waste publishing static data in every single message. I think something like a status/info message to go along with each sensor instance that only publishes on change.

Does this need an additional ekf2_timestamps.gps_timestamp_rel for replay?

I modified the code to log the relative timestamps for each GPS receiver and plotted them from a bench test with a UBlox 8 connected to GPS1 and a UBlox 6 connected to GPS2 - see plot below with relative timestamp rescaled to units of msec (message is in 0.1 msec units)

Not having separate replay timestamps is going to make some difference.

@bkueng can you look into @dagar question please?

TODO: @priseborough does regression test with single gps setup

Jenkins test this please

Does this need an additional ekf2_timestamps.gps_timestamp_rel for replay?

If we want perfectly reproducible replay then yes. The difference will be small since it's a low-rate topic. What can happen without it is that IMU messages right around the gps topic publication can be fused before or after the gps message.

I will rebase and resolve conflicts arising from https://github.com/PX4/Firmware/pull/9832.
We can address the replay issue in a separate PR.

SITL log from successful reversion test here: https://logs.px4.io/plot_app?log=ace38f4b-1a75-4f03-8b97-1ba1878ad51b

Does this PR support a 2nd GPS receiver data over MAVlink (i.e. some generic GPS messages fed to the FMU over a MAVlink serial connection)?  If not, can it be extended to support this easily, either now or in the future?

@Antiheavy Provided the mavlink receiver published the data using the vehicle_gps uORB message to a second instance, then in principle it should still work. It would need to have the same definitions for the accuracy metrics being selected to calculate the weights , eg eph, s_variance_m_s, etc. It would also need to have the same update rate.

@RomanBapst Can you please change your review status if you are happy with the changes made. TXS.

@priseborough I'll review your last changes.

I'll rebase to resolve the conflict.

Here we go again...

I'll see what I can find.

Rebased

Rebased on master and currently fitting into px4fmu-v2.

Let's get this in!

If the eph or epv or evh is not change,but the lon or lat is jump,how can I do?

// Use the oldest non-zero time, but if time difference is excessive, use newest to prevent a disconnected receiver from blocking updates
uint64_t max_us = 0; // newest non-zero system time of arrival of a GPS message
uint64_t min_us = -1; // oldest non-zero system time of arrival of a GPS message

for (uint8_t i = 0; i < GPS_MAX_RECEIVERS; i++) {
	// Find largest and smallest times
	if (_gps_state[i].time_usec > max_us) {
		max_us = _gps_state[i].time_usec;
	}

	if ((_gps_state[i].time_usec < min_us) && (_gps_state[i].time_usec > 0)) {
		min_us = _gps_state[i].time_usec;
	}
}

The min_us in here is a bug？？？

@lingbuweibu no, that's initializes min_us to the largest uint64 value so that the comparison sets min_us to an actual gps time.

@lingbuweibu no, that's initializes min_us to the largest uint64 value so that the comparison sets min_us to an actual gps time.

OK


blynk only buffers before error

so stream displays fine in browser, works fine in vlc, blynk web link button widget works, but not the stream widget. it just buffers before saying error

Yes, happens from time to time, and blynk authors gave up trying to fix it. I am able to restart the stream sometimes by restarting the blynk app, sometimes by stopping and starting individual project. Not reliable, agree. Can't do much about it because, as you said, it works in the browser and in VLC... If you find out how to make it work more reliable in blynk please DO let me know!

i mean. 'time to time' would be nice, i currently cant get it to work at all, ever. but glad to know its not because im doing it wrong, at least

Are you using the latest Blynk App? Are you on iOS or Android? I heard they work differently.

I just tested the latest Blynk version, and yes, it completely stopped working. I will hit them with a bug report again.

legit thank you, now i can stop banging my head against a wall for at least little bit and work on some other part of the project

https://community.blynk.cc/t/video-widget-stopped-working-on-version-2-28-7/52500

Did you try 2.27.28? It still works for me on Android at least.

2.26.6 is the only thing available on my iphone. i did find an old galaxy s4 to test with, but i think its a little old as i couldnt find the blynk app from the device, i had to google it from pc and go the "install to device" route to get it there. it is 2.27.28, but it does not work unfortunately. what is interesting is the 'weblink' button (which DOES work on ios) does not work either, i have to click the up arrow to open the page in an external browser in order to see the stream (which then does display in the browser)

Sorry about all your trouble... Maybe the new version of Blynk will be more stable.


Option to manually set the Sitecore AppDomainAppPath

Hi,
this relates to the issue #139. As far as I can see the ConfigReader.SetAppDomainAppPath is looking for the bin directory and setts it parent folder to be the Sitecore AppDomainAppPath. That works well when running tests from the source directory structure.
In our case we are outputting our unit tests into a different directory and running those unit tests from there. I would not like to have to recreate the Sitecore config directory structure each time.
So do you think an option to manually set the  Sitecore AppDomainAppPath would be possible? Or is there currently a way to do it?

@martinkotula, I researched it a bit. Setting the SetAppDomainAppPath is an enabler for #26 (auto-include files). All the other functionality works fine.

I would not like to have to recreate the Sitecore config directory structure each time.

I would even say you should not. IMO, the configuration for unit tests should not require auto include files. Is there an option to redesign your configuration to keep it in the tests App.config file?

We are using Sitecore 8.2 and the only reason for adding the auto-include configs was avoiding the

Sitecore.Exceptions.ConfigurationException
Could not create instance of type: Sitecore.Data.Database. No matching constructor was found.

The solution to this issue was proposed in #139 and it uses the auto-include config. Can the same be achieved with app.config file?

Ah, got it. You can edit the database setting directly in your tests App.config file (without using auto-include configs):
    <!-- DATABASE TYPE
         For Sitecore versions prior to 8.2 should be 'Sitecore.Data.Database, Sitecore.Kernel'.
         For Sitecore 8.2 and later should be 'Sitecore.Data.DefaultDatabase, Sitecore.Kernel'. -->
    <sc.variable name="databaseType" value="Sitecore.Data.DefaultDatabase, Sitecore.Kernel" />

Ah, totally missed that. Thanks!
Think it would be good to make note of this optional step in https://github.com/sergeyshushlyapin/Sitecore.FakeDb/wiki/Installation

Done. Thanks!


v4.0.1 inline body style missing

I'm trying to style the body of the email (background colour) through CSS instead of through MJML so that our clients can easily change the background colour through our platform so that I can keep the MJML template fairly generic.
This was working with 3.3.5.
Reproduction Steps:

Create an v4 MJML file containing:

<mjml>
  <mj-head>
    <mj-style inline="inline">
      body {
        background-color: blue;
        font-weight: bold;
      }
    </mj-style>
  </mj-head>
  <mj-body>
    <mj-section>
      <mj-column>
        <mj-text>
          Hello world
        </mj-text>
      </mj-column>
    </mj-section>
  </mj-body>
</mjml>

Run that file through the processor

./node_modules/.bin/mjml -r ./body_test.v4.mjml -o ./body_test.v4.mjml.html

Expected behavior:
body tag in output should contain the inlined css (as it does in 3.3.5)
<body style="background-color: blue; font-weight: bold;">

Observed behavior:
body tag in output does not contain the css
<body>

MJML version:
➜  ./node_modules/.bin/mjml -V
mjml-core: 4.0.1
mjml-cli: 4.0.3

Juice version (if it helps)
➜  ./node_modules/.bin/juice -V
4.2.3

Perhaps this is expected behaviour based on mjml-core/src/helpers/skeleton.js#L82
How much effort would it take to refactor this so that the entire body element is passed through juice?
A workaround is to put the body css inside a non-inlined mj-style tag.

@iRyusa 's idea was right, jucing after creating the skeleton fixes the problem 👍