feat: Apkam onboarding changes

- What I did

apkam changes for at_onboarding_cli
- How I did it

Introduced enroll method in AtOnboardingService. Clients/apps can used this method to place an enrollment request

Added enrollmentId as an optional param to authenticate method. After enrollment, clients must pass enrollmentId for apkam auth

onboarding changes.

onboard method will thrown an exception if appName or deviceName is not set in OnboardingPreference. Both the params are required for enrolling the app on server

enroll method impl

generate new apkam key pair and apkam symmetric key
retrieve encryption private key from server and use it to encrypt  apkam symmetric key
send enroll request to server with appName, deviceName,otp, encrypted apkam symmetric key and apkam public key from apkam key pair
asynchronously attempt apkam to server until enrollment is approved or denied
once apkam auth is success then add enrollmentId to _pkamSuccessController. This wil trigger the method _listenToPkamSuccessStream which will save the security keys to .atKeys file

_activateAtsign changes

encrypt default encryption key and self encryption key with first client's apkam symmetric key.
send enroll request to server which gets auto approved
if enroll request is approved, attempt pkam with enrollmentId. if pkam is success then update encryption public key to server, delete cram secret, generate keys file, persist keys to local secondary

- How to verify it

run the functional tests in at_onboarding_cli

@cconstab @gkc Purnima has tested the onboarding_cli changes with at_talk and sshnp. With existing atKeys file and also new atKeys file that get generated as a part of new APKAM onboarding flow.
Once review comments in this PR are addressed, need someone else also to test sshnp before we merge the changes and publish at_onboarding_cli

@cconstab @gkc Purnima has tested the onboarding_cli changes with at_talk and sshnp. With existing atKeys file and also new atKeys file that get generated as a part of new APKAM onboarding flow.

Great!

New clients onboarding using onboarding_cli have to specify appName and deviceName for apkam using onboarding preference. Without these params, onboarding will not continue. Is this behavior fine?

It's fine, but of course it's a breaking change, so will need to be a new major version of at_onboarding_cli package... is there a way of making it optional - i.e. it's required only for APKAM enrollments?

Once review comments in this PR are addressed, need someone else also to test sshnp before we merge the changes and publish at_onboarding_cli

I will be happy to do that

@cconstab @gkc Purnima has tested the onboarding_cli changes with at_talk and sshnp. With existing atKeys file and also new atKeys file that get generated as a part of new APKAM onboarding flow.

Great!

New clients onboarding using onboarding_cli have to specify appName and deviceName for apkam using onboarding preference. Without these params, onboarding will not continue. Is this behavior fine?

It's fine, but of course it's a breaking change, so will need to be a new major version of at_onboarding_cli package... is there a way of making it optional - i.e. it's required only for APKAM enrollments?

Once review comments in this PR are addressed, need someone else also to test sshnp before we merge the changes and publish at_onboarding_cli

I will be happy to do that

@gkc i have completed the backwards compatibility changes

@murali-shris Looks good, although the example/apkam_authenticate.dart is confusing to me as it implies that I need to supply the enrollmentId as well as the atKeys file - but isn't the enrollmentId stored in the atKeys file?
I'd like to test this myself

step 1: Enrollment:  let's say I want to do an enrollment of a second app for an atSign I've already onboarded - would I use something like the example/apkam_enroll.dart?
step 2: Authentication: Let's say I want to run at_talk and use the atKeys file I generated in step 1 : do I need to make any code changes to at_talk?

@murali-shris Looks good, although the example/apkam_authenticate.dart is confusing to me as it implies that I need to supply the enrollmentId as well as the atKeys file - but isn't the enrollmentId stored in the atKeys file?
I'd like to test this myself

step 1: Enrollment:  let's say I want to do an enrollment of a second app for an atSign I've already onboarded - would I use something like the example/apkam_enroll.dart?
step 2: Authentication: Let's say I want to run at_talk and use the atKeys file I generated in step 1 : do I need to make any code changes to at_talk?

I have to make a minor change in at_onboarding_service_impl.dart. If enrollmentId is not passed to authenticate method from the client, then the enrollmentId has to be read from the atKeysFile.
Once I make this changes, no changes will be required to run at_talk with new atKeysFile.

@murali-shris Looks good, although the example/apkam_authenticate.dart is confusing to me as it implies that I need to supply the enrollmentId as well as the atKeys file - but isn't the enrollmentId stored in the atKeys file?
I'd like to test this myself

step 1: Enrollment:  let's say I want to do an enrollment of a second app for an atSign I've already onboarded - would I use something like the example/apkam_enroll.dart?
step 2: Authentication: Let's say I want to run at_talk and use the atKeys file I generated in step 1 : do I need to make any code changes to at_talk?

Step 1: Yes
I have to make a minor change in at_onboarding_service_impl.dart. If enrollmentId is not passed to authenticate method from the client, then the enrollmentId has to be read from the atKeysFile.
Once I make these changes, no changes will be required to run at_talk with new atKeysFile.

Have you made those changes, @murali-shris ? And are the examples (apkam_authenticate and apkam_enroll) up to date ?

@murali-shris Have you made the changes mentioned in this comment?

yes Gary.
I have to replace duplicate code with call to at_auth package which I am currently implementing.

raised a new PR with squashed commits
https://github.com/atsign-foundation/at_libraries/pull/441


[MM-39547] Introduce App Bar and move channel header icons to the App Bar

Summary
This PR adds the App Bar to the rightmost part of the screen, to the right of the RHS.
The strategy of the placement within the react tree/DOM is not ideal. It needs to be reconsidered before being merged.
There are three types of components that can be registered in the App Bar:

App channel header components - Contains an icon URL to fetch the icon data. Just use and style an img tag.
Plugin channel header components have a marketplace icon - Contains an icon URL to fetch the icon data. Just use and style an img tag.
Plugin channel header components that do not have a marketplace icon - Each of these components are arbitrary React components registered by the plugins. We have no rules as to what this component can be (it could stretch the whole width of the top bar for instance), therefore these components could render in an unexpected manner depending on the styling applied.

Components used to render channel header plugin react components for desktop have been removed from the repo. Mobile channel header is still used, since the App Bar is not supposed to be shown on mobile web.

[x] The App Bar is currently not able to be disabled. 1/5 there should be a configurable experimental setting for this. - https://github.com/mattermost/mattermost-server/pull/18967
[ ] The App Bar is currently not able to be folded in, so it is always visible
[ ] We should hide the app bar if there are no channel header components
[ ] More tests need to be added to test app bindings

Ticket Link
Fixes https://mattermost.atlassian.net/browse/MM-39547
Fixes https://mattermost.atlassian.net/browse/MM-39548
Related Pull Requests
https://github.com/mattermost/mattermost-server/pull/18884
https://github.com/mattermost/mattermost-server/pull/18967
Screenshots

Before

After

Release Note
Channel header icons registered by plugins and apps and are now shown in App Bar on the right hand side of the screen. The marketplace icon for a plugin is used if it is available, otherwise the registered channel header component is used instead.

@mickmister Sounds good to me. As far as I understand this changes is only (mostly?) for webapp plugin and hence it's fine to use the channel header icons instead of the Marketplace one.

@hanzei Right, maybe we only support the branded icons (like the ones from the marketplace) to Apps that register their icon in the App Bar through bindings. Any plugin icons carried over from the channel header would just display their registered channel header component.

FWIW We could use the App icon, if we want. That is part of the manifest anyway.

@matthewbirtch This code is now deployed on the cloud test server above. The code currently fetches the icons from the plugin marketplace to display as icons in the App Bar. There is currently a bug in PR, where if you navigate to the plugin marketplace and exit, the icons used in the App Bar use the regular fallback channel header icons. I know what's causing this, but at the moment this bug makes it easy to compare the different versions in case you want to gauge the pros and cons of both strategies (marketplace icon vs fallback channel header component).
You'll notice Focalboard's icon is the Mattermost logo. I've made a ticket for this https://github.com/mattermost/focalboard/issues/1749
There's also a bug you'll see with the illustration in the center channel being cut off when the Playbooks RHS opens. This was probably introduced in this PR.

@matthewbirtch This code is now deployed on the cloud test server above. The code currently fetches the icons from the plugin marketplace to display as icons in the App Bar. There is currently a bug in PR, where if you navigate to the plugin marketplace and exit, the icons used in the App Bar use the regular fallback channel header icons. I know what's causing this, but at the moment this bug makes it easy to compare the different versions in case you want to gauge the pros and cons of both strategies (marketplace icon vs fallback channel header component).
You'll notice Focalboard's icon is the Mattermost logo. I've made a ticket for this mattermost/focalboard#1749
There's also a bug you'll see with the illustration in the center channel being cut off when the Playbooks RHS opens. This was probably introduced in this PR.

This is great @mickmister. I think we'll be fine with this strategy of using the marketplace logo - especially once the Boards icon gets updated. Do you need an image for this? Also, for consistency we will want to make sure all marketplace logos have backgrounds rather than transparencies (like the current Boards logo does).
I know we have further UI refinement to do, but a few things I suggest we can do right away to make this a bit more presentable in the interim:
.app-bar {
    padding-top: 16px;
}
.app-bar .app-bar-icon img {
    border-radius: 50%;
    width: 24px;
    height: 24px;
}

.app-bar .app-bar-icon {
    margin-bottom: 16px;
    cursor: pointer;
    position: relative;
}

.app-bar .active-rhs-plugin img {
    outline: solid 2px var(--sidebar-text-active-border);
}

.app-bar-icon.active-rhs-plugin::before {
    width: 3px;
    height: 24px;
    background-color: var(--sidebar-text-active-border);
    content: '';
    position: absolute;
    left: 0px;
    top: 0;
    border-radius: 0 2px 2px 0;
}

With the above, you should be able to remove this rule
.app-bar .active-rhs-plugin {
    border-left: 3px solid var(--button-bg) !important;
}

@michelengelen I've addressed implemented most of your requests, and left some questions on the remaining items.
@matthewbirtch I applied your css suggestions to the PR. I had to modify some of the rules you provided to get the intended behavior for the App icons, but I don't think the current state is ideal. In order for you to test with App icons I'll need to get this on a /cloud plugin server.
@deanwhillier The feature flag to toggle the App Bar is implemented in this PR now. Please take a look at the PR when you have the chance.

thanks @mickmister. It looks like the app bar is now 60px wide instead of 48px (as per design) and the app icons are not centered within the bar.

@mickmister now that we're getting a bit closer, I wanted to call out a couple more things for the interactive states of the icons:

Hover state on app icons, needs outline: solid 2px rgba(var(--center-channel-color-rgb),.16);
Active state on the icon circle itself needs outline: solid 2px var(--sidebar-text-active-border);

@mickmister I updated the app bar css file with changes and I think it's in a decent place now. Have a look.
One thing I didn't know how to do:

can we position the tooltips differently so they appear to the left of the icons rather than under?
can we change the content in the tooltip so it's descriptive of the action it will take? e.g. instead of 'Zoom', can it be 'Start zoom meeting' or something like that? (for now until we move all actions to the RHS)

Can we position the tooltips differently so they appear to the left of the icons rather than under?

Yes I'll make this change

can we change the content in the tooltip so it's descriptive of the action it will take? e.g. instead of 'Zoom', can it be 'Start zoom meeting' or something like that? (for now until we move all actions to the RHS)

Unfortunately this is up to the plugin itself to provide this in its channel header icon component. Notice the Todo plugin says "Open your list of Todo issues". This is because the Todo plugin provides this value for use. The Zoom plugin however does not provide this text.

@matthewbirtch Please see my comment above, I had forgotten to mention you

Unfortunately this is up to the plugin itself to provide this in its channel header icon component. Notice the Todo plugin says "Open your list of Todo issues". This is because the Todo plugin provides this value for use. The Zoom plugin however does not provide this text.

Ok, I figured as much. So can we update the Zoom plugin with this change?

Testing for this is ongoing. But, I had a high-level UX concern about the icons being used for sidebar now that the there are icons that replace the previous channel header elements.

An icon is needed for boards (I believe there is a separate issue open for this)
The Jitsi icon with logo is quite complex to be displayed this small. It is not very readable.
The playbook icon looks a bit small and inconsistent with the rest of the set given how much whitespace is in the icon

0/5 @matthewbirtch may have some thoughts on if any changes are recommended here. I can create issues for these (or other) icon tweaks if needed.

Definitely hoping we can update all the icons you've identified here @DHaussermann. I just don't know the process involved in making that happen.

An icon is needed for boards (I believe there is a separate issue open for this)
Yep, we have an updated icon ready to go for this, but I don't know where it needs to be uploaded to

The Jitsi icon with logo is quite complex to be displayed this small. It is not very readable.
I can supply an updated logo for this, but don't know where that needs to be uploaded to

The playbook icon looks a bit small and inconsistent with the rest of the set given how much whitespace is in the icon
I can supply an updated logo for this, but don't know where that needs to be uploaded to

For the first phase of this feature, we are using the channel header components registered by the plugins, rather than sourcing icons from the marketplace. See https://github.com/mattermost/mattermost-server/pull/18884#issuecomment-980409448 for the reasons for this.
@deanwhillier I've marked the PR as "ready for review"
@DHaussermann This is ready for further testing
Note that the PR originally had the components as connected components that accept props. The components are now function components that have dependencies on the redux store. I'm in the process of converting the prop-based tests to redux-based tests.

Current view of App Bar with the channel header components

@mickmister is the zoom icon treated differently than the rest? Or is it getting the same styles as the rest? As already identified, it's being scaled much differently than the rest, but I assume it's just the way the icon for this plugin was created as it looks smaller in the channel header as well. Any way this can be isolated or would we have to update the plugin to fix this?

@mickmister is the zoom icon treated differently than the rest? Or is it getting the same styles as the rest? As already identified, it's being scaled much differently than the rest, but I assume it's just the way the icon for this plugin was created as it looks smaller in the channel header as well Any way this can be isolated or would we have to update the plugin to fix this?

@matthewbirtch I think the Zoom plugin just happens to make its icon a bit smaller than the other plugins. Maybe it can be made bigger via css? Otherwise we'll need to update the plugin to make the icon bigger.

Another comment regarding the UX @matthewbirtch . If I remember correctly, some time ago, the buttons on the channel header had a circle around to delimit them. Then we removed that circle (going for a more minimalist interface, I guess). Now we get back the circles around the icons (not exactly the same, but still... circles around the items).
I understand that trends come and go, so I have no stopping concern here, but it would be great to give it another thought.

Pinging @justinegeffen here too, since a change like this will require many screenshots to be updated all around the documentation (and potentially, marketing material).

@matthewbirtch I think the Zoom plugin just happens to make its icon a bit smaller than the other plugins. Maybe it can be made bigger via css? Otherwise we'll need to update the plugin to make the icon bigger.

Can we target a specific plugin's icon though? I assumed that any changes we make would affect all the icons. If we can target just the zoom plugin, I'm all for it

Another comment regarding the UX @matthewbirtch . If I remember correctly, some time ago, the buttons on the channel header had a circle around to delimit them. Then we removed that circle (going for a more minimalist interface, I guess). Now we get back the circles around the icons (not exactly the same, but still... circles around the items).
I understand that trends come and go, so I have no stopping concern here, but it would be great to give it another thought.

@larkox we're kind of past the point of changing that now. And I think this is the path we're moving forward for apps. Don't worry, we'll get it in a good place from a UI standpoint

Can we target a specific plugin's icon though? I assumed that any changes we make would affect all the icons. If we can target just the zoom plugin, I'm all for just updating via css

@matthewbirtch Yes it looks like we have some zoom-specific css classes we can work with here:

@matthewbirtch Yes it looks like we have some zoom-specific css classes we can work with here:

@mickmister I've added a CSS rule to target the size of the zoom plugin icon now.

@mickmister Can this be merged yet? I see some checks are failing.
Heads-up @amyblais This feature is needed for 6.3 and would need a cherry-pick if the release branch has already been cut.

Carlos is aiming to cut 6.3 release branch on Monday.

/update-branch

Cherry pick is scheduled.

@mickmister Needs a manual cherry-pick to release-6.3.

@mickmister In case you missed my previous note - this needs a manual cherry-pick to release-6.3.

/cherry-pick release-6.3

Cherry pick is scheduled.

Error trying doing the automated Cherry picking. Please do this manually
+++ Updating remotes...
Fetching upstream
Failed to add the RSA host key for IP address '<IP_ADDRESS>' to the list of known hosts (/app/.ssh/known_hosts).
From github.com:mattermost/mattermost-webapp
   dabd85dda..855efc636  MM-40746-buttons-has-different-padding-small-screens -> upstream/MM-40746-buttons-has-different-padding-small-screens
Fetching origin
Failed to add the RSA host key for IP address '<IP_ADDRESS>' to the list of known hosts (/app/.ssh/known_hosts).
+++ Updating remotes done...
+++ Creating local branch automated-cherry-pick-of-mattermost-webapp-#9273-upstream-release-6.3-1640212426
Switched to a new branch 'automated-cherry-pick-of-mattermost-webapp-#9273-upstream-release-6.3-1640212426'
Branch 'automated-cherry-pick-of-mattermost-webapp-#9273-upstream-release-6.3-1640212426' set up to track remote branch 'release-6.3' from 'upstream'.

+++ About to attempt cherry pick of PR #9273 with merge commit 0c9f93381643a8a6f091b60064d9b10803ff8b11.

error: could not apply 0c9f93381... [MM-39547] Introduce App Bar (#9273)
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'

+++ Conflicts detected:

UU reducers/plugins/index.js
Aborting.

+++ Aborting in-progress git cherry-pick.

+++ Returning you to the master branch and cleaning up.

Thank you @amyblais, the cherry pick is done


[SYSTEMML-771] Fix warnings in CsplineCG.dml and CsplineDS.dml

Fixed 'print statement can only print scalars' warnings by replacing 1x1 wrapper matrix with actual scalar variable for algorithm and corresponding dml and pydml test scripts.

Note chose not to use new toString or as.scalar since the matrix simply wrapped a single scalar value.  Another option was to delete the print which was invalid for matrix if executed.

LGTM. Thank you @gweidner for fixing the warnings in the main algorithms. This is a big win for new users since we don't want to scare them away with unnecessary warnings.
By any chance, if you are running through the algorithms and testing them, would you mind saving (1) the data generation invocation, and (2) the algorithm invocation (such as $ ./runStandaloneSystemML.sh scripts/algorithms/Univar-Stats.dml -nvargs X=data/haberman.data TYPES=data/types.csv STATS=data/univarOut.mtx)? I would really like our documentation to include examples that a user can copy/paste from the documentation and run ALL our algorithms without having to do any additional work.

Thank you for the review and suggestion!  That's good idea so I'll capture that information and also compare with Algorithms Reference.  For these 2 main algorithms, I ran from unit test cases since the test scripts were identical to scripts/algorithms.

The Algorithms Reference is quite verbose. My hope is to create a small single-paragraph summary of each main algorithm and have an accompanying invocation line that can be copy/pasted and it will run the algorithm with absolutely no tweaking required by the user.

That's even better and would definitely be helpful to end users.  I'll take that approach and provide information as it will be good exercise for me to get familiar with other algorithms too :)


Document public API

Added documentation where it was missing.
Updated documentation to use yard formatting throughout.
Marked internals as private (SchemaDumper, CommandRecorder, etc)

I did opt to document Adapters::Postgres and View. They are not
objects we expect end users to interact with, but the documentation will
be useful for anyone who wants to create an adapter.
Those objects are tagged with @api extension so we could filter them
from the default documentation with and update to the .yardopts file
if needed.

This is done on top of #89 and should be merged after.

Is there anywhere I can see the generated docs?

:book:


Is it possible to provide png versions of the browser icons rather than the whitish background gif images?

Hi
The browser little icon on the left-hand side usually have a white background. This is really easy to notice if one changes the background the entire div. Is it possible to provide transparent png images for those?

This is included now. Thank you.


Unable to watch for file changes in this large workspace

I get this every time I start vscode, despite the workspace being very small.
With IntelliJ IDEA I had to install this to get rid of a similar issue: https://github.com/vddvss/fsnotifier-ppc64le
I don't know if it's somehow related.
@vddvss

Hmm, this could be an issue with the inotify watches limit. What's the output of sysctl fs.inotify.max_user_watches?

@darkbasic Issue is being documented here: https://code.visualstudio.com/docs/setup/linux#_visual-studio-code-is-unable-to-watch-for-file-changes-in-this-large-workspace-error-enospc
Not ppc64le specific.


Rewrite code to use async calls to the Spotify API + new features

Aside from converting all code to use async calls, I also added a command to mute/unmute the Spotify player, a command to display recently played tracks, and other unrelated improvements.
Closes: #4
Closes: #38

A tour de force! Thank you!


add github action for coverage, lint and vulnerability

Description

add github action for coverage, lint and vulnerability
fix lint problems

Type of change

[ ] Bug fix
[ ] New feature
[x] Refactoring (no functional changes, no api changes)
[x] Non-code changes (update documentation, pipeline, etc.)

Flags

[ ] Breaks backward compatibility
[ ] Requires a documentation update
[ ] Has untestable code

Checklist

[x] Followed the guidelines in the CONTRIBUTING document
[x] Added prefix [skip ci]/[ci skip]/[no ci]/[skip actions]/[actions skip] in the PR title if necessary
[x] Tested and linted the code
[x] Commented the code
[x] Made corresponding changes to the documentation
[ ] Passed all pipeline checking

Checklist for maintainer

[ ] Use Squash and merge
[ ] Double-confirm the merge message has prefix [skip ci]/[ci skip]/[no ci]/[skip actions]/[actions skip]
[ ] Delete the branch after merge

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@008243b). Click here to learn what that means.
The diff coverage is n/a.

:exclamation: Current head 179d17e differs from pull request most recent head dd095ce. Consider uploading reports for the commit dd095ce to get more accurate results

@@            Coverage Diff            @@
##             master      #14   +/-   ##
=========================================
  Coverage          ?   88.41%
=========================================
  Files             ?       17
  Lines             ?     1191
  Branches          ?        0
=========================================
  Hits              ?     1053
  Misses            ?      122
  Partials          ?       16

Flag
Coverage Δ

unittests
88.41% <0.00%> (?)

Flags with carried forward coverage won't be shown. Click here to find out more.
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


Fix #36 issues creation.

support server invite should be /TvqYBrGXEm

@paris-ci Please do the requested changes above.


Dependency issue to System.Memory with Microsoft.ApplicationInsights.Web

I've added Microsoft.ApplicationInsights.Web, Microsoft.ApplicationInsights.TraceListener and Microsoft.ApplicationInsights.Log4NetAppender to a .NET Framework 4.7.1 web project which is being hosted on Azure.
The issue I'm experincing is that this exception is being logged into the application insights log:
AI (Internal): [Microsoft-ApplicationInsights-Extensibility-DependencyCollector] Callback 'OnBeginSql' failed for id = '_'. Exception: System.IO.FileLoadException: Could not load file or assembly 'System.Memory, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
File name: 'System.Memory, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'
   at System.Diagnostics.Activity.TrySetTraceIdFromParent()
   at System.Diagnostics.Activity.GenerateW3CId()
   at System.Diagnostics.Activity.Start()
   at Microsoft.ApplicationInsights.DependencyCollector.Implementation.ClientServerDependencyTracker.BeginTracking(TelemetryClient telemetryClient) in E:\A\_work\21\s\WEB\Src\DependencyCollector\Shared\Implementation\ClientServerDependencyTracker.cs:line 44
   at Microsoft.ApplicationInsights.DependencyCollector.Implementation.FrameworkSqlProcessing.OnBeginExecuteCallback(Int64 id, String dataSource, String database, String commandText) in E:\A\_work\21\s\WEB\Src\DependencyCollector\Shared\Implementation\FrameworkSqlProcessing.cs:line 64

From what I can see Microsoft.ApplicationInsights.Web is dependant on package version 4.5.4 of System.Memory. This version makes use version <IP_ADDRESS> of the System.Memory dll.
However the exception is claiming that something internally is using System.Memory version <IP_ADDRESS>.
I tried adding
      <dependentAssembly>
        <assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
        <bindingRedirect oldVersion="<IP_ADDRESS>-<IP_ADDRESS>" newVersion="<IP_ADDRESS>" />
      </dependentAssembly>

into the web.config but this didn't solve the issue where the exception is being logged.

Please refer #1707

Closing as duplicate with same underlying issue.


Updated mul and mul2 descriptions to clarify the difference

As per @daredevildave 's suggestion in this thread (https://forum.playcanvas.com/t/ambigious-docs-on-mul-vs-mul2/3305/2), this is a proposed update to the API reference to clarify that mul multiplies a sigle vector in place, and mul2 multiples two given vectors.
This also makes the wording more consistent with add, add2, sub and sub2

Thanks Omar! :smile:


Remove the restriction of Bert Based models in TextClassification Task.

🚀 Feature
Remove the restriction of Bert Based models in TextClassification Task.
Motivation
For classification I would like to use flash but I want independence to differ from bert based models.
Pitch

I would like to propose that TextClassifier model, accepts "nn.Module" object for model argument rather than name of a bert based model. This will give the user the ability to create custom models which could have custom layers.
Another suggestion is instead of accepting again backbone name for tokenizer, let the user create the tokenizer from hugging face.
If the above are implemented essentially, we wont require transformers in requirements.txt, thus reducing additional dependency.

Note: This goes without saying, I would like to work on a PR if this issue is accepted. 😃

@Atharva-Phatak what you mention makes total sense. Before asking you to send a PR - I would suggest to check this active PR about adding a token_classification task and add some comments there. See: https://github.com/PyTorchLightning/lightning-flash/pull/275

@edgarriba Thank you very much I will go through the mentioned PR.


Group Angular updates in one PR

Instead of having a bunch of NPM updates provided by Dependabot, each one not building, group all Angular related updates, so we have one concise update for all Angular packages.
This way we do not have to do the frontend updates ourselves.
https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file#groups

only question: why is dockerimages commited as well?

Human error. I corrected it.


RFE: inline-sign .dsc files

It is typical for Debian/Ubuntu to sign all .dsc files. This ticket explores the possibility of having merfi handle this.
An example of an inline-signed .dsc file (the curl package for trusty): http://us.archive.ubuntu.com/ubuntu/pool/main/c/curl/curl_7.19.7-1ubuntu1.dsc
The problem is that this affects the reprepro metadata, because the .dsc file's overall checksum changes after it gets signed.
An example of a metadata file that contains a checksum of a .dsc file is http://us.archive.ubuntu.com/ubuntu/dists/trusty/main/source/Sources.bz2
The workflow would have to look something like this:

Inline-sign the .dsc file (conventionally Debian developers use debsign for this, but technically it could be done with gpg or rpm-sign)
Add the signed .dsc file using reprepro
Sign the repo's Release files (as merfi already does).

Alternatively, if we wanted to do the signing without interleaving reprepro, another workflow might be:

Add the unsigned .dsc file to the repo, using reprepro
Inline-sign the .dsc file
Re-write the sha sums for the newly-signed .dsc file within the Sources file(s)
Re-write the sha sums for the newly-altered Sources within the Release file
Sign the repo's Release file (as merfi already does).

This is more complex, more tightly coupled with the behavior of reprepro, and more prone to possible errors. On the other hand, the advantage is that reprepro can be run only once at the beginning, before anything has to be signed.
Maybe it would be easier to package and build reprepro for Red Hat rel-eng's platform (ie RHEL 6) than it would be to implement this "fiddle with the checksums" workflow in merfi.

TODO: check out https://github.com/mkouhei/pydebsign . It is a Python re-implementation of debsign, and it might suit our goals.

Any .changes files that reference .dsc files need to be rewritten as well. They typically contain checksums of the .dsc files.

Note: this blog post has more information about generating repo metadata. The dpkg-scansources utility (dpkg-dev RPM in EPEL 7) can generate the Sources file from .dsc files.


TAB key prints  instead of whitespace

VSCode Version: 1.30.1
OS Version: Windows 10 x64 1809

Steps to Reproduce:

Press tab key
Get output like <tab> printed on screen instead of 4 spaces

Does this issue occur when all extensions are disabled?: No

Can you attach a list of your installed extensions? You can get it by running code --list-extensions in a terminal.
If --disable-extensions fixes the problem, it should be one of your extensions caused it.

Have started experiencing the same issue yesterday.

@yume-chan
donjayamanne.githistory
ms-python.python
ms-vscode.cpptools
ms-vscode.Go
ms-vscode.PowerShell
vscodevim.vim
yzane.markdown-pdf
yzhang.markdown-all-in-one
zhuangtongfa.Material-theme

@OlegStotsky vim mode doesn't affect tab behavior for me
heres my keybindings for Tab key

@jm33-m0 Try removing the first and the third binding.

@OlegStotsky vim binding looks ok, it doesn't print <tab> on key press, the first binding i dont know what it does, but anyways, this setting doesnt prints <tab> anymore


Pen and Path tool improvements

All of this is explained/demonstrated in this detailed webcast: https://youtu.be/OmveqhzXJFg
Path tool
When dragging a handle:

Alt keeps the handles equidistant while pressed (instead of Shift in use now), and also creates a matching handle if the other is zero-length or not a cubic Bézier
Shift locks the handle angle to 15° increments

(shouldn't interfere with Shift-clicking-and-releasing-without-dragging to add/remove the handle to the selected points)

Ctrl locks the current angle of the handle
Tab swaps to dragging the opposite handle (native: teleports the cursor / web: enters pointer lock and draws a fake cursor at the new location)
Space shifts the anchor (and handles) while pressed
V toggles bent vs. colinear handles (instead of Alt in use now)

When dragging an anchor:

Alt Ctrl (updated since video was recorded) slides the anchor along its adjacent segment(s) while adjusting its handle(s) to best approximate the initial curvature
Alt (new since video was recorded) if held before the click-drag begins, converts the anchor's handles to smooth and drags the handle pair instead of the anchor using the "dragging a handle" mode above
Shift locks the drag to the nearer of the X or Y axes from its drag starting point (and should work whether or not the anchor is initially selected and whether or not the key is held before click-dragging)

(shouldn't interfere with Shift-clicking-and-releasing-without-dragging to add/remove the anchor to the selected points)

When a single handle is selected:

G already correctly grabs (translates) the point in space
R rotates about its anchor
S scales about its anchor

Pen tool
When placing a segment (pointer is up):

Backspace/Delete removes the current segment's handle (equivalent to clicking the current anchor)
G grabs (translates) the current segment's connected outgoing handle
R rotates the current segment's connected outgoing handle about its anchor
S scales the current segment's connected outgoing handle about its anchor

When dragging (pointer is down):

Alt stops keeping the handles equidistant while pressed, as long as they're currently colinear (otherwise it does nothing)

Exception: the reverse is the case (it keeps the handles equidistant while pressed) when the click-drag began with a single handle (either by click-dragging the current segment's connected anchor, click-dragging an endpoint of an existing not-yet-being-edited layer, or click-dragging the start point to close the shape) but Ctrl was pressed to keep

Ctrl locks the current angle of the handle (already implemented), but should also work to be colinear with the opposite handle if being dragged from an existing anchor point
Tab swaps to dragging the opposite handle (native: teleports the cursor / web: enters pointer lock and draws a fake cursor at the new location)
Space shifts the anchor (and handles) while pressed
V toggles bent vs. colinear handles (instead of the momentary Alt in use now)
If the current segment is closing the shape by connecting to its start point, the handle that's being dragged should be the closing handle, not a fake handle on the opposite side, and all the above shortcuts should work on that anchor/handle group spanning the start/end point (Tab will modify the shape of the first segment while the current/final segment is still in-progress)
All the above shortcuts should work with the "Bend Prev. Point" case where the current segment's connected anchor can be clicked to turn it sharp or click-dragged to bend its outgoing handle (turning its handles to not colinear), meaning V should be able to turn it back to colinear

Aight, I start with it. Wish me luck

Thank you for posting those here @dzaima!

Hey, I plan working on the remaining two things for the path tool. I will be traveling for the next few weeks so wont be able to start anytime soon. Although if anyone else wants to pick them up before im back feel free!

@DaraghD hello again, I hope your travels were fruitful! Just wanted to see if you're interested in returning to some of the bullet points in this issue. In particular, the Pen tool ones aren't being attempted by anybody yet so those would be free to work on anytime you'd like, perhaps if you have some time over the holidays. Cheers!

#2160 will add the following parts of the requested feature-

[x] Shift locks the handle angle to 15° increments

[x] (shouldn't interfere with Shift-clicking handles for multi-selecting points such as handles)

[x] Ctrl locks the current angle of the handle


onAfterUpload not throwing error in uploader.on('end')

Hi all,
I'm having an issue:
We are trying to perform checks in the settings.onAfterUpload callback (if I understood correctly it is only server side).
If one check fails we want to return an error, and catch it in the "end" event (client side).

If we throw an error in the settings.onAfterUpload callback, everything stops and the "end" event never triggers
If we return an error in the settings.onAfterUpload callback, the "end" event is triggered but no error is received. And we can't find a way to return an error here.

Is there a way to do this ? Is this a bug ?
<EMAIL_ADDRESS><EMAIL_ADDRESS>Thanks a lot for your help,
Guillaume

Hello @guillaumemach onAfterUpload is purely async and happens after upload fully recieved on the server. I'd suggest to look for other hooks in order to complete your goals, like onBeforeUpload which can get used on the client as well

Hello @dr-dimitru ,
Thanks for your reply. Which hook would you recommend to perform checks on the uplaoded file ?
Bests

@guillaumemach for fully uploaded file the only option is onAfterUpload, just don't expect events on the client, I'm suggesting to:

Add verified or similar option to meta
subscribe on uploaded file for  changes in meta.verified
Check file in onAfterUpload and update meta.verified
Perform action based on changes in meta.verified

@dr-dimitru ok thanks a lot.

Feel free to reopen it in case if the issue is still persists on your end.


State tracker

PTAL

Yes it does loosen some validation that seemed it shouldn't have been there in the first place.


Add forgotten check of sk_*_push result

Found by Linux Verification Center (linuxtesting.org) with SVACE.
Refer issue
CLA: regular

CI is relevant

This is unfortunately not acceptable with CLA: trivial. Could you please submit a regular CLA?

This PR has the label 'hold: cla required' and is stale: it has not been updated in 30 days. Note that this PR may be automatically closed in the future if no CLA is provided.  For CLA help see https://www.openssl.org/policies/cla.html

@JohnnySavages Have you been able to submit a CLA? https://openssl-library.org/policies/cla/index.html

This PR has the label 'hold: cla required' and is stale: it has not been updated in 30 days. Note that this PR may be automatically closed in the future if no CLA is provided.  For CLA help see https://www.openssl.org/policies/cla.html

This PR has the label 'hold: cla required' and is stale: it has not been updated in 61 days. Note that this PR may be automatically closed in the future if no CLA is provided.  For CLA help see https://www.openssl.org/policies/cla.html


Issues with the AXI implementation

I spent some time today getting the dot-product design working with AXI on real FPGAs. I just manually edited the verilog for now, but I'll document the issues I found so they can be fixed in the generator at some point. Here's the repo with the working design: https://github.com/andrewb1999/calyx-axi-ex.git
Actual Calyx issues (dot-product.sv)
It's a bad idea to initialize logic (especially resets) that are used as wires rather than registers. I just commented out the entire initial block in the verilog which prevented issues with std_regs not being reset properly (currently none of the logic defined in the main module is being used as a register so this is fine to do).
XML issues (kernel.xml)
The datawidth of the m axi ports need to be 512 because this is the width we actually use in hardware.
Wrapper (wrapper.v)
Starting from the top of wrapper.v here are all the bugs I found and changes I made.

I changed memories_sent to just a single bit reg that checks if all three memory sends are done. This matters because with the original implementation memories_set would be treated as a true boolean if any of the memory sends are done, causing the axi controllers to reset as soon as any of the sends are done (instead of all of them).
A0_addr0, B0_addr0, and v0_addr0 are the wrong bit width which causes Z signals to appear in simulation (and unpredictable behavior on real hardware). The correct thing to do here is define the wires as the correct bitwidth (4 for A0 and B0 and 1 for v0) and then append the appropriate number of zeros before passing into the Memory_controller.
Changed the line:

assign ap_done = counter > timeout || memories_sent == 3'b1;

to
assign ap_done = memories_sent;

Two things are going on here. First, I removed the timeout as this can trigger ap_done being asserted before the data is ready. This could potentially be added back after verifying the rest of the design, but it just produces confusing behavior where the kernel thinks it finished when it actually didn't. Second, because of the previous change to memories_sent, it is now a single bit register so we don't have to do any comparison before setting it equal to ap_done. The previous implementation was also wrong even before changing the memories_sent semantics because ap_done wasn't asserted when all memories were sent, but rather when only A0 was sent (if any other memory was finished sending before A0, it would never assert ap_done).
4. Actually assigned the Done signal properly in SINGLE_PORT_BRAM (it was unconnected before).
5. Added an ap_idle signal to the control s axi lite. This signal is stored in rdata[2] and initialized to 1, becomes 0 when ap_start is asserted, and becomes 1 when ap_done is asserted. This allows the design to work properly with PYNQ and other implementations that rely on the ap_idle signal.
6. Changed all lines in the memory controllers that look like:
assign ARADDR = BASE_ADDRESS + {{58{1'b0}}, copy_addr_offset} << 2;

or
assign AWADDR = BASE_ADDRESS + {{58{1'b0}}, send_addr_offset} << 2;

to
assign ARADDR = BASE_ADDRESS + ({{58{1'b0}}, copy_addr_offset} << 2);

or
assign AWADDR = BASE_ADDRESS + ({{58{1'b0}}, send_addr_offset} << 2);

The parenthesis are required because verilog does the addition before the left shift to it previously would give the wrong ARADDR or AWADDR if the BASE_ADDRESS was anything other than 0.
7. Changed all assigns to WDATA from:
assign WDATA = {{15{bram_read_data}}, bram_read_data};

to
assign WDATA = {{15{8'd0}}, bram_read_data};

This isn't strictly necessary but it prevents writing multiple copies of the output data to the buffer if some of the other signals are wrong.
8. Changed all assigns to WSTRB from:
assign WSTRB = {{15{4'hF}}, 4'hF};

to
assign WSTRB = {{15{4'h0}}, 4'hF};

WSTRB is an axi signal where each bit corresponds to a single byte of the full axi data width. We are using a 512 bit data width on our axi signals, so we have a 64 bit WSTRB value (512/8). We are only sending one uint32 per axi transfer so only the bottom 4 bytes are valid in the axi transfer (therefore we only want to set the bottom four bits of the WSTRB to 1).
9. In the v0 memory controller (Memory_controller_axi_2), I changed:
assign copy_done = copy_addr_offset == 32;

and
assign send_done = send_addr_offset == 32;

to
assign copy_done = copy_addr_offset == 1;

and
assign send_done = send_addr_offset == 1;

This is the most important change and the primary reason we saw no outputs before. Because of how the module increments the bram address and the buffer address, the previous version would write the correct data on the first axi transfer and then write 0 to the same buffer location 31 times (which would obviously overwrite the value). Since this buffer only contains a single uint32, we only want to write values once anyways. Obviously, there is more work that needs to be done here to ensure that this works for all potential buffer sizes.
We should really also change these values from 32 to 8 in the other two memory controllers, although because of how the buffers are allocated and the memory controllers work, it still works with these values set to 32.
Other comment:
At some point we should update the generator to use a minimal version of bursting over AXI. Essentially all this does is pack multiple elements into one 512 bit data width, which reduces the number of axi transfers required significantly with minimal effort. I have an example for read bursting in the opt branch of the calyx-axi-ex repo, but obviously if we get to this point I can help out more.

@nathanielnrn @sampsyo @rachitnigam I updated this issue with all the bugs I found and explanations. Let me know if you have any questions, I have a pretty good grasp on what's going on now so I should be able to help explain stuff.

Thank you for the incredible debugging work @andrewb1999!! This will be really useful in getting a push button FPGA flows for calyx stuff!

This is amazing! I'm implementing changes to code generation now.
Sorry if this question has an obvious answer, I looked around but couldn't find one. Thought it might save time asking here.
Where exactly does the kernel.xml interface with verilog code? In other words, would changes need to be made to any port widths in verilog with respect to

The datawidth of the m axi ports need to be 512 because this is the width we actually use in hardware.

@nathanielnrn The kernel.xml doesn't really "interface" with the verilog per-say, it is just a simpler description of the underlying verilog that XRT uses to know how to interact with the kernel. What's important here is that the data width of the RDATA and WDATA channels match the datawidth that we specify in the kernel.xml. So for example, m0_axi_RDATA has a datawidth of 512 in the verilog (wire[511:0]), so in the kernel.xml we need to specify that the m0_axi port has a dataWidth of 512. Does that make sense?

Maybe one way of putting it is that the kernel.xml file describes what's going on in the Verilog.
One thing that's still unclear to me is where the width 512 comes from in the generator code. This is where the data width seems to stem from:
https://github.com/cucapra/calyx/blob/943a50ebdb1533dabfc6f82f638b43d5744fe7c0/src/backend/xilinx/toplevel.rs#L46
…and there it's set to 32. So this may require some debugging!

That's actually the Control_axi instantiation, so 32 is the correct value there. The issue is with the memory module here:
https://github.com/cucapra/calyx/blob/943a50ebdb1533dabfc6f82f638b43d5744fe7c0/src/backend/xilinx/toplevel.rs#L50
There is a 512 there, but there's also a 64 and a 32 (for address width and the data width of the argument). I think there's just a mismatch somewhere of what value needs to go into the kernel.xml.

Aha, thanks for the correction, @andrewb1999!! That would explain it.


Update Blazor Fluent UI package to 4.4.2 preview

Fixes https://github.com/dotnet/aspire/issues/2064
Fixes some issues with Blazor FluentUI controls:

Metrics filter popup now goes up instead of off the page when there isn't room
Overflow count in tracing and metrics grids now reports an accurate value

It's important to use a preview now to help find any regressions. We can update to 4.4.2 final when it is available.
Microsoft Reviewers: Open in CodeFlow

How do we know this update didn't regress other things? The dashboard doesn't have much automation and I worry about updates that don't vet all of the dashboard.

Manual testing.


chore: consolidate all ABI Sway programs

Part of TS-599, TS-600

Part of #3031
Part of #3032

Summary

Consolidates all abi-typegen/* and abi-coder/exhaustive-example Sway programs into abi-contract, abi-predicate and abi-script.

Added two lists below which are the original test location (with method) and their destination location.

Abi Typegen

abi-typegen/tests
abi-contract
Notes

array-of-enums
types_struct_with_array_of_enums

array-with-generics.simple
types_struct_with_nested_array

array-with-generics.with_generics
types_array_with_generic_struct

bytes
types_bytes

enum-of-enums
types_enum_with_structs
Has a nested enum with this enum

enum-of-structs
types_enum_with_structs
Has nested struct within enum

enum-simple
types_enum_with_builtin_type

enum-simple-native
types_enum

evm-address
types_evm_address

fn-void
types_void

full
The backbones of this contract
Copy + pasted this base contract as the initial starting point for abi-contract.

libs-for-testing
abi-library

minimal
multi_arg_str_str

minimal-with-configurables
configurables

option-simple
types_option

predicate
abi-predicate

predicate-with-configurables
abi-predicate

raw-slice
types_raw_slice

script
abi-script

script-with-configurables
abi-script

std-string
types_std_string

struct-nested.single_params
types_struct_with_multiple_struct_params

struct-nested.multi_params
types_struct_with_complex_nested_struct

struct-simple
types_struct_with_nested_struct

struct-with-array
types_struct_with_implicit_generics

tuple-simple.single_param
types_struct_with_nested_tuple

tuple-simple.tuple_params
types_tuple_complex

vector-simple
types_vector_u8

Exhaustive example
Exhaustive example | abi-contract |
-- | -- | --
test_function | types_bool |
u_8 | types_u8 |
u_16 | types_u16 |
u_32 | types_u32 |
u_64 | types_u64 |
string | types_str |
boolean | types_bool |
b_256 | types_b256 |
b_512 | types_b512 |
two_args | types_struct_simple |
struct_simple | types_struct_generic |
struct_generic_simple | types_struct_with_tuple |
struct_with_tuple | types_struct_with_implicit_generics |
struct_with_implicit_generics | types_bytes |
bytes | types_raw_slice |
raw_slice | types_std_string |
dynamic_string | types_asset_id |
asset_id | types_tuple_complex |
tuple_as_param | types_array |
array_simple | types_array_struct |
array_struct | types_struct_with_array |
vector_boolean | types_vector_u8 |
vector_u8 | types_vector_boolean |
arg_then_vector_u8 | types_vector_u8 |
vector_u8_then_arg | types_vector_inside_vector |
two_u8_vectors | types_vector_inside_array |
u32_then_three_vectors_u64 | types_enum_with_vector |
enum_simple | types_struct_with_vector |
enum_with_builtin_type | types_enum |
enum_with_structs | types_enum_with_builtin_type |
option_u8 | types_enum_with_structs |
return_configurables | types_option_u8 |
simple_vector | multi_arg_b256_bool |
vector_inside_vector | multi_arg_u32_vector_vector |
vector_inside_array | multi_arg_struct_vector |
vector_inside_enum | multi_arg_vector_b256 |
vector_inside_struct | multi_arg_vector_vector |
array_with_generic_struct | types_struct_with_array |
entry_one | types_u64 | 🍎 Need to regenerate the fn signatures with new names
sum | multi_arg_u64_u64 | 🍎 Need to regenerate the fn signatures with new names
sum_test | 🍎 TODO | 🍎 Need to regenerate the fn signatures with new names
takes_array | types_array | 🍎 Need to regenerate the fn signatures with new names
take_enum | types_enum + types_bool | 🍎 Need to regenerate the fn signatures with new names
my_struct | multi_arg_u64_struct | 🍎 Need to regenerate the fn signatures with new names
array_of_structs | types_array_struct + types_str | 🍎 Need to regenerate the fn signatures with new names
complex_function | multi_arg_complex | 🍎 Need to regenerate the fn signatures with new names

Checklist

[X] All changes are covered by tests (or not applicable)
[X] All changes are documented (or not applicable)
[X] I reviewed the entire PR myself (preferably, on GH UI)
[X] I described all Breaking Changes (or there's none)

@nedsalk could you give this a pre-review please 🙏🏼
If you're happy put it in ready for review :)

LGTM, it's exhaustive and possibly repetitive, so we can maybe slim it down as we write tests with it and notice possible repetitions.


The Dropdown keyboard access is different from the original BS component

Menu expansion:

BS: arrow down, ENTER
BSN: ENTER

Menu items navigation:

BS: up and down arrows
BSN: nothing

Menu item selection:

BS: ENTER, when item selected
BSN: not applicable

This feature haven't been implemented, feel free to contribute.

Closing this out due to no activity.


Current state

Pull Request Test Coverage Report for Build 873

5 of 12 (41.67%)  changed or added relevant lines in 2 files are covered.
1 unchanged line in 1 file lost coverage.
Overall coverage decreased (-0.9%) to 57.881%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

scripts/to_database.py
3
10
30.0%

Files with Coverage Reduction
New Missed Lines
%

scripts/to_database.py
1
54.46%

Totals

Change from base Build 871:
-0.9%

Covered Lines:
918

Relevant Lines:
1586

💛  - Coveralls


feat: hour from query params

This PR utilizes the mapRawQueryToState function for changing the currently selected hour and therefore updating the displayed shade/wind/tempereture layers.

Cool! That works like a charm! Good job!

Wouldn't be possible without your work on making the query params available, @vogelino. Great work on that!


New TF adjustments (v2.0.0) need adding to waterfall charts

Currently the waterfall charts only show how the match_probability is calculated, not showing the extent of the TF adjustment made to that final probability. Now each column can have two components in the waterfall chart: the baseline BF contribution for a match, and the TF adjustment for the specific value.
Whether or not TF adjustments are even turned on, the potential impact on each column can easily be included in the data passed to the waterfall chart.  Potentially worth showing whether TF adjustments could account for significant differences in final match weights.

I think we want to write this so there are two options:

The column-specific tf adjustments exist in the input dataset and the waterfall can therefore show the column-specific adjustments
The user provides only the final match_probability/match_weight and the comparison vector.  In which case we can compute only a single 'all-in' tf adjustment, which is just the difference between the match_weight computed from the average m and u values (which we can compute from the comparison vector and splink settings), and the final match_weight

Closed by #278


Configure blockchain

Introduces a "Configure Blockchain" screen allowing user to switch the network, backend protocol, and backend URL that will be connected to.  Currently supporting just testnet and signet.  Persists the selections (can change to mmkv after migration).  The dialog intentionally does not follow a design from Figma.  The Figma config screens will be implemented later.  This was implemented for testing purposes, though it will be useful for production use as well.

Looks good. Also tested on android.


AST: Tweak a concrete-nested-type-of-archetype hack slightly [4.0]

Description: There is a long-standing representational issue where SubstitutionMaps have a hard time dealing with associated types that are constrained to concrete types, but themselves have nested associated types. We put in a workaround in 3.1. In 4.0, I made the workaround slightly narrower so that we can test the conformance lookup logic better. Unfortunately I missed a case in 4.0 where we should have applied the workaround but didn't. This patch brings back the workaround in that specific case.

Scope of the issue: Affects an open source project in the source compatibility test suite (JSQDataSourcesKit).

Origination: Regression in 4.0.

Risk: Very low, this just performs a module-based lookup in one more case that wasn't being done before, and this should always work.

Tested: Reduced test case added.

Reviewed by: @DougGregor

Radar: rdar://problem/32773028

@swift-ci Please test

Thanks @slavapestov and @DougGregor 🙌 👏 🎉

What about 3.2? I am getting these all the time in a Swift 3.2 project on Xcode 9.0.1 and 9.1 beta 3.

@gistya This pull request went in to Xcode 9. Have you filed a bug for the issue you're seeing?


Only report coverage if tests pass

Just noticed that Travis attempts to npm run coverage after a failed build/test. This fixes that.

Coverage remained the same at 97.849% when pulling 47ffb89c464320fd4dad67ed3d3677e421c7e4fe on report-coverage-only-on-success into 3669f9179538e62859b2d9f9bb62175c112d57e6 on master.


Peer<EMAIL_ADDRESS>wants<EMAIL_ADDRESS>

When trying:
npm i ng2-bootstrap --save
i get:
npm WARN peerDependencies The peer dependency<EMAIL_ADDRESS>included from ng2-bootstrap will no
npm WARN peerDependencies longer be automatically installed to fulfill the peerDependency
npm WARN peerDependencies in npm 3+. Your application will need to depend on it explicitly.
npm WARN peerDependencies The peer dependency<EMAIL_ADDRESS>included from angular2 will no
npm WARN peerDependencies longer be automatically installed to fulfill the peerDependency
npm WARN peerDependencies in npm 3+. Your application will need to depend on it explicitly.
npm WARN peerDependencies The peer dependency<EMAIL_ADDRESS>included from angular2 will no
npm WARN peerDependencies longer be automatically installed to fulfill the peerDependency
npm WARN peerDependencies in npm 3+. Your application will need to depend on it explicitly.
npm ERR! Linux 3.16.0-62-generic
npm ERR! argv "/home/gf/.nvm/versions/node/v4.3.2/bin/node" "/home/gf/.nvm/versions/node/v4.3.2/bin/npm" "i" "ng2-bootstrap"
npm ERR! node v4.3.2
npm ERR! npm  v2.14.12
npm ERR! code EPEERINVALID
npm ERR! peerinvalid The package<EMAIL_ADDRESS>does not satisfy its siblings' peerDependencies requirements!
npm ERR! peerinvalid Peer<EMAIL_ADDRESS>wants<EMAIL_ADDRESS>npm ERR! Please include the following file with any support request:
npm ERR!     /home/gf/buenafe/frontend/npm-debug.log
Seems like npm package is not up to date, because in the repo peer dependency is beta 11.

beta.11 has known issues, this is why ng2-bootstrap not yet updated
see here
https://github.com/valor-software/ng2-bootstrap/pull/305


 Pressing '.' doesn't cause any issue in my case.

ok i will test again

I'm sorry to reply to the child so late, the child is sick again
Here's how to reproduce it

select line or region
press shift + >  then  selected region  move to right
press .   call evil-repeat to move again will     then Report an error

After 0 kbd macro iterations: evil-motion-range: Wrong type argument: commandp, ((keymap (intercept-state . operator) "Auxiliary keymap for Operator-Pending state") (keymap (62 . evil-line-or-visual-line)) (keymap) (keymap "Auxiliary keymap for Operator-Pending state" (88 . evil-snipe-X) (120 . evil-snipe-x) (90 . evil-snipe-S) (122 . evil-snipe-s)) (keymap "Auxiliary keymap for Operator-Pending state" (83 . evil-Surround-edit) (115 . evil-surround-edit)) (keymap (105 keymap (111 . evil-inner-symbol) (116 . evil-inner-tag) (96 . evil-inner-back-quote) (34 . evil-inner-double-quote) (39 . evil-inner-single-quote) (62 . evil-inner-angle) (60 . evil-inner-angle) (125 . evil-inner-curly) ...) (97 keymap (111 . evil-a-symbol) (116 . evil-a-tag) (96 . evil-a-back-quote) (34 . evil-a-double-quote) (39 . evil-a-single-quote) (62 . evil-an-angle) (60 . evil-an-angle) (125 . evil-a-curly) ...)) (keymap (intercept-state . motion) "Auxiliary keymap for Motion state") (keymap) (keymap (86 . evil-visual-screen-line) (36 . evil-end-of-visual-line) (48 . evil-beginning-of-visual-line) (107 . evil-previous-visual-line) (103 keymap (36 . evil-end-of-line) (48 . evil-beginning-of-line) (107 . evil-previous-line) (106 . evil-next-line)) (106 . evil-next-visual-line) "Minor-mode keymap for visual-line-mode in Motion state") (keymap "Auxiliary keymap for Motion state" (93 keymap (54 . evil-collection-unimpaired-b64-decode) (117 . evil-collection-unimpaired-url-decode)) (91 keymap (54 . evil-collection-unimpaired-b64-encode) (117 . evil-collection-unimpaired-url-encode))) ...)

@donneyluck
How can I reproduce the problem? What are the steps.
What OS and Emacs version you are using?

Merged! I will test it further to see if there is a difference.
Thanks for the PR.


Cannot get mypy to work with both pydantic v1.x and pydantic.v1 from v2.x

Initial Checks

[X] I confirm that I'm using Pydantic V2 installed directly from the main branch, or equivalent

Description
(Originally posted as Discussion question #5971, where I was encouraged to repost as an issue)
We have several inter-dependent packages that depend on pydantic in ways that will break under v2, and we've decided to stagger the updates to these packages, including having transitional releases that import from either pydantic.v1 (on pydantic 2.x) or pydantic (on pydantic 1.x).  Our code runs correctly with this strategy, but when we try to type-check it with mypy, things break, and I am unsure how to fix this breakage.
Example Code
An example (available in full at https://github.com/jwodder/pydantic-v1v2-test): This module:
from __future__ import annotations
from pathlib import Path
from typing import Literal

try:
    import pydantic.v1 as pydantic
except ImportError:
    import pydantic  # type: ignore[no-redef]

class Foobar(pydantic.BaseModel):
    classname: Literal["Foobar"] = pydantic.Field("Foobar", readOnly=True)
    foo: int
    bar: str

    @classmethod
    def load(cls, file: Path) -> Foobar:
        return cls.parse_raw(file.read_text())

if __name__ == "__main__":
    print(Foobar(foo=42, bar="hello"))

with this mypy config:
[mypy]
allow_incomplete_defs = False
allow_untyped_defs = False
ignore_missing_imports = True
no_implicit_optional = True
implicit_reexport = False
local_partial_types = True
pretty = True
show_error_codes = True
show_traceback = True
strict_equality = True
warn_redundant_casts = True
warn_return_any = True
warn_unreachable = True
plugins = pydantic.mypy

[pydantic-mypy]
init_forbid_extra = True
warn_untypes_fields = True

and this tox.ini:
[tox]
envlist = run,devrun,typing,devtyping
skip_missing_interpreters = True
isolated_build = True
minversion = 3.3.0

[testenv:run]
commands = python -m foobar

[testenv:devrun]
commands_pre =
    pip install --pre --upgrade --no-warn-conflicts git+https://github.com/pydantic/pydantic
commands = python -m foobar

[testenv:typing]
deps =
    mypy
commands =
    mypy src

[testenv:devtyping]
deps = {[testenv:typing]deps}
commands_pre = {[testenv:devrun]commands_pre}
commands = {[testenv:typing]commands}

When tested with Python 3.11.3 on macOS 11.7.2 using mypy 1.3.0, using variously pydantic 1.10.8 and dev pydantic commit f6479b8, the run and devrun environments succeed, but the typing and devtyping do not.  The typing environment fails with:
src/foobar.py:24: error: Returning Any from function declared to return
"Foobar"  [no-any-return]
            return cls.parse_raw(file.read_text())
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Found 1 error in 1 file (checked 1 source file)

and the devtyping environment fails with:
src/foobar.py:28: error: Missing named argument "classname" for "Foobar"
[call-arg]
        print(Foobar(foo=42, bar="hello"))
              ^~~~~~~~~~~~~~~~~~~~~~~~~~~
Found 1 error in 1 file (checked 1 source file)

Python, Pydantic & OS Version
pydantic version: 2.0b2
        pydantic-core version: 0.38.0 release build profile
                 install path: /Users/jwodder/work/dev/tmp/pydantic-v1v2-test/.tox/devtyping/lib/python3.11/site-packages/pydantic
               python version: 3.11.3 (main, Apr  7 2023, 19:30:05) [Clang 13.0.0 (clang-13<IP_ADDRESS>)]
                     platform: macOS-11.7.2-x86_64-i386-64bit
     optional deps. installed: ['typing-extensions']

I would deeply appreciate if someone looks at this issue since it blocks migration to support pydantic v2 for us.

For what it's worth, you should be able to fix the src/foobar.py:28: error: Missing named argument "classname" for "Foobar" issue by putting default="Foobar" instead of just "Foobar" as the first argument to Field. But this is a sign that the mypy plugin is not working correctly, unsurprisingly. I think we may be able to make that work by adding handling of pydantic.v1 items in the mypy plugin, it should be fairly straightforward, (though not very fun to test, probably).
I'm not quite sure what is going on in the first one, it would be convenient if you could explain exactly what I need to do to reproduce the issue. It seems clone the repo and then run something with tox? But if you could explain what commands I should run to set up the environment and how to run things using tox (I don't have experience using tox) then I can look into it further.

@dmontagu To reproduce with tox:

Clone https://github.com/jwodder/pydantic-v1v2-test
Install tox via pip
Inside the clone, run tox -e typing.  This will create a virtualenv, install the local project in it (including pydantic v1), install mypy, and run mypy src.

As to why this error is happening, I've noticed in the past that mypy doesn't like code of the form try: import package1; except ImportError: import package2, and it often proceeds as though only package1 was imported, even if it's not installed in the environment.  Since pydantic v1 doesn't have a pydantic.v1 module, mypy is presumably acting as though some un-annotated module unrelated to pydantic was imported, and so it doesn't know what the return type of parse_raw() is supposed to be.  One way that pydantic could address this would be to provide a pydantic.v1 module in v1 as well, with support in the v1 mypy plugin.

@dmontagu do you see how we could be of any help to help this issue to get addressed?

Same issue with alias, but I can't find a workaround like what was suggested with default.
from typing_extensions import Annotated

from pydantic.v1 import BaseModel as BaseModel1
from pydantic.v1 import Field as Field1
from pydantic import BaseModel as BaseModel2
from pydantic import Field as Field2

class ModelV1(BaseModel1):
    class Config:
        allow_population_by_field_name = True

    foo: str = Field1(alias="bar")

# no mypy error in 1.x, but produces a mypy error in 2.x
m1 = ModelV1(foo="param")  # error: Unexpected keyword argument "foo" for "ModelV1"  [call-arg]

print(m1.json(by_alias=True)) # {"bar": "param"}

# equivalent V2 model here for comparison
class ModelV2(BaseModel2):
    foo: Annotated[str, Field2(serialization_alias="bar")]

m2 = ModelV2(foo="param")
print(m2.model_dump_json(by_alias=True)) # {"bar": "param"}

I've noticed in the past that mypy doesn't like code of the form try: import package1; except ImportError: import package2, and it often proceeds as though only package1 was imported, even if it's not installed in the environment

@jwodder Do you think it might be something to check with mypy folks, so may be it could be addressed at that level?

@yarikoptic https://github.com/python/mypy/issues/1393 seems to be the closest pre-existing mypy issue.

@yarikoptic That would only work here if the version of pydantic installed in the type-checking environment was fixed to either 1.x or 2.x (as the pydantic version installed determines whether to import pydantic or pydantic.v1).  While that would be doable for type-checking a library that directly uses pydantic, any other project that depended on that library would have to use the same major version of pydantic when type-checking, yet the whole point of the "staggered pydantic update" design is to avoid forcing early upgrades to pydantic dependencies.

Ran into the same issue trying to port code from v1 to v2 and for now have followed @yarikoptic's suggestion and am only type checking with v1. It seems like this could be done cleaner if we had one final release of the 1.x branch that ships with the v1 namespace as an alias to the top-level namespace such that we could pin pydantic to >= 1.10.x and use from pydantic.v1 imports everywhere until we are ready to start supporting v2

if we had one final release of the 1.x branch that ships with the v1 namespace as an alias to the top-level namespace such that we could pin pydantic to >= 1.10.x and use from pydantic.v1 imports everywhere

Just chiming in to say that with 1.10.16 this can be done functionally now (i.e. the find replace imports all work).
The typing struggles with the current implementation however. Haven't got the best idea how this can be resolved though - any suggestions welcome!

@exs-dwoodward,
Can we close this with the v1.10.17 release tomorrow?

Potentially, doing some mypy testing with this snippet though this seems that:

with (what will be) 1.10.17 seems mypy to recognise everything with no issues 🚀
with <1.10.15 (specifically 1.10.14, which should just trigger the import pydantic statement) causes an issue:

error: Returning Any from function declared to return "Foobar"  [no-any-return]
            return cls.parse_raw(file.read_text())
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

with pydantic v2 it seems the issue will likely persist, for some reason mypy cannot figure out which Field and BaseModel it should be importing - functionally the code will work, but otherwise mypy doesn't know what will be imported at runtime 🤷

Is this more generally likely to be an issue with the pydantic v1 mypy plugin that it does not also include .v1 namespaced objects? My IDE seems to find the import path of Field and BaseModel pretty easily, but mypy seems to (with v2) always consider it to be only from v2 🤔
That being said, whilst a from pydantic.v1 import should be usable - looks like some updates to the v2 mypy.py plugin might need to be considered for this to function properly (even with current v2).
Nevermind - very very silly, in the mypy.ini file looks like you need:
[mypy]
....
plugins = pydantic.mypy, pydantic.v1.mypy # include both v2 and v1 mypy plugin

of course this is dependent on being able to find the .v1 plugin (only with pydantic v2) but I guess if you are typing with pinned dependencies you can be sure that you will or will not have access to this plugin?

@exs-dwoodward,
Awesome work digging in here. Let's close this then with the v1.10.17 and v2.7.5 releases today. I believe support is robust enough that this isn't a major concern.


Can't script peer login

Ideally a script like this should work:
echo -n NPKYL39uKbkj | OPENCHAIN_PEER_ADDRESS=localhost:30303 ./obc-peer login lukas

Instead it crashes (both with and without the -n option to echo)
Enter password for user 'lukas': panic: inappropriate ioctl for device

goroutine 1 [running]:
github.com/openblockchain/obc-peer/vendor/github.com/howeyc/gopass.getch(0x0)
	/gsa/ausgsa/home/b/c/bcbrock/obc/code/src/github.com/openblockchain/obc-peer/vendor/github.com/howeyc/gopass/nix.go:13 +0x73
github.com/openblockchain/obc-peer/vendor/github.com/howeyc/gopass.getPasswd(0x0, 0x0, 0x0, 0x0)
	/gsa/ausgsa/home/b/c/bcbrock/obc/code/src/github.com/openblockchain/obc-peer/vendor/github.com/howeyc/gopass/pass.go:18 +0x12e
github.com/openblockchain/obc-peer/vendor/github.com/howeyc/gopass.GetPasswd(0x0, 0x0, 0x0)
	/gsa/ausgsa/home/b/c/bcbrock/obc/code/src/github.com/openblockchain/obc-peer/vendor/github.com/howeyc/gopass/pass.go:37 +0x2d
main.login(0xc8202744c0, 0x1, 0x1, 0x7f8f0dde9ac8, 0xc82024f860)
	/gsa/ausgsa/home/b/c/bcbrock/obc/code/src/github.com/openblockchain/obc-peer/main.go:492 +0x4e1
main.glob.func8(0x135da60, 0xc8202744c0, 0x1, 0x1, 0x0, 0x0)
	/gsa/ausgsa/home/b/c/bcbrock/obc/code/src/github.com/openblockchain/obc-peer/main.go:115 +0x41
github.com/openblockchain/obc-peer/vendor/github.com/spf13/cobra.(*Command).execute(0x135da60, 0xc820274420, 0x1, 0x1, 0x0, 0x0)
	/gsa/ausgsa/home/b/c/bcbrock/obc/code/src/github.com/openblockchain/obc-peer/vendor/github.com/spf13/cobra/command.go:497 +0x63b
github.com/openblockchain/obc-peer/vendor/github.com/spf13/cobra.(*Command).Execute(0x135d360, 0x0, 0x0)
	/gsa/ausgsa/home/b/c/bcbrock/obc/code/src/github.com/openblockchain/obc-peer/vendor/github.com/spf13/cobra/command.go:584 +0x46a
main.main()
	/gsa/ausgsa/home/b/c/bcbrock/obc/code/src/github.com/openblockchain/obc-peer/main.go:256 +0x13f9

goroutine 17 [syscall, locked to thread]:
runtime.goexit()
	/usr/lib/go/src/runtime/asm_amd64.s:1696 +0x1

In lieu of or in addition to fixing the crash, it might be nice to have a command-line option for the password to simplify test scripting.

@bcbrock Do we still need work on this or can be closed?

@binhn - This issue is still open. I've been working on other things and have not gotten to it myself.

You can assign it to me, I can fix this.

@binhn can you assign @genggjh to this one? Thanks Guys!

Closed via PR #1090


Clarification of uniqueness scope of id's used in the mets document

Clarification of the uniqueness for the xml:id type within the METS document. Following the issue #702
Closes #702

Issue #702 and this PR is approved by the DILCIS Board


Fix/array update value

What exactly does this fix?

It cause error if input in form returns array as value.


Cosmetic. Health Log screen. Title top margin incorrect

Issue: Top margin above the title is inconsistent with all the other pages' title.
Solution Apply the same margin as for all the other pages (example: NY COVID Data tab).

This is still an issue for me @floridemai .

Will be available in the next build.

Perfect. thx


[Firebase Firestore] swift Force Load _swiftCompatabilityConcurancy

Description
Hi sir, I have implemented flutter fire inside my flutter project. For reducing time I have added build in C++ libs in Pod file as flutter fire documentation says. But whenever I try to build its give me the error of
Undefined symbol: _swift_FORCE_LOAD$_swiftCompatabilityConcurancy
I am unable to figure out the problem.
Btw it will build if I remove
pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => '9.4.0'
from my Pod file. But It will take almost one hour on my MacBook to build.
My OS is -> Mac OS big sure version 11.5.2
My Xcode version is -> 13.0.0
Its become pain in my head to use firebase Firestore. If I remove Firestore dependency build work like charm.
Please help me to sort this problem.
Reproducing the issue
No response
Firebase SDK Version
9.4.0
Xcode Version
13.0.0
Installation Method
CocoaPods
Firebase Product(s)
Firestore
Targeted Platforms
iOS
Relevant Log Output
`  Undefined symbols for architecture x86_64:
      "__swift_FORCE_LOAD_$_swiftCompatibilityConcurrency", referenced from:
          __swift_FORCE_LOAD_$_swiftCompatibilityConcurrency_$_FirebaseFirestoreSwift in FirebaseFirestoreSwift(CodableErrors.o)
          __swift_FORCE_LOAD_$_swiftCompatibilityConcurrency_$_FirebaseFirestoreSwift in FirebaseFirestoreSwift(CollectionReference+AsyncAwait.o)
          __swift_FORCE_LOAD_$_swiftCompatibilityConcurrency_$_FirebaseFirestoreSwift in FirebaseFirestoreSwift(DocumentID.o)
          __swift_FORCE_LOAD_$_swiftCompatibilityConcurrency_$_FirebaseFirestoreSwift in FirebaseFirestoreSwift(DocumentReference+Codable.o)
          __swift_FORCE_LOAD_$_swiftCompatibilityConcurrency_$_FirebaseFirestoreSwift in FirebaseFirestoreSwift(DocumentReference+ReadDecodable.o)
          __swift_FORCE_LOAD_$_swiftCompatibilityConcurrency_$_FirebaseFirestoreSwift in FirebaseFirestoreSwift(DocumentSnapshot+ReadDecodable.o)
          __swift_FORCE_LOAD_$_swiftCompatibilityConcurrency_$_FirebaseFirestoreSwift in FirebaseFirestoreSwift(ExplicitNull.o)
          ...
         (maybe you meant: __swift_FORCE_LOAD_$_swiftCompatibilityConcurrency_$_FirebaseFirestoreSwift)
    ld: symbol(s) not found for architecture x86_64
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    note: Using new build system
    note: Planning
    note: Build preparation complete
    note: Building targets in parallel

    Result bundle written to path:
        /var/folders/p5/8yd8xy253g78z85733whxz900000gn/T/flutter_tools.ucU7mc/flutter_ios_build_temp_dirtj2olx/temporary_xcresult_bundle

Error (Xcode): Undefined symbol: __swift_FORCE_LOAD_$_swiftCompatibilityConcurrency

Could not build the application for the simulator.
Error launching application on iPhone 11.
`

If using Swift Package Manager, the project's Package.resolved

Expand Package.resolved snippet

Replace this line with the contents of your Package.resolved.

If using CocoaPods, the project's Podfile.lock
No response

Hi @waleedkalyar, could you try updating your Xcode version? It seems like Firebase 9 requires Xcode 13.3.1 based on the doc.

@rizafran  Is there any other solution then updating Xcode version Because My Current OS does not further update the Xcode.
Btw I found solution of this as
When you add an empty swift file, XCode will ask you "Create Bridging Header".
It will include to the Header Search Path on your build settings:
$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)
##So After adding this My Bridge file is like below
#import "GeneratedPluginRegistrant.h" $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)
But now the following error occur
Error (Xcode): expected function body after function declarator
/Volumes/Stuff/flutter_projects/onesite/ios/Runner/Runner-Bridging-Header.h:1:16

Hi @waleedkalyar,
Your latest he error reads like a compile time error. Could you share your /Volumes/Stuff/flutter_projects/onesite/ios/Runner/Runner-Bridging-Header.h?
Alternatively, rather than adding an empty Swift file and the bridging header, one potential workaround we can try is to manually add $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) as the first item in your Header Search Paths build settings.


Help: cargo lambda build vs. openssl

Attempting to cargo lambda build a project that transitively depends on openssl fails with,
build/expando.c:2:10: fatal error: 'openssl/opensslconf.h' file not found
#include <openssl/opensslconf.h>
         ^~~~~~~~~~~~~~~~~~~~~~~
1 error generated.

attempting to build with --arm64 instead fails with,
pkg-config has not been configured to support cross-compilation.

Install a sysroot for the target platform and configure it via
PKG_CONFIG_SYSROOT_DIR and PKG_CONFIG_PATH, or install a
cross-compiling wrapper for pkg-config and set it via
PKG_CONFIG environment variable.

Is there any way to prepare my build environment so that libraries expected on the target will be available at build time, or some documentation I need to read?
For what its worth, I can use cross build ... together with an awsl2-derived docker container to build the code, and that works.  I was hoping that cargo lambda might simplify the workflow by avoiding the need to setup a custom docker image.

Generally when cross compiling build from source is preferred, you could activated the vendered feature of the openssl crate to do so.
[dependencies]
openssl = { version = "0.10", features = ["vendored"] }

See also https://docs.rs/openssl/latest/openssl/#vendored


Long page titles are cropped in the Pages editor (UX enahncement)

When working with nested pages, or pages with long names, the page name gets cropped after only 10 or 12 characters:

There's no obvious way to see the full page name without clicking on and loading it in the the right pane.
Would it be better if the full page name could be shown when the user hovers over/taps/tabs to the link  (depending on their input device)?

There is already a tooltip that displays the full name of the pages. I've found that to be sufficient.

Interesting. On 9.2.0 when hovering one of those names I don't get a tooltip, and can't see anything in the HTML (e.g. a title attribute) which could enable such a thing.

I haven't checked in 9.2.0, but I can duplicate this in 9.2.1.

Me too, there is not tooltip, so it would be a good improvement.
And I think it even might be a good idea to have a little more space (perhaps play around with the spacing of the folder icons etc, because indeed, the amount of space is very limited at the moment:


Use only canonical paths for symbol breadcrumbs

Bug/issue #, if applicable: rdar://77922907
Summary
This changes how DocC computes "breadcrumbs" for symbols to only use the canonical path and to use different paths for each language representation.
Before these changes, DocC would use the same "breadcrumbs" for each language representation, always based on the shortest path to the symbol, including curation. This meant, among other things, that:

C API with Swift refinements wouldn't reflect the symbol hierarchy on the Swift version of the page (because the path to the C top-level function was always shorter)
members that were organized outside of the canonical container location would no longer include a link to the container symbol on their page.

With these changes, symbol breadcrumbs ignore authored curation and only consider the canonical path for each language representation.  For example:

Articles and tutorial content continue to base their breadcrumbs on authored curation.
Dependencies
None.
Testing

Build and preview documentation for the "GeometricalShapes" test catalog
swift run docc preview Tests/SwiftDocCTests/Test\ Bundles/GeometricalShapes.docc

Click through the different pages and inspect the breadcrumbs for both language representations.

Note that center and radius are members in each language representation but that intersects(_:), isEmpty, etc. are top-level functions in C/Objective-C.
Note that init(center:radius:) only exist in Swift and that TLACircleMake only exist in C/Objective-C.

Checklist
Make sure you check off the following items. If they cannot be completed, provide a reason.

[x] Added tests
[x] Ran the ./bin/test script and it succeeded
[ ] Updated documentation if necessary

@swift-ci please test

@swift-ci please test


Updates on "gene" table population

This PR includes the following updates on the gene table population:

two management commands that are ported from the Python 2.x version in django-genes repo

import_gene_info.py
import_gene_history.py

A new management command (add_gene_aliases.py), which adds PA14 aliases to gene table
New files in data/*:

data/README.md: summary of files in this directory
data/raw/*: raw data files downloaded online
data/*: preprocessed files (from the raw data) that are fed into the management commands

Updated views in the API that includes aliases field in autocomplete search

@dhimmel: You can ignore all the files in data subdirectories except README.md`. It includes data files that were read during database population. I have tested them by rebuilding a test database.
import_gene_info.py and import_gene_history.py were based on the ones in django-genes repo with minor modifications so that they works on Python3.


adapter with seq2seq models

Hi
could you point me how I can use adapters with seq2seq models in huggingafce repo? thanks

Hi
I appreciate getting some help with adapter for custom models. thanks

Happy that you are interested in AdapterHub. Could you elaborate a bit on what you are trying to achieve and where the blockers are? Which example are you referring to and how do you want to extend it?

Hi Andreas
Thanks for coming back to me. I have a couple of questions, (might be more
as I understand the code better), I am basically looking for a minimal
adapter implementation, without added details, here are some questions

In AdapterConfig, you have defined: original_ln_before: bool,
original_ln_after: bool, ln_before: bool, ln_after: bool
could you tell me what is the different between original_ln_* and ln_* and
for the minimal Houlsby adapter implementation which one are necessary?
In adapter_modeling.py, you defined  init_bert_weights, is this
necessary for the minimal Houlsby implementation?
In the same file, in Adapter class, which of residual before,after, and
layer norms are necessary for the minimal correct implementations?
In Adapter class, forward function, there is TODO for multiple layer
norm application, could you explain them?
Assuming a neural model, uses pre norm like Figure 1 in
https://openreview.net/pdf?id=B1x8anVFPr , could you tell me how the
adapter can be applied in this case?
In the provided examples with BERT we have post norm which is different.
In distilled BERT function, I see you have added adapters in the
attention outputs too, in the original Housbly paper, this is applied
always after feed-forward layer, could you explain this?
thank you very much.
Best
Rabeeh

On Fri, Nov 27, 2020 at 9:45 AM Andreas Rücklé<EMAIL_ADDRESS>wrote:

Happy that you are interested in AdapterHub. Could you elaborate a bit on
what you are trying to achieve and where the blockers are? Which example
are you referring to and how do you want to extend it?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/Adapter-Hub/adapter-transformers/issues/92#issuecomment-734717792,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ARPXHH5TP2TQARBY7RQ4XGLSR5RIZANCNFSM4UDOKALQ
.

In AdapterConfig, you have defined: original_ln_before: bool, original_ln_after: bool, ln_before: bool, ln_after: bool could you tell me what is the different between original_ln_* and ln_* and for the minimal Houlsby adapter implementation which one are necessary?

Conveniently, the HoulsbyConfig is available as a pre-defined config
ln refers to the LayerNorm, either it is the one from BERT (which we call original here) or a newly trained one (as part of the adapter). We can configure to apply it either before or after the adapter (hence the naming).

In adapter_modeling.py, you defined  init_bert_weights, is this necessary for the minimal Houlsby implementation?

I believe this is not necessary.

In the same file, in Adapter class, which of residual before,after, and
layer norms are necessary for the minimal correct implementations?

I don't exactly know what you mean by minimal implementations. I assume you are searching for the right parametrization, see answer to Q1.

In Adapter class, forward function, there is TODO for multiple layer norm application, could you explain them?

I am not sure what you are referring to. Maybe you provide a link to the exact line? If you mean L81, please see Activation_Function_Class

Assuming a neural model, uses pre norm like Figure 1 in https://openreview.net/pdf?id=B1x8anVFPr , could you tell me how the adapter can be applied in this case? In the provided examples with BERT we have post norm which is different.

Probably you want to either learn a new layer norm before the adapter (as part of the adapter) or deactivate all of them (re-using LN after the adapter is not possible because there is apparently no LN to re-use).

In distilled BERT function, I see you have added adapters in the attention outputs too, in the original Housbly paper, this is applied always after feed-forward layer, could you explain this?

This is a new feature, maybe @calpt can comment on this.

Hi
thank you for the reply, was helpful for me, about 5 why layer norm should be placed before adapter? I am currently getting very low score with the models having pre norm, do you have possible suggestions? thanks

Hi
To give the context, I am using a seq2seq model for classification, I have added adapter layers between the layers of encoder and decoder, and then I am getting 0 accuracy, since decoder output is used for classification, in the documentations you have something called add_classification_head, in case classification is done with a decoder, as a seq2seq model, could you assist me how I can solve the issue? and what components can be missing? thanks

Hi about 5, here is my model for better explanation, I mark the lines normalization and add operation happen with ** to describe the model better. Could you tell me where to add adapter layers, and inside adapter where to add layer norms? I am getting low-performance and I appreciate telling me the correct position to add adapter and layernorm implementations. thanks
class LayerFF(nn.Module):
    def __init__(self, config):
        super().__init__()
        if config.feed_forward_proj == "relu":
            self.DenseReluDense = DenseReluDense(config)
        elif config.feed_forward_proj == "gated-gelu":
            self.DenseReluDense = DenseGatedGeluDense(config)
        else:
            raise ValueError(
                f"{self.config.feed_forward_proj} is not supported. Choose between `relu` and `gated-gelu`"
            )

        self.layer_norm = LayerNorm(config.d_model, eps=config.layer_norm_epsilon)
        self.dropout = nn.Dropout(config.dropout_rate)

    def forward(self, hidden_states):
        **forwarded_states = self.layer_norm(hidden_states)**
        forwarded_states = self.DenseReluDense(forwarded_states)
        **hidden_states = hidden_states + self.dropout(forwarded_states)**
        return hidden_states

class LayerSelfAttention(nn.Module):
    def __init__(self, config, has_relative_attention_bias=False):
        super().__init__()
        self.SelfAttention = Attention(config, has_relative_attention_bias=has_relative_attention_bias)
        self.layer_norm = LayerNorm(config.d_model, eps=config.layer_norm_epsilon)
        self.dropout = nn.Dropout(config.dropout_rate)

    def forward(
        self,
        hidden_states,
        attention_mask=None,
        position_bias=None,
        head_mask=None,
        past_key_value=None,
        use_cache=False,
        output_attentions=False,
    ):
        **normed_hidden_states = self.layer_norm(hidden_states)**
        attention_output = self.SelfAttention(
            normed_hidden_states,
            mask=attention_mask,
            position_bias=position_bias,
            head_mask=head_mask,
            past_key_value=past_key_value,
            use_cache=use_cache,
            output_attentions=output_attentions,
        )
        **hidden_states = hidden_states + self.dropout(attention_output[0])**
        outputs = (hidden_states,) + attention_output[1:]  # add attentions if we output them
        return outputs

We re-use the original layer norm of BERT and with that the output dist of the adapter is rescaled to exactly the mean and variance expected by the next BERT layer. If you now use an entirely different model architecture with pre-layer norm, you perhaps need a different adapter architecture (e.g. found by experimentation). You may want to have a look at the AdapterFusion paper, it provides some insight where to place the adapter or which components have more influence on the standard BERT.

In distilled BERT function, I see you have added adapters in the
attention outputs too, in the original Housbly paper, this is applied
always after feed-forward layer, could you explain this?

@rabeehkarimimahabadi Houlsby et al. add adapters in two places in every Transformers layer, once after the self-attention and once after the FF layer (see Figure 2 of their paper). As far as I'm aware, this is how it is implemented in DistilBERT, once for the self-attention output (sa_output) and once for the FF output (ffn_output). Please provide the specific code lines you're referring to if this is not what you meant.

thank you, this is solved now.


feat: Use projectId and appName

Jira: PSGO-499
Changes:

added projectId and appName to AppConfig struct
updated tests
added projectId as an attribute to related logs

All app telemetry attributes are now in the one place, so implementation is easy, two lines? 1. New AppConfig field, 2. new item in the attributes slice.
https://github.com/keboola/keboola-as-code/pull/1708#discussion_r1570968548

@hosekpeter I included this work in https://github.com/keboola/keboola-as-code/pull/1709
So this PR can be closed.


TrivaDatabaseInitializer.cs missing from source code

Instructions say to include TriviaDatabaseInitializer.cs code during the Add Existing step but there is no such file in the .zip file nor is one installed via the .exe process.

+1

Within HOL/AspNetApiSpa/README.html, at task 2, item 5, it says to add three using statements:
using GeekQuiz.Models;
using Microsoft.AspNet.Authorization;
using Microsoft.Data.Entity;
However, I believe a fourth using statement is required:
using Microsoft.AspNet.Mvc;
This additional using statement exists in the TriviaController class located at \HOL\AspNetApiSpa\Source\Ex1-CreatingAnAPI\End\src\GeekQuiz\Controllers\TriviaController.cs

In addition to my previous comment, TriviaController.cs will also require the following 'usings' for task 2, item 7:
using System.Linq;
using System.Threading.Tasks;

If, within HOL/AspNetApiSpa/README.html, at “Exercise 2: Creating the SPA Interface” > “Task 1 - Creating the SPA Interface Using AngularJS 2” > You elect to NOT open the GeekQuiz.sln solution located in the Source/Ex2-CreatingASPAInterface/Begin folder, and instead continue with the solution that you obtained in the previous exercise, the following may occur:
You may see the following javascript error in your browser’s dev tools when running the site:
GET http://localhost:55753/js/app.js 404 (Not Found)
If this is the case you will need to do the following:
Add a file called “app.js” within the wwwroot\js\ folder
Populate the content of that file with the content of the file \HOL\AspNetApiSpa\Source\Ex2-CreatingASPAInterface\End\src\GeekQuiz\wwwroot\js\app.js

Thanks!  I'll check that out.
On Wed, Mar 2, 2016 at 11:02 AM, Gmaniacuk1<EMAIL_ADDRESS>wrote:

If, within HOL/AspNetApiSpa/README.html, at “Exercise 2: Creating the SPA
Interface” > “Task 1 - Creating the SPA Interface Using AngularJS 2” > You
elect to NOT open the GeekQuiz.sln solution located in the
Source/Ex2-CreatingASPAInterface/Begin folder, and instead continue with
the solution that you obtained in the previous exercise, the following may
occur:
You may see the following javascript error in your browser’s dev tools
when running the site:
GET http://localhost:55753/js/app.js 404 (Not Found)
If this is the case you will need to do the following:
Add a file called “app.js” within the wwwroot\js\ folder
Populate the content of that file with the content of the file
\HOL\AspNetApiSpa\Source\Ex2-CreatingASPAInterface\End\src\GeekQuiz\wwwroot\js\app.js
—
Reply to this email directly or view it on GitHub
https://github.com/Microsoft-Web/WebCampTrainingKit/issues/8#issuecomment-191302496
.

--
Jeff Gilbert
(404) 219-9188
<EMAIL_ADDRESS>Resume https://goo.gl/8bhn82

public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
System.Data.Entity.Database.SetInitializer(new TriviaDatabaseInitializer());
    AreaRegistration.RegisterAllAreas();
    GlobalConfiguration.Configure(WebApiConfig.Register);
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    BundleConfig.RegisterBundles(BundleTable.Bundles);
}

}
This is the code on the tutorial, but there is no TriviaDatabaseInitializer file anywhere.
I'm quite confused as to what to do next. I can't be the only one

I have the same issue

https://github.com/nzthiago/nzazure/tree/master/build-single-page-app-with-webapi-and-angular/end/GeekQuiz/GeekQuiz/Models
Here is the source that i found


⚠ Jenkins Plugins Artifactory has degraded performance

In ff65fd9, Jenkins Plugins Artifactory (https://get.jenkins.io/plugins/artifactory/) experienced degraded performance:

HTTP code: 200
Response time: 1325 ms

Resolved: Jenkins Plugins Artifactory performance has improved in e7b7d01 after 8 hours, 40 minutes.