Nesting multiple xsync.MapOf maps not supported, or...?

Hello! I've been trying out the xsync.MapOf on one of my projects and I ran into a strange issue when nesting the maps. Am I doing something wrong, or did I just discover a bug? Here is a runnable example (using latest xsync version):
package main

import (
	"github.com/puzpuzpuz/xsync"
)

type tmp struct {
	Hello string
}

func main() {
	const stringKey = "test"
	const intKey = 123

	outerStringMap := xsync.NewMapOf[*xsync.MapOf[uint32, *tmp]]()

	innerIntMap, loaded := outerStringMap.LoadOrCompute(stringKey, func() *xsync.MapOf[uint32, *tmp] {
		return xsync.NewIntegerMapOf[uint32, *tmp]()
	})
	if loaded {
		panic("expected nothing")
	}

	innerIntMap.Store(intKey, &tmp{Hello: "world"})

	innerIntMap, loaded = outerStringMap.Load(stringKey)
	if !loaded {
		panic("expected existing map")
	}

	hello, loaded := innerIntMap.Load(intKey)
	if !loaded {
		panic("expected existing value")
	}

	if hello.Hello != "world" {
		panic("unexpected value")
	}
}

grongor@grongor-nb:~/xsync-test$ go run .
panic: expected existing value

goroutine 1 [running]:
main.main()
        /home/grongor/xsync-test/main.go:33 +0x112
exit status 2

Hi @grongor
You should import github.com/puzpuzpuz/xsync/v2, not github.com/puzpuzpuz/xsync. Other than that, I've tried your snippet on go 1.19.3 and saw no panic.

OMG I hate this versioning system so much :D Yeah, that was it...thank you very much for the quick response! Sorry for wasting your time :)
Great lib btw!


Updating with vim-plug fails

Description
catppuccin  fails to update with vim-plug, as vim-plug tries to do a git pull. git pull fails because catppuccin tries to pull the tags, but stable is already exists and points to a different commit
    From https://github.com/catppuccin/nvim
     - [deleted]         (none)     -> origin/release-please--branches--main--components--catppuccin
    remote: Enumerating objects: 107, done.
    remote: Counting objects: 100% (103/103), done.
    remote: Compressing objects: 100% (15/15), done.
    remote: Total 22 (delta 13), reused 11 (delta 6), pack-reused 0
       0b5df9c..10eda02  main       -> origin/main
     ! [rejected]        stable     -> stable  (would clobber existing tag)
     * [new tag]         v1.8.0     -> v1.8.0```

### Neovim version

```markdown
NVIM v0.10.1
Build type: Release
LuaJIT 2.1.1720049189

Terminal and multiplexer
konsole 24.05.2
Catppuccin version / branch / rev
only affects updates, not a specific version/branch/rev
Steps to reproduce
:PlugUpdate when there is an older version installed
Expected behavior
:PlugUpdate should update catppuccin
Actual behavior
Update fails with:
    From https://github.com/catppuccin/nvim
     - [deleted]         (none)     -> origin/release-please--branches--main--components--catppuccin
    remote: Enumerating objects: 107, done.
    remote: Counting objects: 100% (103/103), done.
    remote: Compressing objects: 100% (15/15), done.
    remote: Total 22 (delta 13), reused 11 (delta 6), pack-reused 0
       0b5df9c..10eda02  main       -> origin/main
     ! [rejected]        stable     -> stable  (would clobber existing tag)
     * [new tag]         v1.8.0     -> v1.8.0```

### Repro

```Lua
-- DO NOT change the paths and don't remove the colorscheme
local root = vim.fn.fnamemodify("./.repro", ":p")

-- set stdpaths to use .repro
for _, name in ipairs({ "config", "data", "state", "cache" }) do
  vim.env[("XDG_%s_HOME"):format(name:upper())] = root .. "/" .. name
end

-- bootstrap lazy
local lazypath = root .. "/plugins/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
  vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", lazypath })
end
vim.opt.runtimepath:prepend(lazypath)

-- install plugins
local plugins = {
  "catppuccin/nvim",
  -- add any other plugins here
}
require("lazy").setup(plugins, {
  root = root .. "/plugins",
})

vim.cmd.colorscheme("catppuccin")
-- add anything else here

As I can see, both stable and 1.8.0 tags point to the same commit, and the given repro file uses lazy.nvim so I can't reproduce the issue. Can you try to remove the local directory of catppuccin/nvim and do :PlugInstall again?

This works indeed, this is my current workaround. It asked vim plug to allow doing a git pull --force (with a config option) but it was rejected.

I'm not familiar with vim-plug so I think we can leave this issue open until the next release, and check if the same thing happens.

@spapanik As version 1.9.0 is released, is this issue happening again?


Implement downloads page and May 25th timed copy changes

Purpose

closes #1240
also ensure that some copy changes will occur on May 26th

QA
QA link here
QA spec: desktop

[x] clicking on Methodology & Data should show a side nav with a Meth & Data option and Downloads option
[x] clicking on Downloads should bring up the appropriate page
[ ] all 5 links should work
[ ] all 5 links copy is correct
[ ] all 5 links sizes are correct
[x] updated tag is removed from public eng. button

QA spec: mobile

[ ] The mobile navigation menu should look like this:

[ ] clicking on Meth & Data should bring to the appropriate page with no side nav
[x] clicking on Downloads should bring to the appropriate page with no side nav

QA spec for May25th timed changes

[x] let's schedule a demo to see how this would look. Screen shots below:

Both Alerts removed:

3rd bullet copy changed

RFI box copy updated:

🍏

Thanks @esfoobar-usds !!!

a couple of things @vim-usds

the csv and xlxs are flipped (link to the wrong version)
on safari the csv doesn't download, it opens up the data in a new tab
the size of the xlxs on my machine is 24.9 MB
I don't love how in mobile view picking the first methodology and data does nothing - I think that is a pretty big usability issue. let's discuss
should the pdf and tsd be "view" instead of download since they don't download? let me discuss with Beth and Katherine

When using Safari, one may encounter a link opening rather than downloading. One can do a CTRL+click to get the menu to show up to allow which will allow one to download the file:


Remove the gem

Hi. I want to completely remove the spree_static_content from my application, how can I do it? I will remove it from gemfile and gemfile.lock but get the error, after bundle install:
Showing /home/d7na/.rvm/gems/ruby-2.2.5/gems/spree_frontend-3.1.3/app/views/spree/shared/_products.html.erb where line #28 raised:

couldn't find file 'spree/frontend/spree_static_content' with type 'text/css'

How can I delete it?

please check vendor directory, and remove the like related with the error @D7na

Hello, is there a procedure to un-install the gem? Do we need to manually remove tables from database, or remove some .rb files?  Thanks.

We need a way of deleting this gem.

To remove the Gem you will need to reverse some steps.
You can see what the current install task does here:
https://github.com/spree-contrib/spree_static_content/blob/master/lib/generators/spree_static_content/install/install_generator.rb
If you can find the commit when you added the gem that may be the best indicator. It's possible you may have updated the gem and more is required, than the initial commit.
Removing the Spree Static Content Plugin

Remove the gem from Gemfile
Run bundler to update the Gemfile.lock
Remove *= require spree/frontend/spree_static_content from: vendor/assets/stylesheets/spree/frontend/all.css
Create a new migration bin/rails g migration RemoveSpreeStaticContentPlugin
Add the following to the migration

class RemoveSpreeStaticContentPlugin < ActiveRecord::Migration[6.0]
  def up
    drop_table :spree_pages
    drop_table :spree_pages_stores
  end

  def down
    raise ActiveRecord::IrreversibleMigration
  end
end

Run migrations bin/rails db:migrate, make sure everything still works, commit, push up. NOTE: this is irreversible as the code shows above.

Note:
Currently these are the two tables that are being created.
You could add this to a fresh project to see what is added, or find the commit that you added the plugin to your project and what changed at the time; it's possible updates changed it from there out.
You can also see what migrations were ran here ideally too:
https://github.com/spree-contrib/spree_static_content/tree/master/db/migrate


Add support for native test_suite rules as top level targets

Work towards #1956
Add support for native test_suite as top level target. Next is to support ios_*_test_suite rules (#1968)
Note on Custom schemes:
Native test_suite rules will just wrap other tests and be completely skipped during project generation. There's no test bundle in its deps like ios_*_test_suite rules so we won't collect a label that can be replaced later, this effectively means that AFAICT  there's no easy way to allow adding test_suite targets in custom schemes? Something like this passed to the generator currently fails:
schemes = [
    xcode_schemes.scheme(
        name = "My-Custom-Scheme",
        test_action = xcode_schemes.test_action(
            targets = [
                "//foo/bar:SomeNativeTestSuite",
            ],
        ),
    ),
],

with an err similar to this:
Target @//foo/bar:SomeNativeTestSuite was not found in the transitive dependencies of @//foo/bar:my_xcodeproj `top_level_targets` attribute.

Looking for suggestions on how to support custom schemes if we think it's a must.

We should add support for alias_labels which would expand a test_suite label into an array of other labels, to allow use in custom schemes.
That can be a follow up though.

alias_labels

Cool, will do!

Trying this out now, unless im doing something wrong, added a test_suite target to top_level_targets. Seeing this when generating:
Target @//Code/DesignSystem/MooncakeUI:MooncakeUI-Unit-SnapshotTests was not found in the transitive dependencies of @//.cashcli/Projects:CashBazelProject's `top_level_targets` attribute. Did you reference an alias (only actual target labels are supported in Scheme definitions)? Check that @//Code/DesignSystem/MooncakeUI:MooncakeUI-Unit-SnapshotTests is spelled correctly, and if it is, add it or a target that depends on it to @//.cashcli/Projects:CashBazelProject's `top_level_targets` attribute.

Is that a raw test_suite or one of the rules_ios's rules?
Native Bazel test_suite

Also are the deps of the suite rules_ios tests or raw rules_apple tests?

The deps are 4 ios_unit_test targets from rules_ios which all depend on a single dep_middleman from rules_ios.

Also if you're setting that target in schemes it won't work until the follow up lands (the alias_labels thing above), this PR addresses adding it only to top_level_targets directly

Ah, that was it (at least to fix generation). The macro was pulling snapshots into a scheme, removing that logic generates the project and the 4 tests get pulled in via just the test_suite label.
However, building now fails (it passes in main) with this error:
Multiple commands produce '/Users/lpadron/Library/Developer/Xcode/DerivedData/CashBazelProject-gtfybecdnveqrzbftrflmnsfapjm/Build/Intermediates.noindex/CashBazelProject.build/bazel-out/applebin_ios-ios_sim_arm64-dbg-ST-ddc4449e8e9a/bin/Code/DesignSystem/MooncakeUI/MooncakeUI-Unit-SnapshotTests_swift/Objects-normal/arm64/TileViewSnapshotTests.o'

But maybe this is what you mean by supporting in the next PR.

@luispadron if you're ok with that I'd appreciate a stamp here!


preference:1.1.1 was released

It would be great to have support for the new preference:1.1.1.
https://developer.android.com/jetpack/androidx/releases/preference#1.1.1

Does 1.1.0 (latest) of this library not support the 1.1.1 androidx release? What issues are there?


How to customize Date Editor to have date and time

Question
I have tried using this dependency [https://www.npmjs.com/package/react-datetime-picker] to allow each row to be selectable. However when editable = true, I cannot use the dependency because it will edit the text. If editable = false, I can use the dependency but the value won't change. Here's my code
const columns = [     {       dataField: "publishedAt",       text: "Published",       sort: true,       editable: false,       formatter: (cell) => {         // let dateObj = cell;         // if (typeof cell !== 'object') {         //   dateObj = new Date(cell);         // }         return (           <div>             <DatePicker               selected={startDate}               onChange={(date) => handleDateChange(date)}               showTimeSelect               timeFormat="HH:mm"               timeIntervals={15}               timeCaption="time"               dateFormat="MMMM d, yyyy h:mm aa"             />           </div>         );       },     },   ];
I don't think this is best practice but I don't know how to add the time to the picker.

@richardcao27 are u able to achieve desired functionality with above change?


fix for #10

I've created a potential fix for the Issue #10.
The problem here was that the original implementation didn't really take the sort into account, how it should have to be. Therefore the minBound wasn't checked accordingly.
With my fix the minWidth is calculated with the Before/After Elements, but also has your previous fallback with a straight "+20".
Additionally to this:
There was a problem with multiple header-rows. Since we resize only the first one, I think this one will define the width. Instead of only resizing the dragged header-cell I resize now all cells within that column, to prevent any cell others than the first to interfere with the calculation of the minimum width.
If you have questions, don't hesitate! :)

+1


Py2exe error: Parent module '' not loaded, cannot perform relative import

Py2exe error: Parent module '' not loaded, cannot perform relative import
I am using Windows, Python 3.3.5, pandas 0.15.2, and py2exe <IP_ADDRESS>.
I used py2exe to generate a single-file executable from a Python script that uses pandas 0.15.2. When I tried to run it, I got the following error: Parent module '' not loaded, cannot perform relative import.
This is how it happened. I created a file named test.py with the following content.
import pandas
print(pandas.__version__)

For py2exe, I created a file called setup.py, with the following content.
import py2exe
import sys
from distutils.core import setup

sys.argv.append('py2exe')

setup(
    options={
        'py2exe': {
            'bundle_files': 0,
            'excludes': [ 'tkinter']
        }
    },
           console=['test.py'],
    zipfile=None,
)

I ran python setup.py. I verified that the file dist/test.exe had been generated.
When I tried to run test.exe, I got the following traceback:
C:\mac\des\ide\test\panbug\dist>test
OMP: Warning #178: Function GetModuleHandleEx failed:
OMP: System error #126: No se puede encontrar el m¾dulo especificado.
Parent module '' not loaded, cannot perform relative import
Traceback (most recent call last):
  File "test.py", line 1, in <module>
  File "<frozen importlib._bootstrap>", line 1565, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1532, in _find_and_load_unlocked
  File "C:\mac\des\WinPython-32bit-<IP_ADDRESS>\python-3.3.5\lib\site-packages\zipextimporter.py", line 86, in load_module
    return zipimport.zipimporter.load_module(self, fullname)
  File "C:\mac\des\WinPython-32bit-<IP_ADDRESS>\python-3.3.5\lib\site-packages\pandas\__init__.py", line 7, in <module>
    from . import hashtable, tslib, lib
  File "<frozen importlib._bootstrap>", line 1565, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1532, in _find_and_load_unlocked
  File "C:\mac\des\WinPython-32bit-<IP_ADDRESS>\python-3.3.5\lib\site-packages\zipextimporter.py", line 109, in load_module
    self.get_data)
  File "pandas\hashtable.pyx", line 9, in init pandas.hashtable (pandas\hashtable.c:23000)
SystemError: Parent module '' not loaded, cannot perform relative import

There is a workaround that consists on downgrading to pandas 0.14.1 and removing the bundle_files option (which generates a folder with a bunch of files instead of a single-file executable). However, I need a single-file executable, and would also like to use the latest pandas version.
Also, I know that I'm not the only one facing this issue. There is a related question on StackOverflow.

I think this has also just been reported in #9474

Yes, it's the same bug.

@Zenadix I closed this one, you can add your comments to the other issue!


extending dbAuth with SSO

Video with demo,
https://user-images.githubusercontent.com/29681384/145018768-b6158ee4-796e-4a7c-b4d1-1756a1d5e9a1.mp4
I made this proof-of-concept as it's something I'm interested in as I'm considering migrating from netlify identity to dbAuth. I took inspiration from Patricks post, but wanted to see what a solution built into the framework might look like.
I have no idea if there's any interest in taking dbAuth in this direction so this rough work is supposed to start a conversation.
I was going to deploy a test app, but I don't know how to deploy to netlify with a custom redwood build? 🤷
This PR contains the changes I made to the frame work,
And this is a demo app that uses it, This is the most useful commit to look at as it's where the github login is implemented.
Here's roughly how it works:

The "sign into github" button is nothing more that a link to github to kick off the process
When the auth is done through github, it navgiates back to /github-auth which fires a useEffect in web/src/pages/GithubAuthPage/GithubAuthPage.tsx that runs the login function from useAuth but with the code from github instead of a username and password.
The login function has been modified to make a rest request with method: sso instead of login
That fires the new sso method on db auth which calls the user defined ssoHandler.
The ssoHandler is responsible for dealing with any specific logic of the provider, my example is for github.
the ssoHandler returns the provider name, the accessToken and a username, and from there a user is ethier created or modified depending on if the user already exists.
from there _loginResponse is called and falls in with the rest of the dbAuth flow.

Nice work, this was also on my TODO eventually and this feels like how I'd expect to build it

Oh nice @orta, I'm glad I managed to come at this from the right angle.

This is great!

Thanks for the work on this @Irev-Dev! Adding Oauth to dbAuth isn't currently on the roadmap, but the fact that you've already got it working and opened up a PR is huge step forward in getting it in there. This makes a good stepping-off point for discussion.
I'm a little nervous about all the hard-coded "github"s everywhere. 😅 Ideally we'd want this as generic as possible so you could plug in any Oauth provider. Does this provide any way to link multiple third-party provider accounts together so that I can use any/all to log in with the same account? Maybe even add email/password if I so desired?
I was always a fan of the way the Omniauth gem worked for Ruby/Rails. It was just a giant abstraction for potentially any third party auth paradigm, including Oauth, but also stuff like LDAP. Omniauth itself didn't know about any one specific provider. To add support for a provider you'd add an additional gem to your project (like omniauth-twitter or omniauth-github, which omniauth called "strategies") and then in a single config file you'd list out your supported providers and include any provider-specific config they might need:
Rails.application.config.middleware.use OmniAuth::Builder do
  provider :twitter, ENV['TWITTER_KEY'], ENV['TWITTER_SECRET']
  provider :github, ENV['GITHUB_KEY'], ENV['GITHUB_SECRET']
  provider :openid, store: OpenID::Store::Filesystem.new('/tmp')
end

And that was it! You'd just click on "Login with Twitter" or "Login with GitHub" and Omniauth took care of everything else. They were installed as middleware, between the web server and Rails, so you didn't even need to include any routes—Omniauth could inject them itself. I don't know if we could go that far (although maybe we could somehow with <AuthProvider> which sits above the Router?), but if not we could have a single route or two that our version of Omniauth could own and use in these strategies.
Do you think what you've started here would in any way be able to transition over to something like this? I feel like one day we'll need to move all of our supported auth and deploy config to this kind of system, rather than housing them in the main codebase...

Hey @cannikin, Really glad to get your input.
I wasn't sure how to propose work/features, which is why I made this PR, but I also didn't aim it back at the redwood repo, which perhaps I should have under WIP.

I'm a little nervous about all the hard-coded "github"s everywhere

Absolutely, I was somewhat-intentional about having the user-code in a more sloppy state because I was least sure how to handle it. Where as code in the PR we're currently commenting on is more generic (no mention of Github).
So in that regard this proof-of-concept already allows normal email/password combo, and multiple providers, it's just the user would have to set it up themselves (The SSO callback I added make it pretty damn generic, but probably thrusts to much emphasis on the framework user). I was thinking maybe multiple providers could be setup as setup-generators, but I definitely like you idea of having it even more abstract/Omniauth inspirated.
Using the AuthProvider is an interesting idea, Though if we have to put a route directly in app/web/src/Routes.js I think that would still be okay as db auth setup is already a combo of generators and some instructions (i.e. generators to make the login pages, but instructions about user db columns needed to make dbAuth work)
You've definitely given me a few things to think about so I can go away and iterate on this some more.
I guess my main question is just wanting to confirm, assuming we're able to get an abstract enough version working, this is a feature we'de be interested in having in RW?

I guess my main question is just wanting to confirm, assuming we're able to get an abstract enough version working, this is a feature we'de be interested in having in RW?

Definitely, as long as it doesn't make any major changes to the default dbAuth flow and the minimal config we have now if you just want to stick with username/password authentication.
It would be amazing if you could just set some flags on the setup command and have some of the common providers already configured for you, you just set a couple ENV vars for secrets:
yarn rw setup auth dbAuth --db --twitter --github

And then if you generate Login/Signup pages once a third party provider is configured, you automatically get login/signup buttons for them added to the generated pages!

I wish DT was here so he could correct me if I'm wrong.
Supabase takes a bit of a different approach to their sso implementation. They support
export type Provider =
  | 'azure'
  | 'bitbucket'
  | 'facebook'
  | 'github'
  | 'gitlab'
  | 'google'
  | 'twitter'
  | 'apple'
  | 'discord'
  | 'twitch'
  | 'spotify'
  | 'slack'

And they have the support for all of that baked right in, so the user doesn't have to add almost any code at all to its own app. Which I think is really great DX. But of course that would add a lot more provider-specific code to dbAuth, which we'd have to maintain and support.
Here's their code for reference https://github.com/supabase/gotrue-js

Sorry that this convo isn't part of the redwood repo @Tobbe, I won't move it now, but in my next iteration I'll point it redwood.
You can tag outside users, it's just github won't suggest/autocomplete (I think at least anyway)
CC @dthyresson

I do like @cannikin idea of having strategies as plugins. We can host a bunch of common ones on npm, maybe @redwood/strategies, to get the best of both worlds. Makes it easy to extend without going through us.

DT had a very insightful comment in the forums. I'll paste it here as well, to make sure it doesn't get lost

Personally, this is a slippery slope towards implementing full-featured authentication service inside Redwood and is something I am not in favor of.
If you are not careful you’ll have to build soooo much. Mail. Password strength. Auditing. Admin api. Callback whitelisting. App and user metadata. Multiple identity provider support. Account blocking. Login attempt anomaly detection. IP address spoof detection. Token refreshing.
Then you’ll want passwordless and magic link. And then SMS one time password authentication. And then support multiple phone providers.
Oh and then 2FA or even MFA.
And then you’ll have to do GDPR protection on all your user profile data.
And what happens if your password salt is compromised? Or you leak the hashes?
Where will it end?
I see dbAuth as a light weight and limited alternative to the authentication as a service providers and one that should be used with some understanding of its limitations. It’s nice to get you started.
Authentication isn’t just a user record in a database. It’s a product.

https://community.redwoodjs.com/t/pure-social-authentication/2644/6

Those are some good points

What's the status of this?


change last will to publish to puslar, remove LWT events as they're no

Fixes #937
Motivation
LWT did not function as expected. LWTs mechanism would utilize the system topic to propagate fireWillMessage events, and then each MoP instance would look at each of it's subscriptions on the topic the LWT should be published on, it would then send the LWT to all these susbcriptions directly. This meant LWT did NOT reach Pulsar topics, nor did QoSPublishHandlers come into play at all for LWT which means that retained LWTs did not work.
Modifications
Instead of using the system topic I changed WillMessageHandler to publish the messages to their destination pulsar topic. This means that both Pulsar and MQTT clients can receive these messages, as MoP already subscribes on the pulsar topic on behalf of the MQTT MoP connection. WillMessageHandler now acquires the QoSPublishHandlers from MQTTService to properly publish messages with the appropriate QoS and retain functionality.
Since sendLWT events are no longer used I removed that from the interface and implementing classes, no uses or implementations should continue to exist. LWTs should NOT need to reach the system topic any longer, as the destination topic is already read by every MoP instance that's concerned with that topic. This is obviously excluding the case where the LWT is retained and that LWT message is send into the system topic as a retained message.
I tried to remain styled as closely to the rest of the codebase as possible. In many cases code is directly copied from other areas. The sendWillMessageToPulsarTopic was named to be very explicit about the behavior, and this code is largely taken from the doPublish method with some modifcations. In this case I'm relying on the Connection object, and therefore fireWillMessage was adapted to return a CompleteableFuture, so we can block till the will message is sent so we don't cleanup the Connection prematurely. I'm not sure if it would make sense to add a timeout on that to prevent deadlocking, but opted for the simpler solution. Additionally to support returning a CompleteableFuture, I changed the delay logic to wrap the SchedulerExecutorService in a way that could be used by a CompleteableFuture.
Verifying this change

[ ] Make sure that the change passes the CI checks.

This change is already covered by existing tests, such as (please describe tests).
Documentation
Check the box below.
Need to update docs?

[ ] doc-required
(If you need help on updating docs, create a doc issue)

[x] no-need-doc

This change only adapts existing components to behave as expected.

[ ] doc
(If this PR contains doc changes)

Is there a good way to setup my IDE for the styling expected for this project?

Is there a good way to setup my IDE for the styling expected for this project?

@Technoboy-  I'm not sure why the failing test is failing in this case. It seems unrelated to the changes made.

Unless anyone has any feedback or requests, this should be ready to merge. Without this LWT is largely broken right now.

@mattisonchao Hoping to address these today. I appreciate the feed back! If not today I should be able to address this early next week.

Should be ready for re-review


InstallWizard: adjust requirements

Description of bug
InstallWizard.resx states in key "IsValidDotNetVersion.Text":
"DNN requires .net 4.0 or higher to work"
According to DNNDocs, it requires version 4.7.2
InstallWizard.resx states in key "IsValidSqlServerVersionCheck.Text":
"Checking database version is SQL 2008 (express or full product) or higher to work" and
"DNN requires SQL 2008 (express or full product) to work" (key "IsValidDotNetVersion.Text")
According to DNNDocs, it requires version 2008R2 or above
Installwizard.resx states in key "FileAndFolderPermissionCheckFailed.Text" a list of outdated Windows versions
Current behavior
outdated requirements
Expected behavior
update messages to current DNN requirements
Affected version

[x] 10.00.00 alpha build (in development)
[x] 09.06.01 latest supported release

Affected browser

[x] any

I noticed, IsValidDotNetVersion.Text is not used anymore and the key needs to be removed.

Yeah, I created a check for 4.7.2 and never noticed there was even a key for IsValidDotnetVersion.Text, I would have updated that one if I knew it existed :) I guess that can go out now.


python3Packages.azure-mgmt-imagebuilder: 0.2.1 -> 0.3.0

Motivation for this change
bumping packages I maintain
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[x] Tested compilation of all pkgs that depend on this change using nix-shell -p nix-review --run "nix-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[x] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

Notify maintainers
cc @
[2 built, 12 copied (6.7 MiB), 1.0 MiB DL]
https://github.com/NixOS/nixpkgs/pull/74883
3 package were built:
azure-cli python37Packages.azure-mgmt-imagebuilder python38Packages.azure-mgmt-imagebuilder

@GrahamcOfBorg build azure-cli python37Packages.azure-mgmt-imagebuilder python38Packages.azure-mgmt-imagebuilder


Add Triggers documentation

Signed-off-by: Aleksandr<EMAIL_ADDRESS>Aleksandr<EMAIL_ADDRESS>

Why is it located in advanced dir? Why not in the appendix one?
Anyway, you should add an appropriate record into the sidebar links list. It is here:
https://github.com/hyperledger/iroha-2-docs/blob/f074c7aa0f3f40bd7a8b77d6fb7f3bcf705b8869/.vitepress/config.ts#L30-L101


x/build/cmd/coordinator: write proper scheduler

Currently if there are N builds waiting on a buildlet type (due to lack of machines or quota), the current implementation is a bunch of goroutines fighting over a mutex.
It's random who wins and gets the buildlet.
We should have them register interest and when a buildlet becomes available, pick the highest priority one.
Example priorities in order:

trybot run with a +2 already
trybot run
normal run of a build at tip of a release branch
normal run of a build at tip of master branch
normal run of a build at tip of dev branch
normal run of a build not at tip
idle flake detection (#19177)

etc.
/cc @danp @kevinburke

And gomote access is in there somewhere too.

CL 223381 is related. It's a request to start running post-submit builders on new commits on dev.* branches.


Add multiple IP address per NIC support to VMSS create

Description
Please add support for multiple IP addresses per NIC to VMSS create command.
You can now define up to 50 IP addresses per NIC when creating a VM scale set. Syntax is the same as multiple IP addresses per NIC for regular VMs, i.e. add multiple entries to ipConfigurations[] in the networkInterfaceConfigurations list.
See https://github.com/gbowerman/azure-myriad/tree/master/preview/network for more details.

Per discussion, move to a later milestone till we have more user asks on this

Will reactivate it till we have more user asks on this. It is hard to fit 2 dimensions of configuration in a single command line. Users might be better to use deployment templates
//CC: @gatneil,


Create GUI tests that run against Firefox and Chrome

I think we should go with Nightwatch.js as the test framework. It uses Selenium underneath and provides the test runner  as well as some useful commands and assertions.
The goal is to have Travis CI run tests against current Firefox and Chrome.
I do something similar for  ipfs-firefox-addon where I run against multiple Firefox versions.
As a PoC a simple Editor test should be created.

@sk4zuzu check this out:
https://travis-ci.org/lidel/yt-looper/builds/59316433
GUI tests can be run locally too.
Initial Setup:
npm install grunt-nightwatch --save-dev
bash test/nightwatch_dependency_check.sh

Then you can run against a browser of your choosing:
grunt nightwatch:firefox
grunt nightwatch:chrome

I plan to start writing GUI tests first and migrate headless tests from qunit to nightwatch in near future.

this looks fantastic! :+1: :rocket:

Short update:
I managed to set up GUI tests under headless PhantomJS.
This is much faster than running tests on real browser,
so I've set it as a default target for both TravisCI and grunt test.
In future I'll see if I can set up real browsers at TravisCI somehow (in a way that gives stable builds),
but for now it seems to be too slow for that.
Let's keep in mind that this great service is provided for free. :+1:
It is sill okay to run tests against real browsers locally.
I created handy aliases for two of them:

grunt firefox
grunt chrome

I also simplified everything related to tests and grunt,
so if you are a new developer the only required step to run test suite is:
npm install && npm test

It takes care of all dependencies, installs them to local directory
named node_modules and runs grunt test.
Note that a simple HTTP server is spawned automatically for the lifetime of npm test task.
It is possible to run it in standalone mode via grunt httpd. It uses the domain whitelisted  by Google API, so that features such as URL shortener and video titles in Editor work the same way as in production.
See CONTRIBUTING.md#tests for more information.
I'll keep this ticket open for now to remind me to write GUI tests in spare time.


Pin thread to specific core

Is there a way with STD Rust to pin thread to specific core?
As I understand threading is made based on top of FreeRTOS. There is https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/api-reference/system/freertos_idf.html#_CPPv429xTaskCreateStaticPinnedToCore14TaskFunction_tPCKcK8uint32_tPCv11UBaseType_tPC11StackType_tPC12StaticTask_tK10BaseType_t function.
Any way to accomplish it in a idiomatic way?

you can use https://github.com/esp-rs/esp-idf-hal/blob/master/src/task.rs#L165 ThreadSpawnConfiguration struct with its pin_to_core option and then just use standard std::thread mechanism on top of it

you can use https://github.com/esp-rs/esp-idf-hal/blob/master/src/task.rs#L165 ThreadSpawnConfiguration struct with its pin_to_core option and then just use standard std::thread mechanism on top of it.

Creating object
use set() method on it
use std::thread mechanism

Awesome thanks! Are there any examples in the wild that I could check?


EnderIO crashing server when breaking light.

Issue Description:
Whenever I break a BlockElectricLight, it does not remove the TileEntityElectricLight with it.  I then crash when I execute this method:
public @Nonnull LightType getLightType() {
return lighttype != null ? lighttype : (lighttype = world.getBlockState(getPos()).getValue(BlockElectricLight.TYPE));
}
As the current block at that position is air and the cast fails.
What happens:
The server crashes and all players are kicked off.
What you expected to happen:
The server to run fine.
Steps to reproduce:

Remove a light which had been flipped upside down.

Affected Versions (Do not use "latest"):

EnderIO: 1.12.2-5.0.49
EnderCore: 1.12.2-0.5.65
Minecraft: 1.12.2
Forge: <IP_ADDRESS>79
SpongeForge? No
Optifine? yes
Single Player and/or Server? Server

Your most recent log file where the issue was present:
https://pastebin.com/UvkJVYUk

do you have a crash report for this?


Annotated MNIST: The implementation of cross_entropy_loss is incorrect

Currently the cross_entropy_loss in the Annotated MNIST example is implemented as follows:
def cross_entropy_loss(*, logits, labels):
  one_hot_labels = jax.nn.one_hot(labels, num_classes=10)
  return -jnp.mean(jnp.sum(one_hot_labels * logits, axis=-1))

The correct implementation should be:
from operator import getitem

@jax.jit
def cross_entropy_loss(logits, labels):
    logits = nn.log_softmax(logits)
    loss = jax.vmap(getitem)(logits, labels)
    loss = -loss.mean()
    return loss

Test:
import jax
from jax import nn
import jax.numpy as np
jnp = np
import jax.random as rand
import numpy as onp
from operator import getitem
import torch
import torch.nn.functional as F

jax.config.update('jax_platform_name', 'cpu')

key = rand.PRNGKey(42)

x = rand.normal(key, (16, 10))
y = rand.randint(key, (16,), 0, 10)

x_ = torch.from_numpy(onp.asarray(x))
y_ = torch.from_numpy(onp.asarray(y)).long()

print(F.cross_entropy(x_, y_).numpy())  # PyTorch implementation: 2.888901

def cross_entropy_loss(*, logits, labels):
    one_hot_labels = jax.nn.one_hot(labels, num_classes=10)
    return -jnp.mean(jnp.sum(one_hot_labels * logits, axis=-1))

print(cross_entropy_loss(logits=x, labels=y))  # Current implementation: -0.0056607425

@jax.jit
def cross_entropy_loss(logits, labels):
    logits = nn.log_softmax(logits)
    loss = jax.vmap(getitem)(logits, labels)
    loss = -loss.mean()
    return loss

print(cross_entropy_loss(x, y))  # Correct implementation: 2.8889012

Thanks for opening this inquiry!
Note that the Annotated MNIST example already returns nn.log_softmax() from the model:
class CNN(nn.Module):
  """A simple CNN model."""

  @nn.compact
  def __call__(self, x):
    x = nn.Conv(features=32, kernel_size=(3, 3))(x)
    x = nn.relu(x)
    x = nn.avg_pool(x, window_shape=(2, 2), strides=(2, 2))
    x = nn.Conv(features=64, kernel_size=(3, 3))(x)
    x = nn.relu(x)
    x = nn.avg_pool(x, window_shape=(2, 2), strides=(2, 2))
    x = x.reshape((x.shape[0], -1))  # flatten
    x = nn.Dense(features=256)(x)
    x = nn.relu(x)
    x = nn.Dense(features=10)(x)
    x = nn.log_softmax(x)
    return x

Does this match your expecations?

@andsteing Actually I spotted this issue when I was investigating the quality of the implementations of cross entropy loss in JAX. Since Flax is one of the most popular NN libraries for JAX, and the Annotated MNIST is the default example in the Flax documentation, most users will just copy the code in this example into their projects, which will lead to wrong result.
For the implementation, I believe it is more common to normalise the logits in the loss function. This may not make things better for the MNIST example, but for large models, we usually adapt the model to various tasks by adding more layers on top of the model output. In such cases, the model output is not supposed to be normalised. Moreover, in popular NN libraries such as PyTorch, the cross entropy function expects the logits to be unnormalised.
Besides, the implementation has a performance issue because it converts the labels into one hot encoding. The correct implementation (using jax.vmap) should be like the one I wrote above.
I am going write a blog article to comment on the implementations of cross entropy loss in JAX.

Thanks for the additional details, @ayaka14732 !
I didn't write the original example, so I'm not sure what was the motivation at that point. Before changing anything, I'd like to discuss these topics in more detail though. Maybe @levskaya @jheek @mtthss want to chime in.
The open questions are:

Should we rewrite Annotated MNIST to return non-normalized logits?
Should the loss implementation use vmap instead of converting to one hot encoding?

(feel free to add more points with additional numbers)
As for 1, I'm not sure that adding the normalization step introduces any restrictions wrt what model can be built on top of the output of such a model. But I see the point about people copying the incorrect loss by accident. We could rename the loss to cross_entropy_loss_from_normalized_logits() or remove the nn.log_softmax() from the model output and use standard cross entropy loss (probably best to use optax.softmax_cross_entropy in that case).

Besides, the implementation has a performance issue because it converts the labels into one hot encoding. The correct implementation (using jax.vmap) should be like the one I wrote above.

Whether a one_hot or vmap-of-index is faster depends on dimensions and platform. Typically the one-hot solution is very XLA friendly and easy to optimize it also makes it easier to support soft labels

@jheek Wow! I haven't noticed this.
I can confirm the performances are almost identical on CPU, GPU and TPU.

Test script:
import jax
from jax import nn
import jax.numpy as jnp
from operator import getitem

# jax.config.update('jax_platform_name', 'cpu')

x = jnp.array([[-1.18020773e-02, 2.12021172e-04, 1.54857263e-02, -2.69062817e-02, 2.48291939e-02, -1.57771826e-01, 1.92937106e-02, 8.00435692e-02, -3.22007202e-02, -9.29394960e-02],
              [-7.89603218e-03, 1.77750289e-02, -4.46040742e-02, -6.05713278e-02, -2.72103678e-02, -8.59001800e-02, 9.83414203e-02, 7.55275413e-02, 2.83549689e-02, -1.53297465e-02],
              [-1.39507279e-02, -2.87675336e-02, -6.21193871e-02, -1.39774792e-02, 5.88746369e-02, -1.25838742e-01, 5.08899838e-02, 3.97215132e-03, 5.62930740e-02, 1.32357161e-02],
              [-2.65202336e-02, 4.41155769e-02, -3.11193094e-02, -2.00038608e-02, 2.85324380e-02, -6.48770258e-02, 8.85064006e-02, 1.30649462e-01, 7.65995309e-02, 1.04247741e-02],
              [-4.47686166e-02, 1.18546493e-01, 2.52062641e-03, 5.05243726e-02, 3.30978036e-02, -1.43625394e-01, 6.45868406e-02, 2.03764439e-01, 3.71213034e-02, -1.07339084e-01],
              [9.10869241e-03, 4.17448469e-02, -7.88132250e-02, -8.66309926e-03, 7.24829659e-02, -2.05243602e-01, 8.08372796e-02, 1.47233456e-01, 2.36027334e-02, -5.98792732e-03],
              [-1.08229872e-02, -1.97286233e-02, -5.83424866e-02, -1.43472329e-02, 6.09962158e-02, -1.09460413e-01, 8.39179903e-02, -1.33977272e-02, 5.15223742e-02, -2.19145101e-02],
              [-4.08720411e-02, 4.43317667e-02, 5.42337447e-03, -4.50615957e-03, -1.77606083e-02, -1.12251990e-01, 5.72303906e-02, 4.27244902e-02, 1.29846334e-02, -6.36750609e-02],
              [-2.33511683e-02, -4.19441313e-02, -2.53099240e-02, -3.40913311e-02, 2.91062817e-02, -1.17673308e-01, 4.52934727e-02, 6.69038519e-02, 1.93193313e-02, 9.32972878e-04],
              [-8.95771384e-03, -1.89850703e-02, -4.84827980e-02, 6.48929551e-02, 3.58220935e-02, -2.13164091e-01, 1.48798272e-01, 2.58073777e-01, 1.91853680e-02, -3.26515697e-02],
              [4.63725962e-02, 2.34173127e-02, -1.20111704e-01, 3.28311101e-02, 3.72643247e-02, -3.24501187e-01, 1.72371522e-01, 1.61464572e-01, 3.20537128e-02, -6.84871152e-02],
              [-5.78307211e-02, 9.58937407e-02, -4.97079864e-02, 2.08359621e-02, -1.53612345e-02, -1.99896753e-01, 1.58067212e-01, 1.99744061e-01, 2.05481090e-02, -8.61398652e-02],
              [-3.60106044e-02, -2.96902433e-02, -1.36097893e-01, -8.01160187e-03, -3.87010686e-02, -1.14177659e-01, 1.08693138e-01, 7.54408836e-02, 1.20038494e-01, -4.08867598e-02],
              [-4.42547724e-02, 2.65968330e-02, -1.16404049e-01, 3.99116948e-02, 3.70342433e-02, -2.52804637e-01, 1.20865166e-01, 1.91994041e-01, 1.31512567e-01, -5.34878895e-02],
              [-1.04445070e-01, -1.25995502e-02, -3.07911113e-02, -2.90571153e-03, -6.47646636e-02, -7.31705278e-02, 5.22068962e-02, 8.08887705e-02, -5.31015918e-03, -1.43367410e-01],
              [5.92986569e-02, 1.65142119e-05, -1.42436139e-02, -3.14359590e-02, 8.34358111e-02, -1.19490743e-01, 7.41921589e-02, 9.27548930e-02, -2.43497770e-02, -1.97705049e-02],
              [5.49561530e-03, -1.56130977e-02, -4.27389368e-02, 4.68986072e-02, 6.23839833e-02, -2.25198716e-01, 9.64858308e-02, 1.23882063e-01, -7.69507885e-03, 5.38528115e-02],
              [-2.27768160e-02, -5.26964292e-03, -2.93163955e-03, 6.27545714e-02, -1.27458237e-02, -2.02232912e-01, 1.19752392e-01, 1.84115887e-01, 4.13061678e-02, -1.24206990e-01],
              [-1.88333243e-02, 6.86625615e-02, -2.11398304e-03, 8.18483531e-03, 8.05698037e-02, -1.55029133e-01, 8.26403499e-02, 2.03767478e-01, -2.83125415e-03, -3.98058593e-02],
              [-1.26937091e-01, 7.40949661e-02, 4.41245735e-03, 1.11442685e-01, 1.80361643e-02, -2.52694398e-01, 1.81960687e-01, 2.68796027e-01, 2.17940658e-02, -1.80268660e-01],
              [-1.80708244e-04, -2.12510191e-02, -7.65096098e-02, 7.51659274e-03, -9.01457481e-03, -1.21640250e-01, 9.88654792e-02, 8.79775360e-02, 7.35239983e-02, -7.77667202e-03],
              [-4.61105630e-02, -4.42445502e-02, -6.50017634e-02, -8.33700225e-03, -3.89694385e-02, -9.54467058e-02, 7.01751038e-02, 9.09299105e-02, 4.63261157e-02, -7.00642243e-02],
              [-9.73308459e-02, 8.19174573e-03, -7.40732402e-02, 2.13738866e-02, 8.34189821e-03, -1.76222131e-01, 1.13145962e-01, 1.78131312e-01, 6.00471720e-02, -1.10414103e-01],
              [4.41795588e-02, 3.11944820e-02, -4.57068756e-02, 9.16974433e-03, 7.96715915e-02, -1.37639463e-01, 1.50509447e-01, 1.48718774e-01, 5.20974174e-02, 3.41124311e-02],
              [3.03848479e-02, -2.04634238e-02, -5.18144295e-03, -7.55520612e-02, 9.20162909e-03, -1.17662966e-01, 7.82268792e-02, 1.07894555e-01, 2.12373957e-03, 1.11250095e-02],
              [-2.81126983e-02, -8.13692510e-02, -1.24993384e-01, 1.56849958e-02, 8.87469202e-02, -1.63082436e-01, 1.06209114e-01, 1.34258643e-01, 6.51819557e-02, 5.11457995e-02],
              [-1.58369094e-02, 2.42988374e-02, -8.84073824e-02, -5.85790724e-03, 9.41534638e-02, -2.78038144e-01, 9.62805152e-02, 1.56973749e-01, 3.26635092e-02, 1.13205947e-02],
              [9.15303826e-03, 1.70634557e-02, -5.74565530e-02, -2.42397413e-02, 6.22252002e-02, -2.31550604e-01, 7.48545304e-02, 2.16238573e-01, -5.76255880e-02, -5.96193373e-02],
              [1.40953138e-02, 2.27493793e-03, -3.40058431e-02, -2.38920618e-02, 6.47072494e-02, -1.27346247e-01, 1.30044132e-01, 4.72338349e-02, 4.18094844e-02, 1.18074603e-02],
              [-8.56964849e-03, -2.67159306e-02, -5.96427359e-02, -2.79492103e-02, 4.75161448e-02, -1.16145663e-01, 9.01559144e-02, -2.28071418e-02, 5.35263345e-02, -1.84544232e-02],
              [2.33726948e-03, 1.16003156e-01, -4.96490225e-02, 3.59052308e-02, 2.15967186e-02, -2.02133447e-01, 9.41444337e-02, 1.96441934e-01, 1.34492517e-01, -1.13289990e-01],
              [-5.45443073e-02, -2.34426185e-03, -1.12764567e-01, -1.28814131e-02, -3.77303138e-02, -9.22404602e-02, 1.06957100e-01, 1.24134108e-01, 9.78331864e-02, -1.30443811e-01]])
y = jnp.array([9, 5, 1, 5, 0, 6, 1, 4, 8, 6, 2, 0, 7, 8, 7, 0, 2, 4, 0, 4, 7, 7, 4, 3, 6, 1, 6, 6, 8, 1, 0, 7])

@jax.jit
def f1(logits, labels):
    logits = nn.log_softmax(logits)
    one_hot_labels = jax.nn.one_hot(labels, num_classes=10)
    return -jnp.mean(jnp.sum(one_hot_labels * logits, axis=-1))

@jax.jit
def f2(logits, labels):
    logits = nn.log_softmax(logits)
    loss = jax.vmap(getitem)(logits, labels)
    loss = -loss.mean()
    return loss

a = f1(x, y)
b = f2(x, y)
assert jnp.allclose(a, b)

import timeit
print(timeit.timeit('f1(x, y).block_until_ready()', globals=globals(), number=100000))
print(timeit.timeit('f2(x, y).block_until_ready()', globals=globals(), number=100000))

Since @jheek points out that the one-hot solution will not affect the performance, I am now thinking that optax.softmax_cross_entropy is the best approach.

The jax.vmap(getitem) is a nice trick! However, IMO something like:
n_classes = logits.shape[-1]
loss = optax.softmax_cross_entropy(logits, jax.nn.one_hot(labels, n_classes)).mean()

is easier to understand for beginners and experts alike.

@ayaka14732 thanks for the update. So It seems that on GPU/TPU the one-hot solution is preferred, and we can keep using the current implementation?
Is there anything actionable left in this issue, or do you think we can close it? Sorry if I missed anything!

Resolved in #2071.
@ayaka14732 thanks for the discussion, please feel free to continue the discussion on the PR...


[DOC] Client Side Encryption in OpenSearch

What do you want to do?

[ ] Request a change to existing documentation
[x] Add new documentation
[ ] Report a technical problem with the documentation
[ ] Other

Tell us about your request.
We need to add a description for a new plugin which will provide support for client side encryption in OpenSearch. This is a placeholder issue and doc content will be updated later.
What other resources are available?
Link to the feature proposal : https://github.com/opensearch-project/OpenSearch/issues/6353

Adding both Chris and Fanit since this could fit either security or client documentation.

@Naarcha-AWS I don't think this is specific to clients. I think this relates to encryption of data on the client side for OpenSearch in general.

Development team is currently refining the plugin for OpenSearch applications. No documentation needed for 2.10.

Hi @vikasvb90 , is this doc issue still relevant or should I close it? Is it related to https://github.com/opensearch-project/OpenSearch/issues/5800?

We can close this. Thanks @hdhalter !


Flakeheaven ignores baseline when using absolute path to file

flakeheaven lint filename.py is clean because of baseline, but flakeheaven lint $(basename filename.py) gives errors.
As a minimal example, save the following file as flake8heavened
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import re
import sys
from flakeheaven import flake8_entrypoint
if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(flake8_entrypoint())

Run flakeheaven baseline flake8helled  >> .flakeheaven_baseline
Then flakeheaven lint flake8helled is clean, but flakeheaven lint $(realpath flake8helled) is not.
This is an issue because VS Code (and may be other IDEs) use the absolute path to the files.

I am able to get around that limitation using some simple modifications. I feel there needs to be an option to not break existing workflows, so not yet creating a PR. See the changes here: https://github.com/flakeheaven/flakeheaven/compare/main...snmishra:use_relative_path?expand=1

@snmishra Were you using flakehell prior to flakeheaven? Is this a bug introduced in flakeheaven or an existing issue?

@mcarans I never used flakehell. I did try flakehell, but it was incompatible with flake8 4.0.0, discovered flakeheaven. The relevant code appears to be identical in flakehell.
I don't think this is a bug, but a limitation of how the baseline is calculated. Currently,  the filename is hashed as is, without considering whether it's a relative or an absolute path. I wanted to check-in the baseline to git so we can share it across all developers. Since every developer will have a different abspath, it makes sense to use relative paths.
Unfortunately, VS Code (I haven't checked other IDEs) uses absolute path to run the flake8 checks, which means the baseline file is ignored in the integration. Command-line works fine, of course.

Also, I see I named the file flake8heavened but also refer to it as flake8helled. Apologies for the confusion. The binary is called flake8helled in my version of flakeheaven, but I guess that has changed now.

@snmishra When you said "I feel there needs to be an option to not break existing workflows", did you mean an option to choose between relative and absolute paths? What do you think could break if the change was made to relative paths without the option of absolute paths?

Right. When generating the baseline, there is no way to know whether user intends absolute path or relative path.
In my changes, I'm calculating relative path when checking against baseline. But perhaps some users depend on the check being exact, and not suddenly switching to relative path when they were expecting absolute path.
It could be an option, I guess.

@snmishra We'd welcome a PR that has this option

Alright, working on one

to consider:

flakeheaven/_logic/_baseline.py -> check wether Path(path).is_absolute() -> use .relative_to with either pyproject.toml's parent folder or Path.cwd()
if relative_to fails, menaing its outside of the project, keep it absolute.

PR: https://github.com/flakeheaven/flakeheaven/pull/41. If there's nothing else required for this issue, please close it @snmishra

@mcarans Thanks for merging in record time!


Custom icon not working

Pre-flight checklist

[X] I have read the contribution documentation for this project.
[X] I agree to follow the code of conduct that this project uses.
[X] I have searched the issue tracker for a bug that matches the one I want to file, without success.

Electron Forge version
6.4.2
Electron version
v26.2.4
Operating system
macOS 13.5.2
Last known working Electron Forge version
No response
Expected behavior
I have an Electron app that was scaffolded with the webpack typescript template
npm init electron-app@latest my-electron-app -- --template=webpack-typescript

I'm going off of the documentation that's here:
https://www.electronforge.io/guides/create-and-add-icons
I have<EMAIL_ADDRESS><EMAIL_ADDRESS>and<EMAIL_ADDRESS>at the root of my project:

In my forge.config.ts I have:
const config: ForgeConfig = {
  packagerConfig: {
    asar: true,
    icon: "./images/icon@2x",
  },
  // etc.
}

Per the documentation,

Forge will automatically add the correct extension for each platform, so appending .ico or .icns to the path is not required.

So, the images I have should be used.
Actual behavior
However, when I run the app with electron-forge start, it uses the default Electron icon.
If I run electron-forge make, I see that a file exists at out/my-electon-app/my-electon-app.app/Contents/Resources/electron.icns which is what it seems to be using instead of my icon.
Steps to reproduce
Scaffold new app, add icons, and try to set them.
Additional information
I see https://github.com/electron/forge/issues/3168 but nothing in there seems to be helping and it was closed.

It looks like the custom icon is working, but just not in dev mode! If I actually install it, it seems to be working
It seems like the docs should mention that you won't see the icon in dev mode 😵


chore(master): release 1.12.1

:robot: I have created a release beep boop
1.12.1 (2022-08-24)
Miscellaneous Chores

release 1.12.1 (6aea64b)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/SethCohen/github-release-to-discord/releases/tag/v1.12.1 :sunflower:


Alpha-9: Container(AddonPanel)- Stateless function components cannot be given refs

Bug or support request summary
I run storybook and it opens in the browser.
Actual:I see React warnings about refs with stateless functions.
Expected: No warnings.
Steps to reproduce
I am using versions:
"react": "16.2.0",
"react-dom": "16.2.0",
"@storybook/addon-actions": "4.0.0-alpha.9",
"@storybook/addon-knobs": "4.0.0-alpha.9",
"@storybook/react": "4.0.0-alpha.9"
"webpack": "4.10.2",
"mini-css-extract-plugin": "0.4.0",

warning.js:33 Warning: Stateless function components cannot be given refs. Attempts to access this ref will fail.

Check the render method of `Container(AddonPanel)`.
    in AddonPanel (created by Container(AddonPanel))
    in Container(AddonPanel) (created by addonPanel)
    in addonPanel (created by Layout)
    in div (created by Styled(div))
    in Styled(div) (created by Layout)
    in div (created by Pane)
    in Pane (created by SplitPane)
    in div (created by SplitPane)
    in SplitPane (created by Layout)
    in div (created by Pane)
    in Pane (created by SplitPane)
    in div (created by SplitPane)
    in SplitPane (created by Layout)
    in Layout (created by Layout)
    in div (created by Styled(div))
    in Styled(div) (created by Layout)
    in ThemeProvider (created by Layout)
    in Layout (created by Container(Layout))
    in Container(Layout)
    in div

@chrisrink thanks for your report. This is a known issue and is currently being worked on, see https://github.com/storybooks/storybook/issues/3679. Closing this issue in favour of the the 'official'  one.


Cloud-init file is not running

Running the command hetzner-kube cluster create --name demo --ssh-key demo --cloud-init cloud-init.yml
And the cloud-init is:
package_upgrade: true
package_update: true
packages:
 - ceph-fs-common
 - ceph-common
 - htop

I see that the data is sent correctly to hcloud-go library but with no effect. Not sure where exactly is the problem.

Do you have #cloud-config as the first line? This is required.

that fixed it thanks!


Fix JsParse/JsRun for JavascriptString argument

JavascriptString is internally wide, so pass correct length and flag in
CompileRun.
GetSz for JavascriptString can allocate memory and need to handle OOM so
need API wrapper.
We are using the wrapper twice but refactoring is not simple as
RunScriptCore is called at multiple, for now lets keep two wrappers

@obastemur @jianchun please take a look

@dotnet-bot Ubuntu ubuntu_linux_test_static

@dotnet-bot test Ubuntu ubuntu_linux_test_static


infra: Add upload-artifact step when building docs

Apologies for opening this in error! I'm testing out how we might generate combined documentation for various projects in the CQCL org and elsewhere, and hadn't properly realised that the default when opening a PR from a branch on a fork is to open a PR on the main repo.
If my testing works out, I may open an actual PR with changes later, but nothing is needed for now.


Support absolute paths in imports when CurrentDirectory isn't null

Fixes #503

Only prepend CurrentDirectory to lessPath in case of relative paths.
Added a test fixutre for the same

Thanks, merged. You should see 1.5.3-alpha2 appear on nuget.org soon-ish.


[Fix] Add case for empty token

Signed-off-by: Utkarsh Srivastava<EMAIL_ADDRESS>Description
This PR fixes the meshery server panic issue which occurs when the token is empty.
Signed commits

[x] Yes, I signed my commits.

Codecov Report

Merging #3445 (3d1959e) into master (008287e) will decrease coverage by 2.00%.
The diff coverage is 0.60%.

@@            Coverage Diff             @@
##           master    #3445      +/-   ##
==========================================
- Coverage   12.63%   10.62%   -2.01%
==========================================
  Files          37       37
  Lines        2929     3162     +233
==========================================
- Hits          370      336      -34
- Misses       2467     2759     +292
+ Partials       92       67      -25

Flag
Coverage Δ

gointegrationtests
?

unittests
10.62% <0.60%> (-0.78%)
:arrow_down:

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

Impacted Files
Coverage Δ

mesheryctl/internal/cli/root/config/config.go
0.92% <0.00%> (ø)

mesheryctl/internal/cli/root/perf/perf.go
26.66% <0.00%> (-23.34%)
:arrow_down:

mesheryctl/internal/cli/root/system/channel.go
17.58% <0.00%> (-1.25%)
:arrow_down:

mesheryctl/internal/cli/root/system/start.go
1.26% <0.00%> (-0.25%)
:arrow_down:

mesheryctl/internal/cli/root/system/stop.go
0.90% <0.00%> (-0.18%)
:arrow_down:

mesheryctl/internal/cli/root/system/update.go
1.25% <0.00%> (-0.11%)
:arrow_down:

mesheryctl/pkg/utils/auth.go
0.00% <0.00%> (ø)

mesheryctl/pkg/utils/healthcheck.go
16.43% <0.00%> (-2.32%)
:arrow_down:

mesheryctl/pkg/utils/helpers.go
0.00% <0.00%> (ø)

mesheryctl/internal/cli/root/system/check.go
1.58% <0.92%> (-35.31%)
:arrow_down:

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 a4a3aa3...3d1959e. Read the comment docs.


Add staff_user_added_note_to_a_customer_event to CustomerUpdate mutation

staff_user_added_note_to_a_customer_event should be added to CustomerUpdate mutation.

Closing this one, we will be revisiting activity logs and will need to refine all existing and missing events.


Time format not matching

Hi, thanks for making this!
I get this error when parsing my archive:
ValueError: time data 'Friday, 19 June 2015 at 19:17 UTC+02' does not match format '%A, %B %d, %Y at %I:%M%p %Z'

I guess there can be format inconsistencies in an archive, and the tool doesn’t expect that.

Yeah, I believe that converting the timestamp from the archived messages into a python datetime object is country specific. One of the previous contributors from the UK had to alter the source code for that portion as well.

Yeah, I believe that converting the timestamp from the archived messages into a python datetime object is country specific. One of the previous contributors from the UK had to alter the source code for that portion as well.

Ok, thanks for your answer. Would this work too just by changing the preferred language on Facebook then exporting again? I’ll try.

Ok, thanks for your answer. Would this work too just by changing the preferred language on Facebook then exporting again? I’ll try.

If you change line 12 in fb_parser.py to be dtFormat = '%A, %d %B %Y at %H:%M %Z+02' then it will parse that timestamp you copied above ok.
But if summer time becomes an issue (i.e. there are lines with UTC+01 or UTC+03) then that won't work. Changing line 25 to include .replace("+01", "").replace("+02", "").replace("+03", "") will get rid of the summer time part and allow it to parse ok. You'll get times which are an hour out from what you might expect though . . .

If you change line 12 in fb_parser.py to be dtFormat = '%A, %d %B %Y at %H:%M %Z+02' then it will parse that timestamp you copied above ok.
But if summer time becomes an issue (i.e. there are lines with UTC+01 or UTC+03) then that won't work. Changing line 25 to include .replace("+01", "").replace("+02", "").replace("+03", "") will get rid of the summer time part and allow it to parse ok. You'll get times which are an hour out from what you might expect though . . .

I have summertime and multiple timezones in my log, so I just changed line 25 to
dt.strptime(re.sub(r'\+\d\d', '', y.find(class_='meta').string), dtFormat),

This will remove any +XX or -XX
and remember to add import re
You can compile the regular expression before the loop to speed things up a bit, but my dataset wasn't that big.

Ok, so I finally got round to implementing the correct fix on my fork of this repo; the simplest way is to use import dateutil and use dateutil.parser.parse.
For this repo's code, this amounts to changing fb_parser.py L25 to be:
dateutil.parser.parse(y.find(class_='meta').string).replace(tzinfo=None),
and importing dateutil, I think (though I haven't tested it)!

@jsharkey13 Thank you a lot, with your fork I finally was able to parse my messages! (and made stats from them)


Power Platform

Since Power Platform is a seeded license with M365 could there be url references added on this page to these additional required domains needing to be made available to end user access points in order for those products to function properly.  Ex. https://docs.microsoft.com/en-us/power-platform/admin/powerapps-us-government

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

ID: d45a2f60-4f5f-2ee3-5a2a-aeccf6c8b767
Version Independent ID: 2335370f-07a5-0ef1-1c9d-54c1c36e449b
Content: Office 365 US Government DOD endpoints - Microsoft 365 Enterprise
Content Source: microsoft-365/enterprise/microsoft-365-u-s-government-dod-endpoints.md
Service: o365-administration
GitHub Login: @kelleyvice-msft
Microsoft Alias: kvice

@kelleyvice-msft Please help us in resolving this issue. Thanks

Thanks for reaching out. I will find the appropriate engineering resource to make this change and update the issue when I have any new information. -Kelley

Thanks for reaching out to the Microsoft 365 Enterprise content team. Because all Microsoft 365 endpoints data displayed in learn.microsoft.com articles is autogenerated by the Microsoft 365 endpoints web service, the content team cannot resolve issues directly related to this data.
We recommend that you contact your organization’s TAM (Technical Account Manager) to escalate your inquiry to the engineering team associated with the endpoint in question. If you do not have a TAM assigned to your organization, please contact Microsoft Support.


Export enableThreadPinning

Description
Some application may get performance improvement by binding threads.And there is a way for daal to enable it which is not export to daal4py.
Changes proposed in this pull request:

export daal::services::Environment::getInstance()->enableThreadPinning to daal4py.

\intelci: run

/intelci: run


Reorganise values.yaml

In preparation for the 1.0.0 release of the Helm Chart, we have done a reorganization of the values.yaml file to be more inline with typical design.
The main changes are tentacle becomes agent and we've re-organized under the scriptPods section
I also changed the name of the script pod roles & rolebindings to be octopus-agent-scripts vs octopus-agent-pod
Also removed listening tentacle service & configuration as it's not supported.
I chose not to move the files around just yet, mainly to avoid git from doing weird diff things

I have deployed this locally with an NFS pod and the Server PR with the updated helm command and it all worked.
I need to do a test with a PV, but Kind doesn't have a ReadWriteMany storage provider

I ran this using an azurefile storage class in AKS and it correctly did not add NFS resources and ran. Marking this as ready for review as the 2 primary modes via the UI work


Python errors

Hi,
I wanted to test your exporter, but when I run the python code I got errors, please if you have any idea about these errors, give me a clue.
I tried to execute the program by using both versions of Python 2.7 and 3, and in every case I get different error messages.
Python 2.7

Python 3.6.9

@husseinmarah I've just started using this so I'm not massively familiar with the code yet, however your issues appear to be as follows:
Picture 1:  You're using Python2.7, don't. ;)  This is Python3 code :)
Picture 2: You've not defined your MQTT server correctly or there is a firewall blocking the connection, check those two things and then run it again :)

Sorry it took so long to get back to you, didn't get any notifications for this repo. 😠
What Matthew already said, Python 2 has been deprecated since January 2020 and you don't seem to have configured your MQTT server connection correctly. I'm closing this for now, if you still have problems, please feel free to re-open this issue and post your config file as well.

Thank you for the "late replay" :)
yes, actually I solve the problem long time ago and I wrote my own exporter, because this seems too complicated ;)


Idea/Spike: Updatable Batches

Not everything needs the immutability. Frequency (and DSNP) focus instead on transparency.
The nature of batches means that they are difficult to mutate without just re-publishing the batch. That has several issues:

It is not transparent with respect to the desire to replace the previous batch
There is not guarantee that other additions or modifications have occurred
No transparency around what items were removed
Alters the canonical order for the messages

One possible solution for this is to provide an explicit way to update a batch. How?

On-chain Batch Messages would need to include the Merkle root of the items in the batch
Update Batch Messages would need to include the hashes of the removed items and the original indices for those hashes
Update Batch Messages would need to reference the hash or IPFS URI for the original batch to maintain order

While that is potentially lot of additional data, the updated batch is transparent with respect to the removals, and does not alter order, and has guarantee that no remaining data was modified

Archive


more documentation around Device Profiles

More documentation is needed around the device profile (per Core WG meeting 3/29).  Specifically, what is the structure, what are the allowed elements, what is optional.  There is a block diagram of the design of the profile (and profile document) on the Wiki today (https://docs.edgexfoundry.org/Ch-DeviceProfile.html) but much more is needed.

Update the current Ch-DeviceProfile.rst with content from https://docs.google.com/document/d/1aMIQ0kb46VE5eeCpDlaTg8PP29-DBSBTlgeWrv6LuYk/edit#heading=h.qxpm8b64bzqz


Download option [QUESTION]

Is it possible to download using this package?

At the moment no but I have plans to support that in upcoming versions


Conditional imports/exports with dart.library.mirrors do not seem to work.

Files gated behind a conditional import or export of dart.library.mirrors seem to be imported even if dart:mirrors is not supported. bool.fromEnvironment('dart.library.mirrors') correctly returns false but the conditional imports are still imported.
Conditional imports of custom values passed via --dart-define seem to work fine.
Steps to Reproduce

Execute flutter run on the code sample
b is printed instead of a which would be expected as the function that prints b is gated by a conditional import.

Expected results: b.dart should not be imported and a should be printed.
Actual results: b.dart is imported and b is printed.

Code sample
a.dart
void foo() => print('a');

b.dart
void foo() => print('b');

main.dart
import 'a.dart' if (dart.library.mirrors) 'b.dart';

void main() => foo();

Logs
flutter run -d linux --verbose
[ +124 ms] executing: uname -m
[  +64 ms] Exit code 0 from: uname -m
[        ] x86_64
[  +14 ms] executing: [/opt/flutter/] git -c log.showSignature=false log -n 1 --pretty=format:%H
[  +21 ms] Exit code 0 from: git -c log.showSignature=false log -n 1 --pretty=format:%H
[        ] fb57da5f945d02ef4f98dfd9409a72b7cce74268
[   +1 ms] executing: [/opt/flutter/] git tag --points-at fb57da5f945d02ef4f98dfd9409a72b7cce74268
[  +95 ms] Exit code 0 from: git tag --points-at fb57da5f945d02ef4f98dfd9409a72b7cce74268
[        ] 3.0.1
[  +20 ms] executing: [/opt/flutter/] git rev-parse --abbrev-ref --symbolic @{u}
[  +14 ms] Exit code 0 from: git rev-parse --abbrev-ref --symbolic @{u}
[        ] origin/stable
[        ] executing: [/opt/flutter/] git ls-remote --get-url origin
[  +14 ms] Exit code 0 from: git ls-remote --get-url origin
[        ] https://github.com/flutter/flutter.git
[ +164 ms] executing: [/opt/flutter/] git rev-parse --abbrev-ref HEAD
[  +12 ms] Exit code 0 from: git rev-parse --abbrev-ref HEAD
[        ] stable
[ +111 ms] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update.
[   +7 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'WindowsUwpEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
[ +161 ms] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update.
[   +2 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'WindowsUwpEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
[   +3 ms] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
[ +172 ms] Skipping pub get: version match.
[ +252 ms] Generating /home/abitofevrything/Programming/testing/flutter/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java
[ +197 ms] Initializing file store
[  +41 ms] Skipping target: gen_localizations
[  +15 ms] gen_dart_plugin_registrant: Starting due to {InvalidatedReasonKind.inputChanged: The following inputs have updated contents: /home/abitofevrything/Programming/testing/flutter/.dart_tool/package_config_subset}
[ +115 ms] gen_dart_plugin_registrant: Complete
[   +4 ms] Skipping target: _composite
[   +3 ms] complete
[  +11 ms] Launching lib/main.dart on Linux in debug mode...
[  +12 ms] /opt/flutter/bin/cache/dart-sdk/bin/dart --disable-dart-dev /opt/flutter/bin/cache/dart-sdk/bin/snapshots/frontend_server.dart.snapshot --sdk-root /opt/flutter/bin/cache/artifacts/engine/common/flutter_patched_sdk/ --incremental --target=flutter
--debugger-module-names --experimental-emit-debug-metadata -DFLUTTER_WEB_AUTO_DETECT=true --output-dill /tmp/flutter_tools.TMIMLV/flutter_tool.PUUXVP/app.dill --packages /home/abitofevrything/Programming/testing/flutter/.dart_tool/package_config.json
-Ddart.vm.profile=false -Ddart.vm.product=false --enable-asserts --track-widget-creation --filesystem-scheme org-dartlang-root --initialize-from-dill build/c075001b96339384a97db4862b8ab8db.cache.dill.track.dill
--enable-experiment=alternative-invalidation-strategy
[  +83 ms] Building Linux application...
[  +58 ms] <- compile package:testing/main.dart
[  +11 ms] executing: [build/linux/x64/debug/] cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug -DFLUTTER_TARGET_PLATFORM=linux-x64 /home/abitofevrything/Programming/testing/flutter/linux
[ +274 ms] -- Configuring done
[ +182 ms] -- Generating done
[        ] -- Build files have been written to: /home/abitofevrything/Programming/testing/flutter/build/linux/x64/debug
[  +28 ms] executing: ninja -C build/linux/x64/debug install
[  +53 ms] ninja: Entering directory `build/linux/x64/debug'
[+4196 ms] [1/5] Generating /home/abitofevrything/Programming/testing/flutter/linux/flutter/ephemeral/libflutter_linux_gtk.so, /home/abitofevrything/Programming/testing/flutter/linux/flutter/ephemeral/flutter_linux/fl_basic_message_channel.h,
/home/abitofevrything/Programming/testing/flutter/linux/flutter/ephemeral/flutter_linux/fl_binary_codec.h, /home/abitofevrything/Programming/testing/flutter/linux/flutter/ephemeral/flutter_linux/fl_binary_messenger.h,
/home/abitofevrything/Programming/testing/flutter/linux/flutter/ephemeral/flutter_linux/fl_dart_project.h, /home/abitofevrything/Programming/testing/flutter/linux/flutter/ephemeral/flutter_linux/fl_engine.h,
/home/abitofevrything/Programming/testing/flutter/linux/flutter/ephemeral/flutter_linux/fl_json_message_codec.h, /home/abitofevrything/Programming/testing/flutter/linux/flutter/ephemeral/flutter_linux/fl_json_method_codec.h,
/home/abitofevrything/Programming/testing/flutter/linux/flutter/ephemeral/flutter_linux/fl_message_codec.h, /home/abitofevrything/Programming/testing/flutter/linux/flutter/ephemeral/flutter_linux/fl_method_call.h,
/home/abitofevrything/Programming/testing/flutter/linux/flutter/ephemeral/flutter_linux/fl_method_channel.h, /home/abitofevrything/Programming/testing/flutter/linux/flutter/ephemeral/flutter_linux/fl_method_codec.h,
/home/abitofevrything/Programming/testing/flutter/linux/flutter/ephemeral/flutter_linux/fl_method_response.h, /home/abitofevrything/Programming/testing/flutter/linux/flutter/ephemeral/flutter_linux/fl_plugin_registrar.h,
/home/abitofevrything/Programming/testing/flutter/linux/flutter/ephemeral/flutter_linux/fl_plugin_registry.h, /home/abitofevrything/Programming/testing/flutter/linux/flutter/ephemeral/flutter_linux/fl_standard_message_codec.h,
/home/abitofevrything/Programming/testing/flutter/linux/flutter/ephemeral/flutter_linux/fl_standard_method_codec.h, /home/abitofevrything/Programming/testing/flutter/linux/flutter/ephemeral/flutter_linux/fl_string_codec.h,
/home/abitofevrything/Programming/testing/flutter/linux/flutter/ephemeral/flutter_linux/fl_value.h, /home/abitofevrything/Programming/testing/flutter/linux/flutter/ephemeral/flutter_linux/fl_view.h,
/home/abitofevrything/Programming/testing/flutter/linux/flutter/ephemeral/flutter_linux/flutter_linux.h, _phony_
[   +6 ms] [ +134 ms] executing: uname -m
[        ] [  +61 ms] Exit code 0 from: uname -m
[        ] [        ] x86_64
[        ] [  +10 ms] executing: [/opt/flutter/] git -c log.showSignature=false log -n 1 --pretty=format:%H
[        ] [  +11 ms] Exit code 0 from: git -c log.showSignature=false log -n 1 --pretty=format:%H
[        ] [        ] fb57da5f945d02ef4f98dfd9409a72b7cce74268
[        ] [   +1 ms] executing: [/opt/flutter/] git tag --points-at fb57da5f945d02ef4f98dfd9409a72b7cce74268
[        ] [  +28 ms] Exit code 0 from: git tag --points-at fb57da5f945d02ef4f98dfd9409a72b7cce74268
[        ] [        ] 3.0.1
[        ] [  +22 ms] executing: [/opt/flutter/] git rev-parse --abbrev-ref --symbolic @{u}
[        ] [  +14 ms] Exit code 0 from: git rev-parse --abbrev-ref --symbolic @{u}
[        ] [        ] origin/stable
[        ] [        ] executing: [/opt/flutter/] git ls-remote --get-url origin
[        ] [  +14 ms] Exit code 0 from: git ls-remote --get-url origin
[        ] [        ] https://github.com/flutter/flutter.git
[        ] [ +131 ms] executing: [/opt/flutter/] git rev-parse --abbrev-ref HEAD
[        ] [   +9 ms] Exit code 0 from: git rev-parse --abbrev-ref HEAD
[        ] [        ] stable
[        ] [ +103 ms] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update.
[        ] [  +10 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'WindowsUwpEngineArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
[        ] [ +152 ms] Artifact Instance of 'MaterialFonts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'GradleWrapper' is not required, skipping update.
[        ] [        ] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update.
[        ] [        ] Artifact Instance of 'FlutterSdk' is not required, skipping update.
[        ] [        ] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'WindowsUwpEngineArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
[        ] [   +2 ms] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
[        ] [        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'FontSubsetArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'PubDependencies' is not required, skipping update.
[        ] [  +69 ms] Initializing file store
[        ] [   +4 ms] Done initializing file store
[        ] [  +50 ms] Skipping target: gen_localizations
[        ] [  +20 ms] Skipping target: gen_dart_plugin_registrant
[        ] [+1067 ms] Skipping target: unpack_linux
[        ] [ +117 ms] Skipping target: kernel_snapshot
[        ] [ +206 ms] Skipping target: debug_bundle_linux-x64_assets
[   +5 ms] [   +1 ms] Persisting file store
[        ] [   +6 ms] Done persisting file store
[        ] [   +4 ms] build succeeded.
[        ] [  +15 ms] "flutter assemble" took 1,769ms.
[        ] [ +262 ms] ensureAnalyticsSent: 255ms
[        ] [   +1 ms] Running shutdown hooks
[        ] [        ] Shutdown hooks complete
[        ] [   +1 ms] exiting with code 0
[+2023 ms] [2/5] Building CXX object CMakeFiles/testing.dir/flutter/generated_plugin_registrant.cc.o
[ +149 ms] [3/5] Building CXX object CMakeFiles/testing.dir/my_application.cc.o
[ +595 ms] [4/5] Linking CXX executable intermediates_do_not_run/testing
[        ] [4/5] Install the project...
[  +51 ms] -- Install configuration: "Debug"
[   +7 ms] -- Installing: /home/abitofevrything/Programming/testing/flutter/build/linux/x64/debug/bundle/testing
[        ] -- Set runtime path of "/home/abitofevrything/Programming/testing/flutter/build/linux/x64/debug/bundle/testing" to "$ORIGIN/lib"
[        ] -- Installing: /home/abitofevrything/Programming/testing/flutter/build/linux/x64/debug/bundle/data/icudtl.dat
[   +2 ms] -- Installing: /home/abitofevrything/Programming/testing/flutter/build/linux/x64/debug/bundle/lib/libflutter_linux_gtk.so
[ +161 ms] -- Installing: /home/abitofevrything/Programming/testing/flutter/build/linux/x64/debug/bundle/data/flutter_assets
[        ] -- Installing: /home/abitofevrything/Programming/testing/flutter/build/linux/x64/debug/bundle/data/flutter_assets/NOTICES.Z
[        ] -- Installing: /home/abitofevrything/Programming/testing/flutter/build/linux/x64/debug/bundle/data/flutter_assets/AssetManifest.json
[        ] -- Installing: /home/abitofevrything/Programming/testing/flutter/build/linux/x64/debug/bundle/data/flutter_assets/kernel_blob.bin
[  +37 ms] -- Installing: /home/abitofevrything/Programming/testing/flutter/build/linux/x64/debug/bundle/data/flutter_assets/packages
[        ] -- Installing: /home/abitofevrything/Programming/testing/flutter/build/linux/x64/debug/bundle/data/flutter_assets/packages/cupertino_icons
[        ] -- Installing: /home/abitofevrything/Programming/testing/flutter/build/linux/x64/debug/bundle/data/flutter_assets/packages/cupertino_icons/assets
[        ] -- Installing: /home/abitofevrything/Programming/testing/flutter/build/linux/x64/debug/bundle/data/flutter_assets/packages/cupertino_icons/assets/CupertinoIcons.ttf
[        ] -- Installing: /home/abitofevrything/Programming/testing/flutter/build/linux/x64/debug/bundle/data/flutter_assets/version.json
[        ] -- Installing: /home/abitofevrything/Programming/testing/flutter/build/linux/x64/debug/bundle/data/flutter_assets/fonts
[        ] -- Installing: /home/abitofevrything/Programming/testing/flutter/build/linux/x64/debug/bundle/data/flutter_assets/fonts/MaterialIcons-Regular.otf
[   +7 ms] -- Installing: /home/abitofevrything/Programming/testing/flutter/build/linux/x64/debug/bundle/data/flutter_assets/FontManifest.json
[  +42 ms] Building Linux application... (completed in 7.9s)
[ +883 ms] Observatory URL on device: http://<IP_ADDRESS>:39003/jYjzdJiCPQA=/
[  +31 ms] Caching compiled dill
[  +41 ms] Connecting to service protocol: http://<IP_ADDRESS>:39003/jYjzdJiCPQA=/
[ +628 ms] Launching a Dart Developer Service (DDS) instance at http://<IP_ADDRESS>:0, connecting to VM service at http://<IP_ADDRESS>:39003/jYjzdJiCPQA=/.
[ +302 ms] DDS is listening at http://<IP_ADDRESS>:41691/WITscHfHc_4=/.
[ +198 ms] Successfully connected to service protocol: http://<IP_ADDRESS>:39003/jYjzdJiCPQA=/
[+1706 ms] ** (testing:11174): WARNING **: 13:33:44.214: Unable to retrieve framework response: Message is not valid JSON
[        ] ** (testing:11174): WARNING **: 13:33:44.214: Unable to retrieve framework response: Message is not valid JSON
[        ] ** (testing:11174): WARNING **: 13:33:44.214: Unable to retrieve framework response: Message is not valid JSON
[  +21 ms] flutter: b
[  +59 ms] DevFS: Creating new filesystem on the device (null)
[  +63 ms] DevFS: Created new filesystem on the device (file:///tmp/flutterPEIZXW/flutter/)
[  +13 ms] Updating assets
[ +595 ms] Syncing files to device Linux...
[   +3 ms] <- reset
[        ] Compiling dart to kernel with 0 updated files
[        ] Processing bundle.
[   +3 ms] <- recompile package:testing/main.dart 984da9f0-378b-4bb2-975a-a6ae66ee4f51
[        ] <- 984da9f0-378b-4bb2-975a-a6ae66ee4f51
[   +4 ms] Bundle processing done.
[  +91 ms] Updating files.
[        ] DevFS: Sync finished
[  +10 ms] Syncing files to device Linux... (completed in 105ms)
[   +1 ms] Synced 0.0MB.
[   +7 ms] <- accept
[  +14 ms] Connected to _flutterView/0x56386772ea10.
[  +11 ms] Flutter run key commands.
[   +4 ms] r Hot reload. 🔥🔥🔥
[   +3 ms] R Hot restart.
[        ] h List all available interactive commands.
[        ] d Detach (terminate "flutter run" but leave application running).
[        ] c Clear the screen
[        ] q Quit (terminate the application on the device).
[        ] 💪 Running with sound null safety 💪
[   +2 ms] An Observatory debugger and profiler on Linux is available at: http://<IP_ADDRESS>:41691/WITscHfHc_4=/

flutter analyze
Analyzing flutter...

   info • Avoid `print` calls in production code • lib/a.dart:1:15 • avoid_print
   info • Avoid `print` calls in production code • lib/b.dart:1:15 • avoid_print

2 issues found. (ran in 2.6s)

flutter doctor -v
[✓] Flutter (Channel stable, 3.0.1, on Artix Linux 5.18.2-artix1-1, locale en_GB.UTF-8)
    • Flutter version 3.0.1 at /opt/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision fb57da5f94 (4 weeks ago), 2022-05-19 15:50:29 -0700
    • Engine revision caaafc5604
    • Dart version 2.17.1
    • DevTools version 2.12.2

[✓] Android toolchain - develop for Android devices (Android SDK version 32.1.0-rc1)
    • Android SDK at /home/abitofevrything/Android/Sdk
    • Platform android-32, build-tools 32.1.0-rc1
    • Java binary at: /opt/android-studio/jre/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.12+0-b1504.28-7817840)
    • All Android licenses accepted.

[✓] Chrome - develop for the web
    • CHROME_EXECUTABLE = chromium

[✓] Linux toolchain - develop for Linux desktop
    • clang version 13.0.1
    • cmake version 3.23.2
    • ninja version 1.11.0
    • pkg-config version 1.8.0

[✓] Android Studio (version 2021.2)
    • Android Studio at /opt/android-studio
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.12+0-b1504.28-7817840)

[✓] Connected device (2 available)
    • Linux (desktop) • linux  • linux-x64      • Artix Linux 5.18.2-artix1-1
    • Chrome (web)    • chrome • web-javascript • Chromium 102.0.5005.115 Arch Linux

[✓] HTTP Host Availability
    • All required HTTP hosts are available

• No issues found!

Hi @abitofevrything, Thanks for filing the issue. This issue seems related to the dart language and must be filed in the dedicated repo for language https://github.com/dart-lang/language, Please file it there.
Closing as this is not a bug or feature request in the flutter framework


Styling

The rubocop PR (#25) took care of the bulk of the styling issues with the code.
Here are some additional improvements.

👍


Add github action to build docs and break a link to test a build failure

There's already an action to build docs


reactjs.org homepage examples are outdated

The examples are located here:
https://github.com/reactjs/reactjs.org/tree/master/content/home/examples
We can see that they received little to no change since their creation, more than 3 years ago.
There are two problems:

The examples don't use hooks
The examples use classes

More generally, reactjs.org introduction largely ignores hooks, while using classes throughout. As a result, hooks are largely ignored by newcomers.
Suggestion: the Clock example and the Markdown Editor examples should come in two alternative versions: one using Class, one using function components and useState() and useEffect() hooks.

I'm already working on this, will have a PR today

https://github.com/reactjs/reactjs.org/issues/2874#issuecomment-607930242


RFC: Syntax for @example tag

RFC: Core set of tags for TSDoc brought up the question of the @example tag that could be used to identify examples.  I'm forking it into a separate issue since @c69 pointed out that the design is unclear.
Can anyone find samples of its usage in existing documentation systems?
Since TSDoc will support Markdown, how would it interact with that?  Maybe something like this?
/**
 * Adds two numbers together.
 * @example
 * Here's a simple example:
 * ```
 * // Prints "2":
 * console.log(add(1,1));
 * ```
 * @example
 * Here's an example with negative numbers:
 * ```
 * // Prints "0":
 * console.log(add(1,-1));
 * ```
 */
export function add(x: number, y: number): number {
}

How would an API reference web site leverage these directives?
@aciccarello

@aciccarello

In the case of DocFX, we definitely want to move away from inlined samples and into includes (see: file inclusion). As such, I like the proposal of having the tag be Markdown-ready.

I always thought @example is always followed by a sample code, or at least a link to an example file.
As there will be some kind of {@include}, as far as I know, I would suggest using that in conjunction with markdown, as in the first comment:
/**
 * Adds two numbers together.
 * @example
 * Here's a simple example:
 * {@include example1.ts}
 * @example
 * Here's an example with negative numbers:
 * {@include example2.ts}
 */
export function add(x: number, y: number): number {
}

This way, it's easy to include several code snippets within the same example and reuse example codes at several places.

@pgonzal I'm not sure I understand your question but the code you have looks good to me. My main question is where should the example tag block end? Would it be on an empty line or the next block annotation?

@aciccarello I guess your question will be answered here: https://github.com/Microsoft/tsdoc/issues/12

@example could be spec'ed in such a way that it can be used for tests.
/* @example
/* > plusOne(3)
/* 4

One could create a tool that executes plusOne(3) and fails if the result is not 4.
I haven't given much thought to the different scenarios and why this might or might not make sense in the context of JS/TS. Maybe we need a new tag.
/* @example addOne(3)
/* @expect 4

Sorry for the brainstorming.

@killiancs That seems to me like something that should stay in the example code and not be handled by the documentation tool. Interesting idea though.
/**
 * @example
 * Adding one adds one
 * ```typescript
 * import plusOne from 'plus-one';
 * import expect from 'test-lib';
 *
 * const actual = plusOne(3);
 * expect(actual).toEqual(4);
 * ```
 */
export function plusOne(input: number) {
  return input + 1;
}

@pgonzal I can have for Angular documentation tool https://github.com/compodoc/compodoc this kind of @example usage which use TypeScript decorator.
`
@example

Usage example

@Component({selector: 'something'}) export class AppComponent {};

`

Recently I've been starting to question the need for a dedicated @example tag. It seems like ## Example (a Markdown header) may be able to do the job just as well without defining a new tag.

I suppose depends on your documentation template.  Right now API Extractor renders @example blocks basically as headers like you suggest, with a bit of extra logic to autonumber the examples if there are more than one of them.  But you could imagine a more elaborate system that indexes the examples, or shows special icons next to example sections, etc.
@dend Does DocFX treat example sections differently from other sections?

Right now API Extractor renders @example blocks

@pgonzal did this work or release in last npm version deployed ?
I just made a test with your playground this morning with my-use case and cannot see informations in the AST generated.

I prefer the markdown tactic as an example might not necessarily be all TypeScript. I do think it would be helpful to support a name/title for examples. Maybe in @example Name - ... format, or take the text on the same line as the tag to be the name. This would help in documentation generation - for example, one could have a documentation page with examples hidden under an accordion, and use the title text as the name of each accordion item.
Example:
/**
 * Parses a JSON file.
 * @param path - Full path to the file.
 * @returns An object containing the JSON data.
 * @example Parsing a basic JSON file
 * ##Contents of `file.json`:
 * ```json
 * {
 *   exampleItem: "text"
 * }
 * ```
 *
 * ##Usage:
 * ```ts
 * const result = parseFile("file.json");
 * ```
 *
 * ##Result:
 * ```ts
 * {
 *   exampleItem: "text",
 * }
 */

That's a good suggestion.  Currently API Documenter simply generates names like Example 1, Example 2, etc.  Not as informative as it could be.

Maybe in @example Name - ... format, or take the text on the same line as the tag to be the name.

There's already some precedent, where the @throws tag has a convention that the exception name can be specified using text on the same line as the tag.
   /**
    * Retrieves metadata about a book from the catalog.
    *
    * @param isbnCode - the ISBN number for the book
    * @returns the retrieved book object
    *
    * @throws {@link IsbnSyntaxError}
    * This exception is thrown if the input is not a valid ISBN number.
    *
    * @throws {@link book-lib#BookNotFoundError}
    * Thrown if the ISBN number is valid, but no such book exists in the catalog.
    *
    * @public
    */
    function fetchBookByIsbn(isbnCode: string): Book;

So maybe a similar convention could be used for @example as in your sample.  (BTW markdown headers should probably start with #, to avoid making assumptions about the documenter's heading structure.)
So it could be like this:
/**
 * Parses a JSON file.
 *
 * @param path - Full path to the file.
 * @returns An object containing the JSON data.
 *
 * @example Parsing a basic JSON file
 *
 * # Contents of `file.json`
 * ```json
 * {
 *   "exampleItem": "text"
 * }
 * ```
 *
 * # Usage
 * ```ts
 * const result = parseFile("file.json");
 * ```
 *
 * # Result
 * ```ts
 * {
 *   exampleItem: 'text',
 * }
 * ```
 */

...and might get rendered like this:

Example: Parsing a basic JSON file
Contents of file.json
{
  "exampleItem": "text"
}

Usage
const result = parseFile("file.json");

Result
{
  exampleItem: 'text',
}

The docs mention that inline text should be parsed as headings, but both the api and the playground treat them as normal paragraphs.  Is this intentional or just un-implemented?

Adding example title's also breaks whitespace rendering in VSCode which is a pretty big problem.
I've been able to roll my own type extractor to compensate for the lack of support here (although I would have preferred to be able to just use tsdoc / api-extractor), but alas, I can't roll my own VSCode (nor can https://github.com/TypeStrong/typedoc/issues/2440) 😅
Does VSCode use tsdoc for the tooltips?  Or should I open an issue on that repo too? If there's anything I can to do help inspire some movement here, please let me know!

Does VSCode use tsdoc for the tooltips? Or should I open an issue on that repo too? If there's anything I can to do help inspire some movement here, please let me know!

No, how I understand it, VS Code implements a proprietary analysis that isn't based on any spec. It's just a best attempt to render the kinds of /** */ comments most commonly encountered in real world code bases.
We could try to improve that. However because TSDoc's goal is to provide a rigorous and unambiguous syntax, a better approach would be to create a VS Code extension specifically for TSDoc. Then we could perfectly parse TSDoc syntax and provide much better rendering.
If someone's interested in contributing to a project like that, let us know. 🙏 In the past this sort of effort was blocked because we were missing the CI infrastructure for publishing extensions to the VS Code marketplace, but Microsoft solved that recently for us as part of setting up the VS Code extension for Rush (another Rush Stack project).