[Core] Customize minimum log level for GlobalLogger by introducing AppSettings

PR Details

Description
This PR introduces a new way to define application level settings and uses it to allow user to override the minimum log level, which is currently hardcoded to Info.

Stride.Core.Settings.AppSettings is the settings container - a collection of objects which should differ by type (otherwise the first object of the given type is returned).
Stride.Core.Settings.IAppSettingsProvider is an interface that abstracts how we obtain the AppSettings. This is because we don't want to add any dependencies to Stride.Core.
Stride.Core.Settings.AppSettingsManager is a static class that uses AssemblyRegistry to find a type which implements the above interface, loads the settings and caches them.
Stride.Core.Settings.AppSettingsProvider (in Stride.Core.Design) provides a way to load Yaml based .appsettings file. Note: .settings is special for Visual Studio, so couldn't be used.
Stride.Core.Diagnostics.Logger has been modified to try loading the user provided override from AppSettings to determine the MinimumLevelEnabled. Moreover, the property can be overridden from code.
Stride.Core.Diagnostics.GlobalLogger now uses the above property when creating new loggers. It also got an overload which can specify the minimum log level per instance (when created).
AssemblyRegistry got a static constructor in which we register Stride.Core assembly - this is so that we can use the default YamlSerializer which only allows deserializing registered types. Moreover, the static logger is initialized lazily because otherwise there's a static initializer dependency cycle.
I also included a small change to the YamlSerializer making Load<T> static as it just called a static field.

Usage
To override the default log level create a file called "YourExecutable.appsettings" and mark it in VS to copy to output directory, or include the following in your project file:
  <ItemGroup>
    <None Update="MyProject.appsettings">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
  </ItemGroup>

Edit the file contents to look like this:
!AppSettings
Settings:
    - !GlobalLoggerConfig
        Level: Debug

You can set the log level to one of those: Debug, Verbose, Info, Warning, Error, Fatal (but usually only the first three make sense).
Related Issue
Closes #876
I haven't waited long for comments under my issue, so I'll gladly take any criticism here.
Motivation and Context
When creating static Logger Logger = GlobalLogger.GetLogger(nameof(Class)); for many classes I want to be able to change one setting to have them all logging more or less information. I could not use the GlobalLogger.ActivateLog because I would have to call it after my loggers are created and that's not easy.
Types of changes

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

Note: This is a binary interface breaking change, but a non-breaking change with regard to usage and behavior.
Checklist

[ ] My change requires a change to the documentation.
[ ] I have added tests to cover my changes.
[x] All new and existing tests passed.

The game engine does not reference Stride.Core.Design by default, which means it either has to be referenced by the user, or maybe I should move the AppSettingsProvider to another assembly?

@manio143 the whole Yaml concept doesn't exist at typical runtime either.
It could always be moved to a specific assembly later but it doesn't need to be part of the core runtime due to all the dependencies it needs (yaml and such).


Airdrop not working and handoff one-directional

Have you tried these steps? Yes
Is there already an open topic for this issue? No
Please include the following information.

OS Version: Sequoia 15.0.1
Mac model: Mac Pro (Mid 2010 / 5,1)
Dongle or replaced card?: Dongle
Used dongle/card: ASUS BT400

Your Issue: I am unable to airdrop or handoff to my iPhone 7, handoff FROM my iPhone works, but not to it. My mac sees the iPhone in the airdrop menu, but nothing happens when I click on it, global clipboard only works from iPhone to mac. I am completely expecting a "We don't support macOS Sequoia" but I might as well post here.
Steps done to try to fix the issue: Signing out and back in to iCloud on both devices, multiple reboots on mac

I just tried restarting my iPhone and that didn't help at all


Error: end of central directory record signature not found

Environment data
dotnet --info output:

Updating C# dependencies...
Platform: win32, x86_64
Downloading package 'OmniSharp (.NET 4.6 / x64)' (15684 KB) .................... Done!
Downloading package '.NET Core Debugger (Windows / x64)' (43510 KB) .................... Done!
Installing package 'OmniSharp (.NET 4.6 / x64)'
Installing package '.NET Core Debugger (Windows / x64)'
Failed at stage: installPackages
Error: end of central directory record signature not found
Finished

VS Code version:

1.12.2

C# Extension version:

1.10.0

Steps to reproduce

F1
Debug: Download .NET Core Debugger

Expected  behavior

Installation of .Net core debugger package should succeed.

Actual behavior

ERROR installing debugging package

@sameer-kumar I believe what this means is that the file that was downloaded got corrupted along the way. Can you try restarting VS Code and try the download again?

I tried all but no success.
This is what I did to make it work:
Download the debugger from https://vsdebugger.blob.core.windows.net/coreclr-debug-1-10-1/coreclr-debug-win7-x64.zip
Extract the debugger zip it here:
C:\Users<USER>.vscode\extensions\ms-vscode.csharp-1.10.0.debugger
It works like a charm.

Glad you got it to work. No idea why you saw the problem in the first place.

It sounds like this can be closed?

Closing this. It doesn't seem actionable at this point.

Hello
I ran into the same issue.

VS Code version 1.16.1
C# Extension version 1.12.1

Downloaded and "installed" debugger as @sameer-kumar said. But still got the same error with OmniSharp package.

Downloading package 'OmniSharp for Windows (.NET 4.6 / x64)' 	Retrying from 'https://omnisharpdownload.blob.core.windows.net/ext/omnisharp-win-x64-1.23.2.zip' Skipping package '.NET Core Debugger (Windows / x64)' (already downloaded).
Installing package 'OmniSharp for Windows (.NET 4.6 / x64)'
Failed at stage: installPackages
Error: end of central directory record signature not found
Finished

I made it work with same principle - downloaded package manually and extracted it into .omnisharp folder next to the .debugger folder.

The same here...
VS code 1.15.1
C# extension 1.12.1
Downloading package 'OmniSharp for Windows (.NET 4.6 / x64)' 	Retrying from 'https://omnisharpdownload.blob.core.windows.net/ext/omnisharp-win-x64-1.23.2.zip' Downloading package '.NET Core Debugger (Windows / x64)' 	Retrying from 'https://vsdebugger.blob.core.windows.net/coreclr-debug-1-12-5/coreclr-debug-win7-x64.zip'
Installing package 'OmniSharp for Windows (.NET 4.6 / x64)'
Failed at stage: installPackages
Error: end of central directory record signature not found

It sounds like the download was corrupted. Does restarting VS Code fix it?

No, I tried several times, but I got the same error all the times.
No issues when downloading from chrome

@paolofulgoni are you behind a proxy server? If so, there are instructions in https://github.com/OmniSharp/omnisharp-vscode/issues/1712 that you want to follow.

Yes, I am, thanks for the suggestion!


Update trigger_step.md

Raised based on feedback from customer for clarity around permissions involving unregistered users triggering the build.

Sorry @PriyaSudip , I just realised I was a little trigger happy with the approval of this PR and the wording of this contribution will need to be revised. Please follow this up with @mbelton-buildkite from Monday.


reorder property in JSDoc for RequestAsBrowserOptions

closes #757

PS: JSDoc weirdness of the day: the order of @property matters for TS (maybe it's a interoperability bug...). tried with 2 TS versions, they had the same issue. my guess is that having @apify/http-request inside property description breaks everything below this line. might have issues somewhere else, I'll check later
created TS issue here https://github.com/microsoft/TypeScript/issues/39976

Thx Paulo.


NVM install expects the version to be downloaded and builded/README is outdated

From readme:

To download, compile, and install the latest v0.10.x release of node, do this:
nvm install 0.10"

Unfortunately, nvm install 0.12.7 will report something like:
/home/***/.nvm/node-v0.12.7 doesn't exist, (need to downloaded first?) 0.12.7
Then, after I download it (nvm download), and rerun the same command:
Not built yet
It would be nice if all of the steps are outlined in the readme, so it is easy to understand what should be done...

I'm quite certain that you've installed the wrong nvm - the one on npm isn't the right one. nvm doesn't have those error message strings.
Please npm uninstall -g nvm and reinstall it with the curl command in the readme.
Duplicate of #304.

:smile: ok, that was a fail on my side...

np, let me know if you have any trouble with the actual nvm :-)

:+1:


Import of chart.js 4 results in module not found

Expected behavior
When I import chartjs in the style:
import Chart from 'chart.js/auto';

it should import without error.
Current behavior
When I try to import like this:
import Chart from 'chart.js/auto';

I get the following in the webpack output:
ERROR in ...

Module not found: Error: Package path ./auto is not exported from package …\node_modules\chart.js (see exports field in …\node_modules\chart.js\package.json)

node v16.15.0
npm 8.5.5
webpack 5.74.0
ts-loader
babel 7.19.6
I can resolve this issue by changing the chart.js package.json to not use nested conditional exports. i.e.:
"exports": {
    ".":  "./dist/chart.js",
    "./auto": "./auto/auto.js",
    "./helpers": "./helpers/helpers.js"
  },

Instead of the current:
"exports": {
    ".": {
      "import": "./dist/chart.js",
      "types": "./dist/types.d.ts"
    },
    "./auto": {
      "import": "./auto/auto.js",
      "types": "./auto/auto.d.ts"
    },
    "./helpers": {
      "import": "./helpers/helpers.js",
      "types": "./helpers/helpers.d.ts"
    }
  },

I assume this is a node version or config issue or something? As I guess there's no way everyone is seeing this?
Reproducible sample
none
Optional extra steps/info to reproduce
No response
Possible solution
Removing nested conditional exports does resolve this for us.
Context
Stopping us from upgrading.
chart.js version
4.0.1
Browser name and version
No response
Link to your project
No response

I don't think you're pointing the correct issue because this is supposed to work.
I have a similar problem, I was about to open a new issue but it seems related so i'll develop here.
It's not the import statement that fails but the require() one. You might be having this issue after building your code from es modules to common ones.
The require subpath imports statement is missing in the exports fields in package.json.
And as mentioned in the node documentation here : https://nodejs.org/api/packages.html#package-entry-points
When the exports field is specified in package.json it overwrites the main one.
Therefore node doesn't find any file to load when require() is called.
Your fix would work but if they want to keep the types definition they can just specify require in addition of import.
I would recommend changing import to default.
Because the node documentation says that having both export and require : https://nodejs.org/api/packages.html#conditional-exports

Did a pull request. We'll see where that goes.

@np-np-np Hi. Chart.js v4 is an ESM-only package, so your project should be also an ES-module. But I see you are using webpack, you can try to modify resolve.conditionnames option and add import condition.

@np-np-np could you please share how you change webpack config ?

Hello! I think I have a similar problem :( Searched the web and decided to post here finally..
I use yarn workspaces and one of them includes react-components (trying to use chart.js here) which are being transpiled with babel and used in other cra-based workspace.
The problem is that I can't use the "simple" import described in docs:
import Chart from 'chart.js/auto';
This code transpiles without any problems but I have an error while trying to use new Chart(...) syntax:
Uncaught TypeError: _auto.default is not a constructor
I found that console.log(Chart) returns the path to static asset like /static/media/auto.some-hash-here.cjs but not the class/function definition.
This is my configs - maybe I'm doing smth wrong?
// package.json
{
 "devDependencies": {
    "@babel/cli": "^7.19.3",
    "@babel/core": "^7.20.5",
    "@babel/preset-env": "^7.20.2",
    "@babel/preset-react": "^7.18.6",
    "chart.js": "^4.1.2",
    ...
 }
}

// jsconfig.json
{
  "compilerOptions": {
    "baseUrl": "./src",
    "target": "es2015",
    "jsx": "react"
  },
  "include": ["src"],
  "exclude": ["node_modules", "dist"]
}

// babel.config.json
{
  "presets": [
    ["@babel/preset-env", {
      "loose": true
    }],
    ["@babel/preset-react", { "runtime": "automatic" }]
  ]
}

The loose prop does nothing (not resolving anything) in my case (and after diving into the desc of it I'd like to remove it imho :))

@np-np-np Hi. Chart.js v4 is an ESM-only package, so your project should be also an ES-module. But I see you are using webpack, you can try to modify resolve.conditionnames option and add import condition.

I wanted to provide a confirmation that this solution works for me.
My error was:
ModuleNotFoundError: Module not found: Error: Package path ./auto is not exported from package /something/node_modules/chart.js (see exports field in /something/node_modules/chart.js/package.json)


Using enthistory together with entgql causes problems

Describe the bug
I'm having some issues using enthistory together with entgql. Please close this issue if you think it's more related to entgql or bad configuration.
First problem:
failed to run ent codegen: execute template "client": template: node.tmpl:315:16: executing "client/fields/additional" at <gqlIDType (filterNodes $.Nodes (skipMode "type")) $.IDType>: error calling gqlIDType: entgql: mixed id types must be type string or implement the graphql.Marshaller/graphql.Unmarshaller interfaces

Seems to be related to the id field being skipped in the history entity since error goes away when commenting out the id check:
for _, field := range original.Fields() {
	// if field.Descriptor().Name != "id" {
		historyFields = append(historyFields, field)
	// }
}

Second problem:
failed to load schema: internal/graphql/schema/query.graphql:6: Undefined type UUID.

Adding the type annotation to the ref field makes the error go away. I suspect there should be some way to configure entgql to use ID for all UUID fields, probably not a problem in enthistory..
field.UUID("ref", uuid.UUID{}).
	Immutable().
	Optional().
	Annotations(
		entgql.Annotation{
			Type: "ID",
		},
	),

Third problem:
cannot use (*enthistory.OpType)(nil) (value of type *enthistory.OpType) as graphql.Unmarshaler value in variable declaration: *enthistory.OpType does not implement graphql.Unmarshaler (missing method UnmarshalGQL)

Adding the methods to OpType makes the error go away:
func (op OpType) MarshalGQL(w io.Writer) {
	io.WriteString(w, op.String())
}

// UnmarshalGQL implements graphql.Unmarshaler interface.
func (op *OpType) UnmarshalGQL(val interface{}) error {
	str, ok := val.(string)
	if !ok {
		return fmt.Errorf("enum %T must be a string", val)
	}
	*op = OpType(str)

	switch *op {
	case OpTypeInsert, OpTypeUpdate, OpTypeDelete:
		return nil
	default:
		return fmt.Errorf("%s is not a valid history operation type", str)
	}
}

To Reproduce
https://github.com/nixxxon/entdemo
Start from the first commit and run go generate . to get the first problem.
Expected behavior
The history entities and GraphQL schema being successfully generated.
Additional context
Thanks for all the great work with this.

@nixxxon Thanks for opening an issue. I'll take a look at these today and try to get a fix in, the bug report repo should help speed this along

@nixxxon I think i got those issues resolved in #38 if you want to take a look.

Mixed Id Types issue required creating a new config for inheriting Id Types on the history models from their original schemas, effectively what you presented
Bad typing in the graphql schema for uuid was actually an issue with enthistory, just needed to get the ID annotations in the right spot like you showed
Optype unmarshalling was a simple as using your snippet

Feel free to pull this branch into your project and give it a try

@nixxxon I think i got those issues resolved in #38 if you want to take a look.

Mixed Id Types issue required creating a new config for inheriting Id Types on the history models from their original schemas, effectively what you presented
Bad typing in the graphql schema for uuid was actually an issue with enthistory, just needed to get the ID annotations in the right spot like you showed
Optype unmarshalling was a simple as using your snippet

Feel free to pull this branch into your project and give it a try

I can confirm that using your branch fixes my problems, good job and thank you!


Known guests specified by org calculating as CCB due to missing logic + one fix

The issue is where the logic should be setting the user to known guest as long as it does not have any > reader access (since it's trying to disqualify IsReader based on matching any higher level) at 229 of ProcessEntitlements in the slCore:
            If isReader And externalNAB Then
                userNote.KnownGuest = "true" 'DNEXT-23857
            End If

However back at 264 of GetPersonDocuments userNote.ExternalNAB = "true" gets set for users in external NABs (logically) but not for external orgs:
                If externalNAB Then
                    userNote.ExternalNAB = "true"
                End If

                If externalORGs(0) <> "" Then
                    For x = 0 To Ubound(externalORGs)
                        If Instr(1, userNote.FullName(0), externalORGs(x), 5) <> 0 Then
                            userNote.ExternalORG = "true"
                            Exit For
                        End If
                    Next
                End If

Starting at line 155 of ProcessEntitlements the ONLY way that externalNAB is set is based on filepath:
        externalNAB = False
        ' if an external directory was chosen to identify CCX users, check to see if the current directory is the one that was chosen
        If GetAdminValue("DAListExternal")(0) <> "" Then
            tmpVal = GetAdminValue("DAListExternal")
            tmpVal = Split(tmpVal(0), "!!")

            ' START - DNEXT-23856
            currentFilePath = Lcase(userNote.NABPath(0))
            externalFilePath = Lcase(Replace(tmpVal(1), ")", ""))

            If currentFilePath = externalFilePath Then
                externalNAB = True

Nowhere in the entitlement script does it check for ExternalOrg, so the agent never updates these users to qualify as known guests as it would if they were in DA directories instead of identified by an external org.  So the doc is never set to Known Guest.  Then checking the user information view the licenseType gets set to CCB by default and then without the known guest flag on the user doc it can't categorize them out.
I fixed this in my local install by adding to the slCore library -> Process Entitlements at line 172 (just after the DA List External check):
       If userNote.externalOrg(0) = "true" Then
            externalNAB = True
       End If

This ended with known guest/CCX orgs properly calculating by their ACL access.

Fixed for DLAU V1.2.5
Associated GitHub bug https://github.com/HCL-TECH-SOFTWARE/domino-license-analysis-utility-DLAU/issues/71


Modularized the simd flags so they can be used individually by files …

…that need specific flags in various combinations.
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (901405e) 83.23% compared to head (9e0d6a4) 83.23%.

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #1082   +/-   ##
=======================================
  Coverage   83.23%   83.23%
=======================================
  Files          56       56
  Lines        5808     5808
=======================================
  Hits         4834     4834
  Misses        974      974

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

closing for a complete PR.


Rails4

Can we get the master updated so that we don't have to research this. People are going to download the latest version of Ruby. It's only natural.

@haslinger does it look good for you?

Absolutely, especially, because Rails 3.x is not maintained any more (for 4 weeks or so now).
So, if people really, really need to stick to Rails 3, they could lock us Redmine-Todo-lists to the current commit: 54d659cfb1869ca7353e370abc16eae6c703ceb3 that is.
P.S.: I haven't updated Redmine myself for some months, so I will give this a try this weekend.

thanks!

Switched to master branch myself. Seems fine.


SW-4365 Carry accession ID across nursery transfers

If a batch was originally created via a nursery transfer from a seed bank, it will
have an accession ID indicating where it came from. If plants from the batch are
then transferred to a different nursery, the newly-created batch should have the
same accession ID so it can be traced back to its original seeds.

Current dependencies on/for this PR:

main

PR #1438   👈

This stack of pull requests is managed by Graphite.


Add support for Google Play In-App Review API

https://android-developers.googleblog.com/2020/08/in-app-review-api.html

👍

https://github.com/AGulev/defreview/releases/tag/2.0.0


[WebView] WebView cannot response phoneNumber click

React native version 0.43
when i click the phone number in  webview,i got the error 'Error code :101  Description:The URL can't be shown'
how can i solve this problem?

Hey, thanks for reporting this issue!
It looks like your description is missing some necessary information. Can you please add all the details specified in the template? This is necessary for people to be able to understand and reproduce the issue being reported.
I am going to close this, but feel free to open a new issue with the additional information provided. Thanks!


v0.8.12 does not install with freetype extra

Describe the issue
Installing Font Bakery v0.8.12 fails with an an error.
To Reproduce
Steps to reproduce the behavior:
$ pip3 install fontbakery[freetype]==0.8.12
...
ERROR: Could not find a version that satisfies the requirement freetype-py<=2.3.0,>2.4.0; extra == "freetype" (from fontbakery[freetype]) (from versions: 0.1, 0.1.1, 0.2.0, 0.3.0, 0.3.1, 0.3.2, 0.3.3, 0.4, 0.4.1, 0.4.2, 0.5.0, 0.5.1, 0.5.3, 1.0, 1.0.1, 1.0.2, 1.1, 1.2, 1.2.1, 2.0, 2.0.0.post1, 2.0.0.post2, 2.0.0.post3, 2.0.0.post4, 2.0.0.post5, 2.0.0.post6, 2.1.0, 2.1.0.post1, 2.2.0rc1, 2.2.0, 2.3.0, 2.4.0)
ERROR: No matching distribution found for freetype-py<=2.3.0,>2.4.0; extra == "freetype"

You might have to do something like this if you have Font Bakery previously installed:
$ pip3 uninstall fontbakery freetype-py
$ pip3 cache purge

Suggested behavior
The install should succeed.
Additional context
I believe the change introduced in #4154 is the cause of this issue. Per PEP 440 the comma is a equivalent to a logical and, so the <=2.3.0,>2.4.0 version specifier translates to version <= 2.3.0 && version > 2.4.0 which no released freetype-py version matches. I believe the correct version specifier for freetype-py should be either <= 2.3.0 to exclude 2.4.0 implicitly or !=2.4.0 to exclude it explicitly.

@felipesanches Thanks for the quick turnaround!


Fix #125, put media sync to background job

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

69 of 80 (86.25%)  changed or added relevant lines in 15 files are covered.
1 unchanged line in 1 file lost coverage.
Overall coverage decreased (-0.2%) to 96.689%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

app/controllers/albums_controller.rb
0
1
0.0%

app/controllers/artists_controller.rb
0
1
0.0%

app/controllers/playlists_controller.rb
0
1
0.0%

app/controllers/settings_controller.rb
4
5
80.0%

app/models/media.rb
28
29
96.55%

app/controllers/users_controller.rb
0
2
0.0%

app/controllers/application_controller.rb
2
6
33.33%

Files with Coverage Reduction
New Missed Lines
%

app/models/user.rb
1
93.75%

Totals

Change from base Build<PHONE_NUMBER>:
-0.2%

Covered Lines:
730

Relevant Lines:
755

💛  - Coveralls


licence problem

The locfit component is distributed without the README file.  The licence it contains says it must be included.
Unfortunately it contains a usage restriction which is considered to make it non-free (e.g. by Debian and potential Fedora packagers) and brings the cufflinks distribution under licence terms which are not simply Boost's:
Locfit code, as distributed, should not, and can not, be used to derive meaningful benchmarks, either or the speed or accuracy of algorithms.  Anyone wishing to use Locfit in any kind of comparative benchmark study must contact and obtain permission from the Author.
The R package for it on CRAN contains a version with a free licence, but it isn't a drop-in replacement for the bundled one.

I'm also interested in this.  This oversight will likely result in Cufflinks to be removed from GNU Guix.

The R package for it on CRAN contains a version with a free licence, but it isn't a drop-in replacement for the bundled one.

The R package does not contain a README, but the R package is by the same original author as the original locfit code, and it is released under the GPL without any additional restrictions.

Cufflinks has since been removed from GNU Guix because of this.


Inconsistencies between rules and their comments

The following rules have inconsistent comments:

ProvideDefaultParameter
UseBOMForUnicodeEncodedFile
UseDeclaredVarsMoreThanAssignments
UseOutputTypeCorrectly
UseShouldProcessForStateChangingFunctions
UseStandardDSCFunctionsInResource.cs
UseVerboseMessageInDSCResource

Fixed:
https://github.com/PowerShell/PSScriptAnalyzer/pull/327


Particles don't remove in /portal remove command

Hi, i am testing portals with particles, i wan't to see all particles and decide one, when i change the particle the old still there, then i try to remove the portal, particles still there
You can fix it pls? And if it's posible add MySQL support, i think some people go to use it!

same problem here, please fix +1

Same issue here.   If you restart the server and log back in you will see the new particle effect if you changed it

I've already fixed this in upcoming update. I only get weekends to work on this stuff so.. Saturday hopefully

This is still an issue in PJP 0.13.6

/portal particle play ENCHANTING_GLYPHS RED
Get white enchanting glyphs
/portal particle play NONE
nothing happened
/portal particle play PORTAL2
get grey enchanting glyphs in addition to the white ones
/portal particles play NONE
nothing happens
restart client, no change.

The only thing I can do to remove the particles is to remove the portal and re-create it.
And I still have that stupid "purple ketchup" behind them

I left the server over night, and it seems that waiting for the server to do it's nightly restart fixed the error with the ketchup.
I have changed the partical a couple times.  The purple comes back and I have to restart the server to remove it again.
I noticed the bubbles are animated way to quick (like it's missing most of its frames).  Not sure if that's your code or Minecraft code, but it looks like a bad .gif from the mid 90's

Resolved in latest release


Update m6l2l3 example.

Related Issues: #417
Requested Reviewers: @lukasturcani
Note for Reviewers: If you accept the review request add a :+1: to this post
Just changing the molecules used in the examples for topology graphs listed in the issue to be more reasonable to what they may actually be used for,

@lukasturcani ready for review!


chore(cxx_common): migrate to Abseil logging

Migrate off of google/glog as it is no longer maintained and onto absl/log as it is.  This unblocks a few other cleanups and re-enables logging-related flags.  This PR includes some hacks to deal with the fact that Abseil logging does not yet have VLOG support.  The pattern used is intended to be trivial to replace on import, but is still ugly.

Ugh, missed the commit fixing that because commitlint didn't like //kythe/cxx/...


[2/2] [GH Actions] Update Pre-merge Integration Tests to use credential and config files

Describe your changes and why you are making these changes
This PR does the following:

Updates our pre-merge integration tests to pick a python version at random, instead of iterating over them all. This mechanism will be useful in the future for our other tests.
Refactors common server setup and upload artifact functionality into their appropriate composite actions, which makes the main yml file much cleaner.
For the upload artifact composite action, you must specify a prefix, which allows for deduplication so that the same artifact (eg. server logs) can be uploaded at the end of a github workflow that has multiple parallel jobs.
Also requests a beefier machine - with 8 cores we can finish these tests in 10 minutes.

Related issue number (if any)
ENG-2350
Loom demo (if any)
Checklist before requesting a review

[ ] I have created a descriptive PR title. The PR title should complete the sentence "This PR...".
[ ] I have performed a self-review of my code.
[ ] I have included a small demo of the changes. For the UI, this would be a screenshot or a Loom video.
[ ] If this is a new feature, I have added unit tests and integration tests.
[ ] I have run the integration tests locally and they are passing.
[ ] I have run the linter script locally (See python3 scripts/run_linters.py -h for usage).
[ ] All features on the UI continue to work correctly.
[ ] Added one of the following CI labels:

run_integration_test: Runs integration tests
skip_integration_test: Skips integration tests (Should be used when changes are ONLY documentation/UI)

:shipit:


Implemented View Models for Tenants

Tried to improve the comments for messaging classes. Let me know what you think and I will do a thorough re-write of all classes in a separate PR once you approve.


Request for adding IFOM.eu as Edu

Many Thanks for the really prompt answer and sorry for the previous misplacement.

@pinolallo First stage of verification passed, official domain for IFOM - ETS is ifom.eu as far as I verified. This is just an informational note. Pull request is still in the review. I appreciate your patience while waiting for the final decision.

@pinolallo Thank you for your patience while waiting for a review and processing your request. Pull request merged.
Please notice that the educational license is exclusively intended for educational purposes. If any employees of the Institute who are not students or teachers need the license, please kindly instruct them to email<EMAIL_ADDRESS>to request an academic discount for a paid license.


"Group by" wrong behaviour when changing group tag of a template

Steps to reproduce:

Go to Images
Choose a template with a group
Go to tags tab of this template in its sidebar
Change a csui.template.group tag value (e.g. if template group is test, change it to tests)
Go to Images list
Apply "group by groups"

Expected result: the template is in the group "General" (as the tag was changed to the one that is not specified in config - it must be moved to General)
Actual result: the template is in tests group
This bug occurs only for grouping. Filtering works well.
Connected feature ID: image_list_groupby

Tested on master


[BUG] Unused params lead to "still have inflight params" error

Bug description
Context: Running inference on a multi-modal LLM , at each decoding step parts of the network are used and depends on the input modality at each step. In my second step, deepspeed goes ahead and fetches part of the network that ends up not being used. The code does assume that this can happen and correctly invalidates the trace. However, for the params that were prefetched but never used, at the end of the step, these are detected as in-flight and result in the RuntimeError(f"still have inflight params").
To Reproduce
My setup is a bit involved. I am thinking it is clear from the description what the issue is. However, if the team feels like they can benefit from a simple reproduction, I can work on creating one. Please let me know.
Expected behavior
I would have expected that when we notice the order of params isn't the same as before, it would be reasonable to also not demand that all the parameters be used. Right now, we tolerate different ordering but require that all the params previously used (hence prefetched) need to be used at some point.
ds_report output
Setting ds_accelerator to cuda (auto detect)--------------------------------------------------DeepSpeed C++/CUDA extension op report
--------------------------------------------------
NOTE: Ops not installed will be just-in-time (JIT) compiled at      runtime if needed. Op compatibility means that your system
      meet the required dependencies to JIT install the op.
--------------------------------------------------
JIT compiled ops requires ninja
ninja .................. [OKAY]
--------------------------------------------------
op name ................ installed .. compatible
--------------------------------------------------
 [WARNING]  async_io requires the dev libaio .so object and headers but these were not found.
 [WARNING]  async_io: please install the libaio-devel package with yum
 [WARNING]  If libaio is already installed (perhaps from source), try setting the CFLAGS and LDFLAGS environment variables to where it can be found.
async_io ............... [NO] ....... [NO]
cpu_adagrad ............ [NO] ....... [OKAY]
cpu_adam ............... [NO] ....... [OKAY]
fused_adam ............. [NO] ....... [OKAY]fused_lamb ............. [NO] ....... [OKAY]
quantizer .............. [NO] ....... [OKAY]
random_ltd ............. [NO] ....... [OKAY]
 [WARNING]  please install triton==1.0.0 if you want to use sparse attention
sparse_attn ............ [NO] ....... [NO]
spatial_inference ...... [NO] ....... [OKAY]
transformer ............ [NO] ....... [OKAY]
stochastic_transformer . [NO] ....... [OKAY]
transformer_inference .. [NO] ....... [OKAY]
--------------------------------------------------
No CUDA runtime is found, using CUDA_HOME='/usr/local/cuda-11.6'
DeepSpeed general environment info:
torch install path ............... ['/home/ec2-user/anaconda3/envs/pytorch_p39/lib/python3.9/site-packages/torch']
torch version .................... 1.13.0
deepspeed install path ........... ['/home/ec2-user/anaconda3/envs/pytorch_p39/lib/python3.9/site-packages/deepspeed']
deepspeed info ................... 0.10.0, unknown, unknown
torch cuda version ............... 11.7
torch hip version ................ None
nvcc version ..................... 11.6
deepspeed wheel compiled w. ...... torch 1.13, cuda 11.7

System info (please complete the following information):

OS: AL2 (Amazon Linux) 5.10.149-133.644.amzn2.x86_64 #1 SMP Tue Oct 18 16:52:42 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
GPU count and types: p3.16xlarge instance from aws, 8 V100 with 16 GB per device
Deepspeed version: 0.10.0
(if applicable) Hugging Face Transformers/Accelerate/etc. versions: transformers: 4.29.1 accelerate 0.21.0
Python version: 3.9.15

Have you solved the problem? My situation is exactly the same as yours.

Hi @alexwangmac I haven't really solved this problem, just worked around it with setting "stage3_prefetch_bucket_size": 0. This is not an ideal solution as you lose the efficiency.
Hoping deepspeed team can help with this soon.

Same

Hi @alexwangmac I haven't really solved this problem, just worked around it with setting "stage3_prefetch_bucket_size": 0. This is not an ideal solution as you lose the efficiency.
Hoping deepspeed team can help with this soon.

I ran into the same problem and your fix worked!
Indeed the problem arises if not all model params are used during inference.

Any update on this? Running into the same issue when I have unused parameters for a given forward pass!

Any update on this? Running into the same issue when I have unused parameters for a given forward pass!

In the config json, set "stage3_prefetch_bucket_size": 0, that should work

In the config json, set "stage3_prefetch_bucket_size": 0, that should work

While this might "work" this still not solves the problem, since this kind of MoE does not properly work with deepspeed. Also I tried to use mixtral on a multi GPU setup and instead of getting this error message the process just hangs infinitely, most likely because parameters are fetched but not used and thus not released. Even with prefetch_bucket_size=0

In the config json, set "stage3_prefetch_bucket_size": 0, that should work

While this might "work" this still not solves the problem for example with mixtral, since this kind of MoE does not properly work with deepspeed. Also I tried to use mixtral on a multi GPU setup and instead of getting this error message the process just hangs infinitely, most likely because parameters are fetched but not used and thus not released. Even with prefetch_bucket_size=0

I have exactly the same issue, when will Mixtral support be added to deepspeed?

(I posted a similar comment on #4808)
I will investigate this issue, but you can use DeepSpeed-FastGen (DeepSpeed-MII) for text generation. The example is available here. I verified that Mixtral works just by modifying the model name.
It is easier to use "non-persistent" mode for testing purpose, but "persistent" mode will give you the best performance. Please refer to DeepSpeed-MII for more details.

Hi everyone,
#4966 should have fixed this issue. You can find working example there.
The PR was already merged into master. Please feel free to try, but I still recommend using DeepSpeed-FastGen for text generation. It is much faster and supports Mixtral.

Hi, I also found this problem also in my experiments. It seems in generation some parameters are not used.
Except the PR, a simple workaround can be passing a dummy input to invoke that unused parameter in inference.
While warnings like "Invalidate trace cache @ step 1: expected module 1704, but got module 1703" still appears, but the training and generation seems to be fine.


UPDATE: Documentation glossary and fixes

Did you forget to push something? There is nothing about the glossary?


Have to reset custom domain after every push

I'm probably missing something here...
Every time the main branch is updated (and the gh-pages branch automatically updated via actions) the custom domain in Settings > Pages changes back to agully1.github.io and I have to manually reset it to knowledgebase.acoustics.ac.uk

Have added a cname file as suggested here but that doesn't seem to have fixed the issue

Fixed using these instructions


[Bug] RateLimiter lock contention when use precise publish rate limiter

Search before asking

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

After enabled the preciseTopicPublishRateLimiterEnable configuration in broker.conf, if one topic on the broker exceeds the publish rate limit (for example, 1MB/s), it will cause lock contention, leading to an increase in the 99th percentile write latency for other topics that have not reached the rate limit.

The profile shows that there is lock content inside the method org.apache.pulsar.broker.service.PrecisPublishLimiter#tryAcquire.

pulsar-3.0.1.lock.profile.008.html.zip
Minimal reproduce step
Noticed in a fork of 2.8.1, reproduced in 3.0.1 on Linux CentOS 7.9 3.10.0-1160.99.1.el7.x86_64
pulsar-admin namespaces create public/ratelimited
pulsar-admin namespaces set-publish-rate -b 1048576 public/ratelimited
pulsar-admin namespaces policies public/ratelimited
pulsar-perf produce persistent://public/default/no-rate-limit
pulsar-perf produce -r 1600 -ioThreads 4 -n 100 persistent://public/ratelimited/topic-1

What did you expect to see?
One topic exceeds publish rate limit should not effect other topics write latency.
What did you see instead?
Another topic write latency also increased.
Anything else?
No response
Are you willing to submit a PR?

[ ] I'm willing to submit a PR!

Hello, I am also learning pulsar recently, have you found a solution to this problem？

This is the source code of the problem, after enabled the preciseTopicPublishRateLimiterEnable configuration in broker.conf,  the producer will fight for the lock, I do not know if it is the problem, hope that someone can advise

Sorry for late reply.
The current publish rate limiting is based on setting the autoRead flag of the Netty channel to false. However, autoRead is just a hint in Netty, not a guarantee (if anyone is familiar with this, a detailed explanation would be great). As a result, topics that have already been rate-limited may call the isTopicPublishRateExceeded method multiple times before the next rate-limiting period arrives, which is unnecessary. So, an optimization I'm thinking of is to set a flag after a topic triggers rate limiting, to avoid having to check whether the topic has already been rate-limited through the isTopicPublishRateExceeded method each time.
Of course, we can also optimize the implementation of org.apache.pulsar.common.util.RateLimiter. Perhaps an implementation based on Compare-And-Swap (CAS) would perform better than synchronized. All of these ideas need to be validated through experimentation.

There is a related discuss in mail list: https://lists.apache.org/thread/13ncst2nc311vxok1s75thl2gtnk7w1t

Sorry for late reply.
The current publish rate limiting is based on setting the autoRead flag of the Netty channel to false. However, autoRead is just a hint in Netty, not a guarantee (if anyone is familiar with this, a detailed explanation would be great). As a result, topics that have already been rate-limited may call the isTopicPublishRateExceeded method multiple times before the next rate-limiting period arrives, which is unnecessary. So, an optimization I'm thinking of is to set a flag after a topic triggers rate limiting, to avoid having to check whether the topic has already been rate-limited through the isTopicPublishRateExceeded method each time.
Of course, we can also optimize the implementation of org.apache.pulsar.common.util.RateLimiter. Perhaps an implementation based on Compare-And-Swap (CAS) would perform better than synchronized. All of these ideas need to be validated through experimentation.

Sorry, I am a beginner of pulsar, there is a problem I don't understand, can you help me solve it? The questioner has said affected other theme writing efficiency, the current theme open preciseTopicPublishRateLimiterEnable, why can affect other theme. I can't find the answer according to your answer, can you help me?

In Pulsar internal, there are multiple topics that depend on the same thread for message writing (such as Netty's EventLoop and OrderedExecutor). If, for some reason, these threads encounter a performance bottleneck, such as the lock contention observed in this case, then even those topics not directly causing the lock contention will be affected, as long as they are also bound to these same threads.

Sorry for late reply.
The current publish rate limiting is based on setting the autoRead flag of the Netty channel to false. However, autoRead is just a hint in Netty, not a guarantee (if anyone is familiar with this, a detailed explanation would be great). As a result, topics that have already been rate-limited may call the isTopicPublishRateExceeded method multiple times before the next rate-limiting period arrives, which is unnecessary. So, an optimization I'm thinking of is to set a flag after a topic triggers rate limiting, to avoid having to check whether the topic has already been rate-limited through the isTopicPublishRateExceeded method each time.
Of course, we can also optimize the implementation of org.apache.pulsar.common.util.RateLimiter. Perhaps an implementation based on Compare-And-Swap (CAS) would perform better than synchronized. All of these ideas need to be validated through experimentation.

Sorry, I am a beginner of pulsar, there is a problem I don't understand, can you help me solve it? The questioner has said affected other theme writing efficiency, the current theme open preciseTopicPublishRateLimiterEnable, why can affect other theme. I can't find the answer according to your answer, can you help me?

In Pulsar internal, there are multiple topics that depend on the same thread for message writing (such as Netty's EventLoop and OrderedExecutor). If, for some reason, these threads encounter a performance bottleneck, such as the lock contention observed in this case, then even those topics not directly causing the lock contention will be affected, as long as they are also bound to these same threads.

Of course, we can also optimize the implementation of org.apache.pulsar.common.util.RateLimiter. Perhaps an implementation based on Compare-And-Swap (CAS) would perform better than synchronized. All of these ideas need to be validated through experimentation.

@Shawyeok I'm working on a non-blocking implementation that uses CAS. Please check https://github.com/lhotari/async-tokenbucket for the PoC and performance test.
In addition, I'll be fixing the issue in handling the way how autoread is toggled.

Hello, I am also learning pulsar recently, have you found a solution to this problem？

@1625567290 Just curious to learn about your motivation to start learning Pulsar here. This might not be the easiest way to learn Pulsar. :)

Of course, we can also optimize the implementation of org.apache.pulsar.common.util.RateLimiter. Perhaps an implementation based on Compare-And-Swap (CAS) would perform better than synchronized. All of these ideas need to be validated through experimentation.

@Shawyeok I'm working on a non-blocking implementation that uses CAS. Please check https://github.com/lhotari/async-tokenbucket for the PoC and performance test.
In addition, I'll be fixing the issue in handling the way how autoread is toggled. (WIP at https://github.com/lhotari/pulsar/blob/lh-rate-limiter-improvement/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/ThrottleTracker.java )

@lhotari Cool! I will study and verify your solution as soon as possible after my vacation, which may be a few days.

@lhotari Cool! I will study and verify your solution as soon as possible after my vacation, which may be a few days.

Sounds good. Please check the blog post https://codingthestreams.com/pulsar/2023/11/22/pulsar-slos-and-rate-limiting.html for the full context.

@Shawyeok There's now "PIP-322: Pulsar Rate Limiting Refactoring" (#21680) to address this issue. The changes are in the draft PR #21681 . Please review! Thanks


rabbitmq-server: 3.10.6 -> 3.10.7

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/rabbitmq/rabbitmq-server/releases.
meta.description for rabbitmq-server is: "An implementation of the AMQP messaging protocol"
meta.homepage for rabbitmq-server is: "https://www.rabbitmq.com/"
meta.changelog for rabbitmq-server is: ""
Updates performed

Version update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
found 3.10.7 with grep in /nix/store/skpb7582lzhf92h59qac18l9n42lqx7v-rabbitmq-server-3.10.7
found 3.10.7 in filename of file in /nix/store/skpb7582lzhf92h59qac18l9n42lqx7v-rabbitmq-server-3.10.7

Rebuild report (if merged into master) (click to expand)

1 total rebuild path(s)

1 package rebuild(s)

First fifty rebuilds by attrpath
rabbitmq-server

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/skpb7582lzhf92h59qac18l9n42lqx7v-rabbitmq-server-3.10.7 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A rabbitmq-server https://github.com/r-ryantm/nixpkgs/archive/4b05b28a81805cbb4fd3bab6ce6322041c3f240c.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/skpb7582lzhf92h59qac18l9n42lqx7v-rabbitmq-server-3.10.7
ls -la /nix/store/skpb7582lzhf92h59qac18l9n42lqx7v-rabbitmq-server-3.10.7/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

rabbitmq-server

Maintainer pings
cc @turion for testing.

Result of nixpkgs-review pr 186499 run on x86_64-linux 1

1 package built:

rabbitmq-server


hide mermaid code?

This is nice, but is there a way to hide the mermaid code, showing only the rendered graph?  It would be nice to keep the code within logseq so that I can change it later, and then re-render it.

You can just collapse the block, and it will hide the mermaid code.

Oh you're right.  I tried clicking the bullet symbol immediately above the code, which didn't do anything.  Not sure what that bullet is, but clicking the bullet immediately above the rendered image does what I want -- seems like it's kind of like a bullet title.
Thanks.


Eye tracker far off from tobii

The eye position reported by Precision Gaze is very far off from what tobii shows. It gets worse as you look to the bottom right of the screen, and better at the upper left. The tobii indicator is where I'm actually looking.

It seems like it was working better before the latest update.
I'm using EyeX and eViacam mode. On Windows 10.

Nevermind, I rebooted my computer and it works right now. I think it's because I booted up the computer first in just laptop mode, then switched to docked with a monitor and the tobii thing.


Added support for conversion of values between UOMs

Why make convert silently do nothing rather than fail in a detectable way?

Comes down to caller/callee responsibility. In my borel branch I've got the calling code do logging/contingency. Should that be here instead? Alternatively we could have parameterised UOMs, but that would start getting very messy for such a small thing.

What was the issue with the Maybe version?

@tranma ^

Just make convert return a Maybe, the callee should know if the conversion fails and do something appropriate


Change lightbox options

Hi!
Thanks for your addon. It is possible to change the lightbox options like "disableScrolling", "albumLabel"?

Added in 1.0.1


MTGO output fallbacks

First: thanks a bunch for implementing https://github.com/Senryoku/MTGADraft/issues/346! My draft group tried it last week and it's almost perfect, but there's one issue: my cube on CubeCobra includes a few non-MTGO cards in cases where the same promo art exists in both places but with a different card ID, such as this versus this, since the physical card images simply look a lot better. Unfortunately, this breaks the MTGO export because those cards don't have MTGO IDs!
I doubt it's feasibly to try to match up artwork, but it would be very cool if instead of erroring here, the export just chose an arbitrary MTGO ID for the same card. It's not a big deal if we end up with this Raugrin Triome in the decklist and we have to hit "update with versions in my collection" a few times.

Thanks for the feedback!
I slightly improved the export in b0c77cd, it will check other printings before giving up and even if this also fails, it will still export the rest, warning the user of the missing cards.
I'll try to deploy it faster than last time :)

It works—mostly sort of. I've noticed that my decks in particular seem to fail to export... it pops up the "exporting deck..." dialog but I never get a download. I don't see anything obvious going wrong in the console, but I can check again.
One of our players also noticed that Char (which is GK1-28 in my CubeCobra) got downloaded as Abzan Charm instead. There might be a text-inclusion search going on instead of a card name match?

The second problem should be fixed by 480e038: I updated the request to use exact names.
Not sure about your own problem, do you have an example deck (in MTGA format :) ) that exhibits the issue?
No error made me think maybe the requests were simply not going through, so I've added some timeouts to the Scryfall API requests. Maybe you'll have some console output next time.

Should be fixed by 7edbbfd029e4dcd50944b5c3b70391423d634ce1.


Bug: leaderboard functions dont work properly

Bug Type
Function
Bugged Function
$userLeaderboard
$getLeaderboardInfo and maybe more

Version of aoi.js
v6.6.1
Version of Node.js
v20.10.0 (LTS)
Excepted Output
$userLeaderboard and $getLeaderboardInfo dont return info about a user before using $getUserVar on them (you have to use $getUserVar on everyone to get everyone on the leaderboard)
Relevant log output
Bot doesnt return any error

Code of Conduct

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

well yeah ofc u cant expect everyone to be in leaderboard without a certain value to rank on,
leaderboard functions get the data from .sql file

cc: @USERSATOSHI

it seems like some weird compability issue i am checking this rn

@papaaj ok so issue is with aoi.db's fetchFile's path finder
fixing it rn

this is fixed


Write method for getting stations on a given line

I believe this is actually done, just need to confirm. I know the API actually works through using postman, but want to review and possible add more tests one last time


Llama models with custom configurations and uploading to Hugging Face

It will be great if torchtitan could support 1) training llama models with custom configurations (like different number of kv heads, number of layers, etc.) and 2) direct uploading of the trained weights to HF hub, where people can download and run the model by simply referencing the HF model repo id. These supports will greatly help the community to investigate the tradeoff between size, speed, and accuracy of a range of models.

Currently in torchtitan, only a fixed set of classic llama model architectures are allowed, and they are hard-coded here and here. Enabling custom inputs of model parameters in config files and feed it to ModelArgs should be straightforward, maybe with a script or a helper function.

For uploading to HF hub, a script from HF could help converting torchtitan's output weights to HF format (thanks @tianyu-l for mentioning this), but a params.json file and a tokenizer.model file are needed for the script. tokenizer.model is redownloaded before running torchtitan, so it only needs to be linked. On the other hand, params.json can be easily written by inspecting the training config.

I can help implement these features, but am wondering if the torchtitan team would be interested in having these features in the torchtitan repo?
Thanks.

@bkchang Thanks for the note. The use case sounds very interesting!
For 2, a simple script should suffice. I agree it would be good to have one, although whether or not we should land it in (the main branch of) torchtitan is something we need to discuss further. (I can report back once we have a better idea.)
To summarize, out of the three popular formats torch.save, DCP (torchtitan default), HF, currently we have

DCP -> torch (in PyTorch, see https://github.com/pytorch/torchtitan/blob/main/docs/checkpoint.md)
torch -> HF (from HF, although missing params.json if saved from DCP)
HF -> DCP (thanks to https://github.com/pytorch/torchtitan/issues/305#issuecomment-2129251951)

Ideally we should also have

torch -> DCP (we should be able to load llama weights into torchtitan directly, which currently is only possible if there's a single .pt/.pth file)
DCP -> HF (this probably should sit in HF instead of PyTorch/torchtitan)

For 1, it is trickier. The goal of torchtitan is to demonstrate distributed training technology rather than becoming a trainer. The preset configs are more for showcasing purposes. Besides, the training loss convergence has been verified for each of the config files (including the hyperparameters). Although we might not want to directly support this feature, it should be fairly easy for users to add new configs.


Added a sidebar for navigation

I have added a sidebar for navigation on the page
PR Title
The purpose of this Pull Request is to fix #91
Description
This will display all the content heading in a sidebar. It will easy to navigate the website.
Screenshot

is this okay ?

is it possible to shift the main content to the right a bit such that 25% from left is the navbar and rest 75% is the main content..
also is the navbar scrollable as well? @vaibhav-009

like this ?
And the navbar is scrollable.

also what about this in the mobile? can you add a hamburger navbar

Yes I can add it but I will appreciate if you can merge this PR and raises a separate issue for hamburger navbar.


Provide ARM64 binary

At Arm and Linaro we are working on getting Kolla-Kubernetes to deploy OpenStack on ARM64.  But the deployment need to deploy haproxy_exporter docker image, which the image building need haproxy_exporter binary for ARM64.
We may help with getting it built.

There are now arm64 images in the Docker manifest.


Read from Console / STDIN ??

I'm writing an Elixir CLI and it would be handy to have a getch or readline function.  I did a simple test with Zig, wondering if I could read STDIN characters from the console.
~Z"""
  const stdout = std.io.getStdOut().writer();
  const stdin = std.io.getStdIn().reader();

  /// nif: console_test/0
  fn console_test() !void {
    var buf: [100]u8 = undefined;
    try stdout.print("ENTER STRING > ", .{});
    var num = try stdin.read(buf[0..]);
    try stdout.print("NUMBYTES {}\n", .{num});
    try stdout.print("String ({s})\n", .{buf[0..num]});
  }
"""

This code works as a standalone ZIG executable (using zig build-exe ...) but not as a Zigler Nif.  Zigler's threaded, dirty_io and yielding options all failed for me.
Is there any way to use Zigler to read characters from the console?

I honestly don't know, but I don't recommend it -- for cli interactions it's probably better to use erlang's IO, because it will have possession of the stdin file descriptor

ok thanks!


KIT Guest Clusters ETCD pods unable to become ready when using Karpenter v0.11.0+

When using Karpenter version v0.12.1, using a Provisioner that has a small ttlSecondsAfterEmpty can result in removing the node that an ETCD replica is scheduled to. The associated PVC for the ETCD pod then never binds to the volume.
The initial thought is since Karpenter does not pre-bind to pods anymore after v0.11.0, this may introduce some undesired behavior for the EBS Volumes on the ETCD instances.
The nodes for the PVCs for ETCD 1 and 2 were never deleted. Even though Karpenter brought up a replacement node for ETCD 0, the pod and PVC never binded
NAME                                 STATUS    VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
etcd-data-kit-guest-cluster-etcd-0   Pending                                                                        kit-gp3        23m
etcd-data-kit-guest-cluster-etcd-1   Bound     pvc-f993bc10-327d-4414-a3b2-acc95d956ab0   40Gi       RWO            kit-gp3        23m
etcd-data-kit-guest-cluster-etcd-2   Bound     pvc-f781eb15-4bfb-4395-b2c1-52b53c54a63a   40Gi       RWO            kit-gp3        23m

➜  k get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                                             STORAGECLASS   REASON   AGE
pvc-f781eb15-4bfb-4395-b2c1-52b53c54a63a   40Gi       RWO            Delete           Bound    tekton-tests/etcd-data-kit-guest-cluster-etcd-2   kit-gp3                 22m
pvc-f993bc10-327d-4414-a3b2-acc95d956ab0   40Gi       RWO            Delete           Bound    tekton-tests/etcd-data-kit-guest-cluster-etcd-1   kit-gp3                 22m

This is the error message when describing the ETCD pod.
  Warning  FailedScheduling  20m                 default-scheduler  running PreBind plugin "VolumeBinding": binding volumes: failed to get node "ip-192-168-86-66.us-west-2.compute.internal": node "ip-192-168-86-66.us-west-2.compute.internal" not found
  Warning  FailedScheduling  16m (x2 over 18m)   default-scheduler  (combined from similar events): 0/5 nodes are available: 1 node(s) didn't find available persistent volumes to bind, 2 node(s) didn't have free ports for the requested pod ports, 2 node(s) didn't match Pod's node affinity/selector.
  Warning  FailedScheduling  15m (x6 over 19m)   default-scheduler  0/5 nodes are available: 1 Insufficient cpu, 1 Insufficient memory, 1 Too many pods, 2 node(s) didn't have free ports for the requested pod ports, 2 node(s) didn't match Pod's node affinity/selector.
  Warning  FailedScheduling  15m (x6 over 19m)   default-scheduler  0/5 nodes are available: 1 node(s) had taint {node.kubernetes.io/not-ready: }, that the pod didn't tolerate, 2 node(s) didn't have free ports for the requested pod ports, 2 node(s) didn't match Pod's node affinity/selector.
  Warning  FailedScheduling  11m (x5 over 19m)   default-scheduler  0/4 nodes are available: 2 node(s) didn't have free ports for the requested pod ports, 2 node(s) didn't match Pod's node affinity/selector.
  Warning  FailedScheduling  97s (x20 over 18m)  default-scheduler  0/5 nodes are available: 1 node(s) didn't find available persistent volumes to bind, 2 node(s) didn't have free ports for the requested pod ports, 2 node(s) didn't match Pod's node affinity/selector.

From what I've seen, this is caused by the PVC having a selected node annotation for a node that was deleted.
running PreBind plugin "VolumeBinding": binding volumes: failed to get node "ip-192-168-86-66.us-we
st-2.compute.internal": node "ip-192-168-86-66.us-west-2.compute.internal" not found


Encapsulate ObservabilitySystem

This is an alternate solution to #4227. It implements the encapsulation discussed there. Merge one or the other, but not both.
Moving the encapsulation into a separate module and using @_implementationOnly helps enforce API integrity.

This approach makes sense to me — thanks for taking the initiative for this!  I think this API looks like a good start at providing this to clients.

@SDGGiesbrecht @abertelrud @neonichu been thinking more about this and wondering if we are constraining ourselves too much to the existing API and modeling. building this API gives us an opportunity to rethink some of the concepts and one them could be to do away with the concept of passing observability collector to all the API and replace it with a more conventional API design. currently the observability scope is used in two ways:

receive debug and warning information that could/should be exposed to the end user
collect errors and notify of error state

IMO we could design an API that handles this more elegantly: the functions can throw errors if any diagnostics errors have been found, and route the informational / debug diagnostics via the delegate which is designed to handle such type of information.
from an implementation point of view, the underlying workspace APIs can stay the same more or less (maybe add a method to the delegate), and the new API layer can do the logic specified above, e.g. something like:
public func loadRootPackage(at path: AbsolutePath) async throws -> Package {
  let observabilityScope = makeCollectingObservabilityScope()
  let package = try await loadRootPackage(at: path, observabilityScope: observabilityScope)
  guard observabilityScope.errors.isEmpty else {
     throw WorkspaceOperationError(errors: observabilityScope.errors)
  }

wdyt?

wdyt?

Personally, I'm not a big fan of the error wrapping many errors pattern since it typically requires custom handling to get reasonable error presentation and that fact isn't visible via the API.
This design would also split up errors and other diagnostics which doesn't seem reasonable for e.g. manifest compilation and also would probably not be appropriate for the build log itself.
So I think using observability scope can give us a more consistent API overall?

Personally, I'm not a big fan of the error wrapping many errors pattern since it typically requires custom handling to get reasonable error presentation and that fact isn't visible via the API.

My reading of @tomerd's suggestion is that all the diagnostics would still be seen by the delegate, though, so that if it wants to present them all through that API, it could.  That's also what the sample code suggests.
I would definitely not want to see some diagnostics going through one API and others going through another, but I don't think that's what's being suggested.  Having the causal errors attached to the overall error in addition to going through the delegate seems reasonable.
Given that understanding, I think this is a reasonable suggestion and I do think that standardizing on throwing errors is a good one.

I also agree with the sentiment of not wanting to pass around the scope everyone.  Perhaps something thread-local can help there, as we've talked about.  We do still need the context that gets associated with each diagnostic through the scope's metadata, so I'm not sure we can avoid passing it in all cases (unless we use thread locals).

I would definitely not want to see some diagnostics going through one API and others going through another, but I don't think that's what's being suggested. Having the causal errors attached to the overall error in addition to going through the delegate seems reasonable.

exactly, this is what I am suggesting. iow:

the workspace delegate gets a new function from which the client does diagnostics handling (printing, etc)
the APIs that take scope get wrapped in a throwing API, the wrapper checks the diagnostics for errors and throws if any found (as in the example above)

one added benefit with this pattern is that it will set the ground for finally doing away with the "fatalError" diagnostics pattern

exactly, this is what I am suggesting. iow:

the workspace delegate gets a new function from which the client does diagnostics handling (printing, etc)
the APIs that take scope get wrapped in a throwing API, the wrapper checks the diagnostics for errors and throws if any
found (as in the example above)

But isn't that causing exactly the problem I am mentioning above? Clients will get the same errors both through the delegate and via throwing which means they need a custom presentation or they'll end up with dupes.

But isn't that causing exactly the problem I am mentioning above? Clients will get the same errors both through the delegate and via throwing which means they need a custom presentation or they'll end up with dupes.

the way I was thinking about it was that a client would choose if to handle the printing of the errors via the delegate or via the call site but never both. this way simple clients can even ignore the whole delegate and diagnostics collection and focus only on classic error handling, while more sophisticated clients would ignore the thrown error. maybe a better way to express this is for the APIs to continue and throw a Diagnostics.fatalError with a new "diagnosticsKey" so clients can filter the relevant diagnostics that came through the delegate if interested

But isn't that causing exactly the problem I am mentioning above? Clients will get the same errors both through the delegate and via throwing which means they need a custom presentation or they'll end up with dupes.

the way I was thinking about it was that a client would choose if to handle the printing of the errors via the delegate or via the call site but never both. this way simple clients can even ignore the whole delegate and diagnostics collection and focus only on classic error handling, while more sophisticated clients would ignore the thrown error if its of the "diagnostics" type, maybe a better way to express this is for the APIs to throw a DiagnosticErrors so its easy to ignore that specific case (which starts to sound allot like Diagnostics.fatalError)

I like this approach, since the client can choose.  I think in practice any client that presents diagnostics would implement the delegate method, but they probably already do for things like "willDoSomething" and "didDoSomething".  So I think this is a good approach.

@neonichu wdyt?

I am not familiar enough with the diagnostics model to follow the discussion very well anymore. (All the concrete use cases I work with expect the package to be in working condition to begin with, and so upon failure they simply tell the user something like, “Your package cannot be loaded, debug it with SwiftPM and then try again.” For that, we only needed the methods to be exposed enough to be callable again; we were only dropping the diagnostics anyway.)
The things you are talking about are probably valuable to other use cases, but I am not able to devote enough time to it to iron out a fresh API. Would you be willing to either merge this as a starting point or to copy the branch so that you (or someone else) can continue the work directly at your own pace?

@neonichu wdyt?

It's neither here nor there to me, but since the current approach also requires custom error handling because of Diagnostics.fatalError it seems fine.

thanks @SDGGiesbrecht. is this blocking you in any way or you would like us to take it over on our timeline?

It is not blocking anything. We only use x.x-RELEASE tags anyway, so there is no rush.


feat : Remove user.display_name column from DB

What was added

edited user services to reflect db changes
column user.display_name is dropped

Related Issues

link related issues here
REPO_NAME #issueNum

Future Works

What else should be done ?

Checklist

[x] I have performed unit tests
[x] I have added necessary docs
[x] I have checked for potential bugs & issues

it's pretty straightforward, removing the user.display_name was done correctly!


Mekanism crashes on minecraft startup

Whenever I attempt to launch my game it crashes almost immediatly after I hit the Launch button.
Below is the fml-client-latest log(I had to move it into a txt file to upload it):
fml-client-latest.txt

Latest NVidia video card drivers broke something. Reinstall an older driver.

That, or the newly released version with a bug fix (version 378.57).

It's been fixed? I can update my drivers again?

There is a new version yes. I do not know if it's beta or not.

I've looked into it. It's a hot fix version, not certified, so it's not on the official downloads.
http://nvidia.custhelp.com/app/answers/detail/a_id/4378/~/geforce-hot-fix-driver-version-378.57


Make package pip installable.

pip install renn has a nice ring to it 😃

Done: https://pypi.org/project/renn/


Added links, cleaned up formatting

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the master branch of freeCodeCamp.
[x] None of my changes are plagiarized from another source without proper attribution.
[x] My article does not contain shortened URLs or affiliate links.

If your pull request closes a GitHub issue, replace the XXXXX below with the issue number.
Closes #XXXXX

Closed and Reopened this PR to attempt to resolve a specific Travis build failure.

@Shermjj
Thank you for your contribution!


Add support for Swiftkey Android keyboard

Add support for Swiftkey Android keyboard
🔍 Description
Added Swiftkey to the available Android keyboards and the Xpaths needed to map the keys and suggestions.
🧐 Context
Only for Android devices (emulators and real devices)
⚠ Side-effects / Shortcomings

The numbers layout is not mapped

✅ How this was tested ?

To map the keys run kebbie show_layout -K swiftkey
To evaluate the keyboard run kebbie evaluate -K swiftkey

🌱 Checklist

[ ] Perform self-review of my own code
[ ] Comment the code, particularly in hard-to-understand areas
[X] Update the documentation accordingly to the new code
[ ] Lint / format the code
[ ] Update existing tests / Add new tests
[X] Tests are passing locally

Lint is not passing because the Emulator constructor is too complex. I think it's okay to just put # noqa: C901, similarly to here : https://github.com/FleksySDK/kebbie/blob/main/kebbie/emulator.py#L428
Then you can fix the other issues with :
pip install ruff
ruff . --fix
ruff format . --fix

For the tests, they are all passing, but since you added some line of code, the coverage decreased from 78% to 77%. The job is failing because the coverage badge wasn't updated.
You can update it with :
pip install -e .[test]
pytest
coverage-badge -o .github/badges/coverage.svg -f

(I should really find a better way, if the badge could update automatically that would be great...)

Fixed

@QADavidCalvo I took the liberty to push code in your PR. Summary of my changes :

Fix key detections for Swiftkey (some key were misnamed in the XML document, had to rename them to match our other keyboards)
Some swiftkey-specific behavior
Add documentation on how to install swiftkey and set it up


Implement Path for ffmpeg

Added https://www.npmjs.com/package/ffmpeg-for-homebridge as a dependency, however needs an option to pick it up, works for some platforms well but needs to be simple.

Should be in the commit that I made earlier today, README typo notwithstanding.


feat: add option to add package extra args

Add option to add package extra args
const pluginConfig = {
  packageArgs: "--key mykey --keyring ~/.gnupg/secring.gpg"
}

@alita1991 please give this a try, I published a pre-release<EMAIL_ADDRESS>Closes https://github.com/nflaig/semantic-release-helm/issues/11

Hi @nflaig,
I added oci:// because of the following error:
[10:55:30 PM] [semantic-release] › ✘  An error occurred while running semantic-release: Error: Command failed with exit code 1: helm push <redacted> <redacted url>
Error: scheme prefix missing from remote (e.g. "oci://")

I'm using helm version 3.11.2

@alita1991 rebased this branch and included your fix in<EMAIL_ADDRESS>

Hi @nflaig , I got an issue while testing the feature, here is my config:
"semantic-release-helm3",
 {
    chartPath: chartPath,
    registry: registry,
    packageArgs: "--sign --key 'John Smith' --keyring /home/coder/.gnupg/secring.gpg --passphrase-file /home/coder/.gnupg/secring.key",
 }

[8:47:41 PM] [semantic-release] › ✘  Failed step "publish" of plugin "semantic-release-helm3"
[8:47:41 PM] [semantic-release] › ✘  An error occurred while running semantic-release: Error: Command failed with exit code 1: helm package ./chart --sign --key 'John Smith' --keyring /home/coder/.gnupg/secring.gpg --passphrase-file /home/coder/.gnupg/secring.key
Error: private key not found
    at makeError (/usr/lib/node_modules/semantic-release-helm3/node_modules/execa/lib/error.js:60:11)
    at handlePromise (/usr/lib/node_modules/semantic-release-helm3/node_modules/execa/index.js:118:26)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async publishChartToRegistry (/usr/lib/node_modules/semantic-release-helm3/lib/publish.js:68:36)
    at async module.exports (/usr/lib/node_modules/semantic-release-helm3/lib/publish.js:19:13)
    at async publish (/usr/lib/node_modules/semantic-release-helm3/index.js:30:5)
    at async validator (file:///usr/lib/node_modules/semantic-release/lib/plugins/normalize.js:36:24)
    at async file:///usr/lib/node_modules/semantic-release/lib/plugins/pipeline.js:37:34
    at async file:///usr/lib/node_modules/semantic-release/lib/plugins/pipeline.js:31:3
    at async pluginsConfigAccumulator.<computed> [as publish] (file:///usr/lib/node_modules/semantic-release/lib/plugins/index.js:87:11) {
  shortMessage: "Command failed with exit code 1: helm package ./chart --sign --key 'John Smith' --keyring /home/coder/.gnupg/secring.gpg --passphrase-file /home/coder/.gnupg/secring.key",
  command: "helm package ./chart --sign --key 'John Smith' --keyring /home/coder/.gnupg/secring.gpg --passphrase-file /home/coder/.gnupg/secring.key",
  escapedCommand: `helm package "./chart" --sign --key "'John" "Smith'" --keyring "/home/coder/.gnupg/secring.gpg" --passphrase-file "/home/coder/.gnupg/secring.key"`,
  exitCode: 1,
  signal: undefined,
  signalDescription: undefined,
  stdout: '',
  stderr: 'Error: private key not found',
  failed: true,
  timedOut: false,
  isCanceled: false,
  killed: false,
  pluginName: 'semantic-release-helm3'
}
Error: Command failed with exit code 1: helm package ./chart --sign --key 'John Smith' --keyring /home/coder/.gnupg/secring.gpg --passphrase-file /home/coder/.gnupg/secring.key

I can reproduce the issue if I run the escapedCommand
helm package "./chart" --sign --key "'John" "Smith'" --keyring "/home/coder/.gnupg/secring.gpg" --passphrase-file "/home/coder/.gnupg/secring.key"
Error: private key not found

I have no issues if I run the command
helm package ./chart --sign --key 'John Smith' --keyring /home/coder/.gnupg/secring.gpg --passphrase-file /home/coder/.gnupg/secring.key
Successfully packaged chart and saved it to: /home/coder/argocd-service/argocd-1.1.12.tgz

The other features are still working, we just have to address the command parser.

looks like the parsing was a bit to naive, should properly handle quoted substrings now, published<EMAIL_ADDRESS>

Hi @nflaig,
Tested the latest changes, working like charm.
[9:49:20 PM] [semantic-release] [semantic-release-helm3] › ℹ  Chart successfully published.
[9:49:20 PM] [semantic-release] › ✔  Completed step "publish" of plugin "semantic-release-helm3"
[9:49:20 PM] [semantic-release] › ✔  Published release 1.1.13 on default channel

I even tested a helm pull and is downloading both files (chart + provenance).
https://helm.sh/docs/topics/provenance/
I think you can merge it.
Thank you


refactor: Optimize GoogleScholarTool

Description
GoogleScholarTool.get_author_publications() & GoogleScholarTool.get_publication_by_title() support passing in author
Motivation and Context
Related #1121

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

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

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

Implemented Tasks

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

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

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

close as finished in https://github.com/camel-ai/camel/pull/1124


It's still relevant. AI forgets previous conversation (https://github.com/PawanOsman/ChatGPT.Net/issues/6)

It's still relevant. AI forgets previous conversation (https://github.com/PawanOsman/ChatGPT.Net/issues/6)

can you provide a reproducible example

+1 I have same problem, just run the following block twice. I expect the chat to stay in the same chat, but now I have two.

    var chatGpt = new ChatGpt(new ChatGptConfig
    {
        UseCache = true
    });
    await chatGpt.WaitForReady();
    string sessionToken =
        "xxxx";
    var chatGptClient = await chatGpt.CreateClient(new ChatGptClientConfig
    {
        SessionToken = sessionToken,
        AccountType = AccountType.Free
    });

    var response = await chatGptClient.Ask(args1[0], "auto-bot");
    Console.Error.WriteLine("Query time: " + stopwatch.Elapsed.Humanize(2));
    Console.WriteLine(response);

you need to run this part one time

var chatGpt = new ChatGpt(new ChatGptConfig
{
UseCache = true
});
await chatGpt.WaitForReady();
string sessionToken =
"xxxx";
var chatGptClient = await chatGpt.CreateClient(new ChatGptClientConfig
{
SessionToken = sessionToken,
AccountType = AccountType.Free
});

then you can run this part as many as you want

var response = await chatGptClient.Ask(args1[0], "auto-bot");
Console.Error.WriteLine("Query time: " + stopwatch.Elapsed.Humanize(2));
Console.WriteLine(response);

Thanks for reply, is it possible to run part 1 once I a dotnet-process and in another process reuse it?

if the connection was lost, then calling the ask() method will restore it?

Thanks for reply, is it possible to run part 1 once I a dotnet-process and in another process reuse it?

no they must be in the same application
you can use the HTTP API example to create an API and use it anywhere

if the connection was lost, then calling the ask() method will restore it?

yes it will restore automatically


Fix step name in committer string example and add git config example

I noticed the referenced ID in the committer string example doesn't seem to be correct.
Unrelated to this fix, I was wondering if there is interest in tweaking the example to be used with git config? I feel as if that is more generally useful than just echoing the string. For example
- name: setup git
  run: |
    git config user.name ${{steps.app-token.outputs.app-slug}}[bot]
    git config user.email ${{ steps.app-token.outputs.installation-id }}+${{ steps.app-token.outputs.app-slug<EMAIL_ADDRESS>
It is the same content as the current example but ready to go for a common use case IMO.

I was wondering if there is interest in tweaking the example to be used with git config? I feel as if that is more generally useful than just echoing the string. For example

I think we can list both examples. There are use cases that require the commit string, e.g. some actions. If you'd like to add another example on how to configure git using this action, that'd be great

Indeed, installation-id is not equal to user id. https://github.com/actions/create-github-app-token/pull/105#issuecomment-1955720302
The user id can be obtained by requesting https://api.github.com/users/$AppSlug[bot].
Here's how my bot signature is generated.
function set_dco_signature {
    if [[ $TOKEN == ghp_* ]]; then
        # https://github.blog/2021-04-05-behind-githubs-new-authentication-token-formats/
        # What starts with 'ghp_' is the GitHub personal access token

        response=$(curl -s -H "Authorization: token $TOKEN" "$GITHUB_URL/user")
    elif [[ $APP_SLUG ]]; then
        CommitBot=$APP_SLUG
    else
        CommitBot="github-actions"
    fi

    if [[ $CommitBot ]]; then
        response=$(curl -s -H "Authorization: token $TOKEN" "$GITHUB_URL/users/$CommitBot\[bot\]")
    fi

    CommitBot=$(echo "$response" | jq -r '.login')
    id=$(echo "$response" | jq -r '.id')
    echo "Signed-off-by: $CommitBot<EMAIL_ADDRESS>}

Indeed, installation-id is not equal to user id. https://github.com/actions/create-github-app-token/pull/105#issuecomment-1955720302
The user id can be obtained by requesting https://api.github.com/users/$AppSlug[bot].
Here's how my bot signature is generated.
function set_dco_signature {
    if [[ $TOKEN == ghp_* ]]; then
        # https://github.blog/2021-04-05-behind-githubs-new-authentication-token-formats/
        # What starts with 'ghp_' is the GitHub personal access token

        response=$(curl -s -H "Authorization: token $TOKEN" "$GITHUB_URL/user")
    elif [[ $APP_SLUG ]]; then
        CommitBot=$APP_SLUG
    else
        CommitBot="github-actions"
    fi

    if [[ $CommitBot ]]; then
        response=$(curl -s -H "Authorization: token $TOKEN" "$GITHUB_URL/users/$CommitBot\[bot\]")
    fi

    CommitBot=$(echo "$response" | jq -r '.login')
    id=$(echo "$response" | jq -r '.id')
    echo "Signed-off-by: $CommitBot<EMAIL_ADDRESS>}

Based on the octokit/request-action mentioned by @gr2m, I rewrote the example (untested) https://github.com/actions/create-github-app-token/issues/148#issuecomment-2192576973
### Configure git CLI for an app's bot user

```yaml
on: [pull_request]

jobs:
  auto-format:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/create-github-app-token@v1
        id: app-token
        with:
          # required
          app-id: ${{ vars.APP_ID }}
          private-key: ${{ secrets.PRIVATE_KEY }}
      - uses: octokit/request-action@v2
        id: get-bot-id
        with:
          route: GET /users/${{ steps.app-token.outputs.app-slug }}[bot]
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      - run: |
          git config --global user.name '${{ steps.app-token.outputs.app-slug }}[bot]'
          git config --global user.email '${{ fromJson(steps.get-bot-id.outputs.data).id }}+${{ steps.app-token.outputs.app-slug<EMAIL_ADDRESS>      # git commands like commit work using the bot user
      - run: |
          git add .
          git commit -m "Auto-generated changes"
          git push

Yeah I considered using gh CLI to get the id which might be a bit simpler than that. I felt it's a bit weird since the id is guaranteed to be static so could easily be hard coded in the yaml. But happy to try it if it's better.

Yeah I considered using gh CLI to get the id which might be a bit simpler than that. I felt it's a bit weird since the id is guaranteed to be static so could easily be hard coded in the yaml. But happy to try it if it's better.

using the gh CLI is a great idea, too. Once you have tested it, could you update your PR? Really appreciate y'all helping with this

I tried with the GH CLI, it works like a charm:
- name: Generate GitHub App Token
  id: generate-token
  uses: actions/create-github-app-token@ad38cffc07bac6e3857755914c4c88bfd2db4da4 # v1.10.2
  with:
    app-id: ${{ secrets.SEMANTIC_RELEASE_APP_ID }}
    private-key: ${{ secrets.SEMANTIC_RELEASE_PRIVATE_KEY }}
- name: Retrieve GitHub App User ID
  id: get-user-id
  env:
    GH_TOKEN: ${{ steps.generate-token.outputs.token }}
  run: echo "user-id=$(gh api "/users/${{ steps.generate-token.outputs.app-slug }}[bot]" --jq .id)" >> "$GITHUB_OUTPUT"
- name: GitHub Release
  id: semantic-release
  env:
    GITHUB_TOKEN: ${{ steps.generate-token.outputs.token }}
    GIT_AUTHOR_NAME: ${{ steps.generate-token.outputs.app-slug }}[bot]
    GIT_AUTHOR_EMAIL: ${{ steps.get-user-id.outputs.user-id }}+${{ steps.generate-token.outputs.app-slug<EMAIL_ADDRESS>    GIT_COMMITTER_NAME: ${{ steps.generate-token.outputs.app-slug }}[bot]
    GIT_COMMITTER_EMAIL: ${{ steps.get-user-id.outputs.user-id }}+${{ steps.generate-token.outputs.app-slug<EMAIL_ADDRESS>  run: npx semantic-release

This part has not been corrected.😊
run: echo "string=${{steps.app-token.outputs.app-slug}}[bot] <${{ steps.app-token.outputs.installation-id }}+${{ steps.app-token.outputs.app-slug<EMAIL_ADDRESS>>> "$GITHUB_OUTPUT"

Ah wasn't sure if it's ok to update the existing doc, went ahead and did it. Thanks


Improve shortest key algorithm using column names.

If two keys are equal length and both are the same type, use column names to determine order.

what if they are both text type?
On Wed, Oct 12, 2016 at 2:21 PM, Jennifer Chen<EMAIL_ADDRESS>wrote:

If two keys are equal length and both have serial types, use column names
to determine order.
You can view, comment on, or merge this pull request online at:
https://github.com/informatics-isi-edu/ermrestjs/pull/236
Commit Summary

Improve shortest key algorithm using column names.

File Changes

M js/core.js
https://github.com/informatics-isi-edu/ermrestjs/pull/236/files#diff-0
(14)

Patch Links:

https://github.com/informatics-isi-edu/ermrestjs/pull/236.patch
https://github.com/informatics-isi-edu/ermrestjs/pull/236.diff

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/informatics-isi-edu/ermrestjs/pull/236, or mute the
thread
https://github.com/notifications/unsubscribe-auth/AAZUDHGg_aqmcR7WnKQoLSDABkjWqLkHks5qzU9tgaJpZM4KVPAl
.[image: Web Bug from
https://github.com/notifications/beacon/AAZUDJOpnBZ9bNYwfl9UlU7qK83LU7nJks5qzU9tgaJpZM4KVPAl.gif]
{"api_version":"1.0","publisher":{"api_key":"
05dde50f1d1a384dd78767c55493e4bb","name":"GitHub"},"entity":
{"external_key":"github/informatics-isi-edu/ermrestjs"
,"title":"informatics-isi-edu/ermrestjs","subtitle":"GitHub
repository","main_image_url":"https://cloud.githubusercontent.com/assets/
143418/17495839/a5054eac-5d88-11e6-95fc-7290892c7bb5.png","
avatar_image_url":"https://cloud.githubusercontent.com/
assets/143418/15842166/7c72db34-2c0b-11e6-9aed-b52498112777.png
","action":{"name":"Open in GitHub","url":"https://github.
com/informatics-isi-edu/ermrestjs"}},"updates":{"snippets":[{"icon":"
DESCRIPTION","message":"Improve shortest key algorithm using column
names. (#236)"}],"action":{"name":"View Pull Request","url":"https://
github.com/informatics-isi-edu/ermrestjs/pull/236"}}}

my description was wrong.


PeriodicTaskAdmin enhancements

Add enable/disable actions in PeriodicTaskAdmin. Extend list_display
and search_fields. Write unit tests.
This also contains #427 and #357

Any comments or suggestions?

looks good. A change log would be fine

Done.

thanks


Mutually Recursive GADTs Recognizes Tags naively

Also implemented records to recognize parameters that tags.
Example:
type 'a term =
  | T_Int : int -> int term
  | T_String : string -> string term
  | T_Sum : int term * int term -> int term
  | T_Pair : 'a term * 'b term -> ('a * 'b) term
[@@coq_tag_gadt]

and ('a, 'b) foo =
  | T_f of int
  | T_f2 : int term -> (int, string) foo
  | T_f3 of ('a, 'b) record_with_tag
  | T_f4 of {a : 'a term; b : string}

and ('a, 'b) record_with_tag = {
  x : 'b;
  y: 'a term

}

Should translate properly to
Inductive term : vtag -> Set :=
| T_Int : int -> term int_tag
| T_String : string -> term string_tag
| T_Sum : term int_tag -> term int_tag -> term int_tag
| T_Pair : forall {a b : vtag}, term a -> term b -> term (tuple_tag a b)

with foo : Set :=
| T_f : int -> foo
| T_f2 : term int_tag -> foo
| T_f3 : forall {a : vtag} {b : Set}, 'record_with_tag a b -> foo
| T_f4 : forall {a : vtag}, 'foo.T_f4 a -> foo

where "'record_with_tag" :=
  (fun (t_a : vtag) (t_b : Set) => record_with_tag_skeleton t_b (term t_a))
and "'foo.T_f4" := (fun (t_a : vtag) => foo.T_f4_skeleton (term t_a) string).

(Plus some skeleton boilerplate)

For me this looks OK for printing, and it is always possible to polish things later on with examples. I would add your example in the tests. Also you should rebase your branch on master (for linear history / being up-to-date). The last changes include the upgrade to OCaml 4.12, and the use of Git sub-modules for Merlin (by @lthms ). I should upgrade the install instructions.


Add Employee

Add Employee
User Story
AS A business owner
I WANT to be able to view and manage the departments, roles, and employees in my company
SO THAT I can organize and plan my business
Acceptance Criteria
GIVEN a command-line application that accepts user input
WHEN I choose to add an employee
THEN I am prompted to enter the employee’s first name, last name, role, and manager, and that employee is added to the database

This has been completed


How to run this serve?

This is under construction
Will share instructions and notify you soon (maybe tonight)

OK, thanks! :)

updated the entire repo
I hope you find something helpful :)


General image API cleanups

This is a follow-up to #57, I will rebase as needed.
This somewhat cleans up types.Image towards becoming the primary inspection endpoint for images:

We can now change the API without breaking skopeo inspect output format
Image.Manifest turns into Image.Inspect, which parses the manifest, config and layers only; its other former functions are split into new methods.
Added comments on how the API types are expected to be used.

This does not yet completely clean up the API (e.g. moving parts of Layers to cmd/skopeo).
Nor does this make Image independent of the underlying Docker implementation yet: (InspectInfo.Name returns the parsed Docker ref, and GetRepositoryTags needs a Docker client). Non-Docker replacements for this mostly depend on what values we define skopeo inspect to return for non-Docker sources.
See comments in the individual commits for details.

Rebased on top of the removal of Get prefixes.

LGTM (given https://github.com/projectatomic/skopeo/pull/58#discussion_r63417813)


Restyle sign-up page using sb-admin-2

In #141 , @ludamillion restyled the login page and we should take the opportunity to update our /users/sign_up page as well.

@ludamillion are you still planning to work on this issue?

@pollygee I can but if there is someone else who wants to that's fine too. My work on the sign in page should be a pretty straightforward template for the work required.
I don't have a ton of bandwidth right now as my family and I are preparing for the rapidly approaching arrival of our third child. 😄 but also 😱

Nope!! Nobody else.  It had just been a few weeks so I was just touching base and checking if you still would be able to work on it or if I needed to try to find someone else to help!  Thanks 😺 No rush, just keep in touch.
Congrats!!  That's so exciting.  I see lots of babywearing in your future!
Also feel free to recruit friends/colleagues to help us out!!  🤣