Ewmh support for workspace names

This PR also fixes the issue that #105 fixed in a cleaner way.

I apologize for being a bit dense, but I don't understand the background for this change.  I've read the comments on the referenced PR and yet I still don't understand the motivation behind this.
Please help me understand a use case where these changes are useful.  Thank you.

XMonad.Actions.WorkspaceNames provides dynamic workspace names that are
separate from the workspace tags. This is mostly useful because, if you
have windows on a tag and remove that tag, xmonad recreates it from the
propagated StackSet and leaves the windows on it; also, and relatedly,
because tags do more than just user visible workspace names (consider all
the hacks out there to put icons etc. into the tag for use by various bars).
An argument could be made for adding a user visible name to go with tags,
but (a) this will complicate a bunch of things including backward
compatibility (b) I'm not sure it addresses the topic-space workflow cited
by the documentation for X.A.WorkspaceNames. (OTOH that may itself be a
workaround for TopicSpaces being one of the things that often causes
argument overflow on mod-q.)
On Wed, Dec 14, 2016 at 5:52 PM, Peter J. Jones<EMAIL_ADDRESS>wrote:

I apologize for being a bit dense, but I don't understand the background
for this change. I've read the comments on the referenced PR and yet I
still don't understand the motivation behind this.
Please help me understand a use case where these changes are useful. Thank
you.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/xmonad/xmonad-contrib/pull/122#issuecomment-267182459,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AB8SoPz_zK2UEGE6CgKyEq6x2_i7Uyfpks5rIHM9gaJpZM4K9AMJ
.

--
brandon s allbery kf8nh                               sine nomine associates
<EMAIL_ADDRESS><EMAIL_ADDRESS>unix, openafs, kerberos, infrastructure, xmonad        http://sinenomine.net

I moved the functions supporting ewmh to the ewmh module (frankly, I still think it would be more appropriate to have them in WorkspaceNames, but I don't feel very strongly about it).

@IvanMalison Sorry for the delay.  After reading @geekosaur's comment and thinking about this some more I'm wondering if it makes sense to move everything from this PR into its own module.  Like you said, it doesn't really belong in EWMH, but WorkspaceNames might not be the right place either.  Really, this is a way to glue those two together (if I understand correctly).
How does that sound?

@pjones Yeah, sure that works!

@IvanMalison Are you still going to move this code into its own module?

yep I can do that!

With #238 this more complex implementation (than the one in #105 cover letter) isn't necessary. Closing in favor of #399.

Sorry for the noise and treating you all as rubber ducks, so here's a last status on this: I figured we don't need to wait for #399 so I just pushed f271d59c345ed9fbd3ec02de98f69990b57fbdba to master.


[$250] Avatar images do not reliably fall back on a default when offline

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Action Performed:

Put your phone on airplane mode and turn off wifi
Close the app if it's already open.
Open or reopen the app

Expected Result:
We should fallback on a default avatar for those images that are not cached
Actual Result:
Avatar images do not reliably fall back on a default when offline
Context:
Related: the default avatar for a user is injected into their PersonalDetails here. Because it's just a URL, that default avatar image will only be available online (unless it happens to be cached in Onyx).
To fix that, we could create a DefaultAvatar svg icon and just pass a random fill to that component rather than using a URL for those icons. Might also have a minor performance improvement, especially on low-bandwidth connections on mobile.
Workaround:
unknown
Platform:

Where is this issue occurring?

iOS
Android

Version Number: 1.1.43-2
Reproducible in staging?: Y
Reproducible in production?: Y
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation

Expensify/Expensify Issue URL:
Issue reported by:
Slack conversation:
View all open jobs on GitHub

@chiragsalian Also having the same issue when searched to invite a new member for Workspace.
https://user-images.githubusercontent.com/93399543/159957813-b4305440-1a0f-4a1b-b28e-f83a10af2e0f.mp4

Should be a pretty straightforward external issue.

Internal: https://www.upwork.com/ab/applicants/1508351478606524416/job-details
External: https://www.upwork.com/jobs/~01e341ebb7d774aad0

Proposal
We can add a background color here -
https://github.com/Expensify/App/blob/50496a0a0d7dd283f9936988cda95abf69741342/src/components/Avatar.js#L42-L45
like this -
const imageStyle = [
     StyleUtils.getAvatarStyle(this.props.size),
+     {backgroundColor: themeColors.icon},
     ...this.props.imageStyles,
 ];

I found that we were doing this earlier but it was removed also I found that we were only using the background color when it isn't a chat room because when there's no chatroom icon the backround shows up as a gray square, but I don't know if there's a case where chatroom icon won't show up. So should we just add a background color or should be check if it's not a chatroom and only then we will add a background

Related: the default avatar for a user is injected into their PersonalDetails here. Because it's just a URL, that default avatar image will only be available online (unless it happens to be cached in Onyx).
To fix that, we could create a DefaultAvatar svg icon and just pass a random fill to that component rather than using a URL for those icons. Might also have a minor performance improvement, especially on low-bandwidth connections on mobile.

@Puneet-here This is what we are looking for here.

@michelle-thompson - Can we get the default avatar SVG for this? Thanks!

Just checking in, should this be doubled or are we feeling ok with where it's at? cc @Santhosh-Sellavel

unassigned myself since just 1 CME should be enough.

Thanks for checking, @dylanexpensify. Let's wait on this one.

@michelle-thompson - Can we get the default avatar SVG for this? Thanks!

Any update on this?

Maybe we should just use the same style of default avatars we use, but use dark version or gray version as the fallback?

Technically speaking though, how do we make sure that when an avatar is loading over a connection that the default version doesn't flash quickly before the real asset loads?

Sounds good to me. I think I learn towards the gray version given that this would only be shown as a fallback for offline... curious what the other designers think though.

I really like the navy for icons but I agree that the grey might make more sense here for offline

Cool, let's do gray then. Here is the .svg we'll need: fallback-avatar.svg.zip
Can we also make sure to use a background color for these avatar circles too? I'm not sure when they were removed, but we should have a default gray color there as well.

Another week passed, should we double? cc @Santhosh-Sellavel

Lets double.

Doubled!

Price doubled

Proposal:
in avatar file we can add onError in Image component here
https://github.com/Expensify/App/blob/db6fab75722e833ca6e54f634e8a6b6f3c1cae79/src/components/Avatar.js#L53
when Image gets an error in load we can setState a error flag true and if its true then we have to  load the local SVG file,
I have done this changes in local and its working , please check video here
https://user-images.githubusercontent.com/35371050/165837995-9c947c87-d818-4111-a4a1-727b32fab20e.mov
Updated avatar file
import {Image, View} from 'react-native';
import PropTypes from 'prop-types';
import _ from 'underscore';
import stylePropTypes from '../styles/stylePropTypes';
import Icon from './Icon';
import themeColors from '../styles/themes/default';
import CONST from '../CONST';
import * as StyleUtils from '../styles/StyleUtils';
import * as Expensicons from './Icon/Expensicons';
import defaultTheme from '../styles/themes/default';

const propTypes = {
    /** Source for the avatar. Can be a URL or an icon. */
    source: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),

    /** Extra styles to pass to Image */
    imageStyles: PropTypes.arrayOf(PropTypes.object),

    /** Extra styles to pass to View wrapper */
    containerStyles: stylePropTypes,

    /** Set the size of Avatar */
    size: PropTypes.oneOf(_.values(CONST.AVATAR_SIZE)),

    /** The fill color for the icon. Can be hex, rgb, rgba, or valid react-native named color such as 'red' or 'blue' */
    fill: PropTypes.string,
};

const defaultProps = {
    source: null,
    imageStyles: [],
    containerStyles: [],
    size: CONST.AVATAR_SIZE.DEFAULT,
    fill: themeColors.icon,
};

class Avatar extends PureComponent {
    constructor() {
        super();
        this.state = {
            isErrorFetchingImage: false,
        }
        this.getUserImage = this.getUserImage.bind(this);
    }

    getUserImage() {
        const imageStyle = [
            StyleUtils.getAvatarStyle(this.props.size),
            ...this.props.imageStyles,
        ];

        if(this.state.isErrorFetchingImage) {
            let { height, width } = imageStyle;
            if(!height) {
                const {height: convertedHeight} = StyleUtils.getAvatarStyle(this.props.size)
                height = convertedHeight;
            };
            if(!width) {
                const {width: convertedWidth} = StyleUtils.getAvatarStyle(this.props.size)
                width = convertedWidth;
            }
            return (
                <Icon
                    src={Expensicons.FallbackAvatar}
                    height={height}
                    width={width}
                    fill={defaultTheme.offline}
                />
            )
        }
        return (
            <Image
                onError={(err)=> this.setState({ isErrorFetchingImage:true })}
                source={{uri: this.props.source}}
                style={imageStyle}
                onLoad={()=> { if(this.state.isErrorFetchingImage){this.setState({ isErrorFetchingImage: false })}}}
            />
        )
    };

    render() {
        if (!this.props.source) {
            return null;
        }

        const iconSize = StyleUtils.getAvatarSize(this.props.size);

        return (
            <View pointerEvents="none" style={this.props.containerStyles}>
                {
                _.isFunction(this.props.source)
                    ? <Icon src={this.props.source} fill={this.props.fill} height={iconSize} width={iconSize} />
                    : this.getUserImage()
            }
            </View>
        );
    }
}

Avatar.defaultProps = defaultProps;
Avatar.propTypes = propTypes;
export default Avatar;

@jayeshmangwani seems your proposal would address this issue, but it's hard to follow.
Check out the closed issues to how to write a proper proposal.
Can you resubmit your proposal, with the changes you are proposing in step by step manner? So it would be easy to understand. Make your code is DRY.
Ex:

Should change the following lines in the Header.js file to fix this.
Add the following code here to get this done.

Thanks!

@jayeshmangwani seems your proposal would address this issue, but it's hard to follow.
Check out the closed issues to how to write a proper proposal.
Can you resubmit your proposal, with the changes you are proposing in step by step manner? So it would be easy to understand. Make your code is DRY. Ex:

Should change the following lines in the Header.js file to fix this.
Add the following code here to get this done.

Thanks!

@Santhosh-Sellavel  Thanks for checking the proposal, let me update my proposal in detail,
Proposal - updated

we have to create a state for checking errors in image loading, isErrorFetchingImage value that defines the error in loading the image, initially value will be false

constructor() {
  super();
    this.state = {
      isErrorFetchingImage: false,
    }
  }

we have to add the above code here,
https://github.com/Expensify/App/blob/f174c3223a1d6d0f571e5bd799441690951f078c/src/components/Avatar.js#L36-L37

onError method of Image component  that calls if the getting errors in loading image

onError={()=> this.setState({ isErrorFetchingImage: true })}

we have to add the above code here,
https://github.com/Expensify/App/blob/f174c3223a1d6d0f571e5bd799441690951f078c/src/components/Avatar.js#L53

Icon is already being used in component, added a condition if the error flag will be true then also Icon will be visible, so either we getting function as a source or we are getting error in loading the remote URL Icon will be display

https://github.com/Expensify/App/blob/f174c3223a1d6d0f571e5bd799441690951f078c/src/components/Avatar.js#L51
above line will be replaced with this line of code
_.isFunction(this.props.source) || this.state.isErrorFetchingImage

For Icon we have to add 2 conditions for src and fill, for image error src will be fallback-avatar.svg and fill will be defaultTheme.offline

https://github.com/Expensify/App/blob/f174c3223a1d6d0f571e5bd799441690951f078c/src/components/Avatar.js#L52
above code will be replaced with this code

<Icon
    src={this.state.isErrorFetchingImage ? Expensicons.FallbackAvatar : this.props.source }
    fill={this.state.isErrorFetchingImage ? defaultTheme.offline : this.props.fill}
    height={iconSize}
    width={iconSize}
/>

Thanks!

@AndrewGable
@jayeshmangwani proposal LGTM!
🎀👀🎀 C+ reviewed
@jayeshmangwani
I think this should be,
constructor(props) {
  super(props);

Could have used themeColors which is already available instead of defaultTheme.

@Santhosh-Sellavel  Thanks for the suggestion, now I have updated these 2 changes in the code

PR raised @Santhosh-Sellavel
CC: @AndrewGable

@bfitzexpensify Can you set up a job on Upwork for this issue or share me link for this one!

Invited you to the current open job @Santhosh-Sellavel

Payments issued - thanks everyone for the work here!


Vendor glm

Unfortunately luxengine/glm has been breaking recently, and in order to make the lives of our users easier we've set up a mirror which we can move in changes when we like. This continues to allow the original author to experiment and optimise, while we can use it without fear of breaking all the things.

Changes Unknown when pulling d08d885607ccbcb613cea538f65def1a05a2552a on vendor-glm into ** on master**.

Changes Unknown when pulling f4aceb768665575f8676d9117a913d65b3d119e3 on vendor-glm into ** on master**.


feat(searches): add linear and binary search

Added linear and binary search.
Resolves #2.

Thank you for contributing to Algorithms/Python, your pr got merged! ✨


repository does not exist or may require 'docker login'

Step 1/13 : FROM oracle/serverjre:8
pull access denied for oracle/serverjre, repository does not exist or may require 'docker login'
Gave my Docker Login, Password, but still getting Above Error.

I'm not sure what image you're trying to build, but you need to build the oracle/serverjre:8 image first.

Can you let me know what image you were trying to build so I can make sure the documentation is clear that the Java image needs to be built first?

Closing due to lack of response.

Getting the same error while running "docker run hello-world"

Please do not comment on closed issues. If you're experiencing a problem, please open a new issue and provide the exact steps you're following and the error being generated.


Create unified aws script

Would be much better than having two separate scripts (rds and ec2).
Features:

Multiple configs
Unified configfile.

These are long gone! (8086530bbf3ab339f28844b932f6676277924934 and f59ee97772c79dd092bfb30cf8ed16477853f341)


Acme-Co-Employee-Attrition-Analysis-and-Prediction-Shalin-Gamre

Welcome to our project on Employee Attrition Analysis and Prediction for Acme Corporation. In this project, we aim to uncover insights into the factors influencing employee turnover and predict future attrition trends using data analytics and visualization techniques. By leveraging historical data on employee demographics, job satisfaction, and performance metrics, we’ve created interactive dashboards in Tableau to visualize turnover patterns, identify areas of concern, and provide actionable insights for retention strategies. Let’s explore how we’ve analyzed the data and created visualizations to help Acme Corporation address their employee turnover challenges effectively.

1.The Aim of project is to reason for employee atrrition and which employee likly to leavew in company.
2. Factors of influencing employee turnover and predict which employee likly to leave in future.

In data preprocessing and cleaning prepation of the data using

Data Exploration -
This step to ensure about the columns and row present
Here, check head, tail of the dataset.
checks the data description
Checks data type
Data Cleaning
Data Encoding
Data Labelling

here create the dashboard using tableau to visualize the trends and patterns in employee turnover.


Library name change request

Library repository URL
https://github.com/SolderedElectronics/Soldered-Obstacle-Sensor-Arduino-Library

Hi @koderchina. I am confirming your request.
Unlike submissions, this type of request is still handled manually. The Library Manager index maintainer occasionally comes through to clear all the outstanding requests. They will close this issue when it is done. You will get a notification from GitHub at that time.
After that, you can monitor the indexing of the library via its dedicated logs web page.
Information about that here:
https://github.com/arduino/library-registry/blob/main/FAQ.md#can-i-check-on-library-releases-being-added-to-library-manager

Done:
2024/10/02 16:00:13 Loaded 7338 libraries from DB
Removing Soldered Obstacle Sensor
Success!


Keepalived vip didn't switch to another node

After deploying the cluster with keepalived, I rebooted the node where keepalived was applying the vip but the vip didn't switch to another node automatically. vrrp routers on the other nodes stays in backup state.

hey @aym-frikha, can you share what your setup was? I've observed VIP switching as expected with keepalived and 3 MAAS instances running in lxd VMs when I stop one of the VMs


Formatting crushes rust-analyzer

I tried to use formatting using rust-analyzer, but LSP crushes after execute command format.
command lsp-showlog response
thread 'LspServer' panicked at crates/rust-analyzer/src/handlers/dispatch.rs:343:17:
Invalid request
Method: textDocument/didChange
 error: missing field `contentChanges`
stack backtrace:
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
thread '<unnamed>' panicked at /build/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lsp-server-0.7.6/src/stdio.rs:28:37:
receiver was dropped, failed to send a message: "SendError(..)"
stack backtrace:
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
thread 'main' panicked at /build/.cargo/registry/src/index.crates.io-6f17d22bba15001f/jod-thread-0.1.2/src/lib.rs:33:22:
called `Result::unwrap()` on an `Err` value: Any { .. }
stack backtrace:
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

While testing this I found out we have all kinds of issues with rust-analyzer, but the crash should be fixed now (d7eeb061b).


keda-metrics-adapter calling apiserver qps are quite high

Report
we create arounds 200 scaleObjects in the cluster, the qps from keda-metrics-adapter to apiserver is quite high, which create burden to apiserver

the code for listing here: https://github.com/kedacore/keda/blob/main/pkg/provider/provider.go#L90
Expected Behavior
Not calling apiserver so frequently, should be done by reconcile by watching constantly
Actual Behavior
Calling apiserver every time the metrics request to get the so resource
Steps to Reproduce the Problem
large amounts of scaleObjectx
Logs from KEDA operator
No response
KEDA Version
2.6.1
Kubernetes Version
1.20
Platform
Other
Scaler Details
No response
Anything else?

maybe we can using the shared informer with scaledObject Controller, when get new so can get directly from informer cache
or create a shared cache between controller and provider

if you guys feel ok either way, I can give a try

Yeah, this is something that needs improvement, @bamboo12366 would be nice if you can try to tackle this.
FYI there's already controller present in the MetricsAdapter (currently used for metricNames), so you might want to go this direction: https://github.com/kedacore/keda/blob/main/controllers/keda/metrics_adapter_controller.go

There might be even an easier solution, replace following section:
https://github.com/kedacore/keda/blob/99619e3a8b52dfa3e70a525c94b204dbf9e03028/pkg/provider/provider.go#L84-L95
with
...
	scaledObject := &kedav1alpha1.ScaledObject{}
	p.client.Get(ctx, namespaceNameParsedFromMetricSelector, scaledObject)
...

we should be able to parse ScaledObject.Name from a label scaledobject.keda.sh/name that is set on ScaledObject and most likely is part of the metricSelector.
It's definitely worth exploring.

hey @zroubalik
can I just using the manager.GetClient() and pass the client to the provider, thus the provider and scaledObject Controller are sharing the same informer cache together
something like
`
mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{
Scheme:    scheme,
Namespace: namespace,
})
if err != nil {
return nil, nil, err
}
if err := runScaledObjectController(ctx, mgr, handler, logger, externalMetricsInfo, externalMetricsInfoLock, maxConcurrentReconciles, stopCh); err != nil {
return nil, nil, err
}
return kedaprovider.NewProvider(ctx, logger, handler, mgr.GetClient(), namespace, externalMetricsInfo, externalMetricsInfoLock), stopCh, nil
`

ScaledObject controller is running in KEDA Operator Pod, Provider in Metrics Server Pod.

The client for Metrics Server (thus provider) is setup here: https://github.com/kedacore/keda/blob/main/adapter/main.go
I happy to see any improvements on this side.

yea, what trouble me is the Metrics Server pare.
I will create a PR work on this

@zroubalik master, could you help me review on this https://github.com/kedacore/keda/pull/2922?


add more test file creation

I am using this project (its great!) I am seeing an issue when I am creating a bootable disk with two partitions. the first partition is a "normal" efi partition that boots and works well. The second partition is a fat32 filesystem that hold all sorts of files and folders. some of the files are 1 GiB in size. When I am writing to my second partition I see a segfault at the 3rd 1 GiB file. The others seem to do okay.
This is a PR that will create a tree on a partition and exposes the same error message that I was seeing on my system. The annoying thing is, I have to have the random-sized file creation turned on. to see my issue, so I don't have a simple test case. I saw that you called for a test program in #109 . This is hopefully that program. Happy to discuss further. Again, thank you for this project.

I realized a little bit later that I can seed the random number generator so there can be a deterministic test case. I will update the code.

Hi @mrbojangles3
So when writing a 1GB file you get a segfault, but only on the 3rd one? Does this occur with any fat32 filesystem? Or only in a disk with 2 partitions?
If your test case can highlight the issue, then hopefully we can resolve it. Post here when you have the test complete, we can run it and then get it fixed.

Something weird about the go proxy. Leave it for an hour and we can rerun tests.

@deitch , Thank you for your quick replies and willingness to work with on this.
I have updated the test code. The error I am seeing is:
$ ./fat32
panic: could not read directory entries for /b/sub50/blob

goroutine 1 [running]:
main.mkGigFile({0x575550?, 0xc000120000?}, {0x5452a3?, 0x54e64b?})
        /home/lblyth/repos/go-diskfs/filesystem/fat32/testdata/fat32.go:133 +0xa5
main.main()
        /home/lblyth/repos/go-diskfs/filesystem/fat32/testdata/fat32.go:31 +0x331

My limited (but expanding) knowledge of the FAT file system make me suspect that a directory entry is getting overwritten somehow. In the test code if you remove lines 30 and 31, so that only a single Gig file is made, the error changes from:
panic: could not read directory entries for /b/sub50/blob

to
panic: error reading directory /b/sub50/blob: path /b not found

@mrbojangles3 is that the error you were seeing before? In other words, does this test case now faithfully reproduce your issue?

Why are you getting lint errors on unchanged files? That is really strange.
Yeah, I just ran it locally, same version as in there v1.59.0. Maybe go version, it is sensitive to 1.23 vs 1.22? I will try locally.

@deitch yes, it should match the go version too

Yeah, that is it. Sigh. I will fix them.

To the best of my understanding, this reproduces my test case. On my system I actually see a a segfault. The path related errors are the same. my "/b" directory is unable to be found, when I call open on a file that will be a 1G file.

Oh, that linting is a pain. They include gosec, which has this aggressive G115, which complains about all of the integer overflow conversions, which are necessary.

That was harder than I wanted, but if you rebase, you should get past lint stuff

Do you mind squashing the commits do and cleaning up the base, so it is rebased on master, a clean single commit, rather than the merge commit?

go proxy misbehaving again.

apologies, I think I squashed one commit too many. Since I have your lint changes in.

Okay, I think this is what you wanted.

Yeah that looks right. Let's let CI run, and hope the go proxy issues have been resolved, but that's not us.

So now I don't get it. You added a test that should fail, and the tests all pass?

Apologies for being unclear. I modified the test code in fat32/testdata/fat32.go to show how I and perhaps the commenter in #109 were seeing issues with file creation, there was a request for example code. Perhaps I should have added this as a gist?

I am confused. #109 said that there is a failure when writing certain files, and I think you had said the same thing. Isn't the test you added to trigger that failure? Such that the tests will fail, and then we can fix it such that the tests will pass?

My takeaway from #109 was that an error occurred in file writing at around 50 files. I was seeing something similar in my usage of go-diskfs.
I have not modified the automated tests, but instead the code that resides inside of the testdata directory. I am still getting acclimated to the golang ecosystem and modifying the code I did was easier / quicker than adding a test.
I want to be a good contributor so it seems like the right thing to do is for me to modify one of the _internal_test.go files? I don't know for sure which internal test file will trigger the issue I have seen. But I suspect the fat32_internal_test.go?
Does the code I submitted run without issue for you?

Yeah, it does. Look at the CI right here. No problems. If you have an issue, it would be great to get a reproduction into the tests.

Closing to add test case in future PR


Networking daemon skipping some actions ?

This has me worried.
I am using a dell power-connect switch. The networking daemon is set to sleep for 2 seconds before it checks the journal again.
I have 3 ports on that switch.
1st port = gi1/0/10
2nd port = gi1/0/12
3rd port = gi1/0/23
I have a script that asks HIL to perform port_revert on those 3 ports. So for some reason, the networking server sometimes skips the 2nd port, and sometimes 2nd and 3rd both are skipped. Note: It logs out of the switch after working on the 1st port, and then logs back again for the 3rd port.
 Show node command showed that networks were still attached to my node whose port was skipped.
If I stop the networking daemon, and let the networking action table get filled with the 3 actions and then start the networking daemon; then it correctly performs revert port on all 3 ports (and there's no disconnect from the switch, it uses the same cached session object I guess). Alternatively, if I set the sleep time for the networking action daemon to 10 seconds, that also seems to work. Logs here.

Hrm. Can you see what the IDs that are being used in the database are?

Well, I can only see the ids if I stop the networking daemon and let the queue build. But that's not the problem scenario.
When the networking daemon is running, I can't see the ids because the database is cleared pretty quickly. Perhaps, I can put a print statement in the daemon to print the ID it's handling?

Turns out the version of HIL it is running is before we fixed https://github.com/CCI-MOC/hil/issues/314 via #856
Though, this issue was not discussed there (or discovered at that point).
I setup everything up again with the latest version of HIL and this time it ran without any issues. I used the same powerconnect switch.

Can you see what the IDs that are being used in the database are?

Turns out the version of HIL on which I ran into this issue is before we fixed https://github.com/CCI-MOC/hil/issues/314 via #856
Though, this problem was not discussed on that issue (or discovered at that point).
I setup everything up again with the latest version of HIL and this time it ran without any issues. I used the same powerconnect switch.

Can you see what the IDs that are being used in the database are?

On the older version of HIL (the problem setup), I put in a statement to print out action.id and it was in fact skipping some IDs (399, 401, 402; skipped 400). Looking at the acces logs at confirms that the request for port_revert on all 3 ports was passed correctly.
<IP_ADDRESS> - - [09/Nov/2017:20:04:41 +0000] "GET /node/slurm-compute1 HTTP/1.1" 200 185 "-" "python-requests/2.18.4"
<IP_ADDRESS> - - [09/Nov/2017:20:04:41 +0000] "POST /switch/powerconnect/port/gi1/0/10/revert HTTP/1.1" 200 - "-" "python-requests/2.18.4"
<IP_ADDRESS> - - [09/Nov/2017:20:04:42 +0000] "GET /node/slurm-compute2 HTTP/1.1" 200 185 "-" "python-requests/2.18.4"
<IP_ADDRESS> - - [09/Nov/2017:20:04:43 +0000] "POST /switch/powerconnect/port/gi1/0/12/revert HTTP/1.1" 200 - "-" "python-requests/2.18.4"
<IP_ADDRESS> - - [09/Nov/2017:20:04:43 +0000] "GET /node/slurm-compute3 HTTP/1.1" 200 185 "-" "python-requests/2.18.4"
<IP_ADDRESS> - - [09/Nov/2017:20:04:44 +0000] "POST /switch/powerconnect/port/gi1/0/23/revert HTTP/1.1" 200 - "-" "python-requests/2.18.4"
<IP_ADDRESS> - - [09/Nov/2017:20:04:44 +0000] "GET /node/slurm-compute1 HTTP/1.1" 200 185 "-" "python-requests/2.18.4"
<IP_ADDRESS> - - [09/Nov/2017:20:04:45 +0000] "POST /switch/powerconnect/port/gi1/0/10/revert HTTP/1.1" 200 - "-" "python-requests/2.18.4"
<IP_ADDRESS> - - [09/Nov/2017:20:04:45 +0000] "GET /node/slurm-compute2 HTTP/1.1" 200 185 "-" "python-requests/2.18.4"
<IP_ADDRESS> - - [09/Nov/2017:20:04:46 +0000] "POST /switch/powerconnect/port/gi1/0/12/revert HTTP/1.1" 200 - "-" "python-requests/2.18.4"
<IP_ADDRESS> - - [09/Nov/2017:20:04:46 +0000] "GET /node/slurm-compute3 HTTP/1.1" 200 185 "-" "python-requests/2.18.4"
<IP_ADDRESS> - - [09/Nov/2017:20:04:47 +0000] "POST /switch/powerconnect/port/gi1/0/23/revert HTTP/1.1" 409 69 "-" "python-requests/2.18.4"

DEBUG:passlib.registry:registered 'sha512_crypt' handler: <class 'passlib.handlers.sha2_crypt.sha512_crypt'>
============= FROM NETWORKING DAEMON =============
399
DEBUG:hil.ext.switches.dell:Logged in to switch <hil.ext.switches.dell.PowerConnect55xx object at 0x3078d90>
DEBUG:hil.ext.switches.dell:Sending to switch <hil.ext.switches.dell.PowerConnect55xx object at 0x3078d90>: 'config'
DEBUG:hil.ext.switches.dell:Sending to switch <hil.ext.switches.dell.PowerConnect55xx object at 0x3078d90>: u'int gi1/0/10'
DEBUG:hil.ext.switches.dell:Sending to switch <hil.ext.switches.dell.PowerConnect55xx object at 0x3078d90>: 'sw trunk allowed vlan none'
DEBUG:hil.ext.switches.dell:Sending to switch <hil.ext.switches.dell.PowerConnect55xx object at 0x3078d90>: 'sw trunk native vlan none'
DEBUG:hil.ext.switches.dell:Sending to switch <hil.ext.switches.dell.PowerConnect55xx object at 0x3078d90>: 'exit'
DEBUG:hil.ext.switches.dell:Sending to switch <hil.ext.switches.dell.PowerConnect55xx object at 0x3078d90>: 'exit'
DEBUG:hil.ext.switches.dell:Sending to switch <hil.ext.switches.dell.PowerConnect55xx object at 0x3078d90>: 'exit'
DEBUG:hil.ext.switches._dell_base:Logged out of switch <hil.ext.switches.dell.PowerConnect55xx object at 0x3078d90>
============= FROM NETWORKING DAEMON =============
401
DEBUG:hil.ext.switches.dell:Logged in to switch <hil.ext.switches.dell.PowerConnect55xx object at 0x306a590>
DEBUG:hil.ext.switches.dell:Sending to switch <hil.ext.switches.dell.PowerConnect55xx object at 0x306a590>: 'config'
DEBUG:hil.ext.switches.dell:Sending to switch <hil.ext.switches.dell.PowerConnect55xx object at 0x306a590>: u'int gi1/0/23'
DEBUG:hil.ext.switches.dell:Sending to switch <hil.ext.switches.dell.PowerConnect55xx object at 0x306a590>: 'sw trunk allowed vlan none'
DEBUG:hil.ext.switches.dell:Sending to switch <hil.ext.switches.dell.PowerConnect55xx object at 0x306a590>: 'sw trunk native vlan none'
DEBUG:hil.ext.switches.dell:Sending to switch <hil.ext.switches.dell.PowerConnect55xx object at 0x306a590>: 'exit'
DEBUG:hil.ext.switches.dell:Sending to switch <hil.ext.switches.dell.PowerConnect55xx object at 0x306a590>: 'exit'
============= FROM NETWORKING DAEMON =============
402
DEBUG:hil.ext.switches.dell:Sending to switch <hil.ext.switches.dell.PowerConnect55xx object at 0x306a590>: 'config'
DEBUG:hil.ext.switches.dell:Sending to switch <hil.ext.switches.dell.PowerConnect55xx object at 0x306a590>: u'int gi1/0/10'
DEBUG:hil.ext.switches.dell:Sending to switch <hil.ext.switches.dell.PowerConnect55xx object at 0x306a590>: 'sw trunk allowed vlan none'
DEBUG:hil.ext.switches.dell:Sending to switch <hil.ext.switches.dell.PowerConnect55xx object at 0x306a590>: 'sw trunk native vlan none'
DEBUG:hil.ext.switches.dell:Sending to switch <hil.ext.switches.dell.PowerConnect55xx object at 0x306a590>: 'exit'
DEBUG:hil.ext.switches.dell:Sending to switch <hil.ext.switches.dell.PowerConnect55xx object at 0x306a590>: 'exit'
DEBUG:hil.ext.switches.dell:Sending to switch <hil.ext.switches.dell.PowerConnect55xx object at 0x306a590>: 'exit'
DEBUG:hil.ext.switches._dell_base:Logged out of switch <hil.ext.switches.dell.PowerConnect55xx object at 0x306a590>

Now I am not sure if the refactoring in #856 took care of this issue I am describing here but I couldn't reproduce this with the newer version of HIL. I tested like 40 revert port operations (cycling on 4 switchports) and it ran without a hitch. We still don't know the issue with the old hil setup; so I am unsure if I should close this issue or keep it open.

Note to self: always ask if bugs can be reproduced on master.
Hypothesis: previously, this statement was deleting the actions that were being skipped:
https://github.com/CCI-MOC/hil/pull/856/files#diff-d550c3bbac185ae67f8c46d3b6b44586L105
The current implementation makes that impossible because it specifically deletes the actions it saw, rather than just saying "delete all of them."
This would suggest that the transaction isolation we're getting isn't as strong as we expect; we probably should make sure we're clear on what the database actually provides. I think my hypothesis is consistent with at least cursor stability, which is one of the weakest guarantees that gets called a "transaction." Need to brush up on some of the theory to remind myself how things work.
I'm going to look in to what guarantees postgres & sqlite provide. If those are consistent with my hypothesis I'll close this, since it means the bug was in fact fixed by #856. But we should also document what developers are allowed to assume.

After discussing this with Naved and reviewing the code, the newer version explicitly deletes the actions as it is processing each action.  Yes, this uses more SQL statements, and more commits.  However it doesn't depend on how Flash-SQLAlchemy implements transactions in a db.session, which seems to be the source of confusion.
If this were process large datasets, then spending ~30 milliseconds per action could be source of inefficiency.  But, in this case, given the relative small size of the dataset and the infrequency of the operations, the benefits of having a robust solution out weights the optimizations attempted in the old implementation.
Furthermore, the optimizations that I would recommend in the future would be more along the lines of getting n actions (ideally with a row level lock - but a table lock will also do), process the n actions deleting as you go, and commit after processing the block (relating either the row level lock or the table level lock).  This way you don't lock out other processes.
Although it is important to investigate Flask-SQLAlchemy, I feel this investigation is beyond the scope of this issue.

Also worth noting the cost of hitting the switch is likely dramatically higher than anything we're doing with the database. I think any kind of optimization work here is premature.
I think we should close this one; the actual problem is fixed, and I agree with @robbaronbu that working out the semantics of Flask-SQLAlchemy is out of scope.

Thanks @robbaronbu for looking into this! I am gonna close this now.


Broken dependencies

When installing this bundle through composer I receive the following error messages:
Package guzzle/common is abandoned, you should avoid using it. Use guzzle/guzzle instead.
Package guzzle/stream is abandoned, you should avoid using it. Use guzzle/guzzle instead.
Package guzzle/parser is abandoned, you should avoid using it. Use guzzle/guzzle instead.
Package guzzle/http is abandoned, you should avoid using it. Use guzzle/guzzle instead.

Should bundle dependencies be updated?

It's related to Ratchet not Clank.
In all case nothing is broken, it's just abandonned. When ratchet will upgrade to newer guzzle version the warning will disapear.
But if ratchet make BC, clank will not follow because he is currently abandonned.


Standard templates for adding new external authentications

It would be nice if Gogs would support a set of standard templates for the external authentications.
That would make it far easier to configure for common systems like OpenLDAP, OpenDS, Apache Directory Server, Microsoft Active Directory, etc.

Once I figure out how to configure it for MS AD I can provide good defaults for that at least.


Fix copy buttons on the debug window (another method)

[x] Bugfix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)

Proposed changes
As I mentioned in #3329, the document.execCommand("copy") is deprecated. So, in this pull request, I used the navigator.clipboard.writeText(value) instead of that. Could you select #3329 or this pull request to merge?
Checklist

[x] I have read the contribution guidelines
[ ] For non-bugfix PRs, I have discussed this change on the forum/slack team.
[x] I have run grunt to verify the unit tests pass
[ ] I have added suitable unit tests to cover the new/changed functionality

Coverage decreased (-0.007%) to 67.354% when pulling ba794ba58c406e086bb53be7273461db6e0671db on kazuhitoyokoi:master-fixcopybutton2 into aaa2b4c3db0f8bba9e2de909de8e1c97f15cdab4 on node-red:master.

I had avoided adopting the modern API as there had been a request from Hitachi to keep IE11 working. If that isn't a hard requirement any more, then we can certainly consider this alternative.

Thank you for your consideration. Because IE will be ended this year, I think that we can drop IE. We will soon finish migration from v1.x to 2.x not using IE.

Thank you! It will be useful on multiple displays.

Okay, I understand that. I tried the API on localhost environment only...:pray:

Same issue in v2.1.5 (Docker).


Incorrect Yoda condition error

Hi,
With WPCS 0.11, I get a Yoda condition error on the line:
$sample = false !== strpos( $link, '%pagename%' );

I believe that it is a false positive and looks to be the same issue as #509
I don't get any error if I modify the code to:
$sample = ( false !== strpos( $link, '%pagename%' ) );

Thanks for the bug report @Chouby. I've opened #1037 to fix this issue.

Thanks :)


[Roadmap] Make markdown tutorials for camel/messages.py

Description
Describe your changes in detail.
Motivation and Context
Why is this change required? What problem does it solve?
#132

[ ] I have raised an issue to propose this change (required for new features and bug fixes)

Types of changes
What types of changes does your code introduce? Put an x in all the boxes that apply:

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds core functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)
[x] Documentation (update in the documentation)
[ ] Example (update in the folder of example)

Implemented Tasks

[ ] Subtask 1
[x] Subtask 2
[ ] Subtask 3

Checklist
Go over all the following points, and put an x in all the boxes that apply.
If you are unsure about any of these, don't hesitate to ask. We are here to help!

[x] I have read the CONTRIBUTION guide. (required)
[x] My change requires a change to the documentation.
[ ] I have updated the tests accordingly. (required for a bug fix or a new feature)
[x] I have updated the documentation accordingly.

Objective: Create a tutorial about the {BaseMessage} class, including examples based on source code and unit test cases.
Prompts:

Source Code: Examine the source code of the {BaseMessage} class and its unit test cases to understand its implementation and functionality.
Introduction: Write an introduction to the {BaseMessage} class, explaining its purpose.
Creating a {BaseMessage} instance: Explain how to create a {BaseMessage} instance.
Describe the properties of the {BaseMessage} class and provide an example of using them.
Explain the method of the {BaseMessage} class and provide an example of using them.
Conclusion: Summarize the key points of the tutorial and encourage readers to try using the {BaseMessage} class in their projects.

Source Code:
class BaseMessage:
    r"""Base class for message objects used in CAMEL chat system.

    Args:
        role_name (str): The name of the user or assistant role.
        role_type (RoleType): The type of role, either
            :obj:`RoleType.ASSISTANT` or :obj:`RoleType.USER`.
        meta_dict (Optional[Dict[str, str]]): Additional metadata dictionary
            for the message.
        role (str): The role of the message in OpenAI chat system, either
            :obj:`"system"`, :obj:`"user"`, or :obj:`"assistant"`.
        content (str): The content of the message.
    """
    role_name: str
    role_type: RoleType
    meta_dict: Optional[Dict[str, str]]
    role: str
    content: str

    def to_user_chat_message(self) -> "UserChatMessage":
        r"""Converts the message to a :obj:`UserChatMessage` object.

        Returns:
            UserChatMessage: The converted :obj:`UserChatMessage` object.
        """
        return UserChatMessage(
            role_name=self.role_name,
            role_type=self.role_type,
            meta_dict=self.meta_dict,
            content=self.content,
        )

    def to_assistant_chat_message(self) -> "AssistantChatMessage":
        r"""Converts the message to an :obj:`AssistantChatMessage` object.

        Returns:
            AssistantChatMessage: The converted :obj:`AssistantChatMessage`
                object.
        """
        return AssistantChatMessage(
            role_name=self.role_name,
            role_type=self.role_type,
            meta_dict=self.meta_dict,
            content=self.content,
        )

    def to_openai_message(self, role: Optional[str] = None) -> OpenAIMessage:
        r"""Converts the message to an :obj:`OpenAIMessage` object.

        Args:
            role (Optional[str]): The role of the message in OpenAI chat
                system, either :obj:`"system"`, :obj:`"user"`, or
                obj:`"assistant"`. (default: :obj:`None`)

        Returns:
            OpenAIMessage: The converted :obj:`OpenAIMessage` object.
        """
        role = role or self.role
        if role not in {"system", "user", "assistant"}:
            raise ValueError(f"Unrecognized role: {role}")
        return {"role": role, "content": self.content}

    def to_openai_chat_message(
        self,
        role: Optional[str] = None,
    ) -> OpenAIChatMessage:
        r"""Converts the message to an :obj:`OpenAIChatMessage` object.

        Args:
            role (Optional[str]): The role of the message in OpenAI chat
                system, either :obj:`"user"`, or :obj:`"assistant"`.
                (default: :obj:`None`)

        Returns:
            OpenAIChatMessage: The converted :obj:`OpenAIChatMessage` object.
        """
        role = role or self.role
        if role not in {"user", "assistant"}:
            raise ValueError(f"Unrecognized role: {role}")
        return {"role": role, "content": self.content}

    def to_openai_system_message(self) -> OpenAISystemMessage:
        r"""Converts the message to an :obj:`OpenAISystemMessage` object.

        Returns:
            OpenAISystemMessage: The converted :obj:`OpenAISystemMessage`
                object.
        """
        return {"role": "system", "content": self.content}

    def to_openai_user_message(self) -> OpenAIUserMessage:
        r"""Converts the message to an :obj:`OpenAIUserMessage` object.

        Returns:
            OpenAIUserMessage: The converted :obj:`OpenAIUserMessage` object.
        """
        return {"role": "user", "content": self.content}

    def to_openai_assistant_message(self) -> OpenAIAssistantMessage:
        r"""Converts the message to an :obj:`OpenAIAssistantMessage` object.

        Returns:
            OpenAIAssistantMessage: The converted :obj:`OpenAIAssistantMessage`
                object.
        """
        return {"role": "assistant", "content": self.content}

    def to_dict(self) -> Dict:
        r"""Converts the message to a dictionary.

        Returns:
            dict: The converted dictionary.
        """
        return {
            "role_name": self.role_name,
            "role_type": self.role_type.name,
            **(self.meta_dict or {}),
            "role": self.role,
            "content": self.content,
        }

Unit Test Cases:
def base_message() -> BaseMessage:
    return BaseMessage(
        role_name="test_user",
        role_type=RoleType.USER,
        meta_dict={"key": "value"},
        role="user",
        content="test content",
    )

Based on these prompts, source code, and unit test cases, create a comprehensive tutorial that explains the {BaseMessage} class and provides examples of its usage.

Add a session  to introduce its subclasses SystemMessage, AssistantSystemMessage, UserSystemMessage, ChatMessage, AssistantChatMessage, and UserChatMessage, and some default properties are pre-defined in these subclasses.
@dataclass
class SystemMessage(BaseMessage):
    r"""Class for system messages used in CAMEL chat system.

    Args:
        role_name (str): The name of the user or assistant role.
        role_type (RoleType): The type of role, either
            :obj:`RoleType.ASSISTANT` or :obj:`RoleType.USER`.
        meta_dict (Optional[Dict[str, str]]): Additional metadata dictionary
            for the message.
        role (str): The role of the message in OpenAI chat system.
            (default: :obj:`"system"`)
        content (str): The content of the message. (default: :obj:`""`)
    """
    role_name: str
    role_type: RoleType
    meta_dict: Optional[Dict[str, str]] = None
    role: str = "system"
    content: str = ""

@dataclass
class AssistantSystemMessage(SystemMessage):
    r"""Class for system messages from the assistant used in the CAMEL chat
    system.

    Args:
        role_name (str): The name of the assistant role.
        role_type (RoleType): The type of role, always
            :obj:`RoleType.ASSISTANT`.
        meta_dict (Optional[Dict[str, str]]): Additional metadata dictionary
            for the message.
        role (str): The role of the message in OpenAI chat system.
            (default: :obj:`"system"`)
        content (str): The content of the message. (default: :obj:`""`)
    """
    role_name: str
    role_type: RoleType = RoleType.ASSISTANT
    meta_dict: Optional[Dict[str, str]] = None
    role: str = "system"
    content: str = ""

@dataclass
class UserSystemMessage(SystemMessage):
    r"""Class for system messages from the user used in the CAMEL chat system.

    Args:
        role_name (str): The name of the user role.
        role_type (RoleType): The type of role, always :obj:`RoleType.USER`.
        meta_dict (Optional[Dict[str, str]]): Additional metadata dictionary
            for the message.
        role (str): The role of the message in OpenAI chat system.
            (default: :obj:`"system"`)
        content (str): The content of the message. (default: :obj:`""`)
    """
    role_name: str
    role_type: RoleType = RoleType.USER
    meta_dict: Optional[Dict[str, str]] = None
    role: str = "system"
    content: str = ""

@dataclass
class ChatMessage(BaseMessage):
    r"""Base class for chat messages used in CAMEL chat system.

    Args:
        role_name (str): The name of the user or assistant role.
        role_type (RoleType): The type of role, either
            :obj:`RoleType.ASSISTANT` or :obj:`RoleType.USER`.
        meta_dict (Optional[Dict[str, str]]): Additional metadata dictionary
            for the message.
        role (str): The role of the message in OpenAI chat system.
        content (str): The content of the message. (default: :obj:`""`)
    """
    role_name: str
    role_type: RoleType
    meta_dict: Optional[Dict[str, str]]
    role: str
    content: str = ""

@dataclass
class AssistantChatMessage(ChatMessage):
    r"""Class for chat messages from the assistant role used in CAMEL chat
    system.

    Args:
        role_name (str): The name of the assistant role.
        role_type (RoleType): The type of role, always
            :obj:`RoleType.ASSISTANT`.
        meta_dict (Optional[Dict[str, str]]): Additional metadata dictionary
            for the message.
        role (str): The role of the message in OpenAI chat system.
            (default: :obj:`"assistant"`)
        content (str): The content of the message. (default: :obj:`""`)
    """
    role_name: str
    role_type: RoleType = RoleType.ASSISTANT
    meta_dict: Optional[Dict[str, str]] = None
    role: str = "assistant"
    content: str = ""

@dataclass
class UserChatMessage(ChatMessage):
    r"""Class for chat messages from the user role used in CAMEL chat system.

    Args:
        role_name (str): The name of the user role.
        role_type (RoleType): The type of role, always :obj:`RoleType.USER`.
        meta_dict (Optional[Dict[str, str]]): Additional metadata dictionary
            for the message.
        role (str): The role of the message in OpenAI chat system.
            (default: :obj:`"user"`)
        content (str): The content of the message. (default: :obj:`""`)
    """
    role_name: str
    role_type: RoleType = RoleType.USER
    meta_dict: Optional[Dict[str, str]] = None
    role: str = "user"
    content: str = ""

MessageType = Union[BaseMessage, SystemMessage, AssistantSystemMessage,
                    UserSystemMessage, ChatMessage, AssistantChatMessage,
                    UserChatMessage]
SystemMessageType = Union[SystemMessage, AssistantSystemMessage,
                          UserSystemMessage]
ChatMessageType = Union[ChatMessage, AssistantChatMessage, UserChatMessage]

Based on all the test cases and codes mentioned above, optimize the following tutorial documents again:
Supplemented unit test cases:
def test_base_message():
    role_name = "test_role_name"
    role_type = RoleType.USER
    meta_dict = {"key": "value"}
    role = "user"
    content = "test_content"

    message = BaseMessage(role_name=role_name, role_type=role_type,
                          meta_dict=meta_dict, role=role, content=content)

    assert message.role_name == role_name
    assert message.role_type == role_type
    assert message.meta_dict == meta_dict
    assert message.role == role
    assert message.content == content

    user_message = message.to_user_chat_message()
    assert user_message.role_name == role_name
    assert user_message.role_type == role_type
    assert user_message.meta_dict == meta_dict
    assert user_message.role == "user"
    assert user_message.content == content

    assistant_message = message.to_assistant_chat_message()
    assert assistant_message.role_name == role_name
    assert assistant_message.role_type == role_type
    assert assistant_message.meta_dict == meta_dict
    assert assistant_message.role == "assistant"
    assert assistant_message.content == content

    openai_message = message.to_openai_message()
    assert openai_message == {"role": role, "content": content}

    openai_chat_message = message.to_openai_chat_message()
    assert openai_chat_message == {"role": role, "content": content}

    openai_system_message = message.to_openai_system_message()
    assert openai_system_message == {"role": "system", "content": content}

    openai_user_message = message.to_openai_user_message()
    assert openai_user_message == {"role": "user", "content": content}

    openai_assistant_message = message.to_openai_assistant_message()
    assert openai_assistant_message == {
        "role": "assistant",
        "content": content
    }

    dictionary = message.to_dict()
    assert dictionary == {
        "role_name": role_name,
        "role_type": role_type.name,
        **(meta_dict or {}), "role": role,
        "content": content
    }

def test_system_message():
    role_name = "test_role_name"
    role_type = RoleType.USER
    meta_dict = {"key": "value"}
    content = "test_content"

    message = SystemMessage(role_name=role_name, role_type=role_type,
                            meta_dict=meta_dict, content=content)

    assert message.role_name == role_name
    assert message.role_type == role_type
    assert message.meta_dict == meta_dict
    assert message.role == "system"
    assert message.content == content

    dictionary = message.to_dict()
    assert dictionary == {
        "role_name": role_name,
        "role_type": role_type.name,
        **(meta_dict or {}), "role": "system",
        "content": content
    }

def test_base_message_to_dict(base_message: BaseMessage) -> None:
    expected_dict = {
        "role_name": "test_user",
        "role_type": "USER",
        "key": "value",
        "role": "user",
        "content": "test content",
    }
    assert base_message.to_dict() == expected_dict

def test_system_message_to_dict(system_message: SystemMessage) -> None:
    expected_dict = {
        "role_name": "test_assistant",
        "role_type": "ASSISTANT",
        "role": "system",
        "content": "test system message",
    }
    assert system_message.to_dict() == expected_dict

the current tutorial document to be optimized:
# Tutorial: Working with the `BaseMessage` Class

In this tutorial, we will explore the `BaseMessage`, `SystemMessage`, `AssistantSystemMessage`, `UserSystemMessage`, `ChatMessage`, `AssistantChatMessage`, and `UserChatMessage` class. The topics covered include:

1. Introduction to the `BaseMessage` class
2. Creating a `BaseMessage` instance
3. Understanding the properties of the `BaseMessage` class
4. Using the methods of the `BaseMessage` class`BaseMessage`
5. Subclasses of `BaseMessage`

## Introduction

The `BaseMessage` class is the base class for message objects used in the CAMEL chat system. It is designed to provide a consistent structure for the messages in the system and allow for easy conversion between different message types.

## Creating a `BaseMessage` Instance

To create a `BaseMessage` instance, you need to provide the following arguments:

- `role_name`: The name of the user or assistant role.
- `role_type`: The type of role, either `RoleType.ASSISTANT` or `RoleType.USER`.
- `meta_dict`: An optional metadata dictionary for the message.
- `role`: The role of the message in the OpenAI chat system, either `"system"`, `"user"`, or `"assistant"`.
- `content`: The content of the message.

Here's an example of creating a `BaseMessage` instance:

```python
from camel.messages import BaseMessage, RoleType

message = BaseMessage(
    role_name="test_user",
    role_type=RoleType.USER,
    meta_dict={"key": "value"},
    role="user",
    content="test content"
)

Understanding the Properties of the BaseMessage Class
The BaseMessage class has the following properties:

role_name: A string representing the name of the user or assistant role.
role_type: An instance of the RoleType enumeration, indicating whether the role is a user or an assistant.
meta_dict: A dictionary containing additional metadata for the message.
role: A string representing the role of the message in the OpenAI chat system.
content: A string containing the content of the message.

In the example provided earlier, the role_name is "test_user", the role_type is RoleType.USER, the meta_dict is {"key": "value"}, the role is "user", and the content is "test content".
Using the Methods of the BaseMessage Class
The BaseMessage class provides methods for converting the message to different message types, such as UserChatMessage, AssistantChatMessage, and various OpenAI message types. Here are some examples:

Converting to a UserChatMessage object:

from camel.messages import UserChatMessage

user_chat_message = message.to_user_chat_message()
assert isinstance(user_chat_message, UserChatMessage)

Converting to an AssistantChatMessage object:

from camel.messages import AssistantChatMessage

assistant_chat_message = message.to_assistant_chat_message()
assert isinstance(assistant_chat_message, AssistantChatMessage)

Converting to an OpenAIMessage object:

openai_message = message.to_openai_message()
assert openai_message == {"role": "user", "content": "test content"}

Converting to a dictionary:

message_dict = message.to_dict()
assert message_dict == {
    "role_name": "test_user",
    "role_type": "USER",
    "key": "value",
    "role": "user",
    "content": "test content"
}

These methods allow you to convert a BaseMessage instance into different message types depending on your needs.
Subclasses of BaseMessage
In this session, we will introduce the subclasses of the BaseMessage class. Each of these subclasses has some default properties pre-defined, making it convenient to create message instances of specific types.

SystemMessage is a class for system messages used in the CAMEL chat system. By default, the role is set to "system" and the content is an empty string ""

AssistantSystemMessage is a class for system messages from the assistant role used in the CAMEL chat system. By default, the role_type is set to RoleType.ASSISTANT, the role is set to "system", and the content is an empty string "".

UserSystemMessage is a class for system messages from the user role used in the CAMEL chat system. By default, the role_type is set to RoleType.USER, the role is set to "system", and the content is an empty string "".

ChatMessage is a base class for chat messages used in the CAMEL chat system. By default, the content is an empty string "".

AssistantChatMessage is a class for chat messages from the assistant role used in the CAMEL chat system. By default, the role_type is set to RoleType.ASSISTANT, the role is set to "assistant", and the content is an empty string "".

UserChatMessage is a class for chat messages from the user role used in the CAMEL chat system. By default, the role_type is set to RoleType.USER, the role is set to "user", and the content is an empty string "".

These subclasses allow you to create message instances with specific roles and types easily. You can use them to create, manage, and manipulate messages in the CAMEL chat system with more context and clarity.

Thanks for the first PR @tczhangzhi! I will merge this PR for now but will rework it later since the messages.py has been refactored.


hdfs bytes support

What do these changes do?

Related issue number

Fixes

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.1 out of 2 committers have signed the CLA.:white_check_mark: sighingnow:x: andydiwenzhuandydiwenzhu seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.

And, please use the email that been used to sign the CLA to submit your commit.

Codecov Report

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

@@           Coverage Diff           @@
##           dev/io      #25   +/-   ##
=======================================
  Coverage   76.43%   76.43%
=======================================
  Files          52       52
  Lines        3688     3688
=======================================
  Hits         2819     2819
  Misses        869      869


BUG - dask integration example not working

Expected behavior
That the code sample executes on the pre-provisioned dask cluster and that the optuna to dask distributed integration is working seamlessly.
Environment

Optuna version:
Python version: python3.9
OS: Debian GNU/Linux 11 (airflow packaged container)
(Optional) Other libraries and their versions:
optuna == 3.1.0b0
joblib == 1.2.0
dask == 2022.12.1
distributed == 2022.12.1

Error messages, stack traces, or logs
[2023-01-03, 00:00:14 UTC] {taskinstance.py:1851} ERROR - Task failed with exception
Traceback (most recent call last):
File "/home/airflow/.local/lib/python3.9/site-packages/airflow/decorators/base.py", line 188, in execute
return_value = super().execute(context)
File "/home/airflow/.local/lib/python3.9/site-packages/airflow/operators/python.py", line 175, in execute
return_value = self.execute_callable()
File "/home/airflow/.local/lib/python3.9/site-packages/airflow/operators/python.py", line 193, in execute_callable
return self.python_callable(*self.op_args, **self.op_kwargs)
File "/opt/airflow/dags/root_dag.py", line 93, in run_optimization
storage = optuna.integration.DaskStorage(InMemoryStorage())
File "/home/airflow/.local/lib/python3.9/site-packages/optuna/_experimental.py", line 115, in wrapped_init
_original_init(self, *args, **kwargs)
File "/home/airflow/.local/lib/python3.9/site-packages/optuna/integration/dask.py", line 446, in init
self.client.run_on_scheduler(_register_with_scheduler, storage=storage, name=self.name)
File "/home/airflow/.local/lib/python3.9/site-packages/distributed/client.py", line 2740, in run_on_scheduler
return self.sync(self._run_on_scheduler, function, *args, **kwargs)
File "/home/airflow/.local/lib/python3.9/site-packages/distributed/utils.py", line 339, in sync
return sync(
File "/home/airflow/.local/lib/python3.9/site-packages/distributed/utils.py", line 406, in sync
raise exc.with_traceback(tb)
File "/home/airflow/.local/lib/python3.9/site-packages/distributed/utils.py", line 379, in f
result = yield future
File "/home/airflow/.local/lib/python3.9/site-packages/tornado/gen.py", line 762, in run
value = future.result()
File "/home/airflow/.local/lib/python3.9/site-packages/distributed/client.py", line 2691, in _run_on_scheduler
response = await self.scheduler.run_function(
File "/home/airflow/.local/lib/python3.9/site-packages/distributed/core.py", line 1155, in send_recv_from_rpc
return await send_recv(comm=comm, op=key, **kwargs)
File "/home/airflow/.local/lib/python3.9/site-packages/distributed/core.py", line 945, in send_recv
raise exc.with_traceback(tb)
File "/opt/conda/lib/python3.9/site-packages/distributed/core.py", line 820, in _handle_comm
File "/opt/conda/lib/python3.9/site-packages/distributed/worker.py", line 3217, in run
File "/opt/conda/lib/python3.9/site-packages/distributed/protocol/pickle.py", line 73, in loads
ModuleNotFoundError: No module named 'optuna'
# error messages, stack traces, or logs

Steps to reproduce

take code used and rerun

Reproducible examples (optional)
From https://github.com/cherusk/godon/blob/master/breeder/linux_network_stack/root_dag.py#L83
# Essentially the example code

import optuna
from optuna.storages import InMemoryStorage
from optuna.integration import DaskStorage
from dask.distributed import Client
from dask.distributed import wait

def run_optimization():
            # boilerplate from https://jrbourbeau.github.io/dask-optuna/

            def objective(trial):
                x = trial.suggest_uniform("x", -10, 10)
                return (x - 2) ** 2

            with Client(address="godon_dask_scheduler_1:8786") as client:
                # Create a study using Dask-compatible storage
                storage = optuna.integration.DaskStorage(InMemoryStorage())
                study = optuna.create_study(storage=storage)
                # Optimize in parallel on your Dask cluster
                futures = [
                    client.submit(study.optimize, objective, n_trials=10, pure=False)
                    for i in range(10)
                ]
                wait(futures)
                print(f"Best params: {study.best_params}")

optimization_step = run_optimization()

Additional context (optional)
The end of the trace is quite strange, because nothing was installed via conda. All comes in via pip:
https://github.com/cherusk/godon/blob/master/Dockerfile-airflow#L3
optuna meant to run as backend of godon project: https://github.com/cherusk/godon

Maybe @jrbourbeau, because he authored the example code!?

Could you try import optuna on your environment?

@nzw0301 yes, you can see the import also in the code snippet I provided.
But I ran it manually now also in the airflow container:
airflow@56d394fe9f60:/opt/airflow$ python3
Python 3.9.15 (main, Oct 25 2022, 05:49:37)
[GCC 10.2.1 20210110] on linux
>>> import optuna
>>>

It succeeded as you can see. That the error stems from the dask workers I doubt, because it fails already at the  optuna.integration.DaskStorage step.

Thanks, can you import DaskStorage like
airflow@56d394fe9f60:/opt/airflow$ python3
Python 3.9.15 (main, Oct 25 2022, 05:49:37)
[GCC 10.2.1 20210110] on linux
>>> from optuna.integration import DaskStorage

On 1/4/23 06:23, Kento Nozawa wrote:

Thanks, can you import |DaskStorage| like
@.***:/opt/airflow$ python3
Python 3.9.15 (main, Oct 25 2022, 05:49:37)
[GCC 10.2.1 20210110] on linux

from optuna.integration import DaskStorage

—
Reply to this email directly, view it on GitHub
https://github.com/optuna/optuna-examples/issues/157#issuecomment-1370501986,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACR3TYWXMQB35RE2QAMTWJTWQUCMBANCNFSM6AAAAAATPPPMCY.
You are receiving this because you authored the thread.Message ID:
@.***>

Yes, also that works when done manually.
I've done that now manually for all components to be imported, with success:
@.***:/opt/airflow$ python3
Python 3.9.15 (main, Oct 25 2022, 05:49:37)
[GCC 10.2.1 20210110] on linux

from optuna.integration import DaskStorage
from dask.distributed import Client
from dask.distributed import wait

The example does also does not state the version requirements at the point when it worked. :cry:

I've found the issue.
The installs on the scheduler and the workers was done with conda, that's where this was coming from.
File "/opt/conda/lib/python3.9/site-packages/distributed/core.py", line 820, in _handle_comm
File "/opt/conda/lib/python3.9/site-packages/distributed/worker.py", line 3217, in run
File "/opt/conda/lib/python3.9/site-packages/distributed/protocol/pickle.py", line 73, in loads

Installing the pre-release version of optuna on the target dask cluster solved the issue. :flushed:


Project updated to target .NET Standard 2.0 instead of .NET Core for better compatibility

Package for this solution in nuget only supports .NET Core 2.2 which I tried to use in one of my class libraries. But it didn't work because my library was targetted for .NET Standard 2.0. By adding support for .NET Standard 2.0, this library will be available for large number of other project types as well.
This pull request contains changes only for project files to target .NET Standard 2.0 and made change in InvocationContext.cs to support libraries in .NET Standard 2.0.
Edit: Removed additional reference for .NET Core found in SimpleProxy project file

Thanks for the interest in the project, and the PR. I'll take a look at this over the weekend and accept if applicable. Async Interceptors is something I'd started looking at, so I'm pleased you've taken that one away from me ;-)

It's my pleasure. 😊 I didn't send the PR for async interceptors yet. Thought to send it after you merge this one. Since you are checking over the weekend, I'll cancel this and make new PR with everything. 😇

From: Robert Perry<EMAIL_ADDRESS>Sent: Friday, April 26, 2019 1:36:28 PM
To: f135ta/SimpleProxy
Cc: Sachira Chinthana Jayasanka; Author
Subject: Re: [f135ta/SimpleProxy] Project updated to target .NET Standard 2.0 instead of .NET Core for better compatibility (#3)
Thanks for the interest in the project, and the PR. I'll take a look at this over the weekend and accept if applicable. Async Interceptors is something I'd started looking at, so I'm pleased you've taken that one away from me ;-)
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Ff135ta%2FSimpleProxy%2Fpull%2F3%23issuecomment-486967592&data=02|01||ede8e8bdf4634851bca408d6ca1e1628|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|636918627900054894&sdata=MPTRvjl222jCSiRSrG0JsXey8yN9l2unvVJQkGhTQFo%3D&reserved=0, or mute the threadhttps://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAADSCSB5ZRNYHRVAQHLZQ3LPSKZYJANCNFSM4HISO4FQ&data=02|01||ede8e8bdf4634851bca408d6ca1e1628|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|636918627900064816&sdata=ccm%2FpWnHn%2B0hvc6ZZj885cetG7xbHmzqN8g3iVqvP6M%3D&reserved=0.


Post-review for #1865

[x] Switch to passing around the hash.Hash value from sha256.New() rather than custom 64-bit hashing
[x] Stable sort the keys of the maps before hashing

addressed by: https://github.com/TBD54566975/ftl/pull/1911


[🐞] useStore reactivity is broken if key isn't initialized in store object

Which component is affected?
Qwik Runtime
Describe the bug
I am updating a store with an optional key. What I expect is downstream reactivity to occur based on the store's change. What actually is happening is no changes occur.
Reproduction
https://stackblitz.com/edit/qwik-starter-dgqpxj?file=src%2Froutes%2Findex.tsx
Steps to reproduce
Copied from reproduction link above:
  const signalWithInit = useSignal('init');
  const signalWithoutInit = useSignal<string | undefined>();

  const storeWithInit = useStore<{ value: string }>({ value: 'init' });
  const storeWithoutInit = useStore<{ value?: string }>({});

  useVisibleTask$(
    () => {
      signalWithInit.value = 'visible-task';
      signalWithoutInit.value = 'visible-task';

      storeWithInit.value = 'visible-task';
      storeWithoutInit.value = 'visible-task';
    },
    { strategy: 'document-ready' }
  );

storeWithoutInit.value will not trigger any downstream changes (e.g. rendering content or triggering tracks).
System Info
System:
    OS: macOS 13.3.1
    CPU: (10) arm64 Apple M1 Pro
    Memory: 931.25 MB / 32.00 GB
    Shell: 5.9 - /bin/zsh
  Binaries:
    Node: 18.13.0 - ~/.nvm/versions/node/v18.13.0/bin/node
    npm: 8.19.3 - ~/.nvm/versions/node/v18.13.0/bin/npm
  Browsers:
    Chrome: 113.0.5672.92
    Firefox Developer Edition: 113.0
    Safari: 16.4
  npmPackages:
    @builder.io/qwik: ^1.1.1 => 1.1.1
    @builder.io/qwik-city: ^1.1.1 => 1.1.1
    undici: ^5.22.1 => 5.22.1
    vite: 4.3.5 => 4.3.5

Additional Information
Here's the same repro code as above but in v1.0.0:
https://stackblitz.com/edit/qwik-starter-odovoh?file=src%2Froutes%2Findex.tsx
It does render/function as expected there.
The workaround I'm going to attempt is to not have any optional keys in my store types and instead have it defaulted to undefined instead.

This is a regression between 1.0.0 and 1.1.0
1.0.0 Playground
1.1.0 Playground

We got a fix!

Short question,
since it's about broken reactivity and it was introduced with v1.1.0,
could it fix the context reactivity problem too? https://discord.com/channels/842438759945601056/1106601727458824302/1106601727458824302

@Zeiver the discord thread does not have much source code i can use to reproduce

https://stackblitz.com/edit/node-xenwez?file=src/components/starter/example/example.tsx
So I only created a 1.1.0 version, but it's the same problem.
If I give the store an initial value even if it's undefined for { text?: string } then it works.
@manucorporat
And I gave up on stackblitz, tried to create anything in that and nothing is working.
Create a new repo, pushed my stuff there and loaded it with stackblitz.


Back friend

Created backend routes and controller logic for friends and finding a user using a query string.

Code looks very nice, and tested in front of me! Great Job :+1:


Update composer.json to support php7.

Update service provider and README with new version number.

Coverage remained the same at 100.0% when pulling 1f87f37c54532bb4d4deac4ab2754ff3bb624df7 on candasm:4.2 into 31f3c1b153646f397c8d3b36beae36ae089611d6 on shift31:4.2.


Bounds: Make lower and upper keyword-only to avoid mistakes

Since both have the same type, it is very confusing if someone writes Bounds(1, 2). Which is which? It should force users to use Bounds(lower=1, upper=2).

Now that Bounds will be renamed to Interval (#19) I'm not so convinced about this, for intervals I think it is much more obvious that it should be start, end, so closing for now. Feel free to reopen if you don't agree!


Update staging smoke tests

Targeting stagingSmokeTests branch.
Old launch with buttons use <svg>s insteads of <img>s.
Tested this alongside https://github.com/dockstore/dockstore-ui2/pull/1281, and reran the smoke tests a few times in circleCI: https://app.circleci.com/pipelines/github/dockstore/dockstore-ui2?branch=feature%2F1829%2FchangeStagingProdSmokeTests

From discussion of other PR, based on the current 1 "plan" looks like stagingSmokeTest is not created correctly. It says Angular 12 which is clearly dev

Closing in favor of #1287


Logger is not displaying anything

A simple graph with a 'makeString' and a 'consoleOutput' does not show anything in the logger window. Is it normal? According to first image example the logger should also capture consoleOutput.
I tried with pyflow 2.0.2 in a clean and new conda environement (installed from conda-forge)

Option "redirect output" was unchecked in the preferences/General. It is working now

Option "redirect output" was unchecked in the preferences/General. It is working now


kinflate: Separate 'resources' from 'packages'

I've been trying kinflate and have two feedbacks:
1. Should not be forced to use 'overlays'
The initial proposal differentiated Overlays and BaseManifests but we later concluded that they could be merged into the resource Manifest, which can optionally include other Manifests.
In the current version, a user can't inflate a package that doesn't reference an another package
$ kinflate -f pkg/kinflate/examples/simple/package/
error: open pkg/kinflate/examples/simple/package/deployment/deployment.yaml/Kube-manifest.yaml: not a directory

simple/package/Kube-manifest.yaml  is a valid manifest and the expected output is:
---
apiVersion: v1
kind: Service
metadata:
  annotations: {}
  labels:
    app: mungebot
  name: mungebot-service
spec:
  ports:
  - port: 7002
  selector:
    app: mungebot
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  annotations: {}
  labels:
    app: mungebot
  name: mungebot
spec:
  replicas: 1
  template:
    annotations: {}
    metadata:
      labels:
        app: mungebot
    spec:
      containers:
      - env:
        - name: foo
          value: bar
        image: nginx
        name: nginx
        ports:
        - containerPort: 80

2. Can't include new resources in 'overlays'
The resources field is used for two distinct purposes and they can't be mixed

Reference other packages
Include resources

It should be possible to include additional resources to a package (e.g. an ingress)
I propose to add a new field 'packages'  instead of mixing them under the resources field.
packages:
  ../../package
resources:
 - files/ingress.yaml

cc @monopole / @mengqiy

fixed by #225 and #270


[Request] Magnet Link Support

Could you please support magnet link creation alongside torrent creation, thanks.

Sure thing.


Col should specify flex-direction

The default value of flex-direction is row.

Please elaborate the issue ;) Thanks


Add includes to individual Meltano yaml files to ref clean Singer yaml

Migrated from GitLab: https://gitlab.com/meltano/hub/-/issues/37
Originally created by @tayloramurphy on 2021-04-16 19:13:37

For each tap and target we will create a syntax that references the clean Singer yaml spec for every tap and target. On the YAML we'll have the overrides / additions for each setting and other Meltano-specific items that discovery.yml cares about.

As the spec is defined for Singer Taps and Targets for the Hub and for the SDK, we'll have to translate from those specs into what's required and useful for Meltano.
For example, one of the key things we document in target-bigquery is how the load_schema is set based on their configuration in the extractor. https://meltano.com/plugins/loaders/bigquery.html#dataset-id That information shouldn't be on the Hub, but it will need to be synced with the hub to work well with Meltano.
2021-05-04 - We're bumping this up in priority to make the sync the clean yaml spec in the hub easier for Meltano. We'll have an includes: syntax and then Meltano-specific things to make the sync easier.

View 22 previous comments from the original issue on GitLab


[BUG] version update GitHub workflow is broken

Describe the bug
Reviewing the GitHub action logs the version job is broken because of an issue referencing the version Java file

Adding bwc version 2.7.1 after 2.7.0
Adding V_2_7_1 after V_2_7_0
sed: can't read server/src/main/java/org/opensearch/Version.java: No such file or directory
Error: Process completed with exit code 2.

https://github.com/opensearch-project/OpenSearch/actions/runs/4865699230/jobs/8676359444


CAMEL-13968: resolved HTTP header case sensitivity while parsing

CAMEL-13968: resolved HTTP header case sensitivity while parsing

This can be closed I think.


Review of FAQs related to Release 1.12 /-4987/-4988

FAQs prüfen, inwieweit Einträge hinsichtlich der Unterstützung von iOS 12.5 (ältere iPhones) angepasst werden müssen
FAQs 1x durchscrollen und prüfen, ob für 1.12 noch weitere Anpassungen notwendig sind (Stichwort "exposure history")

EXPOSUREAPP-4987
EXPOSUREAPP-4988

https://www.coronawarn.app/en/faq/#minimum_requirements

@dsarkar
Could you please clarify internally what we should do with the ios-minimum-required-os-version?
Because we can't just state that iOS 12.5 is the minimum required since the app will not work on iOS 13.0 - 13.7.
I hope you understand what I mean 😅👍

Also the requirements will need to be updated on related websites in the FAQ hierarchy:

https://www.bundesregierung.de/breg-de/themen/corona-warn-app/corona-warn-app-faq-1758392#toggledown-content-7
https://www.bundesregierung.de/breg-de/themen/corona-warn-app/corona-warn-app-englisch/corona-warn-app-faq-1758636#toggledown-content-7
https://www.rki.de/DE/Content/InfAZ/N/Neuartiges_Coronavirus/WarnApp/Warn_App.html

@MikeMcC399 Thanks. Will forward info.
@Ein-Tim
I suggest:
"
Keep operating systems up-to-date (iOS 12.5.x for iPhone 6, and iOS 14.4 resp. at least iOS 13.7 for iPhone 6s and newer models or at least Android 6 with current Google Play Services)
"

@dsarkar
Yeah this sounds good, but maybe we should consider to add a small new FAQ entry to the FAQs explaining this a bit more detailed to avoid confusion?

@dsarkar
The statement is a bit difficult to read. Maybe it would be better as a list?
Also it doesn't seem to cover the same list of iOS phones are the latest blog https://www.coronawarn.app/en/blog/2021-02-04-cwa-1-12-announcement/
"With version 1.12, the Corona-Warn-App will be compatible with iOS 12.5 so that owners of older iPhones, such as the iPhone 5s, 6, and 6plus, can use the app."
I'm not sure if the following is correct for iOS, but @Ein-Tim can say:

Device
Operating System
Minimum
Preferred
Additional

iPhone 5s, 6, and 6plus
iOS
12.5
12.5.1

all other Apple
iOS
13.7
14.4

any Android
Android
6
latest for device
current Google Play services

If you stay with the one-line explanation "resp." as an abbreviation in English is not common. Better to write it in full as "respectively".
In "Google Play services", Google does not capitalise the word "services"
See https://play.google.com/store/apps/details?id=com.google.android.gms

@MikeMcC399
What you wrote is correct and I definitely think that we should do it in this list, although it's a bit more complicated to update from our side (new OS version), but I think this should work!
We could use https://www.coronawarn.app/en/faq/#minimum_requirements for this, or?

@dsarkar / @Ein-Tim
In https://www.coronawarn.app/en/faq/#minimum_requirements it discusses about v2 ENF. How does iOS 12.5 work with CWA 1.12? Will it use v2 or is it going to use the old v1? That information probably needs to be discussed and it could go in the table I proposed.

@MikeMcC399 iOS 12.5 will use v2 of the ENF.

@Ein-Tim

iOS 12.5 will use v2 of the ENF. We should definetly update it and do it in an table to make it clearer.

 So is 12.5 an new update which Apple will load onto iPhone 5s, 6, and 6plus phones, and it contains v2? Or how does this work?

You're right, seems like this is perfect for this case.

So is 12.5 an new update which Apple will load onto iPhone 5s, 6, and 6plus phones, and it contains v2? Or how does this work?

Yes, iOS 12.5 has been rolled out to devices which don't support iOS 13 (so they stopped updating with iOS 12.4.x) to give the users of the iPhone 6, iPhone 6 Plus and iPhone 5s an opportunity to use the ENF.
There was a problem with iOS 12.5 so they rolled out a bug fix (iOS 12.5.1).

IMHO what is the most confusing about all of this is that we can't state that you need iOS 12.5 or higher to use CWA since iOS 13.0 - 13.6.1 are not supported (iOS 13.0 - 13.4.1 didn't support the ENF and iOS 13.5 - 13.6.1 are not supported anymore by CWA (because v2 of the ENF came with iOS 13.7))

@EIn-Tim @MikeMcC399 Thanks. Table looks good indeed.
Question is: Nice short statement on min. requirements on the homepage. Maybe link to FAQ with table for details?
So:
I suggest:
"
Keep operating systems up-to-date (iOS 14.4 or iOS 12.5.1 depending on your iPhone model or at least Android 6 with current Google Play Services, respectively) More details here
"
"
Betriebssysteme aktuell halten (iOS 14.4 oder mindestens iOS 13.7, iOS 12.5.1 oder mindestens 12.5 für iPhone 5s, 6, 6Plus bzw. mindestens Android 6 mit aktuellen Google Play Services)
"

@dsarkar / @Ein-Tim
You should probably explain what options a user with iOS 13.5 and 13.6 has. And I don't know the answer.
If a user already has an older version of CWA installed which was compatible with the versions of iOS 13.5 & 13.6 will the older version of CWA continue to work? If it doesn't work any more is it always possible to update iOS to at least 13.7, or are there some models which can't be updated? (I understand a bit more about the compatibilities, now that I read https://developer.apple.com/documentation/exposurenotification/supporting_exposure_notifications_in_ios_12_5).

@MikeMcC399

You should probably explain what options a user with iOS 13.5 and 13.6 has. And I don't know the answer.

They only have the option to either continue to use CWA 1.7 or lower or to update their OS.

If a user already has an older version of CWA installed which was compatible with the versions of iOS 13.5 & 13.6 will the older version of CWA continue to work?

I assume that users on iOS versions lower than 13.7 can't update to CWA 1.9 or higher (the App Store will stop them from doing so).
Starting with version 1.12 there will be a screen which is shown to all users on iOS versions between 13.0 and 13.6.1 informing them to update iOS (https://github.com/corona-warn-app/cwa-app-ios/pull/1818)

If it doesn't work any more is it always possible to update iOS to at least 13.7, or are there some models which can't be updated?

All devices which can run iOS 13 can also run iOS 14, so everybody on any iOS 13 version is able to update to the newest iOS 14 version.

@Ein-Tim
Thanks for explaining to me. In that case the table I did doesn't need more explanation. It's good to read that the 1.12 iOS app will also take responsibility for advising the user about updating iOS.
@dsarkar

Keep operating systems up-to-date (iOS 14.4 or iOS 12.5.1 depending on your iPhone model or at least Android 6 with current Google Play Services, respectively)

Knowing the background information from @Ein-Tim your statement sounds good!

@Ein-Tim  @MikeMcC399 FYI
Since last Friday minimum supported CWA is release 1.5.
In the AppStores, some users run into popup notifications to update CWA (apparently still using < 1.5 (!)) but could not do so, since they had not updated to iOS 13.7 or higher. Decision to update
https://www.coronawarn.app/de/faq/#minimum_requirements
before release 12.5.

@dsarkar

Since last Friday minimum supported CWA is release 1.5.
In the AppStores, some users run into popup notifications to update CWA (apparently still using < 1.5 (!)) but could not do so, since they had not updated to iOS 13.7 or higher.

That is a significant change and although https://www.coronawarn.app/en/ and https://www.bundesregierung.de/breg-de/themen/corona-warn-app/corona-warn-app-englisch/corona-warn-app-faq-1758636 already say the minimum iOS version is 13.7, the change from 13.5 hasn't been explicitly announced.
Probably there should be a blog post announcing the change (maybe together with the announcement for CWA version 1.12.0 since this is also very close). It would be good not only to announce the change, but also to explain the reason for enforcing the minimum version. Iirc correctly on Android it was only previously enforced that 1.0.5 was the minimum installed version.

DE - Suggestion:
AKTUELL 8. Februar 2021
Seit dem 5.   Dabei muss beachtet werden, dass möglicherweise zuvor auch das iOS Betriebssytem auf aktuellen Stand gebracht werden muss:

Bitte führen Sie zunächst ein Update Ihrer iOS-Version durch. Auch ältere Smartphones, wie bspw. das iPhone SE, 6S oder 6S Plus unterstützen das neueste iOS Betriebssystem. Sie können Ihr iPhone somit mindestens auf iOS 13.7 aktualisieren. Aus Sicherheitsgründen sollten Sie ihr iPhone immer aktuell halten, da Apple auch regelmäßig kleinere Sicherheitslücken mit den Updates behebt. Sie können dies auf Ihrem iPhone unter Einstellungen – Allgemein – Softwareupdate durchführen.

 Inzwischen ist bereits Version 1.11 verfügbar. Wir bitte Sie daher, Ihre Corona-Warn-App zu aktualisieren.

In der CWA Version 1.12 werden auch die ältere iPhone Modelle iPhone 5s, iPhone 6, iPhone 6plus unterstützt.

[Apple/iOS]: Die App läuft auf iOS-Smartphones ab dem iPhone 6s.
[Google/Android]: Die App läuft auf Smartphones ab Android 6.
Weitere Fragen zu den Betriebssystemen können nur die Hersteller selbst beantworten.

@dsarkar
I checked on Android and after installing CWA 1.0.0 I got a popup to say I have to update. I didn't get that message after installing then trying to run CWA 1.3.1 for instance. So I wonder what is being enforced for Android. I will take a look again later at this.

PR https://github.com/corona-warn-app/cwa-website/pull/852

@dsarkar
On Android I see in the debug logs
minVersionFromServer:31
https://www.apkmirror.com/apk/robert-koch-institut/corona-warn-app/corona-warn-app-1-0-4-release/corona-warn-app-1-0-4-android-apk-download/ shows
Version: 1.0.4 (31)
So CWA Android is enforcing a minimum version of 1.0.4, not 5.1.0.

@dsarkar
Could you please check about the statement that only Version 1.5 is supported and that users will be prompted to update?
For Android versionName 1.5.0 the versionCode was 47 and I am seeing only versionCode 31 being forced by the server configuration parameters.
Is the forced update already supposed to be implemented for Android? Am I interpreting the information correctly? You wrote that the support changed starting on Feb 5, 2021.
See the following for versionName / versionCode
https://github.com/corona-warn-app/cwa-app-android/blob/0f12f4ddbd814ac368901858363f7835bb30b9a8/Corona-Warn-App/build.gradle#L43-L44

@MikeMcC399 My understanding is they rolled it back on the server for Android, but kept min version 1.5 for iOS.

@MikeMcC399 FYI https://github.com/corona-warn-app/cwa-server/pull/1138/files

@dsarkar
Now I'm confused because according to https://github.com/corona-warn-app/cwa-server/pull/1138/files
min-android-version-code:
was changed on Jan 25, 2021
from 31 to 48
min-android-version-code: ${ANDROID_MIN_VERSION_CODE:48}
and I can't see any record of it being reverted to 31!?
Are there server parameter changes being made which are not recorded in GitHub?

@Ein-Tim

Could you please clarify internally what we should do with the ios-minimum-required-os-version?

for the moment let use that one for iPhone 6s and above, i.e. currently 13.7
we update 12.5.1 for older models manually where necessary. We Will discuss internally if it is appropriate to create a new variable


Change base image to SLE Micro for Rancher

As SLE Micro for Rancher is out (http://registry.suse.com/suse/sle-micro-rancher/5.2) we can now base os2 on that image.
This card is potentially tight to https://github.com/rancher-sandbox/cOS-toolkit/issues/1238 as changing directly the base image might not just work due to layout incompatibilities with leap.

Dockerfile https://github.com/rancher-sandbox/os2/blob/master/Dockerfile#L1

Blocked by https://github.com/rancher-sandbox/cOS-toolkit/issues/1238

As part of this card I'll change a bit the build process to take into account of several aspects:

sandboxed builds (Ideally the same build process should be working on OBS/IBS)
split os2 and ros-installer


was refused - did you specify the right host or port?

if i do this:
kubectl delete crd prometheuses.monitoring.coreos.com
kubectl delete crd prometheusrules.monitoring.coreos.com
kubectl delete crd servicemonitors.monitoring.coreos.com
kubectl delete crd podmonitors.monitoring.coreos.com
kubectl delete crd alertmanagers.monitoring.coreos.com
kubectl delete crd thanosrulers.monitoring.coreos.com
this helm 'helm install my-pro ./prometheus-operator --namespace monitoring'  has ge error. was refused - did you specify the right host or port?

🚧 This chart is now deprecated.
Further development has moved to prometheus-community/helm-charts. The chart has been renamed kube-prometheus-stack to more clearly reflect that it installs the kube-prometheus project stack, within which Prometheus Operator is only one component.
If applicable, please re-open this issue there. Thanks!


tsm-client: use libxcrypt-legacy, drop openssl_1_1, use concatLines in module

Description of changes
The main purpose of the pull request at hand is to fix tsm-client: We have to switch from libxcrypt to libxcrypt-legacy as tsm-client still needs libcrypt.so.1.
The pull request also fixes a mistake I did long ago which lead to the inclusion of openssl 1.1 as dependency.  Reverting that mistake also facilitates the efforts of https://github.com/NixOS/nixpkgs/issues/210452 .
Finally, I'm using the opportunity to replace occurences of lib.concatStringsSep "\n" by the new lib.concatLines in the tsm-client NixOS module.
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[x] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[x] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.05 Release Notes (or backporting 22.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

More:

Both tests derivations (cli and gui) build/pass.
Also successfully tested with a real tsm-server (uploaded some files for backup without errors/problems).  The connection is encrypted, which indicates that tsm-client again successfully uses its own lib{crypto,ssl}.so implementation.
To ensure the new lib.concatLines doesn't introduce errors in the generated config file, I declared two server entries and compared the generated config files before and after the change.  The results match, up to insignificant empty lines.

Result of nixpkgs-review run on x86_64-linux 1

1 package blacklisted:

nixos-install-tools

2 packages built:

tsm-client
tsm-client-withGui

The pull request also fixes a mistake I did long ago which lead to the inclusion of openssl 1.1 as dependency. Reverting that mistake also facilitates the efforts of #210452 .

AFAICT those are some versions of openssl, so replacing them with our (likely more modern, but ABI compatible) version isn't a bad idea IMO.
However, since this is closed source software and they already ship this version of openssl and openssl_1_1 will be removed eventually, this is probably the way to go.
Personally, I wouldn't vouch for the security of the libraries bundled with this, but I've already said that it's proprietary, so that's probably a given.
I mean, there's ./opt/tivoli/tsm/client/api/bin64/libcrypto.so.1.0.2 from one of the rpms, which I'd assume is OpenSSL 1.0.2, which went EOL 2019-12-09.

Personally, I wouldn't vouch for the security of the libraries bundled with this, but I've already said that it's proprietary, so that's probably a given.

I wouldn't either, but there are likely many more libraries bundled with tsm-client, and IBM regularly publishes updates with security fixes in one of those libraries (e.g. there have been a couple of updates due to log4j).  We just have to hope/assume that IBM patches vulnerabilities in all bundled libraries (hopefully even in OpenSSL 1.0) in a timely manner.
It would be good to have this merged before the NixOS 23.05 branch-off to have a working tsm-client in the next stable release.


Document minimal environment for using latex and other tools in a JupyterHub

@fperez is doing some work at the moment investigating this! Hopefully we can circle back and get this into the docs for other people who are creating whole environments.

https://github.com/berkeley-dsep-infra/datahub/pull/4277

Also add imagemagik for image conversions (optional, but helpful).

Also see this PR by @fperez:

https://github.com/berkeley-dsep-infra/datahub/pull/4298


[WIP] [storage] Balance Storage Overhaul

Changes

[x] Use big.Int bytes format to store amount
[x] Don't use txn.Scan when updating balance
[x] cache most recent balance

[x] update during orphan

[x] Don't store pruning index, last reconciled index, and current balance on same record
[x] Count accounts seen and accounts reconciled

[x] Use in EstimatedReconciliationCoverage
[x] Update accounts reconciled in block syncing loop so that account txs don't conflict

[ ] Rollback counts when deleting account records (conditionally remove reconciliation if exists)
[ ] Don't error if reconciled orphaned account (could be a race where we delete account while reconciling)
[ ] Add tests (blocked by https://github.com/coinbase/rosetta-sdk-go/pull/254)

Pull Request Test Coverage Report for Build 12234

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

Totals

Change from base Build 12213:
1.5%

Covered Lines:
5331

Relevant Lines:
6652

💛  - Coveralls

Hi @patrick-ogrady
Do you have timeline on this PR completion?

Hi @patrick-ogrady
Do you have timeline on this PR completion?

Looking to have this all merged and released by Tuesday! Thanks for your patience!


Flow visibility test on kind fail constantly in old release

The Kind test "E2e tests on a Kind cluster on Linux for Flow Visibility" keep failing when it's run on old release 1.11 and 1.12.
e.g.:https://github.com/antrea-io/antrea/actions/runs/5295909048/jobs/9586763980?pr=5145#logs
The error shows:
 2023/06/17 03:11:47 Checking CoreDNS deployment
    fixtures.go:263: Deploying ClickHouse
    flowaggregator_test.go:166: Error when setting up test: services "clickhouse-clickhouse" not found
--- FAIL: TestFlowAggregator (36.55s)

Not sure if it's related with image or manifest update, @wsquan171 @heanlan  could you take a look? Thanks.

Closing as FA e2e test enhancement is now merged to release 1.11 and 1.12.


Wallet Connect Minor Bug

Describe the bug
After connecting MetaMask wallet, when we click on "TomoChain" or "MoonBeam" tab and go back to Ethereum tab, MetaMask wallet gets disconnected and need to reconnect it. (see attached gif).
To Reproduce
Steps to reproduce the behavior:

Go to 'https://app.poolz.finance/dashboard'
Click on 'Connect a Wallet' and connect using MetaMask
Click on 'TomoChain' tab
Click on 'Ethereum' tab
See bug - need to connect wallet again.

Expected behavior
I expect Poolz to remember when wallet is already connected and switching tabs shouldn't disconnect it and require a user to reconnect it again and again every time they change chain.
Screenshots

Desktop (please complete the following information):

OS: Windows 10
Browser Chrome
Version 87.0.4280.141 (Official Build) (64-bit)

Wallet address
0xC229eaB0B6D74E9D8BE4CCF4b22FBC7a46DCaE78

this is the main issue #19
thanks for the report.

this is the main issue #19
thanks for the report.