Address some 'winfixbuf' things

Problem: some 'winfixbuf' issues exist, mostly relating to the quickfix list.
Solution: address them and adjust tests. Retab and reflow a few things too.

Things touched include:

Replace the semsgs with gettext'd emsgs.

Handle window switching in ex_listdo properly, so curbuf and curwin are kept in-sync and trigger autocommands; handle those properly.

Don't change the list entry index in qf_jump_edit_buffer if we fail due to 'wfb' (achieved by returning FAIL; QF_ABORT should only be used if the list was changed).

Make qf_jump_edit_buffer actually switch to prevwin when using :cXX commands outside of the list window if 'wfb' is set in curwin. Handle autocommands properly in case they mess with the list.
NOTE: previously, it seemed to split if 'wfb' was set, but do nothing and fail if prevwin is valid. This behaviour seemed strange, and maybe unintentional? Now it aligns more with what's described for the :cXX commands in the original PR description when used outside a list window, I think.

In both functions, only consider prevwin if 'wfb' isn't set for it; fallback to splitting otherwise.

Use win_split to split. Not sure if there was a specific reason for using ex_splitview. win_split is simpler and respects modifiers like :vertical that may have been used. Plus, its return value can be checked for setting opened_window in qf code (technically win_split_ins autocmds could immediately close it or change windows, in which the qf code might close some other window on failure; it's already the case elsewhere, though).

Thanks for that! I think this looks good.

  NOTE: previously, it seemed to split if 'wfb' was set, but do nothing
  and fail if prevwin is *valid*. This behaviour seemed strange, and maybe
  unintentional? Now it aligns more with what's described for the `:cXX`
  commands in the original PR description when used outside a list window,
  I think.

- In both functions, only consider prevwin if 'wfb' isn't set for it;
  fallback to splitting otherwise.

i opened a netrw somehow now it splitted to 5 windows,
i am not certainly sure this was the cause, and which part of my script was impacted,
but certainly it changed its previous workable script, could we not make up new amaze behavior?
--
shane.xb.qian

netrw does not currently set 'winfixbuf', so you have set it yourself? It helps if you give precise reproduction steps.

previously, it seemed to split if 'wfb' was set, but do nothing and fail if prevwin is valid.

could you try to keep that, kept do "nothing" and fail but Not failback to split?
// yes, I tried to set winfixbuf to varify if it seviced and not broken any script, but obviously this did.
--
shane.xb.qian

Without a repro there's nothing to go on here.

i opened a netrw somehow now it splitted to 5 windows

This patch should only change behaviour if 'winfixbuf' is set, opening up at most one split at any time.
The behaviour also only applies to :Xdo commands and :cX commands for the quickfix list.
Unless they're being used, this patch is unlikely to be related.

previously, it seemed to split if 'wfb' was set, but do nothing and fail if prevwin is valid.

could you try to keep that, kept do "nothing" and fail but Not failback to split?

The old behaviour would do nothing (and eventually fail with E1513) if there was no previous window for
the current window, but would still split to avoid 'winfixbuf' if there was.
That old behaviour seems wrong, and was likely unnoticed as no tests used :cX commands from outside
the quickfix list window (when used from inside, qf_goto_win_with_qfl_file is called which jumps to a different
window; likely why it wasn't noticed).

could we not make up new amaze behavior?

Who is this directed to?

I would say the change is not "amaze" and instead fixed a bug. The previous behaviour would switch windows and fail with E1513 (without restoring the current window from before either).
Again, unless 'winfixbuf' is set and any of the commands previously mentioned were used, this patch should have no effect on you. Without a repro there isn't much else to be said.

I would say the change is not "amaze" and instead fixed a bug. The previous behaviour would switch windows and fail with E1513 (without restoring the current window from before either).

"fail" was ok, and i supposed this 'winfixbuf' was intended to make it "fail" if set it.
// seems you made the "fail" be showing nicer which only the msg but no stack, such change should be ok.
but "failback" was another topic.

Again, unless 'winfixbuf' is set and any of the commands previously mentioned were used, this patch should have no effect on you.

this is interesting.
"common sense": to vim plugins  (or vim itself) author maybe he would not use set winfixbuf such thing, but his users perhaps would, how/what you supposed he should handle such "broken"?
// to be clear, it did not effect on me, or IF i as one of official vim/plugins user, then it Do effect on me.
that's all.

"fail" was ok, and i supposed this 'winfixbuf' was intended to make it "fail" if set it.

For :cX commands, no; the original PR (#13903) stated those commands attempt to work even with 'wfb' set.
As for :Xdo, clearly the better behaviour would be to not change windows at all if prevwin had 'wfb' set, but that's
also not what the prior behaviour did.

"common sense": to vim plugins (or vim itself) author maybe he would not use set winfixbuf such thing, but his users perhaps would, how/what you supposed he should handle such "broken"?

This is a discussion for #13903, which was already brought up previously there.
If you use 'winfixbuf', which is a lock-style option that adds restrictions plugins may not have accounted for before,
then some breakage is inevitable; but this has little to do with this patch.
There's still no clear indication that this patch is responsible for the change in behaviour you observed in netrw,
and neither have you provided any explicit confirmation that 'winfixbuf' was set and either :cX or :Xdo was used.
Unless you can provide a repro or some other confirmation that this patch is responsible, there is nothing more to say.

Also, the issue of possibly breaking existing plugins was brought up already in #13903.

yea, that's too, tho not sure exactly, but generally new win/buf flag would make previous plugins be harder.
i can confirm mostly this patch made the behavior change,
// since this is the only merged change at yesterday for winfixbuf, so i thought this is the cause.
// and should be no related to qf (tho it maybe same situation), but i am gussing it was ':Xdo'.
but i am just generally varifying plugins, so it had no repro steps.
if this cannot give your some hint, you can wait some days later, some others people may jump in.

// and should be no related to qf (tho it maybe same situation), but i am gussing it was ':Xdo'.

Assuming 'wfb' is indeed set, then this may be useful information.
There's three possible changes in this patch which could cause a change in behaviour for plugins:

if curwin has 'wfb' set, the switch to prevwin now acts normally; thus it may fire autocommands

previously, autocommands fired immediately after a switch to prevwin could observe bufnr() != winbufnr(winnr()) and other inconsistent state, which was a bug; but maybe in some strange case fixing this caused a change in behaviour for plugins

if curwin has 'wfb' set, at most one split may happen to get a 'nowfb' window only if switching to the prevwin was impossible (e.g: there was none, or it also has 'wfb' set), or if we switched to the prevwin, but autocommands set 'wfb' in it after we switched to it, or sent us to a different window with 'wfb' set in it

All possibilities require 'wfb' to be set, and involve autocommands, so I would look for a repro in that direction.
Number 2 is in general very unlikely to be related.
Number 3 is unlikely to be related if you previously were not seeing E1513 before this patch.

If 1 is responsible, maybe blocking autocommands could be considered when switching to prevwin; not necessarily a fan of this, as it makes it act less like a normal window switch.

If 2 is responsible, then not much can be changed here, as the previous behaviour was a bug.

If 3 is responsible, we could consider not attempting a split, but instead attempt no switch at all to prevwin (unlike the previous behaviour) if it also has 'wfb' set. For the sake of the intended convenience of :cX from the original PR description, this change can be limited to just :Xdo stuff.
If 3 is indeed responsible, implementing this solution seems like the most reasonable compared to the others, as splitting in general can create unideal behaviour in :windo (though I question whether checking 'wfb' ought to be done for :Xdo commands unrelated to :bufdo, :argdo, etc. at all, which it currently is).

Sorry I find it hard to follow. Please create a new issue with clear reproduction steps and clear  summary what you expected instead. Guessing around here is not really helpful.
Thanks.

--> https://github.com/vim/vim/issues/14301

--> #14301

Thanks, but that's not a regression from this PR. It's also reproducible in v9.1.0147.
Note that I already documented that :windo behaviour here as not being ideal. It's something I'll consider addressing later when I have some free time, unless somebody beats me to it.

@seandewar is right, the split behavior already existed before his PR was included. Let's concentrate replies in https://github.com/vim/vim/issues/14301 so we can keep chats about this all in one place please :)!

:shrug:
--
shane.xb.qian


AttributeError: 'Tensor' object has no attribute 'numpy'

Generate counterfactual examples
dice_exp = exp.generate_counterfactuals(query_instance, total_CFs=4, desired_class="opposite")#,proximity_weight=1.5, diversity_weight=1.0)
Visualize counterfactual explanation
dice_exp.visualize_as_dataframe()
--> 116         temp_preds = self.model.get_output(input_instance).numpy()
117         return np.array([preds[(self.num_output_nodes-1):] for preds in temp_preds], dtype=np.float32)
118
AttributeError: 'Tensor' object has no attribute 'numpy'

@etheng-jiao, can you share the sample code which generated this error and which version dice-ml  are you using?

@etheng-jiao, BTW I tried to find the code line "temp_preds = self.model.get_output(input_instance).numpy()" in the DiCE code base and couldn't find it. It is possible that you are running an older version of dice-ml. Could you test with the release 0.6.0 of dice-ml?

Were you able to fix this? I'm getting the same error

@gaugup
my code:
`import os
from IPython.display import display
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import dice_ml
import tensorflow as tf
from dice_ml.utils import helpers # helper functions
from keras import backend as K
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
tf.config.run_functions_eagerly(True)
import dice_ml
from dice_ml.utils import helpers # helper functions
Dataset for training an ML model
d = dice_ml.Data(dataframe=helpers.load_adult_income_dataset(),
continuous_features=['age', 'hours_per_week'],
outcome_name='income')
Pre-trained ML model
backend = 'TF'+tf.version[0] # TF2 in your case
ML_modelpath = helpers.get_adult_income_modelpath(backend=backend)
m = dice_ml.Model(model_path= ML_modelpath, backend=backend)
DiCE explanation instance
exp = dice_ml.Dice(d,m)
query_instance = {'age':22,
'workclass':'Private',
'education':'HS-grad',
'marital_status':'Single',
'occupation':'Service',
'race': 'White',
'gender':'Female',
'hours_per_week': 45}
dice_exp = exp.generate_counterfactuals(query_instance, total_CFs=4, desired_class="opposite")
`
the full traceback:
`AttributeError                            Traceback (most recent call last)
 in
----> 1 dice_exp = exp.generate_counterfactuals(query_instance, total_CFs=4, desired_class="opposite")
2 # Visualize counterfactual explanation
3 #dice_exp.visualize_as_dataframe()
3 frames
/usr/local/lib/python3.7/dist-packages/dice_ml/explainer_interfaces/dice_tensorflow2.py in generate_counterfactuals(self, query_instance, total_CFs, desired_class, proximity_weight, diversity_weight, categorical_penalty, algorithm, features_to_vary, permitted_range, yloss_type, diversity_loss_type, feature_weights, optimizer, learning_rate, min_iter, max_iter, project_iter, loss_diff_thres, loss_converge_maxiter, verbose, init_near_query_instance, tie_random, stopping_threshold, posthoc_sparsity_param, posthoc_sparsity_algorithm)
134                                       loss_diff_thres, loss_converge_maxiter, verbose,
135                                       init_near_query_instance, tie_random, stopping_threshold,
--> 136                                       posthoc_sparsity_param, posthoc_sparsity_algorithm)
137
138         counterfactual_explanations = exp.CounterfactualExamples(
/usr/local/lib/python3.7/dist-packages/dice_ml/explainer_interfaces/dice_tensorflow2.py in find_counterfactuals(self, query_instance, desired_class, optimizer, learning_rate, min_iter, max_iter, project_iter, loss_diff_thres, loss_converge_maxiter, verbose, init_near_query_instance, tie_random, stopping_threshold, posthoc_sparsity_param, posthoc_sparsity_algorithm)
431
432         # find the predicted value of query_instance
--> 433         test_pred = self.predict_fn(tf.constant(query_instance, dtype=tf.float32))[0][0]
434         if desired_class == "opposite":
435             desired_class = 1.0 - round(test_pred)
/usr/local/lib/python3.7/dist-packages/dice_ml/explainer_interfaces/dice_tensorflow2.py in predict_fn(self, input_instance)
148     def predict_fn(self, input_instance):
149         """prediction function"""
--> 150         temp_preds = self.model.get_output(input_instance).numpy()
151         return np.array([preds[(self.num_output_nodes-1):] for preds in temp_preds], dtype=np.float32)
152
/usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/ops.py in getattr(self, name)
444         np_config.enable_numpy_behavior()
445       """)
--> 446     self.getattribute(name)
447
448   @staticmethod
AttributeError: 'Tensor' object has no attribute 'numpy'`


Adding saving the nodes positions

Hello.
With my other issue (https://github.com/lydianlights/yet-another-factory-planner/issues/10) i was thinking that saving nodes positions in the graph might be beneficial in a few ways. For example, the factory i presented in the other issue (https://www.satisfactory-planner.net/?factory=eVGSD6-qaXqc8WSDItVsG) requires a lot of planning on where to produce what.
As such i dragged the nodes to visually represent the factory's spatial organization for easier building. However, the positions reset when the page is reloaded, input is changed or some other event happens.
I think it would be helpful if when saving the plan, it would also save the positions of the nodes.
Is that feasible?

We chatted about this on Discord, but for a public record I'll add that this would be a great feature


Conda recipe tweaks

I made some changes to the conda recipe.  The commit log says it all, but here's the summary:

On Mac, use the libstdc++ version of libgurobi_c++
Use the local git repo instead of fetching from a git_url
Minor changes to support conda-build 2.0

Thanks for all the recipe updates!


WebAudioSoundManager fix causes document.body is undefined error

The WebAudioSoundManager fix that attaches events on the document.body to fix Chrome v66+ not playing audio until a user gesture is received is causing an error on an older version of Firefox. There is no error using Chromium (latest build) but on Firefox 52 document.body is undefined. If I add a check to phaser.js then the game runs fine including sound
       if (!document.body) {                 _this.unlocked = true;         } else {

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

I'm not sure what's more alarming. The fact we have to fix this for Chrome at all, or the fact that Firefox has no concept of document.body.

Maybe it's undefined because the game is instantiated before body loads? i.e. script is called in ?

Nope, it can't be that because Phaser waits for a DOM Load event before starting any systems, including Web Audio.
MDN implies FF has supported body since version 2, but it was bugged until version 60?! Which seems batshit crazy to me, but there we go: https://developer.mozilla.org/en-US/docs/Web/API/Document/body


Inactivity Disambiguation

When calling cleanup before successfully joining, such as when a song is attempted to be queued but failed (still instantiating a Jukebox), the "left voice channel due to inactivity" message is displayed even though it never joined.

The solution to this would be passing in a 'reason' argument to the cleanup method to message appropriately.

No longer necessary.


Switch reroute to use a list

First step in finishing #110, still need to modify
navigate view if currently 'rerouting'
Modifies Rerouting.reroute() to take an origin lat/lon
instead of using a stubbed location.

This can be reviewed, would be nice to get it in for RRP, still cleaning up some old comments.

+1


[Fix] add version lifecycle change ignore

Description
Added version lifecycle change ignore
Types of changes in this PR
https://github.com/terraform-ibm-modules/terraform-ibm-landing-zone/issues/498
Changes that affect the core Terraform module or submodules

[x] Bug fix
[ ] New feature
[ ] Dependency update

Changes that don't affect the core Terraform module or submodules

[ ] Examples or tests (addition or updates of examples or tests)
[ ] Documentation update
[ ] CI-related update (pipeline, etc.)
[ ] Other

Release required?
Identify the type of release. For information about the changes in a semantic versioning release, see Release versioning.

[ ] No release
[x] Patch release (x.x.X)
[ ] Minor release (x.X.x)
[ ] Major release (X.x.x)

Release notes content
If a release is required, replace this text with information that users need to know about the release. Write the release notes to help users understand the changes, and include information about how to update from the previous version.
Your notes help the merger write the commit message for the PR that is published in the release notes for the module.
Run the pipeline
If the CI pipeline doesn't run when you create the PR, the PR requires a user with GitHub collaborators access to run the pipeline.
Run the CI pipeline when the PR is ready for review and you expect tests to pass. Add a comment to the PR with the following text:
/run pipeline

Checklist for reviewers

[ ] If relevant, a test for the change is included or updated with this PR.
[ ] If relevant, documentation for the change is included or updated with this PR.

Merge actions for mergers

Use a relevant conventional commit message that is based on the PR contents and any release notes provided by the PR author. The commit message determines whether a new version of the module is needed, and if so, which semver increment to use (major, minor, or patch).
Merge by using "Squash and merge".

/run pipeline

@Soaib024 Can you address failing pre-commit ?

@Soaib024 Can you address failing pre-commit ?

Addressed

:tada: This PR is included in version 4.4.5 :tada:
The release is available on:

GitHub release
v4.4.5

Your semantic-release bot :package::rocket:


Fix paired buttons spacing when the button is from a different variant

story: https://app.shortcut.com/cartoteam/story/292993/workspace-settings-ui-improvements-bugfixing
[sc-292993]
Found a bug in the theme related to buttons: when you have 2 buttons inline, there is no horizontal padding if they are from different variants.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 72.015%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
2017

Relevant Lines:
2579

💛  - Coveralls


ModuleNotFoundError: No module named 'beetsplug.oldestdate' after install in Linuxserver Beets image

I wrote a script based on your install instructions for my LSIO based beets image. This is my first attempt at installing a 3rd party addon to beets.
beets-oldestdate.sh placed in custom-cont-init.d dir
#!/bin/bash

echo "**** installing beets-oldestdate ****"
mkdir -p /tmp/beets-oldestdate-src
curl -o /tmp/beets-oldestdate-src/master.zip -sL https://github.com/kernitus/beets-oldestdate/archive/refs/heads/master.zip

cd /tmp/beets-oldestdate-src
unzip -qq /tmp/beets-oldestdate-src/master.zip
cd beets-oldestdate-master
/usr/bin/python3 ./setup.py install
rm -r /tmp/beets-oldestdate-src

Docker log
 [s6-init] making user provided files available at /var/run/s6/etc...exited 0.
 [s6-init] ensuring user provided files have correct perms...exited 0.
 [fix-attrs.d] applying ownership & permissions fixes...
 [fix-attrs.d] done.
 [cont-init.d] executing container initialization scripts...
 [cont-init.d] 01-envfile: executing...
 [cont-init.d] 01-envfile: exited 0.
 [cont-init.d] 10-adduser: executing...

 -------------------------------------
           _         ()
          | |  ___   _    __
          | | / __| | |  /  \
          | | \__ \ | | | () |
          |_| |___/ |_|  \__/

 Brought to you by linuxserver.io
 -------------------------------------

 To support LSIO projects visit:
 https://www.linuxserver.io/donate/
 -------------------------------------
 GID/UID
 -------------------------------------

 User uid:    1001
 User gid:    100
 -------------------------------------

 [cont-init.d] 10-adduser: exited 0.
 [cont-init.d] 30-config: executing...
 [cont-init.d] 30-config: exited 0.
 [cont-init.d] 90-custom-folders: executing...
 [cont-init.d] 90-custom-folders: exited 0.
 [cont-init.d] 99-custom-files: executing...
 [custom-init] files found in /config/custom-cont-init.d executing
 [custom-init] beets-oldestdate.sh: executing...
 **** installing beets-oldestdate ****
 running install
 running bdist_egg
 running egg_info
 creating beets_oldestdate.egg-info
 writing beets_oldestdate.egg-info/PKG-INFO
 writing dependency_links to beets_oldestdate.egg-info/dependency_links.txt
 writing top-level names to beets_oldestdate.egg-info/top_level.txt
 writing manifest file 'beets_oldestdate.egg-info/SOURCES.txt'
 adding license file 'LICENSE' (matched pattern 'LICEN[CS]E*')
 reading manifest file 'beets_oldestdate.egg-info/SOURCES.txt'
 writing manifest file 'beets_oldestdate.egg-info/SOURCES.txt'
 installing library code to build/bdist.linux-aarch64/egg
 running install_lib
 running build_py
 creating build
 creating build/lib
 creating build/lib/beetsplug
 copying beetsplug/__init__.py -> build/lib/beetsplug
 copying beetsplug/oldestdate.py -> build/lib/beetsplug
 creating build/bdist.linux-aarch64
 creating build/bdist.linux-aarch64/egg
 creating build/bdist.linux-aarch64/egg/beetsplug
 copying build/lib/beetsplug/__init__.py -> build/bdist.linux-aarch64/egg/beetsplug
 copying build/lib/beetsplug/oldestdate.py -> build/bdist.linux-aarch64/egg/beetsplug
 byte-compiling build/bdist.linux-aarch64/egg/beetsplug/__init__.py to __init__.cpython-38.pyc
 byte-compiling build/bdist.linux-aarch64/egg/beetsplug/oldestdate.py to oldestdate.cpython-38.pyc
 creating build/bdist.linux-aarch64/egg/EGG-INFO
 copying beets_oldestdate.egg-info/PKG-INFO -> build/bdist.linux-aarch64/egg/EGG-INFO
 copying beets_oldestdate.egg-info/SOURCES.txt -> build/bdist.linux-aarch64/egg/EGG-INFO
 copying beets_oldestdate.egg-info/dependency_links.txt -> build/bdist.linux-aarch64/egg/EGG-INFO
 copying beets_oldestdate.egg-info/top_level.txt -> build/bdist.linux-aarch64/egg/EGG-INFO
 zip_safe flag not set; analyzing archive contents...
 beetsplug.__pycache__.__init__.cpython-38: module references __path__
 creating dist
 creating 'dist/beets_oldestdate-1.0.0-py3.8.egg' and adding 'build/bdist.linux-aarch64/egg' to it
 removing 'build/bdist.linux-aarch64/egg' (and everything under it)
 Processing beets_oldestdate-1.0.0-py3.8.egg
 creating /usr/lib/python3.8/site-packages/beets_oldestdate-1.0.0-py3.8.egg
 Extracting beets_oldestdate-1.0.0-py3.8.egg to /usr/lib/python3.8/site-packages
 Adding beets-oldestdate 1.0.0 to easy-install.pth file

 Installed /usr/lib/python3.8/site-packages/beets_oldestdate-1.0.0-py3.8.egg
 Processing dependencies for beets-oldestdate==1.0.0
 Finished processing dependencies for beets-oldestdate==1.0.0
 [custom-init] beets-oldestdate.sh: exited 0
 [cont-init.d] 99-custom-files: exited 0.
 [cont-init.d] done.
 [services.d] starting services
 [services.d] done.
 ** error loading plugin oldestdate:
 Traceback (most recent call last):
   File "/usr/lib/python3.8/site-packages/beets/plugins.py", line 276, in load_plugins
     namespace = __import__(modname, None, None)
 ModuleNotFoundError: No module named 'beetsplug.oldestdate'

  * Serving Flask app 'beetsplug.web' (lazy loading)
  * Environment: production
    WARNING: This is a development server. Do not use it in a production deployment.
    Use a production WSGI server instead.
  * Debug mode: off
  * Running on http://<IP_ADDRESS>:8337/ (Press CTRL+C to quit)

Install seems to run fine, no errors. config.yml includes oldestdate in plugins list. But I always get the ModuleNotFoundError error.
Any ideas?

I wasn't running the nightly LSIO image, but the latest. Once I switched to :nightly then I got the same error as #1
Maybe install instructions or setup.py needs to be updated.


Want to know if robotjs can use the deep learning function of AI in the future?

Expected Behavior

Current Behavior

Possible Solution

Steps to Reproduce (for bugs)

Context

Your Environment

RobotJS version:
Node.js version:
npm version:
Operating System:

Sure!


[SGTM] Use GitHub app

Summary
Asana tasks:
https://app.asana.com/0/1149418478823393/1206481130360628/f
Relevant deployment:
CC: @vn6
Test Plan
Risks
Pull Request: https://github.com/Asana/SGTM/pull/168
Pull Request synchronized with Asana task

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#168  👈
#172
#170
master

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @vn6 and the rest of your teammates on  Graphite

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#168  👈
#172
#170
master

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @vn6 and the rest of your teammates on  Graphite

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#168  👈
#172
#170
master

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @vn6 and the rest of your teammates on  Graphite


Scalastyle sbt plugin?

Do we need https://github.com/scalastyle/scalastyle-sbt-plugin? It would be nice to enable it in Travis CI, so we can easily check the incoming PRs style.
Any thoughts?

This rule http://www.scalastyle.org/rules-0.6.0.html#org_scalastyle_scalariform_NullChecker is from nightmare I recently had after we merged the patch with null :) //c @jenshalm

There is also https://github.com/puffnfresh/wartremover. Which is more about linting than style.
:)

Sounds cool! Thanks @pasviegas! Do you think we can use them both?

The scalastyle plugin is enabled. But I still would love to see wartremover enabled. Moving ticket to the next milestone.

I wish these engines would allow for annotations on methods to ignore. For a rule like a null check it would be best to have it active per default and then explicitly allow yourself the use per annotation in just one place.

Yeah, I use both normally, but I miss the annotations, sometimes is necessary to break some rules :)

We can also revise the Scalastyle rules and enable as much as we want: http://www.scalastyle.org/rules-0.6.0.html.

There is also https://github.com/scala/scala-abide.

I've enabled WartRemover and it produces around 100 warnings :) See #200. I think it's enough having just two tools enabled WartRemover + Scalastyle. I just want to make sure that we use all the rules we need from Scalastyle.

@jenshalm just found out that we can suppress some scalastyle warnings by comment
// scalastyle:off null

We should probably enable null-rule.

Yes, if they support this kind of annotation, our use of null is a perfect use case for that, as we only need it due to exceptional circumstances (java interop in this case). We should enable the rule then.

Just found out this: https://github.com/scala/scala-abide
Might be good to check it out. :)

Yeah. I mentioned it previously. Looks like it's repeating the functionality of WartRemoval, so I decided to stick to the last one for now.


fix draw_rect rotation

fixes #24642
rotated rects in GLES2 should now be oriented like prior to bec76cfa19684cbfce3677044331805fd2a54d8b and like in GLES3.
Testet with tiles in various rotations.

Thanks!


SingleStore does not allow a order by in a delete query

We are in the process of migrating to Singlestore and have encountered a compatibility issue with Laravel's Database Notifications.
The issue arises from the HasDatabaseNotifications trait, which defines a relationship that automatically applies a latest sorting order by default. This sorting behavior is intended for notification retrieval but also inadvertently affects deletion operations. While this automatically generated query functions correctly in MySQL and PostgreSQL, it appears that Singlestore does not support this syntax.

HasDatabaseNotification Trait and Relation
<?php

namespace Illuminate\Notifications;

trait HasDatabaseNotifications
{
    /**
     * Get the entity's notifications.
     *
     * @return \Illuminate\Database\Eloquent\Relations\MorphMany
     */
    public function notifications()
    {
        return $this->morphMany(DatabaseNotification::class, 'notifiable')->latest();
    }

Example of a produced query when trying to delete a notification via relation and the corresponding error from Singlestore
delete from
  `notifications`
where
  `notifications`.`notifiable_type` = App \ Models \ User
  and `notifications`.`notifiable_id` = 218
  and `notifications`.`notifiable_id` is not null
  and JSON_EXTRACT_STRING(data, 'format') = filament
  and `id` = 9bf43012 - ecff - 4ef1 - afb2 - 26ee0218109f
order by
  `created_at` desc

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order by `created_at` desc' at line 1

@carlsverre the behaviour should be documented in Singlestores doc. In the example is a order by in a subquery but no mention of the not allowed behaviour.
Reference: https://docs.singlestore.com/cloud/reference/sql-reference/data-manipulation-language-dml/delete/#example
@olliescase

Hey @Cosnavel
Thanks for pointing out this incompatibility.
With your changes, the connector may produce an incorrect result.
For example, when someone wants to delete a single row with the latest timestamp (without order by, it will delete the random row, which will be very unexpected).
I prefer to throw an error in this case by default and add a special flag ignore_order_by_in_delete which can be enabled in the case of migrations when the user knows that order by can be safely ignored.
What do you think about this?

Hey @AdalbertMemSQL,
would also be an idea to overwrite the entire handling of the order by in deletes and inject it as a subquery. Would that be possible?
We also encountered several errors because of subqueries like this so in a bit concerned.
General error: 1749 Feature 'Correlated subselect that can not be transformed and does not match on shard keys' is not supported by SingleStore Distributed.

Hi,
We are going through the same situation. And it's not just DELETE, it also happens with UPDATE when using notifications() from Illuminate\Notifications\Notifiable.

Looks like this order by behaviour is specific to MySQL
        // When using MySQL, delete statements may contain order by statements and limits
        // so we will compile both of those here. Once we have finished compiling this
        // we will return the completed SQL statement so it will be executed for us.
        if (! empty($query->orders)) {
            $sql .= ' '.$this->compileOrders($query, $query->orders);
        }

    /**
     * Compile an update statement without joins into SQL.
     *
     * @param  \Illuminate\Database\Query\Builder  $query
     * @param  string  $table
     * @param  string  $columns
     * @param  string  $where
     * @return string
     */
    protected function compileUpdateWithoutJoins(Builder $query, $table, $columns, $where)
    {
        $sql = parent::compileUpdateWithoutJoins($query, $table, $columns, $where);

        if (! empty($query->orders)) {
            $sql .= ' '.$this->compileOrders($query, $query->orders);
        }

        if (isset($query->limit)) {
            $sql .= ' '.$this->compileLimit($query, $query->limit);
        }

        return $sql;
    }

I see.
The problem is calling the parent::compileUpdateWithoutJoins . It calls the order anyway as SingleStore\Laravel\Query\Grammar extends Illuminate\Database\Query\Grammars\MySqlGrammar

Or maby it will work for updates:
/**
     * Compile an update statement without joins into SQL.
     *
     * @param  \Illuminate\Database\Query\Builder  $query
     * @param  string  $table
     * @param  string  $columns
     * @param  string  $where
     * @return string
     */
    protected function compileUpdateWithoutJoins(Builder $query, $table, $columns, $where)
    {
        $sql = "update {$table} set {$columns} {$where}";

        if (isset($query->limit)) {
            $sql .= ' '.$this->compileLimit($query, $query->limit);
        }

        return $sql;
    }

With this change, it won't throw an error. But it may delete wrong rows (as it will ignore order by).
I checked the code for other drivers and they don't ignore it. So I still stick to the idea that order by in deletes/updates should be disabled by default

As we are working with Filament we can't customize the query when using Filament Notifications Database.
Something like these in the Singlestore driver when exists $orders:
UPDATE your_table
SET column = value
WHERE id IN (
    SELECT id
    FROM (
        SELECT id
        FROM your_table
        WHERE your_conditions
        ORDER BY your_order_column
        LIMIT your_limit
    ) AS subquery
);

Queries like this will only work properly if the table has an id column with unique values.

I'm planning to add an option to ignore order by.
Something like ignore_order_by_in_deletes and ignore_order_by_in_updates.
I hope this will help to unblock you.

Hi,
To report that Limit is also not supported, but there is this insertion when using updateOrInsert from Illuminate\Database\Query\Builder:
    /**
     * Insert or update a record matching the attributes, and fill it with values.
     *
     * @param  array  $attributes
     * @param  array|callable  $values
     * @return bool
     */
    public function updateOrInsert(array $attributes, array|callable $values = [])
    {
        $exists = $this->where($attributes)->exists();

        if ($values instanceof Closure) {
            $values = $values($exists);
        }

        if (! $exists) {
            return $this->insert(array_merge($attributes, $values));
        }

        if (empty($values)) {
            return true;
        }

        return (bool) $this->limit(1)->update($values);
    }

The exception:
PDOException: SQLSTATE[HY000]: General error: 1749 Feature 'UPDATE...LIMIT must be constrained to a single partition' is not supported by SingleStore Distributed.

@arthurmarchesi Thanks for reporting this case.
The limit is supported in some scenarios (when all updated rows are in the same partition).
https://docs.singlestore.com/cloud/reference/sql-reference/data-manipulation-language-dml/update/#update-using-limit
So, if you filter rows using a shard key, it will work well.

Yes, I just checked out. Thank you.


Change path.join to Pathlib Style of Joining

Fixes #258
Description
This PR proposes the change of style to use the Pathlib styling for joining the paths instead of os.path.join().

Looks very solid, except for the one comment I had. Thanks a lot! Let's wait for the tests :)

Hi: As you can see some of the tests still fail because of this bit here:
evtid = int(f[-9:])

(assuming a string). Arguably this is a hacky thing to begin with, but we could probably just replace it with something like f.name[-9:]) for now

There's one thing I'm concerned here with changing the following to f.name.
evtid = int(f[-9:])

Which one of the following should be used here?

PurePath.name gives output just the final path component i.e. name of the file, not the entire path.
str(path) converts the entire path to a path string.

Path.name is the only thing that makes sense here

Codecov Report
Base: 68.37% // Head: 68.34% // Decreases project coverage by -0.03% :warning:

Coverage data is based on head (b5ae18b) compared to base (7756a7c).
Patch coverage: 41.17% of modified lines in pull request are covered.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #265      +/-   ##
==========================================
- Coverage   68.37%   68.34%   -0.03%
==========================================
  Files          45       45
  Lines        2406     2404       -2
==========================================
- Hits         1645     1643       -2
  Misses        761      761

Impacted Files
Coverage Δ

src/gnn_tracking/utils/plotting.py
0.00% <0.00%> (ø)

...c/gnn_tracking/graph_construction/graph_builder.py
73.54% <80.00%> (-0.11%)
:arrow_down:

.../gnn_tracking/preprocessing/point_cloud_builder.py
75.70% <100.00%> (-0.14%)
:arrow_down:

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.

Ya sure, I would like to work further. If I understood correctly, do you mean changing these - os.makedirs and os.listdir to their Pathlib alternatives?


Cant decrypt _USRPKEY

_USRCERT decypted fine. _USRPKEY wont decrypt. Getting Exception in thread main illegal argument exception.
Any idea how to decrypt this file?

What version of Android is the file from? Latest versions are not really supported, and in the case of hardware-backed keystore, decryption might not be possible.


Still have problems with multiple request

Hi
I have problem with my multiple requests. Only the first 401 error probably getting new access token, second not.

Here is my code.
`import axios from "axios";
import createAuthRefreshInterceptor from "axios-auth-refresh";
const baseUrl = "https://****.com/";
const instance = axios.create({
baseURL: baseUrl,
});
// Function that will be called to refresh authorization
const refreshAuthLogic = (failedRequest: any) =>
axios
.post("https://****/api/token/refresh/", {
refresh: localStorage.getItem("refreshToken"),
})
.then((tokenRefreshResponse) => {
localStorage.removeItem("accessToken");
localStorage.setItem("accessToken", tokenRefreshResponse.data.access);
  console.log(tokenRefreshResponse.data.access);

  failedRequest.response.config.headers["Authorization"] =
    "Bearer " + tokenRefreshResponse.data.access;

  return Promise.resolve();
});

createAuthRefreshInterceptor(instance, refreshAuthLogic);
export default instance;`
No matter if I set the newest options like skipWhileRefreshing, pauseInstanceWhileRefreshing - situation is the same. I tried previous closed issues but didnt work :(

You need put the logic for set auth token on an axios interceptor as the example on documentation:
axios.interceptors.request.use(request => {
    request.headers['Authorization'] = `Bearer ${getAccessToken()}`;
    return request;
});

previusly you define the function getAccessToken for example on localStorage.

@lensanag is correct. You need to use an interceptor to bind the new token for the requests. Otherwise there's no way to bind it into the awaiting requests, unfortunately.

Ehh... I don't understand a little how I can add this all.
So my code above is correct but I need to define additional lines of code like this @lensanag?
In getAccessToken I have to put only localstorage.getItem or I should put there axios get request for token?

Example from documentation:
// Logic from above is here

// Obtain the fresh token each time the function is called
function getAccessToken() {
    return localStorage.getItem('token');
}

// Use interceptor to inject the token to requests
axios.interceptors.request.use(request => {
    request.headers['Authorization'] = `Bearer ${getAccessToken()}`;
    return request;
});

Still the same situation (same like on my added picture)
import axios from "axios";
import createAuthRefreshInterceptor from "axios-auth-refresh";

const baseUrl = "https://***/";

const instance = axios.create({
  baseURL: baseUrl,
});

// Function that will be called to refresh authorization
const refreshAuthLogic = (failedRequest: any) =>
  axios
    .post("https://***/api/token/refresh/", {
      refresh: localStorage.getItem("refreshToken"),
    })
    .then((tokenRefreshResponse) => {
      localStorage.setItem("accessToken", tokenRefreshResponse.data.access);

      console.log(tokenRefreshResponse.data.access);

      failedRequest.response.config.headers["Authorization"] =
        "Bearer " + tokenRefreshResponse.data.access;
      return Promise.resolve();
    });

function getAccessToken() {
  return localStorage.getItem("accessToken");
}

// Use interceptor to inject the token to requests
axios.interceptors.request.use((request) => {
  request.headers["Authorization"] = `Bearer ${getAccessToken()}`;
  return request;
});

createAuthRefreshInterceptor(instance, refreshAuthLogic);

export default instance;

Well, it's probably because you mix instance and axios like it's the same thing. Try to use instance after it's created and it will work just fine 🙂
So the final code would be:
import axios from "axios";
import createAuthRefreshInterceptor from "axios-auth-refresh";

const baseUrl = "https://***/";

const instance = axios.create({
  baseURL: baseUrl,
});

// Function that will be called to refresh authorization
const refreshAuthLogic = (failedRequest: any) =>
  instance
    .post("https://***/api/token/refresh/", {
      refresh: localStorage.getItem("refreshToken"),
    })
    .then((tokenRefreshResponse) => {
      localStorage.setItem("accessToken", tokenRefreshResponse.data.access);

      console.log(tokenRefreshResponse.data.access);

      failedRequest.response.config.headers["Authorization"] =
        "Bearer " + tokenRefreshResponse.data.access;
      return Promise.resolve();
    });

function getAccessToken() {
  return localStorage.getItem("accessToken");
}

// Use interceptor to inject the token to requests
instance.interceptors.request.use((request) => {
  request.headers["Authorization"] = `Bearer ${getAccessToken()}`;
  return request;
});

createAuthRefreshInterceptor(instance, refreshAuthLogic);

export default instance;

Well, it's probably because you mix instance and axios like it's the same thing. Try to use instance after it's created and it will work just fine 🙂
So the final code would be:
import axios from "axios";
import createAuthRefreshInterceptor from "axios-auth-refresh";

const baseUrl = "https://***/";

const instance = axios.create({
  baseURL: baseUrl,
});

// Function that will be called to refresh authorization
const refreshAuthLogic = (failedRequest: any) =>
  instance
    .post("https://***/api/token/refresh/", {
      refresh: localStorage.getItem("refreshToken"),
    })
    .then((tokenRefreshResponse) => {
      localStorage.setItem("accessToken", tokenRefreshResponse.data.access);

      console.log(tokenRefreshResponse.data.access);

      failedRequest.response.config.headers["Authorization"] =
        "Bearer " + tokenRefreshResponse.data.access;
      return Promise.resolve();
    });

function getAccessToken() {
  return localStorage.getItem("accessToken");
}

// Use interceptor to inject the token to requests
instance.interceptors.request.use((request) => {
  request.headers["Authorization"] = `Bearer ${getAccessToken()}`;
  return request;
});

createAuthRefreshInterceptor(instance, refreshAuthLogic);

export default instance;

....
I forgot about using instance instead axios ... xD Sorry, my fault because in other files Im importing this instance with "axios" export for "instance" ... Thanks!!!!!!!!!!!!!!!!!!!!!!


SIS Integration?

Did you already thougt about the integration of Stark-in-Strom wallboxes with SIS contol inside?

If SIS wants to support evcc they‘re welcome to contribute and maintain or sponsor an implementation. Otherwise not.


Delay epsg determination as much as possible

Introduce special state _epsg=0, that implies "epsg code is not known yet", _epsg=None means "epsg code is known to be absent".
Force all CRS construction code paths through cache.

@snowman2 how about this change? Do you think that will fix performance issues you have observed with non-epsg SRSs?

Part of the reason is False was used in #70 was because it skips the equality check as it is not necessary. Using == instead of is invokes the __eq__ method of the CRS class which attempts to create a CRS. This can cause a performance hit as PROJ has to go through a lot of logic before determining that it isn't a valid CRS.

In [1]: from pyproj import CRS

In [2]: cc = CRS(4326)

In [4]: %%timeit
   ...:
   ...: cc == -1
   ...:
   ...:
7.54 ms ± 252 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

In [5]: %%timeit
   ...:
   ...: cc is False
   ...:
   ...:
59.1 ns ± 5.09 ns per loop (mean ± std. dev. of 7 runs, 10,000,000 loops each)

Do you think that will fix performance issues you have observed with non-epsg SRSs?

Yes, I believe it will help. Thanks :+1:

Part of the reason is False was used in #70 was because it skips the equality check as it is not necessary. Using == instead of is invokes the __eq__ method of the CRS class which attempts to create a CRS. This can cause a performance hit as PROJ has to go through a lot of logic before determining that it isn't a valid CRS.

My main issue with using False|None|<int> is that it complicates type a bit, and it's not really obvious which is which between None and False. The CRS.__eq__ should not trigger with the current implementation as comparison is done with None|int type

I gave it a try:
In [1]: from odc.geo import CRS

In [2]: cc = CRS(4326)

In [3]: %%timeit
   ...:
   ...: cc == -1
   ...:
   ...:
5.07 ms ± 202 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

In [4]: %%timeit
   ...:
   ...: cc is False
   ...:
   ...:
31.4 ns ± 3.22 ns per loop (mean ± std. dev. of 7 runs, 10,000,000 loops each)

Looks like it attempts to construct a CRS if it is not a CRS each time: https://github.com/opendatacube/odc-geo/blob/85c90a232d0888408dd1e53e1a913239d6480cf9/odc/geo/crs.py#L238-L243

Actually, need to update to use this PR ...

You are correct, this seems okay:
In [5]: %%timeit
   ...:
   ...: cc.to_epsg()
   ...:
   ...:
141 ns ± 1.87 ns per loop (mean ± std. dev. of 7 runs, 10,000,000 loops each)

And this looks good too:
In [7]: %%timeit
   ...:
   ...: CRS('PROJCS["unnamed",GEOGCS["Unknown datum based upon the custom spher
   ...: oid",DATUM["Not specified (based on custom spheroid)",SPHEROID["Custom
   ...: spheroid",6371007.181,0]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532
   ...: 925199433]],PROJECTION["Sinusoidal"],PARAMETER["longitude_of_center",0]
   ...: ,PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["Meter
   ...: ",1],AXIS["Easting",EAST],AXIS["Northing",NORTH]]')
   ...:
   ...:
1.06 µs ± 19.9 ns per loop (mean ± std. dev. of 7 runs, 1,000,000 loops each)

Looks like it attempts to construct a CRS if it is not a CRS each time:
https://github.com/opendatacube/odc-geo/blob/85c90a232d0888408dd1e53e1a913239d6480cf9/odc/geo/crs.py#L238-L243

I guess we could avoid that when rhs is int, and maybe avoid it when rhs is string.

Although with every input into CRS constructor going through the cache path it's less of an issue.


seres.show datalabes overlapped in stacked graph

Checklist

[x] I updated the card to the latest version available
[x] I cleared the cache of my browser
[x] I verified that I'm really running the lastest version in my browser console
[x] I checked if there is another issue opened with the same problem

Describe the bug
When using series.show datalabes, on a stacked graph, labels will be overlapped
Version of the card
Version: 1.7.1
To Reproduce
This is the configuration I used:
type: 'custom:apexcharts-card'
cache: false
stacked: true
graph_span: 7d
header:
  show: true
  title: FV Giornaliero
span:
  end: day
series:
  - entity: sensor.solaredge_power_production_template
    invert: true
    show:
      datalabels: true
    color: green
    name: Produzione
    unit: kW
    float_precision: 2
    curve: smooth
    type: column
    group_by:
      func: max
      duration: 1d
  - entity: sensor.solaredge_power_consumption_template
    show:
      datalabels: true
    color: red
    curve: smooth
    name: Consumo
    float_precision: 2
    unit: kW
    type: column
    group_by:
      func: max
      duration: 1d
apex_config:
  chart:
    height: 130%

Screenshots
If applicable, add screenshots to help explain your problem.

Expected behavior
Green labels are missing because overlapped by red one.
Desktop (please complete the following information):

Browser: Chrome
Version: 87

That is unfortunately not something I can fix, it's how ApexCharts behaves :(


[Documentation] Update JS packages

Purpose
What is the context of this pull request? Why is it being done?
The main README is outdated.
Changes
Are there any changes that need to be called out as significant or particularly difficult to grasp? (Include illustrative screenshots for context if applicable.)
Update the packages' version of the main README.
Tests
Is this covered by existing tests or new ones? If no, why not?
-
Feature Plan
Are there any remaining steps or dependencies before this issue can be fully resolved? If so, describe and link to any relevant pull requests or issues.
-
Checklist
General

[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have added or updated the appropriate tests
[X] I have updated related documentation

The changes look great! But the badge is not being rendered 😟

Weird, I can see it

Now I see the badges :confusion:

Already merged in MS!


Fix: SEO Schema markup and meta tags addition

Description of PR
SEO Optimisation - Schema markup and meta tags added. Page titles also included for all pages.
Relevant Issues
Fixes #261 #258
Checklist

[x] Compiles and passes lint tests
[x] Properly formatted
[x] Tested on desktop
[ ] Tested on phone

Screenshots

@vandanachandola just chiming in to let you know that I've pushed a change to title/description tags in index.html. Let me know when you're done with the updates!
Also let's drop the keywords tag :)

@vandanachandola just chiming in to let you know that I've pushed a change to title/description tags in index.html. Let me know when you're done with the updates!
Also let's drop the keywords tag :)

@jeremyphilemon I've made the changes as per your suggestions. Let me know if you think any changes are required in page titles.


[cinder-csi-plugin] Add microversion to GetVolumeByName

What this PR does / why we need it:
This patch adds the microversion needed to be able to properly
filter volumes by name.
Which issue this PR fixes(if applicable):
fixes # 1487

Thanks for your pull request. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).
📝 Please follow instructions at https://git.k8s.io/community/CLA.md#the-contributor-license-agreement to sign the CLA.
It may take a couple minutes for the CLA signature to be fully registered; after that, please reply here with a new comment and we'll verify. Thanks.

If you've already signed a CLA, it's possible we don't have your GitHub username or you're using a different email address.  Check your existing CLA data and verify that your email is set on your git commits.
If you signed the CLA as a corporation, please sign in with your organization's credentials at https://identity.linuxfoundation.org/projects/cncf to be authorized.
If you have done the above and are still having issues with the CLA being reported as unsigned, please log a ticket with the Linux Foundation Helpdesk: https://support.linuxfoundation.org/
Should you encounter any issues with the Linux Foundation Helpdesk, send a message to the backup e-mail support address at<EMAIL_ADDRESS>

I just signed it

/ok-to-test

thanks for the PR , can you help to update fixes # 1487 to fixes #1487 ?

you mentioned 2 APIs are affected but this PR only updated 1, on purpose?

you mentioned 2 APIs are affected but this PR only updated 1, on purpose?

@jichenjc Only one of the two api calls mentioned in the #1487 is actually using a filter (by name) and therefore requires the microversion.

you mentioned 2 APIs are affected but this PR only updated 1, on purpose?

Yah, I read the volumes list code a bit closer and realized that there is no filtering by field in that function, so it's not needed.
The microversion is only needed when filtering volumes/snapshots by field.

The e2e test is failing and it could be related. Seems like volumes can't be created anymore. I can't find the log output of the cinder-csi-plugin in the tests logs. I suspect the openstack environment is not accepting the microversion specification somehow.

/test cloud-provider-openstack-e2e-test-csi-cinder

The gate e2e test is not stable recently
let's give another try

I'm pretty sure the test failure is related to this PR, the error I linked is exactly a return from the function that was modified in this PR. Now it would be good to get the actual error logged with klog, but It seems the log output of the cinder-csi-plugin is not part of the test output.
I confirmed that this code works in our openstack environment and volumes can be created. So it would be interesting to get the logs to see why it is failing in the test environment.

klog.Errorf("Failed to query for existing Volume during CreateVolume: %v", err)
return nil, status.Error(codes.Internal, "Failed to get volumes")

the gate issue and your issue both exist in the logs
for now, I also can't figure out what's wrong there as the code is simliar to other micorversion usage
I suggest you update
return nil, status.Error(codes.Internal, "Failed to get volumes")
to
return nil, status.Error(codes.Internal, "Failed to get volumes %s", err)
so that we can know what's wrong in the gate log (I admit we should put all container logs into test result)

@hemna Could you update the PR to change this line: https://github.com/hemna/cloud-provider-openstack/blob/5e62d0c1f076193acd0ed0890c87be4bcfa869e6/pkg/csi/cinder/controllerserver.go#L89
to
		return nil, status.Error(codes.Internal, fmt.Sprintf("Failed to get volumes: %s", err))

Ok the error now says:
Failed to get volumes: Bad request with: [GET https://lon1.citycloud.com:8776/v3/06ce5499f716488d985845cddcabdc16/volumes/detail?name=pvc-6d2e0605-d9ef-4f7f-b0fe-2056070337d5], error message: {"badRequest": {"message": "Invalid filters name are found in query options.", "code": 400}}

What version of cinder is running in the e2e test environment. It seems like it behaves differently then out version.

I think we are using master (latest code) from
https://github.com/theopenlab/openlab-zuul-jobs/blob/master/roles/clone-devstack-gate-to-workspace/tasks/main.yml ? @lingxiankong do you know about this?

For the job cloud-provider-openstack-e2e-test-csi-cinder, it is talking with citynetwork block storage service (Cinder based) but not sure about the version.

/retest

/remove-lifecycle stale

can be tested once we have new CI up and running

/test openstack-cloud-csi-cinder-e2e-test

/test openstack-cloud-csi-cinder-e2e-test

/override openlab/cloud-provider-openstack-e2e-test-csi-cinder
/override openlab/cloud-provider-openstack-multinode-csi-migration-test
/override openstack-cloud-keystone-authentication-authorization-test

/test openstack-cloud-csi-manila-e2e-test

/lgtm

/cc @jichenjc @lingxiankong

/lgtm
Give  @jichenjc a chance to have a look.

/approve
thanks~


Add extension for conditional fields.

Current coverage is 91.88% (diff: 85.10%)

Merging #31 into master will decrease coverage by 1.15%

@@             master        #31   diff @@
==========================================
  Files            12         13     +1
  Lines           345        382    +37
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
+ Hits            321        351    +30
- Misses           24         31     +7
  Partials          0          0

Powered by Codecov. Last update 29ad210...5b3dc97

Merging, tests will come in #33.


[MB-9716] Updated E2E test image to one that uses latest mocha-junit-reporter

Description
This PR updates the image used by the docker-based E2E tests to use the latest mocha-junit-reporter version.  I am intentionally not including cypress 8.6.0 in the image for now as that seems to be causing me random test failures and "failed to connect to the bus" errors.
Setup
TBD
Code Review Verification Steps

[ ] Request review from a member of a different team.
[ ] Have the Jira acceptance criteria been met for this change?

References

Jira story for this change

Messages

:book:
:link: MB-9716

  Generated by :no_entry_sign: dangerJS against 10dba4e2cf0a8a1433d21e0e586284bc4977e5b3


Bug(MdTabs): Translate animation not working in IE 11 / Edge

Bug, feature request, or proposal:
Bug
What is the expected behavior?
When changing tabs, the content should be animated to translate to the left or to the right.
What is the current behavior?
In IE 11 / Edge
What are the steps to reproduce?
http://embed.plnkr.co/bXpnE7/
Which versions of Angular, Material, OS, TypeScript, browsers are affected?
Angular 4.1.3, Material 2.0.0-beta.6
Is there anything else we should know?
Apparently, this is due to animating with "translate3d()". The sidenav e.g. sets the style property instead of using the animation API, which seems to work.

This should probably solved similar to MdSidenav:
https://github.com/angular/material2/blob/master/src/lib/sidenav/sidenav.ts#L509

You need to include a polyfill for web animations, if you want most of the Material animations to work under IE.

@crisbeto you are right, i forgot to include the polyfill in the plunkr. However, the problem still remains even with the polyfill. I am currently investigating the issue with a simple plunkr example:
https://plnkr.co/edit/AnLKIlfuz5S6siBZQTIY?p=preview
it seems that this one does not work in IE either. so it might be related to the angular animations API.
What is strange though is the fact that when wildly clicking the toggle button or wildly changing tabs, the animation seems to happen, i.e. when the new animation starts before the previous one completed.

@crisbeto see also https://material.angular.io/components/component/tabs as an example

the issue here in material is most probably due to a bug in angular: https://github.com/angular/angular/issues/17239

@macjohnny , I tested here against IE11 and Edge.
IE11: Although a little delay, and something that resemble and animation, the rectangle's position is switched form one side to another.
Edge: worked fine

@julianobrasil can you check what happens in https://fiddle.jshell.net/fu7mrqn0/8 ?
the first example does not work in my IE 11. and I suppose this is exactly the problem with this issue here and the one here: https://github.com/angular/angular/issues/17239

@macjohnny , here is the report:
IE11: didn't work fine in just one case: "translate with percentages, 2 keyframes".
In my opinion: it's like the plunker example, where the so called "animation" seems more like a subtle change of position. In the fiddle's case, as the square goes back to its original position in the end, the animation seems to not happened at all.
For all the others cases in IE11, the animation ran smoothly.
Edge: no problem. All cases seemed to work as expected.

@julianobrasil thanks for having a look at it.
yes, in the jsfiddle example the square jumps back to its original position after the animation, which is no problem since no state after the animation was defined.
the problem still remains, however. if you compare the jsfiddle in chrome and in IE 11, the difference is very clear: in IE 11, the box does not move at all. also in the "translate with percentages, 3 keyframes" example, the box jumps to half-the translation after half the transition time, which to me seems like a problem animating between the first and the second keyframe.

Here is a workaround: using translate3d(0%,0,0) instead of translate3d(0,0,0) apparently fixes the problem, see this example: https://plnkr.co/edit/1Ffduxu1N3PJKgHutRuw?p=preview
However, I think this should be fixed in web-animations-js, since translating from translate3d(0,0,0) to translate3d(100px,0,0) works, whereas translating from translate3d(0,0,0) to translate3d(100%,0,0) does not.

@andrewseguin @jelbourn the workaround suggested here and in PR https://github.com/angular/material2/pull/4986 seems to work fine, we had no more issues with that.


Do not fail on no right to list some resource

What type of PR is this:
/kind bug
What does this PR do / why we need it:
This PR fixes the GetAllResourcesFromSelector function to not fail when some resource is not allowed to be listed, but only skip it.

/approve

/lgtm


feat: Handle async loading for config and run hooks modules

:tada: This PR is included in version 2.0.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Error: Resource types are not supported for resource import

Following the How-To Install on AWS using CloudFormation gives the following error when trying to import the cloud formation stack in the step Import the template to create a CloudFormation Stack
The following resource types are not supported for resource import: AWS::ElasticLoadBalancingV2::TargetGroup,Custom::FindAMI,AWS::ElasticLoadBalancingV2::TargetGroup Learn more

My mistake.
I incorrectly selected Create Stack => Create stack with existing resources (import resources) instead of Create Stack => With new resources (standard).
It was the word "import" that got me on the wrong track. Might be worth to specify exactly which option to choose here Import the template to create a CloudFormation Stack


tm1.elements.get_parents() special character error.

Describe the bug
When using the tm1.elements.get_parents() function if a '#' is passed through through as an element it gives this error:
TM1pyRestException: Text: '{"error":{"code":"278","message":"Quote mismatch: "}}' - Status Code: 400 - Reason: 'Bad Request' - Headers: {'Content-Length': '84', 'Connection': 'keep-alive', 'Content-Encoding': 'gzip', 'Cache-Control': 'no-cache', 'Content-Type': 'application/json; charset=utf-8', 'OData-Version': '4.0'}
To Reproduce
We use the '#' as a catch all for unknown values as they come into the system.
An example of what the call looks like:
with TM1Service(**config['server01']) as tm1:
get_parents('Market Area', 'Market Area', '#')
Expected behavior
I am expecting this to return the parent of this element.
Version
TM1py   1.10.2
TM1 Server Version: <IP_ADDRESS>
Additional context
I have tested this in a variety of different ways. I tried to escape the '#' character and that didn't work. I also tested these elements in other element functions and they work. It seems like this issue is specific to the get_parents() functions.

Thank you. You identified an issue in TM1py. There was a bug that we weren't escaping the element names for the URL in the function.
Please upgrade to the latest master branch. It should be fixed now!

@MariusWirtz thanks so much for the quick turnaround. I tested it already and everything is working as expected!


Potential performance impact following upgrade to <IP_ADDRESS>

http://kafka.apache.org/documentation/#upgrade_10_performance_impact

The message format in 0.10.0 includes a new timestamp field and uses relative offsets for compressed messages. The on disk message format can be configured through log.message.format.version in the server.properties file. The default on-disk message format is 0.10.0. If a consumer client is on a version before <IP_ADDRESS>, it only understands message formats before 0.10.0. In this case, the broker is able to convert messages from the 0.10.0 format to an earlier format before sending the response to the consumer on an older version. However, the broker can't use zero-copy transfer in this case. Reports from the Kafka community on the performance impact have shown CPU utilization going from 20% before to 100% after an upgrade, which forced an immediate upgrade of all clients to bring performance back to normal. To avoid such message conversion before consumers are upgraded to <IP_ADDRESS>, one can set log.message.format.version to 0.8.2 or 0.9.0 when upgrading the broker to <IP_ADDRESS>. This way, the broker can still use zero-copy transfer to send the data to the old consumers. Once consumers are upgraded, one can change the message format to 0.10.0 on the broker and enjoy the new message format that includes new timestamp and improved compression. The conversion is supported to ensure compatibility and can be useful to support a few apps that have not updated to newer clients yet, but is impractical to support all consumer traffic on even an overprovisioned cluster. Therefore, it is critical to avoid the message conversion as much as possible when brokers have been upgraded but the majority of clients have not.

For clients that are upgraded to <IP_ADDRESS>, there is no performance impact.

Note: By setting the message format version, one certifies that all existing messages are on or below that message format version. Otherwise consumers before <IP_ADDRESS> might break. In particular, after the message format is set to 0.10.0, one should not change it back to an earlier format as it may break consumers on versions before <IP_ADDRESS>.

Note: Due to the additional timestamp introduced in each message, producers sending small messages may see a message throughput degradation because of the increased overhead. Likewise, replication now transmits an additional 8 bytes per message. If you're running close to the network capacity of your cluster, it's possible that you'll overwhelm the network cards and see failures and performance issues due to the overload.

Note: If you have enabled compression on producers, you may notice reduced producer throughput and/or lower compression rate on the broker in some cases. When receiving compressed messages, 0.10.0 brokers avoid recompressing the messages, which in general reduces the latency and improves the throughput. In certain cases, however, this may reduce the batching size on the producer, which could lead to worse throughput. If this happens, users can tune linger.ms and batch.size of the producer for better throughput. In addition, the producer buffer used for compressing messages with snappy is smaller than the one used by the broker, which may have a negative impact on the compression ratio for the messages on disk. We intend to make this configurable in a future Kafka release.

fetch  api with new versions implemented


feat(export): return manifests for exported images

We would like to see the sizes of all layers for the manifest. This also cleans up some tech debt with passing data to load.
The solve response has a new key depot/export.manifests that is a base64 encoded array of OCI manifests.

Closing in favor of #23


Remove Merge From Scene

This PR removes Merge From Scene, which is useless after #34892 was merged.
Hopefully I didn't miss anything.
Resolves #32039 (copy-paste doesn't have this problem)

Makes sense. However, it's a bit frightening, isn't it? 😝

Thanks!

@akien-mga @KoBeWi @RandomShaper it was a workflow breakage for me! As I understand, I can now just select all the files in the scene and copy them to another one? Is it a safe workflow?

Yes, it's even safer than the merge from scene, because it automatically makes resources unique when necessary.

@KoBeWi @RandomShaper @reduz The only problem I can't figure out is why the size of my scene is getting so big. Every time I copy a node from another scene containing a mesh, it is completely copied to the new scene, literally all mesh coordinates go directly to the tscn file in PoolByteArray, is this a normal behavior? Why not instantiate the original mesh file?
If I have a large enough number of detailed mesh objects that I want to copy into the main scene to build a level (but I don't want to copy them as separate scenes, I need the mesh directly) why is the mesh literally copied into the scene file? My tscn file is under 400mb, it's very strange...

What version are you using? It sounds like an old bug that should be fixed

This is in 3.5.1 and 4.0b2
Here is my issue #66991

@KoBeWi
I just noticed that "Merge From Scene" is missing from Godot 4 (Beta 8), and this PR confirms that it indeed is so.
I would challenge the initial assumption of this PR that Copy/Paste will replace the "Merge from scene" use cases.
"Merge from scene" is able to pick resources from a scene file (.tscn, .glb...) without actually importing the scene. This is a really useful feature that allow you to pick say just a mesh from a file for replacement without having to import/re-import a whole scene. I would go as far as suggesting that this is the primary use case for "Merge from scene"
This is a quite widely used use case in my workflow. I see no way that could be done with Copy/Paste functionality, but maybe I'm missing something.

"Merge from scene" is able to pick resources from a scene file (.tscn, .glb...) without actually importing the scene. This is a really useful feature that allow you to pick say just a mesh from a file for replacement without having to import/re-import a whole scene. I would go as far as suggesting that this is the primary use case for "Merge from scene"

I think I don't understand. When you copy a scene instance with any external references, the references are left unchanged. Only built-in references are copied (but save branch as scene does the same, except it's bugged).
Did you try if copy-paste works with your use-case or are just asking theoretically?

"Merge from scene" is able to pick resources from a scene file (.tscn, .glb...) without actually importing the scene. This is a really useful feature that allow you to pick say just a mesh from a file for replacement without having to import/re-import a whole scene. I would go as far as suggesting that this is the primary use case for "Merge from scene"

I must say I don't understand either. I've used copy and paste to do exactly this (extract a single mesh instance from a glb file)

Ok. Maybe I'm explaining badly. Let me try again. Here's an example 3.5 scene to show my workflow:

Notice that I do not have an instance of the tree.glb in the project node tree. It is imported but not instantiated anywhere in the  project. If i now right click the project node tree and use "Merge from scene":

Select file to import from...

Select node(s) to import...

And the selected node gets merged into the project node tree.

So this is the use case I'm trying to describe, and that I believe is missing from the Copy/Paste solution. I see no way to do the same maneuver without actually creating an instance of the tree.glb in the project node tree.
I could see ways that you could implement something similar using Copy/Paste instead. If you implemented Copy from the Advanced Import view Node tree.
As I've manly used the 3.5 "Merge from scene" to actually pick up different meshes for bone deformation using the same skeleton (Multiple versions o character created in blender as separate .glbs let me pick up the desired mesh and merge it in to the instantiated version of the "master" scene for that character) i could see how this specific workflow could be realized in 4.0 using something like Animation Retargeting. But i still think there are many other usecases where "picking up nodes" from file is really useful.

That's exactly what I did with copy and paste. Open the glb, copy and paste, voila! No need to "add to project node tree"

Alright. I think I get it now! :) So to adapt the workflow to 4.0 you would go:
Right click tree.glb in File System and select "New Inherited Scene"...

Right click "Copy" the selected node in the Inherited scene node tree...

Then "Paste" into the project node tree...

And, voila! There we are!

And then just discard the unsaved scene tab.
Yeah that works. For users accustomed to "Merge from scene" (like me) it's not super obvious but once explained it makes sense. Thanks for clarifying. I'll just leave this here if someone else stumbles along with same question ;)


Uac correction

Corrected the defaults for  "User Account Control: Behavior of the elevation prompt for standard users"

add @tiburd


gccgo: crash on reference to undefined name

package main
func crash() {
        xpc := pc
}

gccgo (GCC) 5.0.0 20150331 (experimental) on ppc64le
error: reference to undefined name ‘pc’
  xpc := pc

go1: internal compiler error: in set_type, at go/gofrontend/expressions.cc:15628
0x101d2b0f Numeric_constant::set_type(Type*, bool, Location)
        ../../gcc/go/gofrontend/expressions.cc:15628
0x101d45a7 Const_expression::do_numeric_constant_value(Numeric_constant*) const
        ../../gcc/go/gofrontend/expressions.cc:2691
0x101d5493 Expression::numeric_constant_value(Numeric_constant*) const
        ../../gcc/go/gofrontend/expressions.h:490
0x101d5493 Binary_expression::do_lower(Gogo*, Named_object*, Statement_inserter*, int)
        ../../gcc/go/gofrontend/expressions.cc:4927
0x101fbb1f Expression::lower(Gogo*, Named_object*, Statement_inserter*, int)
        ../../gcc/go/gofrontend/expressions.h:699
0x101fbb1f Lower_parse_tree::expression(Expression**)
    ../../gcc/go/gofrontend/gogo.cc:2616
0x101b631f Expression::traverse(Expression**, Traverse*)
        ../../gcc/go/gofrontend/expressions.cc:43
0x10246a67 Statement::traverse_expression(Traverse*, Expression**)
        ../../gcc/go/gofrontend/statements.cc:83
0x10246a67 If_statement::do_traverse(Traverse*)
        ../../gcc/go/gofrontend/statements.cc:3194
0x10249677 Statement::traverse_contents(Traverse*)
        ../../gcc/go/gofrontend/statements.cc:61
0x101fc5f3 Lower_parse_tree::statement(Block*, unsigned long*, Statement*)
    ../../gcc/go/gofrontend/gogo.cc:2570
0x102495cb Statement::traverse(Block*, unsigned long*, Traverse*)
    ../../gcc/go/gofrontend/statements.cc:43
0x10200c7b Block::traverse(Traverse*)
        ../../gcc/go/gofrontend/gogo.cc:5578
0x102578fb Block_statement::do_traverse(Traverse*)
        ../../gcc/go/gofrontend/statements.cc:1814
0x10249603 Statement::traverse(Block*, unsigned long*, Traverse*)
        ../../gcc/go/gofrontend/statements.cc:53
0x10200c7b Block::traverse(Traverse*)
        ../../gcc/go/gofrontend/gogo.cc:5578
0x10200fcf Function::traverse(Traverse*)
        ../../gcc/go/gofrontend/gogo.cc:4739
0x10209b63 Lower_parse_tree::function(Named_object*)
        ../../gcc/go/gofrontend/gogo.cc:2547
0x10204a7f Bindings::traverse(Traverse*, bool)
        ../../gcc/go/gofrontend/gogo.cc:7353
0x10204c3b Gogo::traverse(Traverse*)
        ../../gcc/go/gofrontend/gogo.cc:2367
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <http://gcc.gnu.org/bugs.html> for instructions.

The gccgo-5 (Debian 5-20150226-1) 5.0.0 20150226 (experimental) [trunk revision 220999]
test.go:3:16: error: reference to undefined name ‘pc’
         xpc := pc

commit 3897c269d567836ca49848322062d1c8c43f4177
Author: gccadmin gccadmin@138bc75d-0d04-0410-961f-82ee72b054a4
Date:   Tue Mar 31 00:16:11 2015 +0000

I did a full bootstrap of GCC on a powerpc64le machine I have here, from gcc trunk SVN revision 221802.  I can not recreate the problem.  I just get the error message and no compiler crash.
I don't plan to look at this further, but let me know if you track it down.

ok. I can do that next time I upgrade. I dont need this, it was just found with my permutation tool.  I wonder if we have a test suite for regression testing?

gccgo is using mostly the same testsuite as gc's.
Use "make check-go" to run it.

In fact the gccgo testsuite is an exact copy, though it has a different driver.
But I'm not all that interested in adding crash-on-invalid bugs to the testsuite.  They should be fixed, of course, but I'd rather only add invalid code to the testsuite to test error messages and to make sure that the compiler correctly rejects invalid code.  I don't think that compiler crashes on invalid code are worth growing the testsuite for.

fine with me, lets just leave this one for now until someone finds time for it. I will focus on valid code now. just trying to help.

I appreciate the help.  I do want to fix the problem if we can identify it.  I only meant to explain that I don't think that crash-on-invalid tests need to be added to the testsuite.

Sorry, didn't mean to close this.

As far as I can tell, this is fixed.  Closing.


Correct name not piped in, also should name be bolded?

https://www.bugherd.com/projects/110463/tasks/17

Can't see bugherd contents but suspect this is fixed by #683

Closing this, please re-open with detail in GitHub Issue if still a problem.


test: test Eq implementations

With hooks, since the address of the underlying closure is used for
comparison, it is helpful to include it in the debug output.

Coverage: 91.892% (+3.3%) from 88.589% when pulling acb1d54992b02a492042d278be1935b21205383f on eq-tests into f3c45cd7d288eaaf80810e59aba48594553d170e on master.


Container version

*) Build with docker file
podman build -f Containerfile -t fedora36-django
*) Push to quay
To Run pull from Quay
podman run -v ${PWD}:/vagrant:Z -p 8000:8000 -it  /bin/bash  = quay.io/yarboa/django-fedora36
Removed pipeenv from gihub workflow

@Yarboa please add README,

How to install podman
How to create and push the image into registry
How to run it locally


[scope] Should we aim for multiple build frontends/backends or nah

Came up in: https://github.com/pyOpenSci/pyos-package-template/pull/59
I had sorta had the background assumption that we would eventually be wanting to be able to choose between packaging tools, but i should probably check that first.
 As both an educational, as well as functional tool tho, I think it would be cool to find our way into supporting multiple package/build tools. e.g. in our packaging guide, if we could use this to autogenerate the same demo across all the packaging tools to show comparisons that would be super rad (currently all the docs like this are hardcoded, and thus there can be a bit of impedance mismatch between toy examples and reality). It also would make it a tool useful for more ~crusty[^self]~ ~opinionated[^shade]~ experienced developers who already have strong opinions about how they like things but haven't made a tool for that yet[^me].
It would take some work to make the config ui pleasant, and we would need to also invest in some tooling in our templates, so this is a scope question for the life of the project, not a "let's do this right now" request.
[^self]: self description intended
[^shade]: to thine own self only doth i cast shade
[^me]: me, it is me and i am being selfish because i have wanted to make something like this for myself for so long but making it with all of you is so much more fun and better than i could do.

I could see extending the template to a build tool for compiled extensions, but otherwise would want to keep it as close as possible to the recommendations of the pyOS packaging guide. There were some folks advertising another template that aims to be more comprehensive. I'm leaning more towards not going too far in that direction.

i guess i also have a sort of mutating view of the guide, where we have different senses of guide (e.g. the tutorials vs. the guide proper) and over time we can keep the "single track if you just wanna get poppin" but also choose your own adventure, linger here awhile if you want to know more about the range of package managers, what each license does, the different ways of making extension modules, etc.
i really like the suggestion from chat of having "easy mode" and "advanced mode" - one that's purpose built to be exactly the guide rec out of the box and another that spirals off into the python boilerplate fever dream we have all been tempted to make but never dared - maybe one way of describing what i'm thinking is building the strict mode as a subset of advanced mode with tests to defend its strictness.
it's late and i'm not in engineer mode, but wouldn't it be very cool to be able to e.g. traverse the guide and pick different routes through the topics that match your style, and then that is generating you a config file you can feed into the template and boom all your faves are now real. and vice versa, if someone has an opinionated pick of tools, they can share their config and be like "here's the guide to my business SaaS setup, and here's a different one for my sprawling hobby project namespace package monorepo"

I share @Midnighter's concern.  The majority of the feedback I've seen about the Python Packaging User Guide is that having too many choices about tools is adding too much cognitive load to the user.  I think having one or two opinionated options that the user can choose from is a strength of the pyOpenSci approach to date.

wouldn't it be very cool to be able to e.g. traverse the guide and pick different routes through the topics that match your style, and then that is generating you a config file you can feed into the template and boom all your faves are now real

This would be so cool!

to be clear i am not saying we clutter everything and induce choice paralysis - definitely a big fan of the "tell me what's the best way to do stuff" mode. All i'm saying is that we can do both :) you can travel along the straight and narrow line in the x dimension, but if you want to come back later and see more about topic at a position on the x numberline, you can browse around through some of the weeds off the side of the road in the y direction

Hi! a few notes! Scientific Python’s cookie offers tons of options—Henry mentioned up to 12+ backends! And to echo @blink1073 comment, at last year’s SciPy packaging, BoF, people kept mentioning that, for some, that cookie presented many options (TMO). Our goal is to reduce TMO with clear, opinionated choices that help users succeed.
Let’s focus on a few curated paths that minimize decision-making. Down the line, we could add / create a template for compiled builds, possibly using Meson or Hatch + plugins (@ucodery  got C builds working with Hatch at PyCon this past spring!).
Simplifying choices here helps users achieve quick wins and build confidence. It also provides a nice complement to the work Henry has already done as well!
Yesterday, we had high success rates using this minimal version of this template! It was awesome! 🚀 which is to say that i REALLY appreciate all of the thought and work going into this!!

I think I will have to make an example of what im talking about, because looking at that cookiecutter I understand totally what folks would be worried about.
To reiterate again, I am not saying we remove the one short path to best practices, just have an "advanced mode" that is possible too. Ig the only advocacy Im having is that I think we can do that in the same template and reuse the templating tools instead of having two templates that duplicate some code and labor.
Im happy to chill and enjoy hatch for now tho, no hurry :)


ROS 2 Testing documentation

Are there any plans on adding node testing examples?

Thanks! If someone would be willing to give some guidance I could help with documenting it.

Also surprised to find there's no documentation regarding integration testing in ROS 2.
ROS 1 has rostest, which seems to be ported to ROS 2 with ros_testing, but there's also launch_testing which in the examples seems to focus on externally monitoring a particular node and checking its std output, rather than actually running TestCases or gtests within a script. I can't find more than a few words of documentation for ros_testing.
Two relevant discourse.ros.org discussions:

https://discourse.ros.org/t/test-framework-in-ros2/2667
https://discourse.ros.org/t/tutorials-for-unit-and-integration-testing-of-ros-scripts-and-packages/20892

From which I took away:

You can do whatever works for you. It's good that there are options for those who want to develop custom setups or have preferences, but I'd guess that most people are just looking for a recommended solution with examples they can start working with. Whatever is easiest, best documented, most supported.
Autoware seems to have developed their own solution for smoke testing and integration testing. I personally would prefer to use an official ROS 2 recommended approach.


(FACT-2714) Fix dhcp on solaris 10

The PR uses a default location for dhcpinfo if it cannot find it in path. This default location is specific to Solaris 10.

Jenkins please test this on solaris11-64a,solaris114-64a,solaris10-32a,solaris10-64a

Jenkins please test this on solaris11-64a,solaris114-64a,solaris10-32a,solaris10-64a

Jenkins please test this on solaris11-64a,solaris114-64a

CLA signed by all contributors.


Retain V6 DNS server in resolv.conf; use only V4 servers for fallback

Fixes #885
Signed-off-by: Santhosh Manohar<EMAIL_ADDRESS>

@mrjana Updated changes keep the v6 behavior same as 1.9 and embedded server will use only the v4 DNS servers to forward the requests. PTAL.

LGTM

LGTM


feat(shell): add option to turn off naked shell implementation, disable for C compiler using languages

fixes https://github.com/cachix/devenv/issues/497

Yup, makes sense, keeping cyclomatic complexity low is a great guide.
This branch was created to unblock my friend using devenv on M1 for a Rust project, therefore it is more on the fast implementation, than a well thought one :)
It solved the problem for him, but of course we are back to square with the:
direnv: export +AR +AS +CC +CFLAGS +CONFIG_SHELL +CXX +DEVENV_DOTFILE +DEVENV_PROFILE +DEVENV_ROOT +DEVENV_STATE +HOST_PATH +IN_NIX_SHELL +LD +LD_DYLD_PATH +MACOSX_DEPLOYMENT_TARGET +NIX_BINTOOLS +NIX_BINTOOLS_WRAPPER_TARGET_HOST_aarch64_apple_darwin +NIX_BUILD_CORES +NIX_CC +NIX_CC_WRAPPER_TARGET_HOST_aarch64_apple_darwin +NIX_CFLAGS_COMPILE +NIX_COREFOUNDATION_RPATH +NIX_DONT_SET_RPATH +NIX_DONT_SET_RPATH_FOR_BUILD +NIX_ENFORCE_NO_NATIVE +NIX_HARDENING_ENABLE +NIX_IGNORE_LD_THROUGH_GCC +NIX_LDFLAGS +NIX_NO_SELF_RPATH +NIX_STORE +NM +PATH_LOCALE +RANLIB +RUSTDOCFLAGS +RUSTFLAGS +RUST_SRC_PATH +SIZE +SOURCE_DATE_EPOCH +STRINGS +STRIP +XDG_DATA_DIRS +__darwinAllowLocalNetworking +__impureHostDeps +__propagatedImpureHostDeps +__propagatedSandboxProfile +__sandboxProfile +__structuredAttrs +buildInputs +buildPhase +builder +cmakeFlags +configureFlags +depsBuildBuild +depsBuildBuildPropagated +depsBuildTarget +depsBuildTargetPropagated +depsHostHost +depsHostHostPropagated +depsTargetTarget +depsTargetTargetPropagated +doCheck +doInstallCheck +dontAddDisableDepTrack +mesonFlags +name +nativeBuildInputs +out +outputs +patches +phases +preferLocalBuild +propagatedBuildInputs +propagatedNativeBuildInputs +shell +shellHook +stdenv +strictDeps +system ~PATH

env var export list. I'll try the selective setup-hook running / language module approach over the weekend to find a better middle-ground.

@domenkozar I tried implementing a change to naked shell, that runs the preConfigureHooks of the normal nix stdenv. Sadly couldn't get it to work. As an alternative, we could switch back to the pkgs.mkShell implementation and have a module configurable blocklist of unset env vars that we don't need.

Sounds good to me, that will reduce a lot of the complexities we're currently facing.

Closing in favor of https://github.com/cachix/devenv/pull/507


PBool has no PTryFrom instance

It seems like a PTryFrom instance for PBools is missing; however, this seems a bit more involved because you cannot trivially import PData or PAsData into either of the modules Plutarch.Bool or Plutarch.TryFrom

You could put the instance in the module that defines PData possibly

You could put the instance in the module that defines PData possibly

that will not make it an orphan?

We can't even declare a PTryFrom instance because PInner PBool = PBool


Bug in new PR in admin portal

Describe the bug
After the last PR there is an error in "Subscriptions" in the admin portal (i can see these fields were added in this PR "src/DataAccess/Entities/Subscriptions.cs"
Error:
"oops!
Error 500 : Invalid column name 'AmpOfferId'. Invalid column name 'EndDate'. Invalid column name 'StartDate'. Invalid column name 'Term'"
This is both on my demo and prod instance (the demo has subscriptions and the prod does not)
I might of course be doing something wrong?
To Reproduce
Steps to reproduce the behavior:

Deploy the newest version of the publisher portal
Go to 'the admin portal'
Click on 'Subscriptions'
See the error described above

Expected behavior
I expect to see all my different subscriptions / customers
Screenshots

Environment (please complete the following information):
Using Azure webapp that was deployed via the script (and currently using pipelines to automate everything) cicd.yaml modified a bit

Hi @kri-seculyze
When the latest main was updated, have you performed the dB changes upgrade too? Please see here for our upgrade instructions.
https://github.com/Azure/Commercial-Marketplace-SaaS-Accelerator/blob/main/docs/Installation-Instructions.md#update-to-a-newer-version-of-the-saas-accelerator

I was a little to fast on the trigger (i can see that the cicd.yaml which i modified does not do the migration of the new database changes). Thx :)

We are also facing this issue. Can anyone help on how to resolve this?

@rd-snow17 you need to run the https://github.com/Azure/Commercial-Marketplace-SaaS-Accelerator/blob/main/deployment/Upgrade.ps1 script :) Its not part of the CICD pipeline at the point. However it looks like this is in the newer version: https://github.com/Azure/Commercial-Marketplace-SaaS-Accelerator/blob/main/.github/workflows/cicd.yml (            dotnet-ef migrations script  --output $sqlscriptPath --idempotent --context SaaSKitContext --project $dbAccessProj --startup-project $adminSiteProj)