User Selector Attribute - Feature Addition

Add an attribute type that allows one to select a user into the core.

The ability to select multiple users may be useful too.

Definitely a thumbs up from me for this attribute. Making a multi select user attribute would be very helpful as well. My current setup utilises a number of Proforms attributes such as a multi select users. A user select attribute would definitely aid the transfer to V8 of C5.

I seem to remember that someone had already done some work on a multi user select attribute, but there were issues
https://github.com/concrete5/concrete5/issues/4696

I've alredy started to implement this (as a package) because i see tons uf use Cases for it. Especially in conjunction with Events (Event participation) and other Users (Relationships between Users)
I thought to set it up to also be able to select Groups and even multiple Groups.
Generally making it as flexible as possible.
Do you think i should hand it in to the marketplace or go streight ahead and create a PR for the core?
Also i would be very interested in what happend to the work in https://github.com/concrete5/concrete5/issues/4696 and why it was closed without explanation/ before the issues could be resolved.

@haeflimi We would really like it and the page selector attribute (found here: https://github.com/concrete5/page_selector_attribute) rolled into the core. The Image/File attribute is already in the core, it makes sense for the user attribute and page attribute to be in there too.

I see this less as a multiple user selector and more a single user selector – just like the page selector. I think there are more use cases for a single user selector than multiple –perhaps a multiple user selector in the marketplace?

https://github.com/a3020/multi_user_selector_attribute

I've created a PR for a very basic user_selector implementation to the core. As i've seen somebody already created the page_selector so i've peeked in there and tried to do the implementation as similar as possible.

I really would love to have Express be able to work against Users and Groups in the Concrete5 environment, especially if they are LDAP/AD domain users!
I am seriously considering using Express to build a site where users can interact with Express objects in all kinds of ways. Such as, forming a team for a tournament, and naturally users are parts of a team object, and then that team gets positioned in brackets and stuff like that.
This would be seriously awesome if we could get this baked in native. And ways for Users and Groups to join/leave Express objects through various means, not only join.

Any word on this? D:

We are waiting for #6833

@mlocati that to me looks like the user component is "done" just needs to be added. Am I reading that right?
Also, for groups, would that be a separate thing, or what? I was going to ask if that could also do groups, but not sure if that would be a useful request in #6833 , thoughts?

@BloodyIron
I think the user_selector attribute is done.
Since i figured it probably won't be accepted into the core i've wiped up a very basic package implementation for a group_selector.:
https://github.com/haeflimi/group_selector_attribute
I haven't really tested it yet. - Feel free to do so and create an issue if you encounter any problems with it.
I'll probably add some extra features in the future and put it on the marketplace at some point.

@haeflimi do you know if the user_selector is going mainline? If so, has a milestone been discussed?
Is it more that the group_selector you don't think will make it mainline? Or both won't make mainline? Either way, why do you think one/both won't make mainline?
Thanks for your help btw! :D I know this is going to be super helpful to many, not just me! :D

@BloodyIron
@aembler wrote in a earlier comment:

We would really like it and the page selector attribute rolled into the core.

So i guess the usere_selector is going to make it into the core (with 8.5 i hope) while the group_selector is not. Simply because the Core team desn't see enough use cases for it, to have it in the core.
I strongly disagree on that point. - But it's not up to me.

@haeflimi also, any word as to if we'll be able to test this out in their beta stream?

WE DID IT!

So uhhh is this making it into 8.5.0? If so, can we get it attached to the milestone? D: I NEED this in my life!

btw, when an Express Entity only has the User Attribute type, and it has an association with another Express Entity, and that second entity tries to select a User that signed up in the first one, it only sees a numerical value (serial of entry), not the actual User Attribute value itself (Username).
Any chance we can get this corrected?

Um, anyone game for responding to my above inquiry? :S

@aembler bump? above? Seems like a small shortcoming with this part for Express.
Also, any way to force an Express Form/Entity/wtvr/anything that uses User Selector Attribute to default "and lock" to the user "logged in"? This way who filled it out becomes data you can interact with, just like other Express Entity Attributes, etc.


adding support for the curve BLS12-381g1

Did you make any minimal test?

Did you plan to add any sig/ver scheme?

my bad i didn't want to make a PR out of it. Just wanted to test keypair generation on that particular curve no sign/verify operations involved


Crowdin action creates no pull request

Heyo,
I'm looking forward to use the GitHub action to pull translations from Crowdin.
I added the action to the following repository, but it doesn't create a pull request: https://github.com/NotMyFault/design-library-plugin
I configured the action to export approved strings only and create a pull request based on it, however, no pull request is created.
I approved a string on my crowdin enterprise instance beforehand.
The workflow file is available here: https://github.com/NotMyFault/design-library-plugin/blob/master/.github/workflows/crowdin.yml
The project is named "dlib" on https://intellectualsites.crowdin.com/
The unsuccessful workflow is here: https://github.com/NotMyFault/design-library-plugin/actions/runs/2061347585
I hope someone could help me out.
Thanks in advance!

Hi @NotMyFault!
Probably you have enabled the Skip untranslated files option in your Crowdin Enterprise project and there are no fully translated files in any language. The warning ⚠  Couldn't find any file to download means that there are no files in the extracted archive downloaded from Crowdin.
Please make sure you have fully translated files or just disable this option.

Thanks for your quick response, that actually was it. I wasn't sure whether I need to enable it but it seems that the action already takes care of it.
Unfortunately, it doesn't create a PR still, it fails with the error
! [remote rejected] l10n_crowdin_action -> l10n_crowdin_action (refusing to allow a GitHub App to create or update workflow.github/workflows/crowdin.ymlwithoutworkflowspermission)
https://github.com/NotMyFault/design-library-plugin/runs/5749938987?check_suite_focus=true#step:4:51
Is there anything else I need to configure?

@NotMyFault please try to select workflow permission for the GH Token used for this Action

@NotMyFault please try to select workflow permission for the GH Token used for this Action

The workflow token already has read and write permission

I've now granted explicit permission via
permissions:
  actions: write

though it used to work before without.
Anyway, it now fails with
remote: Permission to NotMyFault/design-library-plugin.git denied to github-actions[bot].
fatal: unable to access 'https://github.com/NotMyFault/design-library-plugin.git/': The requested URL returned error: 403

https://github.com/NotMyFault/design-library-plugin/runs/5750401457?check_suite_focus=true#step:4:51
Any recommendations?

@VBeytok could you please assist with the permissions?

I got it working by setting explicit permission on the workflow:
permissions:
  actions: write
  contents: write
  pull-requests: write

Yet that looks to be a logic flaw somewhere, because the default permission is write on everything if not changed in the Actions tab.

I got everything working so far with this hacky solution, I've set skip_untranslated_strings: true and skip_untranslated_files: true
and the workflow complains about
❌ Some of the command options are invalid. Check the following parameters:
	- Sorry, you cannot skip strings and files simultaneously. Please use one of these parameters instead.

If I enable only skip_untranslated_strings I end up with untranslated files and if I set only skip_untranslated_files I don't get partly translated files with only a few strings if not everything is translated yet.
Is there no middleway to only get translated strings and skip untranslated files?

@NotMyFault using only skip_untranslated_files will allow you to download only those files, that are fully translated. As a result - you will receive only translated files without untranslated ones.

@NotMyFault using only skip_untranslated_files will allow you to download only those files, that are fully translated. As a result - you will receive only translated files without untranslated ones.

I figured, but I was wondering if there is no intermediary way to ship only parts of translated strings, like you can do through the web interface.
skip_untranslated_strings creates this PR: https://github.com/NotMyFault/design-library-plugin/pull/3/files
This is almost what I want; partly translated files are shipped while untranslated strings are ignored, however, it creates empty files which are not yet translated which I want to skip.

@NotMyFault probably the only way is to use skip_untranslated_files

That'll work for my use case, I guess. Thanks for your help so far.


Release v0.14.0 with support for rustdoc v23.

Fixes #210 as well.

This release will also fix #210.

What was the issue, by the way?

As is frequently the case in complex systems, many things happened to all go wrong at once.
I released and upgraded everything to trustfall_core v0.1.1, which by cargo's semver rules is a major version bump compared to v0.0.7 which we were using previously. There were no API-breaking breaking changes between the two versions, but 0.0.x versions have the unfortunate property that every release is considered major and I wanted to get us out of that situation. Unfortunately, in the process I also got us into this situation: even though the Adapter types from trustfall_core v0.0.7 and v0.1.1 have identical definitions, they are not considered the same type because they are from different "major" versions.
This normally wouldn't have been a problem ... except our trustfall_rustdoc_adapter crate abuses cargo's willingness to install multiple major versions of a crate simultaneously, in order to get us easier maintenance of multiple rustdoc versions' adapters. Each rustdoc version uses a separate major version number, and trustfall_rustdoc depends on multiple major versions simultaneously to support multiple rustdoc versions at once. But that means that trustfall_rustdoc_adapter cannot make semver-safe breaking changes at all, since the major version number "means something else". And its public API leaks the trustfall_core::interpreter::Adapter type, so any major version bump in the trustfall_core crate is by definition breaking for trustfall_rustdoc_adapter.
And still, this normally wouldn't have been a problem ... except unlike previous times, this time I upgraded trustfall_rustdoc_adapter and trustfall_rustdoc to new trustfall_core versions, but did not immediately publish a new cargo-semver-checks version with the corresponding trustfall_core version bump there as well.
This also wouldn't normally have been a problem ... except our README didn't say to use cargo install --locked. The default cargo behavior is to upgrade to the latest version of each dependency that is still the same major version as the one requested by the crate, whereas --locked means "use whatever was in the Cargo.lock as published on crates.io." This resulted in a cargo-semver-checks that required trustfall_core v0.0.7 being used with a trustfall_rustdoc and trustfall_rustdoc_adapter that provided trustfall_core v0.1.1 implementations of the Adapter trait. The major version difference means these types aren't considered compatible, which explains the error reported in #210.
To avoid these situations in the future, we can use a defense-in-depth approach:

#213 updates the README to suggest --locked installs.
Future non-breaking trustfall_core updates won't have to be major releases since we're now in the 0.1.x range rather than 0.0.x.
If we need to make breaking trustfall_core changes, we should promptly release a new cargo-semver-checks version after releasing new trustfall_rustdoc and trustfall_rustdoc_adapter versions.
When cargo-semver-checks is merged into cargo itself, it won't need trustfall_rustdoc_adapter at all (and can avoid the semver risk entirely!) since it won't need to support multiple rustdoc versions — it'll ship with a specific Rust version and will only need the specific adapter for that rustdoc JSON format.

Any single one of these changes would have been enough to prevent the issue we saw here. By implementing all of them, we make it very difficult for this issue, and many similar issues, from happening in the future.


Update README.rst, index.rst, and project_maintenance.rst

Description

Closes #210
Update overview of the project, planned features, and feature criteria sections in README.rst and `index.rst
Remove instructions related to "v" for version and add link to conda-forge feedstock in project_maintenance.rst

Checklist

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] My changes generate no new warnings
[x] Any dependent changes have been merged and published in downstream modules

If applicable:

[ ] I have added tests that prove my fix is effective or that my feature works
[ ] New and existing unit tests pass with my changes (locally and CI/CD build)
[ ] I have commented my code, particularly in hard-to-understand areas
[x] I have made corresponding changes to the documentation
[ ] I have noted that this is a breaking change for a major release (fix or feature that would cause existing functionality to not work as expected)

GH Actions is experiencing degraded performance so the checks weren't running. I decided to bypass them for this PR to allow merging.


Applying spacing to properties other than margin and padding

When I started playing around with styled-system, one of the first things I wanted to do was apply spacing to properties other than margin and padding. There are loads of properties this might be useful for: top, right, bottom, left, grid-gap, text-indent, etc.
At first I thought I might be able to do this with responsiveStyle, but  I don't think that's the case, and I couldn't find anything else included to do this.
I hacked something together based on responsiveStyle, providing an API like this:
const FixedTR = styled.div`
  position: fixed;
  ${spaceStyle('pos', space => `
    top: ${space};
    right: ${space};
  `, 1)}
`

const App = () => (
  <FixedTR pos={[ 2, 3 ]} />
)

spaceStyle takes three arguments:

The property to read the scale from.
The function the space value is passed into, used to create the CSS rule/s at each breakpoint.
The default scale value.

It seems to work, but I haven't done a lot with it.
My question is; am I totally missing the point of styled-system? Is there a reason it doesn't do this already? It's possible this just isn't the intended use 😅. Or maybe there is a glaringly obvious way to do this, and I just didn't realise!
Example.
The source for spaceStyle:
import { util, constants } from 'styled-system'

const {
  get,
  arr,
  px,
  neg,
  num,
  breaks,
  media
} = util

const spaceStyle = (key, fn, defaultVal) => props => {
  const bp = breaks(props)
  const sc = get(props, 'theme.space', constants.space)

  const val = typeof props[key] !== 'undefined'
    ? props[key]
    : defaultVal

  return arr(val)
    .map(mx(sc))
    .map(fn)
    .map(media(bp))
    .reduce(merge, '')
}

export default spaceStyle

const mx = scale => n => {
  if (!num(n)) {
    return n
  }

  const value = scale[Math.abs(n)] || Math.abs(n)
  if (!num(value)) {
    return value
  }

  return px(value * (neg(n) ? -1 : 1))
}

const merge = (reduced, css) =>
  typeof css === 'string'
    ? reduced + css
    : merge(reduced, ` ${Object.keys(css)[0]} { ${Object.values(css)[0]} }`)

Thanks!

@juice49 I haven't tested this out, but I imagine this would work:
import styled from 'styled-components';
import { responsiveStyle } from 'styled-system';

const textIndent = responsiveStyle({
  prop: 'textIndent',
  cssProperty: 'textIndent',
  // Use the `space` scale from the theme.
  key: 'space'
});

const Indented = styled.div`
  ${textIndent}
`

The above solution doesn't work, but this does:
import styled from 'styled-components';
import { responsiveStyle } from 'styled-system';

const textIndent = responsiveStyle({
  prop: 'textIndent',
  cssProperty: 'textIndent',
  // This right here is the trick; it converts the value on the `scale` to a px value.
  numberToPx: true
});

const Indented = styled.div`
  ${textIndent}
`;

Hey @maxdeviant, thanks for the help!
I actually did try this, but as far as I can tell, it always results in the value passed being turned literally into pixels, rather than the corresponding value from the spacing scale.
i.e. 1 becomes 1px, not the corresponding value from the spacing scale (8px on the default spacing scale).
Quick example.

@juice49 Very possible that I was wrong about it pulling the value from the scale :sweat_smile:
I'll have a look at this more later. I think that if it doesn't currently work, I think the way to go would be adding another parameter to responsiveStyle telling it to map the value to a scale in the theme.

@maxdeviant Thanks! If you think that's a good solution, I'd be happy to take a look at putting a PR together for it.

To pick up values from your theme use the key argument. Example: https://github.com/jxnblk/styled-system/blob/master/src/border-radius.js

Funnily enough, I had tried both key and numberToPx separately, but now I see that it requires both in order to work :smile:
import styled from 'styled-components';
import { responsiveStyle } from 'styled-system';

const textIndent = responsiveStyle({
  prop: 'textIndent',
  cssProperty: 'textIndent',
  // Pull from the `space` key on the theme.
  key: 'space',
  // Converts the value from `space` to a px value.
  numberToPx: true
});

const Indented = styled.div`
  ${textIndent}
`;

Sorry I never followed this up! Thank you both for the help.


Cross icon is confusing in an input element

The icon used on input.is-invalid. There are a few tickets about this issue and some more thumbs up on them, but closed. Please, reconsider.
I also just found the icon confusing. It's usually used as a reset button, and I'm pretty sure IE or Edge uses such icon to reset the input value. Maybe use an exclamation mark.

I really think it should be fixed in v4. It's been added in 4.2 so it's not that v4 has been like that since the beginning. I would call it a regression.

I must say that a exclamation mark instead of the cross does work pretty well. Icon used in example:


3scale-backend backstage plugin error

I bump into an error (fetch is not defined) when run the 3scale-backend plugin, this is the log:
[1] 2023-06-14T05:12:06.400Z catalog info Discovering ApiEntities from 3scale https://3scale-admin.apps.ocp4.eu/ type=plugin target=ThreeScaleApiEntityProvider:dev
[1] 2023-06-14T05:12:06.401Z catalog error fetch is not defined type=plugin target=ThreeScaleApiEntityProvider:dev stack=ReferenceError: fetch is not defined
[1]     at listServices (/home/sgutierr/development/3scaleIntegration/emeassa/node_modules/@janus-idp/backstage-plugin-3scale-backend/dist/index.cjs.js:9:3)
[1]     at _ThreeScaleApiEntityProvider.run (/home/sgutierr/development/3scaleIntegration/emeassa/node_modules/@janus-idp/backstage-plugin-3scale-backend/dist/index.cjs.js:131:24)
[1]     at TaskWorker.fn (/home/sgutierr/development/3scaleIntegration/emeassa/node_modules/@janus-idp/backstage-plugin-3scale-backend/dist/index.cjs.js:105:24)
[1]     at TaskWorker.runOnce (/home/sgutierr/development/3scaleIntegration/emeassa/node_modules/@backstage/backend-tasks/dist/index.cjs.js:360:18).
We found a work around, adding " var fetch = require('node-fetch'); "  in this file<EMAIL_ADDRESS>and worked perfect.
_'use strict';
Object.defineProperty(exports, '_esModule', { value: true });
var fetch = require('node-fetch');
var catalogModel = require('@backstage/catalog-model');
var backendTasks = require('@backstage/backend-tasks');
.........

Hi, @sgutierr , this is related to the node version on your environment, on node version 16 node-fetch was required, and on version 18 no extra packages are required. Can you please try to use node version 18 and let us know the result.

Hi @fmenesesg , upgrading my node version to 18 works properly, thank you for your help!


Enable admin to decide group access to repository files

This fixes #2351, see also https://github.com/restic/restic/issues/2351#issuecomment-855791064
Since the directory mode doesn't allow the execute bit (search permission)
to be set regardless of umask the files don't need to have empty group
permissions to disallow group access. By default the missing group execute
access on the containing directory will block any read/write attempt on the
files.
The upside of this is that the sysadmin can choose to change the directory
permissions to allow group execute access since all repo directories are
created at init time and not touched again after that. This will then allow
the group access to the files.
Checklist

[x] I have read the Contribution Guidelines
[x] I have enabled maintainer edits for this PR
[ ] I have added tests for all changes in this PR
[ ] I have added documentation for the changes (in the manual)
[x] There's a new file in changelog/unreleased/ that describes the changes for our users (template here)
[ ] I have run gofmt on the code in all commits
[x] All commit messages are formatted in the same style as the other commits in the repo
[x] I'm done, this Pull Request is ready for review

This applies to the new mode also to the SFTP backend, which does not (cannot, at least not portably) honor the local umask.

Indeed the sftp backend handles this by chmod'ing instead:
internal/backend/sftp/sftp.go:277:
	// pkg/sftp doesn't allow creating with a mode.
	// Chmod while the file is still empty.
	if err == nil {
		err = f.Chmod(backend.Modes.File)
	}

This makes me wonder a bit.  If I understand the change correctly, the init of the repo requires an extra step, after creation, to change the permissions in the repo directories.  If that's true, I'd say it is likely to be more evident to users if an option is added to the init subfunction that allows local and sftp to backends to manage permissions in a way that permits multiple users explicitly.  It might need to have a group name, for example, so that it will, at a minimum, make the directories sticky for this group.
Making this an option for the repo means that it can be queried as part of the configuration.  Inspection of the setup further enables validation of the expected configuration.
That said, this is something that blocks an expected use case for restic, multiple contributing users to the backup data store with a local store.

On Sat, Nov 13, 2021 at 12:55:07PM -0800, Marc Singer wrote:

If I understand the change correctly, the init of the repo requires an
extra step, after creation, to change the permissions in the repo
directories.

Yeah you got that right. The user/admin has to do a chmod call after repo
init, but only once ever after that it all just works.

If that's true, I'd say it is likely to be more evident to users if an
option is added to the init subfunction that allows local and sftp to
backends to manage permissions in a way that permits multiple users
explicitly.

Just to be clear since you bring up sftp again: this PR makes the shared
repo use-case work for both local and sftp repos. Maybe I wasn't quite
clear on that point above.
The only problem with the sftp code is that the sftp server side can't
currently restict the modes further than what we set in restic because we
set the modes we want instead of taking the modes the file was created with
by the server side into account.
Do keep in mind however that the sftp umask was being ignored already and
this PR doesn't represent a change in behaviour on that end. So if an sftp
server was trying to restrict the file permissions that way it was already
broken :)

It might need to have a group name, for example, so that it will, at a
minimum, make the directories sticky for this group.

Right, or (default) ACLs could be used. But restic just doesn't need to be
involved with any of that. Since we're alreay in a situation where a user
has to create a system group to make this work I don't really see why we
would need a fancy option in the init command to do what a chmod call can
do.

Making this an option for the repo means that it can be queried as part
of the configuration.  Inspection of the setup further enables validation
of the expected configuration.

Sure, but honestly that sounds like waaaaaay more work than literally a one
character change. I don't think merging this as-is would proclude anyone
from implementing what you suggest though.
As things stand tough this is a major pain in my neck as I have to maintain
a restic fork just to make backups work for systems in my domain :]
The only real problem with my approach is a hypothetical repo where someone
accidentally changed the directory mode to world/group readable without
wanting files to be exposed. I find that scenario sufficiently unlikey not
to worry about, especially since the repo files are encrypted to boot.
--Daniel

I'd certainly be happy to have this wee change applied.  The lack of a willing member of the team to review the change is, well, disapointing.
My point with the options is that it daylights what could be a hidden detail.  When it comes to permissions, IMHO, I'd rather give a little extra boost to make the effect apparent.  It adds some noise to be sure.
And, on the other hand, we seldom run these systems with shared groups (e.g.) such that the likely impact of this change is harmless.

The change look like a big hack, that will cause problems if restic ever has to create a new directory. I'd rather propose a different approach:
Use the current permissions of the config file to let the local backend (and probably sftp too) detect whether the repository should be accessible only to the current user or also to the group. A file permission of 0400 would mean user-only and 0440 would allow group access. To switch between both variants, just run chmod on the repository.

@MichaelEischer Good idea. I've implemented it.

Interesting strategy.  Makes me wonder how it will be documented.  IMHO, it seems discrete to use the file mode of a configuration file created by restic to determine file modes for files created within the repo.

Interesting strategy. Makes me wonder how it will be documented. IMHO, it seems discrete to use the file mode of a configuration file created by restic to determine file modes for files created within the repo.

The config  file is part of the repository and not some external configuration file. So, I don't really understand what should be a problem here?

@MichaelEischer ping, I'd appreciate another review.
Changes:

Improve wording in docs

Ok, so it looks like this can't work as-is yet because the config file is created not as part of the backend Create function but rather by the repository Init/init functions.

Ok, so it looks like this can't work as-is yet because the config file is created not as part of the backend Create function but rather by the repository Init/init functions.

My suggestion would to ignore the stat error in Open if the config file does not exist (yet).

Oh yeah, another good idea. Implemented.

I've reworked the docs a bit and (hopefully) properly resolved the conflict with cd783358d33b59412e3e8ad55b02fcbf83c17d0c by undoing the merging of code from Open/Create into open. @MichaelEischer I think your conflict resolution would have failed to work in the Create code path as the config file wouldn't exist there yet so stat would fail.


Scheduled asgn notifications

Codecov Report

Merging #406 (4665da5) into master (2dcbf34) will decrease coverage by 0.68%.
The diff coverage is 41.66%.

@@            Coverage Diff             @@
##           master     #406      +/-   ##
==========================================
- Coverage   71.76%   71.08%   -0.69%
==========================================
  Files         463      424      -39
  Lines       15554    15278     -276
==========================================
- Hits        11162    10860     -302
- Misses       4392     4418      +26

Impacted Files
Coverage Δ

app/async/Notify.php
16.66% <0.00%> (-1.94%)
:arrow_down:

app/async/handlers/PingAsyncJobHandler.php
83.33% <ø> (ø)

app/async/handlers/ResubmitAllAsyncJobHandler.php
73.68% <ø> (ø)

...mailVerificationHelper/EmailVerificationHelper.php
96.87% <ø> (-0.10%)
:arrow_down:

app/model/repository/BaseRepository.php
52.83% <ø> (-0.88%)
:arrow_down:

app/async/Dispatcher.php
45.71% <6.66%> (-30.48%)
:arrow_down:

...sync/handlers/AssignmentNotificationJobHandler.php
46.15% <46.15%> (ø)

app/V1Module/presenters/AssignmentsPresenter.php
82.02% <68.42%> (-1.19%)
:arrow_down:

app/V1Module/presenters/DefaultPresenter.php
0.00% <0.00%> (-20.00%)
:arrow_down:

app/model/entity/StringPipelineParameter.php
0.00% <0.00%> (-20.00%)
:arrow_down:

... and 290 more

Continue to review full report at Codecov.

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


feat(building-webpack): make custom webpack plugin public

Make webpack plugin public so that it can be used without the default config
Correctly reference options inside webpack plugin

LGTM 👍
pls rebase or update + squash 🤗


DOCAPI-7905: Update of the configurations files description.

I hereby agree to the terms of the CLA available at: https://yandex.ru/legal/cla/?lang=en
Category (leave one):

Documentation #6123

@alexey-milovidov
Review this pull, please. I have removed information about .config format of the configuration files. If it's incorrect I'll restore it.


[BUG]: The UI of the Terms and Condition and Privacy Policy page is not good

🐛 Bug Report
Describe the bug
I would like to add a good UI to the two pages matching the color pallet of the website

Type of Issue
Select the type of issue:

[ ] 📄 Documentation
[ ] 🛠 Build/Deployment
[x] 🖼 UI/UX Design
[ ] ⚙ Performance
[ ] Other (please specify)

Steps to Reproduce (if applicable)
If the issue is related to a problem, please provide the steps to reproduce it:

Go to '...'
Click on '...'
Scroll down to '...'
See the issue

Environment (if applicable)
Provide relevant details about the environment where the issue occurred:

Browser: (e.g., Chrome 100.0, Firefox 95.0)
Operating System: (e.g., Windows 10, macOS Big Sur, Ubuntu 20.04)
Device: (e.g., Laptop, Mobile, Tablet)
Other relevant environment details:

Checklist

[x] I have searched the existing issues, and this issue is not a duplicate.
[x] I have starred this repository.
[x] I have provided all necessary details.

@gauravsingh1281 please assign me this issue under gssoc-ext level tags

@gauravsingh1281 Can you please assign me this under gssoc-ext


OData Library Release Notes 7.6.4

Release notes for ODL version 7.6.4

Docs Build status updates of commit 41f4a63:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

Odata-docs/changelog/odatalib-7x.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Errno 22 & Coroutine 'download_media' was never awaited

Hi Jerome,
Am trying to run this script and I keep running into issues with the following:
OSError: [Errno 22] Invalid argument: 'out\2024-03-21T02:52:52+09:00-3230BB5A-F34E-4C78-BB3B-6A2BE8759E01.md.tmp'
sys:1: RuntimeWarning: coroutine 'download_media' was never awaited
Do you have a suggestion to correct this error? It would really be appreciated, I have close to 0 python experience

Hi, is it when running on windows ?
I did not try on windows, this error message looks like  such a filename is not allowed.

It is on Windows, I've never used Linux personally. Do you think there is a
workaround?
On Tue., Mar. 26, 2024, 11:58 p.m. Jérome Perrin, @.***>
wrote:

Hi, is it when running on windows ?
I did not try on windows, this error message looks like such a filename is
not allowed.
—
Reply to this email directly, view it on GitHub
https://github.com/perrinjerome/mitene_download/issues/11#issuecomment-2021804904,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/BHLWA52G2PG3EM3EMTBFAZ3Y2IVDXAVCNFSM6AAAAABFKA5CDWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAMRRHAYDIOJQGQ
.
You are receiving this because you authored the thread.Message ID:
@.***>

Thanks for confirmation. I'll try later, it's highly possible that this version does not work at all on windows, but it might be easy to fix.

Thanks so much! Would be an absolute lifesaver
On Wed., Mar. 27, 2024, 12:24 a.m. Jérome Perrin, @.***>
wrote:

Thanks for confirmation. I'll try later, it's highly possible that this
version does not work at all on windows, but it might be easy to fix.
—
Reply to this email directly, view it on GitHub
https://github.com/perrinjerome/mitene_download/issues/11#issuecomment-2021824221,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/BHLWA552FNA2WHM5WD7FBFDY2IYHHAVCNFSM6AAAAABFKA5CDWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAMRRHAZDIMRSGE
.
You are receiving this because you authored the thread.Message ID:
@.***>

@Jeathead can you easily try the changes from https://github.com/perrinjerome/mitene_download/pull/12 ? thanks

@perrinjerome
I was following this thread and had same issues since same win11 environment.
The  version = '0.2.1' has this error now.
File "C:\py\mitene_download.py", line 140, in async_main
    comment_f.write(
  File "C:\Users\kevin\AppData\Local\Programs\Python\Python311\Lib\encodings\cp1252.py", line 19, in encode
    return codecs.charmap_encode(input,self.errors,encoding_table)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
UnicodeEncodeError: 'charmap' codec can't encode characters in position 2-3: character maps to <undefined>
sys:1: RuntimeWarning: coroutine 'download_media' was never awaited

your help is appreciated., Thank you!

Thanks, so it means that the "Errno 22" was about ":" in filenames. I think I understood the problem with encoding. I will upload a release that should fix this.

https://pypi.org/project/mitene_download/0.2.1/ let me know if you still notice something wrong, thanks !

@perrinjerome it works!  thank you x 1000 !

Great, thank you for confirming


call onEnd with nextTick in case component is unmounted

I had a situation where I unmounted a component in the onEnd function. I was invoking the animation from a container. Maybe weird, but it works.
Anyway, this still runs after onEnd is invoked, causing a race condition since the component is unmounted:
    this.setState({
      tweenQueue: newTweenQueue,
    });

    requestAnimationFrame(this._rafCb);

This PR should fix this!

Can you give me an example snippet of your code please?

    var hideOverlay = () => {
      this.setState({
        isOverlayShown: false,
        isOverlayHiding: false
      });
    };

    this.setState({ isOverlayHiding: true });

    overlay.hideAnimation(hideOverlay);

hideOverlay is the onEnd function. This is kludgy and I read your animation gist afterwards. It would probably be better to use ReactTransitionGroup + react-tween-state for now instead of managing animated children like this?

@pstoica Oh geez sorry for the wait. I thought I had an email reminder for this but apparently not. #24 raised the same problem. It's now solved in a different way. You get to keep your sync callback, whatever the implications of that is.
I'll close this now. Can you try the new release (0.0.5)? If it doesn't work then reopen the issue please.
Sorry again!

No worries, that looks like a good fix. I'm pretty sure it'll work for my case. Thanks for your help!


Update biobank-specimens.tsv

New term 'induced sputum specimen' #1164

These term IDs are already taken. Please reserve new term IDs:
https://docs.google.com/spreadsheets/d/1tpDrSiO1DlEqkvZjrDSJrMm7OvH9GletljaR-SDeMTI/edit


[Request] Ability to configure RSS feed

Is your feature request related to a problem? Please describe.
I cannot find a way to configure RSS feed length. It just defaults to showing first sentence having to go to site to read entire article.
Issues
For now I have disabled RSS as for whatever reason I am getting errors in all Feed readers parsing it. That's why am requesting this.
Describe the solution you'd like
A way to enable both atom and rss2 feeds and configure length like if we need entire article to be shown or not
Describe alternatives you've considered
I use Hexo on another site/blog and it has a plugin that does exactly that.

I also second the idea to have flexibility in configuration esp with the feed length. That is one issue I keep bumping into since I rely on RSS readers.

@DarkXero-dev you can have a look at an RSS override i made for my own site: rss.xml, maybe it might be helpful for you. it loads the full content and personally i have it set to show only articles in the posts/ directory in the RSS feed.

@insidemordecai
I deleted mine can you remind me how to bring it back n use yours ?

@DarkXero-dev sorry my blog is mostly text so i haven't played around with some of those shortcodes, i wouldn't be the right person to advise with that
about also including posts under news/, you can modify the where filter in the RSS template from what i have replacing posts with news like this (first 12 lines) :
{{- $pctx := . -}}
{{- if .IsHome -}}{{ $pctx = .Site }}{{- end -}}
{{- $pages := slice -}}
{{- if or $.IsHome $.IsSection -}}
{{- $pages = (where (where $pctx.RegularPages ".Section" "news") "Kind" "page")  -}}
{{- else -}}
{{- $pages = (where (where $pctx.Pages ".Section" "news") "Kind" "page")  -}}
{{- end -}}
{{- $limit := .Site.Config.Services.RSS.Limit -}}
{{- if ge $limit 1 -}}
{{- $pages = $pages | first $limit -}}
{{- end -}}

if you wanted to included multiple pages eg. news and notes, here's how it would look like (first 12 links again - i haven't tried it out but i believe it should work):
{{- $pctx := . -}}
{{- if .IsHome -}}{{ $pctx = .Site }}{{- end -}}
{{- $pages := slice -}}
{{- if or $.IsHome $.IsSection -}}
{{- $pages = (where (where $pctx.RegularPages ".Section" "in" (slice "news" "notes")) "Kind" "page")  -}}
{{- else -}}
{{- $pages = (where (where $pctx.Pages ".Section" "in" (slice "news" "notes")) "Kind" "page")  -}}
{{- end -}}
{{- $limit := .Site.Config.Services.RSS.Limit -}}
{{- if ge $limit 1 -}}
{{- $pages = $pages | first $limit -}}
{{- end -}}

@DarkXero-dev just checked it out on my RSS reader and it's looking great, just those pesky shortcodes. i hope someone fixes it soon

@insidemordecai Same. Blowfish is one of if not the best Hugo theme out there. Would be a real shame if they did not at least look into it. Heck there's a feature I requested months ago that they didn't even bother to look at so my hopes are really low..

@DarkXero-dev I kinda understand Nuno, he's essentially a one man team with a full-time job so developing features might take some time and that would be if it is absolutely necessary and easy to maintain later on.
What might help is if you can lay out how you think a feature should be implemented in detail and if it gathers interest in the community then surely someone will contribute. Heck if it's something you think you can create, you can contribute yourself, at least that's what I did recently.

@insidemordecai
I understand him too coz I am a one man ban maintaining a Linux Distro (Arch-Based) and 4 scripts. I am in the same situation except I am jobless lol. I do not do coding barely get Bash as it is.

Thanks for raising this @DarkXero-dev. I don't plan to add support for this as it would require a new parameter in the configs - otherwise, it would be introducing a breaking change. I am avoiding this as much as I can given the huge size of available configurations in the theme already. @insidemordecai suggested the right solution an override for this specific use case.
Happy to re-open the ticket later and support if someone wants to provide a PR.

@DarkXero-dev also sorry for the lack of support, I do understand how frustrating it can be. As @insidemordecai mentioned I am the only maintainer for Blowfish, this is not my primary gig, and I make $0 from it. I know it doesn't solve your problem but hopefully it provides some context. Will take a look at your other ticket now.

Oh no problem. Sorry is my post came through as if I was demanding. As you saw am in a similar situation as you. Solo maintener of a Linux Distro...


Casatune Questions

I using russound thru Casatunes
I cannot get the Text to speak to work. (using TTS Support to send custom text using http: note in casatunes doc)
example: this play doorbell charm
http://xxx.xxx.x.xxx:8735/api/v1/system/doorbell/zones/study?volume=80
Thank you
Greg

Have you tried opening that url in your browser? It should be a simple get request, so you should be able to debug through that. I have a doorbell set up like this:
rest_command:
  doorbell:
    url: "http://<IP_ADDRESS>:8735/api/v1/system/doorbell/chimes/dingdong"
    method: get
    payload: "volume=35"

Thanks that work.
I new to Home assistant and now try to fiqure out how to pass values to rest api.
I would appreciate if you can help me.
rest_command:
doorbell:
url: "http://xxx.xxx.x.xxx:8735/api/v1/system/tts/input/This is a test/zones/Study?"
method: get
payload: "ssml=false&gender=FEMALE&volume=35"
In the Home Assistant Automation Page: under actions: Call service: service: rest_command.doorbell
how do I pass replacement values to the rest_command for Text Message, Zones, Gender, Volume.
Thanks
Greg

Thanks that work.
I new to Home assistant and now try to fiqure out how to pass values to rest api.
I would appreciate if you can help me.
rest_command:
doorbell:
url: "http://xxx.xxx.x.xxx:8735/api/v1/system/tts/input/This is a test/zones/Study?"
method: get
payload: "ssml=false&gender=FEMALE&volume=35"
In the Home Assistant Automation Page: under actions: Call service: service: rest_command.doorbell
how do I pass replacement values to the rest_command for Text Message, Zones, Gender, Volume.
Thanks
Greg

@bigmack48 Just wanted to let you know that in master there are three new services available. search, tts and doorbell. If you want to test them out you need to activate beta in HACS. Seems to work pretty well but needs some testing before putting it out as stable. It should make things easier and avoid having to resort to rest_command directly.

I don’t see the beta version home assistance.Please redirect me how to get there.GregSent from my iPhoneOn Aug 9, 2023, at 4:26 PM, Jon Kristian @.***> wrote:
@bigmack48 Just wanted to let you know that in master there are three new services available. search, tts and doorbell. If you want to test them out you need to activate beta in HACS. Seems to work pretty well but needs some testing before putting it out as stable. It should make things easier and avoid having to resort to rest_command directly.
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were mentioned.Message ID: @.***>

You can go to CasaTunes in HACS, click the three dots and then redownload, in the popup you need to click show beta versions and then select master. If you are installing from source, just download the master repo.

Any example how to ring the doorbell orSpeak using tts.ThanksGreg MackSent from my iPhoneOn Aug 11, 2023, at 4:53 AM, Jon Kristian @.***> wrote:
You can go to CasaTunes in HACS, click the three dots and then redownload, in the popup you need to click show beta versions and then select master. If you are installing from source, just download the master repo.
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were mentioned.Message ID: @.***>

Hello. The best way to see an example would be to go to "Developer Tools" > "Services" and search for casatunes, there you will find out how to use the services and you can also go to yaml mode to extract the yaml.


feat: Multiple catch-all Routes are allowed

When multiple catch-all routes, Find will only return a routing
#146
#136

Thanks for the PR but there is still a lot of thing to handle, not just filter. I will release multiple cache all route support in next beta version.


bug: QR Code scan doesn't work for qr codes with over ~1600 characters

Plugin(s)

[X] Barcode Scanning
[ ] Face Detection
[ ] Face Mesh Detection
[ ] Selfie Segmentation
[ ] Translation

Version
5.4.0
Platform(s)

[X] Android
[X] iOS
[ ] Web

Current behavior
Scanner is working great up until a certain point where the density of the QR code becomes unreadable. That happens around the 1600 character mark
Expected behavior
Scans qr code
Reproduction
https://github.com/robingenz/capacitor-mlkit-plugin-demo
Steps to reproduce
Set zoom ratio to ANY value
Other information
No response
Capacitor doctor
💊   Capacitor Doctor  💊
Latest Dependencies:
@capacitor/cli: 6.1.2
@capacitor/core: 6.1.2
@capacitor/android: 6.1.2
@capacitor/ios: 6.1.2
Installed Dependencies:
@capacitor/cli: 5.0.0
@capacitor/android: 5.0.0
@capacitor/ios: 5.0.0
@capacitor/core: 5.0.0
[success] iOS looking great! 👌
Before submitting

[X] I have read and followed the bug report guidelines.
[X] I have attached links to possibly related issues and discussions.
[X] I understand that incomplete issues (e.g. without reproduction) are closed.

Please provide a sample barcode.

Unfortunately, I cannot reproduce your problem:
https://github.com/user-attachments/assets/886aa1a3-5729-4dca-a976-92e35315b938

I can't share our actual code repo (ITAR issues) which is why I linked the sample one... Maybe you could take a look at this excerpt and try to explain why it isn't catching? Our app isn't even detecting qr codes at all after around 1640 characters.
`
/**

Opens the barcode scanner to scan a qr code to add an instrument
@returns {void}
*/
public async openAddInstrumentQr() {
BarcodeScanner.isSupported().then((result) => {
this.isSupported = result.supported;
BarcodeScanner.setZoomRatio({ zoomRatio: 3 });
});
this.scan();
}

/**

Parses the qr code and adds the instrument to the instruments array
Also displays an alert with the instrument information and prompts the user to add the instrument
@returns {void}
*/
public async scan(): Promise {
const granted = await this.requestPermissions();
if (!granted) {
const alert = await this.alertController.create({
header: 'Permission denied',
message: 'Please grant camera permission to use the barcode scanner.',
buttons: ['OK'],
});
await alert.present();
return;
}

var barcodeScan = await BarcodeScanner.scan();

var barcodeMap = this.parseCode(barcodeScan.barcodes);

if (barcodeMap.size === 0) {
  const alert = await this.alertController.create({
    header: 'Qr Code Error',
    message:
      'Qr code not in the correct format.\n' +
      'Please scan a qr code from the Calibration Service Advisor Application.\n ' +
      'Qr code data was as follows:\n' +
      barcodeScan.barcodes[0].rawValue,
    buttons: [
      {
        text: 'Okay',
        role: 'confirm',
        handler: () => {
          console.log('Alert confirmed');
        },
      },
    ],
  });
  await alert.present();
} else {
  const model = barcodeMap.get('Model');
  const serial = barcodeMap.get('Serial');
  const manufacturer = 'Keysight Technologies';

  const alert = await this.alertController.create({
    header: 'Found Following Instrument:',
    message: 'Model: ' + model + ' Serial: ' + serial,
    buttons: [
      {
        text: 'Cancel',
        role: 'cancel',
        handler: () => {
          console.log('Alert canceled');
        },
      },
      {
        text: 'Add Instrument',
        role: 'confirm',
        handler: () => {
          this.addInstrument({
            modelNumber: model || '',
            serialNumber: serial || '',
            manufacturer: manufacturer || '',
            imageURL: 'https://via.placeholder.com/150',
          });
          console.log('Alert confirmed');
        },
      },
    ],
  });
  await alert.present();
}

}
/**

Requests camera permissions
@returns {Promise} - Returns a promise that resolves to a boolean indicating if the camera permission was granted
*/
async requestPermissions(): Promise {
const { camera } = await BarcodeScanner.requestPermissions();
return camera === 'granted' || camera === 'limited';
}
`

Would love ANY help you could possibly give

I have over 30 plugins to maintain and very limited time. Therefore I need a minimal, reproducible example to be able to help you. I can't see anything at first glance. Maybe it is because of the zoom ratio you are using.

Using the example library I was able to reproduce this issue on my iPhone 13... Not catching the same qr code listed above.... is there something I'm missing compile time maybe? Or something that might hinder the performance of my build versus others?
https://github.com/user-attachments/assets/3815cec2-dda8-4391-b8e7-1939e4e8d38b

I'll look at it again, but have you tried it for longer than 3 seconds? Maybe the screen of the MacBook is too reflective for such a large QR code.

Yes sorry just took a really short video because of compression issues to upload it here. But tried it multiple ways in different lightings and zooms.

I suspect that the problem lies with ML Kit. The plugin can only output the barcodes that ML Kit recognizes. Maybe there are ways to optimize the camera settings but so far I have no idea. Please try the official ML Kit Vision demo app and let me know if it works better there: https://github.com/googlesamples/mlkit/tree/master/ios/quickstarts/vision

Wasn't able to get the quickstart vision project working. Couldn't find MlKit module... maybe I am missing something?

I've also tried the plugin demo on multiple iphones, iphone 15 and iphone 13, without success. Just wanted to give you a heads up

Wasn't able to get the quickstart vision project working. Couldn't find MlKit module... maybe I am missing something?

It's best to ask directly in https://github.com/googlesamples/mlkit.

Yeah I've been poking them on an issue since May...https://github.com/googlesamples/mlkit/issues/817
Can't seem to figure anything out sadly. Tried every different settings camera setting that I can.

One more piece of information I just gathered is that the scanning works on my iPad pro but not on any iPhone. Strange but potentially helpful

Upgraded to the most recent version of angular and alloy and scanning is now fully functional


Action type 0x7a: keyboard event

Not sure what this action does (I suspect it may be related to the new keyboard/oskeytype natives). It appears to always be 21 bytes long (including the action identifier). Example replay here: https://wc3stats.com/games/8632
Edit: can confirm it's for keyboard events. I found that bytes 13-16 is for the oskeytype, and 17-20 is the metakey. For example, when pressing alt+f4, the action block's bytes will end with "0x73 0 0 0 4 0 0 0". I'm still investigating the meaning of the first 12 bytes.

I published 1.5.0 with a basic skip subparser for this action type so parsing a replay file works properly for now.

I assume this issue can be closed. If not, feel free to comment so we can reopen it.


[SUGGESTION] Adding an "agent" command

Hi,
I've tested Restic and I'm mostly satisfied with the results except for one thing, the lack of an "agent" mode.
Restic, as well as Borg for that matter, is geared at "backup-and-push-to-repository" which is nice but not desired in my environment. I need a "repository-pulls-backup-from-agent" design. There could be an additional "agent" command that would :

Use ssh transport by default to contact an host and the ssh keys benefits (authorized keys, etc.)
Spawn a Restic instance to make the backup on the remote host (like a normal Restic call) but feed the result back to the calling Restic instance, which holds the repository

Of course, it would be of the administrator responsibility to setup everything accordingly to use either one repository for every remote host or script something a bit smarter to use a repository per host or group of hosts, whatever suits the needs.
Why such a setup?
Because, in my case at least, the backup server is of critical importance and network isolated from the other hosts. I really don't want the "all-hosts-can-contact-the-backup-server" style but the "only-backup-server-can-contact-hosts" kind of behavior.
This also helps to limit the strain on the backup server. Having all the hosts, with no predictable backup size, hammering the backup server at the same time (cronjob) is not desirable, especially on sites with storage on budget :-)
Would you consider such a request? Thanks.

Take a look to this post (and a few posts after it).

This is not new, we're tracking this feature in #299, therefore I'm closing this issue as a duplicate.
The matter itself is not so complicated: I can see the use case and I think we will eventually implement such a mode, but there's no timeline for it.
Please subscribe over at #299 in order to be notified of any progress. Thanks!


Python Interactive reverts back to left when there are many columns to show

When browsing a dataset which contains many columns with .head() method, Python Interactive reverts back to original view as I scroll right side.
Here's reproducible example:
import pandas as pd
pd.options.display.max_columns = 100
df = pd.DataFrame()
for i in range(50):
    df[f'{i}_col'] = i
df.head()

Hey @Matthew-gunsuSon. Thanks for reporting this. Could you clarify what you mean by "reverts back to original view?" Do you mean that the view snaps back to the left columns where you can see the code, execution counts and the toolbar? I'm currently playing around with your repro and while it's not all the time I am seeing it snap back every so often, especially when scrolling down to the bottom of the vertical scrollbar. Just want to make sure that I'm looking at the same issue that you are seeing.

Yes that’s what I meant. Thanks for better clarification.

I'm having this problem too. Here's a screenshot.

https://github.com/microsoft/vscode/issues/80984

No problem, just wanted to make sure I was looking at the right thing. I do see the issue as well and we just made some tweaks to scrolling behavior recently. We'll take a look.

This should be a dupe of #7385

Dupe of #7385


[Bug] [UI] Error that can be entered after deleting child nodes

Search before asking

[X] I had searched in the issues and found no similar issues.

What happened
When I remove the child node under sub_process in the workflow instance, I can also enter the child node workflow from inside
What you expected to happen
After deleting a child node, you should not be able to enter the child node workflow
How to reproduce
1.Create a sub_process and associate a child node
2.Go online and run sub_process
3.Delete child Nodes
Anything else
No response
Version
dev
Are you willing to submit PR?

[ ] Yes I am willing to submit a PR!

Code of Conduct

[X] I agree to follow this project's Code of Conduct

@lenboo Take a look at this when you have time


enable Dependabot v2

https://github.blog/2020-06-01-keep-all-your-packages-up-to-date-with-dependabot/

Coverage increased (+0.08%) to 93.56% when pulling ccae686eedb74bc013040e42ca26559bbe03bcbc on sullis:master into 30507fda33745c44ba45a03fade16ec7d586c315 on jhalterman:master.

https://github.blog/2020-06-01-keep-all-your-packages-up-to-date-with-dependabot/

Some extra characters got into the link. Here's the fixed version:
https://github.blog/2020-06-01-keep-all-your-packages-up-to-date-with-dependabot/

https://github.blog/2020-06-01-keep-all-your-packages-up-to-date-with-dependabot/

Some extra characters got into the link. Here's the fixed version:
https://github.blog/2020-06-01-keep-all-your-packages-up-to-date-with-dependabot/

Closing since Failsafe has no additional runtime dependencies.


Use flash alerts rather than notices

These messages are used to tell users they can't access a page without
signing in, that their password is incorrect, etc. These are much closer
to error or alert states than notice.

This seems like a good change. 👍

@derekprior Are there any plans to release 2.0? I would like to use the fixed flashes, but it seems they are stuck in the (stale?) 2.0 branch...


Better support for Omega in Polaris

Most of the work in this PR is focused on support for mapping from MPAS-Ocean namelist options (in YAML format) to their Omega equivalents.  This support has required changes to the polaris.yaml and polaris.model_step framework as well as extensive changes to the Ocean framework and tasks.
The proposed solution would allow for:

shared model config options (using MPAS-Ocean names) in an ocean: section in a yaml file or with config_model='ocean' when added in code.
model config options specific to MPAS-Ocean (using MPAS-Ocean names and ignored by Omega) with an mpas-ocean: section in a yaml file or with config_model='mpas-ocean' when added in code.
model config options specific to Omega (using Omega names and ignored by MPAS-Ocean) with an omega: section in a yaml file or with config_model='omega' when added in code.

Here is an example:
ocean:
  time_management:
    config_run_duration: {{ run_duration }}
  time_integration:
    config_dt: {{ dt }}
    config_time_integrator: {{ time_integrator }}

mpas-ocean:
  bottom_drag:
    config_bottom_drag_mode: implicit
    config_implicit_bottom_drag_type: constant
    config_implicit_constant_bottom_drag_coeff: 0.0
  manufactured_solution:
     config_use_manufactured_solution: true
  debug:
    config_disable_vel_hmix: true

omega:
  Tendencies:
    VelDiffTendencyEnable: false
    VelHyperDiffTendencyEnable: false

Checklist

[x] Developer's Guide has been updated
[x] API documentation in the Developer's Guide (api.md) has any new or modified class, method and/or functions listed
[x] Documentation has been built locally and changes look as expected
[x] Testing comment in the PR documents testing used to verify the changes

@cbegeman, @hyungyukang and @sbrus89, I'm still testing and need to build the docs locally to make sure they're okay but I think this is working for MPAS-Ocean still (I can set up all ocean tests and those I've run so far all work) and I'm also able to set up the manufactured_solution test with --model=omega as long as I manually put an omega.yml file next to the omega.exe.
Let me know what you all think.  Whatever testing you'd like to do would be appreciated but also just a look at (parts of) the code would be fine.  I realize a lot changed so maybe the more important thing might be to look at manufactured_solution and treat it as an example of what these changes would mean for other tests.

Testing
I set up the manufactured_solution test with --model=omega after building Omega according to the instructions I added to the developer's guide in this PR and manually adding an omega.yml next to the omega.exe in:
e3sm_submodules/Omega/components/omega/build/src

The resulting omega.yml files looked as I expected, e.g.:
omega:
  TimeManagement:
    StartTime: 0001-01-01_00:00:00
    StopTime: 0001-01-01_10:00:00
    RunDuration: 0000_10:00:00.000
    CalendarType: No Leap
  TimeIntegration:
    TimeStepper: RK4
    TimeStep: 0000_00:10:00.000
  Decomp:
    HaloWidth: 3
    DecompMethod: MetisKWay
  State:
    NTimeLevels: 2
  Advection:
    FluxThicknessType: Center
  Tendencies:
    ThicknessFluxTendencyEnable: true
    PVTendencyEnable: true
    KETendencyEnable: true
    SSHTendencyEnable: true
    VelDiffTendencyEnable: false
    ViscDel2: 1.0e3
    VelHyperDiffTendencyEnable: false
    ViscDel4: 1.2e11

I also ran all the ocean test cases (yes, all 107) on Chrysalis with MPAS-Ocean.  I am seeing some failures in the 1 km isomip_plus test cases that are related to remapping and seemingly not related to this PR.  All other tests passed.  See:
/lcrc/group/e3sm/ac.xylar/polaris_0.4/chrysalis/test_20240904/all_omega_map

Okay, I'm also done with testing and docs so this is fully ready for review.

I was able to test this branch by combining the Omega Driver PR (https://github.com/E3SM-Project/Omega/pull/123).
In the driver PR, I had to make some changes to obtain elapsed time (from 0 sec) during time integration and fix the three digit for the second in the time format.
I tried to test this PR and Omega with GNU compiler on pm-cpu, but It doesn't work. It seems there is a problem with the time manager, but I need to investigate more.
I moved on to NVIDIA compiler for both Omega and Polaris on pm-cpu, and it was successful. The dropdown below is to show processes to retrieve the test I've done on pm-cpu. Note that I added a manufactured solution group in omega/config/DriverTest.yml:
ManufacturedSolution:
     UseManufacturedSolution: true

Process to retrieve the test
Download Omega-Polaris test codes on Perlmutter
git clone git@github.com:hyungyukang/Omega.git
cd Omega
git checkout hkang/omega/driver-Polaris-test
git submodule update --init --recursive externals/ekat externals/scorpio cime

Install Omega with NVIDIA compiler on pm-cpu
cd component/omega
mkdir build
cd build
module load cmake

./omega_build_nvidia_pm-cpu.sh
./omega_build.sh

Copy YAML config file
cp ../config/DriverTest.yml ./src/omega.yml

Install Polaris (add-omega-config-map PR) with NVIDIA compiler on Perlmutter
git clone git@github.com:E3SM-Project/polaris.git
cd polaris
git checkout add-omega-config-map
git submodule update --init --recursive

./configure_polaris_envs.py --conda /global/cfs/projectdirs/e3sm/hgkang/miniconda3 -c nvidia -m pm-cpu

Polaris setup for Omega model with the manufactured solution
cd polaris
source load_dev_polaris_0.4.0-alpha.2_pm-cpu_nvidia_mpich.sh
polaris setup -t ocean/planar/manufactured_solution -m pm-cpu -w /global/cfs/projectdirs/e3sm/hgkang/polaris/work25 -p  /pscratch/sd/h/hgkang/Omega_test_240908/components/omega/build --model omega

Submit a job
cd /global/cfs/projectdirs/e3sm/hgkang/polaris/work25
sbatch job_script.custom.sh

After the job was completed, I was able to see PASS in the log file and the second-order convergence rate as shown in the figure below.
ocean/planar/manufactured_solution
  * step: init_200km
          execution:        SUCCESS
          runtime:          0:00:08
  * step: forward_200km
          execution:        SUCCESS
          runtime:          0:00:09
  * step: init_100km
          execution:        SUCCESS
          runtime:          0:00:03
  * step: forward_100km
          execution:        SUCCESS
          runtime:          0:00:08
  * step: init_50km
          execution:        SUCCESS
          runtime:          0:00:04
  * step: forward_50km
          execution:        SUCCESS
          runtime:          0:00:18
  * step: init_25km
          execution:        SUCCESS
          runtime:          0:00:08
  * step: forward_25km
          execution:        SUCCESS
          runtime:          0:02:01
  * step: analysis
          execution:        SUCCESS
          runtime:          0:00:02
  task execution:   SUCCESS
  task runtime:     0:03:00
Task Runtimes:
0:03:00 PASS ocean/planar/manufactured_solution
Total runtime: 0:03:32
PASS: All passed successfully!

Based on my test, this branch is working properly. I had to copy omega.yml manually from config/DriverTest.yml, but I believe that this process can be fixed straightforwardly or changed easily.

We need to update the Omega submodule here once https://github.com/E3SM-Project/Omega/pull/123/ gets merged.

I was able to run the manufactured solution test case successfully on Frontier with Omega.

 Here is my list of commands

### polaris instructions ###
cd /ccs/home/mpetersen/repos/polaris/pr
./configure_polaris_envs.py   --conda ${HOMEDIR}/miniforge3 --compiler crayclang
source load_dev_polaris_0.4.0-alpha.2_frontier_crayclang_mpich.sh

git submodule update --init e3sm_submodules/Omega
cd e3sm_submodules/Omega/
git submodule update --init --recursive externals/YAKL externals/ekat externals/scorpio cime

git submodule update --init e3sm_submodules/E3SM
cd components/mpas-ocean
git submodule update --init --recursive src/cvmix/ src/gotm/ src/BGC src/MARBL src/gotm src/FFTW src/SHTNS src/ppr

polaris list |grep man
  56: ocean/planar/manufactured_solution

polaris setup -p /lustre/orion/cli115/scratch/mpetersen/runs/240910_omega/build -w $r/240911_omega_polaris_test --model omega -n 56

salloc -A cli115 -J inter -t 2:00:00 -q debug -N 1 -S 0
cd /ccs/home/mpetersen/repos/polaris/pr
source load_dev_polaris_0.4.0-alpha.2_frontier_crayclang_mpich.sh
cd /lustre/orion/cli115/scratch/mpetersen/runs/240911_omega_polaris_test
cd ocean/planar/manufactured_solution/
polaris serial

My main command was
polaris setup \
  -p /lustre/orion/cli115/scratch/mpetersen/runs/240910_omega/build \
  -w /lustre/orion/cli115/scratch/mpetersen/runs/240911_omega_polaris_test \
  --model omega \
  -n 56

Note that I had already built omega for frontier cpu with these commands

 Frontier cpu build commands
CODE_DIR=opr
RUNDIR=240910_omega_gpu
mkdir /lustre/orion/cli115/scratch/mpetersen/runs/$RUNDIR
cd !$

cd /ccs/home/mpetersen/repos/E3SM/${CODE_DIR}
git submodule update --init --recursive externals/YAKL externals/ekat externals/scorpio cime
cd /lustre/orion/cli115/scratch/mpetersen/runs/$RUNDIR

module load cmake
rm -rf build
mkdir build
cd build
export PARMETIS_ROOT=/ccs/proj/cli115/software/polaris/frontier/spack/dev_polaris_0_4_0_crayclanggpu_mpich/var/spack/environments/dev_polaris_0_4_0_crayclanggpu_mpich/.spack-env/view
cmake \
   -DOMEGA_CIME_COMPILER=crayomegagpu \
   -DOMEGA_BUILD_TYPE=Release \
   -DOMEGA_CIME_MACHINE=frontier \
   -DOMEGA_PARMETIS_ROOT=${PARMETIS_ROOT}\
   -DOMEGA_BUILD_TEST=ON \
   -Wno-dev \
   -S /ccs/home/mpetersen/repos/E3SM/${CODE_DIR}/components/omega -B .
./omega_build.sh

I had to do two additional things to get the tests to run:

The Omega code looks for the input file OmegaMesh.nc, but the file init.nc was provided by Polaris. So I made a quick link in each forward directory like this:

cd /lustre/orion/cli115/scratch/mpetersen/runs/240911_omega_polaris_test/
cd ocean/planar/manufactured_solution/forward/200km
ln -isf ../../init/200km/initial_state.nc OmegaMesh.nc

The file OmegaMesh.nc has 1 vertical layer and the default in omega.yml is NVertLevels: 60. Omega produces a pio error, but that is fixed if I set NVertLevels: 1 in the local omega.yml.

I think both of these will be corrected once we have https://github.com/E3SM-Project/Omega/pull/123 merged and better control over file names with io-streams. With those two fixes I was able to go into each directory and run the simulation, like this:
salloc -A cli115 -J inter -t 2:00:00 -q debug -N 1 -S 0
cd /ccs/home/mpetersen/repos/polaris/pr
source load_dev_polaris_0.4.0-alpha.2_frontier_crayclang_mpich.sh
cd /lustre/orion/cli115/scratch/mpetersen/runs/240911_omega_polaris_test
cd ocean/planar/manufactured_solution/init/200km/
polaris serial
cd ../../forward/200km
polaris serial

and it runs successfully. It does not yet have an output.nc file to run analysis on, but that will come once i/o streams are in.

@xylar, in my testing above I did this sequence to build Omega myself:
export PARMETIS_ROOT=/ccs/proj/cli115/software/polaris/frontier/spack/dev_polaris_0_4_0_crayclanggpu_mpich/var/spack/environments/dev_polaris_0_4_0_crayclanggpu_mpich/.spack-env/view
cmake \
   -DOMEGA_CIME_COMPILER=crayomegagpu \
   -DOMEGA_BUILD_TYPE=Release \
   -DOMEGA_CIME_MACHINE=frontier \
   -DOMEGA_PARMETIS_ROOT=${PARMETIS_ROOT}\
   -DOMEGA_BUILD_TEST=ON \
   -Wno-dev \
   -S /ccs/home/mpetersen/repos/E3SM/${CODE_DIR}/components/omega -B .
./omega_build.sh

and then I point to that directory with the polaris setup -p flag. Is that the intended workflow, or is there a polaris command that builds the code within the submodule directories?

I have had to make some more changes here following https://github.com/E3SM-Project/Omega/pull/123:

I have switched the config_model from omega to Omega.  This is the model name used in YAML files and associated calls to change YAML config options.  But I am keeping the model name elsewhere in Polaris as omega, e.g. polaris setup --model=omega
I have had to set config_stop_time = none in a bunch of places.  This is the MPAS-Ocean default but not the Omega default, and we want to set config options that affect test cases in any case (rather than relying on the defaults).
In the user's guide, I have added a short section about which model(s) each set of ocean tasks is compatible with (and also added this to the template).
I have updated the Omega submodule
I added a configure() method to manufactured solution to handle the different default time integrators for the 2 models.

I am currently on vacation so I haven't had a chance to do thorough testing.
@hyungyukang, could you re-test Omega with manufactured solutions?
@cbegeman, could you run the nightly suite and/or whatever tests you have the time and energy for?  I think for now it's sufficient that MPAS-Ocean tests aren't broken but you can certainly test if they're BFB, too, if you have the time and energy.

@hyungyukang, when I try to run omega.exe (using Polaris), I'm seeing:
PIO: FATAL ERROR: Aborting... FATAL ERROR: NetCDF: Start+count exceeds dimension bound (file = OmegaMesh.nc) (/home/ac.xylar/e3sm_work/omega/omega/fix-run-duration-stop-time-inconsistent/externals/scorpio/src/clib/pio_darray_int.c: 1697)
Obtained 10 stack frames.
/lcrc/group/e3sm/ac.xylar/polaris_0.4/chrysalis/test_20240916/omega_manufac_soln_fix_warning/ocean/planar/manufactured_solution/forward/200km/./omega.exe() [0x6b644d]

Did you see this when you tried to run?  If so, how did you get around it?  Is it an issue with the NetCDF format we're writing out?

@hyungyukang, when I try to run omega.exe (using Polaris), I'm seeing:
PIO: FATAL ERROR: Aborting... FATAL ERROR: NetCDF: Start+count exceeds dimension bound (file = OmegaMesh.nc) (/home/ac.xylar/e3sm_work/omega/omega/fix-run-duration-stop-time-inconsistent/externals/scorpio/src/clib/pio_darray_int.c: 1697)
Obtained 10 stack frames.
/lcrc/group/e3sm/ac.xylar/polaris_0.4/chrysalis/test_20240916/omega_manufac_soln_fix_warning/ocean/planar/manufactured_solution/forward/200km/./omega.exe() [0x6b644d]

Did you see this when you tried to run? If so, how did you get around it? Is it an issue with the NetCDF format we're writing out?

@xylar , the error is probably caused by NVertLevels in omega.yml. During my testing, I had to change NVertLevels=1 in omega.yml before copying it to Polaris. Also in omega/src/base/Decomp.h (line 237), I changed the initial file name from OmegaMesh.nc to init.nc as Polaris creates init.nc file as the initial condition.

I'm going to test this updated PR and the merged driver PR in Omega-0 (https://github.com/E3SM-Project/Omega/pull/123) at the same time by implementing the manufactured solution.

I also had to do the following, as noted last week:

The file OmegaMesh.nc has 1 vertical layer and the default in omega.yml is NVertLevels: 60. Omega produces a pio error, but that is fixed if I set NVertLevels: 1 in the local omega.yml.

Otherwise I get that error
PIO: FATAL ERROR: Aborting... FATAL ERROR: NetCDF: Start+count exceeds dimension bound (file = OmegaMesh.nc) (/home/ac.xylar/e3sm_work/omega/omega/fix-run-duration-stop-time-inconsistent/externals/scorpio/src/clib/pio_darray_int.c: 1697)

@mark-petersen and @hyungyukang, the fix seems pretty trivial (though I didn't have time to test it).  Let me know if my last commit has fixed the issue.

This needs a fix requested in https://github.com/E3SM-Project/Omega/issues/126.  Then, the omega.cfg file will need to be updated.

After a conversation with @cbegeman  and @brian-oneill we would like to always read nVertLevels from the initial condition file. It takes a little more work up front to generate initial conditions, but once the workflow is set up the transition to Omega-1 will be seamless. We thought an optional YAML flag for nVertLevels was prone to user error.
I think the simplest way forward is to leave e23ef33 in so this works with the current head of develop. Once we have io streams working, we will have to revise the Omega driver and then Polaris again anyway.
We can make the requested change in https://github.com/E3SM-Project/Omega/issues/126 and the component_path change above, and then I think this PR is ready to merge.

@xylar , I'm testing the latest version of this PR (commit=e23ef330). While testing, I found that Polaris does not change TimeStepper to RK4 and TimeStep is too large for a given resolution. I didn't have this problem during the test last time (commit=.
I'm attaching two YAML files - Default.yml in omega/config and omega.yml in a Polaris run directory
Here is Default.yml in omega/config/ but ManufacturedSolution: is added for testing the purpose.
Omega:
   TimeManagement:
      StartTime: 0001-01-01_00:00:00
      StopTime: 0001-01-01_02:00:00
      RunDuration: none #0000_02:00:00.000
      CalendarType: No Leap
   TimeIntegration:
      TimeStepper: Forward-Backward
      TimeStep: 0000_00:10:00
   Dimension:
      NVertLevels: 60
   Decomp:
      HaloWidth: 3
      DecompMethod: MetisKWay
   State:
      NTimeLevels: 2
   Advection:
      FluxThicknessType: Center
   Tendencies:
      ThicknessFluxTendencyEnable: true
      PVTendencyEnable: true
      KETendencyEnable: true
      SSHTendencyEnable: true
      VelDiffTendencyEnable: true
      ViscDel2: 1.0e3
      VelHyperDiffTendencyEnable: true
      ViscDel4: 1.2e11
   ManufacturedSolution:
      UseManufacturedSolution: true

And here is omega.yml in work4/ocean/planar/manufactured_solution/forward/200km/ after setting up Polaris tests
Omega:
  TimeManagement:
    StartTime: 0001-01-01_00:00:00
    StopTime: none
    RunDuration: 0000_10:00:00.000 #0000_02:00:00.000
    CalendarType: No Leap
  TimeIntegration:
    TimeStepper: Forward-Backward
    TimeStep: 0000_01:40:00.000
  Dimension:
    NVertLevels: 1
  Decomp:
    HaloWidth: 3
    DecompMethod: MetisKWay
  State:
    NTimeLevels: 2
  Advection:
    FluxThicknessType: Center
  Tendencies:
    ThicknessFluxTendencyEnable: true
    PVTendencyEnable: true
    KETendencyEnable: true
    SSHTendencyEnable: true
    VelDiffTendencyEnable: false
    ViscDel2: 1.0e3
    VelHyperDiffTendencyEnable: false
    ViscDel4: 1.2e11
  ManufacturedSolution:
    UseManufacturedSolution: true

RunDuration and NVertLevels were changed correctly. In this test, TimeStepper should be RK4 but was not changed. And TimeStep should be 0000_00:10:00.000=600 seconds for 200 km but was set to 0000_01:40:00.000=6000 seconds.
Do you have any idea on this or any suggestion? The instruction below is to retrieve the test I'm conducting. Please correct me if I've done anything wrong.

Instruction to retrieve the test

# Install Polaris on Perlmutter with NVIDIA compiler

git clone git@github.com:xylar/polaris.git
cd polaris
git checkout add-omega-config-map
git submodule update --init --recursive

# Update Omega-0 to test with Polaris
cd e3sm_submodules/Omega
git remote add test git@github.com:hyungyukang/Omega.git
git fetch test
git checkout hkang/omega/driver-merge-test

# Build Omega-0
cd component/omega
mkdir build
cd build

export PARMETIS_ROOT=/global/cfs/cdirs/e3sm/software/polaris/pm-cpu/spack/dev_polaris_0_4_0_nvidia_mpich/var/spack/environments/dev_polaris_0_4_0_nvidia_mpich/.spack-env/view

module load cmake

cmake \
   -DOMEGA_CIME_COMPILER=nvidia \
   -DOMEGA_BUILD_TYPE=Release \
   -DOMEGA_CIME_MACHINE=pm-cpu \
   -DOMEGA_PARMETIS_ROOT=${PARMETIS_ROOT}\
   -Wno-dev \
   -S ../ -B .

# Polaris setup with the manufactured solution
cd ../../../../../
source load_dev_polaris_0.4.0-alpha.2_pm-cpu_nvidia_mpich.sh
polaris setup -t ocean/planar/manufactured_solution -m pm-cpu -w /global/cfs/projectdirs/e3sm/hgkang/polaris/work4 --model omega

@mark-petersen, I'm afraid we can't rush this.  Let's keep working at it until we get the kinks ironed out.

@hyungyukang, I see.  I honestly didn't realize we had implemented RK4.  I  will remove the commit that explicitly set the time integrator for Omega to Forward-Backward.

@hyungyukang, could you cherry-pick https://github.com/E3SM-Project/Omega/pull/128 onto whatever Omega branch you're using and try again with this Polaris branch?  I think it should be back to using RK4.  Sorry about that!

For what it's worth, I ran the nightly MPAS-O test suite and all tests passed.

There is an inconsistency in the directory name for configuration files within the build directory between this Polaris pull request (using "build/configs") and Omega (using "build/config"). I addressed this issue in my comment on the E3SM/Omega pull request (E3SM-Project/Omega#128) and suggested modifying it on the Omega side, as the original directory name for configuration files is configs.

Although there is an inconsistency in the directory name for the configuration files as I mentioned above, I was able to re-test everything by manually matching the directory name. Fixing this issue is very straightforward.
I used the most recent version of Omega-0 in the develop branch (commit=01128e24b) to test this Polaris PR. I implemented the manufactured solution in Omega-0, wrote a code for output streams, and added ManufacturedSolution: \ UseManufacturedSolution: true  to configs/Default.yml for the test purpose.
Here is an instruction to retrieve the test what I've done:

Instruction for the test done for this PR

#Install Polaris (this PR) on Perlmutter with NVIDIA compiler
git clone git@github.com:xylar/polaris.git
cd polaris
git checkout add-omega-config-map
git submodule update --init e3sm_submodules/Omega

# Obtain Omega-0 code modified for this test
cd e3sm_submodules/Omega
git remote add test git@github.com:hyungyukang/Omega.git
git fetch test
git checkout hkang/omega/driver-merge-test
git submodule update --init --recursive externals/ekat externals/scorpio cime

# Build Omega-0 with NVIDIA compiler
cd component/omega
mkdir build
cd build
export PARMETIS_ROOT=/global/cfs/cdirs/e3sm/software/polaris/pm-cpu/spack/dev_polaris_0_4_0_nvidia_mpich/var/spack/environments/dev_polaris_0_4_0_nvidia_mpich/.spack-env/view
module load cmake
cmake -DOMEGA_CIME_COMPILER=nvidia -DOMEGA_BUILD_TYPE=Release -DOMEGA_CIME_MACHINE=pm-cpu -DOMEGA_PARMETIS_ROOT=${PARMETIS_ROOT} -Wno-dev -S ../ -B .
./omega_build.sh

# Polaris setup with the manufactured solution
cd ../../../../../
./configure_polaris_envs.py --conda /global/cfs/projectdirs/e3sm/hgkang/miniconda3 -c nvidia -m pm-cpu
source load_dev_polaris_0.4.0-alpha.2_pm-cpu_nvidia_mpich.sh
polaris setup -t ocean/planar/manufactured_solution -m pm-cpu -w /global/cfs/projectdirs/e3sm/hgkang/polaris/work51 --model omega

# Submit a Polaris job
cd /global/cfs/projectdirs/e3sm/hgkang/polaris/work51
sbatch job_script.custom.sh

After the job was completed, I saw PASS in the log file and obtained the second-order convergence rate figure visualized by Polaris.

PASS/FAIL logs

ocean/planar/manufactured_solution
  * step: init_200km
          execution:        SUCCESS
          runtime:          0:00:14
  * step: forward_200km
          execution:        SUCCESS
          runtime:          0:00:20
  * step: init_100km
          execution:        SUCCESS
          runtime:          0:00:05
  * step: forward_100km
          execution:        SUCCESS
          runtime:          0:00:05
  * step: init_50km
          execution:        SUCCESS
          runtime:          0:00:05
  * step: forward_50km
          execution:        SUCCESS
          runtime:          0:00:10
  * step: init_25km
          execution:        SUCCESS
          runtime:          0:00:12
  * step: forward_25km
          execution:        SUCCESS
          runtime:          0:00:14
  * step: analysis
          execution:        SUCCESS
          runtime:          0:00:04
  task execution:   SUCCESS
  task runtime:     0:01:29
Task Runtimes:
0:01:29 PASS ocean/planar/manufactured_solution
Total runtime: 0:02:03
PASS: All passed successfully!

Thanks @xylar very much for fixing codes very quickly!

Okay, once https://github.com/E3SM-Project/Omega/pull/128 gets merged, I'll update the Omega submodule once again and this will be ready to merge.

An additional request for the next PR is that we may no longer need to perform graph partitioning (i.e., linking graph.info and gpmetis graph.info ...) for Omega, as this process is now handled internally.

@hyungyukang, good call.  That should be easy enough to address in a follow-up PR.  The extra files aren't an issue, they're just unneeded clutter.

@hyungyukang and @xylar Good point. I'll open up a PR with that change shortly.

Okay, I've updated the Omega submodule one more time.  I'll merge this once CI passes.

@cbegeman, thanks for getting on the redundant metis file issue!


refactor(dependency): Unpin OCaml version - upgrade to 4.10.1

Blocked by https://github.com/esy/esy/issues/1190

Blocked by https://github.com/esy/esy/issues/1190


cucumber-messages: Add stricter gem restrictions for google-protobuf

Summary
As the comments elude to; this gem is a key runtime dependency. And on Ruby 2.6 this only works when using the latest version
Details
Stricter gemspec restrictions as per the different ruby requirements
Motivation and Context
For Running on JRuby and a couple of other environments, a weaker requirement is required (And not the latest), due to some issues with those environments.
Once the team maintaining this has done some additional work, we can probably relax this requirement. But for now this makes cucumber build properly again X-Ruby Versions

[x] Bug fix (non-breaking change which fixes an issue).
[ ] New feature (non-breaking change which adds functionality).
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected).

Checklist:

[ ] I've added tests for my code.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.

I'm aware we could dive into this and maybe experiment more with restrictions, but I'd rather just get this in. As it's blocking a whole heap of other PR's which have failing CI

Oki, locally I've tested this again. Plus building the gem.
I can build on 2.2 - 2.6 and JRuby.
I can run and pass rspec on 2.2 - 2.6 and JRuby.
I'll try testing the meta-data using the same methods just now.

I'm going to merge this then @mvz, and I'll raise a separate issue for tackling JRuby

Thanks for the fix! 👍
May ask for a release plan for this fixes to cucumber-messages gem?

@luke-hill thanks for the fix. Unfortunately this won't work. As @mvz pointed out, the gemspec is only evaluated at build time, not at install time.
@tooky and I changed this in https://github.com/cucumber/cucumber/commit/3cba369c483c7e6b44cf81388140c2204035dc25#diff-e363e0e386df0084a887f93a1461d054
JRuby and MRI<2.6 users should add an explicit dependency on google-protobuf=3.2 in their Gemfile instead. I think that will work.

May ask for a release plan for this fixes to cucumber-messages gem?

@take-cheeze we don't do release plans because nobody is currently paid to work on Cucumber. It will happen when it happens.


Options screen broken

The issue is already reported or known issue?

[X] I have searched the existing issues on github
[X] I am using the latest version

Current behavior
The options screen shows an empty text box that is unable to be written in.
Previously set configuration stays in effect but is unable to be changed

Expected behavior
Options screen shows configuration json
Steps to reproduce

Open options screen

Environment

OS: MacOS 13.6 and Arch Linux
Browser: Firefox 117.0.1 and Chrome 114.0.5735.198
Vimmatic version: 0.5.2

Happens here, too. Empty textentry which is not writable.
macOS 13.6, Firefox 118.0.1, Vimmatic 0.5.2

Having the same problem here, v0.5.2

Sorry for late reply.  I will fix in #267 and release new version soon.


feat: typescript support

This PR adds type definition modules so that React TypeScript projects using this library do not need to introduce a drop-in module augmentation of their own, such as in this example gist.
Resolves #346.
Description

Added .d.ts modules for all .js files exported by this library.
Added compilation script for said .d.ts modules.
Added TypeScript component .ts(x) tests in src/components/__tests__ alongside the existing .js tests.
Added mentions of TypeScript support, usage examples and contribution instructions in README.md.
Added lint support for the TypeScript modules.

Demo:
Locally via yalc

Install yalc globally.npm i -g yalc

Prepare react-intl-tel-input for local-only publishing.yarn build
yalc publish --no-scripts # skips prebuild to unblock you

Scaffold a React app.npx create-react-app react-intl-tel-input-typescript-demo --template typescript

Install the simulated react-intl-tel-input package.yalc add react-intl-tel-input

Use react-intl-tel-input in the React app: App.tsximport IntlTelInput from 'react-intl-tel-input';

Inspect IntlTelInput to see its TypeScript definitions.

Remotely via CodeSandbox
A live preview is available with a pre-merge variant of this library: @andrewsantarin/react-intl-tel-input.
Note: The pre-merge variant is somewhat behind in CI changes from master, but the module type definitions are still up to date.
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[x] I have used ESLint & Prettier to follow the code style of this project.
[x] I have updated the documentation accordingly.
[x] I have added tests to cover my changes.
[x] All new and existing tests passed.

And that's everything, @mcataford!
I still stand by the belief that we should start with .d.ts declaration alongside .js first. Reworking the source code to use .ts would the ideal way moving forward as it means less cognitive load (.ts compiles into .js and .d.ts – 2 birds, 1 stone), but there'll be a lot of migration work ahead.

@mcataford Achievement of the century right here! 🚀
Follow-up for axing tsd (https://github.com/patw0929/react-intl-tel-input/pull/389#discussion_r688971979) sometime this month.


Inline Rainbow Brackets Library

It looks like we'll need to copy over the rainbowbrackets implementation, the package is not set up properly. This is what I get now when I try to use the latest VZCode release in VizHub.

That way we could use only 3 colors too, which would be great!

https://github.com/vizhub-core/vzcode/issues/744

Closed in https://github.com/vizhub-core/vzcode/pull/745


Access to extern crates through prelude

When I try to use code from examples, I have errors like this:
error[E0658]: access to extern crates through prelude is experimental (see issue #44660)
 --> src/db.rs:9:18
  |
9 | type DbManager = r2d2_diesel::ConnectionManager<PgConnection>;
  |                  ^^^^^^^^^^^
  |
  = help: add #![feature(extern_prelude)] to the crate attributes to enable

Rust 1.27.2.
How do I fix this without adding that #![feature thing? Thanks.

use r2d2_diesel


test(de): remove a second query

Closes #12182
Briefly describe your proposed changes:
Add test for removing a query tab when more than one query tab exists.

[ ] Rebased/mergeable
[ ] Tests pass
[ ] http/swagger.yml updated (if modified Go structs or API)
[ ] Sign CLA (if not already signed)

@ebb-tide Watts said these should be fine. I reviewed for the following

[ ] Check for API calls and utilize wait
[ ] Utilize command-assertion chains
[ ] Notably look for get(...).its('length).should and replace with get(...).should('have.length',


id on POST

Hi,
Why does an id string is added when i'm executing a post api toward the json-server ?
what is it for ? is it possible to disable this feature ?
thanks.

Hi,
In REST, when you POST to a resource list it creates an item and you can also get the full list of resources or just a single resource using the following URLs:
GET /photos
GET /photos/1

In order to be able to get photo 1, there need to be an "identifier". This is why an id is added.
It's not possible to disable this feature.

Thanks for explaining :+1:


Installation issue

Hi! I would love to try out your liblary but I'm having an issue with installation.
First when I tried installing your liblary I got this error
npm ERR! code 1
npm ERR! path C:\Users\...\node_modules\@deta\tela\node_modules\esbuild
npm ERR! command failed
npm ERR! command C:\Windows\system32\cmd.exe /d /s /c node install.js
npm ERR! C:\Users\...\node_modules\@deta\tela\node_modules\esbuild\install.js:132
npm ERR!     throw new Error(`Expected ${JSON.stringify(versionFromPackageJSON)} but got ${JSON.stringify(stdout)}`);
npm ERR!           ^
npm ERR!
npm ERR! Error: Expected "0.18.20" but got "0.19.12"
npm ERR!     at validateBinaryVersion (C:\Users\...\node_modules\@deta\tela\node_modules\esbuild\install.js:132:11)
npm ERR!     at C:\Users\...\node_modules\@deta\tela\node_modules\esbuild\install.js:283:5
npm ERR!
npm ERR! Node.js v20.11.0

But as I was able to resolve that by instaling older version of esbuild another obstacle come into way.
Missing<EMAIL_ADDRESS>— skipping
> src\lib does not exist
    at do_build (file:///C:/Users/.../node_modules/@deta/tela/node_modules/@sveltejs/package/src/index.js:28:9)
    at Module.build (file:///C:/Users/.../node_modules/@deta/tela/node_modules/@sveltejs/package/src/index.js:16:8)
    at file:///C:/Users/.../node_modules/@deta/tela/node_modules/@sveltejs/package/src/cli.js:49:61

And I dot know how to move from here. Is it possible I'm using wrong version of Svelte altogether? I don't quite understand the concept of  "manually build tela as installing it from github does only ship the source files."
I'm new in this stuff so I'm sorry it's something trivial. :) Thanks!

I am also getting the exact same issue


Why does the 8-GPUs experience a longer concurrent delay compared to the 2-GPUs?

I conducted concurrent processing tests on an RTX 3090 and the results showed that it takes longer for the 8-GPUs to process the same concurrent requests than 2-GPUs, and the performance of 4 Gpus is similar to that of 2 Gpus. Reducing max-num-seqs on the 2-GPUs  system can accelerate inference, but adjusting max-num-seqs and max-num-batched-tokens on the 8-GPU has little effect, and the speed is still slower than that of the 2-GPUs system. What could be the reason for this? Is it that the scheduling takes more time than the computation? Are there any methods that I can try?

Do you use tensor parallel for 8 GPUs? Tensor parallel will lead to a significant communication overhead. It's recommended to spin up separate server instances on each GPU and load balance using an HTTP load balancer. Related: https://github.com/vllm-project/vllm/pull/1837

@imoneoi
Thank you for your reply. I used the following command for 8 GPUs: python -m ochat.serving.openai_api_server --model /data/openchat_3.5 --engine-use-ray --worker-use-ray --tensor-parallel-size 8 --disable-log-requests --disable-log-stats --log-file openchat.log . Using a single GPU seems to have more advantages in concurrent latency than using multiple GPUs.when using 8 cards, I increased the max-num-batched-tokens , and adjusted the max-num-seqs to mitigate the latency caused by pending operations. However, it didn't worked, and it seems that the bottleneck is not in the computational resources but rather in the scheduling of GPU resources. I Thank you for your suggestion, I will try start a server instance on each GPU.


Paste SVG

We can import SVGs, but it would be more practical if we could directly paste the SVG code (copied as text) to import, instead of using "insert image".

Hey @inwardmovement I'm not able to reproduce this issue on my mac (see screen recording):
https://github.com/excalidraw/excalidraw/assets/84499878/21c2152b-7d65-47c9-8c54-227dc215eb60
What device are you using and am I following the same reproduction steps as you?

that works?
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-file-type-svg" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M14 3v4a1 1 0 0 0 1 1h4" /><path d="M5 12v-7a2 2 0 0 1 2 -2h7l5 5v4" /><path d="M4 20.25c0 .414 .336 .75 .75 .75h1.25a1 1 0 0 0 1 -1v-1a1 1 0 0 0 -1 -1h-1a1 1 0 0 1 -1 -1v-1a1 1 0 0 1 1 -1h1.25a.75 .75 0 0 1 .75 .75" /><path d="M10 15l2 6l2 -6" /><path d="M20 15h-1a2 2 0 0 0 -2 2v2a2 2 0 0 0 2 2h1v-3" /></svg>

Yes it works... I don't know why it didn't before. Thanks!


Fix 'm' not displayed in uppercase (azerty)

On azerty layout, capslock + "M" was decoded as a lowercase "m".

This PR can be closed now that the other one has been merged.


compression: add response decompression

Description: this PR pulls in the new decompressor filter in Envoy and configures response decompression in Envoy Mobile for gzip encoding.
Risk Level: med - new filter in envoy, not tested in production environments.
Testing: local build of the Lyft app.
Signed-off-by: Jose Nino<EMAIL_ADDRESS>

perf compare will fail due to a >1% increase. Will merge


Update vcspeeddial.cpp

Fixed bug that caused a doubled multiply / divide / reset when using midi input

Makes sense, thanks !
Can't even imagine if one associates a fader to those buttons... (by mistake of course :smiley: )


Sample fails to compile

When attempting to compile the Esp32-lwmqtt sample for MKR WiFi 1010, it fails:
../arduino_cache_826184/core/core_arduino_samd_mkrwifi1010_7b40219368808432795314fbc8453d73.a(main.cpp.o): In function `main':
.../Arduino15/packages/arduino/hardware/samd/1.8.11/cores/arduino/main.cpp:49: undefined reference to `setup'
...Arduino15/packages/arduino/hardware/samd/1.8.11/cores/arduino/main.cpp:53: undefined reference to `loop'

I'm running into the same issue... :(


Rate Limit

What's the rate limit?

Whatever the nhentai ratelimit is, idk.
This wrapper doesn't implement any ratelimit management


Footer & Favicon

Creating Favicon for the website and a small footer which will be aesthetically appealing so that there can be a bit scrolling that can be done on the page, otherwise it appears to be quite fixed,

i will take this


api: Add TitlePart

This PR is an alternative to #320. With this PR, you would send individual title parts like:
audience.showTitlePart(TitlePart.TITLE, text("hello!"));
audience.showTitlePart(TitlePart.TIMES, times(0, 100, 15));

Just spotted some incorrect @since tags so have updated those and rebased to latest. For reference, the client doesn't care about the ordering of the packets, so the replacement implementation for the showTitle method is also fine.

Could you add some API to this to map from a Title to and from its component TitleParts?
something like Title.part(TitlePart) and Title.title(PartValuePair...) or something along those lines?

Does anyone have any thoughts about sendTitlePart vs showTitlePart?

Probably sendTitlePart


Bluetooth: Controller: Integrate ISOAL for ISO Broadcast [#52034 squashed]

This is a PR with consolidated open Controller PRs and the squashed commit from #52034.
PRs included:

#52321
#52735
#52842
#52034 [squashed]

Closing superceded by https://github.com/zephyrproject-rtos/zephyr/pull/52842


Queue incoming gossip blocks that are from the future

As per the comments here:
https://github.com/ChainSafe/lodestar/blob/ea113e6b92b055c77adad91e57d96403af83f43f/packages/lodestar/src/network/gossip/validation/block.ts#L39
And this part of the networking spec (https://github.com/ethereum/eth2.0-specs/blob/dev/specs/phase0/p2p-interface.md#beacon_block):

[IGNORE] The block is not from a future slot (with a MAXIMUM_GOSSIP_CLOCK_DISPARITY allowance) -- i.e. validate that signed_beacon_block.message.slot <= current_slot (a client MAY queue future blocks for processing at the appropriate slot).

It seems like we should be queuing incoming gossip blocks that are from the future.

@ChainSafe/eth2-0 We should probably discuss this. Queuing gossip blocks is a bit difficult as we would need to replay blocks trough gossip validation and manually emit is as gossipsub does.
It's quite awkward since we would need to either:

bind method to Gossip object and invoke like here:
https://github.com/ChainSafe/lodestar/blob/master/packages/lodestar/src/network/gossip/gossip.ts#L219

emit block event directly like here:
https://github.com/ChainSafe/lodestar/blob/master/packages/lodestar/src/network/gossip/handlers/block.ts#L15

Seems like first option is somewhat since we don't circumvent handleBlock method which could contain some logic in future.


Multiple track support

@hexahedria, can you predict what happens if you feed midi files which have multiple tracks? Is it supported, does it select the first track of the midi file?
If there is no support, I'm ready to take up development and add this feature...

Right now it squashes all tracks together. So if there are notes being played in multiple tracks, it effectively combines them all into a single stream of notes. This works well if you have a midi file with multiple instruments playing different parts, because it combines the parts together and feeds all of the notes to the network.

Thanks a lot.
On Sat, Apr 30, 2016, 22:28 Daniel Johnson<EMAIL_ADDRESS>wrote:

Closed #13
https://github.com/hexahedria/biaxial-rnn-music-composition/issues/13.
—
You are receiving this because you authored the thread.
Reply to this email directly or view it on GitHub
https://github.com/hexahedria/biaxial-rnn-music-composition/issues/13#event-646613649