Add Bitcoin Cash Node to upgrade compatible implementations

Built on top of #484 to avoid merge conflicts

Hey @Mengerian @jasonbcox,
I just discovered that the owner of the bitcoincash.org
(@deadalnix) thinks that BCHN is "very hostile and threaten to fork" and for that reason it won't be listed among the list of compatible clients.
Just wanna to point out that this is merely a political play in my book. Both BCHD and BCH Unlimited are exactly the same of BCHN when it comes to the set of features needed for today's upgrade.
All the 3 clients implement all the needed stuff but IFP. So there's no technical reason to not include BCHN.
It had been better to say it loud and clear since the beginning that there wasn't any intention to merge this PR rather than keep it stalled here w/o 0 feedback.
Not very professional if you ask me.

Not very professional if you ask me.

Andrea, we are doing the best job we can with the limited resources available to us. I would counter that it is also not very professional to throw rocks at guys who are working past their limits, especially on the day of a major network upgrade.
Thank you everyone for your patience. We aim to respond to all requests within a reasonable time frame.

I agree, this is poor form from @sickpig. This behavior from you is going to get you ignored by everyone who is focusing on hard work rather than wasting their time with political games about who gets listed on a website.
BCHN needs to grow up before a PR like this will be considered.

The project does not have any degree of prolonged activity and provides questionable, if any, value to Bitcoin Cash.

Keep merging our improvements while you maintain we do not provide any value, Jason.

I sense a lot of projection coming from ABC. Hmmmm.


[nrf fromlist] wifi: shell: Support configuration of timeout in connect command

Add support for configuring timeout in wifi connect command.

Included in Upmerge.


unable to launch a notebook from JupyterLab

@yuvipanda Everything else seems to work from JupyterLab except Python/R notebooks.

@ntaback can you tell me what browser this is? I can launch this on Firefox, and I don't recognize the browser in use.


Configure user claims included in self contained access token

amr claim value is included in the ID Token. But it is not required in the self-contained access token. Likewise, there are some claims which are not required to be included in the self-contained access token. We need a feature where users can configure which user claims are to be included in the access token.

A created a separate issue (https://github.com/wso2/product-is/issues/4915) to track the feature request.
Let's conclude what claims should be present in which token in this thread.

This issue is being closed due to extended inactivity. Please feel free to reopen it if further attention is needed. Thank you for helping us keep the issue list relevant and focused!


Dataset split

Hi,
firstly, I want to express my appreciation for the valuable tool you've shared with the community!
In the Data Sharing Statement of your work it says that the data splits, along with expert radiologist annotations, trained models, and code are available in this repo. However, I cannot find the data split, and it seems that the files uploaded here are empty.
Could you please provide the missing data split?
Thank you

Hi!
The data / model files are stored here -- this is in the README but probably not very clearly marked.

Sorry for the overlook then and thank you for the prompt response


Remove SHA1 default usage

Proposed changes in this pull request
The default behavior of our products uses SHA1 which is no longer considered as secure. This PR changes the default usage to SHA256 in the following flows.

CSRF token will be generated using DRBG algorithm instead of SHA1PRNG.
Password salts will be generated using DRBG algorithm
SignatureUtil signing and validation will be done using RSA SHA256.
Certificate thumbprint generation in getThumbPrintForAlias() method will be done using SHA-256

Migration impact
Thumbprint generation, signing and signature validation will be defaulted to using SHA-256. To revert this behavior, use the following deployment.toml configuration.
[signature_util]
enable_sha256_algo= false

Related issues

Issue https://github.com/wso2/product-is/issues/15793

Related PRs

PR https://github.com/wso2/carbon-identity-framework/pull/4567
PR https://github.com/wso2-extensions/identity-outbound-auth-samlsso/pull/162
PR https://github.com/wso2-extensions/identity-inbound-auth-sts/pull/136
PR https://github.com/wso2-extensions/identity-metadata-saml2/pull/85
PR https://github.com/wso2-extensions/identity-inbound-auth-oauth/pull/2076
PR https://github.com/wso2/cipher-tool/pull/78
PR https://github.com/wso2/carbon-kernel/pull/3574
PR https://github.com/wso2-extensions/identity-user-account-association/pull/47
PR https://github.com/wso2-enterprise/asgardeo-website/pull/639
PR https://github.com/wso2-extensions/identity-governance/pull/707
PR https://github.com/wso2-extensions/identity-inbound-auth-openid/pull/92
PR https://github.com/wso2-extensions/identity-outbound-auth-sms-otp/pull/173
PR https://github.com/wso2-extensions/identity-outbound-auth-email-otp/pull/157

Documentation

PR https://github.com/wso2/docs-is/pull/3717

PR builder started
Link: https://github.com/wso2/product-is/actions/runs/5087098748

PR builder completed
Link: https://github.com/wso2/product-is/actions/runs/5087098748
Status: success


Crash when dragging files from vsc

Description
Crashes when dragging files from Visual Studio Code into checksum generator
Steps To Reproduce
Open vsc
Try to drag a file into checksum generator
Crashes
Expected behavior
Get the actual checksum of the file dragged
DevToys Version
Version <IP_ADDRESS> | X64 | RELEASE | b949a18 | b949a18
Relevant Assets/Logs
logs.txt

I reproduced the issue and got the following exception:
# - [10/17/2022 22:00:08]
Feature name: Unhandled problem
Custom message:
Exception message: Invalid FORMATETC structure (Exception from HRESULT: 0x80040064)
Exception stack trace:
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + 0x21
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task) + 0x70
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task) + 0x38
   at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task) + 0x17
   at DevToys.UI.Controls.FileSelector.<Grid_DragOver>d__35.MoveNext() + 0x109
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + 0x21
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c.<ThrowAsync>b__7_0(Object) + 0x1e
   at System.Action`1.Invoke(T) + 0x28
   at System.Threading.WinRTSynchronizationContext.Invoker.InvokeCore() + 0x33

After doing some quick research, it looks like it's a known issue with VS Code not playing well with the DnD functionality.
Source:
Cannot drag/drop file from VS Code to other apps due to invalid data object #91132
Better drag and drop / clipboard integration of files across applications #164
I don't know if it's something that could be worked around (as in getting it to work properly, even with the mentioned issues) or if it should just gracefully fail instead. I also tried dragging files from VS Code to other applications and they just seem to either prevent or ignore it.

Hi,
I noticed the issue doesn't reproduce anymore using VS Code. Closing this issue for now.


Add test case, #3329

IdentityHashMap.buckets 数组大小为 8192 恒定值，不管怎么样都不会一直增大
在 get 的时候会二次判断 key 对象的值，所以也不存在一个反序列化器替换的问题

Codecov Report

Merging #3332 into master will decrease coverage by 0.00%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##             master    #3332      +/-   ##
============================================
- Coverage     80.39%   80.39%   -0.01%
  Complexity     7414     7414
============================================
  Files           157      157
  Lines         27800    27800
  Branches       6686     6686
============================================
- Hits          22351    22350       -1
- Misses         3429     3430       +1
  Partials       2020     2020

Impacted Files
Coverage Δ
Complexity Δ

...com/alibaba/fastjson/parser/JSONReaderScanner.java
73.58% <0.00%> (-1.26%)
45.00% <0.00%> (-1.00%)

...ava/com/alibaba/fastjson/parser/JSONLexerBase.java
69.97% <0.00%> (-0.04%)
812.00% <0.00%> (-1.00%)

...main/java/com/alibaba/fastjson/util/FieldInfo.java
86.44% <0.00%> (ø)
94.00% <0.00%> (+1.00%)

...com/alibaba/fastjson/serializer/SerialContext.java
86.53% <0.00%> (+3.84%)
22.00% <0.00%> (+1.00%)

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 a26f383...25d7be0. Read the comment docs.


Adding behaviour of trumpet instrument

Thank you. Someone has already submitted this feature, so I will close without merging.


Don't check the creator ID when reconciling serviceMonitor

Problem:
The ServiceMonitor only applys to workloads with creatorID
Soluetion:
Don't need to check creatorID when reconciling ServiceMonitor
for Workload.
Related issue:
https://github.com/rancher/rancher/issues/17145

LGTM

LGTM


Any plan to integrate with plantuml ? Thanks!

Check out https://github.com/marp-team/marp-vscode/issues/116#issuecomment-571024416.


Create limpwurt-login

Simple plugin that plays a sound clip from YouTuber Limpwurt when the player logs in. Basically a modified "C Engineer: Completed" plugin which only plays a single sound.

I've not reviewed the code whatsoever, but do you have permission from limpwurt to use his voice clip in this way?

I've not reviewed the code whatsoever, but do you have permission from limpwurt to use his voice clip in this way?

For some reason I never thought about this, but I did go ahead and DM him on Discord and he said go for it.

Can you include said conversation? We can't take your word that you spoke to someone

Gotcha. Here's a screenshot:

You should not use the C Engineer plugin's icon for this plugin.
Code LGTM otherwise

You should not use the C Engineer plugin's icon for this plugin. Code LGTM otherwise

Good point, thanks for mentioning that!


The environment you requested was unavailable?

Hey there,
i am new to appium and would like to use node js / javascript as a client for a project i plan. Now running the demo

npm run android-simple

throws the following error

Error: [init({"browserName":"","appium-version":"1.5","platformName":"Android","platformVersion":"4.4","deviceName":"AndroidTestDevice","app":"http://appium.github.io/appium/assets/ApiDemos-debug.apk"})] The environment you requested was unavailable.

Appium server + Emulator is running, caps matching the device.
What might be the problem here?

Please refer https://github.com/appium/appium/tree/master/sample-code/javascript-webdriverio


Bdd update

Codecov Report

Merging #103 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #103   +/-   ##
=======================================
  Coverage   92.67%   92.67%
=======================================
  Files           6        6
  Lines         314      314
=======================================
  Hits          291      291
  Misses         23       23

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 3a094a9...41bc005. Read the comment docs.

IBM Cloud toolchain: Delivery Pipeline deployed recommendations to dev, including commit 3167833d2c09ea81d3aca3ccbea67b5bd5f85d99

IBM Cloud toolchain: Delivery Pipeline deployed recommendations to prod, including commit 3167833d2c09ea81d3aca3ccbea67b5bd5f85d99


Improve C++11 containers

Hi,
As promised, here is some improvement for the C++11 containers.
Unfortunately it is not an exhaustive work, as the changes are subtle and it's much more work to check everything. But it can be already very useful.
For insert with begin/end iterators, i use an iterator class instead of an InputIterator (as it is defined in C++). I guess it avoid a lot of things, but it's better than before cause it allow at least to insert elements from an equivalent container. Let me know if there is better solutions.
I did unittests as the project allow to update and use it very easily. I really appreciate it.

BTW, is iterators are real mapped object to C++ or just helper for cython?
For example, could we replace these without problem?
        cppclass iterator:
            pair[const T, U]& operator*()
            const_iterator operator++()
            const_iterator operator--()
            bint operator==(const_iterator)
            bint operator!=(const_iterator)
        cppclass const_iterator(iterator):
            pass

per
        cppclass const_iterator:
            pair[const T, U]& operator*()
            const_iterator operator++()
            const_iterator operator--()
            bint operator==(const_iterator)
            bint operator!=(const_iterator)
        cppclass iterator(const_iterator):
            pass

It looks to match better the sementic.
For example you could write:
cdef set[int].const_iterator a
cdef set[int].iterator b
a = b
#b = a # should be illegal

But i can be wrong.

The problem I see is this:

pair[const T, U]& operator*()

Here, T is const for the const_iterator, but it shouldn't be for the iterator. This would need to be taken care of in the inheritance case.

I like the idea of revamping all STL containers like this, since many functions take a const_iterator argument, but since Cython does not allow automatic conversion of an iterator to const_iterator yet, these functions signatures use iterator currently.

I think it's an improvement as it is. Thanks!


Project: Upload file

Project name
Hack-2gether
Description
Login with app auth & upload file to folder main. :)
Repo URL
https://github.com/sergiokml/Hack-2gether
Team members
sergiokml

Nice! Thank you for submitting your hack!

Hey @sergiokml, would you mind recording a short video walkthrough of your hack? Any format will work. It's not required for the hackathon but it would help us showcase your work both internally at Microsoft and publicly in the community. 😊

Perfect! Thank you so much @sergiokml!


[Bug] Cannot build with WebGL master version

Describe the bug
A clear and concise description of what the bug is.
Getting a build error trying your master version
To Reproduce
Steps to reproduce the behavior:
Steps to reproduce it in MacOS Monterey version.
Unity hub 3.4.1 and version 2021.3.16f1.
Create project
3D Core
Window > Package manager > import using GIT
Import solana using https://github.com/garbles-labs/Solana.Unity-SDK.git
Samples > Simple Wallet Import
Open wallet_scene
TMP importer pop up > Import TMP essentials
File > Build settings > Add open scenes
Webgl > Switch platform
Player settings > Uncheck Auto Graphics API (because it tells you cannot use Color space Linear with Webgl1)
Close player settings
Build and run.
Expected behavior
A clear and concise description of what you expected to happen.
Have the built project
Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

OS: [e.g. iOS] MacOS
Browser [e.g. chrome, safari]
Version [e.g. 22]

Smartphone (please complete the following information):

Device: [e.g. iPhone6]
OS: [e.g. iOS8.1]
Browser [e.g. stock browser, safari]
Version [e.g. 22]

Additional context
Add any other context about the problem here.

Another screenshot for more context. Seem like something about the OrcaDex

@mrbotnft should be fixed now in the latest commit. Please upgrade

Thanks!! Maybe you could create a V0.0.6 with this last commits. I am working with this master version because it has the SignMessage feature. Anyways thanks for all!! :)


Add support for HDF5, Parquet formats

This PR adds support for reading and saving data produced by scope_download_classification.py in the HDF5 and Parquet formats. Both formats offer smaller size and faster I/O than the CSV format, which is still retained as an option for saving. However, the dictionaries/arrays of the coordiantes  and dmdt features from Kowalski are not supported by HDF5, which pickles these columns and thereby diminishes the space savings over CSV. With its support for columns of dictionary/array columns, Parquet is made the default format to save Fritz downloads and merged features.
The documentation has been updated with a discussion about these different formats, and it points to scope/utils.py, where four new read/write functions for HDF5 and Parquet are now included.
Note also that this PR updates the requirements in doc.txt, adding tables>=3.7 for HDF5 support and pyarrow<9.0.0 for Parquet. These new requirements have not broken my install of scope or its existing functionality, but I have only tested on an M1 Mac.

Thanks @mcoughlin! I've changed the defaults and docs to not include the dot.

@bfhealy Good to merge. Thanks!


For CeleryExecutor, why do we need to install mysql?

We don't use mysql, but there is a requirement to have the mysql client installed. We get the exception when starting the airflow worker.

stack trace pls

Sorry. This was reported by a colleague of mine and he does not have the stack trace. It is possibly pilot error. Closing unless we can reproduce.

I think it was the stack trace below. This happens if you run
$ airflow worker

on a freshly installed airflow with the defaults
broker_url = sqla+mysql://airflow:airflow@localhost:3306/airflow
celery_result_backend = db+mysql://airflow:airflow@localhost:3306/airflow

in the configuration file (with no mysql server running). The Exception does not raise if those values are properly set to a running rabbitmq instance.
 -------------- celery@airflow v3.1.18 (Cipater)
---- **** -----
--- * ***  * -- Linux-3.2.0-4-amd64-x86_64-with-debian-7.5
-- * - **** ---
- ** ---------- [config]
- ** ---------- .> app:         airflow.executors.celery_executor:0x345a550
- ** ---------- .> transport:   sqla+mysql://airflow:airflow@localhost:3306/airflow
- ** ---------- .> results:     db+mysql://airflow:airflow@localhost:3306/airflow
- *** --- * --- .> concurrency: 16 (prefork)
-- ******* ----
--- ***** ----- [queues]
 -------------- .> default          exchange=celery(direct) key=celery

[2015-07-24 13:37:36,009: ERROR/MainProcess] Unrecoverable error: ImportError('No module named MySQLdb',)
Traceback (most recent call last):
  File "/home/vagrant/env/local/lib/python2.7/site-packages/celery/worker/__init__.py", line 206, in start
    self.blueprint.start(self)
  File "/home/vagrant/env/local/lib/python2.7/site-packages/celery/bootsteps.py", line 123, in start
    step.start(parent)
  File "/home/vagrant/env/local/lib/python2.7/site-packages/celery/bootsteps.py", line 374, in start
    return self.obj.start()
  File "/home/vagrant/env/local/lib/python2.7/site-packages/celery/worker/consumer.py", line 278, in start
    blueprint.start(self)
  File "/home/vagrant/env/local/lib/python2.7/site-packages/celery/bootsteps.py", line 123, in start
    step.start(parent)
  File "/home/vagrant/env/local/lib/python2.7/site-packages/celery/worker/consumer.py", line 608, in start
    c.connection, on_decode_error=c.on_decode_error,
  File "/home/vagrant/env/local/lib/python2.7/site-packages/celery/app/amqp.py", line 375, in __init__
    **kw
  File "/home/vagrant/env/local/lib/python2.7/site-packages/kombu/messaging.py", line 363, in __init__
    self.revive(self.channel)
  File "/home/vagrant/env/local/lib/python2.7/site-packages/kombu/messaging.py", line 375, in revive
    self.declare()
  File "/home/vagrant/env/local/lib/python2.7/site-packages/kombu/messaging.py", line 385, in declare
    queue.declare()
  File "/home/vagrant/env/local/lib/python2.7/site-packages/kombu/entity.py", line 515, in declare
    self.queue_declare(nowait, passive=False)
  File "/home/vagrant/env/local/lib/python2.7/site-packages/kombu/entity.py", line 541, in queue_declare
    nowait=nowait)
  File "/home/vagrant/env/local/lib/python2.7/site-packages/kombu/transport/virtual/__init__.py", line 446, in queue_declare
    self._new_queue(queue, **kwargs)
  File "/home/vagrant/env/local/lib/python2.7/site-packages/kombu/transport/sqlalchemy/__init__.py", line 80, in _new_queue
    self._get_or_create(queue)
  File "/home/vagrant/env/local/lib/python2.7/site-packages/kombu/transport/sqlalchemy/__init__.py", line 68, in _get_or_create
    obj = self.session.query(self.queue_cls) \
  File "/home/vagrant/env/local/lib/python2.7/site-packages/kombu/transport/sqlalchemy/__init__.py", line 63, in session
    _, Session = self._open()
  File "/home/vagrant/env/local/lib/python2.7/site-packages/kombu/transport/sqlalchemy/__init__.py", line 54, in _open
    engine = self._engine_from_config()
  File "/home/vagrant/env/local/lib/python2.7/site-packages/kombu/transport/sqlalchemy/__init__.py", line 49, in _engine_from_config
    return create_engine(conninfo.hostname, **transport_options)
  File "/home/vagrant/env/local/lib/python2.7/site-packages/sqlalchemy/engine/__init__.py", line 386, in create_engine
    return strategy.create(*args, **kwargs)
  File "/home/vagrant/env/local/lib/python2.7/site-packages/sqlalchemy/engine/strategies.py", line 75, in create
    dbapi = dialect_cls.dbapi(**dbapi_args)
  File "/home/vagrant/env/local/lib/python2.7/site-packages/sqlalchemy/dialects/mysql/mysqldb.py", line 92, in dbapi
    return __import__('MySQLdb')
ImportError: No module named MySQLdb
Starting flask
 * Running on http://<IP_ADDRESS>:8793/ (Press CTRL+C to quit)

Seems like the expected behavior. Please reopen if you don't think it is.


[Question] CH32 as I²C device with display also I²C

Hi.
I wanted to use the µC CH32 as an I²C slave device to convert simple messages into graphical data and display it on an OLED screen also connected to I²C.
I've been browsing the resources of this repository and I see that there are nice examples of I²C-Slave and OLED I²C support, however, a question is bothering me. Using both examples on the same chip, won't they interfere with each other?
Both examples use I2C1 - I understand that this is an "object" representing the I²C bus on the µC CH32. Both examples configure I2C1 in their own way - similar, but yet with a different purpose (one as a Slave and the other as a Master) Both examples use an IRQ (presumably the same?).
My question is, do the above statements translate into reality? Is it possible to use the I²C bus as master and slave at the same time, so that a device can receive data from another µC via the I²C bus and control a display embedded also on the I²C bus?
I would appreciate any info on this :)

It is absolutely possible (though uncommon) to use nodes in both roles. You would just have to keep it in slave mode until you decide to use it as master. Then you Just re-initialize the module as master until that transfer is done. You have to take precaution on bus arbitration because of the multi-master bus.
About just "combining" the examples, it's of course a bit more than just pasting one example into the other, but I guess you will get quite far with the existing code

OK, so in general I need to initialise the µC as a slave (example "i2c-slave") and listen for incoming messages. In case the µC/Slave needs to perform an operation on the display, I switch the µC to master mode (example "i2c-oled") perform the operation, then restore (re-initialise) Slave mode. Generally, this does not seem complicated :)
However, I am bothered by the arbitration issue. At first, I didn't really understand what it was about, but I found an explanation of the phenomenon. I don't know if I'll be able to deal with it. The control device (master) can send a change message or a request for information at any time. The examples provided, do not seem to solve this type of dispute.
Well... will give it a try. We'll see how it works without implementing arbitration. :)

Good luck with it, consider sharing your findings about it in the discord channel (see project readme)


Fix breadcrumb structured data

1. Why is this change necessary?
The structured data for the breadcrumb list was wrong:

The position was no integer
The position for folder types was missing
The name for folder types was missing

Remark: Still for folder types the item field is missing (see https://developers.google.com/search/docs/data-types/breadcrumb#breadcrumb-list for details), but as the category shouldn't have a link we ignore this for now.
2. What does this change do, exactly?
It changes the twig template.
3. Describe each step to reproduce the issue or behaviour.

Setup shop
Setup one root category as folder
Run https://search.google.com/test/rich-results on any product in that root category

4. Please link to the relevant issues (if any).
5. Checklist

[ ] I have written tests and verified that they fail without my change
[x] I have squashed any insignificant commits
[x] I have created a changelog file with all necessary information about my changes
[x] I have written or adjusted the documentation according to my changes
[x] This change has comments for package types, values, functions, and non-obvious lines of code
[x] I have read the contribution requirements and fulfil them.

Hello,
thank you for creating this pull request.
I have opened an issue on our Issue Tracker for you. See the issue link: https://issues.shopware.com/issues/NEXT-16543
Please use this issue to track the state of your pull request.

Thanks for your contribution. The PR will be merged when the pipeline finished.


Pushing into Navigation stack?

Does this work with pushing on navigation stack with navigation bar hidden?
An Example would be preferable

Hey @flamurbeqiri1, I must admit I don't understand what my component has to do with navigation. If you are having issues or something doesn't work as you expected, please share your code and I will try to help you as best I can. Have a nice day!


Home Assistant Scripting

As a developer, I want to understand Home Assistant scripting conventions so I can easily write automation scripts for our components.

[ ] Research Home Assistant Automation here

Turns out you can do automation in the UI: link

[x] Make an automation with the UI
[ ] Make an automation with a script

Home Assistant Scripting Reference

[ ] devices can be controlled by scripts

[ ] Test condition: turn one light red, sleep, if that light is red turn the other light red, sleep, turn one light blue; repeat

Light flip/flop automation

https://user-images.githubusercontent.com/38815390/213939828-0697f543-f8bb-4c51-8b28-f2f654a6b4dd.mp4

Left off here

https://user-images.githubusercontent.com/38815390/214152277-5c78c232-b6bc-417c-b505-82f1d81e63cf.mp4


[Do not submit/review] Python stack trace pipelining sketch

This is a very rough sketch of Python stack trace eager pipelining.  It's not compilable.
Remaining work for eager:

Our fast Python stack trace class was landed https://github.com/tensorflow/tensorflow/commit/0e517a6fc0dc40926f68f4b7bf9c0337e3bc55a9 but reverted https://github.com/tensorflow/tensorflow/commit/9ab73c7bd10158e9ba4570ad331497254b05aa75 due to a linking issue.  Need to debug and land.
Need to clean up this CL and land.  Also, in this CL the stack trace is saved at AbstractContextInterface class but a better place is AbstractOperationInterface.

Remaining work for graph:

Expand ExperimentalDebugInfo proto https://github.com/tensorflow/tensorflow/blob/b1e813e2ec9634ec0e6562b836e372e393f3de43/tensorflow/core/framework/node_def.proto#L66 to support saving Python stack trace.
Populate those fields when we construct NodeDef during graph building

@saxenasaurabh FYI

@kkimdev This PR is in draft, any update on this? Please. Thanks!

Hi, we landed deferred Python stack tracing class https://github.com/tensorflow/tensorflow/commit/299b1bf0ba5cd88ad469b6ab8576f025f1220fcb and a CL for piping the stack trace id through executor was out yesterday and getting reviewed.  (Though this wasn't specifically for tf.data, but for async eager error reporting, so it's a bit different than what's sketched here.)
Will update here once the CL lands.

Landed async stack trace error reporting https://github.com/tensorflow/tensorflow/commit/fa85309fb533988e8181becff5eee5644c1b72e3


add maxHealth function

There is currently no way to get the max health of a player if the server has changed it, so a maxHealth function would help

There is currently no way to get the max health of a player if the server has changed it

Wrong. Of course there is a *way.
But sure, having a core/builtin E2 function for this would make it easier for everyone, as usually.
* dirty way.

Moved to a different Pull Request #1455


searchable: true + NULL value causes the record not to be displayed

Describe the bug
I have a nullable string field, with searchable: true. When the field is null, it will not be displayed in the index even without touching the search field. When I remove searchable: true or insert an value, it will be displayed in the index table.
To Reproduce
Steps to reproduce the behavior:

Create a record with a nullable string field
Set it to searchable
Create a record and leave the field on NULL / nil
Visit index page
Record is not displayed

Expected behavior
I would have expected to see the record on index page unless I start a search.
Please complete the following information:

OS: MacOS
Browser Arc
Elixir Version 1.17.2
Backpex Version 0.6.0

I've tried to reproduce it with the city field of the demo too and can't reproduce it.
But then I removed the street and zip fields and boom the line is gone (also added ID field to have an overview).
Initial Setup:
def fields do
    [
      street: %{
        module: Backpex.Fields.Text,
        label: "Street Name",
        searchable: true
      },
      zip: %{
        module: Backpex.Fields.Text,
        label: "Zip Code",
        searchable: true
      },
      city: %{
        module: Backpex.Fields.Text,
        label: "City",
        searchable: true
      },
      country: %{
        module: Backpex.Fields.Select,
        label: "Country",
        options: [Germany: "de", Austria: "at", Switzerland: "ch"]
      }
    ]
  end

Result:

You see the last line doesn't have a city and items count is 10.

Removing zip & street (and adding id, which doesn't make a difference):
def fields do
    [
      id: %{
        module: Backpex.Fields.Number,
        label: "ID",
        except: [:create, :update]
      },
      city: %{
        module: Backpex.Fields.Text,
        label: "City",
        searchable: true,
        required: false
      },
      country: %{
        module: Backpex.Fields.Select,
        label: "Country",
        options: [Germany: "de", Austria: "at", Switzerland: "ch"]
      }
    ]
  end

Result:

You see that the last line is gone and item count is 9.
Content of the addresses table:
postgres=# select * from addresses;
                  id                  |        street         |  zip  |     city      | country |     inserted_at     |     updated_at
--------------------------------------+-----------------------+-------+---------------+---------+---------------------+---------------------
 8200eefe-d7e7-45d5-86ce-f23671897f0a | 0891 Rocky River      | 88346 | O'Keefe       | at      | 2024-09-17 12:24:14 | 2024-09-17 12:24:14
 f893f404-d31c-4e14-be82-2e26fd52b3a2 | 0 Shields Burg        | 48471 | West Coy      | de      | 2024-09-17 12:24:14 | 2024-09-17 12:24:14
 acfd6f9c-a957-4324-a871-5f06eb7b07d6 | 06748 Bode Light      | 55517 | North Asia    | at      | 2024-09-17 12:24:14 | 2024-09-17 12:24:14
 c95f6d2e-0574-4f7c-a6d6-54414c75a04b | 2842 Emmerich Cove    | 17815 | Oren          | ch      | 2024-09-17 12:24:14 | 2024-09-17 12:24:14
 b4e90a21-5568-4348-94f1-41b979911fdf | 0728 Judy Wells       | 85444 | West Kelly    | de      | 2024-09-17 12:24:14 | 2024-09-17 12:24:14
 d59fd679-f2a8-4920-9d53-0f285a2cde47 | 186 Jeromy Alley      | 69693 | Lacy          | de      | 2024-09-17 12:24:14 | 2024-09-17 12:24:14
 435a134c-03ca-4ed0-b268-f850aaaea177 | 59191 Upton Dam       | 09624 | New Virginia  | ch      | 2024-09-17 12:24:14 | 2024-09-17 12:24:14
 aa56d876-4407-46ed-abff-273e9abb27cf | 4 Legros Square       | 61992 | South Mariane | de      | 2024-09-17 12:24:14 | 2024-09-17 12:24:14
 cb7a1c81-38da-488e-b847-643e93e2bcca | 06 Ola Creek          | 27130 | Connor        | ch      | 2024-09-17 12:24:14 | 2024-09-17 12:24:14
 c2c1f0a3-f5de-43ea-950b-6568d15f996a | 7 Gorczany Throughway | 76237 |               | ch      | 2024-09-17 12:24:14 | 2024-09-17 12:24:14

Last line doesn't have a city. Changed via update addresses set city = null where id = 'c2c1f0a3-f5de-43ea-950b-6568d15f996a';.
Hope that helps :)

Hey @phortx, thanks for the detailed description. I will look into it!


[Snyk] Security upgrade scikit-learn from 1.0.2 to 1.5.0

This PR was automatically created by Snyk using the credentials of a real user.![snyk-top-banner](https://github.com/andygongea/OWASP-Benchmark/assets/818805/c518c423-16fe-447e-b67f-ad5a49b5d123)
Snyk has created this PR to fix 1 vulnerabilities in the pip dependencies of this project.
Snyk changed the following file(s):

cmd/suggestion/chocolate/v1beta1/requirements.txt

⚠ Warning
```
scikit-learn 1.0.2 requires scipy, which is not installed.
</details>

---

> [!IMPORTANT]
>
> - Check the changes in this PR to ensure they won't cause issues with your project.
> - Max score is 1000. Note that the real score may have changed since the PR was raised.
> - This PR was automatically created by Snyk using the credentials of a real user.
> - Some vulnerabilities couldn't be fully fixed and so Snyk will still find them when the project is tested again. This may be because the vulnerability existed within more than one direct dependency, but not all of the affected dependencies could be upgraded.

---

**Note:** _You are seeing this because you or someone else with access to this repository has authorized Snyk to open fix PRs._

For more information: <img src="https://api.segment.io/v1/pixel/track?data=eyJ3cml0ZUtleSI6InJyWmxZcEdHY2RyTHZsb0lYd0dUcVg4WkFRTnNCOUEwIiwiYW5vbnltb3VzSWQiOiIyMzc2Y2Q0NS1lYzkzLTQ0NDktYjU2My1jYmMwMDY1YTdkMTciLCJldmVudCI6IlBSIHZpZXdlZCIsInByb3BlcnRpZXMiOnsicHJJZCI6IjIzNzZjZDQ1LWVjOTMtNDQ0OS1iNTYzLWNiYzAwNjVhN2QxNyJ9fQ==" width="0" height="0"/>
🧐 [View latest project report](https://app.snyk.io/org/ryanhammerdick/project/f630ad5b-bc60-4031-8a4b-ff3e18d06818?utm_source=github&utm_medium=referral&page=fix-pr)
📜 [Customise PR templates](https://docs.snyk.io/scan-using-snyk/pull-requests/snyk-fix-pull-or-merge-requests/customize-pr-templates)
🛠 [Adjust project settings](https://app.snyk.io/org/ryanhammerdick/project/f630ad5b-bc60-4031-8a4b-ff3e18d06818?utm_source=github&utm_medium=referral&page=fix-pr/settings)
📚 [Read about Snyk's upgrade logic](https://support.snyk.io/hc/en-us/articles/360003891078-Snyk-patches-to-fix-vulnerabilities)

---

**Learn how to fix vulnerabilities with free interactive lessons:**

🦉 [Learn about vulnerability in an interactive lesson of Snyk Learn.](https://learn.snyk.io/?loc=fix-pr)

[//]: # 'snyk:metadata:{"customTemplate":{"variablesUsed":[],"fieldsUsed":[]},"dependencies":[{"name":"scikit-learn","from":"1.0.2","to":"1.5.0"}],"env":"prod","issuesToFix":[{"exploit_maturity":"Proof of Concept","id":"SNYK-PYTHON-SCIKITLEARN-7217830","priority_score":658,"priority_score_factors":[{"type":"exploit","label":"Proof of Concept","score":107},{"type":"freshness","label":true,"score":71},{"type":"fixability","label":true,"score":214},{"type":"cvssScore","label":"5.3","score":265},{"type":"scoreVersion","label":"v1","score":1}],"severity":"medium","title":"Storage of Sensitive Data in a Mechanism without Access Control"},{"exploit_maturity":"Proof of Concept","id":"SNYK-PYTHON-SCIKITLEARN-7217830","priority_score":658,"priority_score_factors":[{"type":"exploit","label":"Proof of Concept","score":107},{"type":"freshness","label":true,"score":71},{"type":"fixability","label":true,"score":214},{"type":"cvssScore","label":"5.3","score":265},{"type":"scoreVersion","label":"v1","score":1}],"severity":"medium","title":"Storage of Sensitive Data in a Mechanism without Access Control"}],"prId":"2376cd45-ec93-4449-b563-cbc0065a7d17","prPublicId":"2376cd45-ec93-4449-b563-cbc0065a7d17","packageManager":"pip","priorityScoreList":[658],"projectPublicId":"f630ad5b-bc60-4031-8a4b-ff3e18d06818","projectUrl":"https://app.snyk.io/org/ryanhammerdick/project/f630ad5b-bc60-4031-8a4b-ff3e18d06818?utm_source=github&utm_medium=referral&page=fix-pr","prType":"fix","templateFieldSources":{"branchName":"default","commitMessage":"default","description":"default","title":"default"},"templateVariants":["updated-fix-title","pr-warning-shown","priorityScore"],"type":"auto","upgrade":[],"vulns":["SNYK-PYTHON-SCIKITLEARN-7217830"],"patch":[],"isBreakingChange":false,"remediationStrategy":"vuln"}'

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.02%) to 72.881%

Totals

Change from base Build<PHONE_NUMBER>:
0.02%

Covered Lines:
3112

Relevant Lines:
4270

💛  - Coveralls

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.1%) to 72.974%

Totals

Change from base Build<PHONE_NUMBER>:
0.1%

Covered Lines:
3116

Relevant Lines:
4270

💛  - Coveralls

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.1%) to 72.974%

Totals

Change from base Build<PHONE_NUMBER>:
0.1%

Covered Lines:
3116

Relevant Lines:
4270

💛  - Coveralls

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.1%) to 72.974%

Totals

Change from base Build<PHONE_NUMBER>:
0.1%

Covered Lines:
3116

Relevant Lines:
4270

💛  - Coveralls


Minimum cycle time

Hello and thank you for a super integration.
I have underfloor heating, and want it to be active in e.g. 20 minutes for each cycle.
As it is now, I can see it is active for approx. 5 minutes.
Is there a way I can define the minimum cycle time?
greeting

Just read the documentation.... The cycle is one of the first parameter for each VTherm.

Cycle duration is set to 30 minutes!


Fix typos lol

sorry I had to do this

Thanks for the pull request. If you have any other issues just let me know :+1:


Add notice for supported server software

I've been noticing people complaining about this plugin crashing and/or having other issues on other server software. This plugin was written for PMMP, not for other server software. Why not add a list of tested/supported server software (Besides PMMP) in clear view at the readme file or in a CONTRIBUTING.md?

Ok, will do later.

Done.


minor fix ut

What changes were proposed in this pull request?

Why are the changes needed?

Does this PR introduce any user-facing change?

How was this patch tested?

retest this please


Search improvement

Love this project, 1k thanks for it!
Describe the bug
When searching, if the result is a folder it will take you to it's location, not inside the target folder, and it's useless if you have like 100 folders there.
Expected behavior
When clicking on a folder search result go inside the folder or add an extra option (a "open folder" button or icon) to let you chose if you want to go to it's location or inside it.
10x

+1


Document the MySQL module

Though it would be keeping with MySQL tradition to leave this module
undocumented, I figure it's better to document it.

TBH I would actually prefer to just #[allow(missing_docs)] in a lot of these places. Unfortunately, there's no way for me to say "allow this module to have no module level doc-comment" without also allowing all items in the module to omit documentation.


Upgrade JS wrappers to inline classes

As a DBC, you could remove the minification settings on the dart2js compile in order to help debug things:
Error: TypeError: Instance of 'minified:ac': type 'minified:ac' is not a subtype of type 'String'

And, we may not really need minification in general for this repo?


CUDA error

Thanks for your great work!
I try the eval_davis.py with adm model after create with conda env create -f environment.yml.

But it raise a cuda error:

I passed CUDA_LAUNCH_BLOCKING=1, then:

I try to delete codes which may have an effect, including gc.collect() and 'torch.cuda.empty_cache()',. but it doesn't work.
Would you mind help me to slove this?
Thanks a lot!

This seems to imply GPU is out of memory. Could you try decrease the n_last_frames argument? This would lead to very marginal performance drop though.

Thanks for your reply!
I decrease the n_last_frames argument and it works.
Could you please tell me the GPU memory requires in your standard setup?

The video experiments are done on A100.

Is it the 80G version?

yes


Add an option to set http.request.body.original size limit

Is your feature request related to a problem? Please describe.
Currently http.request.body.original size is limited/truncated to 10k characters. Since I'm using APM to storage payloads with a bigger size I would like setting size to be allowed to user configuration.
Describe the solution you'd like
An implementation of a specific property. Ex: elastic.apm.capture_body.size
Of course, setting shouldn't be to an infinite value but at least to a bigger size.

@ea1987 thanks for opening the issue. This looks like a duplicate of #456, so I'll close this one.
If you can provide any additional information about your motivation for opening this (e.g. why you want to capture the body, what you intend to do with it if it's > 10K characters, ...), please leave a comment on #456. Otherwise, I'd recommend subscribing to the issue to be informed of any updates.


Fix multiple plot tabs shown when codebase is updated

Fixes #1205

Traceback from branch
It fails on launch. Traceback:
(venv) trentmc@trents-m3: ~/code/pdr-backend $ pdr sim_plots
2024-06-13 20:55:59,034 cli INFO pdr None: Begin
2024-06-13 20:55:59,034 cli INFO Arguments:
2024-06-13 20:55:59,034 cli INFO debug_mode=False
2024-06-13 20:55:59,034 cli INFO run_id=None
2024-06-13 20:55:59,034 cli INFO port=8050
2024-06-13 20:55:59,034 cli INFO Nested args: {}
Dash is running on http://<IP_ADDRESS>:8050/

2024-06-13 20:55:59,101 dash.dash INFO Dash is running on http://<IP_ADDRESS>:8050/

 * Serving Flask app 'pdr_backend.sim.sim_dash'
 * Debug mode: off
2024-06-13 20:55:59,103 werkzeug INFO WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
 * Running on http://<IP_ADDRESS>:8050
2024-06-13 20:55:59,103 werkzeug INFO Press CTRL+C to quit
2024-06-13 20:55:59,110 pdr_backend.sim.sim_dash ERROR Exception on / [GET]
Traceback (most recent call last):
  File "/Users/trentmc/code/pdr-backend/venv/lib/python3.12/site-packages/flask/app.py", line 1473, in wsgi_app
    response = self.full_dispatch_request()
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/trentmc/code/pdr-backend/venv/lib/python3.12/site-packages/flask/app.py", line 882, in full_dispatch_request
    rv = self.handle_user_exception(e)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/trentmc/code/pdr-backend/venv/lib/python3.12/site-packages/flask/app.py", line 878, in full_dispatch_request
    rv = self.preprocess_request()
         ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/trentmc/code/pdr-backend/venv/lib/python3.12/site-packages/flask/app.py", line 1253, in preprocess_request
    rv = self.ensure_sync(before_func)()
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/trentmc/code/pdr-backend/venv/lib/python3.12/site-packages/dash/dash.py", line 1412, in _setup_server
    _validate.validate_layout(self.layout, self._layout_value())
  File "/Users/trentmc/code/pdr-backend/venv/lib/python3.12/site-packages/dash/_validate.py", line 449, in validate_layout
    _validate(layout_value)
  File "/Users/trentmc/code/pdr-backend/venv/lib/python3.12/site-packages/dash/_validate.py", line 438, in _validate
    _validate_id(component)
  File "/Users/trentmc/code/pdr-backend/venv/lib/python3.12/site-packages/dash/_validate.py", line 428, in _validate_id
    raise exceptions.DuplicateIdError(
dash.exceptions.DuplicateIdError: Duplicate component id found in the initial layout: `pdr_profit_vs_time`
2024-06-13 20:55:59,112 werkzeug INFO <IP_ADDRESS> - - [13/Jun/2024 20:55:59] "GET / HTTP/1.1" 500 -
2024-06-13 20:55:59,199 werkzeug INFO <IP_ADDRESS> - - [13/Jun/2024 20:55:59] "GET /favicon.ico HTTP/1.1" 200 -

Status quo
Traceback from main branch. This works.
^C(venv) trentmc@trents-m3: ~/code/pdr-backend $ pdr sim_plots
2024-06-13 20:58:36,493 cli INFO pdr None: Begin
2024-06-13 20:58:36,493 cli INFO Arguments:
2024-06-13 20:58:36,493 cli INFO run_id=None
2024-06-13 20:58:36,493 cli INFO port=8050
2024-06-13 20:58:36,493 cli INFO Nested args: {}
Dash is running on http://<IP_ADDRESS>:8050/

2024-06-13 20:58:36,565 dash.dash INFO Dash is running on http://<IP_ADDRESS>:8050/

 * Serving Flask app 'pdr_backend.sim.sim_dash'
 * Debug mode: on
2024-06-13 20:58:37,834 cli INFO pdr None: Begin
2024-06-13 20:58:37,834 cli INFO Arguments:
2024-06-13 20:58:37,834 cli INFO run_id=None
2024-06-13 20:58:37,834 cli INFO port=8050
2024-06-13 20:58:37,834 cli INFO Nested args: {}

Interesting, wondering how we didn't encounter that before it's not introduced in this PR, but I found the fix.
Also found something on the arima plots side which I'm looking into next.

I see, the arima issue was fixed here #1206


DirectGraph and FlattenStatementsHelper refactor

FlattenStatementsHelper and DirectGraph try to represent the flow of code in a flattened way, but multiple issues with finally statements and isolated statement edges prevent it from accurately representing flow in many places. On top of this, the algorithm in FlattenStatementsHelper is very brittle and hard to add onto, making it difficult to make changes when needed. A refactor should make the algorithm more flexible and accurate.
See also: #108, TestTryVar

DirectGraph has been refactored, and TestTryVar is fixed. #150 Fixes flatten statements helper

Because of the refactors, I think this is fine to close.


Nuke should require anchoring away from edges

Nukies already have it easy but the fact they can just put the nuke on solars where they:
A) have jetpack advantage
B) have atmos advantage
C) had turret advantage (thank god that changed)
is silly. It should need to be well away from edges to be armable. If they just build a boundary outside the station then that's fine as it's still a nerf. This also takes away from metal used to build an armoured bunker around it.

im just saying but the game was far better when they had to use vault nuke not the station one

This was actually gonna be my first PR but I'm still analyzing the SS14 code to understand what is being called, from where and how. What I have in mind is using the same system SS14 uses for detecting when a set of grids is disconnected from the station and make it have zero gravity and applying it to the nukies' win condition (As of right now, neutral is literally just the end of an elif with no defined values)
Putting the nuke on solars should give the crew an option to cut off the nuke from the station and potentially even push it far away, giving crew a neutral victory, the bomb detonates but it didn't blow up the station (It has happened before in game).
However this raises the issue that crew could just cut away squares around the nuke or the nukies plant it in a spaced room and it would count as a neutral instead of a Syndie MajW, so there also has to be a system in place that, before the nuke detonates, checks around in a 5 tile radius. Is it not attached to the station? Is it floating in space? Is there zero grav? If all three are correct, neutral W.
Right now this is all just theory though. I'm just a poor python coder.


run npm start, get "missing script: start" when building locally

Tried installing & building this documentation generator, but start script is missing. Trying to run index.js also gives errors.

Sorry, the command is npm test to run the unit tests. I updated the readme to correct this.

thanks for the quick update!

@christianclover If you end up using it in an open source project, let me know, as I'm interested to see applications of this outside of just ZURB and Foundation.

@gakimball still a bit unsure what to do to configure it for an open source project, but that would be ideal. If you have some pointers to get started, that would be excellent. tried running gulp and supercollider -h in the command line in supercollider main directory. Will keep experimenting.

I'd look at how we have it set up in Foundation for Sites for inspiration.
It's definitely not plug-and-play right now because there's no standard template. However, it was specifically designed for large projects like ours, which is why the setup is a little involved.
I'm interested in designing a standard template at some point (with Sass and JavaScript support), but I'm not sure when that will happen.


Config file's 'files' element isn't optional

With a config file such as:
{
  "language": "Java",
  "targetPath": "./build/generatedAntlrTests",
  "targetExtension": "java",
  "testFileName": "Test",
  "grammarTemplateFile": "./templates/Kotlin.grammar.stg",
  "specTemplateFile": "./templates/Kotlin.test.stg",
  "groupIncludes": [],
  "groupExcludes": [],
  "testIncludes": [],
  "testExcludes": [],
  "files": []
}

I get
Found config validation errors in ./antlr-tgen.json

MINITEMS must NOT have fewer than 1 items

  10 |   "testIncludes": [],
  11 |   "testExcludes": [],
> 12 |   "files": []
     |            ^ ??  minItems must NOT have fewer than 1 items
  13 | }
  14 |

If I remove it entirely, I get
Found config validation errors in ./antlr-tgen.json

REQUIRED must have required property 'files'

> 1 | {
    | ^ ??  files is missing here!
  2 |   "language": "Java",
  3 |   "targetPath": "./build/generatedAntlrTests",
  4 |   "targetExtension": "java",

Oh, what did I smoke when I wrote this (and why does it work in my tests)? The files entry in the config must be optional and not a tuple but an array 🙄


Increased file size after resizing (downscaling)

I've noticed that when images are resized, specifically when they're reduced in size, the resulting file size is larger than the original. I'm not sure if I'm misunderstanding something but I'd expect the file size to decrease with the size of the image.
width := 10
height := 10

img, format, err := image.Decode(bytes.NewReader(file))
if err != nil {
	return nil, "", err
}
//Only resize if new dimensions are specified
if width != 0 || height != 0 {
	img = resize.Resize(width, height, img, resize.Lanczos3)
}
var buf bytes.Buffer
switch format {
case "jpeg":
	jpeg.Encode(&buf, img, nil)
case "png":
	png.Encode(&buf, img)
case "gif":
	gif.Encode(&buf, img, nil)
default:
	return nil, "", errors.New("not an image")
}

data := buf.Bytes()
fmt.Printf("Size: %d", binary.Size(data))

In this case, I'm serving the images from a web server and I've implemented this resizing to decrease request sizes. In one example, the original request with no resizing is 755B. With resizing the image to half its size, the request size is 4.5KB.
Any suggestions?

The image was: http://i.imgur.com/3Tem67v.png
The images will be user provided so I can't play around with optimising the image. I've tried https://github.com/disintegration/imaging which seems to have better results.
Thanks!

Yeah, could be possible. PNG does lossless compression but some parameters can be tuned to get an even better compression. Also metadata could be removed etc. png.Encode probably does nothing like that (just guessing), so the result may be bigger. Especially true if the input image is small to begin with (755 bytes is very small). Try running something pngcrush on the output image, the filesize should be smaller afterwards.
Anyways, this is not related to this package but to image file handling, so I'm closing this ticket here.

I disagree that this issue isn't to do with this package. The increase in file size happens only when the image is resized. I made sure encoding was the same on each test to make sure :)
My problem is solved though so no worries! Thanks


Laravel 5.2 auth validator redirects to wrong page

Since I upgraded to laravel 5.2 i had some issue with Auth, validator on fails redirect me to homepage instead of /login or /register.
I tried to display errors on home page and its working !
The only problem was wrong redirect paths
For this problem I found solution:
changed in vendor/laravel/framework/src/Illuminate/Foundation/Auth/RegistersUsers.php
line 58-60 with
        return redirect('register')
                    ->withErrors($validator)
                    ->withInput();

and in vendor/laravel/framework/src/Illuminate/Foundation/Auth/AuthenticatesUsers.php
on line 117 replace return redirect()->back() with return redirect('login')
is this problem by wrong configuration or its by 5.2 ?
there is my route.php
Route::group(['middleware' => 'web'], function () {
    Route::auth();
    Route::get('/soc/{provider}', 'Auth\AuthController@redirectToProvider');
    Route::get('/soccallback/{provider}', 'Auth\AuthController@handleProviderCallback');

    Route::get('/', 'PostController@index');
    Route::get('/page.index', 'PageController@index');
    Route::get('/page.id/{id}', 'PageController@show');

});

The AuthController uses those 2 traits you modified. You can just override those methods in your AuthController without touching anything in vendor.
What version of 5.2 are you using?

Yes i know but i prefer changing vendor its more safe i think..
5.2.10 is my version

Heads up: changing files in the vendor directory is not more safe and eliminates most advantages of a using a dependency manager. On a next update of your dependencies, you will face problems.

Yeah rigth but why i got that problem?


Consider setting outputs ?

Should the action set outputs for apikey etc. but then why envars and outputs?

Outputs may be much safer, then secrets cannot leak into other actions/steps.

Agreed.


outube.com conflicts youtube.com

While using AdRules Ad Domains List
outube.com conflict s youtube.com
Omit it might improves experience
Temporary solution is add : @@||youtube.com^

Windows Chrome Adguard Extension
screenshoot
https://imgur.com/a/a8RInwf


How do I parse HTML response

It always handle response via JSON
Is there any way to parse a HTML response?

You could override the default "handleResponse" function (see https://github.com/hirviid/react-redux-fetch/blob/master/src/utils/handleResponse.js).
To override, register your own handleResponse function with something like:
import { container } from 'react-redux-fetch';

container.setUtil('handleResponse', myCustomResponseHandler);


Add support for Python3.9

Description:

I've been using it with Python 3.9 for a very long time without issues and it will be nice if it's availably in PyPI.

Yes, even I have been using it for months now. Would be nice to have this incorporated.


feature/refactor function

This refactors the function workstream module to the new API.

Hello @weibullguy! Thanks for opening this PR. We checked the lines you've touched for PEP 8 issues, and found:

In the file src/ramstk/analyses/criticality.py:

Line 28:80: E501 line too long (85 > 79 characters)

In the file src/ramstk/controllers/function/analysismanager.py:

Line 28:80: E501 line too long (83 > 79 characters)
Line 64:80: E501 line too long (96 > 79 characters)
Line 94:80: E501 line too long (96 > 79 characters)

In the file src/ramstk/controllers/function/datamanager.py:

Line 229:50: W504 line break after binary operator

In the file src/ramstk/controllers/managers.py:

Line 37:80: E501 line too long (83 > 79 characters)

In the file src/ramstk/models/programdb/RAMSTKAction.py:

Line 57:80: E501 line too long (107 > 79 characters)
Line 58:80: E501 line too long (105 > 79 characters)
Line 59:80: E501 line too long (96 > 79 characters)
Line 60:80: E501 line too long (98 > 79 characters)
Line 61:80: E501 line too long (99 > 79 characters)
Line 62:80: E501 line too long (89 > 79 characters)
Line 63:80: E501 line too long (101 > 79 characters)
Line 64:80: E501 line too long (110 > 79 characters)
Line 65:80: E501 line too long (95 > 79 characters)
Line 66:80: E501 line too long (104 > 79 characters)

In the file src/ramstk/models/programdb/RAMSTKCause.py:

Line 59:80: E501 line too long (93 > 79 characters)
Line 61:80: E501 line too long (95 > 79 characters)
Line 62:80: E501 line too long (107 > 79 characters)
Line 64:80: E501 line too long (98 > 79 characters)
Line 65:80: E501 line too long (110 > 79 characters)

In the file src/ramstk/models/programdb/RAMSTKControl.py:

Line 43:80: E501 line too long (93 > 79 characters)
Line 44:80: E501 line too long (81 > 79 characters)

In the file src/ramstk/models/programdb/RAMSTKFunction.py:

Line 125:80: E501 line too long (80 > 79 characters)

In the file src/ramstk/models/programdb/RAMSTKHazardAnalysis.py:

Line 200:80: E501 line too long (82 > 79 characters)


Websocket transport: reject transactions on connection close

First trigger "close", then reject transactions.

@njam please review

lgtm!

released


Removed updateDelay in editor.js

This will make the editor feel faster

We need to render asciidoc content by a period of time (default: 100ms), while using 0 that cause javafx hangs.


Use Dup2 library function instead of raw syscall

The Dup2 syscall does not exist on 64-bit arm Linux while its replacement Dup3 does not exist on non-Linux systems.
Using the unix.Dup2 library function instead of raw syscalls improves the portability across more platforms.

Nice one! x/syscall didn't exist when I started rclone!
Can you try make cross to see if this builds for all platforms? (You'll need to install gox)
If it does you could try fiddling with the build constraints to fix #363 too.

... Or rather to fix the last comment on #363

Running make cross worked for me (tested on OS X with a go 1.7 installation).

If it does you could try fiddling with the build constraints to fix #363 too.
... Or rather to fix the last comment on #363

Hm, I'm not certain what this means :) - could you give a pointer?

I've merged the above - thanks!
I've explained what I meant in a new issue #698 which if you've got time to look at would be fantastic!
Also I made a new issue about supporting linux/arm64 in #699 which you might want to look at too if you have time.
Thanks for your contribution
Nick

PS Just saw you are the author of Termux - fantastic app thanks - I use it most days on my android phone, and build rclone with it regularly! :-)


Prepare for boost 1.62

These changes are compatible with previous boost releases.

Do we want to leave in that extra macro? Feels kind of dirty

I figured put it in for now, and if they actually fix their bug, we can pull it back out.  It won't harm us, and will save us re-figuring out why things don't compile warning-free if they don't fix it before release.

Current coverage is 64.73% (diff: 100%)

Merging #1856 into develop will decrease coverage by 0.01%

@@            develop      #1856   diff @@
==========================================
  Files           704        704
  Lines         50790      50790
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
- Hits          32884      32878     -6
- Misses        17906      17912     +6
  Partials          0          0

Powered by Codecov. Last update 231a5ae...e5a1059

👍

@HowardHinnant I just tested this on ubuntu 16.04 , with booost 1.62  and rippled fails to compile. I'm looking into this now.
Here are the errors I get:
/home/swd/projs/common/boost_1_62_0/boost/asio/ssl/error.hpp:48:31: error: ‘ERR_LIB_SSL’ was not declared in this scope
   stream_truncated = ERR_PACK(ERR_LIB_SSL, 0, SSL_R_SHORT_READ)
                               ^~~~~~~~~~~
/home/swd/projs/common/boost_1_62_0/boost/asio/ssl/error.hpp:48:47: error: ‘SSL_R_SHORT_READ’ was not declared in this scope
   stream_truncated = ERR_PACK(ERR_LIB_SSL, 0, SSL_R_SHORT_READ)
                                               ^~~~~~~~~~~~~~~~
/home/swd/projs/common/boost_1_62_0/boost/asio/ssl/error.hpp:48:63: error: ‘ERR_PACK’ was not declared in this scope
   stream_truncated = ERR_PACK(ERR_LIB_SSL, 0, SSL_R_SHORT_READ)

I suspect a missing #include but not sure what or where yet.

I'm replicating this on macOS.  Looks like they did modify the boost release candidate I tested against.

@HowardHinnant It looks like the missing includes are openssl/err.h and openssl/ssl.h.

Thanks!  Testing with that now.  Do you know if those will fly on Windows, or should I ifdef on MSC_VER?

Windows online doesn't like 'em.

@mellery451 or @miguelportilla I need a volunteer to install boost 1.62 on a Windows machine and test this.

Tested on linux. :+1:

On Windows with boost 1.62 I am getting the following error:
C:\ripple\Libraries\boost_1_62_0\boost/asio/detail/socket_types.hpp(24): fatal error C1189: #error:  WinSock.h has already been included (compiling source file ....\src\unity\beast_test_unity.cpp)

@miguelportilla Thanks Mickey.  Ok, I've guessed again.  If you could give this another go, I would be most grateful.

On Windows with boost 1.62 you get the coroutine warnings. This happens if build with scons. It also happens within Visual Studio if you use the scons vcxproj solution file. And it also happens if you use the cmake solution file. I've created a branch that solves the problem with scons building and cmake. But I couldn't figure out where to fix the issue with vcxproj.
cherry-pick: https://github.com/miguelportilla/rippled/commits/boost

Thanks!
@vinniefalco Do you want to take a crack at fixing the vcxproj issue Mickey refers to above?

@HowardHinnant I updated my branch and the vcxproj problem is also resolved.

@vinniefalco Nevermind.  Mickey has just fixed it!

Merged as b421559a4748ad1e1369eb223cd2e3e3cd2e20eb


Issue with panes on multiple pages

Hey,
I encountered an issue, where if I navigate from one page that has the pane, to the other that has is as well, I get this error: ERROR TypeError: Cannot read property 'style' of undefined. (Angular, Ionic).
Basically, the component is not being destroyed fast enough, from my investigation. Is there a way to fix this?

I investigated some more and noticed that before the .present() function is fired successfully this is the content of the pane variable:

And before the .present() is fired unsuccessfully, this is the content of the pane variable:

@jakamusic Thanks for issue.

Update pane package to latest version and try again. Issue still exist ?
You gonna use one Pane in different ionic pages ? Each ionic page have own controller, and if you  create Pane class in one controller it's should exist in other page controller. That's why you need declare class and .present() again in other page and it's create new Pane class.
But, if you need to use one Pane in few pages, you can add html into main app.component.html template, and create new service. In this service declare Pane class, and use in each pages Pane methods from this service.

If my suggestions doesn't solve your issue, please provide code in some of sample repository, and i will complete it for you.

Thanks for the reply. I have the latest version installed. What I have is the same drawer but on three different pages, where I can navigate from one to another at any time.
So, basically I have tested now a couple of options.

If I just have it initialised with with the same class on all three pages, I get the error immediately. - If I initialise them with different classes on each page, the error will occur when navigating to a page again, after I was already on it at some point.

I have created a sample Ionic project that demonstrates the issue: https://github.com/jakamusic/cupertino-pane-test

@jakamusic
In your repo html element only in tab1.page.html
On Tab1Page element successful created, then on Tab2Page, Tab3Page you trying initialize new pane classes, but html elements doesn't exist.
If you want using 3 different panes in each tabs:
Add elements with unique selectors to all tabs html
If you want using 3 different panes with same selector
Add elements to all tabs html with class cupertino-pane. On ngOnDestroy call method .destroy() to utilize pane correctly.
If you want use one pane in all 3 pages
Initialize it once on Tab1Page, with higher parent container. In Tab2Page, Tab3Page use referencies from Tab1Page
Check my updates in repository you provided 🎉

Yes, that does it! Thanks for your time and help! I'll leave the repo active, in case anyone will encounter the same issue.


feat: remove bucket creation from inside the module and refactor k3s/kind variant

Nice! can we merge this?

@lentidas Apart from some variables that I changed (see last 2 commits), this works fine on Azure. We can merge if the tests succeed on the remaining cloud providers.


Fix documentation, make docs strict

The documentation is currently broken (everything is passing because we're not running in strict mode). This PR:

Removes jldoctest;
Enforces strict = true so that they don't go stale again
Adds docs for initial conditions in the API
Adds submodule docs in the API

I'm happy to fix the jldoctests in this PR if someone is willing to help, otherwise I'll open an issue to add the tests back in, and get to it when possible.
I was hoping to add some docs for the command line options that automatically sync, so that we only need to maintain a single list that is always up to date (cc @jiahe23)

bors r+


Enhance generator support

Removing the hard dependence on unix-make allows for use on other platforms.
So far tested succesfully with mingw-makefiles and ninja generators.

The --config needs passed down as well for IDE generators. Though maybe those aren't so easily supported anyways.


Handle errors loading files and update dep pins for modern Lektor

Skip and log errors, such as an empty file, when loading individual CSVs instead of erroring out, via a new decorator factory. I tested this locally on the server, both with normal files and an empty one, and it looks like it mitigates the issue.
Also, since I merged conda-forge/lektor-feedstock#19 , Lektor 3.3.x is now on Conda-Forge and given everything works with it, I can remove the transitive dep pins and bump the minimum version.
Fixes #19

@pbitzer If you had any additional/specific testing in mind, or any other comments, feel free. Otherwise, I can go ahead and merge this (and release 0.3.1, assuming nothing else proximate comes up). I considered backporting the fix to 0.2.x too, but that would be a fair bit of time and you mentioned this wasn't high priority, so I just targeted it at 0.3.x for now.


[Docs]: vue-tsc version are different in actual .md file and docs site

Environment
https://nuxt.com/docs/guide/concepts/typescript
Reproduction
https://nuxt.com/docs/guide/concepts/typescript
Describe the bug
In official docs link vue-tsc is marked as vue-tsc@^1 but in actual markdown file it is vue-tsc.
Website:

Docs: link

I think this is issue of auto-deploy of docs which cause installing of old version of vue-tsc. npx nuxi typecheck command don't work on ^1 version 😅
Additional context
No response
Logs
No response

This is already fixed 😅


New router

This PR introduces a new method for specifying multiple routes from a given starting edge. Routes now can be specified in one of three ways (as documented in the the scenario class):

In this case of deterministic routes (as is the case in the ring road scenario), the routes can be specified as dictionary where the key element represents the starting edge and the element is a single list of edges the vehicle must traverse, with the first edge corresponding to the edge the vehicle begins on. Note that the edges must be connected for the route to be valid. For example (from flow/scenarios/loop.py):

def specify_routes(self, net_params):
    return {
        "top": ["top", "left", "bottom", "right"],
        "left": ["left", "bottom", "right", "top"],
        "bottom": ["bottom", "right", "top", "left"],
        "right": ["right", "top", "left", "bottom"]
    }

Alternatively, if the routes are meant to be stochastic, each element can consist of a list of (route, probability) tuples, where the first element in the tuple is one of the routes a vehicle can take from a specific starting edge, and the second element is the probability that vehicles will choose that route. Note that, in this case, the sum of probability values for each dictionary key must sum up to one. For example, modifying the code snippet we presented above, another valid way of representing the route in a more probabilistic setting is:

def specify_routes(self, net_params):
    return {
        "top": [(["top", "left", "bottom", "right"], 1)],
        "left": [(["left", "bottom", "right", "top"], 1)],
        "bottom": [(["bottom", "right", "top", "left"], 1)],
        "right": [(["right", "top", "left", "bottom"], 1)]
    }

Finally, if you would like to assign a specific starting edge and route to a vehicle with a specific ID, you can do so by adding a element into the dictionary whose key is the name of the vehicle and whose content is the list of edges the vehicle is meant to traverse as soon as it is introduced to the network. As an example, assume we have 4 vehicles named 'human_0', 'human_1', 'human_2', and 'human_3'. Then, an appropriate definition of the routes may look something like:

def specify_routes(self, net_params):
    return {
        "human_0": ["top", "left", "bottom", "right"],
        "human_1": ["left", "bottom", "right", "top"],
        "human_2": ["bottom", "right", "top", "left"],
        "human_3": ["right", "top", "left", "bottom"]
    }

Pull Request Test Coverage Report for Build 3320

32 of 34 (94.12%)  changed or added relevant lines in 4 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.01%) to 88.854%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

flow/core/kernel/vehicle/traci.py
4
6
66.67%

Totals

Change from base Build 3284:
0.01%

Covered Lines:
7972

Relevant Lines:
8972

💛  - Coveralls

@AboudyKreidieh Is it possible to merge this? (I can help with this PR if needed) It would be super useful to have non-deterministic routes for the i-210!


Improve SSO management in the different environments

Right now we are using the same SSO application for the authentication flow. With the purpose to separate production and staging we should create another application and integrate them both in the different workflows (deployment, preview and development).

Issue related with https://github.com/Qiskit/platypus/issues/686


Java 4388

Gradle now requires Java 17 to build.

Gradle now requires Java 17 to build.

That doesn't seem to be true, as I can build with Java 11.  Is it the intention that Java 11 will be rejected?  Once we start testing our support of records, it will be true.  Do we need to short-circuit the build if we detect a Java < 17?

Gradle now requires Java 17 to build.

That doesn't seem to be true, as I can build with Java 11. Is it the intention that Java 11 will be rejected? Once we start testing our support of records, it will be true. Do we need to short-circuit the build if we detect a Java < 17?

gradlew will use JAVA_HOME to run but to build the driver it does require Java 17. The java toolchain feature will do auto discovery for Java 17. Try running it with that disabled:
./gradlew :bson:compileJava -Porg.gradle.java.installations.auto-detect=false
> Task :bson:compileJava FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':bson:compileJava'.
> Error while evaluating property 'javaCompiler' of task ':bson:compileJava'
   > Failed to calculate the value of task ':bson:compileJava' property 'javaCompiler'.
      > No compatible toolchains found for request filter: {languageVersion=17, vendor=any, implementation=vendor-specific} (auto-detect true, auto-download false)

Extra test coverage: https://spruce.mongodb.com/version/6197d036d6d80a78c57cb6c4

Manually merged into master


Add a validation rule to avoid Fabric L2 MTU overlapping configuration

Please refer https://github.com/netascode/terraform-aci-nac-aci/issues/34 for more details.


Recipe and pipeline-ization framework

This introduces the idea of recipes as JSON file and the Walker module. The walker module generates recipes from recipe templates when given an input dataset as well as executing recipes (running the dataset through the various step functions).

Ok, so my last thought here is that I think we might want to check that the recipe saved to the header is the same as the input recipe. This keeps it so that we're sure if we were to re-run it, then we'd get the same thing.

Ok added that check on the recipe

Things look good to me!


Automatically infer a remote branch as a base for a stack without a local copy of it

Please complete the following tasks

[X] I have searched the discussions
[X] I have searched the existing issues

Version
v0.8.0
Use Case
Some users would rather not have a local main branch.  See https://github.com/gitext-rs/git-stack/discussions/93
Requirements

Works like today without the need for a local main
Little negative performance impact on repos like gecko-dev with 600+ remote branches (think monorepo organizations where everyone's topic branch is in the main repo, rather than the fork model)

Possible Solutions
No response

Some options

We could enumerate all of them and treat them as protected branches.  That would bloat the UI and probably slow things down as we try to determine which feature branch belongs to which protected branch.
We could hide protected branches that have no commits but there are valid cases for that (e.g. when you've wrapped up all feature branches, your base disappears) and there is still the potential for performance issues
We could add a ignored-branch setting, like protected-branch, but we've been aiming for working out of the gate as much as possible but this could force people to configure git-stack just to use it


Deprecate passing pd.MultiIndex implicitly

Follow-up #8094
[x] Closes #6481
[x] User visible changes (including notable bug fixes) are documented in whats-new.rst

This PR should normally raise a warning each time when indexed coordinates are created implicitly from a pd.MultiIndex object.
I updated the tests to create coordinates explicitly using Coordinates.from_pandas_multiindex().
I also refactored some parts where a pd.MultiIndex could still be passed and promoted internally, with the exception of:

swap_dims(): it should raise a warning! Right now the warning message is a bit confusing for this case, but instead of adding a special case we should probably deprecate the whole method? As it is suggested as a TODO comment... This method was to circumvent the limitations of dimension coordinates, which isn't needed anymore (rename_dims and/or set_xindex is equivalent and less confusing).
xr.DataArray(pandas_obj_with_multiindex, dims=...): I guess it should raise a warning too?
da.stack(z=...).groupby("z"): it shoudn't raise a warning, but this requires a (heavy?) refactoring of groupby. During building the "grouper" objects, grouper.group1d or grouper.unique_coord may still be built by extracting only the multi-index dimension coordinate. I'd greatly appreciate if anyone familiar with the groupby implementation could help me with this! @dcherian ?

xr.DataArray(pandas_obj_with_multiindex, dims=...): I guess it should raise a warning too?

I've been out of the loop of discussions recently (and less recently...). To the extent this isn't firmly decided — is this necessary? Is there a downside to having a good default when pandas objects are passed in? Is there significant ambiguity on what the result should be? What do we recommend for converting from pandas-object-with-multiindex to dataset/dataarray?

During building the "grouper" objects, grouper.group1d or grouper.unique_coord may still be built by extracting only the multi-index dimension coordinate.

Can you describe what change you'd like to see?

@dcherian ideally GroupBy._infer_concat_args() would return a xr.Coordinates object that contains both the coordinate(s) and their (multi-)index to assign to the result (combined) object.
The goal is to avoid calling create_default_index_implicit(coord) below where coord is a pd.MultiIndex or a single IndexVariable. If coord is a Coordinates object, we could do combined = combined.assign_coords(coord) instead.
https://github.com/pydata/xarray/blob/e2b6f3468ef829b8a83637965d34a164bf3bca78/xarray/core/groupby.py#L1573-L1587
There are actually more general issues:

The group parameter of Dataset.groupby being a single variable or variable name, it won't be possible to do groupby on a full pandas multi-index once we drop its dimension coordinate (#8143). How can we still support it? Maybe passing a dimension name to group and check that there's only one index for that dimension?
How can we support custom, multi-coordinate indexes with groupby? I don't have any practical example in mind, but in theory just passing a single coordinate name as group will invalidate the index. Should we drop the index in the result? Or, like suggested above pass a dimension name as group and check the index?

Thanks @benbovy !

More generally, maintaining the special cases for pandas multi-index has been a big hassle ever since support for it was added in Xarray. I share a lot of responsibility since I mainly contributed to adding that support :-). There has been numerous subtle bugs and it really makes the internal logic more complicated than it should in many places of the Xarray code base. Removing all those special cases will be a big relief!

I totally agree with not having native MultiIndex support within a DataArray / Dataset. I'm wondering whether we can still do something reasonable when a MultiIndex is passed in, since that's quite common IME, and it's common with folks who want to do something quickly, possibly are less experienced xarray users — and so the costs of explicit conversions might have the largest impact.

I think that a good default behavior is to treat the pandas objects passed as data or coordinate variables like any other duck array.

OK great, I'm less familiar with what this would be like — would .sel still work? (Or feel free to point me to issues, thank you for your patience in advance...)

For a pd.MultiIndex, use xr.Coordinates.from_pandas_multiindex(...)
For a pd.Series with a multi-index, use xr.DataArray.from_series(...).stack(...)
For a pd.DataFrame with a multi-index, use xr.Dataset.from_dataframe(...).stack(...)

To the extent xr.Coordinates.from_pandas_multiindex(...) is what's required to get reasonable behavior, we could do that implicitly, and then for something more specific, folks can be explicit.
(FYI my guess is that often we don't want to .stack, since the indexes can be quite sparse)

I'm wondering whether we can still do something reasonable when a MultiIndex is passed in, since that's quite common IME, and it's common with folks who want to do something quickly, possibly are less experienced xarray users — and so the costs of explicit conversions might have the largest impact.

Hmm even with the most reasonable option, extracting one or more level coordinates from a MultiIndex passed as a single variable feels too magical and is hardly predictable, IMHO. That's not the kind of a behavior one usually expects for generic mapping types.
What if the MultiIndex is wrapped in another object, e.g., a pandas.Series, xarray.Variable, xarray.DataArray? What would be the most reasonable behavior for those cases? Here are a few examples:
midx = pd.MultiIndex.from_product([["a", "b"], [0, 1]], names=("one", "two"))

# extracts the multi-index levels as coordinates with dimension "x"
xr.Dataset({"x": midx})
xr.Dataset(coords={"x": midx})
xr.Dataset(coords={"x": xr.Variable("x", midx)})
xr.Dataset({"x": xr.DataArray(midx, dims="x")})

# creates only one dimension coordinate "x" with tuple values
xr.Dataset({"x": xr.DataArray(xr.Variable("x", midx))})

# creates one dimension coordinate "x" with tuple values
# and two indexed coordinates "one", "two" sharing the same index
xr.Dataset({"x": xr.DataArray(xr.IndexVariable("x", midx))})

# extracts the multi-index levels as coordinates with dimension "dim_0"
xr.Dataset({"x": pd.Series(range(4), index=midx)})

# creates a dimension coordinate "x" with values [0, 1, 2, 3]
xr.Dataset(coords={"x": pd.Series(range(4), index=midx)})
xr.Dataset({"x": ("x", pd.Series(range(4), index=midx))})

I doubt that all these results would have been accurately predicted by even experienced xarray users (the nested DataArray / IndexVariable example is certainly a bug).
Another question: how common using pandas MultiIndex will it be compared to other Xarray indexes that will be available in the future? To which point is it justified treating PandasMultiIndex so differently than any other Xarray multi-coordinate index?

To the extent xr.Coordinates.from_pandas_multiindex(...) is what's required to get reasonable behavior

I'm afraid it is more complicated than that.

Those are great examples!

Hmm even with the most reasonable option, extracting one or more level coordinates from a MultiIndex passed as a single variable feels too magical and is hardly predictable, IMHO. That's not the kind of a behavior one usually expects for generic mapping types.

OK. FWIW, extracting coords is what I was thinking... 😁

Another question: how common using pandas MultiIndex will it be compared to other Xarray indexes that will be available in the future? To which point is it justified treating PandasMultiIndex so differently than any other Xarray multi-coordinate index?

My mental model of this user is that they don't so much care about the MultiIndex object per se — but MultiIndexs are common in pandas, and they expect some reasonable-looking xarray object when implicitly converting from a pandas object. It remaining a literal MultiIndex within the da isn't important to them
I do worry that if we say "oh you want to pass in a dataframe with a multiindex, now you have to make a bunch of choices on how that should happen", that it won't be friendly.
(I'm by no means claiming this is every user; I'm loading on my own experience working with folks who use both pandas & xarray)
For example, this is very sufficient — pass in a DataFrame with a multiindex...
df = pd.DataFrame(dict(a=range(7,11)), index=midx)

df

Out[32]:
          a
one two
a   0     7
    1     8
b   0     9
    1    10

...and then we can use .sel on each of the levels:
xr.Dataset(df).sel(one='a', two=0)

Out[37]:
<xarray.Dataset>
Dimensions:  ()
Coordinates:
    dim_0    object ('a', 0)
    one      <U1 'a'
    two      int64 0
Data variables:
    a        int64 7

It's not perfect — we have this dim_0 which has tuples since we didn't name the coord, but it does work pretty well.

You know this 10x better than I do, so I really don't mean to do a drive-by and slow anything down. I do wonder whether there's some synthesis of the two approaches — we make things robust once they're in the xarray data model, while remaining generous about accepting inputs.

Yes I guess more generally it all depends on whether we see an Xarray Dataset as a kind of multi-dimensional dataframe or as a mapping of n-dimensional arrays with labels.
While both point of views are valid, they are hard to reconcile trough the same API. Trying to accommodate it too generously may reach a point where it is more harmful than beneficial for the two dataframe vs. array point of views (actually, I think we've already reached this point).
After working on the index refactor, my point of view shifted more towards n-d arrays (so I'm biased!). Unlike a dataframe, the concept of an array rarely encapsulate an index. Now that indexes are 1st class members of the Xarray data model, it makes better sense IMO to handle them (and dataframe objects) through an explicit API rather than trying to continue mixing them with arrays in the same API function or method arguments.
That said, I totally agree that we should never make Xarray unfriendly for you and other users using both Pandas & Xarray! We should continue to offer Premium™ builtin support, notably by keeping default PandasIndex objects for dimension coordinates and via API like .from_dataframe, .from_series, .from_pandas_multiindex, etc.
If we require to pass (pandas) index, series or dataframe objects via explicit conversion methods, we should indeed try to minimize the friction as much as possible. But I think that we are not far from that goal. Taking your example
xr.Dataset(df).sel(one='a', two=0)

Doing instead
xr.Dataset.from_dataframe(df).sel(one='a', two=0)

doesn't look like adding a lot of friction to me (note: the latter dataset doesn't have any dim_0 added).

I do worry that if we say "oh you want to pass in a dataframe with a multiindex, now you have to make a bunch of choices on how that should happen", that it won't be friendly.

I also agree with this. So if we choose to deprecate the current default behavior, we should consider a long deprecation cycle and make it clear what is the alternative to get the desired behavior.

GroupBy._infer_concat_args() would return a xr.Coordinates object that contains both the coordinate(s) and their (multi-)index to assign to the result (combined) object.

This may take some time. I opened #8162 to track it

@max-sixty your questions and thoughts are very much appreciated, please continue to do it! While there seems to me that there is a broad agreement about deprecating special multi-index behavior in general, there hasn't been much discussion about it especially about all the possible impact that this would have.

Using .from_dataframe unstacks the array, which would obv be quite bad for sparse indexes.

Do you think it would be a reasonable option adding a dim=None argument to Dataset.from_dataframe (and DataArray.from_series)?

dim=None (default) corresponds to the current behavior

single index: a dimension coordinate is created and is named like the index name (or "dim_0" if the index has no name)
MultiIndex: the dataframe is unstacked and the multi-index level names are used as dimension names

dim="x":

single index: if it has no name a dimension coordinate "x" is created, and if it has a name an indexed (non-dimension) coordinate is created with one dimension "x" and named like the index
MultiIndex: the dataframe is not unstacked and the MultiIndex is added to the Dataset with all its levels as 1D coordinates of dimension "x"

I think that if users set dim="x" explicitly, it is pretty clear that they want to keep the Dataset as 1-dimensional (so no expansion of a MultiIndex into a tensor product).

Is there somewhere I can read about the end-state?

Not yet, but once it is clarified we should document it somewhere! I actually haven't thought much about dataframe objects passed directly to Dataset.__init__. If we don't try anymore to extract any index, so no special case anymore for pandas.DataFrame, we could naively consider it like any other input passed to Dataset, i.e., as a mapping of arrays. This could look like:
xr.Dataset({k: np.asarray(v) for k, v in df.items()})
# <xarray.Dataset>
# Dimensions:  (a: 4)
# Coordinates:
#   * a        (a) int64 7 8 9 10
# Data variables:
#    *empty*

Now, that's not super nice to have as many dimensions as they are columns.
Alternatively, we could have some special case for a dataframe but not trying to do too much (i.e., not trying to extract and convert the index). For example:
xr.Dataset({k: ("dim_0", np.asarray(v)) for k, v in df.reset_index().items()})
# <xarray.Dataset>
# Dimensions:  (dim_0: 4)
# Dimensions without coordinates: dim
# Data variables:
#     one      (dim_0) object 'a' 'a' 'b' 'b'
#     two      (dim_0) int64 0 1 0 1
#     a        (dim_0)) int64 7 8 9 10

What do you think?

The current behaviour of Dataset.from_dataframe where it always unstacks feels wrong to me.
To me, it seems sensible that Dataset.from_dataframe(df) automatically creates a Dataset with PandasMultiIndex if df has a MultiIndex. The user can then use that or quite easily unstack to a dense or sparse array.

The current behaviour of Dataset.from_dataframe where it always unstacks feels wrong to me.

Agreed. I guess that's because it has been there before any multi-index support in Xarray? I'm +1 for changing this behavior.
A smooth transition could be using the dim argument as proposed above to turn on the new behavior. Eventually dim=None won't unstack anymore.

Can we get away with a unstack: bool kwarg instead and have the user manually rename as an extra step?

Yes we certainly can!
We can also have both and keep dim afterwards, assuming that a MultiIndex rarely has its .name set (that's why I added a dim argument in Coordinates.from_pandas_multiindex).

Excellent, this is sounding good!

MultiIndex: the dataframe is not unstacked and the MultiIndex is added to the Dataset with all its levels as 1D coordinates of dimension "x"

This will betray how long I've been out for, but was there any progress on allowing .sel to work with coords? IIRC there were some plans to allow indexes on coords beyond those named the same as a dimension.
If that is possible, then this proposal would be ideal — basically a much better MultiIndex.
If that's not, then it's awkward, because it's no longer possible to .sel from that dimension, which seems quite important.

+1 to not unstacking automatically
The dim="x" (rather than unstack=False) I think might be required, because IIUC a MultiIndex doesn't have a .name, only a .names (referring to the level names), so a bool doesn't give the information for which dimension it should be on.

(thanks for suggestions on the default __init__ behavior, let me think; possibly it somewhat depends on whether we can still have "multi-level" indexes that can be accessed with .sel)

was there any progress on allowing .sel to work with coords? IIRC there were some plans to allow indexes on coords beyond those named the same as a dimension.

Yes it is now supported since v2022.06.0.

a MultiIndex doesn't have a .name, only a .names

Technically a pd.MultiIndex has a .name property (inherited from pd.Index) but in practice it is mostly ignored I think. In xarray.core.indexes.PandasMultiIndex we keep it in sync with the dimension name of the level coordinates, but I doubt that this is really useful.

was there any progress on allowing .sel to work with coords? IIRC there were some plans to allow indexes on coords beyond those named the same as a dimension.

Yes it is now supported since v2022.06.0.

To confirm the question (sorry if I'm being unclear), If we do this:

MultiIndex: the dataframe is not unstacked and the MultiIndex is added to the Dataset with all its levels as 1D coordinates of dimension "x"

...then the result of:
midx = pd.MultiIndex.from_product([["a", "b"], [0, 1]], names=("one", "two"))
df = pd.DataFrame(dict(a=range(7,11)), index=midx)
ds = xr.Dataset(df)  # (or `.from_dataframe` with a dim arg)
ds

...would change to something like:
<xarray.Dataset>
Dimensions:  (dim_0: 4)
Coordinates:
-  * dim_0    (dim_0) object MultiIndex
  * one      (dim_0) object 'a' 'a' 'b' 'b'
  * two      (dim_0) int64 0 1 0 1
Data variables:
    a        (dim_0) int64 7 8 9 10

...but then we'd still be have some way of calling ds.sel(one='a').
I know we can currently do ds.sel(one='a') — but IIUC that's only because the MultiIndex is there.
Or does 'the MultiIndex is added to the Dataset with all its levels as 1D coordinates of dimension "x"' mean that we would still have a MultiIndex, and the change is smaller than I was envisaging — instead it's just that it needs to be specified with a dim when it's passed?

Or does 'the MultiIndex is added to the Dataset with all its levels as 1D coordinates of dimension "x"' mean that we would still have a MultiIndex, and the change is smaller than I was envisaging

Yes exactly (sorry that was a bit confusing). What I wanted to say is: xarray.Dataset.from_dataframe(df) with no unstack would preserve the MultiIndex of df, i.e., wrap it in a xarray.core.indexes.PandasMultiIndex, create 1-d coordinates from it and then put everything the in new created Dataset.
Those 1-d coordinates currently include both the dimension coordinate "dim_0" and the level coordinates "a", "b". If we consider #8143, eventually it will only include the level coordinates. In both cases, the level coordinates have a PandasMultiIndex so ds.sel(one='a') is supported. The latter case is possible because Xarray now allows setting an index for any set of arbitrary coordinate(s).

I see — great — I was conflating this & #8143 a bit, then.
One note as I'm looking at some of my existing code which uses xarray — the current behavior of xr.Dataset(df) is fairly sane; it's what I & folks I work with use a lot:
[ins] In [25]: df.index.name = 'foo'

[ins] In [26]: df
Out[26]:
          a
one two
a   0     7
    1     8
b   0     9
    1    10

[ins] In [27]: xr.Dataset(df)
Out[27]:
<xarray.Dataset>
Dimensions:  (foo: 4)
Coordinates:
  * foo      (foo) object MultiIndex
  * one      (foo) object 'a' 'a' 'b' 'b'
  * two      (foo) int64 0 1 0 1
Data variables:
    a        (foo) int64 7 8 9 10

...so no unstacking. But it does rely on renaming the dim after creation (or, as in this case, using .name property of a multiindex, which I hadn't even know was a thing, thanks for the pointer above)
So I think we're nearing consensus. Let me write a few things down as a starter — I imagine this is 80% right so please correct me:

We'll try to move away from .unstack-ing in .from_dataframe
We'll have a deprecation warning for .from_dataframe without a dim arg
The dim arg will be used as the name for the "index" dimension (the columns are data vars)
The dim arg will cause it to not unstack?
And then the direction of #8143 can mean we can get the level coords without the parent name

Thank you very much for the discussion @benbovy

We'll have a deprecation warning for .from_dataframe without a dim arg
The dim arg will cause it to not unstack?

Either that (warning without a dim arg and when the passed df has a MultiIndex) or via another, temporary unstack argument as @dcherian suggests. The latter is clearer but the advantage of temporarily controlling unstack via dim is that we won't need to later introduce any breaking change in the API.

I opened #8140 to continue the discussion about Dataset.from_dataframe.

Sorry I dropped this a while ago — I was just ramping up and lost it in my inbox.
I think we were quite close to consensus, with the unstack kwarg. Was there even anything else to cover, or this was just waiting on me to test it out?
The one request I'd have is to be able to call xr.Dataset(df), where df has a multiindex, and have that work as it always has. That has had very reasonable behavior — it doesn't unstack. Recent Xarray code prints a deprecation warning — I think it would be quite unfriendly to force folks to instead take apart the dataframe, extract the multiindex, run through xr.Coordinates.from_pandas_multiindex, and then pass it all into the constructor....

xarray.Dataset.from_dataframe(df) with no unstack would preserve the MultiIndex of df, i.e., wrap it in a xarray.core.indexes.PandasMultiIndex, create 1-d coordinates from it and then put everything in the new created Dataset.
Those 1-d coordinates currently include both the dimension coordinate "dim_0" and the level coordinates "a", "b". If we consider #8143, eventually they will only include the level coordinates. In both cases, the level coordinates have a PandasMultiIndex so ds.sel(one='a') is supported. The latter case is possible because Xarray now allows setting an index for any set of arbitrary coordinate(s).

Coming back to this a while later — this seems very reasonable indeed.
...and seems consistent with (my) suggestion:

be able to call xr.Dataset(df), where df has a multiindex, and ~have that work as it always has~ [edit: have that work without unstacking, even if the exact behavior of the multiindex changes to multiple indexes]. The existing behavior is very reasonable — it doesn't unstack. Recent Xarray code prints a deprecation warning — I think it would be quite unfriendly to force folks to instead take apart the dataframe, extract the multiindex, run through xr.Coordinates.from_pandas_multiindex, and then pass it all into the constructor....

I think we're in broad consensus on the goals. Is that right? :)

I think we're in broad consensus on the goals. Is that right? :)

Yes I think so.
Well, almost :). Using xr.Dataset(df) will become more difficult to support especially if we deprecate positional arguments (#8959 #8979). This may be another reason to encourage explicit construction xr.Dataset.from_dataframe(df) (choosing unstack vs. preserve the multi-index #8170) or conversion df.to_xarray().

Well, almost :)

😅

This may be another reason to encourage explicit construction xr.Dataset.from_dataframe(df)

Not my most crucial point, but to the extent that xr.Dataset.from_dataframe(df) evaluates, it seems reasonable to me that xr.Dataset(df) does the same thing. Re If we make the first positional arg vars, that seems consistent.
(and maybe .from_dataframe has some options which xr.Dataset(df) doesn't, that seems fine too)

To recenter — my big point is that we hopefully don't get this:

I think it would be quite unfriendly to force folks to instead take apart the dataframe, extract the multiindex, run through xr.Coordinates.from_pandas_multiindex, and then pass it all into the constructor....

...otherwise things seem great (and I ofc don't want to slow down progress with refinements)
Thank you very much @benbovy .