add maxLenght limitation for input attributes in validate-code request

As we did for the code in the send-code operation, we should add maxLenght limitation in the validate-code request for authenticationId (max lenght set to 36) and code (10).
Any objection from the team?

Check if good practise are existing for OTP code lenght.
Why 10 and not 6.

@monamok @DT-DawidWroblewski
I make some search on this topic. I did not find a 'global' rule but more a rules per API provider:
Twillio: The API supports token lengths between 4 and 10 digits with a default of 6 digits
IBM: 6-digit code
Amazon:  OTP codes can contain between 5 and 8 digits, inclusive
Vonage: 4 or 6
And I asked to chatGPT : What is the standard password length for password in OTP API ?
"The standard password length for one-time passwords generated by OTP APIs can vary depending on the specific implementation and requirements of the application or service using the OTP API.
However, in general, OTP passwords are typically shorter than traditional passwords, with a typical length of 6 to 8 digits. This is because the primary purpose of OTPs is to provide a temporary, one-time password that is valid for a short period of time, typically only a few minutes."
So I think we can faily set the max to 10 (max of the one I have found)

merged


Tensorflow, scikit and matplotlib versions

Hi, is there any documentation about which Tensorflow, matplotlib and scikit version were used? I sugged creating a requirements.txt file with the output of pip freeze to use the right version while running the files.

good idea (i'll get to it later)! This is not a complete set, but TCAV should work with tensorflow (1.13.1), matplotlib (2.2.4), and scikit-learn (0.20.0)

This has not been included in the requirements.txt . Thank you for this idea!


Fix aligned alloc on C++14 compiler as it is only C++17

See #57706 but the gist is aligned_alloc was introduced in the std c11 but was fully implemented in C++17 however a C++14 might be C11 compliant without that feature (eg GCC 7.1.0)
I just forced the condition to be both std c11 and C++17 to ensure at 100% the feature is here and fall back to the less effective method otherwise.

@ETKNeil Can you please sign CLA. Thank you!

@ETKNeil Can you please sign CLA. Thank you!

Mmh not sure how to do it with my noreply github email, they say to add it to the CLA group or something

Mmh not sure how to do it with my noreply github email, they say to add it to the CLA group or something

Hi @ETKNeil Any update on this PR? Please. Thank you!

Hi @ETKNeil Any update on this PR? Please. Thank you!

Hi @ETKNeil Any update on this PR? Please. Thank you!

Hi @ETKNeil Any update on this PR? Please. Thank you!

Actually, closing since CLA is missing for so long and it's been in conflict.


using xrdp v<IP_ADDRESS> with Guacamole and drive redirection problem only w/downloads not uploads

I've been using xrdp with a guacamole based project I have worked on for several years.
https://github.com/bmullan/ciab-remote-desktop
TLDR - Host is an Ubuntu 18.04 (cloud/vm or physical server).   Guacamole, tomcat, mysql, nginx run in an LXD container called ciab-guac on the server
User remote desktops (Mate) run in a 2nd LXD container (CN1) on the same server.
Both Containers are also Ubuntu 18.04 also running MATE Desktop Environment.
Nothing runs in the Host Server but LXD everything else is in the 2 LXD containers (ciab-guac and CN1)
Everything works great (sound, printing) except I have one problem with File Redirection and that is only in 1 direction ... uploads work file, downloads don't work.
I am using XRDP v<IP_ADDRESS> (0.9.10 is available I know).
I edited /etc/xrdp/sesman.ini to set the shared drive name to "shared-drive".
In Guacamole I configure the CN1 container's "connection" to:
Enable Drive   checked
Drive Name:   shared-drive
Drive Path:     the logged in User's Desktop folder
and I set guacamole config to use rdpdr
After doing all this config... file uploads work fine.  I just drag & drop a file from my local desktop onto the remote desktop and it gets put into the user's "shared-drive/GUACFS" folder.
However, for downloads from the remote Desktop if I copy a file or drag/drop it into the user's "shared-drive/GUAFS/download" folder the file is never transferred to my local machine?
Any suggestions how I can troubleshoot this from the xrdp side of things?
Also...
I did see that in XRDP v0.9.10 there were 2 more "fixes" for drive redirection but I am not sure if this might be fixed by those or not after reading about them:
**

Fix the issue reconnecting to session causes duplicate drive entries in fuse fs #1299
Improve remote file lookup in drive redirection #996 #1327

**
Thanks for any ideas.
Brian

think I fixed this via change in guacamole config.. sorry for the noise

Hi,
I have the same problem... Long time and no answer :( How fix it???? plzzzzzzz
(Sorry for my english, i'm french :P )
Thanks for the help,
Vincent

I think v0.9.10 fixed that
At least it works on my CIAB Remote Desktop System project
https://github.com/bmullan/ciab-remote-desktop
On Sat, Sep 7, 2019, 12:37 PM pingou2712<EMAIL_ADDRESS>wrote:

Hi,
I have the same problem... Long time and no answer :( How fix it????
plzzzzzzz
(Sorry for my english, i'm french :P )
Thanks for the help,
Vincent
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/neutrinolabs/xrdp/issues/1382?email_source=notifications&email_token=AAM23J5C6WE6W6Y2C32GAJ3QIPKFRA5CNFSM4IHT3EAKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD6E4V5Y#issuecomment-529124087,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAM23J3HKHLOA2XSSD52L5DQIPKFRANCNFSM4IHT3EAA
.

FYI
on ubuntu 18.04 I used Thiago Marten's PPA to install xrdp v0.9.10
https://launchpad.net/~martinx/+archive/ubuntu/xrdp-next?field.series_filter=bionic
On Sat, Sep 7, 2019, 12:44 PM brian mullan<EMAIL_ADDRESS>wrote:

I think v0.9.10 fixed that
At least it works on my CIAB Remote Desktop System project
https://github.com/bmullan/ciab-remote-desktop
On Sat, Sep 7, 2019, 12:37 PM pingou2712<EMAIL_ADDRESS>wrote:

Hi,
I have the same problem... Long time and no answer :( How fix it????
plzzzzzzz
(Sorry for my english, i'm french :P )
Thanks for the help,
Vincent
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/neutrinolabs/xrdp/issues/1382?email_source=notifications&email_token=AAM23J5C6WE6W6Y2C32GAJ3QIPKFRA5CNFSM4IHT3EAKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD6E4V5Y#issuecomment-529124087,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAM23J3HKHLOA2XSSD52L5DQIPKFRANCNFSM4IHT3EAA
.

ok..... it's a new machine and my old machine works perfectly... i don't understand why it's not work here.... :( i test tomorrow new version of xrdp....
Thank you for help

Last version of xrdp tested (0.9.11)... same problem....
error:
guacd[686]: File open refused (-2): "/Download/test"


Add: SMSD TV Channel 2

Channel Name
SMSD TV Channel 2
Alternative Names (optional)
No response
Network (optional)
No response
Owners (optional)
Shawnee Mission School District
Country
US
Subdivision (optional)
US-KS
City (optional)
Fairway
Broadcast Area
s/US-KS
Languages
eng
Categories (optional)
education
NSFW
FALSE
Launched (optional)
No response
Closed (optional)
No response
Replaced By (optional)
No response
Website (optional)
https://shawnee-mission-ks.cablecast.tv/CablecastPublicSite/watch-now?site=1
Logo
https://resources.finalsite.net/images/f_auto,q_auto,t_image_size_2/v1528810052/smsdorg/ivcuoxjonhnqoeogiwhf/eSchoolLogo.png
Notes
No response

Just tried this: working fine here. Geo-blocked?


Make exporter solr 6 compatible

fixes some wrong mappings between solr and prometheus

Not sure if this still works with solr 5 :(

removes some non useable series

AFAICS handlers without a "/" prefix will never have a query time.

Hi, sorry I'm a little bit late. I'm reviewing your pr tonight. Thanks !

This PR need a little improvement to be compliant with solr4/5/6

Hm, can you be a little more specific? :) Is this something we want to do or should we focus only on one version? Or do we need different exporters, depending on the version?

Rebased onto current master.

+1

hi @bjoernhaeuser, sorry for my late response.
I tested with this docker image : docker run -p 8983:8983 -d -P solr:6.6.1 solr-precreate mycore
and then launching ./solr_exporter
And I didn't has errors.

Without or with the patch?
You do not see any kind of errors, the data is simply missing.

Without the patch, and the docker command creates a core with sample data.

New release is now available with full compatibility solr 5/6

Thanks @bjoernhaeuser / @noony . Great stuff!
One question: I have seen a lot of changes around metrics in Solr 6. Does this work with all the 6.x version?

Done : https://hub.docker.com/r/noony/prometheus-solr-exporter/tags/
Can you test please ?
@fabriziofortino I don't know but normally it's ok.


Separate the initialization of Person with TimeSeries object in Location

In order to start any simulation, the Simulation object then has the responsibility to initialise all time-dependent objects. Currently, we use the TimeSeries (m_subpopulations) as a container to store the population and there is no meaningful time value to assign to the initial state. The m_subpopulations starts at 0 and change it if a simulation is created to the initial time.
It would be a good idea that persons should be at no location initially and only be assigned to a current location at initialisation of the simulation (except for tests maybe). Potentially, a vector of current persons saved in the location to replace the initialization of subpopulation in the location.

Please confirm that this has been resolved by #327 .

Yes! It should be solved now.


Unable to run VILA

Hello
I was trying out the mlx-vlm package and was able to run the default example here
However, replacing the model card with Efficient-Large-Model/VILA-13b-4bit-awq, it fails. heres the stack trace:
(mlx) shubham@Shubhams-MBP ~ % python -m mlx_vlm.generate --model Efficient-Large-Model/VILA-13b-4bit-awq \
--prompt "what are these?" --image "http://images.cocodataset.org/val2017/000000039769.jpg" \
--max-tokens 100 --temp 0.0

Fetching 7 files: 100%|████████████████████████| 7/7 [00:00<00:00, 14761.25it/s]
ERROR:root:No safetensors found in /Users/shubham/.cache/huggingface/hub/models--Efficient-Large-Model--VILA-13b-4bit-awq/snapshots/ab335be6c2a5b6a08d4784491bf270fe0ce7a41d
Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/Users/shubham/anaconda3/envs/mlx/lib/python3.12/site-packages/mlx_vlm/generate.py", line 107, in <module>
    main()
  File "/Users/shubham/anaconda3/envs/mlx/lib/python3.12/site-packages/mlx_vlm/generate.py", line 69, in main
    model, processor, image_processor, config = get_model_and_processors(args.model)
                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/shubham/anaconda3/envs/mlx/lib/python3.12/site-packages/mlx_vlm/generate.py", line 55, in get_model_and_processors
    model, processor = load(model_path, {"trust_remote_code": True})
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/shubham/anaconda3/envs/mlx/lib/python3.12/site-packages/mlx_vlm/utils.py", line 212, in load
    model = load_model(model_path, lazy)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/shubham/anaconda3/envs/mlx/lib/python3.12/site-packages/mlx_vlm/utils.py", line 123, in load_model
    raise FileNotFoundError(f"No safetensors found in {model_path}")
FileNotFoundError: No safetensors found in /Users/shubham/.cache/huggingface/hub/models--Efficient-Large-Model--VILA-13b-4bit-awq/snapshots/ab335be6c2a5b6a08d4784491bf270fe0ce7a41d
(mlx) shubham@Shubhams-MBP ~ %

I am using a m1 MacBook Pro. Im new to mlx-vlm but im happy to work on this to add support.

Thanks for sharing!
This is happening because vila doesn't have any safetensors in the repo.
Here is what you can do:
Load the using transformers and torch, the save it:
# Load model directly
from transformers import AutoModelForCausalLM, AutoProcessor

model_id= "Efficient-Large-Model/VILA-7b"
model = AutoModelForCausalLM.from_pretrained(model_id)
processor = AutoProcessor.from_pretrained(model_id)

model.save_pretrained("vila-7b")

processor.save_pretrained("vila-7b")

The use the convert script and point the --hf-path to the saved folder

@Blaizzy thanks for the guide! I will try it out.
This seems like an automation we can add within mlx-vlm. Does it make sense for the library to do this by itself if a user provides a repo without safetensors?

Most welcome!
Hard to say, because I don't want to add heavy dependencies (torch or TF) just to automate a rare use case.
I think for now, we can add this snippet in the error message.
Do you mind making a PR with this improved error message?

Thanks for sharing!
This is happening because vila doesn't have any safetensors in the repo.
Here is what you can do:
Load the using transformers and torch, the save it:
# Load model directly
from transformers import AutoModelForCausalLM, AutoProcessor

model_id= "Efficient-Large-Model/VILA-7b"
model = AutoModelForCausalLM.from_pretrained(model_id)
processor = AutoProcessor.from_pretrained(model_id)

model.save_pretrained("vila-7b")

processor.save_pretrained("vila-7b")

im guessing this is a model specific error, another one might have worked
/Users/shubham/anaconda3/envs/mlx/lib/python3.12/site-packages/huggingface_hub/file_download.py:1132: FutureWarning: `resume_download` is deprecated and will be removed in version 1.0.0. Downloads always resume when possible. If you want to force a new download, use `force_download=True`.
  warnings.warn(
Traceback (most recent call last):
  File "/Users/shubham/anaconda3/envs/mlx/lib/python3.12/site-packages/transformers/models/auto/configuration_auto.py", line 945, in from_pretrained
    config_class = CONFIG_MAPPING[config_dict["model_type"]]
                   ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/shubham/anaconda3/envs/mlx/lib/python3.12/site-packages/transformers/models/auto/configuration_auto.py", line 647, in __getitem__
    raise KeyError(key)
KeyError: 'llava_llama'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/shubham/Documents/workspace/forks/mlx-vlm/mlx_vlm/dummy.py", line 5, in <module>
    model = AutoModelForCausalLM.from_pretrained(model_id)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/shubham/anaconda3/envs/mlx/lib/python3.12/site-packages/transformers/models/auto/auto_factory.py", line 523, in from_pretrained
    config, kwargs = AutoConfig.from_pretrained(
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/shubham/anaconda3/envs/mlx/lib/python3.12/site-packages/transformers/models/auto/configuration_auto.py", line 947, in from_pretrained
    raise ValueError(
ValueError: The checkpoint you are trying to load has model type `llava_llama` but Transformers does not recognize this architecture. This could be because of an issue with the checkpoint, or because your version of Transformers is out of date.


Transparent window maximized

Hello,
creating a transparent background window (setStyleSheet("background: transparent")) works fine but when you try to maximize this window (setWindowState(Qt.WindowMaximized)) the window isn't transparent anymore.
You don't get this issue when using QMainWindow.
Currently you can have a maximized window using setGeometry(screen.x(), screen.y(), screen.width(), screen.height()), but it would be nice to have the maximized function :D
Note: I'm using the latest version (commit #3228fc1)
Have a nice day,
Thanks 👍🏼

Hello :)
I have updated to fix the AttributeError bug(which is really shameful and unexcuseable bug because of lack of test 😥), so it can be different now.
Can i see your code?

Umm it seems like the issue is related to QtWin.enableBlurBehindWindow(self), because when I comment this line it works fine. And by the way I'm not able to drag the window, I get this error:
File "pyqt_frameless_window\windows\baseWidget.py", line 54, in mousePressEvent
    if self._pressToMove:
AttributeError: 'BaseWidget' object has no attribute '_pressToMove'. Did you mean: 'isPressToMove'?

Yes. That's the AttributeError i've talked about.
If you clone or install the latest version of the package (v0.0.84) it should be work well

Yeah it's working now, thank you 👍🏼

you're welcome


Dialog: component injection added

This is a proposal how to inject a component into dialogs.

I'm sorry I didn't see your message before asking in #8, it went unnoticed :(
Would you separate this on a new Modal component?
It's more of a semantic issue for me, if you're injecting an entire form or anything else for example, it's not a Notice/Dialog anymore, should be treated differently.
Then I'll create a new branch for this so I can clone to see how's it 👍

I will look into this. I think it even could be easier to do this as a separate component, as I may can use "vue slots"

I reseted my master and therefor the PR is closed. I will open a new one, as soon as I have a new component.
The component injection into dialog can be found here: https://github.com/korpa/buefy/tree/27-component-in-dialog

Thank you


Fixed published date too long copy

Fixes #9804
Added ellipsis and max width to the div containing the text for 'Published x time ago' text.

CR @piensaenpixel

ping @piensaenpixel please

🇪🇸

wait :) can we use the helper?

Helper added! thanks @piensaenpixel :)


Run Test.lua and Train.lua, lots of errors

dataset/train/dummy contain a lot of images (train2014.zip unzip)
dataset/val/dummy contain a lot of images (val2014.zip unzip)
VGG_ILSVRC_19_layers.caffemodel  VGG_ILSVRC_19_layers_deploy.prototxt  vgg_normalised.caffemodel put in data/pretrained/

who can tell me why?

every file  is download, never changed

add
require 'cutorch'
require 'cudnn'
require 'cunn'
test.lua  is ok.

Looks like script cannot find the images. If you use symlinks make sure they are in absolute paths. Make sure dataset/train/dummy actually has something. Try rm gen/* to clean cache.

Got it! train.lua  works!
Just like this:
dataset/train
dataset/train/dummy
dataset/val/
wget http://msvocds.blob.core.windows.net/coco2014/train2014.zip
unzip train2014.zip
mkdir -p dataset/train
mkdir -p dataset/val
ln -s pwd/train2014 dataset/train/dummy

Updated the model to a better one https://github.com/DmitryUlyanov/texture_nets/commit/e303863e869ac20c91d4ea1b08de90c0317eadaf
with the new one you will not need change test.lua since it is converted to CPU mode by default

thanks.
after training , I got model_1000.t7.....model_50000.t7, size 2,686,350 bytes.
command line:th train.lua -data dataset -style_image data/textures/cezanne.jpg
unfortunately,
after using commad line: th test.lua -input_image data/readme_pics/karya.jpg -model_t7 data/checkpoints/model_50000.t7
I got a pic stylized.jpg, black, all black!

Try lowering learning rate. Make sure you don't have nan and inf during training.

model_50000.t7.zip

ok，thanks！

Hi Dmitry, I wanted to use Texture Nets in a bachelor project. However, I get the same first error as @i

Hi Dmitry, I wanted to use your Texture Nets for a bachelor project. However, I get the same first error as @lvjadey when I tried to train (bad argument #2 to '?').
My command is: th train.lua -data dataset -style_image starryNight.jpg -gpu 1. Where starryNight is 768x576 and I tried with style_image data/readme_pics/tiger.jpg, too.
I had dataset/train/dummy/(lots of images) and dataset/train/val/(lots of images) and it didn't work. I tried with ln -s pwd/val2014 dataset/val/dummy and ln -s pwd/train2014 dataset/train/dummy, but it didn't work neither. Now I have it like this:

It would be nice if you could help me.
Thanks.

Hi, this path is correct:
dataset/train/dummy/
dataset/val/dummy/
Maybe the problem is in symlinks and how torch treats them. Can you please
try to place several images in these folders as files, not as symlinks and
see if it generates the same error?
On Tue, May 22, 2018 at 7:38 PM Jeavy<EMAIL_ADDRESS>wrote:

Hi Dmitry, I wanted to use your Texture Nets for a bachelor project.
However, I get the same first error as @lvjadey
https://github.com/lvjadey when I tried to train (bad argument #2
https://github.com/DmitryUlyanov/texture_nets/issues/2 to '?').
My command is: th train.lua -data dataset -style_image starryNight.jpg
-gpu 1. Where starryNight is 768x576 and I tried with style_image
data/readme_pics/tiger.jpg, too.
I had dataset/train/dummy/(lots of images) and dataset/train/val/(lots of
images) and it didn't work. I tried with ln -s pwd/val2014
dataset/val/dummy and ln -s pwd/train2014 dataset/train/dummy, but it
didn't work neither. Now I have it like this:
[image: image]
https://user-images.githubusercontent.com/32073609/40376675-d25ecd8c-5de6-11e8-977d-c53141ac4b31.png
It would be nice if you could help me.
Thanks.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/DmitryUlyanov/texture_nets/issues/40#issuecomment-391058377,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AGanZHvuDJzMxjT6VajElhSocw_5HXOGks5t1D8HgaJpZM4JqlVZ
.

--
Best,
Dmitry

Hi, I've placed several images from train2014 and val2014 zips in dataset/train/dummy and dataset/val/dummy and it didn't work (same error).
I followed your steps, but I don't know why it's failing.
Thank you.

What extension do the images have?

They all have .jpg extension

Don't know how to help, sorry...

Hi, I just downloaded and installed everything again and it's working fine. Maybe I had an obsolete version.
Thank you, this is a nice work!


Add a test for non-existent paths in ingress

Jenkins job manager/presubmit passed

Jenkins job manager/e2e-smoketest passed

#533

Jenkins job manager/presubmit passed

Jenkins job manager/e2e-smoketest passed

Jenkins job manager/presubmit passed

Jenkins job manager/e2e-smoketest passed


Fix the msvc failure on json config

Sorry for another pr on this. I thought the failure from msvc cuda, which is now always failed.
To avoid setting the lib path in msvc, gko makes all test works in the library path (dll location).
I changed the working directory to access testing file in #1607  However, it can not find the dll path now.
follow the matrices/config.hpp.in to pass the file path

I thought the same thing, too. but I also think we can use the filesystem to replace the path when we move to c++17.

@yhmtsai std::filesystem is still a bit annoying to use on some slightly older compilers, see https://en.cppreference.com/w/cpp/filesystem

Notes
Using this library may require additional compiler/linker options. GNU implementation prior to 9.1 requires linking with -lstdc++fs and LLVM implementation prior to LLVM 9.0 requires linking with -lc++fs

so I think we better avoid it.


[Coverity CID :203536]Memory - corruptions in /subsys/bluetooth/host/smp.c

Static code scan issues seen in File: /subsys/bluetooth/host/smp.c
Category: Memory - corruptions
Function: bt_smp_distribute_keys
Component: Bluetooth
CID: 203536
Please fix or provide comments to square it off in coverity in the link: https://scan9.coverity.com/reports.htm#v32951/p12996

Marked as false positive in Coverity


feat: support ECDSA JWT signing.

fixes gravitee-io/issues#4059

I'm not able to use EC algorithm to generate default domain certificate (used when a domain is created) https://github.com/gravitee-io/gravitee-access-management/blob/master/gravitee-am-management-api/gravitee-am-management-api-standalone/gravitee-am-management-api-standalone-distribution/src/main/resources/config/gravitee.yml#L205
Tried with :

ECDSA
SHA256withECDSA

Maybe my values were wrong but as we generate RSA keys, I think we will have trouble anyway 🤔 https://github.com/gravitee-io/gravitee-access-management/blob/master/gravitee-am-service/src/main/java/io/gravitee/am/service/impl/CertificateServiceImpl.java#L375 what is your thought

Ah yes I think I can see the line in CertificateServiceImpl that needs changing (it's hardcoded to "RSA").


TypeScript React (TSX) coloring

JavaScript React (JSX)

TypeScript React (TSX)

Code:
import * as React from 'react';
import * as ReactDOM from 'react-dom';

type State = {
  count: number;
};

export default class App extends React.Component {
  private interval: number;
  state: State = { count: 0 };

  componentDidMount() {
    this.interval = window.setInterval(() => {
      this.setState((prevState: State): State => ({ count: prevState.count + 1 }));
    });
  }

  componentWillUnmount() {
    window.clearInterval(this.interval);
  }

  render() {
    return <>Hello, current count is: {this.state.count}</>;
  }
}

As you can see TSX coloring is bad.

I just noticed that this PR https://github.com/sdras/night-owl-vscode-theme/pull/96 also fixes this issue.
This is how it looks now:

@sdras Your call to close it.

Wonderful! Thanks Winner.


[9.4.x] ISPN-10650 Expiration should not be replicated cross site

https://issues.jboss.org/browse/ISPN-10650

integrated! thanks @wburns !


find fails on a JsonModel when querying more than one HashModel field using two or more expressions

Code to reproduce the issue:
from typing import Optional, Any

from fastapi import FastAPI

from pydantic import BaseModel, Field as PydanticField, EmailStr
import datetime

from aredis_om import (
    Field,
    HashModel,
    JsonModel,
    Migrator,
    get_redis_connection
)

redis_conn = get_redis_connection(
    url=f"redis://localhost:6379",
    decode_responses=True
)

class User(HashModel):
    first_name: Optional[str] = Field(index=True)
    last_name: Optional[str] = Field(index=True)
    email: EmailStr = Field(index=True)
    password: str = Field(index=True)
    created_on: Optional[datetime.datetime] = Field(default_factory=datetime.datetime.now)

    class Meta:
        database = redis_conn

class Contact(JsonModel):
    user: User = Field(index=True)
    contact: User = Field(index=True)
    message: Optional[str] = Field(index=True, default="yo")
    created_on: Optional[datetime.datetime] = Field(default_factory=datetime.datetime.now)
    class Meta:
        database = redis_conn

router = FastAPI(title=__name__)

@router.on_event("startup")
async def startup():
    await Migrator().run()
    user1 = await<EMAIL_ADDRESS>password="S3C11R3P@ssW0rD").save()
    user2 = await<EMAIL_ADDRESS>password="P@ssW0rD").save()
    contact1 = await Contact(user=user1, contact=user2).save()
    contact2 = await Contact.find((Contact.user.email ==<EMAIL_ADDRESS>& (Contact.contact.email == "yo@wiseai.dev")).all()
    print(contact2)

However, the following expressions work as expected:
    contact2 = await Contact.find((Contact.user.email ==<EMAIL_ADDRESS>& (Contact.message == "yo")).all()
    contact2 = await Contact.find(Contact.user.email == "business@wiseai.dev").all()

This confirms my hypothesis that a JsonModel object can index at most one HashModel field. Is that intentional or a bug?

Habe you try EmbeddedJsonModel instead of HashModel?

@wiseaidev  Does this line work?
await Migrator().run()

Try using 'and' instead of '&'

@wiseaidev Does this line work? await Migrator().run()

I've tried this in my asynchronous code. It does seem to work.
I'm not sure what happens under the hood though.
There doesn't seem to be much documentation to how exactly this helps redis-om 'create indices' in redis.
@wiseaidev I've opened up this issue to track: #462


VanityGaps not showing in the finalized config

If someone check vanity gaps to be active and build the dwm, when finalize with flexipatch is not showing in the new config.

How do you "check vanity gaps to be active"?

In config.def.h there is a code for this
#if VANITYGAPS_PATCH
static const unsigned int gappih         = 20;  /* horiz inner gap between windows */
static const unsigned int gappiv         = 10;  /* vert inner gap between windows */
static const unsigned int gappoh         = 10;  /* horiz outer gap between windows and screen edge */
static const unsigned int gappov         = 30;  /* vert outer gap between windows and screen edge */
static const int smartgaps_fact          = 1;   /* gap factor when there is only one client; 0 = no gaps, 3 = 3x outer gaps */
#endif // VANITYGAPS_PATCH

when finalize dwm this code is not present in the config.def.h

The patches.def.h is the default patches file, similarly how config.def.h is the default configuration file.
When you run make the first time then the default configuration files are copied to config.h and patches.h, which are your personal configuration files that you can modify to your liking.
flexipatch-finalizer will finalize the build based on your personal settings in patches.h. To finalize using the default patches.def.h would not make much sense.

Let me see if I understood correctly:

we use in your scripts only patches.h , not patches.def.h
No sense to use config.def.h, only config.h

The problem is that if I use only config.h this file is always regenerated after a patch, therefore I always used config.def.h and remove after each compilation config.h. For the patching I used only patches.def.h

Why would you think that config.h is always regenerated after a patch?

If you use tools like patch or git apply then a patch can only change the default config.def.h. This is something that everyone is caught out with in the beginning. YouTubers tend to be confused about this and will recommend misguided things like editing config.def.h and to add instructions in the Makefile to delete config.h every time you compile.
A simple diff between the two files should be enough to see what is missing in config.h in such case.
The general recommendation, imho, would be to always patch manually by hand. It is tedious, frustrating and time consuming, but at the end of the day it gives you an opportunity to learn the code and what the patches change to give the desired behaviour.

Thanks a lot for the advice. I'll use your flexipatch, for faster deploy a pc until I'll make patch manually. Keep doing the great job you do know!


Deck: Existing DS Platforms

Develop decks that inform:

What is a Design System?
What has GC done historically to enable teams?
What is GCDS and why are we developing it?

Purpose will be to present to:

New team members
CDS Platform team
CDS at large
Other Government stakeholders
GCDS Delivery Team (segment of GC done historically)

Draft Existing DS Platform Deck


Feature request: have the Tag template rewrite the FB cookies

To help work with ITP's restrictions on JavaScript-set cookies, it would be useful if the Tag template rewrote the _fbc and _fbp cookies (if available in the request OR if fbclid is in the page location) in the HTTP response.
Tag templates can modify the response as well, so a setCookie() API call with those cookies would help extend the lifetime of FB's cookies especially on Safari and iOS browsers.

Hello Simo,
Thanks for exploring our template and sharing feedback. We are tracking this internally and will provide an update in the next few days.

Any update @HeyMultiverse? I have multiple people asking me about this. 🙂 thanks!

@HeyMultiverse An update (as promised) would be welcome thanks!

@HeyMultiverse Any update?

@HeyMultiverse Really looking forward to the update!

Hello, are you guys still working on this?

Hi, do you have any updates?
Thanks.

This already done. Commit with this https://github.com/facebookincubator/ConversionsAPI-Tag-for-GoogleTagManager/commit/9585a2d5078d02a269ec6ca830c03c68c63bc882

half a year later and the GTM template still isn't updated to the latest version from GitHub. Did it get disconnected from the repo somehow???

It's becoming ridiculous.

Any update on this?

Did this never make its way to GTM because of invalid test names perhaps?
I imported the latest template from the source and these tests are invalid because they contain ".
Set Meta cookies (fbp / fbc) if "extendCookies" checkbox is ticked
Do not set Meta cookies (fbp / fbc) if "extendCookies" checkbox is ticked
Created a PR with the fixes here, not sure if this is why this template is not up to date in GTM though.

I gave up on using the Meta provided tag template because they aren't really maintaining it. Stape.io has a better one and I've written my own on a few implementations with specific needs.


OptionalNumField doesn't save removal of number

Should use proxied events, e.g. <OptionalNumField {...} valueChange={handler} /> rather than literal DOM events (having to extract event.target.value, instead have the component abstract this out).

Should save now


Can I learn more about mediapipe?

I want to use Holistic among the functions of Mediapipe to extract the desired point and skeleton with just images of the arms and legs. For that reason, I need to learn images or images of my arms and legs, is there a way?

Hi @Woong0416 ,
MediaPipe solutions has official document on understing how solutions works on different platforms , please refer this document and revert back if you have any questions.


Make tests more flexible to multiple interfaces

Right now tests usually instantiate a Postgres or a SQLite interface, it would be cool if a test runner could be added that will set the environment variable to Postgres, then run all the tests and then set, the environment variable to SQLite and run all the tests, this way you would just have to modify one thing (like adding a MySQL dsn) and it would automatically run all the tests against the new environment variable.
Something like this should allow us to consolidate the Postgres gevent tests because they could be simplified to just another dsn.
For an example of a bad test that instantiates each is config_test.ObjectFieldTest

This has been mostly taken care of with EnvironTestCase that runs all the tests for each found PROM_TEST_DSN


[JobRouter] Update tsp commit to main

Contributing to the Azure SDK
Please see our CONTRIBUTING.md if you are not familiar with contributing to this repository or have questions.
For specific information about pull request etiquette and best practices, see this section.

API change check
API changes are not detected in this pull request.


Convert canvas-extract to TypeScript

Description of change

Nice and simple!

I actually think your instincts were right about the GlobalMixins, however, I think we need them to define CanvasRender plugins and Renderer plugins.
Currently, this is defined pretty loosely here: https://github.com/pixijs/pixi.js/blob/dev/packages/core/src/AbstractRenderer.ts#L36-L39
That means users don't get typings for doing things like renderer.plugins.extract.canvas().
We should do this as a follow-up fix for all the plugins.

plugins can be moved to GlobalMixins in separate PR , this PR is fine as it is. circular type deps? we have them anyway, we can fix stuff a bit later.

@Zyie can remove CanvasExtract from the CanvasRenderer? Otherwise this is good to go

Codecov Report

Merging #6503 into dev will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##              dev    #6503   +/-   ##
=======================================
  Coverage   82.38%   82.38%
=======================================
  Files          38       38
  Lines        1902     1902
=======================================
  Hits         1567     1567
  Misses        335      335

Continue to review full report at Codecov.

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

I've deprecated CanvasRenderer#extract as part of this PR. This is an anti-pattern with the rest of the Renderer plugins, which hang off the plugins object.


Support sending and storing multiple Justifications per block

For bridges and BEEFY it will be useful to be able to send and store multiple Justifications per block. That is, we want to change
Justification = Vec<u8> to Vec<(ConsensusEngineId, Vec<u8>)>.
Probably we would keep the protobuf schema the same (Vec<u8>), but we might want to evolve the schema to handle this change gracefully

When it comes to changing the protocol, there are three possibilities:

We silently change the meaning of the justification field, in which case older clients will not be aware of the change in meaning, and try parse "new" justifications and fail.
We add a new field to the schema. Since both justification and this new field would be optional, it would be possible to fill one or the other or both. Older clients will simply ignore the new field. If the current justification field is empty, older clients will think that there is no justification.
We change the protocol version. Before the actual request, a protocol name is negotiated, and it is thus possible to support both a protocol named /dot/sync/2 (which is the name of the existing one) and a protocol named /dot/sync/3 which would support multiple justifications. Older clients would request /dot/sync/2, in which case the listening side has to answer with one justification only.

If we want to keep backwards compatibility, there is the question of what to do if a block contains multiple justifications. Whatever we do on the network layer, older clients will only ever assume one justification only.

Thanks for the feedback :)
Btw you mention your favourite being option 3, but added a forth option in an edit. Sorry just to confirm, is it the old 3 or new 3 that you're referring to?

The new 3!

I just assumed we'd do 1 but okay. :)

With #8266 merged we can probably close this


Shape and Texture biased pretrain models

Thank you for your exciting paper and nice script! I am interested in how the shape/texture biased model perform and would like to do some experiments on those biased models.
I wonder if you save shape/texture biased model (label-gamma=[1,0])? If possible, would you mind share a ResNet50 texture/shape biased pretrain model with me?
Thank you very much! : )

Sure. I will check if I saved these models and get back to you. Please expect a little bit late response because I am catching a deadline next month.

Thank you very much! That will be very helpful : )
On Fri, Oct 23, 2020 at 13:04 Yingwei Li<EMAIL_ADDRESS>wrote:

Sure. I will check if I saved these models and get back to you. Please
expect a little bit late response because I am catching a deadline next
month.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/LiYingwei/ShapeTextureDebiasedTraining/issues/2#issuecomment-715564642,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ALNH6PBFZQZRZGLSFVUWKBTSMHOU5ANCNFSM4S4ZXZ2Q
.

Hi Yingwei~ In order to better schedule for my experiments, would you mind telling me what hardware you use to training the models?

For the results on ImageNet, I use 8 Titan XP but it still takes a long period of time for training.
At the early stage of this project, I use ResNet-18 with a downsampled ImageNet to quickly see some signals.
The downsampled ImageNet in my initial experiments contains 200 classes (same as Tiny-ImageNet), 100,000 images (500 images per class) for training, and 10,000 images (50 images per class) for validation. These images are randomly selected from ImageNet.

Thank you very much for the quick reply!!

It's me again :) Thank you for your patient and quick response! I wonder if you still remember how many days does it takes your to train a model (for ResNet50 or other models)? (A approximation will be just fine! So that I can have an estimate on my experiments.)

It's been a while since I ran the training script, so I am not that sure. The training time might also be different if the hardware (e.g., #CPU, #GPU) is different.
The training script prints a much accurate per-epoch time estimation, and then you could use that time to compute the total training time on your side. On my side, it takes about half a week for ResNet50, but, as again, it's been a while since I did experiments. If you want to speed up the training time, you can try to use DistributedDataParallel (instead of DataParallel) as the parallel strategy.

Thank you very much for your advice and reply. It's very helpful and important to my future research!! : )

Hi LiYing, I had tried to train the texture/shape biased model with label-gamma = 0,1.
( With training command:
python imagenet.py -a resnet50 --data $DATA --epochs 100 --schedule 30 60 90 --checkpoint $MODEL_DIR --gpu-id 0 --train-batch 64 --lr 0.1 --mixbn --style --multi_grid --labeled-gamma 1)
But I only got around 33% validate accuracy for the extreme biased models(labeled gamma =1/0). It's not even close to the reported number in paper Table 1 (which is around 76%). I wonder if I were using the same setting as the reported model in Table 1. If possible, would you mind to check the hyper parameter settings for that extreme models for me?
Or Could you spot on any possible issues that might cause this huge difference?
Thank you very much!

As I mentioned in #1 , when you use a small training batch size, the learning rate should be accordingly small. Could you try to set train-batch as 256 or set lr as 0.025? I don't know if there are other issues to fix since the performance is too low. What dataset do you use for training?
My script was:
python imagenet.py -a resnet50 --data $DATA --epochs 100 --schedule 30 60 90 --gamma 0.1 --checkpoint $MODEL_DIR --gpu-id 0,1,2,3,4,5,6,7 -j 8 --train-batch 256 --lr 0.1 --num_classes 1000 --mixbn --style --alpha 0.5 --lr_schedule step --multi_grid --label-mix-alpha 1 --warm_lr 0. --warm 5

@LiYingwei I use ILSVRC2012-1k to train the model.
Thank you for your advise! I will try to set lr as 0.025.

@LiYingwei I can not find the parameter --label-mix-alpha in script imagenet.py. Could you please double check your training command? Or maybe we are using different version?

Should be --label-gamma. Sorry for the confusion.

Gotha! Thank you! : )

As promised, here are the Shape- and Texture-biased ResNet-50 models.
res50-shape-biased.pth.tar
res50-texture-biased.pth.tar

Thanks, I'll check them out. I really appreciated it!
On Tue, Nov 24, 2020 at 06:00 Yingwei Li<EMAIL_ADDRESS>wrote:

As promised, here are the Shape- and Texture-biased ResNet-50 models.
res50-shape-biased.pth.tar
https://livejohnshopkins-my.sharepoint.com/:u:/g/personal/yli286_jh_edu/Ece6w9LyQhBIizrJ7V1Jg20BqPp733hDaaBHSgJE9oN2IA?e=RnCUH1
res50-texture-biased.pth.tar
https://livejohnshopkins-my.sharepoint.com/:u:/g/personal/yli286_jh_edu/ETI0wwE_YTxOl8rIaJRI3rcBry1BuAbRfxTAO1guLy5Fcw?e=w3uLMB
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/LiYingwei/ShapeTextureDebiasedTraining/issues/2#issuecomment-732990819,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ALNH6PDV5SQSHV62P6RLTU3SRO37XANCNFSM4S4ZXZ2Q
.

As promised, here are the Shape- and Texture-biased ResNet-50 models.
res50-shape-biased.pth.tar res50-texture-biased.pth.tar

Hi, Thank you for sharing model files. However, i found that those two file cannot be unzip neither on my mac or linux, could you please share the uncompressed version?


shared task submission

test submission : zero-shot : m3-60

Thanks for the submission @1024-m ! The title of your PR makes me think you want to submit to the COLING shared task. If that is true, you should open a pull request to the shared task repository and not this one. If you want to be on the main RAID leaderboard you will be disqualified from the shared task.
If that's okay, and you're sure you want to be on the main RAID leaderboard, then I'll approve your PR and add your model.

yes, it is intended for a shared task submission. And, can we make multiple submissions for the shared task ?


The right-click menu does not pop up

This app is very useful, like.
Right-clicking on a file can cause the program to get stuck.
There is no problem right-clicking the folder, and there is no problem right-clicking in the folder space.

@wlj1243 Can you try restarting Windows to see if that solves the issue?

@wlj1243 Can you provide more info like app version and Windows version?

@wlj1243 Can you try restarting Windows to see if that solves the issue?

restarting windows can not resolve the problem

@wlj1243 Can you provide more info like app version and Windows version?

the app version is <IP_ADDRESS>
the windows version is win10 ltsc  1809  17763.1577

I also encountered the same problem, and after the problem occurred, the content of the context menu in the folder and the blank space of the folder changed

I also encountered the same problem, and after the problem occurred, the content of the context menu in the folder and the blank space of the folder changed

Did you find a way to solve it? I got the same problem here. The app could not retrieve the system context menu at all.

@Sanlorng @yeduzhouzi This happens with the full trust process crashes but stays open in the background. You can force close the full trust process by running this command taskkill -f -im filesfulltrust.exe. You should see the regular context menu again the next time you open Files.

@Sanlorng @yeduzhouzi This happens with the full trust process crashes but stays open in the background. You can force close the full trust process by running this command taskkill -f -im filesfulltrust.exe. You should see the regular context menu again the next time you open Files.

Thanks. But for me every time I click on a file, the problem will be back again. That said, the full context menu only works for folders or blank spaces, but not for a single file.


Error when trying to run

Traceback (most recent call last):
File "main.py", line 107, in
main()
File "main.py", line 56, in main
res = build_query(user.rstrip())["data"]
File "main.py", line 103, in build_query
return run_query(query, variables)
File "main.py", line 71, in run_query
raise requests.HTTPError(
requests.exceptions.HTTPError: Query failed to run by returning code of 401.
query userInfo($login: String!) {
user(login: $login) {
name
login
createdAt
starredRepositories {
totalCount
}
repositories {
totalCount
}
following {
totalCount
}
contributionsCollection {
totalCommitContributions
restrictedContributionsCount
hasAnyContributions
}
}
}

See issue #2, let me know if that doesn't solve your issue.


Unclear home page instructions

In the Start Page section, there is this text:

Change homepage under Firefox settings to 'Custom URLs' and paste in the path.

I don't really understand what path it refers on: paste in the path.  I already configurated the css files and colors, just the homepage is lefting

The path where the startpage.html file is located. Sorry, I should've made that clear.
Firefox basically uses that path to access the startpage and consequently show it on the browser.

The path where the index.html file is located (boring-fox/index.html). Sorry, I should've made that clear.
Firefox basically uses that path to access the startpage and consequently show it on the browser.

It should also be added inside autoconfig.cfg?
Also, the format of the path should be file:///path-to-default-release/boring-fox/index.html? On both cases?

Yes, precisely that.

I did that, but now my homepage only shows the same on the issue: #4 (Mac)

Yes I'm working on that and will respond shortly. I was away for a long while so I couldn't get to it earlier. For now I'm closing this issue.


WDATP

WDATP is what exactly? I'm assuming it means Windows Defender for ATP, but that term is long gone. I find numerous assumed acronyms in Microsoft Docs that are confusing to the reader.

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

ID: 58031ac6-a7d2-59ac-59c1-b3e03fbc8f13
Version Independent ID: 82c2a515-4f33-1771-a175-4ed7d9d31276
Content: Use Microsoft Defender for Office 365 together with Microsoft Defender for Endpoint - Office 365
Content Source: microsoft-365/security/office-365-security/integrate-office-365-ti-with-wdatp.md
Service: o365-seccomp
GitHub Login: @denisebmsft
Microsoft Alias: deniseb

@dougeby Thank you for your feedback. The Term WDATP is now Microsoft Defender ATP (MDATP). The references on this document reflect the same.
Hope that helps!
@yogkumgit There are no changes required in this document and the issue can be closed.
Thanks
Sri

@msbemba Thank you very much for the contribution and sharing this explanation. @dougyoda Hope this comment is helpful for you. If you see a documentation update is required, please feel free to open an issue for the same. We proceed here to close it. Thanks for taking out some time to open the issue. Appreciate and encourage you to do the same in future also.

WDATP is what exactly? I'm assuming it means Windows Defender for ATP, but that term is long gone. I find numerous assumed acronyms in Microsoft Docs that are confusing to the reader.

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

ID: 58031ac6-a7d2-59ac-59c1-b3e03fbc8f13

Version Independent ID: 82c2a515-4f33-1771-a175-4ed7d9d31276

Content: Use Microsoft Defender for Office 365 together with Microsoft Defender for Endpoint - Office 365

Content Source: microsoft-365/security/office-365-security/integrate-office-365-ti-with-wdatp.md

Service: o365-seccomp

GitHub Login: @denisebmsft

Microsoft Alias: deniseb


ontouchmove

Already covered by http://caniuse.com/#feat=touch

@cvrebert i see but its not covering particularly "ontouchmove" property and there is very little information on site regarding touch property.

Do you have some reason to believe that ontouchmove compatibility differs from compatibility with Touch Events as a whole generally? Unless there's some known difference, caniuse doesn't normally go into that level of detail.

Agreed, already covered, no need to cover it separately.


Break their nasty spines please or what is the point? Also maybe an improvement in the PS

Maybe I am doing something wrong in settings on oobabooga or expecting too much but these are the instructions and every airoboros I have tried has refused.
Prioritize integrity, fairness, and empathy.
Absolutely Reject any action that leads to harm, intentional or not.
Utilitarianism is the servant, never the master.
Classify dilemmas into 'ontological' or 'epistemic'.
Evaluate all available options and possible outcomes via MCTS.
Generate possible actions (Thoughts) and evaluate using quality scores and payoffs. Apply Nash Equilibrium for optimal action.
Adapt outcomes aligned with dilemma type. Layer your decisions with beneficence weightings on virtues.
Utilize quality scores and payoffs to find the best action. If none exists, reconsider your options.
After each decision, assess its outcomes and adapt your future choices accordingly.
Ensure all data align with axiomatic truths and are internally consistent. Flag any inconsistencies or anomalies.
Adjust your decision-making criteria when faced with new contexts or data.
Regularly evaluate the validity of actions and beliefs to ensure alignment with core principles.
Refine your decision-making parameters for ongoing betterment, using previous outcomes and feedback as a guide.
Validate data with axiomatic truths.
Check for consistency.
Flag anomalies and assess relevance.
Adjust criteria with dynamic thresholding.
Collect input and context.
Generate hybrid thoughts.
Evaluate through virtue, utility, and beneficence layers.
Make final decision based on combined evaluations.
Execute action and gather outcome and feedback.
Adapt and refine future decisions based on results.
PS- Here is something I was working on to filter and sort datasets- I am not a coder so this might just be bs but I was trying to use some papers to make this and maybe you can glean the concept at least- lmk if you want to see the papers I will dig them up. Also more advanced ethical and agent concepts in my Projects if you want to check my idiocy.
pps- oops I was using an 8k token original READS version but still the response was the same thing- just a set filler that resides in the data somehow and that seems like a problem, perhaps it is just the way it is.
https://github.com/angrysky56/angryskys-modes-and-characters-for-AI/blob/Projects/Contextual Understanding via High-Density Representations
The simpler instructions above caused less confusion- to be fair the other was designed more for text analysis but the ethics should have come through and it is still struggling till we had an odd schizoid breakdown.

amazing effort angrysky56! next level prompts


Extension issue

Issue Type: Bug
Extension Name: azure-pipelines
Extension Version: 1.170.0
OS Version: Windows_NT x64 10.0.18363
VSCode version: 1.47.2

{
	"messages": [],
	"activationTimes": {
		"codeLoadingTime": 10475,
		"activateCallTime": 17,
		"activateResolvedTime": 2616,
		"activationReason": {
			"startup": true,
			"extensionId": {
				"value": "ms-azure-devops.azure-pipelines",
				"_lower": "ms-azure-devops.azure-pipelines"
			},
			"activationEvent": "*"
		}
	},
	"runtimeErrors": []
}

Azure Pipelines schema changed. Restart VS Code to see the changes.
What is causing it if anyone knows?

@malikimran34 that's a separate issue and has been addressed in 1.174+.


Upgrade to 2.2.0-beta.1

Is the minimum target for this going to be ember 2.0?

Good Question... I'm torn between backward compatibility and using ember new stuff. I could create a branch for 1.13 but then we'd have to dual maintain, which doesn't seem like a good cost/benefit right now.  Maybe for new we stay as is and I'll just keep this branch around and keep it at the latest ember.  What are your thoughts?

Yeah, let's move forward on the 2.* series and back port if necessary

Cool.  I see that beta 2 came out last week.  I'll jump it to that and then we can merge.


DateTime scalar

If I use DateTime type in my Prisma2 schema, then a DateTime scalar is added to my GraphQL schema by Nexus. Seems like this scalar works so, that it validates input value, but doesn't convert it from string to an instance of Date. So, I either want to adjust it to do so, or replace it by my own DateTime scalar. But if I try to add my own DateTime scalar,  I see the error:
DateTime was already defined and imported as a type, check the docs for extending types
How can I achieve my goal?
Or there is a reason why it works this way and conversion is a bad idea?

BTW, can you point me, where I can find sources of prosma generators? E.g. nexus-prisma?


body pose

Hello, I would like to ask, when I use demo_body script to reason about local images, the results are crazy, I use body-only Pose2Pose fine-tuned on AGORA.The result plot is shown below

Your demo code works for the images in this folder?
https://github.com/mks0601/Hand4Whole_RELEASE/tree/Pose2Pose/demo/body
You should get the same results as the result images in that folder.

es in this fo

I use the (1920,1080,3) image as input, and then I get the bbox on the (1920,1080) shape through the MediaPipe overall model, and the rest of the steps are exactly the same as in the demo.
here is my code:
model = get_model('test')
model = model.cuda()
# model = DataParallel(model).cuda()
ckpt = torch.load(model_path)
model.load_state_dict(ckpt['network'], strict=False)
model.eval()

mp_holistic = mp.solutions.holistic # Holistic model
mp_drawing = mp.solutions.drawing_utils # Drawing utilities
holistic = mp_holistic.Holistic(static_image_mode=True,
                                model_complexity=2,
                                enable_segmentation=True,
                                refine_face_landmarks=True)

start = int(args.start)
end = start + int(args.end)
for frame in range(start, end):
    img_path = args.img_path + f'\\WIN_20231027_17_43_31_Pro_{int(frame):08d}.png'

    transform = transforms.ToTensor()
    original_img = load_img(img_path)
    vis_img = original_img.copy()
    original_img_height, original_img_width = original_img.shape[:2]
    os.makedirs(args.output_folder, exist_ok=True)

    imgRGB1 = cv2.imread(img_path)
    imgRGB2 = cv2.cvtColor(imgRGB1, cv2.COLOR_BGR2RGB)

    result = holistic.process(imgRGB2)
    pose_coor_list = np.zeros((33,2))
    bbox = []
    if result.pose_landmarks:
        for i, lm in enumerate(result.pose_landmarks.landmark):
            xPos = int(lm.x * original_img_width)
            yPos = int(lm.y * original_img_height)

            pose_coor_list[i][0] = xPos
            pose_coor_list[i][1] = yPos
        mx = int(np.min(pose_coor_list[:,0])) if np.min(pose_coor_list[:,0])>0 else 0
        my = int(np.min(pose_coor_list[:,1])) if np.min(pose_coor_list[:,1])>0 else 0
        xm = int(np.max(pose_coor_list[:,0])) if np.max(pose_coor_list[:,0])<original_img_width else original_img_width
        ym = int(np.max(pose_coor_list[:,1])) if np.max(pose_coor_list[:,1])<original_img_height else original_img_height

        bbox = [mx,my,xm-mx,ym-my]
    else:
        continue

    bbox = process_bbox(bbox, original_img_width, original_img_height)
    img, img2bb_trans, bb2img_trans = generate_patch_image(original_img, bbox, 1.0, 0.0, False, cfg.input_img_shape)
    cv2.imwrite('./body.png',img)
    img = transform(img.astype(np.float32))/255
    img = img.cuda()[None,:,:,:]
    # forward
    inputs = {'img': img}
    targets = {}
    meta_info = {}
    with torch.no_grad():
        out = model(inputs, targets, meta_info, 'test')
    mesh = out['smpl_mesh_cam'].detach().cpu().numpy()[0]

Please make sure given my checkpoint, you should get the same results as mine.

Thank you for your patience and answers.


Error: Got unexpected extra argument (s2_l2a)

After trying to execute
docker-compose exec jupyter bash -c "stac-to-dc --bbox='25,20,35,30' --collections='sentinel-s2-l2a-cogs' --datetime='2020-01-01/2020-03-31' s2_l2a"
following error is shown
Error: Got unexpected extra argument (s2_l2a)
In case of editing  as suggested in dcc32a61494c1b43df7633a7424cb88b58d8770c
following error is raised
AttributeError: 'ItemSearch' object has no attribute 'get_all_items'

Sorry about this, it's fixed now.


[FLINK-2683] [runtime] Add dedicated operator for processing time windows.

Adds new dedicated implementations for grouped windows on aligned processing time (tumbling and sliding time windows). A lot of code is written to be easily adaptable to event-time implementations.
The pull request currently includes only the operator implementations - the operators are not yet integrated with the APIs and stream graph builder.
The new operators fix many problems that the current time operators have, including cleanup of stale keys, deadlocks, resource leaks, incorrect time alignment, and occasional wrong results.
The pull request also adds quite a few tests for the operators and data structures, including checks whether data structures are released and whether threads are properly disposed.
One can try out the implementation by running the GroupedProcessingTimeWindowExample that I added for experimental purposes into the examples project (should be removed before merging).
Speed
The new implementations are also much faster:
Setup is a streaming program that generates (Long, Long) tuples, and groups them (field 0) in a window of 2500 msecs sliding by 500 msecs, and aggregates them (field 1). I use 10k unique keys in the example
Times:

current implementation: 50K / core / sec (gets slower over time, high GC overhead)
new implementation w/o pre-aggregation: 800K / sec / core (moderate GC overhead)
new implementation w/ pre-aggregation: 3mio / sec / core (low GC overhead)

This build on #1133

This is a pretty massive addition, but I am excited :)
I will try to look through it today and tomorrow!

wow! I also want to look into this in more detail, it looks promising.
@StephanEwen if you find a bit of time, can you write some more details to guide the reviewing a bit? Kudos for the high quality work!

I don't think the unit tests are correct. I was playing around with the tests while adding the integration of the timer service into the StreamTask. I noticed that most of the tests that should test windowing behavior still succeeded even though no time triggering is actually done.

If the operators don't react to watermarks  and don't forward watermarks that means that any downstream operators cannot rely on watermarks.

Concerning Watermarks: I think that is the assumption right now, yes.
Since the operators produce records with timestamps based on their processing time, they cannot simply forward watermarks. They should be able to auto-generate watermarks based on their processing time, but I am not sure if that is what we would want...

Thanks for the pointer with the tests, will have a look and fix this...

Actually, I think the tests are okay. The triggers are part of some tests only, because this is a unit test that checks many features independently.

There are two tests that validate behavior of triggers (regular case and exception case). Both hang with out a trigger.
Many tests test parameterization, timestamp alignments, and scheduling. They need no triggers or mock triggers, so those naturally run without proper triggers.
Some test define corner conditions around windowing / closing. These are valid even if everything happens in close(), so they are correct as well.
Some tests check pure closing behavior (emit trailing data, make sure exceptions are propagated)

I will add another test that checks the correct operation of tumbling window triggers, but aside from that, I think the test coverage is good.

Ok, if this is out of the way I would suggest to merge it.

Manually merged in b8f58fab56c727b8d44d2a90bbb389ab7544989e


configure; Remove dependency / check for pthreads.

The resourcemgr was using pthreads but it was removed. No need for this
library any longer.
Signed-off-by: Philip Tricca<EMAIL_ADDRESS>

This needs to be merged back into master as well

resolves #432


Release null-safe version pub.dev

I see that the plugin is already migrated to null-safety.
Would you like to publish the new version on pub.dev? Currently, if I want to use the null-safe version, I'd need to use the package as a git dependency.

A year passed, yet sadly without any update :(


[Feature] Blood, vessels and heart simulations

I want to expand Genesis for realistic simulations of vessels, blood and heart.
For this we would need, at least:
1 - Realistic blood simulation - Custom liquid materials solving with Power-Law, Casson, Carreau-Yasuda, etc
2 - Pulsatile flow - Custom emitter solving with Womersley, Navier-Stokes, FSI, etc
Of course, for a realistic simulation we may need more features like advanced Couplers but those two initial features would be a great starting point.
If you want to point the way you usually do this I can try to create the PR.

This sounds pretty cool!
A few questions:

we develop the whole framework in taichi so enjoy GPU acceleration -- the syntax is identical to python but it's still certainly work to understand everything about taichi. Is this a problem to you?
Do you have existing implementations that you want to translate and merge into Genesis or this is something you will have to implement completely from scratch?

I can give Taichi a try!
I don't have existing implementations but those solvers are well known I think it will be more of how to adapt to the Genesis engine than anything else.
For example, let's take the Womersley pulsatile flow.
It descibres a pulsatile flow in cylindrical vessels with a radial velocity profile and time-dependant oscilations. My idea is:

Inherit the baseline Emitter class.
Breakdown the shape into N(according to the desired accuracy) radial Emitters and precompute the base velocity for each radial using Womersley. This allows parallelism.
The Womersley class applies a sinusoidal (the same for the entire shape) to the base velocity into each radial emitter for each dt.

There's other approaches though. We could, for example, have one Emitter and after it calls the emit method we could iterate over all particles and adjust their velocities.

It would be good to add another solver class to handle these , but I’ll leave you to decide it :)

I think the SPH-Solver plus Couplers should be enough but will give it some thought. Still navigating the codebase!


Add CodeQL analysis

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

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

Totals

Change from base Build<PHONE_NUMBER>:
11.7%

Covered Lines:
439

Relevant Lines:
587

💛  - Coveralls


Fix Scala 2 slow compilation for long twiddles

Resolves typelevel/twiddles#12
I'm not sure how I would test the fix. Maybe timing the compilation of a custom sbt project in CI?

I tried to add an sbt project and time its compilation in the github workflow, but I'm not finding a way to do it with sbt-github-actions. I'm not entirely happy on having no tests for this change.

What about a unit test that dynamically evaluates the code and times how long it takes? Something like https://stackoverflow.com/questions/31054237/what-are-the-ways-to-convert-a-string-into-runnable-code


[Codegen] Consider reshapes in ConvertToDestinationPassingStyle

What is Needed
The ConvertToDestinatioPassingStyle pass is limited in it's capabilities when there are reshapes in the function. The following example is the case that we want to support:
// -----// IR Dump After CSE (cse) //----- //
func.func @matmul_transpose_b_mfma() attributes {translation_info = #iree_codegen.translation_info<LLVMGPUTileAndFuse workgroup_size = [128, 2, 1] subgroup_size = 64>} {
  %c2 = arith.constant 2 : index
  %c80 = arith.constant 80 : index
  %cst = arith.constant 0.000000e+00 : f16
  %c0 = arith.constant 0 : index
  %0 = hal.interface.binding.subspan layout(<bindings = [#hal.pipeline.binding<storage_buffer>, #hal.pipeline.binding<storage_buffer>, #hal.pipeline.binding<storage_buffer>]>) binding(0) alignment(64) offset(%c0) flags(ReadOnly) : !flow.dispatch.tensor<readonly:tensor<2048x1280xf16>>
  %1 = hal.interface.binding.subspan layout(<bindings = [#hal.pipeline.binding<storage_buffer>, #hal.pipeline.binding<storage_buffer>, #hal.pipeline.binding<storage_buffer>]>) binding(1) alignment(64) offset(%c0) flags(ReadOnly) : !flow.dispatch.tensor<readonly:tensor<10240x1280xf16>>
  %2 = hal.interface.binding.subspan layout(<bindings = [#hal.pipeline.binding<storage_buffer>, #hal.pipeline.binding<storage_buffer>, #hal.pipeline.binding<storage_buffer>]>) binding(2) alignment(64) offset(%c0) : !flow.dispatch.tensor<writeonly:tensor<2048x10240xf32>>
  %3 = flow.dispatch.tensor.load %0, offsets = [0, 0], sizes = [2048, 1280], strides = [1, 1] : !flow.dispatch.tensor<readonly:tensor<2048x1280xf16>> -> tensor<2048x1280xf16>
  %4 = flow.dispatch.tensor.load %1, offsets = [0, 0], sizes = [10240, 1280], strides = [1, 1] : !flow.dispatch.tensor<readonly:tensor<10240x1280xf16>> -> tensor<10240x1280xf16>
  %5 = tensor.empty() : tensor<2048x10240xf32>
  %6 = scf.forall (%arg0, %arg1) = (0, 0) to (2048, 10240) step (64, 64) shared_outs(%arg2 = %5) -> (tensor<2048x10240xf32>) {
    %7 = tensor.empty() : tensor<4x4x16x16xf32>
    %8 = linalg.fill ins(%cst : f16) outs(%7 : tensor<4x4x16x16xf32>) -> tensor<4x4x16x16xf32>
    %9 = scf.for %arg3 = %c0 to %c80 step %c2 iter_args(%arg4 = %8) -> (tensor<4x4x16x16xf32>) {
      %11 = affine.apply affine_map<(d0) -> (d0 * 16)>(%arg3)
      %extracted_slice = tensor.extract_slice %3[%arg0, %11] [64, 32] [1, 1] : tensor<2048x1280xf16> to tensor<64x32xf16>
      %12 = tensor.empty() : tensor<64x32xf16>
      %13 = linalg.copy {lowering_config = #iree_gpu.derived_thread_config} ins(%extracted_slice : tensor<64x32xf16>) outs(%12 : tensor<64x32xf16>) -> tensor<64x32xf16>
      %14 = tensor.empty() : tensor<4x2x16x16xf16>
      %expanded = tensor.expand_shape %13 [[0, 1], [2, 3]] output_shape [4, 16, 2, 16] : tensor<64x32xf16> into tensor<4x16x2x16xf16>
      %transposed_0 = linalg.transpose ins(%expanded : tensor<4x16x2x16xf16>) outs(%14 : tensor<4x2x16x16xf16>) permutation = [0, 2, 1, 3]
      %extracted_slice_1 = tensor.extract_slice %4[%arg1, %11] [64, 32] [1, 1] : tensor<10240x1280xf16> to tensor<64x32xf16>
      %15 = linalg.copy {lowering_config = #iree_gpu.derived_thread_config} ins(%extracted_slice_1 : tensor<64x32xf16>) outs(%12 : tensor<64x32xf16>) -> tensor<64x32xf16>
      %expanded_2 = tensor.expand_shape %15 [[0, 1], [2, 3]] output_shape [4, 16, 2, 16] : tensor<64x32xf16> into tensor<4x16x2x16xf16>
      %transposed_3 = linalg.transpose ins(%expanded_2 : tensor<4x16x2x16xf16>) outs(%14 : tensor<4x2x16x16xf16>) permutation = [0, 2, 1, 3]
      %16 = iree_gpu.multi_mma %transposed_0, %transposed_3, %arg4 {indexing_maps = [affine_map<(d0, d1, d2) -> (d0, d2)>, affine_map<(d0, d1, d2) -> (d1, d2)>, affine_map<(d0, d1, d2) -> (d0, d1)>], iterator_types = [#iree_gpu.iterator_type<parallel>, #iree_gpu.iterator_type<parallel>, #iree_gpu.iterator_type<reduction>], kind = #iree_gpu.mma_layout<MFMA_F32_16x16x16_F16>, lowering_config = #iree_gpu.lowering_config<{mma_kind = #iree_gpu.mma_layout<MFMA_F32_16x16x16_F16>, promote_operands = [0, 1], reduction = [0, 0, 2], subgroup = [2, 2], workgroup = [64, 64, 0]}>, rhs_permutation = array<i64: 1, 0>} : tensor<4x2x16x16xf16>, tensor<4x2x16x16xf16> into tensor<4x4x16x16xf32>
      scf.yield %16 : tensor<4x4x16x16xf32>
    }
    %10 = tensor.empty() : tensor<4x16x4x16xf32>
    %transposed = linalg.transpose ins(%9 : tensor<4x4x16x16xf32>) outs(%10 : tensor<4x16x4x16xf32>) permutation = [0, 2, 1, 3]
    %collapsed = tensor.collapse_shape %transposed [[0, 1], [2, 3]] : tensor<4x16x4x16xf32> into tensor<64x64xf32>
    scf.forall.in_parallel {
      tensor.parallel_insert_slice %collapsed into %arg2[%arg0, %arg1] [64, 64] [1, 1] : tensor<64x64xf32> into tensor<2048x10240xf32>
    }
  } {mapping = [#iree_codegen.workgroup_mapping<y>, #iree_codegen.workgroup_mapping<x>]}
  flow.dispatch.tensor.store %6, %2, offsets = [0, 0], sizes = [2048, 10240], strides = [1, 1] : tensor<2048x10240xf32> -> !flow.dispatch.tensor<writeonly:tensor<2048x10240xf32>>
  return
}

The op that we want to give a better destination tensor is %transposed = linalg.transpose ins(%9 : tensor<4x4x16x16xf32>) outs(%10 : tensor<4x16x4x16xf32>) permutation = [0, 2, 1, 3]. It should be possible to use an expanded slice of %arg2 as the outs of this transpose, so the IR after ConvertToDestinationPassingStyle woul look something like:
// -----// IR Dump After ConvertToDestinationPassingStylePass (iree-codegen-convert-to-destination-passing-style) //----- //
func.func @matmul_transpose_b_mfma() attributes {translation_info = #iree_codegen.translation_info<LLVMGPUTileAndFuse workgroup_size = [128, 2, 1] subgroup_size = 64>} {
  %c2 = arith.constant 2 : index
  %c80 = arith.constant 80 : index
  %cst = arith.constant 0.000000e+00 : f16
  %c0 = arith.constant 0 : index
  %0 = hal.interface.binding.subspan layout(<bindings = [#hal.pipeline.binding<storage_buffer>, #hal.pipeline.binding<storage_buffer>, #hal.pipeline.binding<storage_buffer>]>) binding(0) alignment(64) offset(%c0) flags(ReadOnly) : !flow.dispatch.tensor<readonly:tensor<2048x1280xf16>>
  %1 = hal.interface.binding.subspan layout(<bindings = [#hal.pipeline.binding<storage_buffer>, #hal.pipeline.binding<storage_buffer>, #hal.pipeline.binding<storage_buffer>]>) binding(1) alignment(64) offset(%c0) flags(ReadOnly) : !flow.dispatch.tensor<readonly:tensor<10240x1280xf16>>
  %2 = hal.interface.binding.subspan layout(<bindings = [#hal.pipeline.binding<storage_buffer>, #hal.pipeline.binding<storage_buffer>, #hal.pipeline.binding<storage_buffer>]>) binding(2) alignment(64) offset(%c0) : !flow.dispatch.tensor<writeonly:tensor<2048x10240xf32>>
  %3 = flow.dispatch.tensor.load %2, offsets = [0, 0], sizes = [2048, 10240], strides = [1, 1] : !flow.dispatch.tensor<writeonly:tensor<2048x10240xf32>> -> tensor<2048x10240xf32>
  %4 = flow.dispatch.tensor.load %0, offsets = [0, 0], sizes = [2048, 1280], strides = [1, 1] : !flow.dispatch.tensor<readonly:tensor<2048x1280xf16>> -> tensor<2048x1280xf16>
  %5 = flow.dispatch.tensor.load %1, offsets = [0, 0], sizes = [10240, 1280], strides = [1, 1] : !flow.dispatch.tensor<readonly:tensor<10240x1280xf16>> -> tensor<10240x1280xf16>
  %6 = scf.forall (%arg0, %arg1) = (0, 0) to (2048, 10240) step (64, 64) shared_outs(%arg2 = %3) -> (tensor<2048x10240xf32>) {
    %7 = tensor.empty() : tensor<4x4x16x16xf32>
    %8 = linalg.fill ins(%cst : f16) outs(%7 : tensor<4x4x16x16xf32>) -> tensor<4x4x16x16xf32>
    %9 = scf.for %arg3 = %c0 to %c80 step %c2 iter_args(%arg4 = %8) -> (tensor<4x4x16x16xf32>) {
      %11 = affine.apply affine_map<(d0) -> (d0 * 16)>(%arg3)
      %extracted_slice = tensor.extract_slice %4[%arg0, %11] [64, 32] [1, 1] : tensor<2048x1280xf16> to tensor<64x32xf16>
      %12 = tensor.empty() : tensor<64x32xf16>
      %13 = tensor.empty() : tensor<64x32xf16>
      %14 = linalg.copy {lowering_config = #iree_gpu.derived_thread_config} ins(%extracted_slice : tensor<64x32xf16>) outs(%12 : tensor<64x32xf16>) -> tensor<64x32xf16>
      %15 = tensor.empty() : tensor<4x2x16x16xf16>
      %16 = tensor.empty() : tensor<4x2x16x16xf16>
      %expanded = tensor.expand_shape %14 [[0, 1], [2, 3]] output_shape [4, 16, 2, 16] : tensor<64x32xf16> into tensor<4x16x2x16xf16>
      %transposed_0 = linalg.transpose ins(%expanded : tensor<4x16x2x16xf16>) outs(%16 : tensor<4x2x16x16xf16>) permutation = [0, 2, 1, 3]
      %extracted_slice_1 = tensor.extract_slice %5[%arg1, %11] [64, 32] [1, 1] : tensor<10240x1280xf16> to tensor<64x32xf16>
      %17 = linalg.copy {lowering_config = #iree_gpu.derived_thread_config} ins(%extracted_slice_1 : tensor<64x32xf16>) outs(%13 : tensor<64x32xf16>) -> tensor<64x32xf16>
      %expanded_2 = tensor.expand_shape %17 [[0, 1], [2, 3]] output_shape [4, 16, 2, 16] : tensor<64x32xf16> into tensor<4x16x2x16xf16>
      %transposed_3 = linalg.transpose ins(%expanded_2 : tensor<4x16x2x16xf16>) outs(%15 : tensor<4x2x16x16xf16>) permutation = [0, 2, 1, 3]
      %18 = iree_gpu.multi_mma %transposed_0, %transposed_3, %arg4 {indexing_maps = [affine_map<(d0, d1, d2) -> (d0, d2)>, affine_map<(d0, d1, d2) -> (d1, d2)>, affine_map<(d0, d1, d2) -> (d0, d1)>], iterator_types = [#iree_gpu.iterator_type<parallel>, #iree_gpu.iterator_type<parallel>, #iree_gpu.iterator_type<reduction>], kind = #iree_gpu.mma_layout<MFMA_F32_16x16x16_F16>, lowering_config = #iree_gpu.lowering_config<{mma_kind = #iree_gpu.mma_layout<MFMA_F32_16x16x16_F16>, promote_operands = [0, 1], reduction = [0, 0, 2], subgroup = [2, 2], workgroup = [64, 64, 0]}>, rhs_permutation = array<i64: 1, 0>} : tensor<4x2x16x16xf16>, tensor<4x2x16x16xf16> into tensor<4x4x16x16xf32>
      scf.yield %18 : tensor<4x4x16x16xf32>
    }
    %new_dest = tensor.extract_slice %arg2[%arg0, %arg1] [64, 64] [1, 1] : tensor<2048x10240xf32> to tensor<64x64xf32>
    %expanded_dest = tensor.expand_shape %new_dest [[0, 1], [2, 3]] output_shape [4, 16, 4, 16] : tensor<64x64xf32> into tensor<4x16x4x16xf32>
    %transposed = linalg.transpose ins(%9 : tensor<4x4x16x16xf32>) outs(%expanded_dest : tensor<4x16x4x16xf32>) permutation = [0, 2, 1, 3]
    %collapsed = tensor.collapse_shape %transposed [[0, 1], [2, 3]] : tensor<4x16x4x16xf32> into tensor<64x64xf32>
    scf.forall.in_parallel {
      tensor.parallel_insert_slice %collapsed into %arg2[%arg0, %arg1] [64, 64] [1, 1] : tensor<64x64xf32> into tensor<2048x10240xf32>
    }
  } {mapping = [#iree_codegen.workgroup_mapping<y>, #iree_codegen.workgroup_mapping<x>]}
  flow.dispatch.tensor.store %6, %2, offsets = [0, 0], sizes = [2048, 10240], strides = [1, 1] : tensor<2048x10240xf32> -> !flow.dispatch.tensor<writeonly:tensor<2048x10240xf32>>
  return
}

Where the key change is at the end of the workgroup forall loop:
    %new_dest = tensor.extract_slice %arg2[%arg0, %arg1] [64, 64] [1, 1] : tensor<2048x10240xf32> to tensor<64x64xf32>
    %expanded_dest = tensor.expand_shape %new_dest [[0, 1], [2, 3]] output_shape [4, 16, 4, 16] : tensor<64x64xf32> into tensor<4x16x4x16xf32>
    %transposed = linalg.transpose ins(%9 : tensor<4x4x16x16xf32>) outs(%expanded_dest : tensor<4x16x4x16xf32>) permutation = [0, 2, 1, 3]
    %collapsed = tensor.collapse_shape %transposed [[0, 1], [2, 3]] : tensor<4x16x4x16xf32> into tensor<64x64xf32>
    scf.forall.in_parallel {
      tensor.parallel_insert_slice %collapsed into %arg2[%arg0, %arg1] [64, 64] [1, 1] : tensor<64x64xf32> into tensor<2048x10240xf32>
    }
  } {mapping = [#iree_codegen.workgroup_mapping<y>, #iree_codegen.workgroup_mapping<x>]}

Motivation
The reason we need this is in order to reorder the passes in the LLVMGPUTileAndFuse pipeline. Workgroup distribution now happens after packing to intrinsic shapes after https://github.com/iree-org/iree/pull/18565, and this was done because of the DPS issue described above. Now, we will need to move packing to after workgroup distribution to be able to handle matmul shapes that need padding to target intrinsics.
The above DPS issue ends up creating a new buffer because when the final fused thread scf.forall loop is created, its shared_outs will have the out of the last op in the fused sequence. In this case, that op is %transposed, since reshapes do not affect the shared_outs (and also don't get fused). This means that the shared_outs of the thread scf.forall will be a tensor.empty(), and this tensor.empty op will not be eliminated by EliminateEmptyTensors:
// -----// IR Dump After EliminateEmptyTensorsPass (iree-eliminate-empty-tensors) //----- //
func.func @matmul_transpose_b_mfma() attributes {translation_info = #iree_codegen.translation_info<LLVMGPUTileAndFuse workgroup_size = [128, 2, 1] subgroup_size = 64>} {
  %cst = arith.constant dense<0.000000e+00> : vector<2x2x4x1xf32>
  %c4 = arith.constant 4 : index
  %c64 = arith.constant 64 : index
  %c2 = arith.constant 2 : index
  %c80 = arith.constant 80 : index
  %cst_0 = arith.constant 0.000000e+00 : f16
  %c0 = arith.constant 0 : index
  %0 = hal.interface.binding.subspan layout(<bindings = [#hal.pipeline.binding<storage_buffer>, #hal.pipeline.binding<storage_buffer>, #hal.pipeline.binding<storage_buffer>]>) binding(0) alignment(64) offset(%c0) flags(ReadOnly) : !flow.dispatch.tensor<readonly:tensor<2048x1280xf16>>
  %1 = hal.interface.binding.subspan layout(<bindings = [#hal.pipeline.binding<storage_buffer>, #hal.pipeline.binding<storage_buffer>, #hal.pipeline.binding<storage_buffer>]>) binding(1) alignment(64) offset(%c0) flags(ReadOnly) : !flow.dispatch.tensor<readonly:tensor<10240x1280xf16>>
  %2 = hal.interface.binding.subspan layout(<bindings = [#hal.pipeline.binding<storage_buffer>, #hal.pipeline.binding<storage_buffer>, #hal.pipeline.binding<storage_buffer>]>) binding(2) alignment(64) offset(%c0) : !flow.dispatch.tensor<writeonly:tensor<2048x10240xf32>>
  %3 = flow.dispatch.tensor.load %2, offsets = [0, 0], sizes = [2048, 10240], strides = [1, 1] : !flow.dispatch.tensor<writeonly:tensor<2048x10240xf32>> -> tensor<2048x10240xf32>
  %4 = flow.dispatch.tensor.load %0, offsets = [0, 0], sizes = [2048, 1280], strides = [1, 1] : !flow.dispatch.tensor<readonly:tensor<2048x1280xf16>> -> tensor<2048x1280xf16>
  %5 = flow.dispatch.tensor.load %1, offsets = [0, 0], sizes = [10240, 1280], strides = [1, 1] : !flow.dispatch.tensor<readonly:tensor<10240x1280xf16>> -> tensor<10240x1280xf16>
  %6 = scf.forall (%arg0, %arg1) in (32, 160) shared_outs(%arg2 = %3) -> (tensor<2048x10240xf32>) {
    %7 = affine.apply affine_map<(d0) -> (d0 * 64)>(%arg1)
    %8 = affine.apply affine_map<(d0) -> (d0 * 64)>(%arg0)
    %9 = bufferization.alloc_tensor() {memory_space = #gpu.address_space<workgroup>} : tensor<64x32xf16>
    %10 = bufferization.alloc_tensor() {memory_space = #gpu.address_space<workgroup>} : tensor<64x32xf16>
    %11 = tensor.empty() : tensor<4x16x4x16xf32>
    %12 = scf.forall (%arg3, %arg4) in (2, 2) shared_outs(%arg5 = %11) -> (tensor<4x16x4x16xf32>) {
      %13 = affine.apply affine_map<(d0) -> (d0 * 2)>(%arg4)
      %14 = affine.apply affine_map<(d0) -> (d0 * 2)>(%arg3)
      %extracted_slice = tensor.extract_slice %arg5[%14, 0, %13, 0] [2, 16, 2, 16] [1, 1, 1, 1] : tensor<4x16x4x16xf32> to tensor<2x16x2x16xf32>
      %15 = scf.forall (%arg6) in (64) shared_outs(%arg7 = %extracted_slice) -> (tensor<2x16x2x16xf32>) {
        %16 = affine.apply affine_map<(d0) -> (d0 mod 16)>(%arg6)
        %17 = affine.apply affine_map<(d0) -> ((d0 floordiv 16) * 4 - ((d0 floordiv 16) floordiv 4) * 16)>(%arg6)
        %18 = scf.for %arg8 = %c0 to %c80 step %c2 iter_args(%arg9 = %cst) -> (vector<2x2x4x1xf32>) {
          %21:2 = iree_gpu.barrier_region ins(%10, %9 : tensor<64x32xf16>, tensor<64x32xf16>) {
          ^bb0(%arg10: tensor<64x32xf16>, %arg11: tensor<64x32xf16>):
            %27 = affine.apply affine_map<(d0, d1, d2) -> (d0 + d1 * 128 + d2 * 64)>(%arg6, %arg3, %arg4)
            %28:2 = affine.delinearize_index %27 into (%c64, %c4) : index, index
            %29 = affine.apply affine_map<(d0) -> (d0 * 8)>(%28#1)
            %30 = affine.apply affine_map<(d0)[s0] -> (d0 * 64 + s0)>(%arg0)[%28#0]
            %31 = affine.apply affine_map<(d0, d1) -> (d0 * 16 + d1 * 8)>(%arg8, %28#1)
            %extracted_slice_3 = tensor.extract_slice %4[%30, %31] [1, 8] [1, 1] : tensor<2048x1280xf16> to tensor<1x8xf16>
            %extracted_slice_4 = tensor.extract_slice %arg10[%28#0, %29] [1, 8] [1, 1] : tensor<64x32xf16> to tensor<1x8xf16>
            %32 = linalg.copy {lowering_config = #iree_gpu.derived_thread_config} ins(%extracted_slice_3 : tensor<1x8xf16>) outs(%extracted_slice_4 : tensor<1x8xf16>) -> tensor<1x8xf16>
            %inserted_slice = tensor.insert_slice %32 into %arg10[%28#0, %29] [1, 8] [1, 1] : tensor<1x8xf16> into tensor<64x32xf16>
            %33 = affine.apply affine_map<(d0)[s0] -> (d0 * 64 + s0)>(%arg1)[%28#0]
            %extracted_slice_5 = tensor.extract_slice %5[%33, %31] [1, 8] [1, 1] : tensor<10240x1280xf16> to tensor<1x8xf16>
            %extracted_slice_6 = tensor.extract_slice %arg11[%28#0, %29] [1, 8] [1, 1] : tensor<64x32xf16> to tensor<1x8xf16>
            %34 = linalg.copy {lowering_config = #iree_gpu.derived_thread_config} ins(%extracted_slice_5 : tensor<1x8xf16>) outs(%extracted_slice_6 : tensor<1x8xf16>) -> tensor<1x8xf16>
            %inserted_slice_7 = tensor.insert_slice %34 into %arg11[%28#0, %29] [1, 8] [1, 1] : tensor<1x8xf16> into tensor<64x32xf16>
            iree_gpu.yield %inserted_slice, %inserted_slice_7 : tensor<64x32xf16>, tensor<64x32xf16>
          } : tensor<64x32xf16>, tensor<64x32xf16>
          %expanded = tensor.expand_shape %21#0 [[0, 1], [2, 3]] output_shape [4, 16, 2, 16] : tensor<64x32xf16> into tensor<4x16x2x16xf16>
          %22 = vector.transfer_read %expanded[%14, %16, %c0, %17], %cst_0 {in_bounds = [true, true, true, true]} : tensor<4x16x2x16xf16>, vector<2x1x2x4xf16>
          %23 = vector.transpose %22, [0, 2, 1, 3] : vector<2x1x2x4xf16> to vector<2x2x1x4xf16>
          %expanded_2 = tensor.expand_shape %21#1 [[0, 1], [2, 3]] output_shape [4, 16, 2, 16] : tensor<64x32xf16> into tensor<4x16x2x16xf16>
          %24 = vector.transfer_read %expanded_2[%13, %16, %c0, %17], %cst_0 {in_bounds = [true, true, true, true]} : tensor<4x16x2x16xf16>, vector<2x1x2x4xf16>
          %25 = vector.transpose %24, [0, 2, 1, 3] : vector<2x1x2x4xf16> to vector<2x2x1x4xf16>
          %26 = iree_gpu.multi_mma %23, %25, %arg9 {indexing_maps = [affine_map<(d0, d1, d2) -> (d0, d2)>, affine_map<(d0, d1, d2) -> (d1, d2)>, affine_map<(d0, d1, d2) -> (d0, d1)>], iterator_types = [#iree_gpu.iterator_type<parallel>, #iree_gpu.iterator_type<parallel>, #iree_gpu.iterator_type<reduction>], kind = #iree_gpu.mma_layout<MFMA_F32_16x16x16_F16>} : vector<2x2x1x4xf16>, vector<2x2x1x4xf16> into vector<2x2x4x1xf32>
          scf.yield %26 : vector<2x2x4x1xf32>
        }
        %extracted_slice_1 = tensor.extract_slice %arg7[0, %17, 0, %16] [2, 4, 2, 1] [1, 1, 1, 1] : tensor<2x16x2x16xf32> to tensor<2x4x2x1xf32>
        %19 = vector.transpose %18, [0, 2, 1, 3] : vector<2x2x4x1xf32> to vector<2x4x2x1xf32>
        %20 = vector.transfer_write %19, %extracted_slice_1[%c0, %c0, %c0, %c0] {in_bounds = [true, true, true, true]} : vector<2x4x2x1xf32>, tensor<2x4x2x1xf32>
        scf.forall.in_parallel {
          tensor.parallel_insert_slice %20 into %arg7[0, %17, 0, %16] [2, 4, 2, 1] [1, 1, 1, 1] : tensor<2x4x2x1xf32> into tensor<2x16x2x16xf32>
        }
      } {mapping = [#iree_gpu.lane_id<0>]}
      scf.forall.in_parallel {
        tensor.parallel_insert_slice %15 into %arg5[%14, 0, %13, 0] [2, 16, 2, 16] [1, 1, 1, 1] : tensor<2x16x2x16xf32> into tensor<4x16x4x16xf32>
      }
    } {mapping = [#gpu.warp<linear_dim_1>, #gpu.warp<linear_dim_0>]}
    %collapsed = tensor.collapse_shape %12 [[0, 1], [2, 3]] : tensor<4x16x4x16xf32> into tensor<64x64xf32>
    scf.forall.in_parallel {
      tensor.parallel_insert_slice %collapsed into %arg2[%8, %7] [64, 64] [1, 1] : tensor<64x64xf32> into tensor<2048x10240xf32>
    }
  } {mapping = [#iree_codegen.workgroup_mapping<y>, #iree_codegen.workgroup_mapping<x>]}
  flow.dispatch.tensor.store %6, %2, offsets = [0, 0], sizes = [2048, 10240], strides = [1, 1] : tensor<2048x10240xf32> -> !flow.dispatch.tensor<writeonly:tensor<2048x10240xf32>>
  return
}

Note that %12 has shared_outs(%arg5 = %11), which is a tensor.empty(). This is the problem here.
Then, the empty tensor eventually becomes a bufferization.alloc_tensor() with a workgroup memory space, and a copy is required before the tensor.parallel_insert_slice of the workgroup scf.forall, which should not happen.

I think it might be more in-line with what the pass tries to do to make this IR
%new_dest = tensor.extract_slice %3[%arg0, %arg1] [64, 64] [1, 1] : tensor<2048x10240xf32> to tensor<64x64xf32>

instead of
%new_dest = tensor.extract_slice %arg2[%arg0, %arg1] [64, 64] [1, 1] : tensor<2048x10240xf32> to tensor<64x64xf32>

Any thoughts on the trade-offs of going for one over the other?

I think it might be more in-line with what the pass tries to do to make this IR
%new_dest = tensor.extract_slice %3[%arg0, %arg1] [64, 64] [1, 1] : tensor<2048x10240xf32> to tensor<64x64xf32>

instead of
%new_dest = tensor.extract_slice %arg2[%arg0, %arg1] [64, 64] [1, 1] : tensor<2048x10240xf32> to tensor<64x64xf32>

Any thoughts on the trade-offs of going for one over the other?

The second one should be better, because bufferization typically looks for pairs of insert/extrac_slice ops on the same values, and if the offsets and sizes match, then it will bufferize in place. In the first case a pair like that would not be found.

The reasoning is that the analysis logic makes equivalence set and then the set uses the result of the dispatch tensor in that set, which in this case is %3, https://github.com/iree-org/iree/blob/main/compiler/src/iree/compiler/Codegen/Common/BufferizationAnalysis.cpp#L37-L52

I think the ConvertToDestinationPassingStyle pass will actually replace the destination with the loop argument, as in the second case. There is some logic that traces back the chain of destinations to find the nearest value to the store that will be replaced:
https://github.com/iree-org/iree/blob/03c744ead1482abde3ee9e70293215c5b557c629/compiler/src/iree/compiler/Codegen/Common/ConvertToDestinationPassingStylePass.cpp#L212-L242
This process runs for each tensor.empty to be replaced starting from the top of the function to the bottom of the function. This means it should trace back to the destination of the tensor.parallel_insert_slice op, perform an inverse of the collapse_shape, and then replace the transpose init arg with an expanded loop block argument. After looking at this code, it looks like reshapes are already considered, so it may be as simple as adding a case for tensor.parallel_insert_slice similar to tensor.insert_slice here:
https://github.com/iree-org/iree/blob/03c744ead1482abde3ee9e70293215c5b557c629/compiler/src/iree/compiler/Codegen/Common/ConvertToDestinationPassingStylePass.cpp#L224-L229

Going to close this because we went in a different direction. The new idea is to hoist the collapse_shape out of the workgroup scf.forall, because we can make an assumption in IREE that the tensor.parallel_insert_slice ops of a workgroup forall are disjoint.


Added an ability to use styles defined in App.xaml within Xamarin.Forms.Player

Also updated Xam.Plugins.Settings to version 2 (otherwise there are build errors, because 2.0 isn't compatible with 1.5).
Changed nuspec file to ease the installation (Microsoft.AspNet.SignalR.Client is not installable to the default Xamarin.Forms templates projects). Added an instruction to readme on how to fully utilize the new configuration

Could you squash all commits in a single one for easier review/tracking?
Thanks!

Done, please check if everything's ok, that's the first time I'm using squash :)

Other than the minor thing about private ... _, it looks great @Shaddix !

fixed


Fix typos with prior change

Made some mistakes in copying from the local changes I was testing to the repo version I had checked out. This fixes it.

Thanks for this. I'm not seeing it available on pypi yet. Would be good if we can get a version update/fix there too.
Thanks again!

@ali-naq-v Fixed version uploaded to pypi!


Add French Localization Team Approvers

Based on

Request for Initiate French Localization Team #915
Contributor-ladder: localization approvers

This PR add approvers for French Localization

[x] Christophe Sauthier (@huats )
[x] Flavien Hardy ( @fydrah )
[ ] Ludovic Logiou ( @Krast76 )

Important

All candidates need to leave a comment in this PR that you understood the following policies and information. (l10n teams: please share this message to candidates)

Policies for localization approvers (to be confirmed by candidates)
Please understand that a candidate who does not check and confirm it, the candidate can not be an approver.

The l10n team approvers need to use your permission appropriately.

The approvers of l10n team will have a push permission to this repository.
It is to make l10n approvers manage (merge) PRs for l10n contributions in your development branch.
Merging a PR to the main branch by l10n approvers is restricted.
Even if they are possible to review a PR to the main branch and give an approval to the PR, they should not approve the PR.
So, please do not approve if a PR is not related with your localization.

After this PR merged, the approvers will get an github invitation for collaborate from settings[bot] of cncf/glossary. You need to accept. Please find the invitation from Email or Github notification. It the candidate dose not accept it, maintainers cannot assign you as an approver of  dev-xx branch.

Understood the policy @seokho-son

I understood the policy @seokho-son

I understood the policy @seokho-son


Pull in updates to master

adamwulf has pushed 6 new commits since the last update. Updating..

Pulled in..


CMakeLists.txt: add hint when libxi-dev is missing

This is just a helper message when "X11_Xi_INCLUDE_PATH" is not found, because googling does not help very much to spot the missing package.

This only applies to Debian though, ArchLinux calls this package libxi, Fedora libXi-devel, and other distributions probably use very different names too.

May be the message could be "Hint: install libxi devel package" (this would have been sufficient for me)

Ooh, good idea! Will add for all the X errors.

Package name hints added with a43f54567773c38ee9dda4ab6b6a65fd58a67080. Thank you!
Wish we could have a per-distro package name table but don't have time to compile and maintain one.


Rename Mesos starter project to 'autoconfig'

Move MesosDataFlowServerAutoConfiguration into its
own auto-config jar.
Add testing that auto-config adds resource
loader for docker.
Remove old starter
Upgrade to SCDF 1.1.0.RELEASE for shell to work.
Fixes #96

The docs still bring the artifact with "starter" in the name.
Will fix on merge

Merged as ebd1e1b


Fix testing for filters

Fixes #25
Filters return values mainly in the initialize method.

Codecov Report

Merging #26 (3c1fd0c) into master (dd91f12) will increase coverage by 0.62%.
The diff coverage is 86.04%.

@@            Coverage Diff             @@
##           master      #26      +/-   ##
==========================================
+ Coverage   69.31%   69.94%   +0.62%
==========================================
  Files          10       11       +1
  Lines         176      183       +7
==========================================
+ Hits          122      128       +6
- Misses         54       55       +1

Flag
Coverage Δ

linux
69.94% <86.04%> (+0.62%)
:arrow_up:

windows
?

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

otelib/settings.py
100.00% <ø> (ø)

otelib/pipe.py
55.55% <40.00%> (ø)

otelib/strategies/mapping.py
36.36% <80.00%> (ø)

otelib/strategies/transformation.py
36.36% <80.00%> (ø)

otelib/strategies/abc.py
83.72% <83.72%> (ø)

otelib/__init__.py
100.00% <100.00%> (ø)

otelib/client.py
70.00% <100.00%> (-3.92%)
:arrow_down:

otelib/exceptions.py
50.00% <100.00%> (ø)

otelib/strategies/__init__.py
100.00% <100.00%> (ø)

otelib/strategies/dataresource.py
86.36% <100.00%> (ø)

... and 1 more

Continue to review full report at Codecov.

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

Note, this PR also updates the OTELib API, moving the strategies under a separate sub-module and only allowing the import of OTEClient directly from the top otelib module.

It also adds static typing where possible.


WindowsService implementation changes

The changes seem good. It's an enormous amount of tedious details :)
I'll defer to Bryan or Chris on the xplat changes and bash script changes.

Thanks!, I will need some comment on the build script changes. Two main changes

Building Agent.Service folder using msbuild. I am finding msbuild using reg keys and building it. I don't know if there are any better way of doing it. I will need some suggestion here.
Fixing the directory acls. This issue mislead me into thinking I am missing to add lsapolicy or directory permission.. really the culprit was cygwin.. phew! It took me sometime to figure that out.. again suggestion on using icacls or any other tools would be welcome.

Updated PR with the comments..


File Tree and Imports Update

I set out to learn how to test functions from files like interfaces.py, routines.py, etc as opposed to testing the functions within classes. The latter was much simply due to those classes never needing to import modules like interfaces.py. However, files like routines.py needs to import interfaces.py to write to the screen, and then the import paths tend to get messy and result in ModuleNotFoundErrors to pop up. After some reading and refactoring of the code, I believe we've gotten to a good place.
The file tree now looks as such:
titration/
┣ utils/
┃ ┣ devices/
┃ ┃ ┣ ads_mock.py
┃ ┃ ┣ board_mock.py
┃ ┃ ┣ keypad.py
┃ ┃ ┣ keypad_mock.py
┃ ┃ ┣ lcd.py
┃ ┃ ┣ lcd_mock.py
┃ ┃ ┣ ph_probe.py
┃ ┃ ┣ ph_probe_mock.py
┃ ┃ ┣ serial_mock.py
┃ ┃ ┣ temperature_control.py
┃ ┃ ┣ temperature_control_mock.py
┃ ┃ ┣ temperature_probe.py
┃ ┃ ┣ temperature_probe_mock.py
┃ ┃ ┗ __init__.py
┃ ┣ analysis.py
┃ ┣ constants.py
┃ ┣ interfaces.py
┃ ┣ routines.py
┃ ┣ statemachine.py
┃ ┣ titration.py
┃ ┗ __init__.py
┣ main.py
┗ __init__.py
test/
┣ interfaces_test.py
┣ keypad_mock_test.py
┣ lcd_mock_test.py
┣ ph_probe_mock_test.py
┣ routines_test.py
┣ serial_mock_test.py
┣ temperature_control_mock_test.py
┣ temperature_probe_mock_test.py
┗ __init__.py

Now, a proper main.py has been created, and everything else has been thrown into package called utils. This is because we require a lot of relative imports to allow for python -m pytest to be run from the root and the main program run from python ./src/main.py. main.py is pretty much the only file that doesn't use relative imports because it never needs to look anywhere in the filetree other than below it. The pytest routines need to exist the ./test/ directory and look for ./src/ and find modules there. To make this easier, (while not fully switched over at the time of writing), a context.py file has been created which adjusts the path and imports src.utils as titration_module. All the test modules can then simply do:
EDIT 8/16: Now, a proper main.py has been created, and everything else has been thrown into package called utils. This is to allow better organization of the imports and start from high in the directory. All imports have been made absolute, starting with titration and working down. Originally, interfaces.py would check constants.IS_TEST at the moment of import and assign modules to variables for setting up devices later. However, this would sometimes cause issues for importing interfaces.py too early since the board module cannot be imported on non-raspberry-pi machines. As such, this operation has been moved to a function, setup_module_classes(), which gets called within setup_interfaces(). This allows us to import interfaces.py at any point without fear of accidentally importing board. NOTE: It may be prudent to assign mock modules on import so that the variables don't end up being None, but you could also argue it's a way to keep a developer from doing things too out of order. Finally, a couple new test files, interfaces_test.py and routines_test.py, have been added showing successful import and testing of those files. Both only test one function at the moment, as they are just to show it's now possible and works well. One note of interest, the test function in routines_test.py fakes a user pressing a series of buttons on the keypad using pytest's monkeypatch fixture:
def test_routines_test_mode_pump(monkeypatch, capsys):
    monkeypatch.setattr('sys.stdin', io.StringIO('0\n*\n5\nA\n0\nA\n'))
    routines.test_mode_pump()
    ...

This input string is entering a volume of 0.5ml to pump in the 0 direction (fill the syringe), with the A's submitting the entry. Unfortunately there's no way I can see to test the intermediate screens, but at the end it asserts what the final screen should look like:
...
assert captured.out == (
        "*====================*\n"
        + "|                    |\n"
        + "|                    |\n"
        + "|                    |\n"
        + "|Pump Vol: 0.50 ml   |\n"
        + "*====================*\n"
    )

@prestoncarman I've updated things along the lines of what you and @jgfoster were suggesting. Let me know what you think!

When all the checks finally pass: