Tutorial Issue: running recipe_python.yml

Describe the bug
A clear and concise description of what the bug is. If you are developing a new diagnostic script, please provide a link to the code/branch on GitHub that you are working in.
I am running the tutorial using the complete esmval package on an ETHZ server:
(conda create -n esmvaltool -c conda-forge -c esmvalgroup esmvaltool)
The installed version is:
ESMValCore: 2.1.0
ESMValTool: 2.1.0
When running the first recipe, I get this error:
Diagnostic script examples/diagnostic.py failed with return code 1. In the log.
In the log, there is an AttributeError: 'NoneType' object has no attribute 'lower'.
Please attach

The recipe that you are trying to run, you can find a copy in the run directory in the output directory
The main_log_debug.txt file, this can also be found in the run directory in the output directory

Re: Attaching the recipe. The .yml file type is not supported as an attachment so I've attached it as a .txt.
recipe_python.txt
main_log_debug.txt

Hi @almerrifield thanks for reporting this. In the debug log one of the last lines is: See the log in /home/meranna/esmvaltool_output/recipe_python_20201126_100020/run/map/script1/log.txt. Could you attach that log file as well?
Perhaps this is similar to the recent issue we've seen here: https://github.com/ESMValGroup/ESMValTool/issues/1894
There the problem was related to a bug in cartopy v0.17.0, and it was solved by pinning cartopy like so:
conda create -n esmvaltool esmvaltool 'cartopy>=0.18' -c conda-forge -c esmvalgroup -y

log.txt
I'll give it a try, thank you!

Unfortunately, upon running:
conda create -n esmvaltool esmvaltool 'cartopy>=0.18' -c conda-forge -c esmvalgroup -y
There seems to be a conflict between esmvaltool-python and cartopy version >= 0.18.
UnsatisfiableError: The following specifications were found to be incompatible with each other:
Output in format: Requested package -> Available versions
Package cartopy conflicts for:
cartopy[version='>=0.18']
esmvaltool -> esmvaltool-python -> cartopy
Note that strict channel priority may have removed packages required for satisfiability.

The log is not super clear, but it appears to be a very similar plotting issue indeed.
I just tried and the command above does work on my system without conflicts. Did you remove the existing esmvaltool environment you made earlier? The command is to create a new environment - that usually works better than trying to update an existing environment. You could also try to create another environment alongside it like so:
conda create -n other_env_name esmvaltool 'cartopy>=0.18' -c conda-forge -c esmvalgroup -y

I did remove the esmvaltool environment using:
conda remove --name esmvaltool --all
Even with a new environment name, the same conflict occurs...

I had the same issue with this recipe, relating to:
    shading = kwargs.pop('shading', 'flat').lower()
AttributeError: 'NoneType' object has no attribute 'lower'

Following the suggestion above, and installing a new environment, it switches to a different issue:
2020-11-26 23:20:52,591 [255391] INFO     diagnostic.py,89      Processing variable air_temperature
2020-11-26 23:20:52,591 [255391] INFO     diagnostic.py,91      Processing dataset BCC-ESM1
Traceback (most recent call last):
  File "/home/ncs001/miniconda3/envs/esmvaltool2/lib/python3.8/site-packages/esmvaltool/diag_scripts/examples/diagnostic.py", line 105, in <module>
    main(config)
  File "/home/ncs001/miniconda3/envs/esmvaltool2/lib/python3.8/site-packages/esmvaltool/diag_scripts/examples/diagnostic.py", line 93, in main
    cube = compute_diagnostic(input_file)
  File "/home/ncs001/miniconda3/envs/esmvaltool2/lib/python3.8/site-packages/esmvaltool/diag_scripts/examples/diagnostic.py", line 45, in compute_diagnostic
    return cube.collapsed('time', iris.analysis.MEAN)
  File "/home/ncs001/miniconda3/envs/esmvaltool2/lib/python3.8/site-packages/iris/cube.py", line 3239, in collapsed
    raise iris.exceptions.CoordinateCollapseError(msg)
iris.exceptions.CoordinateCollapseError: Cannot collapse a dimension which does not describe any data.

@swartn that's very helpful information, thanks!
@bouweandela @valeriupredoi any thoughts on these version conflicts?

@swartn Thank you for the recommendation! We are currently triaging the situation in-house with the following updates:
-On our servers, we as users cannot update the conda environment, but have access to conda 4.9.2
The following works to create the environment, but not run the recipe:
conda create -n esmvaltool_full -c conda-forge -c esmvalgroup esmvaltool
The following cannot create the environment, due to package conflicts:
conda create -n esmvaltool_c18 esmvaltool 'cartopy>=0.18' -c conda-forge -c esmvalgroup -y
Package cartopy conflicts for:
cartopy[version='>=0.18']
esmvaltool -> esmvaltool-python -> cartopy
The following cannot create the environment, due to more package conflicts:
conda create -n esmvaltool3 esmvaltool 'cartopy>=0.18' 'esmvaltool>=2.1.0' 'esmvaltool-python>=2.1.0' -c conda-forge -c esmvalgroup -y
@ruthlorenz has had a look too. She has found an additional issue associated with the config file.
When uncommenting the rootpath and drs to input data, the tab structure needs to be maintained. In the example, it is correct. However, the tabs are missing in the solution for "set the correct rootpath". The recipe also will not run without the correct tab structure...

there is no need to pass all those dependency constraints at env creation stage - cartopy=0.18.0 comes naturally in the environment for a while now, if you just call the env creation with conda env create -n esmvaltool -f environment.yml and then install in dev modepip install -e .[develop] all should work fine, note that you don't need to install the Python module of esmvaltool either, that comes stock, R and Julia need post-installation only :+1:

another thing - when we made the 2.1 release we checked if the simple install from conda via conda install -c conda-forge -c esmvalgroup esmvaltool works (and this is checked continuously via the Github Actions too) so really, no need to create an env first, in your conda (base) env just run conda install -c conda-forge -c esmvalgroup esmvaltool and you should be sorted, including cartopy=0.18.0 :+1: Pls let me know if any issues, happy to help!

@valeriupredoi Thank you! Unfortunately re: conda install -c conda-forge -c esmvalgroup esmvaltool
I fear that this is another place I don't have the permissions to write to the server environment...

another thing - when we made the 2.1 release we checked if the simple install from conda via conda install -c conda-forge -c esmvalgroup esmvaltool works (and this is checked continuously via the Github Actions too) so really, no need to create an env first, in your conda (base) env just run conda install -c conda-forge -c esmvalgroup esmvaltool and you should be sorted, including cartopy=0.18.0 👍 Pls let me know if any issues, happy to help!

I would not recommend that on our servers since the base environment is mutual between all users (and I do not think the general user can install anything into it). We would need to ask our IT person to do it, and if I remember correctly we have talked about it before and decided against it.
Regarding pip install -e .[develop]: I do not think thats the point of the tutorial, is it? Is the tutorial not about a beginner to be able to get started without developing anything? The problem I see is that if building the environment correctly is already a big issue there is the danger that this will prevent people from using the tool because they cannot even get started....
Is this mostly an issue we have at ETH or is this/could this be more common?
Thanks for helping though :-)

ah my apologies, I didn't know this a case of not enough permissions to use the base environment; I would recommend having your own conda installation - in all cases this is the preferred solution because it becomes hairy when certain packages need to be written to the pkgs dir of conda. Having said that, what does conda list cartopy say in terms of version, and if that is 0.17.x you could just install it via conda directly in the environment with conda install -c conda-forge cartopy=0.18, and if that throws an issue related to environment insolvability that means a bunch of the deps in the environment are old so a recreation of the environment is needed. @ruthlorenz - good point, how about you guys talk to the ETHZ sys admins and ask them to install esmvaltool centrally, we've installed it on JASMIN and DKRZ and now a user needs to just module load esmvaltool and that's all, they can run it (no development obviously, but running the tool is enough for the tutorial) :beer:

When uncommenting the rootpath and drs to input data, the tab structure needs to be maintained. In the example, it is correct. However, the tabs are missing in the solution for "set the correct rootpath". The recipe also will not run without the correct tab structure...

@almerrifield Thanks for reporting this, I have opened an issue about it in the tutorial repository: https://github.com/ESMValGroup/ESMValTool_Tutorial/issues/170

I think the problem is that cartopy 0.17 is not compatible with matplotlib 3.3. So if installing cartopy 0.18 is not possible, you could also try installing matplotlib 3.2 instead?
Another possibility would be to try mamba instead of conda to install the package. It has  a much better dependency solver.

good point @bouweandela - that's why I suggested recreating the environment since for a while now (more than a month) cartopy=0.18.0 gets installed at env creation point, with a succession of matplotlibs - 3.2 a wee back ago, now 3.3, but cartopy is at the latest version notwithstanding matplotlib :+1:

@valeriupredoi We do have cartopy 0.17.0 in our base environment so I tried to install cartopy 0.18.0 using
conda install -c conda-forge cartopy=0.18
after creating the esmvaltool environment using
conda create -n esmvaltool -c conda-forge -c esmvalgroup esmvaltool
then entering it with
conda activate esmvaltool

side question, why conda activate rather than source activate to load esmvaltool?

 I have replicated your chain of commands and indeed, cartopy=0.18 can not be installed in that environment. The solution is: in your environment you have created, please execute:
conda uninstall cartopy
[press y to all that guff on the screen, don't be scared it needs to remove so many packages]
conda install -c conda-forge cartopy=0.18
conda deactivate
conda activate esmvaltool
conda install -c conda-forge iris
pip install esmvalcore
pip install esmvaltool [provided pynio and esmpy are installed in the base env]

You should then have a solid working environment with cartopy=0.18 and matplotlib=3.3.3;
A few explanations:

you should really have admin access to your anaconda distribution, and be able to create/remove environments and operate from the base environment; you can download miniconda3 and use it without the need to depend on the sysadmin's sudo privileges; you can then share your working environment with others too, by exporting three paths to various lib and bin dirs (I can show you how to do that)
anaconda is a poor dependency package manager and it's really hard to work with it if you don't have full control over it; even then it is very fussy and throw a lot of hiss when versions don't even conflict; this is why I recommend for users that just want to run the tool to conda install -c conda-forge -c esmvalgroup esmvaltool - this installs ESMValTool just like any other package and the benefit is that conda doesn't have to consult its dependency table too much since at release point, by building esmvaltool conda package, the env is pretty much set in its metadata file; of course this means you must have write access to the base env
as I recommended to Ruth, a central installation is very useful, management can be done easily and users have hassle-free access to it just by loading a module; maybe you guys should ask at ETHZ, am sure they'd be happy to do it for you (they have setup a conda tool so it looks like they're nice :grin: )
about why conda activate and not source activate - they're pretty much the same in terms of functionality, the newer conda activate is meant to be faster, have a look at this stackoverflow post

Cheers :beer:

@valeriupredoi Thank you for following up, I was very much looking forward to completing the cheers 🍻. All went smoothly until the pip installs:
pip install esmvalcore
ERROR: Failed building wheel for stratify
ERROR: Could not build wheels for stratify which use PEP 517 and cannot be installed directly
and as anticipated:
pip install esmvaltool
ERROR: Could not find a version that satisfies the requirement pynio (from esmvaltool) (from versions: none)
ERROR: No matching distribution found for pynio (from esmvaltool)
I think you are right that central installation may be necessary at this point.... Thanks to all again!

ERROR: No matching distribution found for pynio (from esmvaltool)

yeah I could see that coming, my base env had it and conda finally had the decency to look in the base env prefix path too
@bouweandela and myself we'll release a bugfix version of Core with pinning cartopy to 0.18 (we'll try do that tomorrow, Bouwe had the idea to do it and I think it's welcome for people struggling to install in standard mode like yourself, but I do encourage you to ask the ETHZ sys admins to look into a maintenable central installation :+1: )

Interesting, for the old version (2.1.0) conda wants to install cartopy 0.17 and matplotlib 3.3; mamba on the other hand cartopy 0.18 and matplotlib 3.3.
conda create --name esmvaltool_conda -c esmvalgroup -c conda-forge esmvaltool=2.1.0 esmvaltool-python=2.1.0
mamba create --name esmvaltool_mamba -c esmvalgroup -c conda-forge esmvaltool=2.1.0 esmvaltool-python=2.1.0

Sometimes the incompatibilities are difficult to know and can be very indirect (e.g. both cdo and cartopy pin proj). But the conflict conda shows do not really make sense and I also made this experience before... So thanks for pointing out mamba! I did not know this tool.
The new version of esmvaltool (2.1.1) works with both mamba and conda, so @almerrifield you can now install it with:
mamba create --name esmvaltool -c esmvalgroup -c conda-forge esmvaltool

Feel free to ask or tag me directly when you have problems with setting up an environment. We can also discuss setting up a global esmval environment.

@valeriupredoi please don't recommend installing esmvaltool in the base environment. The base environment should basically only contain conda and its dependencies. See also in the conda docs:

You don't want to put programs into your base environment, though.

That's what environments are for & when you do conda create --name ... you start with a clean slate, so it's even better than trying to install something into base. Also a shared conda installation is no worse than your self-installed one. You get your  personal package cache (pkgs folder)  and envs directories. The only thing you don't have control over is the conda version.

Oh I just found out - mamba does not enforce --strict-channel-priority so when doing
mamba create --name esmvaltool_mamba -c esmvalgroup -c conda-forge esmvaltool=2.1.0 esmvaltool-python=2.1.0

mamba wants to install cartopy from main and not from conda-forge so I'd be very careful for now using mamba because channel mixing can lead to even more difficult to debug problems.

Sorry, couldn't leave it: your actual problem is pynio. pynio is no longer maintained (see conda-forge/pynio-feedstock#90). It conflicts with the newest version of netCDF, but also with cartopy 0.18. So the following fails:
mamba create --name test_pynio --override-channels --strict-channel-priority -c conda-forge pynio python cartopy=0.18

I see only one mention of pynio (and no import Nio in the code; also in the private and AR6 repo). So I'd highly recommend to remove this dependency.
https://github.com/ESMValGroup/ESMValTool/blob/df9d7055ae75a4c2d207acd1a57d1679f95d5354/esmvaltool/cmorizers/obs/cmorize_obs_eppley_vgpm_modis.py#L73

we have just released 2.1.1 today and I wanted to test carefully its full functionality before we posted here that's ready for use and it'd solve this issue, cheers @mathause for trying it out and posting your results!

@valeriupredoi please don't recommend installing esmvaltool in the base environment. The base environment should basically only contain conda and its dependencies.

yes and no: conda is a package manager first and a virt environment manager second (and it's doing a relatively poor job as a package manager) so there is no problem to have an installation in base if you are 1. a new user that is not familiar with virtual environments and package managers and 2. you are told how to create and update environments in the future and start learning how to update individual packages. At the end of the day the base env is another env. This is why, in such cases and for a lot of users that need only to use the tool, a central installation is preferred, where one can module load a certain module. Also note that base is barebones when you use miniconda so it is a clean slate more or less.

Also a shared conda installation is no worse than your self-installed one. You get your personal package cache (pkgs folder) and envs directories. The only thing you don't have control over is the conda version.

Careful here - if all you share are paths to executables and some lib dirs, it's perfectly fine to do it (this is how a module is constructed anyway). No other permissions, no possibility to install new packages. If you start from a 100% working environment you will be sure your users will have it working as well (provided they don't mix paths, that'd be havoc :grin: )

I see only one mention of pynio

Yes, well spotted, I've already told @bouweandela we should look into removing that! :beer:
Cheers for the comments @mathause - good points overall, and good detective work! Hopefully @almerrifield will be able to get the installation working! @mathause if you have a plan for a central install at ETHZ that'd be great, I can share the module I built at JASMIN for that central install with you :+1:

oh and apparently mamab beats conda boss level, didn't know about it myself -> @bouweandela gets a :beer:

@bouweandela @mathause @valeriupredoi Success!! 🍻🍻🍻
conda create --name esmvaltool -c esmvalgroup -c conda-forge esmvaltool
threw an r-base SafetyError and a series of conda-forge/linux-64 ClobberErrors, but ultimately worked and the recipe ran!
Thank you all for continuing to follow up!

excellent, cheers @almerrifield for the heads up and sticking with it! I created an issue for pynio removal https://github.com/ESMValGroup/ESMValTool/issues/1935 :+1:


Check part "liveness" (LED)

@YingzhuoYang
Make sure the part works as expected

I used the data sheet to connect the LED pin to ground and tested each digital pin ABCDEFG and they all light up properly.


Separate Issues from Release Notes

Please create a separate page for the issues and resolutions, those don't belong on the same page as the Release notes.
Also, the number of release notes makes the page very long, it would be easier to use if the older notes, maybe before 2018, were put onto an Archive page to reduce the clutter.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 53c02fee-38c5-649a-0faa-23bf5edbcd7f
Version Independent ID: 65ee90be-a0f2-15c0-b487-7210eddda17a
Content: Release notes - Microsoft Flow
Content Source: flow-docs/release-notes.md
Service: flow
GitHub Login: @stepsic-microsoft-com
Microsoft Alias: stepsic

@DeanGross Thanks for sharing your thoughts. We are making some changes to this process and layout. You should see the results by late November.


ITIM Module

Add a IT Infrastructure Module (ITIM)
Details
A module to deal with the management of infrastructure that is not already covered by another module.
Cluster Management #71

[ ] #71 Management of an item known as a cluster.

Database Management #72

[ ] #72 Management of different database types

Service Management #69
Management of services deployed as part of infrastructure.
Role Management #70

[ ] #70 Management of the device role.

Virtual Machine Management

[ ] #73 Manage virtual machines

added 5m of time spent

mentioned in commit dfba01aed9d7b6811fe9322e3cf2496a0f55efa3

mentioned in commit d44db5c08897a1530a36040b737d2a696de7983a

marked this issue as related to #72

marked this issue as related to #71

marked this issue as related to #73

marked this issue as related to #69

marked this issue as related to #79

added 5m of time spent

marked this issue as related to #70

marked this issue as related to #85

marked this issue as related to #80

added 2m of time spent

marked this issue as related to #97

closing as work is done or migrated to own issue.

marked this issue as related to #98

marked this issue as related to #149

marked this issue as related to #125

marked this issue as related to #87


fix: set cursor appropriately on user event hover

looks like a small oopsie in recent merge

Is there any way to turn this off in the config?

Is there any way to turn this off in the config?

The setting of cursor is currently bound with whether the module has any event handlers and no other configuration options. So if you have on-click handler or anything like that in your module configuration, then no, at least not currently it looks like.


IPv6: Multi-cluster support and dual-stack infrastructure

The primary goal of this commit is to put in place infrastructure to allow
kubeadm-dind-cluster to create clusters with dual-stack networks. Because
of the needed changes, it makes sense to make sure that dual-stack and IPv6
supports multi-cluster.
A secondary goal is to attempt to maintain backward compatibility with the
current mechanisms to customize and operate the cluster.
To prepare for dual-stack, the following changes were made (there will be
follow up commits to complete support for dual-stack, some in conjuction
with Kubernetes changes that will be made):

Introduced 'dual-stack' IP MODE and adjusted existing IPv4 only and IPv6
only logic to continue to operate correctly, when testing $IP_MODE.

Introduced new MGMT_CIDRS env variable to allow a comma separated list of
CIDRs to be provided for the mangement (dind) network. For IPv4/IPv6, a
single CIDR will be specifed.

For backwards compatibility, DIND_SUBNET and DIND_SUBNET_SIZE, if specified
will be merged into MGMT_CIDRS.

For multi-cluster, a new CLUSTER_ID will be used to allow the user to
adapt the mgmt subnet used for each cluster. Removed logic that tries to
determine the available subnet (see note 1).

For compatibility, if (only) DIND_LABEL is provided, a random cluster ID
will be assigned (see note 2).

For additional clusters, in a multi-cluster setup, resource names will
use the suffix "-cluster-#", instead of "--<sha#>".

The localhost address, used for API, will be based on the family of the
service network, which will be single family, when running in dual-stack
mode. It is unchanged for IPv4/IPv6 only, which only have one family.

During clean, it was found that the kubectl config for the context and
cluster (in multi-cluster) are not removed. This commit removes those
settings.

For IPv6 only multi-cluster, separate DNS64 and NAT64 containers are
created, especially because the docker bridge for the mgmt network
needs to have a IPv4 network for the NAT64 IPv4/IPv6 mapping pool.
This IPv4 network uses the cluster ID to ensure uniqueness. These
containers are cleaned, based on the cluster context, which is encoded
into thier label.

Added mulit-cluster CI test for IPv6 only (for 1.11 release).

Modified existing multi-cluster CI test to check normal, label only
(changed), and cluster ID (new) based clusters.

Docker run commands are modified to define any IPs needed, based on
the IP mode (two for dual-stack).

Added cluster info printing, at the end of "up", so that user knows
the network and cluster settings.

Updated README.md to indicate the changes made.

(FUTURE) If desired, could ensure that there is enough space in the
mgmt CIDRs for the cluster ID to be injected.

(FUTURE) For IPv6, could support the cluster ID only consuming 8 bits,
instead of 16, and thus place it in either the upper or lower byte of
the hextet, based on the CIDR size.

(FUTURE) Could consider whether want to use /16 for mgmt CIDR in IPv4,
allowing 32K nodes vs 254.

(TODO) For multicluster IPv6 only, iptables rules are created on the
host to isolate the clusters. These should be ip6tables rules. As a
result, nodes from one cluster can currently ping nodes in another
cluster (unless rules are manually added).

(TODO) Complete the suport for dual-stack, including pod network, CNI,
and other changes.

Note 1:
This came out of the need to support multiple clusters for IPv6, where
there are vast addresses and calculating an available subnet is difficult.
Picking a number to use to make the subnet unique, coupled with the base
selection via MGMT_CIDRS, provides a simple method to ensure uniqueness.
For IPv4, the management network will be /24, instead of /16, and the 3rd
octet of the subnet will be reserved for the cluster. For example, if the
MGMT_CIDRS is <IP_ADDRESS>/24, and the CLUSTER_ID is "100", the management
CIDR will be modified to <IP_ADDRESS>/24 for the cluster.
For IPv6, the CLUSTER_ID will be placed in the lowest hextet of the address
provided in MGMT_CIDRS (before the ::). For example, if the MGMT_CIDRS has
fd00:10:20::/64, and the CLUSTER_ID is "30", the management CIDR will be
modified to fd00:10:20:30::/64 for the cluster.
Values will be between 1..254 for IPv4 compatibility, with zero reserved for
single cluster or the first cluster in multi-cluster.
Each cluster would use a different cluster ID. The cluster ID will be used
in the names of resources, as well, to provide uniqueness.
Note 2:
Although kept for compatibility, this gives the opportunity to have a custom
cluster label, if desired. When only CLUSTER_ID is used, the cluster name will
be "cluster-#", where # is the non-zero cluster ID.
A cluster ID can be specified as well as the label, to control the mgmt
network address used.
Partially addresses issue: #209
Provides a solution for issue: #203

@ivan4th I'm not sure what is up with Travis CI. It says "passed" on the details page, but seems to only have run a few tests. It say pending on this summary page. Does the test need to be restarted?

@ivan4th Any idea what the failures are with the src-master and src-release tests. Seems to be complaining about /k8s not being a mountpoint or invalid option.
For the IPv6 multi-cluster test case that I added, I'm not sure what I missing in the test setup. Can you advise?

Oh, I can rebase, but figured, I'd like to fix the test cases first.

Note: this latest commit has debug turned on for the multicluster tests, so that I can look at the IPv6 test case. Will remove after debugging.

On latest commit the three failing tests all seemed to be issues related to port forwarding. The src-master and 1.11-weave tests (inermittent) had connection refused - maybe port in use?
The multi-cluster 1.11 ipv6 seems to have the same connection refused, but I wonder if it is because port-forwarding is using localhost, instead of [::1].
Trying another temp change (in addition to the "bash -x" added for debug), to see if I can modify portforward.sh to work with IPv6 (seems like it is setup for IPv4 only). Not sure, if this is the right solution, but giving it a try. Pushed up the change.

With the latest change to portforward.sh, the IPv6 multicluster test is passing. The only failure is src-master (unrelated to this change set, as others' seeing on their commits), and some intermittent failures (e.g. 1.10 flannel in latest run).
Pushed patch with debug removed.
@ivan4th and others, please review the changeset.

/approve
@ivan4th PTAL

All the CI tests have passed, although today I see some as canceled, so I'm rerunning those tests (I hope). In any case, I've tested this local with IPv4 and IPv6 and am comfortable with it being out for review. PTAL folks.

Pushed up change so that it will work with older bash for MacOS, per @ivan4th suggestion.

@ivan4th Have updated for MacOS and all tests passing in CI.

/lgtm


Foreign thenables with internal data keeps resolved value.

This patch makes foreign thenables, with an internal data representation, keep their resolved values when passing through methods like Promise.all
Example of thenable object with internal data representation:
var thenable = {
    _v: 2,
    then: function (f) {
        this._v = f(v);
        return this;
    }
};

such thenables allow for chained then methods that keep transformations from previously called then methods, however, if this thenable is passed to Promise.all the resolved value is lost because the resolver function from src/thenables.js does not return the resolved value again.

I don't understand what is different from:
then: function (f) {
    this._v = v;
    f(v);
    return this;
}

Also, pretty sure that the functions must return undefined (@domenic)

The example is just a quick crude snippet to represent the idea behind the PR not meant to be taken seriously, in practice then must return a new promise and if the resolver return a value, the returned promise should be resolved with that returned value (same for rejected as well)
then must return a promise:
onFulfiled can optionally return a value, when that happens, the promise returned by the then function is resolved with the value returned by onFulfilled.
The resolve method changed here does not currently return a value, this is fine since it's an optional behavior, but not returning a value prevents foreign thenables from keeping the transformed value after going through Promise.all
If you have this same thenable object, you can do this:
p.then((v) => v * 2).then((v) => v * v); // 16

But you can't do this:
Promise.all([p]).then((result) => store(result[0])); // store is just a function to save the value
p.then((v) => v * 2); // NaN because v is undefined

This would break compatibility with ES2015 promises.

Could you please provide a testcase where it would break?
Just added this and it worked correctly:
specify("should be compatible with ES2015 promises", function() {
    var bluebird = Promise.noConflict();
    var p = new Promise(function (resolver) {
        resolver(2);
    });
    global.Promise = bluebird;

    return Promise.all([p, p]).then(
        function (results) {
            assert.equal(results[0], results[1]);
        });
});

In fact, without the change, the test fail for ES5 promises.
Also:

Promise.prototype.then(onFulfilled, onRejected)
Appends fulfillment and rejection handlers to the promise, and returns a new promise resolving to the return value of the called handler, or to its original settled value if the promise was not handled (i.e. if the relevant handler onFulfilled or onRejected is undefined).

The handler in bluebird is not returning anything (which is fine, but returning something is also fine as per the standard). Not returning anything prevents from chaining then methods because the returned promise from the previos then is resolved to undefined.

ES spec explicitly says return undefined in the last step.

@petkaantonov You linked to the Promse.resolve, not the onFulfilled callback, it is not the same thing changed here. I believe we are all getting confused here, my apologies if I'm not explaining myself properly here, this is a real issue, please read on and let me know if I'm still incorrect.
The change done on this PR is done to the resolve function here, and as you can see, this function is passed to the then function of the thenable object here, even though the function is named resolve, is is not the resolve function you linked (this may be the source of the confusion here), it is analogous to the onFulfilled function defined on the ES spec and it mandates to return something, if it is not d
In the case of Promise.all, an explicit onFulfilled function is not provided for each promises passed in the iterable, this means that the onFulfilled must be the Identty function, that is, it must return the value passed to it which is not doing:
function resolve(value) {
    if (!promise) return;
    promise._resolveCallback(value);
    promise = null;
}

Even though my change returns value only if promise is truthy, I believe the correct implementation should always return value in order to comply with the ES specifiaction, something like:
function resolve(value) {
    if (!promise){
        promise._resolveCallback(value);
        promise = null;
    }
    return value;
}

I'm confused here @chuym why would it matter if onFulfilled returns value or not?
Can you please show in a short example the change in behavior this introduces?

'onFulfilled' is user function passed to the promise implementation, the function passed to a thenable as first argument from the implementation is resolve and must return undefined.

@benjamingr Returning a value from onFulfilled allows for the returned Promise from the then method be resolved with that value.
Here:
http://www.ecma-international.org/ecma-262/6.0/#sec-promisereaction-records

The function that should be applied to the incoming value, and whose return value will govern what happens to the derived promise. If [[Handler]] is "Identity" it is equivalent to a function that simply returns its first argument. If [[Handler]] is "Thrower" it is equivalent to a function that throws its first argument as an exception.

Since the current handler used in Promise.all does not return anything, then the returned promise from then is given the value undefined.
var promise = new Promise(function (resolve) {
    resolve(5);
}); // Where Promise is any class that implements the ES5 standard

promise.then(function (value) {
    console.log(value); // 5
    return value * 2;
}).then(function (value) {
    console.log(value); // 10;
}).then(function (value) {
    console.log(value); // undefined (we didn't return anything on the previous then.
});

The above behaves as you may expect, and it behaves like that for both Bluebird Promises and ES5 promises or other alternate Promise implementation that follows the standard.
Now when passing these promises to Bluebird.all
var first = new Promise(function (resolve) {
    resolve(5);
}); // Where Promise is any class that implements the ES5 standard

var second = new Promise(function (resolve) {
    resolve(20);
}); // Where Promise is any class that implements the ES5 standard

var third = new Bluebird(function (resolve) {
    resolve(50);
});

Bluebird.all([first, second, third]).then(function (results) {
    console.log(results); // [5, 20, 50];
});

first.then(function (value) {
    console.log(value); // undefined
});

second.then(function (value) {
    console.log(value); // undefined
});

third.then(function (value) {
    console.log(value); // 50 (this works because for bluebird promises, an alternate behavior is done
});

Bluebird.all calls the then method for every promise, that is not a Bluebird promise, with a onFulfilled handler that doesn't return anything, thus making the returned promise from then to be resolved to undefined preventing further then methods to be called on the promises passed to Bluebird.all

@petkaantonov It's the other way around. resolve is a function passed to the Promise constructor which must return undefined as you say, while onFulfilled is a function passed to then method that governs what the settled value is for the returned Promise from the then call.

The promise implementation passes the resolve, reject functions to a thenable's then function as arguments. The thenable's then method then calls them or not, but when it calls them, they must return undefined which the spec is explicit about. You are asking for them to return non undefined.

What is the ES5 standard? Promises are introduced first in ES6/ES2015.

Do you have jsfiddle for your example? Promise implementation in this example is horribly broken if it's resolved with a value like 20 and thenning it gives you undefined.

@chuym that's not how promises behave at all.
https://jsfiddle.net/4z8q337f/1/
Promises are immutable, once their value changes it should remain the same. If they return 20 once, they will return 20 forever.


what is the right way to configure working with a test server on the background?

Hi
We're a full-stack developers team, and we work a lot with xhr, jsonp, ajax and stuff like that.
For this, we need to cover tests of data-sending over the network - at least to a test server
For this - we need a test server running in parallel to testem - and sometimes even as a part of it
As architect I want to facilitate for my developers the handling of this test server through testem, so I'm looking for a setup in which testem will make sure the test server runs before the tests are run, and close it if no open tab is executing.
currently, before_tests and after_tests run a command that expects to exit.
The dirty way would be to start some process, save the PID in a file, and kill it after - but that's dirty...
Another way would be to start the server in background once on start, and kill it on_exit, but that still does not sound elegant.
testem is a node project. why shouldn't I be able to 'plug in' some express app, and have testem manage it, watch it and restart it when it changes?
Here's the full use cases list:
As a Node + H5 full stack developer
I want testem to accept via configuration an http server module, keep have it running as long as the test continues, and terminate it when tests stop
so that I can focus on coding instead of operating services
As a Node + H5 full stack developer
I want testem to watch provided server and restart the tests when it changes automatically
so that I can focus on coding instead of operating services
As a Node + H5 full stack CORS developer
I want the provided server to run on a different port
so that I can emulate CORS calls as demandingly as possible
As a Node + H5 full stack NON-CORS developer
I want to be able to configure the provided server to run as part of the server that provides the test page
so that I take CORS out of the equation
thoughts? directions? advises?
PR is considerable if I get some help about how to fit into the project.
If we could trust testem on this - it would be so coool.... :)

Hi @osherx,
thanks for your detailed writeup. As a middleware kind of structure could work, I don't think it will provide you enough value in the long run to jump through all the hops and limitations. (limited to the express version of testem, conflicting dependencies, etc.) and is worth the complexity integrated in testem.
The most common setup I have seen nowadays is to have another tool coordinating your server / databases / caches together with your "frontend app" like docker compose, foreman, etc. Especially with micro service style architectures.
When you prefer not to have another tool running converting your app into a start & stoppable service could also be another solution as you already mentioned.
Another solution could be to start testem programatically from your server:
https://github.com/airportyh/testem/blob/master/testem.js#L84


[$500] [QAB] Add a tooltip to the Quick Action Button if it is being displayed for the first time.

HELD on https://github.com/Expensify/App/issues/38050
As described in this section of the design doc, we want to display a tooltip the first time the QAB is set:
From the design doc:
High-level
The first time global create is opened with the quick action button present, an “educational tooltip” is visible to help explain and draw attention to it:

Detailed
The Tooltip

For the tooltip, we will leverage our existing tooltip component:
We will update MenuItem to receive an optional tooltipContent parameter. When populated, the tooltip will be shown.
If populated, we will pass the content to  via the renderTooltipContent parameter like we do here or here.
The content will be a simple View, styled with the green background, and the text shown in the mockup.
We will pass the content when adding the QAB menuItem here if isFirstQuickAction is set.

Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~018ff6f76c5f734cc9
Upwork Job ID:<PHONE_NUMBER>949152256
Last Price Increase: 2024-03-26
Automatic offers:

cubuspl42 | Reviewer | 0
tienifr | Contributor | 0

To integrate the provided Tooltip component with the functionality described in the design document, you'll need to modify it to accept the renderTooltipContent prop for custom tooltip content and conditionally render it based on the shouldRender prop. Here's how you can modify the Tooltip component:
ToolTip Code:
import React from 'react';
import BaseTooltip from './BaseTooltip'; // Import the base tooltip component
import type { TooltipExtendedProps } from './types';
function Tooltip({ shouldRender = true, children, renderTooltipContent, ...props }: TooltipExtendedProps) {
if (!shouldRender || !renderTooltipContent) {
return children;
}
return (
    <BaseTooltip {...props}>
        {children}
        {renderTooltipContent()}
    </BaseTooltip>
);

}
Tooltip.displayName = 'Tooltip';
export default Tooltip;
Usage of ToolTip:
import React from 'react';
import Tooltip from './Tooltip'; // Assuming you've named the modified tooltip component 'Tooltip'
function MyComponent() {
const tooltipContent = () => (

{/* Custom content for the tooltip */}
This is a tooltip content.

);
return (

        <Tooltip shouldRender={true} renderTooltipContent={tooltipContent}>
            {/* Content to be wrapped by the tooltip */}
            <button>Hover over me</button>
        </Tooltip>

);

}
export default MyComponent;

@Gonals What we're holding on?

Holding on:

https://github.com/Expensify/App/issues/38050

Still HELD.

#38050 has merged (not yet deployed), but I think we can start reviewing the proposals here. :)

There's one proposal by @tienifr. The plan sounds good in my opinion.
@tienifr
Would you give it a quick look, checking whether your proposed solution is up-to-date after the merge of https://github.com/Expensify/App/issues/38050?

I approve the proposal by @tienifr
C+ reviewed 🎀 👀 🎀

Sounds good, assigning @tienifr

@Gonals Maybe you should post here the section of the doc since I think we don't grant access to entire docs unless an NDA is signed.

That's the section of the doc 😁.
I have added the related High level section too, for more context, but it doesn't really add much more.

Popping this on daily until a PR is up and linked to state otherwise. 👍

@tienifr does the OP now clarify your question. If not, can you ask here?

Just a heads up @tienifr that I made some minor copy changes in the mocks in the OP. 👍

Is there a draft PR going here @tienifr?

Yeah, @tienifr can we get an ETA for this PR, please?

Amazing, thanks for confirming! ❤

@tienifr do you have that PR up? Thanks!

@trjExpensify @tienifr
Sorry for asking this late, but I think it's important...

Also as per OP, the tooltip should be shown immediately once the shortcut item appears, not just on hover

For the educational tooltips we're discussing, do we want to show them on hover at all (on the desktop Web)?

That isn't a requirement for desktop/web, no. The idea is that the educational tooltip popover is visible when they open the create menu for the first time with a quick action button, and that's it really. CC: @dubielzyk-expensify

@trjExpensify @tienifr
Sorry for asking this late, but I think it's important...

Also as per OP, the tooltip should be shown immediately once the shortcut item appears, not just on hover

For the educational tooltips we're discussing, do we want to show them on hover at all (on the desktop Web)?

Nope. For our current needs, we do not need any on hover behavior

Agree with what, Tom said 👍

Thanks. It's quite important, as the existing Tooltip component is full of web-specific hover-specific code, which assumes the tooltip target (element the tooltip is pointing at) can be moving and resizing when the tooltip is displayed, while here, as I understand we want something cross-platform (including iOS / Android Native!) with relaxed requirements about dynamicity of the tooltip target.
We'll resume the technical discussion with @tienifr on the PR thread.

Yeah this is essentially a educational tooltip. Not tied to a user event but rather something we'd put up and point to a new thing we launched or similar. It should disappear on any event done by the user and it's position should still be able to be specified precisely.
Here's a few examples from other apps:

Though we don't have a X button as ours will like mentioned auto-disappear on any interaction done by the user.

@eVoloshchak reassigning, please take over as C+. If you don't have bandwidth, unassign yourself. Thanks. PR needs attention

https://github.com/Expensify/App/pull/40066

PR still under review

Not overdue, PR is still under review

Not overdue, work is being done in https://github.com/Expensify/App/pull/40066

Not overdue, work is being done in https://github.com/Expensify/App/pull/40066

Not overdue, work is being done in https://github.com/Expensify/App/pull/40066

Staging 14 hours ago Melv. Calm it down.

Payment Summary:

@eVoloshchak paid $250 through NewDot Manual Requests
@tienifr paid $250 here (Contributor)

I don't think we need regression steps for this new feature.

Ahh, thanks. updated: https://www.upwork.com/nx/wm/offer/102913747

Paid

$500 approved for @eVoloshchak

Thanks! $500 approved for @tienifr

Sorry @tienifr and @JmillsExpensify , you're gonna hate me..
@tienifr you were assigned on March 27 and I have your eligibility date as 2024-04-06, so we need to pay you via Upwork for this job.  (Internal details in this SO and in this pinned chat in #bug-zero)
@tienifr can you please cancel your request for this job via NewDot payments , and accept the job and reply here once you have?
https://www.upwork.com/jobs/~01d37506ff0c4d2ad6

@tienifr , I made a note on the below issue to not be paid to balance this out

https://github.com/Expensify/App/issues/36778#issuecomment-2224131113

can you please accept the job and reply here once you have?
https://www.upwork.com/jobs/~01d37506ff0c4d2ad6

Contributor: @tienifr paid $500 via Upwork (also paid via NewDot, which will balanced out by this issue not being paid)
@cubuspl42 are you due payment? I see you reviewed the PR but don't see a ✔ next to your name in the upper right corner here
https://github.com/Expensify/App/pull/40066#pullrequestreview-1996304064

@cubuspl42 I see hasn't responded yet. Can we close and just reopen if needed?

Sorry for the late response. No payment is needed.


Switch to the md5 encoder in test env to speed up tests

The test duration is divided by 3 now.

Can you also please override the number of hash iterations to 1.

@hhamon are you ok with this? can we merge?


Set up as a monorepo

For discussion:
As mentioned by @chrislloyd in #95, Basscss might make sense as a monorepo. I'm considering this, but am not sure the best way to manage package versioning and publishing and some other aspects.
Thoughts

This would simplify the build process across multiple modules and address #95
A centralized test suite with Travis CI would be nice.
A single git branch for prototyping major versions of Basscss would definitely be easier to work with.

Questions

Should all modules be versioned the same along with the main repo's git tags or should modules maintain their own versions and the repo follow the main basscss version?
Should the core module depend on the published packages or depend on the modules locally?
I assume publishing modules would be not that different from now, e.g. cd modules/utility-typography && npm publish
Would anything else be more difficult with this approach?

Modules should probably maintain their own versions. It would be weird bumping a version if nothing has changed.
Depend on the published packages. That could change in the future but that emulates current behavior and would minimize the surface area for error ATM.
Yep.
??

The other benefit I can think of that hasn't been described is that issues can be consolidated across the project. People just watching bass will be notified of (and can potentially fix) issues across the project.

This might be useful for publishing:
https://github.com/sebmck/lerna


remove unused code and require NodeJS>=12

Coverage decreased (-0.8%) to 78.626% when pulling 3599855e388c63e50b9be1cb6b3eb0f67cb26e71 on remove-unneeded into dba2f4b125f37ba1b58bba8552a294a7bb496680 on master.


Downloader doesn't send SSL Client Certificates

Describe the bug
We access our suppression files over the web (they are hosted on a Sonatype Nexus repository). Our company policy requires an SSL Client certificate to be sent when accessing that server remotely.
I have the certificate set up and working for Maven. I copied that setup to a JAVA_TOOL_OPTIONS environment variable: -Djavax.net.ssl.trustStore=[PATH_TO].jks -Djavax.net.ssl.trustStorePassword=[REDACTED] -Djavax.net.ssl.keyStore=[PATH_TO].p12 -Djavax.net.ssl.keyStoreType=pkcs12 -Djavax.net.ssl.keyStorePassword=[REDACTED] -Djavax.net.debug=all
But the OWASP Dependency checker fails to access our suppression files, since it doesn't send my SSL Client Certificate, despite picking up the JAVA_TOOL_OPTIONS.
Version of dependency-check used
The problem has been verified to be present in version 5.2.1 of the cli and Maven. Since it is present in core, it probably affects all other versions as well.
Log file
https://gist.github.com/JoepWeijers/04ff717e81c8b576ad5ad4fd4a247ffc
Expected behavior
I expect the SSL Client certificates to be send with the request.
Additional context
In URLConnectionFactory#L237, you call the new SSLSocketFactoryEx(settings);, which sets the keystores and truststores to null, effectively removing them.
The SSLSocketFactoryEx was introduced in 2014 with code copied from StackOverflow written in 2009. Maybe this can be replaced with something more modern that supports the keystores and truststores out of the box? If not (I can understand the wish to not introduce extra dependencies for http clients, or the wish for being compatible with very old java versions), could you then make it possible that the keystores and truststores are not completely ignored?

Seems issue #242 is also running into this when running the test suite back in 2015, but the provided solution there (skipping the tests) is not applicable for me.

In a lot of ways I want to rip out the current proxy configuration within ODC.  For your setup, if you have all of the correct proxy settings for Java setup - could you also just add -Djava.net.useSystemProxies=true to JAVA_OPTS and just not configure any proxy information in ODC itself? Alternatively, just setup all of the core Java proxy settings in JAVA_OPTS (http.proxyHost, http.proxyPort,...)?

Hi Jeremy thanks for the reply, but I'm not using a proxy. I have an SSL Client certificate that has to be sent with every request to my server.

My mistake - pretty sure this isn't working by default because we have an SSLSocketFactory extension that was put in place so older JVMs could download the data files from the NVD. I don't think this is actually needed anymore and I'm debating removing the extension.  In the meantime I have added

This should be fixed in the next release.


derive: in complex conditions, wrap terms in as_bool()

Before this PR, the whole condition in {% if cond %} got wrapped in as_bool(&cond). With is PR, the individual terms in a binary operation && or ||, or unary operation ! get wrapped in as_bool().
Resolves #201.

In travel currently. Will take a look when I'm back next week. :)

No problem at all! Enjoy your trip, I wish you good weather! :) 🌞

It's work travel so the weather doesn't really matter. :laughing:

! is implemented for bool and &bool, but not &&bool, &mut bool, Rc<bool>, …
rinja::helpers::as_bool() follows all references to get the right type, so the user does doesn't have to know or care what the actual type is, only you can add some amount of * in front of it to get a bool.
Also, as seen in https://github.com/redlib-org/redlib/pull/290#issuecomment-2416447943, the current implementation can be confusing. In the condition post_should_be_blurred && prefs.unblur_on_hover != "on", why do I need to add an * is front of the variable post_should_be_blurred?

Oh I see, makes sense. Thanks for the extra explanation. :)


This page blog/_posts/2021-12-08-dual-stack-networking-ga.md has no Chinese version

This is a Bug Report
This page blog/_posts/2021-12-08-dual-stack-networking-ga.md has no Chinese version
Problem:
This page blog/_posts/2021-12-08-dual-stack-networking-ga.md has no Chinese version
Proposed Solution:
Translate Chinese version for blog/_posts/2021-12-08-dual-stack-networking-ga.md
Page to Update:
https://kubernetes.io/blog/2021/12/08/dual-stack-networking-ga/
Comments
/language zh
/assign

/triage accepted


Prometheus pod is not deleted on deleting the resource

After following https://coreos.com/blog/the-prometheus-operator.html - I deleted all the resources (kubectl delete -f . on the folder having all the yamls)
The prometheus-k8s pod was remaining.
Finally figured out that it is running from a PetSet and had to delete that separately.
As a user I didn't create a PetSet, so I shouldn't have to be deleting it to ensure proper cleanup (or other activities.)

Did you also remove the prometheus-operator? If so it might have been deleted before the Prometheus resource was deleted.

Yeah I remove the prometheus-operator too. So I have to make sure that the Prometheus resource is deleted before the prometheus-operator right?

Yes that is correct.


Providing code for performance test metrics

What content needs to be created or modified?
For the performance page: https://docs.dapr.io/operations/performance-and-scalability/perf-service-invocation/ there is no link to the code used for this performance test, so it is not reproducible and reduces trust making it harder to get buy-in from DevOps vs known solutions like Istio.
Describe the solution you'd like

A github link to a reproducible test case
A suggestion would be to copy the Istio test case here: https://github.com/istio/tools/tree/release-1.15/perf/load so you can see an apples to apples comparison between the stacks.
Perhaps looking at https://istio.io/latest/blog/2019/performance-best-practices/ for performing valuable load testing metrics.

Where should the new material be placed?
A link in the documentation would be excellent.
The associated pull request from dapr/dapr, dapr/components-contrib, or other Dapr code repos
N/A
Additional context
A barrier to getting this implemented in large enterprises is concerns about utilization of resources and latency for all the services that DAPR provides. Giving an open source test case, especially one that mimics a well known tech stack like Istio, would provide strength to the argument that we receive more with DAPR with less resources.

See perf for all performance tests at https://github.com/dapr/dapr/tree/master/tests
See this article for instructions to run the perf tests https://github.com/dapr/dapr/blob/master/tests/docs/running-perf-tests.md
@tmacam might be able to comment on whether the perf numbers are different since switching from Fortio to K6.

@cisionmarkwalls please note that Dapr does not compete with Istio / is not a replacement for Istio. It solves a different use case. For that reason using Istio test cases also does not make sense.
I'll let runtime maintainers @yaron2 and @artursouza chime in more.

There are overlaps in some functionalities between Istio and Dapr, mainly service invocation and tracing. Also, Dapr requires app to change endpoint while Istio does not require any code change.

In addition to @berndverst pointing to the perf tests source and the instructions for how to reproduce them, I'd mention that we took inspiration from Istio when building the perf tests, all the way from using Fortio as the test tool, to using the same test parameters (QPS, connection size) and more. Another thing to mention is that the current perf stats on our docs are not updated, and today we're seeing ~1.10ms end to end latency as opposed to the 1.4ms in the current version of the docs.

closing in favor of related docs issue #3468


Pretrained Model of ResNet50

This work is so great! Can you share your Pretrained Model--ResNet50?  I have requested for access, but no answer. Thanks a lot!

I've been doing some method reproduction work recently, as well as comparative experiments. I also need your imagenet pretrained model under 745 classes. Thanks.

Hello,when I want to download the resnet50 pretrained model,it says I don't have permission

Hi all,
Thank you for your attention. I updated the access authority. Try to download it again. Feel free to tell me if you have any problems.


code avaliability

A very exciting work, when can the code be avaliable?

Hello! I'm currently cleaning the code up to make it a bit more readable, but it will be posted shortly -- by June 30 at the latest.

Hi, thank you so much for the timely response, looking forward to seeing the exciting work.


Fix the SheerlikeContext class from throwing errors when it expects a request object

@rosskarchner
@kave

looks good since static files will be served by apache


Feature request: Catch keys

The waitkey returns an ascii representation of the keystroke pressed, it would be really nice if we can catch this to keybindings for functions.
Python example, load image, if 's' is registered, save image and exit. If escape is clicked exit.
import cv2
img = cv2.imread('lena.jpg',0 )
cv2.imshow('WindowName', img)
k = cv2.waitKey(0)
if k == 27:  # wait for ESC key to exit
    cv2.destroyAllWindows()
elif k == ord('s'):  # wait for 's' key to save and exit
    cv2.imwrite('lena.png', img)
    cv2.destroyAllWindows()

I did not understand your request completely. Do you mean having some sort of callback that is automatically called when an specific key is pressed?

@Dovyski yes so you can add keybindings to a opencv window. E.g. click 's' to execute a function or use arrow keys to adjust a rectangle's position. Do you want some example on how to use it with OpenCV?

I got it now. If you can provide some examples as you suggested, they will be very helpful.

Here is a python mockup, where you can interact with a rectangle, make it grow, shrink and move it around on a canvas. It prints the key pressed, in the terminal from where the script is executed.
Key bindings
WASD = Grow/shrink square
Arrows Keys = Move square
R = Reset square to start position
+ = Grow square in both width and height
- = Shrink square in both width and height
Escape = Quit program
Code
import cv2
import numpy as np

def main():
    window_name = "Move Rectangle Using Keyboard Demo"
    cv2.namedWindow(window_name, cv2.WINDOW_NORMAL)
    x, y, w, h = (180, 180, 40, 40)
    while(True):
        frame = np.zeros((400, 400, 3))
        cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 3)
        cv2.imshow(window_name, frame)
        key = cv2.waitKey(1)
        if key > -1:
            print("Key pressed:", key)
        if key == 27:  # escape
            # Quit program
            break
        if key == 32:  # space
            pass
        if key == 81:  # left
            x = x - 10
        if key == 82:  # up
            y = y - 10
        if key == 84:  # down
            y = y + 10
        if key == 83:  # right
            x = x + 10
        if key == 114:  # r = reset
            x, y, w, h = (180, 180, 40, 40)
        if key == 119:  # w
            h = h + 10
        if key == 97:  # a
            w = w - 10
        if key == 115:  # s
            h = h - 10
        if key == 100:  # d
            w = w + 10
        if key == 43:  # +
            w = w + 10
            h = h + 10
        if key == 45:  # -
            w = w - 10
            h = h - 10

    cv2.destroyAllWindows()
    print("Exiting program")
    exit()

if __name__ == "__main__":
    main()


Truncated result

When returning a large json, it appears that the response is truncated when Brotli is used (but works fine with gzip). The integration isn't doing anything fancy - its RestEasy (Jax-rs), Guice, and Jackson. Brotli was added as,
filter("/*").through(BrotliServletFilter.class);
bind(BrotliServletFilter.class).asEagerSingleton();

For small payloads it works perfectly, but for a large one it returns back content-length:21949 which is probably incorrect.

It seems to be forced by Jetty in org.eclipse.jetty.http.HttpGenerator.putContentLength(ByteBuffer, long)
Though I'm not sure why.

Hi Ben,
thank you for this feedback.
May I ask you to provide a shot Github ghist example code, where I can test this scenario?
Thanks in advance.


Multilingual support for playback of BMLT meeting info in Yap.

Is your feature request related to a problem? Please describe.
The new Spanish translation of prompts in Yap 3.xx, combined with the playback of meeting info stored in English, produces Spanglish, which is not desirable to English or Spanish speakers.
Describe the solution you'd like
The solution that would be best is to have the same language voice support existing in Yap now for prompts be extended to meeting information.  This may require some type of field in BMLT indicating which language the info is saved in.
Describe alternatives you've considered
The alternative is to separate English and Spanish Yap instances and manually translate the few Spanish meetings that exist in our region/zone.  Then keep all English speaking meetings info to be played back with the default English voice, thereby matching English prompts with English meeting info.
Mention any other of the Github handles that are also interested in this enhancement
Additional context
This issue of intermixing languages is a byproduct of Yap having advanced in multilingual support beyond what is currently implemented with BMLT typically.

This is a shortfall of the BMLT in which meeting information language is not stored.  You get to choose one.

The one option is to use "Format" to determine the language.  Based off that designation, it would direct the voice to use.

Using the format field sounds like a good solution.

You'd have to map Format to Language as a configuration setting in Yap, because format codes can vary from root server to root server.

So are you expecting that regardless of the language selected it would play back the meeting in the format code selected (with say the default being a pre-selected language)?
Or are you expect that if you select a specific language that it would only return meetings that are tagged with that specific format mat (with say the default being a pre-selected language)?

The 1st option — matching languages for meeting info playback. Separating
them we are going to manually right now.
On Thu, May 2, 2019 at 5:40 PM Danny Gershman<EMAIL_ADDRESS>wrote:

So are you expecting that regardless of the language selected it would
play back the meeting in the format code selected (with say the default
being a pre-selected language)?
Or are you expect that if you select a specific language that it would
only return meetings that are tagged with that specific format mat
(with say the default being a pre-selected language)?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/bmlt-enabled/yap/issues/281#issuecomment-488842219,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AF6DMBZC2B52KZ4Z36X5UBLPTNNTLANCNFSM4HJQ4AFQ
.

Seems feasible.
On Fri, May 3, 2019 at 4:12 PM webfacilitator<EMAIL_ADDRESS>wrote:

The 1st option — matching languages for meeting info playback. Separating
them we are going to manually right now.
On Thu, May 2, 2019 at 5:40 PM Danny Gershman<EMAIL_ADDRESS>wrote:

So are you expecting that regardless of the language selected it would
play back the meeting in the format code selected (with say the default
being a pre-selected language)?
Or are you expect that if you select a specific language that it would
only return meetings that are tagged with that specific format mat
(with say the default being a pre-selected language)?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/bmlt-enabled/yap/issues/281#issuecomment-488842219,
or mute the thread
<
https://github.com/notifications/unsubscribe-auth/AF6DMBZC2B52KZ4Z36X5UBLPTNNTLANCNFSM4HJQ4AFQ
.

—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/bmlt-enabled/yap/issues/281#issuecomment-489225214,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAOD3O4E673P7AYM3J45KGLPTSMBTANCNFSM4HJQ4AFQ
.

Looked at this again, and it's too complicated to implement for such a small number of use cases.  The root server doesn't haven't a native capability currently to facilitate this.


A559085148719353 fixed dutch steps

In case of 100 rounds, final amount would be equeal to 1
Update tests due to new auctionParameters logic

Coverage increased (+0.02%) to 83.006% when pulling 503ab09fc782a5038548d3643ec136bf493aa3f7 on Scandie:a559085148719353_fixed_dutchSteps into 05f67365333148ea9079d8ed57febbe989eb75d9 on openprocurement:sandbox.


Failed to upgrade spark-snowflake to newest version

I am also struggling to upgrade to Snowflake-JDBC latest version, can you help me?
It simply says RuntimeException just by upgrading from 3.12.16 to 3.12.17. The only dependency change it has it guava upgrade.


Commit analyzation doesn't pick up any commits to release

Hi,
I'm using<EMAIL_ADDRESS>(tried with version 17 and 16 as well) and<EMAIL_ADDRESS>with Yarn workspaces.
Here is my set up:
Semantic release is configured for each package inside the monorepo. Given the following folder structure
<repo root>/packages/<package-a>
<repo root>/packages/<package-b>
I'm running semantic release inside <package-a> and <package-b>
The semantic release command finds the new commits, and even though I have commits with the correct message format and changes in the correct folders (<package-a> and <package-b>), the process doesn't find any relevant changes. Here are the logs from the "commit analyze" step (debug mode is turned on):

Do you see something wrong with this setup?

Hi, I encoutered the same issue but found out that when using a custom config for semantic-release you should:

extend it from semantic-release-monorepo
add at least @semantic-release/commit-analyzer in the list of plugins (this is the one which will find the proper semver release)
eventually, also add @semantic-release/release-notes-generator in the list of plugin

Here is a sample of a minimal custom configuration:
// release.config.js

module.exports = {
  repositoryUrl: '<your_repository_url>',
  extends: 'semantic-release-monorepo',
  branches: ['master'], // if you want to release on master
  plugins: [
    // "semantic-release-monorepo" is perfoming the analysis of commits (for the subrepo)
    // then update the context passed to `analyzeCommits` and `generateNotes` steps of semantic-release
    "@semantic-release/commit-analyzer",
    "@semantic-release/release-notes-generator", // not necessary to create a new release but useful for release's notes
  ],
};

It would be nice to indicate this in the doc of current repository.

I just ran into the same issue. What was not obvious is that I had to explicitly have @semantic-release/commit-analyzer as a plugin in my release config. I did not need that before.
As a side note, @semantic-release/commit-analyzer just moved to ESM which semantic-release-monorepo does not support yet, so you need to explicitly downgrade to v9 with npm install @semantic-release/commit-analyzer@9.

As a side note, @semantic-release/commit-analyzer just moved to ESM which semantic-release-monorepo does not support yet, so you need to explicitly downgrade to v9 with npm install @semantic-release/commit-analyzer@9.

Did you try semantic-release-monorepo-esm ?


chore: manually mask swiftui views

:bulb: Motivation and Context
Alternative solution for https://github.com/PostHog/posthog-ios/issues/162
You inject a synthetic view into the marked view and get the X and Y positions based on that component.
You don't have access to the original view but you know where it should be masked.
:green_heart: How did you test it?
:pencil: Checklist

[ ] I reviewed the submitted code.
[ ] I added tests to verify the changes.
[ ] I updated the docs if needed.
[ ] No breaking change or entry added to the changelog.

@ioannisj you can pick this up if you wish, the PoC works, just need to polish and finish it

@ioannisj I cannot approve my own PR so feel free to get it approved/merged after fixing the conflicts.


Upgrade operator-sdk to 1.28

https://github.com/operator-framework/operator-sdk/releases/tag/v1.28.0

recheck

recheck

recheck


Allow more configuration for windows worker

use concourse-windows-worker-release from bosh.io and add latest
version to versions.yml
add opsfile for ephemeral disk configuration
add vm type configuration

@vito @jama-pivotal We were wondering what y'all think about this PR? We are running a forked version of the concourse-deployment to have this configuration and would prefer to use the upstream instead.

@vito is there anything more we need to do to help this get merged?

Thanks! Sorry for the delay, I've been on vacation.


[1.20.1-Forge] Crash when reloading / switching resource pack.

What happened:
Crash when reloading / switching resource pack.
Versions:
MC: 1.20.1
Forge: 47.1.3
Functional Armor Trim: functionalarmortrim-1.20.1-2.jar
Crash-Report:
https://gist.githubusercontent.com/Gbergz/3f70a8d5e5b326c7240843f28cc05986/raw/5b866dcf7e47e5abb094063d55dfd1d6f870443e/gistfile1.txt

Fixed in 2.1


Add Avro/PFB option for hand-off to Terra

Retain the current "BdBag" mechanism as the default, but provide an "Avro/PFB (Beta)" as a selection option.
Add a radio button group in front of the "Request Export" page on the export to terra flow on the select file type page.
Give two options, PFB or bdbag.
Make the field required to enable and submit the form.
Enable in dev only. In other environments use bdbag like we do now.
Take the selection and add it to the first request (on select of the button) for the format parameter like:
https://service.azul.data.humancellatlas.org/fetch/manifest/files?catalog=dcp7&filters=%7B%22pr[…]is%22%3A%5B%22fastq%22%5D%7D%7D&format=PFB

@jessebrennan Does this ticket's description look correct to you?

@jessebrennan I have updated the requirement above according to my understanding of what we need to do to enable this feature in dev. Can you please take a look and let me know if I am missing out on anything?

The format should be "terra.pfb" not "PFB". This was meant to parallel the "terra.bdbag" option with a similar name.


Got TypeError when running example

Describe the bug
Got error when running example python3 ../../sram_compiler.py example_config_1w_1r_scn4m_subm.py:
Traceback (most recent call last):
  File "/home/jiegec/OpenRAM/macros/sram_configs/../../sram_compiler.py", line 74, in <module>
    s.save()
  File "/home/jiegec/OpenRAM/compiler/sram.py", line 104, in save
    functional(self.s,
  File "/home/jiegec/OpenRAM/compiler/characterizer/functional.py", line 99, in __init__
    self.create_random_memory_sequence()
  File "/home/jiegec/OpenRAM/compiler/characterizer/functional.py", line 152, in create_random_memory_sequence
    addr = self.gen_addr()
           ^^^^^^^^^^^^^^^
  File "/home/jiegec/OpenRAM/compiler/characterizer/functional.py", line 366, in gen_addr
    random_value = random.sample(self.valid_addresses, 1)[0]
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/random.py", line 439, in sample
    raise TypeError("Population must be a sequence.  "
TypeError: Population must be a sequence.  For dicts or sets, use sorted(d).

Version
commit 85db2043b27f842f8b927fe1a49deb42b0b05b40
To Reproduce
What did you do to demonstrate the bug?
Please include your configuration file used.
$ cd macros/sram_configs
$ python3 ../../sram_compiler.py example_config_1w_1r_scn4m_subm.py
WARNING: file globals.py: line 180: Failed to find coverage installation. This can be installed with pip3 install coverage
|==============================================================================|
|=========                       OpenRAM v1.2.8                       =========|
|=========                                                            =========|
|=========               VLSI Design and Automation Lab               =========|
|=========        Computer Science and Engineering Department         =========|
|=========            University of California Santa Cruz             =========|
|=========                                                            =========|
|=========          Usage help<EMAIL_ADDRESS>         =========|
|=========        Development help<EMAIL_ADDRESS>      =========|
|=========                See LICENSE for license info                =========|
|==============================================================================|
** Start: 04/08/2023 09:38:53
Technology: scn4m_subm
Total size: 32 bits
Word size: 2
Words: 16
Banks: 1
RW ports: 0
R-only ports: 1
W-only ports: 1
DRC/LVS/PEX is only run on the top-level design to save run-time (inline_lvsdrc=True to do inline checking).
Characterization is disabled (using analytical delay models) (analytical_delay=False to simulate).
  "
TypeError: Population must be a sequence.  For dicts or sets, use sorted(d).

Expected behavior
A clear and concise description of what you expected to happen.
It should work.
Logs
If applicable, add logs or output to help explain your problem.
Pasted above.
Additional context
Add any other context about the problem here.
It can be fixed via a small change:
diff --git a/compiler/characterizer/functional.py b/compiler/characterizer/functional.py
index 78a44530..ddf0d588 100644
--- a/compiler/characterizer/functional.py
+++ b/compiler/characterizer/functional.py
@@ -363,7 +363,7 @@ class functional(simulation):
     def gen_addr(self):
         """ Generates a random address value to write to. """
         if self.valid_addresses:
-            random_value = random.sample(self.valid_addresses, 1)[0]
+            random_value = random.sample(list(self.valid_addresses), 1)[0]
         else:
             random_value = random.randint(0, self.max_address)
         addr_bits = binary_repr(random_value, self.bank_addr_size)

Which version of python are you using? It might be too new.

We will include this fixed though, thank you

Which version of python are you using? It might be too new.

Python 3.11

This should be fixed by this commit: 0e781dd2247b2440235f39ed9169cf0d42948ae7
Let me know if this does not resolve your issue.


Add markdown support

Currently markdown syntax just appears as plaintext which makes it kind of difficult to read highly formatted task descriptions

Hello! Thank you for using Khanos. I'll add this as a new feature. Using markdown syntax is very useful and I understand it's is painful to read a markdown formatted description without markdown support. I'll work on this with other new features.


Update "what's new" pages for the upcoming deploy

@marliekeverweij @ChaelKruip Do you know how to disable the message below until the deploy is done?

A few minor comments for next time:

Be sure to merge with master rather than production. The production branch gets overwritten during the deploy, so anything that isn't on master will be lost.

You can delete the old images in app/assets/images/pages/whats_new, since we don't need them after the page has been updated.

Images can be compressed with ImageOptim to reduce sizes by 30-40%. I've done this for the new "what's new" images:

Do you know how to disable the message below until the deploy is done?

Where was the screenshot taken? The "what's new" banner should not have shown up on production – it is controlled by the whats_new_cutoff setting in config/config.yml. If it's on your local machine, it will default to always be shown; you can hide the banner by adding that option to your config/config.yml with a date in the past.

You can delete the old images in app/assets/images/pages/whats_new, since we don't need them after the page has been updated.

I think it would be nice to be able to show something like a change log. Would it be possible to keep the old pages and let the user click back to previous deploys? In other words: I have the feeling that we should not delete old stuff as it might be useful...

I have the feeling that we should not delete old stuff as it might be useful...

They'll still exist in the Git history. It's easy enough to recover them.

Thanks for your comments, @antw!

Be sure to merge with master rather than production. The production branch gets overwritten during the deploy, so anything that isn't on master will be lost.

That's inconvenient, indeed. Next time I'll first merge the changes into master and then cherry-pick the relevant commits to pro (since we do like to share the https://pro.energytransitionmodel.com/whats-new link to our power users prior to the deploy).

Where was the screenshot taken?

It was indeed taken on my local machine. I was just making sure the banner wouldn't pop up on the LIVE server yet before the deploy. :)


Data loss when moving content using Filer to heading with trailing space

Describe the bug
When attempting to move content using the Filer plugin, and the target heading has a trailing space, the content is removed from the source note, but not added to the destination note.
To Reproduce

Start with content in a source note (e.g. a daily note), and a target note with a heading (H3 in my example) that has a trailing space at the end of the heading.
Select content in the source note (I had multiple lines selected, though I'm not sure that matters).
Invoke the Filer plugin to move selected paragraphs
Select the target note
Pick the heading with the trailing space and hit enter.

Expected behavior
Content was moved from the source note to the target note under the selected heading. If an error is encountered, content remains in source note and there is no data loss.
Screenshots
System

Device: Mac
OS: macOS 12 (Monterey)
NotePlan Version: 3.7
Plugin Name & Version: "Filer" v1.0.0-beta

Additional context
Plugin Console Log
2022-10-27 14:08:13 | DEBUG | userInput / chooseHeading :: User picked existing heading #7 ('Mentoring for Employee') from 9 ..
2022-10-27 14:08:13 | DEBUG | jgclark.Filer v1.0.0-beta1 :: - Moving to note 'Tester' under heading: 'Mentoring for Employee'
2022-10-27 14:08:13 | DEBUG | jgclark.Filer v1.0.0-beta1 :: -> Inserting at start of section 'Mentoring for Employee'
Error: Couldn't find heading, this is case sensitive. Please check again.
2022-10-27 14:08:13 | DEBUG | jgclark.Filer v1.0.0-beta1 :: - Removing 4 paras from original note

@edgauthier thanks for the clear report. I've not looked at the code yet, but I expect its a simple thing to fix.

Fixed with commit cf2abaeb66897ec2e291321ab51625a60eb0e055 released as 1.0.0-beta2.


Error: 400 Bad Request

I am quite new at this and tried to install the package. Index page seems to be working well. However, when I try the /archivepage, whatever URL I pass returns a 400 error: No archive None. Any help would be appreciated!
Thanks!

Same issue here:

HTTP/1.1 400 Bad Request
Content-Length: 798
Content-Type: text/html; charset=UTF-8

    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">

            <title>Error: 400 Bad Request</title>

Error: 400 Bad Request

Sorry, the requested URL <tt>'http://sologlo.library.ucla.edu:8080/archivepage?url=https://twitter.com/UCLA_YRL&handler=webrecorder'</tt>
               caused an error:

No archive None

Sorry, forgot to update the readme, it should be archive= instead of handler=. README now updated.


Long wait time when creating a manual aoi

When creating a manual aoi in the aoi selection tab, the process is taking so long because it's exporting the geometry to GEE (which is not needed in this app), would be nice to have the option to create aoi's without sending them to gee, just json format.

I'm working on a way to make the aoi_selector more flexible, but that's (as you know) already quite messy ;-)

If you need to refactor it I could help with some ideas, just let me know ;)

solved in sepal_ui v2


error in instalation

When i try to install apears an error of manifest

You should be able to install it correctly by now. I am sorry, new to this. 😅


Fix L2 list indentation

Description & motivation
Added extra tab in L2 bulleted list to fix indentation issue in this section:
https://docs.getdbt.com/guides/getting-started/building-your-first-project/build-your-first-models#change-the-way-your-model-is-materialized
To-do before merge

Prerelease docs
If this change is related to functionality in a prerelease version of dbt (delete if not applicable):

[ ] I've added versioning components, as described in "Versioning Docs"
[ ] I've added a note to the prerelease version's Migration Guide

Checklist
If you added new pages (delete if not applicable):

[ ] The page has been added to website/sidebars.js
[ ] The new page has a unique filename

If you removed existing pages (delete if not applicable):

[ ] The page has been removed from website/sidebars.js
[ ] An entry has been added to _redirects

@runleonarun : please take a look. small fix -- indented a level-2 list properly. tysm! 🙏


AQCU-1200: change displayed qualifier value to 'code - display name' …

…for TSS.

Coverage decreased (-32.4%) to 66.535% when pulling 55a2db58ecd178d01cb7734a5ec91001d0115aa9 on kmschoep-usgs:AQCU-1200 into 3bece1236f524ad032a86a14afa6c5c99246ff55 on USGS-R:master.

Guessing that drop might be caused by that browser call messing up tests following it?

Coverage remained the same at 98.918% when pulling e450f02daabd936914bafd7f890f2bc0f97bde8f on kmschoep-usgs:AQCU-1200 into 3bece1236f524ad032a86a14afa6c5c99246ff55 on USGS-R:master.


Update index.md - link to brew.sh was not correct

One link to brew.sh was linked relatively to the docs of ddev itself which caused to create a https://ddev.readthedocs.io/en/stable/brew.sh instead of https://brew.sh.
The Problem/Issue/Bug:
Wrong link as stated above.
How this PR Solves The Problem:
Updated it properly with a HTTPS scheme protocol.
Manual Testing Instructions:
Click on the brew.sh link. :)
Automated Testing Overview:

It's a simple link anyone can test by clicking on it. Guess it's self-explaining enough.
Related Issue Link(s):
https://ddev.readthedocs.io/en/stable/
Release/Deployment notes:

Nothing

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Thanks for this!


Increase default string size to 1024

This is the final PR for big-X support, where X is strings, buffers, etc.
In this PR we change the default size of these types to 1024. Hopefully
that is enough to make truncation happen very rarely in practice. Even
if it does occur, the user has the option to change BPFTRACE_MAX_STRLEN
to whatever they want now.
The biggest potential regression is that these types will be difficult to
store to scratch variables, as scratch variables go onto the stack and
we only have 512B of stack to work with. However, the user has 3 fairly
easy workarounds:

Assign it to a map instead
Save the str() call for the print()/printf() argument
Clamp the string size

Given that big strings have been asked about for years, it's probably
worth the small amount of pain it causes to make big strings work
out of the box for everyone else.
I've also improved semantic analyser diagnostics to nudge users
to those 3 remediation if they need it.
Checklist

[ ] Language changes are updated in man/adoc/bpftrace.adoc
[x] User-visible and non-trivial changes updated in CHANGELOG.md
[x] The new behaviour is covered by tests

Ah I forgot. The adoc looks like it needs updating - it has the old MAX_STRLEN value and the few mentions of that config probably could use some additional context now.

Ah I forgot. The adoc looks like it needs updating - it has the old MAX_STRLEN value and the few mentions of that config probably could use some additional context now.

Good call. I did a grep for the env var but forgot to check lower case config name


Changing symmetric.key.master.password after migration?

We are still trying to migrate our customer into the CCv2. After finally eliminating all external factors that were hindering us, I was finally able to execute a full DB migration, migrate media files with azcopy and then redeploy the cloud environment with "Migrate data" again.
Much to my dismay, afterwards I was not able to log into the hac again. The logs threw exceptions about the password decoding failing.
I found out that since my last DB migration, the CCv2 seems to provide their own TAE keys now. So I extracted the keys from the on-premise system and get the symmetric.key.master.password and add the key via security files and set the password through hcs_common.
After a full reinitialize and another DB + media files migration, the system still fails to decode my admin users password, the log turew aj exception with the message "pad block corrupted", looking through the web I only found a Stackoverflow post where it says the master password seems to be incorrect.
Does the CCv2 forcefully override my master.password I set through hcs_common or why isn't it working?

Solution was to change the master password (using the groovy script of this article https://me.sap.com/notes/2311299) of the source systems key and upload it to the CCv2 Security Files and then set that key to symmetric.key.file.1 and set the ccv2 generated key to symmetric.key.file.2.


chore(main): release iso-signatures 0.3.0

:robot: I have created a release beep boop
0.3.0 (2023-12-21)
Features

update to new did types (0db02d7)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/hugomrdias/iso-repo/releases/tag/iso-signatures-v0.3.0 :sunflower:


[feat] Provide @tauri-apps/cli-win32-arm64-msvc NPM package

Describe the problem
Nowadays I can only manually compile Tauri everytime.
Describe the solution you'd like
Provide @tauri-apps/cli-win32-arm64-msvc NPM package
Alternatives considered
No response
Additional context
No response

We're waiting for https://github.com/briansmith/ring to release a new version that can be built on windows+arm.


add sample loading

I know there is already a branch with some support already, but I ended up writing this anyway, so I'm sharing it here it in case someone finds it useful while that's finished (although I wouldn't mind working on getting this merged neither).
Files are read from the directories in the GLICOL_CLI_SAMPLES_PATH environment variable. There can be multiple directories, separated by ; like with PATH.
Files in the top level are imported with the name directly, while files in a directory have the directory name as a prefix. For example, I'm currently using the following config.
export GLICOL_CLI_SAMPLES_PATH="$HOME/Sources/glicol/js/assets"
export GLICOL_CLI_SAMPLES_PATH="$HOME/Sources/Dirt-Samples/:$GLICOL_CLI_SAMPLES_PATH"

Which allows using sp \guitar (guitar.wav in glicol/js/assets) and \peri007_xbigclang (007_xbigclang.wav in Dirt-Samples/peri`.

amazing, thanks!


[SPARK-34874][INFRA] Recover test reports for failed GA builds

What changes were proposed in this pull request?
https://github.com/dawidd6/action-download-artifact/commit/621becc6d7c440318382ce6f4cb776f27dd3fef3#r48726074 there was a behaviour change in the download artifact plugin and it disabled the test reporting in failed builds.
This PR recovers it by explicitly setting the conclusion from the workflow runs to search for the artifacts to download.
Why are the changes needed?
In order to properly report the failed test cases.
Does this PR introduce any user-facing change?
No, it's dev only.
How was this patch tested?
Manually tested at https://github.com/HyukjinKwon/spark/pull/30
Before:

After:

cc @gengliangwang, @viirya or @dongjoon-hyun can you take a quick look please? This change cannot be tested in this PR anyway because the workflow runs against the master branch's workflow.

Thanks! Merged to master, branch-3.1, branch-3.0 and branch-2.4.

+1, late LGTM.


Interfaces cannot implement other interfaces

I'm generating my schema.graphql file with nestjs graphql: https://github.com/nestjs/graphql which supports interfaces implementing other interfaces:
interface Interface0 {
   field0: String
}

interface Interface1 implements Interface0 {
   field0: String
   field1: Float!
}

interface Interface2 implements Interface0 & Interface1 {
   field0: String
   field1: Float!
   field2: Float
}

type Type0 implements & Interface0 & Interface1 & Interface2 {
   field0: String
   field1: Float!
   field2: Float
}

But it looks like it is not supported by this package:
Error on line xx, column yy of package:my_project/schema.graphql: Unknown definition type 'implements'
   ╷
16 │ interface Interface2 implements Interface0 & Interface1 {
   │                      ^^^^^^^^^^
   ╵

(Right now, I'm using the version 0.9.4)
Is there something I should do to make it work, or is it planned to support it in the future?

First of all, I moved this to the gql repo since it relates to the gql/language code, not ferry directly.
The feature of interfaces implementing other interfaces hasn't made it into the official GraphQL spec yet.
They are included in the current working draft though, so we can reasonably expect them in the next official spec release. As such, I think it would be reasonable to just go ahead and implement this feature now.
I don't have the time to work on this, but I can provide guidance if you'd like to make a PR, or maybe one of the other maintainers of gql wants to take it on.

Awesome ,I'm very glad to hear that. Thank you for this quick response. I don't have the time to work on it right now though. I might give it a try in a while if no one started in the meantime.

Would be great to add support for this, it is now part of the official spec since October 2021.


Issue 245

I messed up and included the commits from this pull request in this branch:
https://github.com/datactive/bigbang/pull/295
Please review #295 first and see if it passes. If so, the only change in this PR is
https://github.com/datactive/bigbang/commit/616e4fd7e86ca39a873503c8b8949b1867aa02c6
which only effects one notebook to stop it from erroring.

I should say: this ticket fixes #245

It looks like #245 was fixed elsewhere, and that there's a separate PR now for changing mail.scipy. to mail.python.org. Can we just close this PR as obsoleted by other work?

Yes


3 Books License Added

What does this PR do?
Add info on basis of #11355
For resources
Description
Add License Notes to following Books:

Eloquent JavaScript 3rd edition - Marijn Haverbeke (HTML, PDF, EPUB, MOBI)

License Line Found Under The Book Image On Site
"Licensed under a Creative Commons attribution-noncommercial license."

Introduction to Scientific Programming with Python - Joakim Sundnes (PDF)

License Line Found On Page 5 Of PDF
"This book is licensed under the terms of the Creative Commons Attribution 4.0
International License (http://creativecommons.org/licenses/by/4.0/)"

Think Python 2nd Edition - Allen B. Downey (3.x) (HTML, PDF)

License Line Found On Page 4 Of PDF
"Permission is granted to copy, distribute, and/or modify this document under the terms of the
Creative Commons Attribution-NonCommercial 3.0 Unported License, which is available at http:
//creativecommons.org/licenses/by-nc/3.0/"
Why is this valuable (or not)?
How do we know it's really free?
For book lists, is it a book? For course lists, is it a course? etc.
Checklist:

[  ] Read our contributing guidelines.
[  ] Search for duplicates.
[  ] Include author(s) and platform where appropriate.
[  ] Put lists in alphabetical order, correct spacing.
[  ] Add needed indications (PDF, access notes, under construction).
[  ] Used an informative name for this pull request.

Follow-up

Check the status of GitHub Actions and resolve any reported warnings!

Sir I have added changes.

Thanks, and welcome to free-programming-books!


Start API class to query the back-end

As the rembrandt front-end, I'd like to be able to retrieve information from the back-end, as well as posting new data to it.

:question: Additional Questions to Answer / Consider

Do we have separated API classes for resource organization and optimization, or is it one big interface?

:white_check_mark: Conditions of satisfaction

[ ] The answer to separated APIs is documented.
[ ] The class(es) is(are) present, that connect(s) to the back-end.
[ ] At least one query/route is implemented and can be used as reference for adding new routes.

APIs should be implemented in a seperate classes located in src/apis.


Plugin upgrades do not require the user to restart there IDE

Before this PR
Whenever we upgraded the plugin users were required to do a full restart of there IDE
After this PR
Now the plugin should be able to upgrade without forcing the user to restart there IDE as we have set requires-restart=false
All checks have been ran to ensure dynamic upgrading works see https://plugins.jetbrains.com/docs/intellij/dynamic-plugins.html?from=jetbrains.org

==COMMIT_MSG==
Plugin upgrades do not require the user to restart there IDE
==COMMIT_MSG==
Possible downsides?
There is no easy way to run this as part of gradle, previously https://github.com/JetBrains/inspection-plugin would have worked but the project has now been deprecated in favour of https://www.jetbrains.com/qodana/ which is too heavy handed for this plugin. This means we have no automated ways of ensuring that the checks are ran in the future

:+1:


fix FT_UID undefined constant

fix FT_UID undefined constant ref #30

Hi @pxpm ,
first of all thanks for your pull request :)
I just don't really get why you changed FT_UID type to a string since FT_UID is a constant provided by the native imap-php funktion and usually an integer..
Could you please provide some additional information on why FT_UID should be handled as a string?
Best regards

Hi @Webklex .
Like the user commented on #30 i was getting the same error.
And could not, for example, run artisan commands till this issue is fixed.
I think it's because of the constant will only be defined later and that causes this error.
It was already assuming 'FT_UID' but throwing error like it says.
So i assume it don't break anything. At least for me didn't and the error vanished. So the constant gets defined later.

@pxpm like @Webklex said, it IS a constant (without '' or "").
You're getting this error because you don't have the php's imap extension installed (and enabled)...
If you are using ubuntu, you can use the following command to install the required libs: (LibC and Kerberos5)
apt-get update && apt-get install -y libc-client-dev libkrb5-dev
and then install the imap extension (compiling, using a package provided by some ppa, or a simple Docker command docker-php-ext-configure imap --with-kerberos --with-imap-ssl  && docker-php-ext-install imap).


Detect turn order and early immobility

Continues off of #100.
Temporarily mark active pokemon that have consumed their action during the current turn. This improves information for intermediate actions, e.g. self-switching, and can help infer speed investment or a Choice Scarf item.
Also handle events where a pokemon is prevented from moving, e.g. |cant| and |-damage|...|[from] confusion, and apply the same effects that would've happened if we waited until the end of the turn to reset lockedMove/twoTurn (TODO: does this also work for moves like focuspunch, bide, rollout, and uproar?). Not entirely sure how to do this without code duplication or an extraneous method.
Put on hold for now as speed stat/item inference isn't supported yet.

Won't fix, reasoning specified in #321.


Oddness with background colors.

Hi.  Kicking the tires on your project!
I see this output with the konsole app. Notice how the previous background is used after the end of the text.

You may want to compare your project with this guys. I don't get backgound problem with his.
https://gist.github.com/RabaDabaDoba/145049536f815903c79944599c6f952a
With xterm, your project is a little better.  So maybe it boils down to the console program being used.

I downloaded your latest code.  The api looks more consise. Still has the scrolling problem and colorization.

I may need to put the reset code before every newline character to solve this issue... I haven't found any other solution other than that so far.

Yeah, most likely.   Look at the 'gist' link I included.  That person somehow added a 'CRESET' token that can be optionally added by the programmer when he makes the call.


config(dumpling): update dumpling integration test requirements

dumpling has updated the integration tests requirements in https://github.com/pingcap/dumpling/pull/325

/merge


Add component generator

Related to #104

Thanks for the PR! This is nice. Though, it might be a bit more practical to use VS Code code snippets instead (see .vscode/snippets folder).