Thoughts: Keeping this and DaSL template updated concurrently is not great

With only a few days of having DaSL and this template going, I'm finding the maintenance of both is a bit redundant and I'm worried about something falling through the cracks.
Basically whenever I make a change here I have to make a change over on the DaSL and its not a great system.
Not sure how or if there's a way to make this better, but I'm going to write this down in case anyone has ideas.

I think we urgently need to consolidate the two templates into just the DaSL template and a set of diffs for ITCR. What do you think @carriewright11 @cansavvy

I think that's fine with me. I think we found through the process that the differences between the two templates is not actually that much.

We could have a separate getting_started.md for ITCR courses vs Others just to make the process more clear?

As well as we can make the differences more clear in the BaseCamp template and their associated ToDos.

I like that idea and maybe we can use rmarkdown templates that Katie has been suggesting so that aesthetics can be project specific. I am currently adding most of these with an _output.yml file for bookdown hopefully we could include that in an Rmarkdown template.

could consider submodules if we need to

but I'd rather do that if the other plan doesn't seem to be working

Agreed. I'm worried about submodules adding confusion for whenever we have more outside contributors trying to use the template.

So for a moving forward plan:
With @KatherineCox input from working with the DaSL template, I think I'll take inventory of how DaSL and ITCR templates are different (I think its mostly text) and I'll draft up different instructions. These instructions will probably partially live in basecamp but maybe a short addendum here.
Once people take a look at my draft of "branching off" instructions, if we feel that that would address the differences adequately, then I will rename this repo as DaSL_Course_Template_Bookdown and delete the current DaSL_Course_Template_Bookdown. (Simply because I have higher confidence this one, the ITCR one, is more up to date).
Then all courses can just start from here.

Last step is https://github.com/jhudsl/ITCR_Course_Template_Leanpub/issues/23 and updatingtransfer-rendered-files.yml then I'll close this issue.


404 at /go/compose-native-build/

I found a broken link : https://docs.docker.com/go/compose-native-build/
This link is provided by docker compose when starting container.

Thanks for reporting; this will be fixed by https://github.com/docker/docker.github.io/pull/12154

Thanks for reporting; this will be fixed by https://github.com/docker/docker.github.io/pull/12154


Add a ContentManager API for image loading

Referencing: https://github.com/cornerstonejs/cornerstone/issues/201
This is just a suggestion for a way to bypass the cornerstone imageCache. I kept the API the same on the content manager object so it is expected that a consumer would implement a loadImage method and a loadAndCacheImage method implying that the underlying implementation manage the aspects of caching.

Coverage increased (+0.2%) to 44.294% when pulling d84bab56026de000d1155618f8e86ceb6c1aa269 on jdnarvaez:jdnarvaez/contentManagerAPI into 69d58c4b083038652c2077144a5d8e3c68d79165 on cornerstonejs:master.

Thanks for submitting a PR @jdnarvaez.
Maybe I'm not following, but in this context, how is a contentManager different from an imageLoader? It is tied to a scheme, receives an imageId and options, and returns (hopefully) a promise. The only difference seems to be that a contentManager with the same scheme as an imageLoader would short-circuit the imageLoader.
Can you provide a base implementation of a contentManager that might help me understand why this feature is desirable? Or list out some problems that are solved (or more easily solved) by this merge?
While this solution works for the current architecture, it does make me wonder if we should do a better job of breaking things up to begin with. I like our approach for imageLoaders, but I occasionally pester @swederik about also pulling out the `metaDataProviders' into their own repositories (or at least make it clearer that they are there own "thing").
This might be an okay feature add for 2.x.x, but I think we should consider a different/cleaner approach that might break things for a 3.x.x milestone?

It is essentially an image loader, but it short circuits other loaders and bypasses the imageCache. I looked around for a way to do this without modifying the API, but could not seem to find one. I'm also perfectly fine maintaining this feature in my own fork for the meantime (until maybe we can come up with a cleaner solution, which I admit I don't love this but for the purposes of bypassing the imageCache this seemed to be the easiest way), but I like to keep that up to date with what is in master here. If there's an easier way to bypass the cache I am cool putting up a PR for those changes as well.

Closing this as simply using loadImage instead of loadAndCacheImage everything allows me to bypass things well enough.

@jdnarvaez shoot. GitHub notifications disappear after viewing them, so sometimes I miss following up on issues like this one. I've recently started using Octobox.com, which helps me keep track of things better, but only for more recent issues.
I'd be interested in discussing the possibility of adding registration for a contentManager if we had an example set up with a high value use case. Alternatively, it'd be interesting to see if being able to register multiple imageLoader's to the same scheme and the ability to set their "priority" (with the higher priority loader having the ability to pass or defer to the next one registered to the same scheme).
If you want a less formal chat, message me in our Slack channel. If you have a pretty concrete idea you want to move forward with, create a discussion issue on the repo. If you're cool with where things are currently at, then... 🍾 🎆 👍


Callout: V2 Redesign for responsiveness

Callout: V2 Redesign for responsiveness
Before

After

https://www.loom.com/share/696bcb05f2e7495089a2c3c2907ff0cb

Test Plan

@AlbertCarreras When we wrap, the buttons butt up against the text. /cc @ashleyseto
Learn More and Program:

You can fix this by using vertical symmetrical padding on the text and on the buttons: https://gestalt.netlify.app/Layouts#Form-Layout
Going to r+ since design approved but would be good to follow up and fix this


function-name-format doesn't take exception to CSS transform functions

The following are all valid function names, regardless of the convention used:

rotateX
rotateY
rotateZ
scaleX
scaleY
scaleZ
skewX
skewY
translateX
translateY
translateZ

Do we also need to add exceptions for CSS functions that use the hyphenated-lowercase convention, such as linear-gradient and radial-gradient?
Searching https://developer.mozilla.org/en-US/docs/Web/CSS/Reference for () shows functions available, but I'm not sure if that's an exhaustive list.

I think @BPScott comment is still a valid issue.

Thanks! I opened a separate issue: #434


Make the preview headings in the style dropdown reflect the style of those headings

Discussion 🗣
Currently the heading previews in the style dropdown do not reflect the actual appearance of headings when they are added in the contract text. These previews should give the user an accurate preview of what the heading should look like in the document.
This should remain so even when people who extend this component change the heading styles for their particular apps. They should be linked so if the heading styling changes, the preview of it in the styling dropdown changes too. So when if change the heading styling to be sans-serif instead of a serif font, the dropdown should ideally reflect that.
Current:

doesn't match headings in text:

Hi! I created a pull request in hopes this helps you with the issue you have raised. Took a stab at assuming how people would ideally extend these components (assumed the constants would be updated because there are default styles already there), please let me know if incorrect!


Add a star beside the rating

Summary
just a small thing, but it will make it very obvious what that number means

Please confirm the following

[X] I have searched the existing issues and this is a new ticket, NOT a duplicate or related to another open issue.

Okay no problem, I'm doing this right now!

thanks man!
I know you probably don't like giving out ETA's, but curious, are we far off from next release? xD

Probably in 2 hours max XD
Just time to do a few final tests to make sure everything works, and it will be out

Probably in 2 hours max XD Just time to do a few final tests to make sure everything works, and it will be out

Awesome! :D thanks man


Parser Fails with Credit Card Transactions

I'm not sure if this library is attempting to support credit card transactions, but currenty when downloading a qfx file from bank of america for my credit card, the parser fails.  The reason is that the transaction wrapper key is CREDITCARDMSGSRSV1 rather than BANKMSGSRSV1.  Additionally, the next level deep is CCSTMTRS rather than STMTRS.
here is a sample:  https://gist.github.com/mattcdavis1/3945e88d8bf931c541f2

I faced the same and the parser does not seem to parse credit card accounts, only bank accounts. Is someone working on this already?

i've forked the repo and added support for credit cards here:
https://github.com/mattcdavis1/ofxparser

PRs welcome ;)

just created a pull request.


What should be the minimum supported version of Ruby for this gem?

Currently 2.5, but should it be 2,6?

Yeah, I think it's reasonable to say 2.6, especially as 2.6 is going to be EOL'd soon: https://www.ruby-lang.org/en/downloads/

Great, thanks - I'd lost track of which were EOL'd. I'm happy to stay just behind that.


Clean up repo

LGTM
@adaamko can you please also have a look when you get the chance?

I will fix that, and additionally I also need a newer version of POTATO that is using the same version of tuw-nlp.


Added missing obtain methods for two achievements

The two methods of obtaining achievements have been added:

Heart On Your Sleeve
Open Sourcerer

open sorcerer looks good, but heart in your sleeve is inaccurate

After researching a couple of pages and some similar repositories, they all practically match the same description, the fact is that it is currently being tested, by the time they publish it we will be able to confirm 100%

What about the amounts?

Until they are published, we don't know for sure.


Load WordPress via Git Submodule

Has this been considered as an option? specify a stable branch in your git modules and then for those that clone this repo with the --recursive option they will get a compatible WordPress build with it.

I spoke in our WP group on Slack about this and the general consensus was that git modules is not a great way to go (everyone suggested composer).
I use WP-CLI to install WordPress but If you can justify why this is the best way to go then sell it to me :D

Using composer means requiring additional pre-requisites.
Including a .gitmodule is an optional step and can be skipped if the user has a manual zip of WP or uses WP-CLI
By adding in a --recursive flag when using git clone <url> it will bring in a specified version which users will know is compatible with the theme.


Using Material UI / Preact compatible component library

Hi,
I was trying to include Material UI since it is compatible with preact:
https://twitter.com/preactjs/status/1152267975078154240?lang=en-GB
And including MUI core as a dependency as in normal deno: https://github.com/denoland/deno/issues/7282
However I run into [object Object] is not a valid HTML tag name:  https://github.com/denoland/deno/issues/7282 when doing it both as a route and as an island.
Would in general all the packages in https://preactjs.com/about/libraries-addons/ technically be usable with Fresh ?

https://mui.com/material-ui/guides/server-rendering/
I think MUI need some setup for server side rendering like the twind in fresh demo

To my understanding this extra configuration is a bonus to make sure there is no flickering since we re-render on the client side - so I assume purely using an island should also work.
However, I did give this a go, but this feels very non-standard and I was unsure how to inject html and css. I end-up getting React not defined error.
import { h } from "preact";
import {CssBaseline} from '@mui';
import { ThemeProvider } from 'mui/styles';
import createCache from 'https://esm.sh/@emotion/cache';
import { CacheProvider } from 'https://esm.sh/@emotion/react';
import createEmotionServer from 'https://esm.sh/@emotion/server/create-instance';
import render from 'preact-render-to-string';
import theme from './theme.ts';

export function createEmotionCache() {
  return createCache({ key: 'css' });
}

export function serverMUI(App: any) {
    const cache = createEmotionCache();
    const { extractCriticalToChunks, constructStyleTagsFromChunks } =
        createEmotionServer(cache);

    // Render the component to a string.
    const html: string = render(
        <CacheProvider value={cache}>
            <ThemeProvider theme={theme}>
                {/* CssBaseline kickstart an elegant, consistent, and simple baseline to build upon. */}
                <CssBaseline />
                <App />
            </ThemeProvider>
        </CacheProvider>
    );

    // Grab the CSS from emotion
    const emotionChunks = extractCriticalToChunks(html);
    const emotionCss: string = constructStyleTagsFromChunks(emotionChunks);

    return <div dangerouslySetInnerHTML={{__html: emotionCss.concat(html)}}/>
}
export * from "mui";

For any component that I want rendered with MUI I just wrap it in a serverMUI call.
Note that replicating the theming and caching and an island gets the same exact error - the previous error described happens if you remove the wrapping CacheProvider etc.

Actually I realise the better way to do the above is using the request handlers instead but I still get the same error.

maybe try adding "react": "preact " in import_map ?

Actually I realise the better way to do the above is using the request handlers instead but I still get the same error.

that isn't a valid map

I got it to work by adding this to the import_map.json. (I tested with this example from MUI's Website and I got an alert in the browser)
"@mui/material": "https://esm.sh/@mui/material<EMAIL_ADDRESS>

Thanks guys that works well !

see also: #363


Move cull, fuse, inline, and inline_functions to dask.optimize

Should we move anything else around?

This is awesome.  Hooray for refactor PRs!


Feature Request: Container Lifecycle Hooks

Is your feature request related to a problem? Please describe.
I can't find an (easy?) way to run a task on the container that was just updated / deployed. For instance, I might want to run Rails Active Record Migrations as part of the deployment. This would be the last step in the update lifecylce right before a revision begins receiving traffic and if the command is not successful then the deployment is aborted.
Describe the solution you'd like.
I suppose a postStart Container Lifecycle Hook which would accept a handler which gets executed in the container that is being deployed.

Single Revision Mode: Once the new revision is "ready", the command is successfully (zero exit code) and then the new revision immediately starts handling new traffic.
Multiple revision mode: Once the new revision is "ready", the command is successfully (zero exit code) and then the new revision is eligible to start receiving traffic.

I recognize what I'm describing is more of a postReady type of hook that gets executed when the container is ready, but before receiving traffic. It's odd because it needs to execute when the container is ready to recieve traffic, but not before that otherwise the old revision will be using the new database schema.
Describe alternatives you've considered.
I can't find a solution that would allow you to run a script between being ready and receiving traffic other than:

Making it part of the startup script of the image, but this would make the container startup slower, when really it just needs to be done once per revision.
Making it part of the startup probe, which feels really hacky.

An initContainer doesn't really solve this because the command would be run well before the new revision starts receiving traffic.
Additional context.
A lot of systems require this kind of deployment. step (for better or worse):

Rails Active Record Migrations
Drupal Database Updates
WordPress Database Updates
MediaWiki Database Updates
Symfony Database Migrations
Laravel Database Migrations

It seems like having a simple/straightforward solution to this problem is essential to running any of these types of applications / frameworks.

upvote for this feature too. this is very crucial if you running critical app in container service, e.g. validator signer


disable atlas status signal plots

This removes the atlas lcmtypes from the scope. plots using these signals can be achieved using the python interface now

merging now, but i might add another commit to clean this up, instead of commenting out the atlas lines ill move them to a atlas only cpp file which is optionally included

agreed that they can all be replaced with python, im just not sure if all of them have python files yet?  maybe they do, i need to check

they don't have python files but they can be easily created (thanks for that!)


Implement integration test for MXJob related to suspend semantics

What this PR does / why we need it:
I implemented integration test for MXJob related to suspend semantics.
follow-up: https://github.com/kubeflow/training-operator/pull/1859
Which issue(s) this PR fixes (optional, in Fixes #<issue number>, #<issue number>, ... format, will close the issue(s) when PR gets merged):
Fixes #
Checklist:

[ ] Docs included if any changes are user facing

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
2 unchanged lines in 1 file lost coverage.
Overall coverage increased (+3.4%) to 37.025%

Files with Coverage Reduction
New Missed Lines
%

pkg/controller.v1/mpi/mpijob_controller.go
2
78.98%

Totals

Change from base Build<PHONE_NUMBER>:
3.4%

Covered Lines:
3621

Relevant Lines:
9780

💛  - Coveralls

/assign @johnugeorge


Mix can not compiling the React (jsx) file

Laravel Version: 5.4

I can not compile React file by default webpack.config.js.
Please fix node_modules\laravel-mix\setup\webpack.config.js lines 92-96 to:
{
     test: /\.jsx?$/,
     exclude: /(node_modules|bower_components)/,
     loader: 'babel-loader' + Mix.babelConfig(),
     query: {
         presets: ['react', 'es2015']
     }
}

Thanks.

Please report on https://github.com/jeffreyWay/laravel-mix


Added LruCache in envoy

Signed-off-by: Manish Kumar<EMAIL_ADDRESS>Commit Message: Move LruCache from jwt_verify_lib/simple_lru_cache
Additional Description: This PR is follow up to comment:14341
Risk Level:
Testing: unit and build
Docs Changes: n/a
Release Notes: n/a
Fixes #16108

CC @wrowe @htuch @qiwzhang

Also, why not just add https://github.com/google/jwt_verify_lib/tree/master/simple_lru_cache as an external dependency rather than copy the files?

Also, why not just add https://github.com/google/jwt_verify_lib/tree/master/simple_lru_cache as an external dependency rather than copy the files?

As of now, this is already used as an external dependency in Jwt Cache. The purpose of adding to envoy is to consumed by other modules of envoy.
This code has a copyright of google. Please see https://github.com/google/jwt_verify_lib/blob/e5d6cf7067495b0868787e1fd1e75cef3242a840/simple_lru_cache/simple_lru_cache.h#L1

@htuch Any thought?

I think the idea was that this might be useful beyond the JWT verifier. It seems there are a few other places that LRU might make sense (basically, whenever we're caching stuff, e.g. DNS, gRPC clients, etc.). Maybe do a quick survey and list all places LRU cache might make sense based on existing uses?

Initially, I had tried to keep this code in envoy but as per discussion in https://github.com/envoyproxy/envoy/pull/14341#issuecomment-743986331, moved Lru cache code in jwt_verify_lib.

Reason for the format check failure: https://dev.azure.com/cncf/envoy/_build/results?buildId=83500&view=logs&j=c5dd2866-6ab3-5f3c-3a44-4cef0ec909b5&t=a9eb66d6-8944-5769-b3f7-476949dadcb8&l=72

I am closing as of now, I have been busy with some other task.


Make construct_runtime macro more flexible

Usually the assumptions made by the construct_runtime macro are correct and help keep the runtime boilerplate free, but sometimes it's desirable to override the implementations generated by the macro.
In my case, for example, I want to override the implementation of From<Origin> for Result<RawOrigin<AccountId>, Origin> so I can allow my custom origins to pass through the default ensure_signed assertions in most pallets' calls.
I would like to propose and get feedback/suggestions on how to make the construct_runtime macro more flexible, while still maintaining the minimum amount of boilerplate. The solution I currently have in mind is probably not the best possible, thus I'd like to brainstorm solutions.
I'll preface this with a note that I'm not super knowledgeable in Rust macros, so I'm not sure if this is possible to implement like this, but here's what I had in mind:
construct_runtime!(
    pub enum Runtime where
        Block = Block,
        NodeBlock = opaque::Block,
        UncheckedExtrinsic = UncheckedExtrinsic
    {
        System: frame_system::{Pallet, Call, Config, Storage, Event<T>} = 0,
        [...]
    }

    // Anything implemented manually here won't get generated by the macro automatically and instead will be passed through.
    impl From<Origin> for Result<System::Origin, Origin> {
        // impl here
    }

Perhaps we could even break down the implementations from construct_runtime into multiple macros (like impl_call, impl_origin, etc...) and these could be used by themselves or if the runtime does not require any special implementations, we could have the overarching construct_runtime calling these within itself if they are declared in the macro.

I am sure I've pasted this in another issue as well, but I think the new version of this macro should look like this:
#[frame::contruct_rutnime]
mod runtime {
    // The rest, like `AllPalletsReserved` and such have to be
    // unfortunately aut-generated, or better, deprecated.
    #[frame::pallets]
    type AllPallets = (
        frame_system::pallet,
        pallet_balances::pallet,
        pallet_staking::pallet,
        pallet_sessin::pallet,
    );

    // don't think there is much to this.
    #[frame::runtime]
    pub struct Runtime;

    // Auto-generate call from `AllPallets`
    #[frame::call]
    pub enum RuntimeCall = ..AllPallets;

    // Alternative to the speard syntax above: Explicitely build an enum with the given
    // pallet paths.
    //
    // This is very dangerous, only for experts. Probably no real use case for it either..
    #[frame::event]
    pub enum RuntimeEvent = (frame_system, pallet_staking);

    #[frame::origin]
    pub enum Origin = ..AllPallets
}
pub use runtime::{Runtime, RuntimeCall, RuntimeEvent, RuntimeOrigin};

Where if you write pub enum Origin = ..AllPallets you get the default implementation, but you can opt out of it any at any point as well.

I like this a lot, it not only solves the flexibility issues I mentioned,
but also helps with visibility for the enums generated, which are right now
created inside the macro and thus hidden in the source code of the runtime.
On Sun, Jan 15, 2023 at 9:36 AM Kian Paimani @.***>
wrote:

I am sure I've pasted this in another issue as well, but I think the new
version of this macro should look like this:
#[frame::contruct_rutnime]
mod runtime {
// The rest, like AllPalletsReserved and such have to be
// unfortunately aut-generated, or better, deprecated.
#[frame::pallets]
type AllPallets = (
frame_system::pallet,
pallet_balances::pallet,
pallet_staking::pallet,
pallet_sessin::pallet,
);
// don't think there is much to this.
#[frame::runtime]
pub struct Runtime;

// Auto-generate call from `AllPallets`
#[frame::call]
pub enum RuntimeCall = ..AllPallets;

// Alternative to the speard syntax above: Explicitely build an enum with the given
// pallet paths.
//
// This is very dangerous, only for experts. Probably no real use case for it either..
#[frame::event]
pub enum RuntimeEvent = (frame_system, pallet_staking);

#[frame::origin]
pub enum Origin = ..AllPallets

}
pub use runtime::{Runtime, RuntimeCall, RuntimeEvent, RuntimeOrigin};
Where if you write pub enum Origin = ..AllPallets you get the default
implementation, but you can opt out of it any at any point as well.
—
Reply to this email directly, view it on GitHub
https://github.com/paritytech/substrate/issues/13137#issuecomment-1383140186,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AHGXNIUDDRNXPJG2AW45S5TWSPVMLANCNFSM6AAAAAAT2PWTBI
.
You are receiving this because you authored the thread.Message ID:
@.***>

--
Gabriel Facco de Arruda
+55 (51) 99826-0101
@.*** @.**>

In my case, for example, I want to override the implementation of From<Origin> for Result<RawOrigin<AccountId>, Origin> so I can allow my custom origins to pass through the default ensure_signed assertions in most pallets' calls.

This doesn't really makes sense, why passing your custom origin when the function only needs a signed origin? And how should the From implementation look like? You don't have any context in there and would convert your origin just "blindly" into the RawOrigin. If you need help with what you are doing, please provide some proper write up (what you want to achieve etc) somewhere (maybe Polkadot forum). Then we can look into it and give some tips.
The general idea of @kianenigma looks good and something we should speak about!

In my case, for example, I want to override the implementation of From<Origin> for Result<RawOrigin<AccountId>, Origin> so I can allow my custom origins to pass through the default ensure_signed assertions in most pallets' calls.

This doesn't really makes sense, why passing your custom origin when the function only needs a signed origin? And how should the From implementation look like? You don't have any context in there and would convert your origin just "blindly" into the RawOrigin. If you need help with what you are doing, please provide some proper write up (what you want to achieve etc) somewhere (maybe Polkadot forum). Then we can look into it and give some tips.
The general idea of @kianenigma looks good and something we should speak about!

I don't actually need help with that, I already have it working how I want it but I had to clone and modify the frame-support-procedural crate so I could implement it myself, which is why I came to the conclusion that making the construct_runtime macro more flexible would be of help not only to me but possibly to others that want to have unconventional implementation like mine.
And to answer your question of why I want my custom origin to act as signed, it's because the origin is for a multisig pallet that has calls within it to change parameters and handle operations that modify the multisig itself, those need specific data like the multisig id and the original caller who initiated the multisig, I have that data in the custom origin, but I also want the multisig to act as a normal account for everything else. I know it can be easily solved by adding those to the function arguments and then verifying within the function, but I'm building with UX in mind, if something can be achieved by the runtime without concerning the users and developers, then I'll handle that.

I see what you want to achieve. Currently this is already achievable without forking frame-support by creating a newtype wrapper for the RuntimeOrigin. On this newtype wrapper you could implement the Into<Result<RawOrigin, Self>> as you need it. Then you would set this WrappedRuntimeOrigin as your runtime origin to all the pallets.
We could also add some attribute #[do_not_implement_into_raw_origin] (shitty naming :P) to the current construct_runtime macro to skip the implementation. This is then a short term fix for your issue. I think even in the future dreamed by @kianenigma you would need such an attribute as per default this should always be implemented.

This issue has been mentioned on Polkadot Forum. There might be relevant details there:
https://forum.polkadot.network/t/less-magic-in-frame-good-or-bad/2287/2

This issue has been mentioned on Polkadot Forum. There might be relevant details there:
https://forum.polkadot.network/t/less-magic-in-frame-good-or-bad/2287/8

Not a whole lot has changed, but here is a more up to date version of the above idea, which also answers the question raised by @gavofyork:
#[frame::construct_runtime]
mod runtime {
	/// Mandatory, just to declare `pub struct Runtime`.
	#[frame::runtime]
	pub struct Runtime;

	/// Mandatory; and the benefit now is that we can elide a LOT of the types for this. The macro
	/// will elide all generics for you as:
	/// 1. `System` is already know.
	/// 2. `Block` is already known from system (assuming
	/// https://github.com/paritytech/substrate/pull/14193)
	/// 3. `Context` is already know from System.
	/// 4. `UnsignedValidator` is known from `AllPallets`
	/// 5. `AllPallets` is known
	/// 6. `OnRuntimeUpgrade` will be left blank to its default to `()`.
	///
	/// All of the above can be replaced with `_`. So the typical syntax is:
	///
	/// `pub struct Executive<_, _, _, _, _, Migration>`
	///
	/// Which can be further reduced to:
	///
	/// If you provide `pub struct Executive<Migrations>`
	///
	/// NOTE: In the future, the execution of `OnRuntimeUpgrade` should be fully delegated to a
	/// single "migration dispatcher" pallet (probably the same one as
	/// https://github.com/paritytech/substrate/pull/14275), so this last argument can be removed.
	#[frame::executive]
	pub struct Executive<_, _, _, _ , _>;

	/// Almost exactly the same syntax as the existing one.
	///
	/// This will not be real rust-like, but it will demonstrate the existence of `type AllPallets`.
	#[frame::pallets]
	pub type AllPallets = (
		System = frame_system::pallet = 0,
		BalancesFoo = pallet_balances::pallet = 1,
		BalancesBar = pallet_balances::pallet = 2,
		Staking = pallet_staking::pallet = 42,
		Session = pallet_session::pallet = 43,
	);

	/// This can either be a tuple of pallet names, eg
	///
	/// #[frame::call] pub enum RuntimeCall = (System, BalancesFoo, Staking)
	///
	/// which omits a number of calls, or be the below syntax, which means "derive it from
	/// AllPallets, in the exact same manner".
	#[frame::call]
	pub enum RuntimeCall = ..AllPallets;

	/// Same semantics as `RuntimeCall`.
	#[frame::event]
	pub enum RuntimeEvent = ..AllPallets;

	/// Same semantics as `RuntimeCall`.
	#[frame::origin]
	pub enum RuntimeOrigin = ..AllPallets;

	/// Same semantics as `RuntimeCall`.
	#[frame::genesis_config]
	pub enum RuntimeGenesis = ..AllPallet;

	/// This will auto-populate this module with a known list of types and re-exports that will be
	/// useful either in the rest of this block (`Block`, `Header` etc), or the ones that are
	/// typically used by the node to build genesis (`AccountId`, `OpaqueBlock`) etc.
	#[frame::runtime_prelude]
	pub mod prelude {}

	/// Further Idea #1: This can automatically generate nested builders that create a struct with
	/// fields corresponding to the `GenesisConfig` of each pallet.
	///
	/// See: https://github.com/paritytech/substrate/issues/13463#issuecomment-1464013060
	#[frame::ext_builder]
	pub struct ExtBuilder {}

	/// Further idea #2: The parent annotation could be
	/// #[frame::construct_runtime(testing|parachain|solo-chain)] which could enforce more rules,
	/// elide more types.
	///
	/// See: https://github.com/paritytech/substrate/issues/13321
}

/// Finally, other than `#[frame::runtime] mod runtime`, this is your single exposed
pub use runtime::prelude::*;

	/// NOTE: In the future, the execution of `OnRuntimeUpgrade` should be fully delegated to a
	/// single "migration dispatcher" pallet (probably the same one as
	/// https://github.com/paritytech/substrate/pull/14275), so this last argument can be removed.

Migrations are running before on_initialize and on_initialize is controlled by Executive. We could add some extra Hooks, however I'm not sure if this is better.

How do we feel about the following to maintain rust-like syntax for AllPallets:

#[frame_support::construct_runtime_v2]
mod runtime {
	#[frame::runtime]
	pub struct Runtime;

	#[frame::pallets]
	pub struct AllPallets {
		System: frame_system,
		Timestamp: pallet_timestamp,
		Aura: pallet_aura,
		Grandpa: pallet_grandpa,
		Balances: pallet_balances,
		TransactionPayment: pallet_transaction_payment,
		Sudo: pallet_sudo,
		TemplateModule: pallet_template,
	}

	#[frame::indices]
	pub enum AllPalletIndices {
		System = 0,
		Timestamp = 1,
		Aura = 2,
		Grandpa = 3,
		Balances = 4,
		TransactionPayment = 5,
		Sudo = 6,
		TemplateModule = 7,
	}
}

IMO declaring the pallets and indices should be done in one place and not split up.

Taking naming and instancing into account, maybe:
#[frame::pallets]
pub enum Pallets {
	System      = frame_system::pallet    { index: 0, ..Default::default() },
	BalancesFoo = pallet_balances::pallet { index: 1, instance: 1 },
	BalancesBar = pallet_balances::pallet { index: 2, instance: 2 }
};

or when wanting to indicate that the index is not really pallet specific:
#[frame::pallets]
pub enum Pallets {
	System      = (0, frame_system::pallet::default()),
	BalancesFoo = (1, pallet_balances::pallet { instance: 1 }),
	BalancesBar = (2, pallet_balances::pallet { instance: 2 })
};

@ggwpez I really like this one. Will explore this further.
#[frame::pallets]
pub enum Pallets {
	System      = (0, frame_system::pallet::default()),
	BalancesFoo = (1, pallet_balances::pallet { instance: 1 }),
	BalancesBar = (2, pallet_balances::pallet { instance: 2 })
};

trying to use a pseudo rust types to declare pallets can be confusing.
In this case what is the enum Pallets , is it really declared at the end or removed by the macro?
Kian proposal where items the declared items are really defined by the macro is less confusing IMO.
though the non-rust syntax might be better inside attributes (#[....])
maybe for declaring a pallet we can go with a more explicit declaration a bit like json like this, but it can be too verbose:
pallet(name: Balance, path: pallet_balances, index: 1)
pallet(name: Balance2, path: pallet_balances, index: 2, instance: 4, disable_call, disable_inherent)

or
pallet { name: Balance, path: pallet_balances, index: 1 }
pallet { name: Balance2, path: pallet_balances, index: 2, instance: 4, flags: [disable_call, disable_inherent] }

while trying to figure out what flag are interesting for users, I made this summary of the code generated by construct_runtime

1 call:
declare type RuntimeCall like a normal aggregation
derive encode/decode/typeinfo/clone/partialea/eq
add the use of index when deriving encode/decode
little magic: generate for each the pallet a call type (e.g. BalancesCall)
implement trait GetDispatchInfo like a normal aggregation
implement trait GetCallMetadata like a normal aggregation
implement trait UnfilteredDispatchable: like a normal aggregation
implement trait From for each variant inner type like a normal aggregation
implement trait IsSubType for each variant inner type like a normal aggregation
implement function sizes: seems like an internal function
implement function assert_size_under: implementation is quite expected
MAGIC: implement trait Dispatchable: call filter_call then call dispatch_bypass_filter

2 genesis config:
little magic: generate for each pallet a config type (e.g. BalancesConfig = pallet_balances::GenesisConfig)
NOTE: this is probably an old artefact to remove
declare type RuntimeGenesisConfig like a normal aggregation
derive Serialize/Deserialize/Default
implement trait BuildStorage like a normal aggregation:
NOTE: use declaration order for building order (and not index order)

3 event:
declare type RuntimeEvent like a normal aggregation
implement From and TryInto for each variant inner type like a normal aggregation

4 freeze_reason:
declare type RuntimeFreezeReason like a normal aggregation
derive Copy/Clone/Eq/PartialEq/Ord/PartialOrd/Encode/Decode/MaxEncodedLen/TypeInfo
implement From for each variant inner type like a normal aggregation

5 hold_reason: same as freeze_reason

6 slash_reason: same as freeze_reason

7 inherent:
MAGIC: declare trait InherentDataExt
implement function InherentDataExt::create_extrinsics in an expected way
MAGIC: implement function InherentDataExt::check_extrinsics with quite some specific logic using is_inherent and check_inherent implementations in pallet
NOTE: should be implemented in an abstraction outside macro
MAGIC: implement trait EnsureInherentAreFirst with quite some specific logic using is_inherent implementations in pallet
NOTE: should be implemented in an abstraction outside macro
TODO: instead we should have check_inherent and is_inherent implemented for RuntimeCall by the macro. And other logic in executive or frame_support

8 origin:
MAGIC: declare type RuntimeOrigin with 2 fields: caller and filter
MAGIC: implement trait OriginTrait
NOTE: both should probably be implemented in an abstratction outside the macro
declare type OriginCaller implemented like a normal aggregation
implement function none
implement function root
implement function signed
implement trait From<system origin> for OriginCaller
implement trait From<system origin> for RuntimeOrigin
implement trait From<OriginCaller> for RuntimeOrigin
implement trait CallerTrait
implement trait TryFrom<OriginCaller> for system origin
implement trait From<RuntimeOrigin> for Result<system origin, RuntimeOrigin>
implement trait From<Option<AccountId>> for RuntimeOrigin
implement traits From/TryFrom for other variant than system and both OriginCaller and RuntimeOrigin
implement some other conversions for other variant than system

9 metadata: let's skip

10 lock_id: same as freeze_reason

11 validate unsigned:
implement trait ValidateUnsigned like a normal aggregation

12 runtime
declare struct Runtime
implement traits GetNodeBlockType and GetRuntimeBlockType for Runtime
NOTE: we could make this a real trait implementation for user, or move them to frame_system::Config instead of current syntax:
	pub struct Runtime where
		Block = Block,
		NodeBlock = node_primitives::Block,

declare a type PalletInfo and implement the trait PalletInfo on it. Implementation is a normal aggregation
declare some tests for error encoded size and runtime integrity tests.

Final notes

inherent logic should be implemented inside executive or support, and only the aggregation should be done by the macro.
maybe origin implementation can improved by abstracting some parts outside the macro.
the filter of the call added to dispatch and origin with a filter is bit magical indeed, I don't know how to improve though.

First we should think about what kind of features we need to support. I can think of index, instance, disable_calls and disable_unsigned? By disable_calls I mean that the runtime will not export the calls of the pallet, so they will be un-callable. By disable_unsigned I mean that the runtime doesn't want to support the unsigned calls exposed by the call (aka not exposing the UnsignedValidator of this pallet.
All the other rest like Pallet, Event etc should not be anymore required to be specified by the user.

I can't find disable_calls or disable_unsigned. You probably mean exclude_parts and include_parts?
I think all of this should handled outside of where you define the list of pallets. This is one fundamental difference between my suggestion (or its general direction) and what we currently have.
Now, if you have 3 pallets and you want to include the call of two of them only, it will look something like this:
construct_runtime!(
  PalletA: pallet_a::{Call, GenesisConfig} = 0,
  PalletB: pallet_b::{Call, GenesisConfig} = 0
  PalletB: pallet_c::{GenesisConfig} = 0
)

This is mixing 3 concepts: instancing, indexing, and individual parts. I am suggesting moving the latter to separate types/macros. This is:

Explicit
Useful for things like RuntimeCall and RuntimeEvent and RuntimeGenesisConfig and such to become explicit.

So the above example, in my suggestion, would be:
#[frame::runtime] {
	// details of this block's syntax is itself TBD, but it should only specify index and instance
	#[frame::pallets]
	pub type AllPallets = (
		PalletA = 0,
		PalletB = 1,
		PalletC = 2
	);

	#[frame::call]
	pub enum RuntimeCall = (PalletA, PalletB);

	#[frame::genesis_config]
	pub enum RuntimeGenesis = ..AllPallet;
}

I skipped UnsignedValidator initially, but I think it can be easy enough to add. Updated my comment here.
@gupnik The action-item for you here to investigate an exhaustive list of features that the current construct_runtime has (@thiolliere's comment above helps, but you should look at the code docs of construct_runtime) and map them to the next syntax suggestions to see which one fulfills all, and best.
For example, I know that you can specify Pallet = pallet::{Storage} and I am not sure what this is supposed to mean.
Also, you should investigate the initial request from @arrudagates and if/how it can be fulfilled with the new proposal. I feel like I hijacked his issue here for something unrelated 😅
(As a side note, the keyword Config in construct_runtime should actually be GenesisConfig as it is currently at the risk of being confused with trait Config, cc @juangirini)

Not sure we should touch this and not just keep it until we have the new syntax.

Agree, I have created an issue anyway to keep it in mind though.

As discussed during the retreat, we could use the following syntax to provide a reasonable default:
#[frame::construct_runtime]
mod runtime {
	#[frame::runtime]
	pub struct Runtime;

	#[frame::pallets]
        #[derive(RuntimeGenesisConfig, RuntimeCall, RuntimeOrigin)] // Aggregate all pallets by default
	pub type AllPallets = (
		System = frame_system::pallet = 0,
		BalancesFoo = pallet_balances::pallet = 1,
		BalancesBar = pallet_balances::pallet = 2,
		Staking = pallet_staking::pallet = 42,
		Session = pallet_session::pallet = 43,
	);
}

There could be an additional syntax to exclude some pallet parts if needed.

I see what you want to achieve. Currently this is already achievable without forking frame-support by creating a newtype wrapper for the RuntimeOrigin. On this newtype wrapper you could implement the Into<Result<RawOrigin, Self>> as you need it. Then you would set this WrappedRuntimeOrigin as your runtime origin to all the pallets.
We could also add some attribute #[do_not_implement_into_raw_origin] (shitty naming :P) to the current construct_runtime macro to skip the implementation. This is then a short term fix for your issue. I think even in the future dreamed by @kianenigma you would need such an attribute as per default this should always be implemented.

@bkchr How do you suggest wrapping RuntimeOrigin? I have tried and it seems to be a lot of work with all the implementations required. For now, the only easy solution I see, is to also fork frame-support.

@bkchr How do you suggest wrapping RuntimeOrigin?

Yes.

As discussed during the retreat, we could use the following syntax to provide a reasonable default:
#[frame::construct_runtime]
mod runtime {
	#[frame::runtime]
	pub struct Runtime;

	#[frame::pallets]
        #[derive(RuntimeGenesisConfig, RuntimeCall, RuntimeOrigin)] // Aggregate all pallets by default
	pub type AllPallets = (
		System = frame_system::pallet = 0,
		BalancesFoo = pallet_balances::pallet = 1,
		BalancesBar = pallet_balances::pallet = 2,
		Staking = pallet_staking::pallet = 42,
		Session = pallet_session::pallet = 43,
	);
}

There could be an additional syntax to exclude some pallet parts if needed.

I wanted exactly this when trying to learn about type RuntimeHoldReason = RuntimeHoldReason; and I could not find RuntimeHoldReason in the codebase.
Deeper digging, I realized it was being generated by construct_runtime and this was not obvious.


Emmet not working on Brackets 1.14

I installed Emmit from Brackets itself, but the Emmet tab don't shows up, and any of its commands works. I'm using Brackets 1.14 build 1.14.2-17770 on Windows 10 and I have installed Emmet 1.2.2.

You solve that problem ?

Man, didn't remember of this. No, I didn't solve the problem, but I switched to Linux and VS Code, for other reasons. I'll be closing the issue, since it is not relevant anymore.


New version: CUDA_full_jll v11.0.1+0

Autogenerated JLL package registration

Registering JLL package CUDA_full_jll.jl
Repository: https://github.com/JuliaBinaryWrappers/CUDA_full_jll.jl
Version: v11.0.1+0

[ Info: Successfully `Pkg.add`ed package
ERROR: SystemError (with /tmp/jl_HR3A27/artifacts/c98a2729f08e8e9c3765e8b1f0f242f26983d187/cuda/targets/x86_64-linux/include/CL): rmdir: Permission denied
Stacktrace:
 [1] systemerror(::Symbol, ::Int32; extrainfo::String) at ./error.jl:168
 [2] #systemerror#50 at ./error.jl:167 [inlined]
 [3] rm(::String; force::Bool, recursive::Bool) at ./file.jl:286
 [4] rm(::String; force::Bool, recursive::Bool) at ./file.jl:278 (repeats 7 times)
 [5] _run_pkg_commands(::String, ::String, ::VersionNumber; code::String, before_message::String, success_message::String, success_return_1::Bool, success_return_2::String, failure_message::String, failure_return_1::Bool, failure_return_2::String) at /home/runner/.julia/packages/RegistryCI/1gUch/src/AutoMerge/guidelines.jl:349
 [6] #meets_version_can_be_pkg_added#72 at /home/runner/.julia/packages/RegistryCI/1gUch/src/AutoMerge/guidelines.jl:246 [inlined]
 [7] pull_request_build(::RegistryCI.AutoMerge.NewVersion, ::GitHub.PullRequest, ::String, ::GitHub.Repo; auth::GitHub.OAuth2, authorized_authors::Array{String,1}, authorized_authors_special_jll_exceptions::Array{String,1}, registry_head::String, registry_master::String, suggest_onepointzero::Bool, whoami::String, registry_deps::Array{String,1}) at /home/runner/.julia/packages/RegistryCI/1gUch/src/AutoMerge/new-version.jl:153
 [8] pull_request_build(::GitHub.PullRequest, ::String, ::GitHub.Repo, ::String; auth::GitHub.OAuth2, authorized_authors::Array{String,1}, authorized_authors_special_jll_exceptions::Array{String,1}, master_branch::String, master_branch_is_default_branch::Bool, suggest_onepointzero::Bool, whoami::String, registry_deps::Array{String,1}) at /home/runner/.julia/packages/RegistryCI/1gUch/src/AutoMerge/pull-requests.jl:92
 [9] pull_request_build(::Int64, ::String, ::GitHub.Repo, ::String; whoami::String, auth::GitHub.OAuth2, authorized_authors::Array{String,1}, authorized_authors_special_jll_exceptions::Array{String,1}, master_branch::String, master_branch_is_default_branch::Bool, suggest_onepointzero::Bool, registry_deps::Array{String,1}) at /home/runner/.julia/packages/RegistryCI/1gUch/src/AutoMerge/pull-requests.jl:42
 [10] run(::Base.EnvDict, ::RegistryCI.AutoMerge.GitHubActions; merge_new_packages::Bool, merge_new_versions::Bool, new_package_waiting_period::Day, new_jll_package_waiting_period::Minute, new_version_waiting_period::Minute, new_jll_version_waiting_period::Minute, registry::String, authorized_authors::Array{String,1}, authorized_authors_special_jll_exceptions::Array{String,1}, additional_statuses::Array{String,1}, additional_check_runs::Array{String,1}, master_branch::String, master_branch_is_default_branch::Bool, suggest_onepointzero::Bool, registry_deps::Array{String,1}) at /home/runner/.julia/packages/RegistryCI/1gUch/src/AutoMerge/public.jl:50
 [11] top-level scope at none:1
SystemError (with /tmp/jl_HR3A27/artifacts/c98a2729f08e8e9c3765e8b1f0f242f26983d187/cuda/targets/x86_64-linux/include/CL): rmdir: Permission denied
Stacktrace:
 [1] systemerror(::Symbol, ::Int32; extrainfo::String) at ./error.jl:168
 [2] #systemerror#50 at ./error.jl:167 [inlined]
 [3] rm(::String; force::Bool, recursive::Bool) at ./file.jl:286
 [4] rm(::String; force::Bool, recursive::Bool) at ./file.jl:278 (repeats 7 times)
 [5] (::RegistryCI.AutoMerge.var"#76#78"{String})() at /home/runner/.julia/packages/RegistryCI/1gUch/src/AutoMerge/guidelines.jl:317
 [6] _atexit() at ./initdefs.jl:316
 [7] exit at ./initdefs.jl:28 [inlined]
 [8] _start() at ./client.jl:487
┌ Warning: temp cleanup
│   exception =
│    SystemError (with /tmp/jl_HR3A27/artifacts/c98a2729f08e8e9c3765e8b1f0f242f26983d187/cuda/targets/x86_64-linux/include/CL): rmdir: Permission denied
│    Stacktrace:
│     [1] systemerror(::Symbol, ::Int32; extrainfo::String) at ./error.jl:168
│     [2] #systemerror#50 at ./error.jl:167 [inlined]
│     [3] rm(::String; force::Bool, recursive::Bool) at ./file.jl:286
│     [4] rm(::String; force::Bool, recursive::Bool) at ./file.jl:278 (repeats 7 times)
│     [5] temp_cleanup_purge(::Bool) at ./file.jl:487
│     [6] temp_cleanup_purge() at ./file.jl:481
│     [7] _atexit() at ./initdefs.jl:316
│     [8] exit at ./initdefs.jl:28 [inlined]
│     [9] _start() at ./client.jl:487
└ @ Base.Filesystem file.jl:491
##[error]Process completed with exit code 1.

That's... weird.

I think https://github.com/JuliaRegistries/RegistryCI.jl/pull/251 might fix this bug

Let me merge https://github.com/JuliaRegistries/RegistryCI.jl/pull/251 and deploy it, and then let's run AutoMerge on this PR again.


Housing Company Legacy ID filtering

refs. HT-249

legacy_id does not really suit the purpose anymore after follow-up discussions:

we need this id for newly created housing companies too (for archiving purposes)
datatype is currently a string: we need a short numeric value (for archiving purposes)
name legacy_id does not make sense if it will be used

so backend would need at least the following:

rename the field
change the type to numeric(?)
generate the id for all the created housing companies
handle migration gracefully, next generated id should be the max id from the migration + 1

Yeah, the name should be changed later,
I think I put generation in a separate ticket in jira.
So if we get filtering and ui changes we can already use it and it adds value too :)

So if we get filtering and ui changes we can already use it and it adds value too :)

the problem is that this gives us no value currently. none of the housing companies have legacy_id set so there's no way to use this


Don't display error message if user cannot perform account changes

ga4gh/dockstore#2084

For the failing test I think you have to mock the /extended API call to properly mock this (in the file disabledAccountControls.ts). See the beforeEach on line 22 of dropdown.ts for an example of mocking this API call.
I'm not sure if it is in the primer, but you can view your cypress tests at https://dashboard.cypress.io.


Add public group getter for java

@stpyang Thanks for your contribution. Take a look at our contribution guideline: https://xgboost.readthedocs.io/en/latest/contrib/index.html.

@stpyang I see that you've force-pushed the pull request 4 times in a now without any change. Is there something your're trying to accomplish?

No, sorry, I was just catching typos that i wanted to fix.

@stpyang Is this ready now?

Yes

@stpyang How did you test your proposed changes?

This is a subset of some forked code that we use in production at my company.

Codecov Report

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

@@           Coverage Diff           @@
##           master    #4838   +/-   ##
=======================================
  Coverage   77.51%   77.51%
=======================================
  Files          11       11
  Lines        2055     2055
=======================================
  Hits         1593     1593
  Misses        462      462

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 f90e7f9...836520e. Read the comment docs.

I altered the name of this commit from Add public group getter for java to Add public group getter for java and scala

@stpyang We're merging this now. Thanks for your contribution.


Improve support for rpy

This PR improves support for RPY by adding the following three functions:

rpyToJac: Computes the Jacobian of the Roll-Pitch-Yaw conversion given the RPY angles, in reference frame either LOCAL or WORLD, defauting to LOCAL, plus LOCAL_WORLD_ALIGNED which is equivalent to WORLD
rpyToJacInv: the inverse of such Jacobian, in given reference frame. I thought it might be faster and more stable next to singularities with respect to directly computing the inverse, but in practice I did not find a huge difference
rpyToJacDerivative, time derivative of such Jacobian, given the RPY angles and their time derivative, in given reference frame.

All functions have python bindings.

rpyToJac is tested against identity at RPY=0, for relationship between different frames, against the analytical formulas, and against finite differences
rpyToJacInv is tested against the inverse of rpyToJac
rpyToJac is tested against zero at dRPY/dt=0, for relationship between different frames, and against finite differences
Python bindings are extensively tested too

By the way, I just hope you are not abusing from Euler representation for 3d rotations: it is a very bad habit. Pinocchio is really trying to avoid this.

I do agree with you. Trying as hard as I can :slightly_smiling_face:

@jcarpent all done

Thanks a lot @gabrielebndn for addressing all these comments in every effective and clean way. Good job, as usual.

You are welcome :)
By the way, codacy is complaining, but it's nonsense. When I use random() it says "Standard pseudo-random generators are not suitable for security/cryptographic purposes", but I am definitely not using it for security/cryptographic purposes and it is good enough for me! You can safely ignore it


Seperate tray icons/buttons for different instances of same application?

Currently when I open an application say pcmanfm more than once, JWM Tray clubs it into a single Tray Icon pcmanfm(2). Would it be possible to have it separetly listed out? I don't see much benefit in accessing it, in groups in my old computer.

In your configuration, set group="false" in TrayStyle:
<TrayStyle group="false" ... >
...
</TrayStyle>

Thanks its even documented. I searched for 'group' in the documentation but it took me to Group Settings and that wasnsn't what I needed. Is there a tag for faq, so it would be good to have it as a faq item.


getBBox issue with rotated text element

here is the issue:
the getBBox() for a rotated text element has different results depending on the version of raphael library and the browser version.
refering to this:
http://jsfiddle.net/RFadd/

For V1.5 :
IE8, and firefox  are showing a rectangle that fits the non rotated text
-IE9 is showing the expected behaviour

in 2.0
IE8 and IE9 are breaking.
IE9 with compatibility enabled is showing a rectangle that fits the non rotated text
Firefox  is showing the expected behaviour
thanks in advance

Can’t reproduce. Version 2.0 works perfectly in IE6,7,8,9 and others.


Missing documentation for interlock.network label

I played with interlock and 'Docker for Mac' + docker-compose. To make this work I needed to use the undocumented interlock.network label (I found it in the source). This worked great for me and I was wondering why this label is not documented. Is there any reason for this?

Out of interest what is it for?

ugh looks like this was lost in a commit.  i will add it.
@tpbowden this is for using the Docker overlay network instead of exposing externally accessible ports.

fixed in cef2526


fix docs typos

Think most of theme are resolved! Did this while taking a deep dive into the code/docs.

Huge thank you 🙏


[SPARK-41194][PROTOBUF][TESTS] Add log4j2.properties configuration file for protobuf module testing

What changes were proposed in this pull request?
This pr add a log4j2.properties configuration file for protobuf module testing as others.
Why are the changes needed?
Should print test log to connector/protobuf/target/unit-tests.log as other module
Does this PR introduce any user-facing change?
No
How was this patch tested?

Pass Github Actions
Manual test

run
build/mvn clean install -DskipTests -pl connector/protobuf -am
build/mvn test -pl connector/protobuf

Before
The log is printed to the console.
After
The log is printed to connector/protobuf/target/unit-tests.log .

Merged to master.

Thanks @LuciferYang


Add a new view/modal with list of failures

Cosmetic updates for 3.x UI are currently deprioritized, due to planned full 4.x rewrite.


mixup database in preprocessing

Hello,
https://github.com/Jia-Research-Lab/3DSSD/blob/master/lib/dataset/dataloader/kitti_dataloader.py#L292
Should
if cfg.TRAIN.AUGMENTATIONS.MIXUP.OPEN
be
if cfg.TRAIN.AUGMENTATIONS.MIXUP.OPEN and self.img_list in ['train', 'val', 'trainval'] ?
If else, running command
$ python lib/core/data_preprocessor.py --cfg configs/kitti/3dssd/3dssd.yaml --split testing --img_list test
would generate following error:
File "/path/to/3DSSD/lib/dataset/dataloader/kitti_dataloader.py", line 293, in preprocess_batch
mixup_label_dict = dict([(cls, []) for cls in self.mixup_db_class])
AttributeError: 'KittiDataset' object has no attribute 'mixup_db_class'

i also meet the same problem @tomztyang

Yes. Since there is no ground truth file on KITTI testing set, it is impossible to generate its corresponding mixup dataset.


Rest endpoint fix

Hello @aysylu !
This will fix the issue from #389 :)

Hi @aysylu ! I took inspiration from this answer https://github.com/grpc-ecosystem/grpc-gateway/issues/727#issuecomment-413715690  and one of the comments "Without tls all works fine with cmux, i can connect without certs to grpc server and do some rest requests, but with tls enabled I'm always have timeouts"

It looks like our code didn't change between v0.1.0 and v0.1.1 (just some copy/paste to refactor code). My suspicion is something in cmux changed between Aug 7 (the release of v0.1.0) and Aug 16 (the report of the issue @judavi linked to). I haven't dug into what changed during then, but @noahklein was able to confirm in his clone that the fix solves the issue. Merging. Thanks for contributing the fix, @judavi!


Environment resource attributes have incorrect behaviour

The only attribute available for patching should be "name".

Fix released in version 1.4.0


Add option for default sizes & setting output context

Thanks for creating this loader. Let me know if you’d be open to the following PR.
This PR adds ability to declare a default Sizes array in webpack.config.js, and uses those sizes in case neither sizes nor size are declared in the query.
Default name, context, quality, and background options can now also be defined.

Additionally this interprets the context variable, if present in the query or settings.
This allows flexibility when outputting files.
For example my Webpack project structure is like this:
|-- app <-- source files
|----assets
|------images
|--------someFile.jpg
|-- dist <-- webpack output destination

Now I can structure my query to be loader: 'responsive?name=/[path][name][hash]-[width].&context=./app/' to output files to dist while keeping the rest of the nested folder structure from app/assets.
|-- app <-- source files
|----assets
|------images
|--------someFile.jpg
|-- dist <-- webpack output destination
|----assets
|------images
|--------someFile[someHash]-[width].jpg

Nice! I didn't know about context but apparently file-loader uses it too. Do you want to include #13 in this PR too?

Yeah, I think context is very poorly documented—if it is at all. Came across is by accident while trying to tidy up the output folder structure.
As for #13, most likely it will be a few days before I can get to it it. So maybe it's better I make a separate PR for that?
Thanks again for taking a look at this


Item picker not showing all tabs

The item picker only shows a maximum of 6 tabs; additional tabs are hidden and not clickable. I noticed this when using the Nullius mod set which has 11 tabs.

I was able to make the additional tabs show by adding flex-flow: wrap to the tabs element:

That area is supposed to be horizontally scrollable. Is that chrome?

Ah, I can confirm now that the area is horizontally scrollable. I am using Chrome on macOS with a scrollwheel mouse.
What has happened is:

macOS only shows scrollbars while scrolling. Without scrolling there is no indication that the area is scrollable.
macOS users typically use devices with gesture support (touchpad or apple magic mouse) and "discover" scrollable areas by swiping.
Because I'm using a scrollwheel mouse, I did try using my scrollwheel on the area but this does vertical scrolling not horizontal scrolling. Now that you've pointed it out I know to scroll the area by using shift+mousewheel instead of just mousewheel.

So this is a combination of poor macOS UX & my use of a scrollwheel mouse. Ideas that I can think of from here:

Respond to mousewheel scroll events without the shift modifier.
Indicate that there are additional, hidden tabs somehow (arrow / ellipsis / partially visible tab).

But perhaps this issue can be ignored because my set up is probably uncommon.


Parser fails when reading non-initialized typed properties

In this case it's the ClassStaticsPlugin Parser which seems to handle my Typed static property wrong (Typed static property className::$property must not be accessed before initialization).
#1 VENDORPATH/kint-php/kint/src/Parser/ClassStaticsPlugin.php : 95   —  ReflectionProperty->getValue ()
#2 VENDORPATH/kint-php/kint/src/Parser/Parser.php : 585   —  Kint\Parser\ClassStaticsPlugin->parse ()
#3 VENDORPATH/kint-php/kint/src/Parser/Parser.php : 520   —  Kint\Parser\Parser->applyPlugins ()

Hi @element-code - I've fixed the crash in 595c7690c0085338a19b99f9f2dada9f5111655a but I never considered uninitialized statics before and this brings a few new questions.
We determine the (instance) properties of an object by casting it to an array. We deliberately avoid reflection for 3 reasons:

Performance
Reflection doesn't show some properties (The ones dynamically added to an object)
Reflection will happily try to access an undefined property (Declared on the class, but removed from the instance with unset) and throw a notice

It seems the third line applies to uninitialized properties too: By doing it this way it automatically skips uninitialized instance properties. Since we have to use reflection for statics we're coming across uninitialized ones.
This is not very consistent, but it's the quick fix for now. I'd like your feedback into what I should do long-term:

Hide uninitialized static properties (less info)
Dig up uninitialized instance properties (less perf)
Only show uninitialized static properties and ignore uninitialized instance properties (The quick fix I have in now)

Which would be best?
Here's some code to demonstrate what I mean:
class X {
    static string $y;

    public string $z;
}

$x = new X();

d($x);
var_dump($x);

Long term, i would prefer droping performance in favor of reflecting the reality. I personally think that nothing sucks more than debugging something and gettin wrong debug output.
Maybe do it as a default-on-optin-plugin but i fell like the real state of the instance should get mirrored as close as possible.
-> Dig up uninitialized instance properties (less perf)

Alrighty. I suppose it's easy enough to skip all but the initialized props in the reflection loop, and we can skip plugins too since there's not much to see if it's uninitialized. I'll use a custom zval.
Unfortunately all the uninitialized properties will be at the top (Or bottom) of the property list. Not in the order they're declared.
If you initialize them afterwards they'll be in declaration order, but since we have to use array casting and reflection to get the full set of possible properties we have to either put the uninitialized or the dynamic properties on their own, and I think the dynamic properties actually containing data are more important.

Yeah, declaring them dynamic would be less common so prioitizing dynamic properties would be fine.
I also see no need to replicate the declarion order so thats fine 👍

@element-code This should be working per 6b3166e873b5cba8f28f4ae82671016d33949340


add -keep_inertials args to the mujoco.mj_saveLastXML?

Hi MuJoCo Team,
We are creating musculoskeletal (MSK) models in MuJoCo and using mujoco-bindings, one thing we noticed is that the mujoco.mj_saveLastXML function does not save inertia properties when there is no geometry (but with joints) attached to the body.
In MSK modelling, we needs to create quite some virtual bodies (as conditional sites). The issue we encountered can be reproduced in this simple example, in which load/save/reload does not work due to the inertia properties are not saved.
<mujoco model="Virtual">

  <compiler inertiafromgeom="auto" angle="radian" balanceinertia="true" boundmass="0.001" boundinertia="0.001" inertiagrouprange="0 1">
    <lengthrange inttotal="50" useexisting="true"/>
  </compiler>

  <size njmax="1000" nconmax="400" nuser_jnt="1" nkey="1"/>

  <worldbody>

        <body name="virtual" pos="0 0 -0.25" euler="0 0 0">
          <!--<geom name="virtual_geom" type="box" size = "0.03 0.03 0.03" rgba="1 0 0 1"/>-->
          <joint name="virtual_x" pos="0 0 0" axis="0 0 1" type="slide" limited = "true" range="0 0.05"/>
        </body>

  </worldbody>

</mujoco>

A solution could be to add the -keep_inertials args, or automatically save the inertia properties when no geometry is included (in this case, the inertia properties need to be saved to be reload correctly)
An alternative is to have the common bounds setup saved in the headline boundmass="0.001" boundinertia="0.001" inertiagrouprange="0 1". With this information, the model can be loaded even when there is no geometry and inertia property attached to the virtual body.
@aikkala

I'm confused, the model you posted doesn't have an explicit  tag, so the inertia is entirely inferred from boundmass and boundinertia, right?
Are you saying that these attributes are missing from  in the saved model?
Or are you saying that you want explicit  tags to be saved even though none were present in the original model?

Completed by https://github.com/deepmind/mujoco/commit/55173e58f9ff6fcb01ee336d7b25c1be0df9dc52


Only the last media:content is shown on an article with multiple attachments

Newsboat version (copy the output of newsboat -v or the first line of git show):
Newsboat 2.33.0 - https://newsboat.org/
Copyright (C) 2006-2015 Andreas Krennmair
Copyright (C) 2015-2023 Alexander Batischev
Copyright (C) 2006-2017 Newsbeuter contributors
Copyright (C) 2017-2023 Newsboat contributors

Newsboat is free software licensed under the MIT License. (Type `newsboat -vv' to see the full text.)
It bundles:
- JSON for Modern C++ library, licensed under the MIT License: https://github.com/nlohmann/json
- optional-lite library, licensed under the Boost Software License: https://github.com/martinmoene/optional-lite
- expected-lite library, licensed under the Boost Software License: https://github.com/martinmoene/expected-lite

Newsboat 2.33.0
System: Linux 6.1.69-1-lts (x86_64)
Compiler: g++ 13.2.1 20230801
ncurses: ncurses 6.4.20230520 (compiled with 6.4)
libcurl: libcurl/8.5.0 OpenSSL/3.2.0 zlib/1.3 brotli/1.1.0 zstd/1.5.5 libidn2/2.3.4 libpsl/0.21.2 (+libidn2/2.3.4) libssh2/1.11.0 nghttp2/1.58.0 (compiled with 8.3.0)
SQLite: 3.44.2 (compiled with 3.43.1)
libxml2: compiled with 2.11.5

Config file (copy from ~/.newsboat/config or ~/.config/newsboat/config): empty
Steps to reproduce the issue:

Add<EMAIL_ADDRESS>(or azulcrescent-multiple-media.rss.gz) to the urls file
Load the feed
Open the article titled "Making and posting little things and bring me joy cuz my brain has a habit of focusing on the things that make me sad. This is number 1 (out of hopefully many more lol)"

Other info you think is relevant:
The <item> has two <media:content> tags:
<item>
  <guid isPermaLink="true">https://tech.lgbt/@AzulCrescent/111611990423371748</guid>
  <link>https://tech.lgbt/@AzulCrescent/111611990423371748</link>
  <pubDate>Wed, 20 Dec 2023 09:16:58 +0000</pubDate>
  <description>
Making and posting little things and bring me joy cuz my brain has a habit of focusing on the things that make me sad. This is number 1 (out of hopefully many more lol)
</description>
  <media:content url="https://media.tech.lgbt/media_attachments/files/111/611/989/714/925/704/original/2f7ce251acdd4d0f.jpg" type="image/jpeg" fileSize="307389" medium="image">
    <media:rating scheme="urn:simple">nonadult</media:rating>
  </media:content>
  <media:content url="https://media.tech.lgbt/media_attachments/files/111/611/989/742/987/747/original/1629e8754c296065.jpg" type="image/jpeg" fileSize="281732" medium="image">
    <media:rating scheme="urn:simple">nonadult</media:rating>
  </media:content>
</item>

Screenshot of the bug:

Nice idea, thanks for the clean rss.gz file!
I've made some preparations for supporting this (extended the cache database scheme).
However, there are still a few things I'm not yet sure about, mainly, what to do with the enqueue command
(I'm not yet sure if it should add all enclosures to the queue or if it should provide some kind of closure selection if there are multiple)
I will think about it, but not yet sure when I have time again to continue with this.

I'm not yet sure if it should add all enclosures to the queue or if it should provide some kind of closure selection if there are multiple

I think for the first iteration it should add everything. Podboat already lets people select what to download, so we kind of have the selection menu already.
If that turns out to be insufficient, some user will bring it to us and we can talk to them to better understand what's actually needed.


Sending an image with text from Discord, then editing the text, removes the image and duplicates the text

Pretty much just the title.

Send yourself a message on Discord with both image and text

Message shows up on Matrix

Edit the text

Matrix image is replaced with text and old text remains

duplicate of #68 and #10

Fixed in https://github.com/matrix-discord/mx-puppet-discord/commit/cb86aaf2c619d865f3301c05b8c1fd05a01da70e


Create cmake-single-platform.yml

workflow will run whenever there is a push or pull request to the main branch, and it will configure, build, and test the CMake project, including any unit tests added

Unit test failed...closing


im = raw.postprocess

How to understand im = raw.postprocess(use_camera_wb=True, half_size=False, no_auto_bright=True, output_bps=16)?

This is a simplified ISP that converts the raw data into sRGB color space.

@cchen156  Thank you so much!
So, will it be ok if I read the png dataset you provided for training without any processing? ( I have  a RAM that only has 16GB)

This is a simplified ISP that converts the raw data into sRGB color space.

So how does a 14bit data converts to a 16bit data? I noticed that the max value has converted from 2^14-1 to 2^16-1 by this step.


Document how to publish custom React Native version

Add documentation page for #653 to the Android Building from Sources doc.

@gengjiawen I've updated the PR for your comments. Can you clarify what you meant with add links to Docker website? I now added a single link to docker.com, but maybe you meant a specific page.

I think this will be good https://docs.docker.com/install/

@gengjiawen could you check the docker command is correct? I don't have it installed on this machine (disk space :P), so I wasn't able to run it yet.
I think otherwise this PR is complete

LGTM. Great work.

@grabbou you mentioned you guys maintain a lot of forks at Callstack, would you mind having a quick look at this one?

Will look at it tomorrow, thanks for CCing us.


best64.rule missing in pkgs.john

Describe the bug
johntheripper can not be started because of missing file "best64.rule"
To Reproduce
Steps to reproduce the behavior:

Install pkgs.john
Start john

Expected behavior
The program should start without error messages.
Screenshots
Additional context
Metadata

system: "x86_64-linux"
host os: Linux 5.3.7, NixOS, 20.03pre198214.4cd2cb43fb3 (Markhor)
multi-user?: yes
sandbox: yes
version: nix-env (Nix) 2.3.1
channels(fab): "home-manager-19.09, nixos-20.03pre198214.4cd2cb43fb3"
channels(root): "nixos-20.03pre198214.4cd2cb43fb3, home-manager-19.09"
nixpkgs: /nix/var/nix/profiles/per-user/root/channels/nixos

Maintainer information:
# a list of nixpkgs attributes affected by the problem
attribute:
# a list of nixos modules affected by the problem
module:

This seems to have been fixed with today's update

This seems to have been fixed with today's update


Proper Disposal of LowLevelListener

Created a public variable to track the listener
Added IDisposable to LowLeveListener
Added Dispose() Call into Application_Exit

Somehow I have some extra commits that fucked up somewhere
Mostly sure they don't have any edits attached, so just ignore them


fix race and added Responded check

see comments in code.

added a globally scoped SemaphoreSlim to protect from concurrent activities breaking the shared (global) state
note clarification on use of Responded. You can decide whether you want to start over or begin a fresh waterfall. It depends on how you want your waterfall to behave. It depends on where you want the initial activity to land. It probably makes most sense to check responded.

It’s not the best looking Code but it’s what we have...

I don't quite understand what's trying to be achieved here with the Test Bot, but I just wanted to point out that this is not a scalable solution. Threading primitives don't solve any problems in services that scale out as two activities could come in the load balancer, be routed to two different nodes and, thus, be processed concurrently across those two nodes even with the semaphore in place.
In the case of a bot, if I set my App Service up to run a minimum of two instances (min fault tolerance) this already manifests... never mind scaling beyond that.
So, if other developers see this, they might copy it as a solution and that would be "bad".


[Bug] !modes menu not displaying correctly (1.0.4)

Hey @nickj609
Sorry to bother, just installed 1.0.4 and it looks like the !modes menu isn't updating to my changes and for some reason storing the default configuration.

When my List looks like:
"List": {
          "10Mans" : "10-Mans",
	  "AimMap" : "Aim Maps",
	  "AWP" : "AWP Maps",
	  "BHop" : "BHop",
	  "Casual : "Casual"",
          "Casual-1.6" : "Casual 1.6",
	  "Course" : "Course Maps",
          "DeathRun" : "Deathrun',
	  "DM-MultiCFG" : "DM-MultiCFG",
	  "DM-Valve" : "DM-Valve",
	  "Executes" : "Executes",
	  "GunGame" : "GunGame",
	  "HideNSeek" : "Hide and Seek",
	  "KZ" : "KZ",
	  "MiniGames" : "Mini Games",
          "MiniMaps" : "Mini Maps",
	  "Multi1v1-Arena" : "Multi-1v1 Arenas,
          "Prac" : "Prac",
	  "Prefire" : "Prefire Practice",
	  "Retakes" : "Retakes",
	  "Scoutzknivez" : "Scoutzknivez",
	  "Soccer" : "Soccer",
	  "Surf" : "Surf',
	  "Wingman" : "Wingman
    }

If I pick something like 1 vs 1 for Multi1v1-Arena, it still switches just fine. but the list is missing my modes.
Here is my entire config.
// This configuration was automatically generated by CounterStrikeSharp for plugin 'GameModeManager', at 2024/06/08 09:52:11
{
  "Version": 2,
  "RTV": {
    "Enabled": false,
    "Plugin": "/home/steam/cs2/game/csgo/addons/counterstrikesharp/plugins/disabled/RockTheVote/RockTheVote.dll",
    "MapListFile": "/home/steam/cs2/game/csgo/addons/counterstrikesharp/plugins/disabled/RockTheVote/maplist.txt",
    "DefaultMapFormat": false
  },
  "MapGroup": {
    "Delay": 0,
    "Default": "mg_active",
    "File": "gamemodes_server.txt"
  },
  "Settings": {
    "Enabled": true,
    "Folder": "settings",
    "Style": "center"
  },
  "GameMode": {
    "Rotation": true,
    "Interval": 4,
    "Delay": 5,
    "Style": "center",
    "ListEnabled": true,
    "List": {
      "10Mans" : "10-Mans",
	  "AimMap" : "Aim Maps",
	  "AWP" : "AWP Maps",
	  "BHop" : "BHop",
	  "Casual : "Casual"",
          "Casual-1.6" : "Casual 1.6",
	  "Course" : "Course Maps",
          "DeathRun" : "Deathrun',
	  "DM-MultiCFG" : "DM-MultiCFG",
	  "DM-Valve" : "DM-Valve",
	  "Executes" : "Executes",
	  "GunGame" : "GunGame",
	  "HideNSeek" : "Hide and Seek",
	  "KZ" : "KZ",
	  "MiniGames" : "Mini Games",
          "MiniMaps" : "Mini Maps",
	  "Multi1v1-Arena" : "Multi-1v1 Arenas,
          "Prac" : "Prac",
	  "Prefire" : "Prefire Practice",
	  "Retakes" : "Retakes",
	  "Scoutzknivez" : "Scoutzknivez",
	  "Soccer" : "Soccer",
	  "Surf" : "Surf',
	  "Wingman" : "Wingman
    }
  },
  "Votes": {
    "Enabled": true,
    "Map": true,
    "GameMode": true,
    "GameSetting": true,
    "Style": "center"
  },
  "ConfigVersion": 2
}```

Lmk what you think!

@mavproductions, can you try running !rcon css_plugins reload GameModeManager to see if that changes the behavior? Also, does restarting the server change the behavior? You might have to run it twice in a row in the event there are still deregistration issues with the plugin.

@mavproductions , also, you are missing an end quotation in your list.
"Wingman" : "Wingman
should be
"Wingman" : "Wingman"

omg lol

@mavproductions, can you try running !rcon css_plugins reload GameModeManager to see if that changes the behavior? Also, does restarting the server change the behavior? You might have to run it twice in a row in the event there are still deregistration issues with the plugin.

Is there anything wrong with how I call my RockTheVote.dll? It appears to be having issues loading it.
(plugin:GameModeManager) Cannot find RTV 'Plugin': /home/steam/cs2/game/csgo/addons/counterstrikesharp/plugins/disabled/RockTheVote/RockTheVote.dll

I tried tinkering going from absolute to relative pathing and it seems to be still erroring out

Hey @mavproductions, I double checked on this just to make sure there weren't any issues with the current release. The relative path you should be using in your configuration should be the following:
addons/counterstrikesharp/plugins/disabled/RockTheVote/RockTheVote.dll
This is because I concatenate the game directory (/home/steam/cs2/game/csgo/) with this semi-relative path. I hope this helps and I might update the README.md to be more specific, but you can also refer to it to see the default values.

Yeah I think I'm getting !maps issues now. It keeps clinging to the default map groups. I'm not sure what else could've changed from my previous setup.

Hey @mavproductions , this is a great find! I believe updating the deregistration of votes was one of the last things I added and I clearly did not do enough testing!
I just made a commit with the bug fix. Can you build that and verify its working as intended? If so, I may just updated the v1.0.4 release since I believe your the only one who has downloaded it so far.
Thanks so much for all your testing!

No worries at all @nickj609 ! I'll build and compile in a sec and let you know how I make out

@nickj609 There we are!
I'll be pushing this build to my cs2-modded-server repo. That appears to have fixed my problems! :)
SOOO happy I can stop bothering you on your Sunday LOL 😂

Hey @mavproductions, fantastic news!  Thrilled to hear it's working perfectly now. This plugin has the potential to be a game-changer for modded server administrators, offering them the flexibility to tailor features to their specific needs.
A couple of things to note:

Votes will switch immediately if only 1 person is in the server (I believe this was the desired effect you requested, please correct me if I am wrong).

Game mode rotations only occur when a custom RTV plugin is not being used. Additionally, Game mode/map rotations only get counted when performed automatically by my custom event game end handler. This is to prevent weird issues that may occur if an admin is trying to change maps or map groups and doesn't want the event handler to override their choices. It also makes it so voting map or mode changes do not get counted either. This could potentially be improved with some additional logic if desired.

I also made sure to include you in the latest release!

Hey @nickj609,
All looks good.
1) Yes using !changemode does work exactly as I was expecting. It might be cool eventually to make alias that work per mode (I don't think that's an option right now?)
2) I need to test this out a little but this is something I'm really interested in having available. My biggest problem I'm facing right now with cs2-modded-server is that when people join the server and leave (usually on one_round modes like surf) and a player comes back to the server later (while it's empty), and goes instantly to the "End-match phase".
With rotation working (even while server is empty) that would potentially mitigate this problem entirely. But it might be tricky and require me doing some research into what events happen while the server is empty after a player comes in and leaves.
I'll let you know how things go when I test with Gamemode rotations. I assume it requires people in the server currently, so it probably requires me to do some testing and event logging.
Cheers and enjoy your weekend!!!

And thanks for including me in the contributors!! You didn't need to do that! :P

@nickj609 Any chance you could add me to steam or discord(__mav__/-maV.)?

@mavproductions, added! :)


Rename new_draft->new_version and add a docstring.

This is a small API change that came out of  discussions with @simonwo around updates.
Renames new_draft -> new_version, (since we don't have a strong concept of drafts in the code at the moment), and more importantly adds a docstring for this.
The docstring was an edit based on an original from Simon:
Returns a new version of the object with all of its existing data except where overridden by keyword arguments. This is the function that should be used to update existing models.

The new version will be part of a new transaction in the passed workbasket. If transaction is specified, it will hold the model instead and a new transaction is not created. Ifupdate_type is specified it must be either UPDATE or DELETE – it is UPDATE by default. If save is False, the model won't be saved.

Not sure why quotas.tests.test_business_rules. test_prevent_quota_definition_deletion is parametrized by update_type since it surely only cares about DELETE.


Line thickness doesn't seem to work with GPU_Polygon

Hi, thanks for a great library. Found a bug:
GPU_SetLineThickness( 4.0 );
GPU_Polygon( ... )
draws polygon with line thickness 1.0

Yeah...   Triangles and Polygons are the only shapes left that use GL_LINES.  Thanks for reporting this so it doesn't get forgotten!


CWT with complex mother wavelets

When performing CWT with complex wavelets, such as cmor the wavelet coefficients were conjugated. The equation for CWT includes conplex conjugate of the mother wavelet.
A simple example can show the problem.
Let us have two sine waves simulating a simple linear system:
Uv = 0.3np.sin(2np.pi80t)
Iv = 5np.sin(2np.pi80t + np.pi/6)
The theoretical impedance of system with such input and output signals is
Z=Uv/Iv = 0.3/5.0 * exp(-j pi/6)
When using the master branch the result is just a complex conjugate thus leading to the bug. A simple test is below:
import pywt
import numpy as np

fb = 1.0
fc = 1.0
dec_factor = 1
num_cycle = 1
fmin = 70
fmax = 90

sampling_frequency = 5000.0
t = np.arange(0,1,1.0/sampling_frequency)
Uv = 0.3*np.sin(2*np.pi*80*t)
Iv = 5*np.sin(2*np.pi*80*t + np.pi/6)

dt = 1.0/sampling_frequency
wname = 'cmor{}-{}'.format(fb,fc)

scales = np.divide(sampling_frequency,np.linspace(fmax,fmin,30))
scales=scales*fc
coefI, freqsI = pywt.cwt(Iv,scales,wname,sampling_period=dt)
coefU, freqsU = pywt.cwt(Uv,scales,wname,sampling_period=dt)

ind_coi = 100 # Remove COI ad-hoc. Ignore the first and last N samples due to COI
Zv = np.divide(coefU,coefI)
print(np.mean(Zv))
Ztheory = 0.3/5.0*np.exp(-1j*np.pi/6)
print('Tehoretical Z=%f+1j%f' % (np.real(Ztheory), np.imag(Ztheory) ))

Thanks for reporting this.  I made a tiny change to your comment to enable Python syntax hightlighting in the example you provided.

We have existing tests vs. coefficients precomuted in Matlab. It did not make sense that both the original implementation and this modification should pass. I think that was an issue with the tests themselves that I have proposed a fix for in #440.
Can you just cherry-pick the commit from that PR here? If you do, I think the tests will fail.
This means, that the current behavior in PyWavelets seems to match Matlab's behavior.  Do you have a reference for the desired behavior? (I am not a CWT expert). Are you sure it is not just a different convention that is being used?

I've checked your tests. The issue is actually with the old Matlab's cwt function. In 2017b onwards there is a completely new cwt function. The old one had some issues. The error in a phase is very subtle. At the moment, I am looking for a way to do point by point test. In the mean while please try the Matlab code at the end of my comment (>2017b with Wavelet toolbox) that demonstrates the issue with old CWT function when using complex wavelets.
The code uses 4 different implementations of CWT

wt.m From Lancaster university http://www.physics.lancs.ac.uk/research/nbmphysics/diats/tfr/wt.m
cwtft - Fourier transform based implementation valid for a subset of complex wavelets among which is the complex Morlet wavelet
New CWT implementation from 2017b onwards and
Old one that is used by your tests.

The signals are the same sine components. Since each function has different way of padding it is not possible to do point-by-point checks. Therefore I plot the overall ration between the wavelet coefficients of both signals.
The correct value is located at 0.0520 - 0.0300i. The first 3 implementations are correct, where as the old CWT shows conjugated values.
I would suggest one more thing. Try to run your test case for cmor1.0-2.0 against the Matlab implementation.
`
clear
clc
fs = 5000;
t = 0:1/fs:1-1/fs;
Uv=.3sin(2pi80t);
Iv = 5sin(2pi80t+pi/6);
scales = [55.55555556 55.98455598 56.42023346 56.8627451  57.31225296 57.7689243 ...
58.23293173 58.70445344 59.18367347 59.67078189 60.1659751  60.66945607 ...
61.1814346  61.70212766 62.23175966 62.77056277 63.31877729 63.87665198 ...
64.44444444 65.02242152 65.61085973 66.21004566 66.8202765  67.44186047 ...
68.07511737 68.72037915 69.37799043 70.04830918 70.73170732 71.42857143];
coefsU = cwt(Uv, scales, 'cmor1.0-1.0');
coefsI = cwt(Iv, scales, 'cmor1.0-1.0');
cftu = cwtft({Uv,1/fs},'scales',scales/fs,'wavelet','morl0');
cfti = cwtft({Iv,1/fs},'scales',scales/fs,'wavelet','morl0');
[wtu,fu]=cwt(Uv,fs,'amor','VoicesPerOctave',40);%,'TimeBandwidth',40);
[wti,fu]=cwt(Iv,fs,'amor','VoicesPerOctave',40);%,'TimeBandwidth',40);
[WU,freq]=wt(Uv,fs,'nv',length(scales),'fmin',70,'fmax',90,'f0',1,'Padding','none','Wavelet','Morlet');
[WI,freq]=wt(Iv,fs,'nv',length(scales),'fmin',70,'fmax',90,'f0',1,'Padding','none','Wavelet','Morlet');
fBase = 80;
[x,ind_wt] = min(abs(freq-fBase));
[x,ind_cwt_new] = min(abs(fu-fBase));
[x,ind_cwt_old] = min(abs(scal2frq(scales,'cmor1.0-1.0')*fs-fBase));
[x,ind_cwtft] = min(abs(cftu.frequencies-fBase));
close all
plot(WU(ind_wt,:)./WI(ind_wt,:),'.')
hold all
plot(wtu(ind_cwt_new,200:end-200)./wti(ind_cwt_new,200:end-200),'*')
plot(coefsU(ind_cwt_old,200:end-200)./coefsI(ind_cwt_old,200:end-200),'x')
plot(cftu.cfs(ind_cwtft,:)./cfti.cfs(ind_cwtft,:),'o')
legend({'Lancaster','New cwt','Old cwt','FFT cwt'});
`

Thanks @pavleb, that is pretty convincing.  I really appreciate you taking the time to demonstrate the issue further.  I don't have a recent Matlab available at the moment to run your example, but I was aware they had revamped their CWT routines sometime around 2015.
I am in support of making this change on our end. What do you think @rgommers?
@pavleb: Can you please also add a not regarding this to doc/release/1.1.0-notes.rst ?
I would mention it both under the "Bugs Fixed"  and "Backwards incompatible changes" sections. See the older files in that folder for examples of the formatting.
I think we should probably also merge #440 after updating it to take the conjugate of the values produced by Matlab's old CWT.

Yes, +1 from me as well.

@grlee77 I will fix the docs and let you know. I will do it in the next couple of days.

Hi @pavleb, thanks for updating the docs here.
Let me know if you need help resolving the merge conflicts (CWT has been updated to allow batched 1D transforms and FFT-based CWT since the time this was originally proposed).

I fixed the conflicts. Apparently some tests are failing. I will try to check the issue in the following days. Sorry for the substantial delay.

https://github.com/PyWavelets/pywt/blob/b90464244be7f2f00d1111212d984d0a4df38746/pywt/tests/test_matlab_compatibility_cwt.py#L151
By default, the tests load precomputed results from matlab R2012a, so just conjugating those results in the line above seems to work
i.e.
err = coefs_pywt - np.conj(coefs)  # conj of Matlab R2012a result to match R2017a

Hi @pavleb:
I have gone ahead and added complex conjugation of the previously computed Matlab R2012a results in the test functions to account for the bug in older Matlab. Hopefully CI will pass now so we can merge this PR soon and include it in our pending 1.1 release.
In addition to the comparisons to 3rd party software done by @pavleb, I believe the changes in this PR make the implementation consistent with Eq. 2 of Torrence and Compo's classic review article on the CWT.

@pavleb: can you provide your real name (so that you can be properly credited in the 1.1.0 release notes).
You can either add a commit modifying the name map or just post it here as a comment and I will take care of it.

In order to jump over the tests, I guess it is easier for you to added to the name map. My full name is Pavle Boškoski. I saw that the code has decoration utf-8 so I guess that my last name will not make any trouble :-).

I tweaked the release notes a bit in 5a38a12 if anyone wants to take a quick look. If there are no further comments this should be ready to merge.

I would suggest to alter the reference to Lancaster University wt.m and include a link to their github repository with the complete toolbox https://github.com/luphysics/MODA. The function wt.m is located in this repository. Everything else is OK from my side.


This may involve directly painful activities, such as genital piercing, wax play, genital spanking, squeezing, ball-busting, genital flogging, urethral play, tickle torture, erotic electrostimulation, kneeing or kicking.[1] The recipient of such activities may receive direct physical pleasure via masochism, or emotional pleasure through erotic humiliation, or knowledge that the play is pleasing to a sadistic dominant. Many of these practices carry significant health risks.[2]


Https support

@sabre1041 it's less fine-grained than I would have like, but I would rather share it now, like that, than later on. Please review, let me know what you think,  but don't merge before a few days.

I'm closing this, because we need to rework other things and then this PR will be out of date. I also want to extract some changes done in this branch and merge them quickly into master.


use resource class for current_resource

This uses the Chef::Resource::LdapEntry resource for storing the existing entry in the current_resource method and fixes the error mentioned in #2 when reporting is enabled for Chef.

Thank you for the merge!
Can you release it as a new supermarket version?


Revert "Fix use of now-removed github-log.md"

Reverts bitcoinops/bitcoinops.github.io#1619
Hello,
When I synced the code from the Master branch, I encountered an error as shown below:

There's a lot of content like this:
SyntaxError: invalid syntax
  File "_contrib/find-bad-indentation", line 26
    if re.match(rf'^\s{{{X}}}(?![-\*]|[0-9]*\.)\S', first_line):
                                                 ^
SyntaxError: invalid syntax
  File "_contrib/find-bad-indentation", line 26
    if re.match(rf'^\s{{{X}}}(?![-\*]|[0-9]*\.)\S', first line):
                                                 ^
SyntaxError: invalid syntax
  File "_contrib/find-bad-indentation", line 26
    if re.match(rf'^\s{{{X}}}(?![-\*]|[0-9]*\.)\S', first line):

I am unsure what is causing this error. How should I address it?
Best regards,

I have also noticed an unknown error occurring in the master branch after running "make production." It seems to be an issue related to a link from a certain issue. Could you please provide some guidance on this matter?
As shown in the image:

@bittomhan I was able to pull master and make production fine on my machine. My suspicion is that your branch(es) have diverged from master and potentially also then had issues pulling in the latest from master.
You might test the idea by checking out your origin / master branch, ensure that matches what is in this repo, and trying to make production build from that.


Error when rendering component :

HI, I got this error when I use Vuex to declare something like this const store = new Vuex.Store({}), why?

There is no relationship between Vuex and vue-progressbar...

Yeah, but I don't know why but it works if I first declare the const and after Vue.use(VueProgressBar, {}) otherwise still appears the error.


Foundry test failure summary

This PR adds an option --failure-information to foundry-show and foundry-prove which causes a summary to be printed of all stuck and frontier nodes. In the case of stuck nodes it prints the path condition (All constraints on that node that weren't there from the beginning) and failure reason (attempts to isolate the non-matching cell or if cells match, shows the simplified failing implication).

To make it so we can test this, can we add --failure-information option to foundry-show-kcfg, and turn that on for the test-foundry-kcfg-diff tests? Then we'll be asserting that we're getting the failure reasons we expect.
We should also print them by default on foundry-prove, but can include this output in foundry-show-kcfg to make it easy to test.

To make it so we can test this, can we add --failure-information option to foundry-show-kcfg, and turn that on for the test-foundry-kcfg-diff tests? Then we'll be asserting that we're getting the failure reasons we expect.
We should also print them by default on foundry-prove, but can include this output in foundry-show-kcfg to make it easy to test.

Added this.

Let's use record production syntax on the foundry_success predicate, to get better output about whic of the fields are failing. Let's also post links in the output on failing proofs:
* Link to the `foundry_success` predicate on failure.

* Link to our Discord for support.

Maybe I'm not doing it right, but adding the record production syntax doesn't seem to do anything with the final output. compiled.txt also doesn't include the labels. Is it maybe only used in the semantics itself? I know you mentioned it was parse-time only.

Let's also link users to the foundry gitbook as well: https://docs.runtimeverification.com/kevm-integration-for-foundry/
And we should factor out all the foundry-specific messages from print_failure_info, so that it becomes generic (even semantics independent), and output the foundry-speciic stuff (link to foundry_success and to GitBook) afterwards, at the site where print_failure_info is called.

@nwatson22 can you alos add the --failure-information flag to kcfg-show command as well? It shouldn't display the foundry speciic failure information, just the generic stuff that kcfg-show displays.
Possible also prove command should display failure information too!

@nwatson22 can you alos add the --failure-information flag to kcfg-show command as well? It shouldn't display the foundry speciic failure information, just the generic stuff that kcfg-show displays.
Possible also prove command should display failure information too!

This option is now added to prove and kcfg-show.