(git) refactoring after migration

Original PR: https://github.com/chocolatey/chocolatey-coreteampackages/pull/489

I was not happy about the complexity of this code so I quite changed everything. Please take a look.

Force update test
## git~> fupdate
git.install - checking updates using au version 2<IP_ADDRESS>651
URL check
  https://github.com/git-for-windows/git/releases/download/v2.11.0.windows.1/Git-2.11.0-32-bit.exe
  https://github.com/git-for-windows/git/releases/download/v2.11.0.windows.1/Git-2.11.0-64-bit.exe
nuspec version: 2.11.0
remote version: 2.11.0
No new version found, but update is forced
New version is available
Automatic checksum skipped
Running au_BeforeUpdate
Updating files
  $Latest data:
    Checksum32      (String)    2A6083479538C4FE454336660FCE96346EE3CF46F99CE08A666D4635539239D7
    Checksum64      (String)    FD1937EA8468461D35D9CABFCDD2DAA3A74509DC9213C43C2B9615E8F0B85086
    ChecksumType    (String)    sha256
    FileName32      (String)    Git-2.11.0-32-bit.exe
    FileName64      (String)    Git-2.11.0-64-bit.exe
    FileType        (String)    exe
    NuspecVersion   (String)    2.11.0
    PackageName     (String)    git.install
    URL32           (String)    https://github.com/git-for-windows/git/releases/download/v2.11.0.windows.1/Git-2.11.0-32-bit.exe
    URL64           (String)    https://github.com/git-for-windows/git/releases/download/v2.11.0.windows.1/Git-2.11.0-64-bit.exe
    Version         (String)    <IP_ADDRESS>61225

  git.install.nuspec
    setting id:  git.install
    using Chocolatey fix notation: 2.11.0 -> <IP_ADDRESS>61225
  .\legal\verification.txt
    (?i)(checksum type:\s+).* = ${1}sha256
    (?i)(32-Bit.+)\<.*\> = ${1}<https://github.com/git-for-windows/git/releases/download/v2.11.0.windows.1/Git-2.11.0-32-bit.exe>
    (?i)(checksum32:\s+).* = ${1}2A6083479538C4FE454336660FCE96346EE3CF46F99CE08A666D4635539239D7
    (?i)(checksum64:\s+).* = ${1}FD1937EA8468461D35D9CABFCDD2DAA3A74509DC9213C43C2B9615E8F0B85086
    (?i)(64-Bit.+)\<.*\> = ${1}<https://github.com/git-for-windows/git/releases/download/v2.11.0.windows.1/Git-2.11.0-64-bit.exe>
  .\tools\chocolateyInstall.ps1
    (^[$]filePath32\s*=\s*"[$]toolsPath\\)(.*)" = $1Git-2.11.0-32-bit.exe"
    (^[$]filePath64\s*=\s*"[$]toolsPath\\)(.*)" = $1Git-2.11.0-64-bit.exe"
Attempting to build package from 'git.install.nuspec'.
Successfully created package 'C:\work\_chocolatey\chocolatey-coreteampackages\automatic\git.install\git.install.<IP_ADDRESS>61225.nupkg'
Package updated

Test-Package
==> default: ============================================================
==> default:
==> default: TESTING FOLLOWING PACKAGES: git.install:<IP_ADDRESS>61225
==> default: ============================================================
==> default:
==> default: ------------------------------------------------------------
==> default: PACKAGE: git.install:<IP_ADDRESS>61225
==> default:
==> default: OPTIONS: c:\packages\git.install.<IP_ADDRESS>61225.xml
==> default:
==> default: Name                           Value
==> default: ----                           -----
==> default: Install                        True
==> default: Uninstall                      False
==> default: Parameters
==> default: ------------------------------------------------------------
==> default:
==> default: TESTING INSTALL FOR git.install:<IP_ADDRESS>61225
==> default: CMD: choco install -fy git.install --allow-downgrade --version <IP_ADDRESS>61225 --source "'c:\packages;http://chocolatey.org/api/v2/'"
==> default: Chocolatey v0.10.3
==> default: Installing the following packages:
==> default:
==> default: git.install
==> default: By installing you accept licenses for the packages.
==> default: git.install v<IP_ADDRESS>61225 (forced)
==> default: git.install package files install completed. Performing other installation steps.
==> default: Installing 64 bit version
==> default: Installing git.install...
==> default: git.install has been installed.
==> default: Environment Vars (like PATH) have changed. Close/reopen your shell to
==> default:
==> default:  see the changes (or in powershell/cmd.exe just type `refreshenv`).
==> default:  The install of git.install was successful.
==> default:
==> default:   Software installed to 'C:\Program Files\Git\'

Test-Package -Parameters '/NoShellIntegration'
==> default: ============================================================
==> default: TESTING FOLLOWING PACKAGES: git.install:<IP_ADDRESS>61225
==> default: ============================================================
==> default:
==> default: ------------------------------------------------------------
==> default: PACKAGE: git.install:<IP_ADDRESS>61225
==> default:
==> default: OPTIONS: c:\packages\git.install.<IP_ADDRESS>61225.xml
==> default:
==> default: Name                           Value
==> default: ----                           -----
==> default: Install                        True
==> default: Uninstall                      False
==> default: Parameters                     /NoShellIntegration
==> default: ------------------------------------------------------------
==> default:
==> default: TESTING INSTALL FOR git.install:<IP_ADDRESS>61225
==> default: CMD: choco install -fy git.install --allow-downgrade --version <IP_ADDRESS>61225 --source "'c:\packages;http://chocolatey.org/api/v2/'"  --params '/NoShellIntegration'
==> default: Chocolatey v0.10.3
==> default: Installing the following packages:
==> default:
==> default: git.install
==> default: By installing you accept licenses for the packages.
==> default: git.install v<IP_ADDRESS>61225 (forced)
==> default: git.install package files install completed. Performing other installation steps.
==> default: Installing 64 bit version
==> default: Parameter: no git shell integration
==> default:
==> default: Installing git.install...
==> default: git.install has been installed.
==> default:
==> default: Environment Vars (like PATH) have changed. Close/reopen your shell to
==> default:  see the changes (or in powershell/cmd.exe just type `refreshenv`).
==> default:  The install of git.install was successful.
==> default:
==> default:   Software installed to 'C:\Program Files\Git\'

NoShellIntegration worked OK.
NOTE:
I removed Install-ChocolateyPath as it is redudant with package args.
But as shown here, Git\cmd ends up on the path even tho no parameter is passed (blank test machine) which is not correct behavior. I think this should be default anyway and that params should be reversed.  @ferventcoder needs to speed up choco#797 A LOT. Its definite that Install-ChocolateyPath in the script was there just for the update as installer args are not saved (which is again wrong).

@ferventcoder needs to speed up choco#797 A LOT. Its definite that Install-ChocolateyPath in the script was there just for the update as installer args are not saved (which is again wrong).

Why would this be removed? The installer doesn't remove the current path on upgrade.

Why would this be removed? The installer doesn't remove the current path on upgrade.

I reverted that.

I meant, why would an upgrade remove a PATH value?

I meant, why would an upgrade remove a PATH value?

Upgrade shouldn't. But parameters are not good. If I have an option GitOnPath that begs the question why do I have it as it works even if I don't use it ? Since everybody wants git on path, the option should then be reversed to NoGitOnPath. But if its reveresed and not remembered, the update could remove existing path depending on how you implement it - NoGitOnPath could ignore any current situation or could actually remove it from the PATH if you have it there (I beleive this is correct solution).
In short, current parameters are confusing and behave unintuitive.

In short, current parameters are confusing and behave unintuitive.

Or at least GitOnPath. I agree with the assessment to have NoGitOnPath. 👍

Looking at the number of comments and considering there are still open points to discuss, wouldn't it be better to merge first #489, and then do any refactorings on top of it in subsequent PRs instead of trying to put everything in a single PR?

Sounds good to me.

I reopened #489 to get the git package code into this repository, without the refactorings of this PR

I just merged master into git to resolve the file conflicts, looks like I messed up your review in the process @pascalberger . Sorry about that.

@pascalberger , @ferventcoder
could you guys perhaps review this one again?
I've expanded the aliases and merged the latest git.portable changes.

Be all as it may, In the meantime, I lost interest in being the maintainer for entire repository for specific reasons. My input in the future will be minimal comparing to what happened in previous year.
You guys should feel free to change anything here before eventual merge or just close the PR, I will leavve that up to you.

You guys should feel free to change anything here before eventual merge or just close the PR, I will leavve that up to you.

I was planning to make some changes and continue on this eventually.

@pascalberger I squashed all commits, and I believe changed/added comment on what you reviewed.

Changes look good to me without actually testing it

But we should wait with merging this, since git <IP_ADDRESS> was already pushed and approved, but git.install <IP_ADDRESS> timed out and needs to be repushed. So we should push git.install <IP_ADDRESS> again, and after it is approved can merge this.

Mmh, git.install <IP_ADDRESS> seems be now also be pushed, even though it reported an error https://gist.github.com/gep13/bd2eaa76f2a9ab739ca0544c502dca6e#git.install

@pascalberger even though it timed out, it was still pushed.
https://chocolatey.org/packages/git.install/<IP_ADDRESS>
It just timed out because it couldn't get a request back in time.

@pascalberger I've fixed the merge conflicts, so whenever you get around to test the changes this can then be merged.


capture screenshot with selector

Address https://github.com/getgauge/taiko/issues/285
Code Snippet:
screenshot($('//*[@class="search-form"]'))
screenshot(text('Images', toRightOf('gmail')))

Have added padding to options value
Output:
With padding:

Without padding:

@sarut0bi

Since there is huge backlog for testing, we will be merging PRs once those are tested and closed.

@saikrishna321 ty for implementing this one 👍


Translation

How can I make the translation into Portuguese of Brazil?

This part is currently no plan Portuguese of Brazil.

if have enough time, maybe provide support it ( Brazil language ) at "0.6.3" version.

I can do this. How I can help?

please reference Struts 2 internationalizing(i18n), localization(i10n) or multi-lingua example :
http://www.mkyong.com/struts2/struts-2-i18n-or-localization-example/
CORE-WEB locale properties files:
https://github.com/billchen198318/bamboobsc/blob/master/core-web/resource/global.properties
https://github.com/billchen198318/bamboobsc/tree/master/core-web/resource/com/netsteadfast/greenstep/action
GSBSC-WEB locale properties files:
https://github.com/billchen198318/bamboobsc/blob/master/gsbsc-web/resource/global.properties
https://github.com/billchen198318/bamboobsc/tree/master/gsbsc-web/resource/com/netsteadfast/greenstep/bsc/action
QCHARTS-WEB locale properties files:
https://github.com/billchen198318/bamboobsc/blob/master/qcharts-web/resource/global.properties
https://github.com/billchen198318/bamboobsc/tree/master/qcharts-web/resource/com/netsteadfast/greenstep/qcharts/action
locale select item config:
https://github.com/billchen198318/bamboobsc/blob/master/core-base/src/META-INF/lang.json
Build development environments:
https://github.com/billchen198318/bamboobsc#build-development-environments

I can help with the translation.

Ok, thanks.

So long no news, do it by myself.

The translation in the 0.6.3 version is incorret.
Can I copy the files, translate and send back to you?

ok you can send fix locale file to me, i use Google-translate maybe have some is incorrect.

Brazilian Portuguese files attached.
pt-br.zip


Bump Ubuntu version for VirtualBox

Merging to unblock https://github.com/iterative/studio-selfhosted/actions/runs/6274913654/job/17042082579#step:9:18

Thanks!


add modal for enter manually button, Eproms only

address this story:
https://www.pivotaltracker.com/story/show/142322617
creating a modal for enter manually button to allow user to choose entry method used.
Note UI changes here only.  The information still needs to be persisted.

@ivan-c Ivan, FYI, I am going to close this PR for now, but my front-end changes should be in the feature/enter-manually-changes branch if you need to test it out.


What modifications needed to support Blazor as Azure DevOps Extension

Check my answer here.

@MaciekWin3
If there any update in your repos?

I haven't made any changes yet, but I'm committed to keeping this repository updated. Now that this issue was resolved, has been resolved, my plan is to upgrade this project to .NET 8 and then streamline the template for simplicity, enabling users to quickly start their projects with ease.

Hi @GeorgeS2019, the first changes have been made. The project has been updated to .NET 8, and I've made some minor improvements. I'm going to close this issue, but if you have any more questions or suggestions, feel free to open another one.

will this gives more possibilities for your blazor extension?
https://learn.microsoft.com/en-us/javascript/api/azure-devops-extension-sdk/

will this gives more possibilities for your blazor extension?
https://learn.microsoft.com/en-us/javascript/api/azure-devops-extension-sdk/

Hi @GeorgeS2019, We are already using it here. But you are right, we can explore if we should keep it in one file or to use it as node module.


code based experiences tutorial

Description

Related Issue

Motivation and Context

How Has This Been Tested?

Screenshots (if appropriate):
Types of changes

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

Checklist:

[ ] I have signed the Adobe Open Source CLA.
[ ] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[ ] I have read the CONTRIBUTING document.
[ ] I have added tests to cover my changes.
[ ] All new and existing tests passed.

Content-wise looks good! Just a few grammar/styling fixes.

Thank you for the quick review! Addressed the comments


Add Google OAuth for Login/Registration Page

Issue Report
Currently, users are required to create a new account by filling out a registration form, which often involves providing an email address, creating a password, and confirming the account. This process can be cumbersome and frustrating for users, leading to potential abandonment of the registration process. Additionally, users often struggle to remember passwords, and accounts may be created with invalid email addresses, impacting overall user satisfaction and engagement with the platform.
Title
Add Google OAuth for Login/Registration Page
Description
I propose integrating Google OAuth authentication into the login and registration process. Users would have the option to log in or sign up using their existing Google accounts. This would involve adding a "Sign in with Google" button on the login/register page that redirects users to Google’s authentication flow. Upon successful authentication, users would be granted access to the platform without needing to input additional credentials. This solution would streamline the registration process and enhance user convenience.
Steps to Reproduce the Issue

Access the Login Page:  Navigate to the login page of the platform.
Observe Current Registration Process: Note the requirement to fill out the registration form, including entering an email address, creating a password, and confirming the account.
Identify User Frustrations: Try to register for an account and observe any difficulties or frustrations encountered, such as the need to remember a password or validate the email address.

Expected Behaviour
When users visit the login/registration page, they should see an option to sign up or log in using their Google account, represented by a "Sign in with Google" button. Upon clicking this button, users should be redirected to Google's authentication page, and after successful login, they should be directed back to the platform seamlessly.
Actual Behaviour
Currently, users must complete a traditional form without a streamlined option for logging in or registering with Google. This can lead to abandonment of the process due to password management issues and concerns about using valid email addresses.
Screenshots (if applicable)
N/A
Additional Context
Implementing Google OAuth could significantly improve user experience by reducing friction in the registration and login processes. It would help in decreasing the number of abandoned registrations due to cumbersome form-filling and password management issues.
Thank you for considering this proposal to enhance our platform's authentication process! We appreciate your efforts in improving user experience.

@Lokesh-Bijarniya not needed it already done


how to set up the file andy.json for Ollama?

Unfortunately Ollana is unsupported. Also Olena and Osama


babel-standalone is incredibly slow under Duktape

I tried out using babel-standalone in minisphere for ES6 support, but it seems the transpiler runs incredibly slowly under Duktape.  The CoffeeScript and TypeScript transpilers aren't nearly this slow, so it seems like an anomaly specific to Babel.  I wonder where the bottleneck is?
If you want to check it out, babel-standalone is here:
https://github.com/Daniel15/babel-standalone
And the script is here:
https://github.com/Daniel15/babel-standalone/releases/download/release-6.7.7/babel.js
To run the transpiler, just call Babel.transform("some ES6 code")

How slow is incredibly slow? 1000x slower?

Case insensitive regexp compilation has known performance issues but it seems babel.js compiles in around 0,4 sec so it doesn't seem to be compilation.

@fatcerberus Have you compared the relative performance between Babel and Coffeescript/Typescript on some other engine(s)? This would be nice to know to make sure it's triggering some specific performance issue rather than being generally slower.

This quick test is 8 milliseconds:
[babel.js loaded, then interactive mode]
duk> var input = 'const getMessage = () => "Hello World";';
= undefined
duk> var t1 = Date.now(); var output = Babel.transform(input, {presets: ['es2015'] }).code; var t2 = Date.now(); print(t2-t1); print(output);
8
"use strict";

var getMessage = function getMessage() {
  return "Hello World";
};
= undefined

Is this roughly the performance you're seeing, or is it much slower?

Seems the the execution time scales directly with input length (i.e. there isn't some large setup cost or something like that): replacing a single const arrow function with three bumps execution from 8ms to 17ms:
duk> var input = 'const getMessage = () => "Hello World"; const getMessage2 = () => "Hello World"; const getMessage3 = () => "Hello World"; '
= undefined
duk> var t1 = Date.now(); var output = Babel.transform(input, {presets: ['es2015'] }).code; var t2 = Date.now(); print(t2-t1); print(output);
17
"use strict";

var getMessage = function getMessage() {
  return "Hello World";
};var getMessage2 = function getMessage2() {
  return "Hello World";
};var getMessage3 = function getMessage3() {
  return "Hello World";
};
= undefined

Minimal interrupt-based profiling would be quite useful for figuring this out :)

I'll run some comparisons in a bit but, for a sense of scale here, the CoffeeScript compiler takes nearly a full minute to process through Babel on my AMD A10 desktop.  That seemed rather excessive.

Did you mean vice versa, Babel transpiling the CoffeeScript compiler?

Yes, that's what I meant.

Scaling with the typical 30-100x performance difference between Node.js and Duktape, the expected Node.js execution time for that would be around 0,5-2 seconds. If it's much less than 0,5 seconds then Duktape is performing slower (comparatively) than normal.

This is the time I wish duk had file bindings.  I'm trying to wire up an isolated testcase that I can test using the time command, duk having file bindings would make that so much easier. ;-)

Depending on compiler options duk actually provides readFile() and writeFile() for testing purposes. The command line option is DUK_CMDLINE_FILEIO.

Using Node.js on the same machine, using babel-cli with the es2015 preset on the minified CoffeeScript compiler, takes about 3-4 seconds.  I still need to get an accurate timing for Duktape.

Applying the ~30-100x performance difference the "expected" Duktape timing would be 90-400 seconds. So there might not be anything pathological going on, unfortunately.

Duktape took around 30 seconds on the same task before reporting a ReferenceError: console is undefined, which makes no sense since CS works fine normally.  No idea what that's all about.
TypeScript, for comparison, takes around 25 seconds to do the same transpile under Duktape.  So it's definitely faster, but not quite as performant as I thought.  I guess on-the-fly transpilation isn't really practical with Duktape.
I am curious what the hot path through Duktape looks like though.  Maybe I'll run it through the profiler. :)

Most likely you'll see that the bytecode dispatch accounts for most of the difference to a JIT engine. The typical performance difference varies a lot but is usually between 10-100x between JIT and interpretation. The more time is spent in built-ins (say, array operations, regexp matching, compilation, etc) the smaller the difference becomes.

Regarding that ReferenceError, if you think something is broken it might be useful to rerun the test with assertions enabled in Duktape build. Maybe you're triggering a compiler / executor bug.

So I did an experiment.  I set up minisphere to run all scripts through the TypeScript transpiler, gave it a game with a large number of scripts, and run it under the profiler.  duk_js_execute_bytecode_inner() naturally accounts for 96.2% (inclusive, i.e. including callees) of the execution time.  This isn't a surprise: We're running Ecmascript code.  What is interesting is that, within that 96.2%, the top 3 CPU burners are:
Functions that were called by duk__js_execute_bytecode_inner
Function Name	Inclusive Samples	Exclusive Samples	Inclusive Samples %	Exclusive Samples %
duk__handle_call_inner	16,352	117	40.30	0.29
duk_js_push_closure	8,676	426	21.38	1.05
duk__vm_arith_add	6,825	40	16.82	0.10

duk__handle_call_inner is there of course, that just tells us we're spending 40% of our time running functions.  It's Ecmascript code, not surprising.  More surprising is that 21% is spent pushing closures, and ~17% is spent on... addition?  For some reason?
Looking at exclusive samples, bytecode dispatch accounts for a decent chunk:
Function Name	Inclusive Samples	Exclusive Samples	Inclusive Samples %	Exclusive Samples %
[ntdll.dll]	6,266	6,266	15.44	15.44
duk__js_execute_bytecode_inner	39,028	4,967	96.20	12.24
duk_unicode_unvalidated_utf8_length	3,240	3,240	7.99	7.99
memcpy	2,211	2,211	5.45	5.45

So around 12% of my execution time is bytecode dispatch, 8% is calculating string length (!), and a whopping 15.5% seems to be system calls (ntdll).

@fatcerberus Should this be closed or is there some concrete action that can be taken?

One documentation related issue, worth nothing in the wiki modules howto, is that if you're transpiling on-the-fly there may be performance issues. One useful mechanism there might be to implement a transpiling cache which associates a transpile result with e.g. a source file hash.

I just wondered if you had any insight on my profiling results above.  Bytecode dispatch accounts for a decent amount, but arith_add actually seems more dominant and I have no idea what's up with the 15% in system calls.

Right, it's quite difficult to say if that matches or doesn't match expectations -- what are those expectations? :)
Ultimately the profiling results depend quite heavily on what kind of code is being executed. String heavy code, for example, displays a lot of UTF-8 length computation because a single string intern can take more time than dispatching (say) 10 arithmetic opcodes. Arithmetic addition also covers string concatenation which is often significant, especially if strings are built in the result += c; result += "foo"; //etc style as all the intermediate results get interned.
Case insensitive regexp compilation is a current bottleneck for compilation, but not for execution, and isn't an issue in this case.

Oh, one potential issue is that console.log issue you encountered. It might be useful to rerun that test with assertions and debug prints enabled to see if anything turns up. (Or if you have a chance, valgrind.)

I guess I expected bytecode dispatch to be dominant, but that's not exactly the case here.  It only accounts for 12%, which isn't too bad.  String handling appears to be the bottleneck here.  I just wish I knew what all those ntdll calls were.
I'll do some more tests later on tonight - I have to go to work in a few hours so I don't have the opportunity to do it right now.

It's actually quite easy to dwarf the dispatch, it's not all that heavy per opcode. So for example, if you were to do a loop like:
for (var i = 0; i < 1e6; i++) { var tmp = String(i); }

string conversion, string freeing, etc, should be much more significant than dispatch. The significance of dispatch ultimately depends on how much work is done per dispatched opcode; string conversion, property lookups, calls, try-catch, are all more significant than the dispatch itself.
Also note that profiling results may be distorted (sometimes quite a lot) because of inlining; and profiling non-inlined code may not be representative.

Ok, sounds good. There's no hurry in closing this issue, I just don't want it to hang open unless there's something to actually do other than stating that more performance would be nice :-)

Also note that profiling results may be distorted (sometimes quite a lot) because of inlining; and profiling non-inlined code may not be representative.

Yes, I'm aware of this - this is why I always profile a fully optimized release build with debugging information enabled in MSVC settings.  I've learned not to profile non-optimized builds with Duktape - the results get very distorted. :)

But then, with optimized builds, the attributions may not be reliable. Schrödinger :-o

That's true, although I've found MSVC to be excellent at generating debug info for release builds.  Sometimes line numbers are distorted locally due to optimizations (and local variables get optimized out making it useless for actual debugging) but that's unavoidable.  I don't know that I've ever seen it misattribute things at the function level, but I won't rule out the possibility. :)

I'll close this.  If an actionable issue comes up I'll reopen (or open a new issue).

Ouch.  TypeScript transpilation speed under Duktape is almost unbearable (= several seconds for ~10kB of code) once I added a lib.d.ts to the build.  Good thing I had the foresight to make Cell only compile those source files that changed, or this would be completely unworkable. :)

As discussed above, non-JIT execution is quite a lot slower than JIT execution, so this doesn't really mean anything can or should be changed. In other words, it's not necessarily a relevant issue to be tracked in the repo.
However, if the execution speed difference exceeds the usual 10-100x factor between a JIT and non-JIT executor, then there may be something that performs much worse than expected.

Right, which is why I left the issue closed :)
When I get a chance, I'll compare compilation speed in Node.js for the same sources and get back to you on that last point.

It seems that type checking in general is the slowest part of the TS compiler:
http://stackoverflow.com/questions/36624273/investigating-long-typescript-compile-times
So partial rebuilds seem to be the best mitigating factor I have without switching engines.  One can disable type checking, but that rather defeats the purpose of using TypeScript. :)


Fix out-of-bounds access with next-unread in an empty feedlist

Fixes #1734. Reviews are welcome! I'll merge in three days.

Coverage increased (+0.001%) to 59.196% when pulling 6841bf210ad7cd23218c9ae599cc9e39f61c104e on bugfix/1734-next-unread-feed-crash into 637b1739e65d039226c256c76aa5aa5522433916 on master.


Site Redesign

I've been playing a bit with my design skills and I came up with the following site redesign idea:

It's worth playing more? 🙃

@davidkpiano if you like it, I can take care of the whole thing, design and implementation.
I want to play with https://github.com/11ty/eleventy.


Dev Inspection Lot Color

Coverage increased (+0.4%) to 64.317% when pulling fe72339f5a14185acbd7541749a3ce7de087cd7e on SirDimas:dev into 66ee493fd2551078f841d833626de23d0bf98ec0 on danliris:dev.


bash completion not working when kubectl is aliased with kubeconfig

What happened:
This looks like a extreme case and minor issue. But I wanted to file this anyway to get some opinions about it.
$ mv /home/user/.kube/config /home/user/.kube/test_config
$ alias kubectl='./_output/bin/kubectl --kubeconfig=/home/user/.kube/test_config'
$ kubectl get namespaces <tab>
completion works without any problem

$ alias kubectl='./_output/bin/kubectl --kubeconfig /home/user/.kube/test_config'
$ kubectl get namespaces <tab>
completion does not work

The only difference between two aliases is --kubeconfig=/home/user/.kube/test_config' vs --kubeconfig /home/user/.kube/test_config'
What you expected to happen:
I'd expect that completion works when kubectl is alised with --kubeconfig test_config.
Anything else we need to know?:
as stated in this case https://github.com/kubernetes/kubectl/issues/1181#issuecomment-1058078922, it is very likely that this is Cobra issue.
Environment:

Kubernetes client and server versions (use kubectl version):
Client Version: version.Info{Major:"1", Minor:"27+", GitVersion:"v1.27.0-alpha.1.353+70dde8d746a073-dirty", GitCommit:"70dde8d746a07392d945dde32dd7e3b12ca9a043", GitTreeState:"dirty", BuildDate:"2023-02-10T13:56:18Z", GoVersion:"go1.20", Compiler:"gc", Platform:"linux/amd64"}
Cloud provider or hardware configuration:
Kind cluster
OS (e.g: cat /etc/os-release):
Fedora 37

@marckhouzam would you mind giving some insights on this?. Probably there is nothing we can do but I'll close this issue after verifying that problem is known. Thanks.

I can reproduce the problem.
You can get more details by doing the underline completion command:
./_output/bin/kubectl --kubeconfig /home/user/.kube/test_config __complete ''
Error: flags cannot be placed before plugin name: --kubeconfig

This has to do with how plugins are detected and the fact that we don't try to figure out if an argument belongs to the preceding flag or is a new argument.  The logic that fails in this case is here:
https://github.com/kubernetes/kubectl/blob/c230e1b22140e5767a57860f8d1ca3669859565d/pkg/cmd/cmd.go#L119-L139
What happens:

line 119 does not find a existing command because it is the yet-to-be-created __complete command
the loop at line 124 only ignores arguments starting with a -, so it wrongly thinks the cmdName is /home/user/.kube/test_config, which is not a known command, so it looks like a plugin
the HandlePluginCommand() gets called, and it fails because you are not allowed to specify a flag (in this case kubeconfig before a plugin command.

I feel like we've seen this before and just agreed that in this rare case, the = form of the flag should be used.

@marckhouzam many thanks for investigating this. I'm going to close this hoping that if someone in the future navigated this issue due to same problem can find the solution in your explanation.
/close


[Feature Request]: Use Dashboard token for querying number of GPUs

Feature description
Currently we are having to access secrets, SA's and services in the openshift-monitoring namespace. Instead we can assign a token to the dashboard SA and use it to query the number of allocatable GPUs.
Describe alternatives you've considered
No response
Anything else?
No response

Changed priority to blocker since this issue is causing GPU (which is a core feature) to not work.


chore: upgrade yarn

Summary
For the security fix

Test plan
Green CI

Codecov Report

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

@@           Coverage Diff           @@
##           master    #9334   +/-   ##
=======================================
  Coverage   64.75%   64.75%
=======================================
  Files         280      280
  Lines       11986    11986
  Branches     2956     2956
=======================================
  Hits         7761     7761
  Misses       3592     3592
  Partials      633      633

Continue to review full report at Codecov.

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


Next day mechanics don't work properly.

Noticed that I was going through all days in sync at the end. :T

Fixed in ac5a2fa


Make test output better

The current test output mechanism is fairly primitive and could be a lot better!
I would be nice to use a Reporter abstraction and come up with a nice way of reporting failures. BDDfy may be a good place to start for inspiration.

We're thinking it would be great to provide a diff similar to what you can get from Fiddler, but in unified format. Another difference would be to display only a request diff on consumer side, and a response diff on provider side.

We also need to keep in mind that non-exact match is not always invalid as we need to extra items in the consumer request/provider response.

Done and release in 1.0.0. I have not implemented any unified unix style diff just yet though. We can decide to do this later.

@neilcampbell great work with getting the v1 ready!


Will this work with AutoShardedBot?

I am looking to integrate this into my bot which is in 30k+ servers, and I am wondering if this will work with the auto sharded bot

Nevermind, I figured it out


pangeo-hubs: recover prometheus-metrics

As part of trying to get prometheus-server to start successfully with OOMKilled issues and inability to request even more memory without changing the k8s node type, I removed a PV and PVC resource in the pangeo-hubs k8s cluster. Doing so, we got provisioned a new persistent disk that became associated with the new PV.
The PV deleted was configured with Retain as a policy, which means that deleting the PV doesn't delete the actual disk associated with the PV.
As suggested by @yuvipanda in https://github.com/2i2c-org/infrastructure/issues/2366#issuecomment-1601152150, we want to remedy this deletion. We want to have a PVC and PV, where the PV references the previous disk, not the new. To do this though, we would need to know the ID of the previous disk etc, but I lack access to pangeo-hubs and can't do it.

I think maybe we got the same disk provisioned back to us, because prometheus-server fails to startup once again. Either we got the previous disk coupled to the new PV, or we got the new disk so populated with things over a short period of time that it fails to start again.

Hopefully this is the old disk, and we can recover this data? I think prometheus data, especially for in use cluster, should be considered user data and preserved. We should be extremely careful about deleting it and not do that to the extent possible.

@consideRatio it's definitely not the same disk. I don't know if the startup problems are related to the disk, but my intuiton is that they are not.

I mounted this disk onto a pod with the following yaml:
apiVersion: v1
kind: Pod
metadata:
  name: test
spec:
  volumes:
  - name: volume
    gcePersistentDisk:
      pdName:  gke-pangeo-hubs-cluste-pvc-55aae527-9546-4cbc-8efc-df47046272ab
      fsType: ext4
  containers:
    - name: shell
      image: ubuntu/nginx:latest
      volumeMounts:
        - mountPath: /data
          name: volume

Unfortunately, this is a leftover PVC from a long time ago (Aug 2021), and I think we have lost all metrics :(
root@test:/data# ls -la
total 36
drwxrwsr-x 5 root   nogroup  4096 Aug 23  2021 .
drwxr-xr-x 1 root   root     4096 Jun 24 00:51 ..
drwxr-sr-x 2 nobody nogroup  4096 Aug 23  2021 chunks_head
-rw-r--r-- 1 nobody nogroup     0 Aug 23  2021 lock
drwxrws--- 2 root   nogroup 16384 Aug 23  2021 lost+found
-rw-r--r-- 1 nobody nogroup 20001 Aug 23  2021 queries.active
drwxr-sr-x 2 nobody nogroup  4096 Aug 23  2021 wal

The PV deleted was configured with Retain as a policy, which means that deleting the PV doesn't delete the actual disk associated with the PV.

Unfortunately this is not quite right, it only determines if the PV is deleted when the PVC is deleted. If the PV itself is deleted, then the underlying disk is still deleted. https://kubernetes.io/docs/concepts/storage/persistent-volumes/#retain

What can we do to prevent this from happening again?

Are you sure? Looking at retain docs linked, my understanding is that the GCP persistent disk for the created PV is retained when a PV is deleted.

@consideRatio are you sure the old PV has Retain set in that case? The only unattached PV in the project is the one I looked at, and the mtime there is all too old.

Do you see a GCP PD that could be the one previously associated with the k8s PV i deleted?

https://github.com/2i2c-org/infrastructure/issues/2688#issuecomment-1604579752 https://github.com/2i2c-org/infrastructure/issues/2688#issuecomment-1605199213 and https://github.com/2i2c-org/infrastructure/issues/2688#issuecomment-1607920668 is the information I have found. The direct answer to this question is https://github.com/2i2c-org/infrastructure/issues/2688#issuecomment-1607920668

This is all the disks on the project.

Also, the current PV for prometheus has reclaimpolicy set to delete, not retain, across all our clusters.

Do you see a GCP PD that could be the one previously associated with the k8s PV i deleted?

Nope, I do not. I only see https://github.com/2i2c-org/infrastructure/issues/2688#issuecomment-1604579752, explored in https://github.com/2i2c-org/infrastructure/issues/2688#issuecomment-1605199213

Opened https://github.com/2i2c-org/infrastructure/issues/2717 to make sure that all prometheus PVs are marked as 'retain'

https://github.com/2i2c-org/infrastructure/pull/2718 addresses making all current PVs 'retain'.

Nope, I do not.

So I presume we have lost the data, meaning it is unrecoverable by now and we should close this one without investing more resources into it. Further thoughts?

This is unfortunately now a lost cause :(


[Usage]: parallel tool calls in llama3.1

Your current environment
Any
How would you like to use vllm
It claims that parallel tool calls are not supported in llama models (https://docs.vllm.ai/en/latest/usage/tool_calling.html#llama-models-llama3-json), but it seems that llama3.1 instruct models can work for tests in https://github.com/vllm-project/vllm/blob/main/tests/tool_use/test_parallel_tool_calls.py.
Before submitting a new issue...

[X] Make sure you already searched for relevant issues, and asked the chatbot living at the bottom right corner of the documentation page, which can answer lots of frequently asked questions.

Those models are skipped in the parallel tool calls tests.

Yes, they are skipped because you set them as false, but I tried by myself, they can pass the tests. @DarkLight1337

As per the note in the test file: it is technically supported, but the model is not designed for this. So, the performance may be quite poor.

@DarkLight1337 Thanks a lot for your reply! Is there any source on that llama3.1 models are not designed for parallel tool calls? Thanks a lot!!!

cc @K-Mistele

Hi! Yes their official chat template indicates this:

llama3.1 models are not designed for parallel tool calls


stuck when using django q with tensorflow

i am trying to detect object with tensorflow in background task but django q process i getting stuck when calling tensoflow to detect object

Me either, seems there is stuck with no message.

It would be great if we can get some more details on this.

i am trying to detect object with tensorflow object detection api and when it reaches at session.run it hangs with out any error


RestApiActivity doesn't work properly

Device: Pixel XL
OS version: 7.1.2

Step 3: Describe the problem:
Steps to reproduce:

Launch RestApiActivity
Click "Sign in"
People API return 400

Observed Results:
I found the following log. It looks like People API was changed.
08-31 16:48:26.249	20869	21115	W	RestApiActivity	    "message" : "personFields mask is required. Please specify one or more valid paths. Valid paths are documented at https://developers.google.com/people/api/rest/v1/people/get.",
Expected Results:
It should work.
Possible solution
I try to upgrade People API version to 'com.google.apis:google-api-services-people:v1-rev139-1.22.0' and add some related code. The patch is in the attachment
patch.txt
.

lyon's solution worked for me as well.

@lyon1119 @kohanian thanks for this, does either of you want to submit a PR to fix it?

Closed via PR, thanks!


line terminating comma error is ambiguous/misleading

Creating an array and still put commas between array elements (see picture)... the error we throw isn't very accurate.

Related to #498


Restore Preference initializer in Rails 5

https://github.com/inaturalist/inaturalist/blob/main/config/initializers/preferences.rb causes undefined method 'after_save' for Preference:Class (NoMethodError) on app boot in Rails 5. I commented it out to get something running, but it looks like something we need so we should figure it out. Preference should be coming from https://github.com/nickcoyne/preferences, where I think it is an ActiveRecord::Base, so I'm not sure what's up.

Closed in 2fe12d6de3a349e414ed696e851c593a9e6de783


Created cholula condiment

Added cholula sauce to the condiments list.

I think this may need more explanation/description before we can merge it up.


Openshift - jenkins :: The underlying system error is Errno::EPERM: Operation not permitted @ apply2files

current user (non root) can cat / touch files in
/home/jenkins/.bundle/cache/compact_index/rubygems.org.443.29b0360b937aa4d161703e6160654e47` and also cat versions ...
this is surely NOT an access issue ...

TMPDIR=/tmp/test
cd /tmp/workspace/pltfmdev-cd/pltfmdev-cd-docker-infrastructure-master
BUNDLE_SILENCE_ROOT_WARNING=true
bundle install --verbose --jobs=4
Running bundle install --jobs 4 --verbose with bundler 1.17.2
Found no changes, using resolution from the lockfile
The definition is missing ["concurrent-ruby-1.1.4", "i18n-1.5.3", "thread_safe-0.3.6", "tzinfo-1.2.5", "activesupport-5.2.2", "public_suffix-3.0.3", "aws-sigv4-1.0.3", "aws-sdk-core-2.11.217", "aws-sdk-resources-2.11.217", "aws-sdk-2.11.217", "multipart-post-2.0.0", "unf_ext-<IP_ADDRESS>", "domain_name-0.5.20180417", "timeliness-0.4.0", "ms_rest-0.7.3", "ms_rest_azure-0.11.0", "azure_graph_rbac-0.17.0", "azure_mgmt_key_vault-0.17.2", "azure_mgmt_resources-0.17.2", "excon-0.62.0", "dry-core-0.4.7", "dry-configurable-0.8.1", "dry-container-0.7.0", "dry-equalizer-0.2.1", "dry-inflector-0.1.2", "dry-logic-0.5.0", "dry-types-0.14.0", "dry-validation-0.13.0", "equatable-0.5.0", "ffi-1.10.0", "jwt-2.1.0", "os-1.0.0", "mime-types-data-3.2018.0812", "gssapi-1.2.0", "hcl-checker-1.1.1", "parallel-1.13.0", "rspec-support-3.8.0", "rspec-core-3.8.0", "rspec-expectations-3.8.2", "rspec-mocks-3.8.0", "rspec-its-1.2.0", "rubyzip-1.2.2", "tins-1.20.2", "mixlib-shellout-2.4.4", "net-ssh-4.2.0", "winrm-2.3.1", "train-1.7.2", "necromancer-0.4.0", "tty-color-0.4.3", "pastel-0.7.2", "timers-4.3.0", "tty-cursor-0.6.0", "tty-screen-0.6.5", "tty-reader-0.5.0", "tty-prompt-0.18.1", "unicode-display_width-1.4.1", "strings-0.1.4", "tty-table-0.10.0", "inspec-3.6.4", "mixlib-versioning-1.2.7", "mixlib-install-3.11.11", "net-ssh-gateway-1.3.0", "winrm-elevated-1.1.1", "test-kitchen-1.24.0", "tty-which-0.4.0", "kitchen-terraform-4.3.0"]
HTTP GET https://index.rubygems.org/versions
HTTP 206 Partial Content https://index.rubygems.org/versions
There was an error accessing
/home/jenkins/.bundle/cache/compact_index/rubygems.org.443.29b0360b937aa4d161703e6160654e47/versions.
The underlying system error is Errno::EPERM: Operation not permitted @
apply2files -
/home/jenkins/.bundle/cache/compact_index/rubygems.org.443.29b0360b937aa4d161703e6160654e47/versions

cd /tmp/workspace/pltfmdev-cd/pltfmdev-cd-docker-infrastructure-master (the current working directory) was check'ed out by the same user and he has full read / write rights.
I believe (after working with ruby for some time now) - that the err message is again completely misleading...

this is the output of

bundle config
Settings are listed in order of priority. The top value will be used.
bundle version
Bundler version 1.17.2 (2018-12-19 commit 3fc4de72b)

bundle check before:

bundle check --verbose
Found no changes, using resolution from the lockfile
The following gems are missing

concurrent-ruby (1.1.4)
i18n (1.5.3)
thread_safe (0.3.6)
tzinfo (1.2.5)
activesupport (5.2.2)
public_suffix (3.0.3)
aws-sigv4 (1.0.3)
aws-sdk-core (2.11.217)
aws-sdk-resources (2.11.217)
...

not chatty either on what's wrong ...

installation of ruby:
HOME = /home/jenkins
RUN cd $HOME
&& git clone https://github.com/rbenv/rbenv.git .rbenv
&& echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
&& echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
&& source ~/.bash_profile
&& git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
&& echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bash_profile
&& source ~/.bash_profile
&& rbenv install 2.6.1
&& rbenv global 2.6.1
&& gem install bundler
&& gem install inspec --version '=3.9.3' \
&& cd /opt/bundle && BUNDLE_SILENCE_ROOT_WARNING=true bundle install --path /opt/bundle/ --jobs=4 \

gem env / rbenv output:

gem info bundler
bundler (2.0.2, 1.17.2)
Authors: Andr�� Arko, Samuel Giddins, Colby Swandale, Hiroshi
Shibata, David Rodr��guez, Grey Baker, Stephanie Morillo, Chris
Morris, James Wen, Tim Moore, Andr�� Medeiros, Jessica Lynn Suttles,
Terence Lee, Carl Lerche, Yehuda Katz
Homepage: https://bundler.io
License: MIT
Installed at (2.0.2): /home/jenkins/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0
(1.17.2, default): /home/jenkins/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0
The best way to manage your application's dependencies

rbenv version

local command

command=version

'[' 1 -gt 0 ']'

shift

case "$command" in

command rbenv version

rbenv version
2.6.1 (set by /home/jenkins/.rbenv/version)

gem env
/home/jenkins/.rbenv/versions/2.6.1/lib/ruby/2.6.0/rubygems/commands/environment_command.rb:169: warning: Insecure world writable dir /home/jenkins/.rbenv/versions/2.6.1/bin in PATH, mode 040777
RubyGems Environment:

RUBYGEMS VERSION: 3.0.1
RUBY VERSION: 2.6.1 (2019-01-30 patchlevel 33) [x86_64-linux]
INSTALLATION DIRECTORY: /home/jenkins/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0
USER INSTALLATION DIRECTORY: /home/jenkins/.gem/ruby/2.6.0
RUBY EXECUTABLE: /home/jenkins/.rbenv/versions/2.6.1/bin/ruby
GIT EXECUTABLE: /usr/bin/git
EXECUTABLE DIRECTORY: /home/jenkins/.rbenv/versions/2.6.1/bin
SPEC CACHE DIRECTORY: /home/jenkins/.gem/specs
SYSTEM CONFIGURATION DIRECTORY: /home/jenkins/.rbenv/versions/2.6.1/etc
RUBYGEMS PLATFORMS:

ruby
x86_64-linux

GEM PATHS:

/home/jenkins/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0
/home/jenkins/.gem/ruby/2.6.0

GEM CONFIGURATION:

:update_sources => true
:verbose => true
:backtrace => false
:bulk_threshold => 1000

REMOTE SOURCES:

https://rubygems.org/

SHELL PATH:

/home/jenkins/.rbenv/versions/2.6.1/bin
/home/jenkins/.rbenv/libexec
/home/jenkins/.rbenv/plugins/ruby-build/bin
/home/jenkins/.rbenv/shims
/usr/local/dependency-check-cli/bin
/usr/local/sonar-scanner-cli/bin
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin/HOME/.rbenv/bin
/home/jenkins/.rbenv/bin

bundle env

Environment
Bundler       1.17.2
  Platforms   ruby, x86_64-linux
Ruby          2.6.1p33 (2019-01-30 revision 66950) [x86_64-linux]
  Full Path   /home/jenkins/.rbenv/versions/2.6.1/bin/ruby
  Config Dir  /home/jenkins/.rbenv/versions/2.6.1/etc
RubyGems      3.0.1
  Gem Home    /home/jenkins/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0
  Gem Path    /home/jenkins/.gem/ruby/2.6.0:/home/jenkins/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0
  User Path   /home/jenkins/.gem/ruby/2.6.0
  Bin Dir     /home/jenkins/.rbenv/versions/2.6.1/bin
Tools
  Git         2.22.0
  RVM         not installed
  rbenv       rbenv 1.1.2-2-g4e92322
  chruby      not installed

Bundler Build Metadata

after debugging this for a day - the problem seems to be chmod? permission issues on the versions file ..
the fix is pretty simple - make this file be owned by the current user ... and voila it works
 export GEM_HOME=/opt/bundle && \
        versions=$( find /home/jenkins/.bundle/ -name versions) && \
        mv $versions $versions.bak && \
        cat $versions.bak > $versions

the interesting question is what is the .gem dir actually for? and how com - if I specify GEM_HOME as env variable before initial isntallation - this dir is still created .. questions all over the place


Remove sqlContext creation from tutorial notebook

Remove sqlContext creation from tutorial notebook.
sqlContext is supposed to created and injected by Zeppelin.

Ready to merge

Looks good to me

LGTM


Felinids Being Jolly and Eating a Nice Christmas Dinner with the Gingerbread People

About the PR

I have already gotten a gift from Santa what a joyous season.
Why / Balance

Technical details

Media

Requirements

[X] I have read and am following the Pull Request and Changelog Guidelines.
[X] I have added media to this PR or it does not require an ingame showcase.

Breaking changes

Changelog

:cl: Allah, Donald Trump, Yakub & Urist McYakubian

add: Felinids Being Jolly and Eating a Nice Christmas Dinner with the Gingerbread People

Very jolly!!

you may now kiss the bride

sure whatever


Remove license info from README

We don't need the duplication, especially now that the GitHub interface shows the
license information on the main page of the repository when it can be detected
directly from the LICENSE file.
This also updates the license file to reassign copyright to the Exercism legal entity.

@kytrinyx unless I'm mistaken, this didn't actually remove license info from the README?!

D'oh :-) I'll fix that!

Ok, done.


Cleanup test databases

1: Create a helper function to delete test databases.
2: Also, cleanup tables in SQL server. Single test table and all tables.

You can choose to pickup #33 or #32 if you want to work on this.


service provider support

Moving here from #48 w/ conflicts resolved. Can overwrite 48 if preferred.

Request.Handler should return a Response, not a ResponseConvertible. I want to keep all Response conversion in the Router / Application.
Use Route.Handler to refer to a request handler that returns a ResponseConvertible.

@tannernelson updated to retain that functionality

Oops sorry if I wasn't clear. I think the Route handler should be on the Route class.
ResponseConvertibles are resolved to Response's before they are even registered to the Router.
I'd rather keep the ResponseConvertible logic as isolated as possible so that middleware and routers etc can work with the simpler Request handler.

Check the closed PR to see my implementation.

@tannernelson In the new setup, we omit the need for a global Routes array which I think is preferable for users who may want to implement a custom Router since it's much more modular.  By converting inside of the Router, we allow access to the simpler -> Response, which accomplishes the same effect in Middleware.  Or am I missing something?

Oh, I see what's happened.
The API for adding routes was moved to the Application class.
app.get("test") { request in
    return "test'
}

I think this API is very clean. You register your Route.Handlers with the application, then upon booting, the application resolves all the Route.Handlers to Request.Handlers and registers them with the chosen RouterDriver.

If you copy the Route.swift file from the closed PR, it has all the missing pieces.

@tannernelson I see where we missed each other, updating now.

@tannernelson Ok, the syntax has been returned to the application, I like this way much better since it omits the need for a singleton while still keeping interaction simple and clean.  Good choice!  It also works better for the router since we can rely on its registration component and leave modularity easy for swapping in a new RouterDriver.

This looks great. Do we still have support for doing the follow:
app.host("google.com") {
    app.get("test") { request in
        return "this is only available at google.com/test"
    }
}

Everything looks good. Did we add any new tests with this?


Add ObjectStore::put_multipart_opts

Is your feature request related to a problem or challenge? Please describe what you are trying to do.

Following #4984 added ObjectStore::put_opts taking a PutOptions containing a PutMode. #4999 extended this to support specifying a TagSet. #5334 proposes extending this to support broader categories of metadata.
Whilst PutMode does not apply to put_multipart, as no stores AFAIK support conditional multipart uploads, but TagSet and Attributes would be applicable to multipart uploads, as pointed out by @Xuanwo on https://github.com/apache/arrow-rs/pull/5431#discussion_r1502309316
Describe the solution you'd like

I would propose introducing a new PutMultipartOptions and a corresponding ObjectStore::put_multipart_opts, with a default implementation of ObjectStore::put_multipart calling through with PutMultipartOptions::default().
Describe alternatives you've considered

We could not do this, however, this would create an unfortunate bifurcation in functionality between multipart and non-multipart uploads.
Additional context

Going to proceed with https://github.com/apache/arrow-rs/issues/5458 instead


Add .gitattributes file to ensure correct line endings

When running docker-compose on Windows the docker-entrypoint.sh file must have UNIX-style line endings.

@dependabot rebase


[SPIKE] Improve efficiency using cache

Decide cache structure and implementation

construct database to store either data or access token


Show Config/Manifest as JSON string in inspect when format is not set

In https://github.com/projectatomic/buildah/issues/363:
Config and Manifest are displayed as a string representing JSON only when "--format" is set.
However, this is necessary too if "--format" is not set.
This patch fixes this by using the same technique in above to make the representation of Manifest and Config consistent.
Fixes #429

bot, add author to whitelist

LGTM
@umohnani8 @nalind @TomSweeneyRedHat PTAL

CI failure is not related to the change:
not ok 52 from cpu-shares test
[...]
#   `cid=$(buildah from --cpu-shares=2 --pull --signature-policy ${TESTSDIR}/policy.json alpine)' failed
[...]
# time="2018-03-19T09:39:01Z" level=debug msg="error pulling image \"docker.io/library/alpine\": Error writing blob: error storing blob to file \"/var/tmp/storage723686758/1\": unexpected EOF"
# time="2018-03-19T09:39:01Z" level=debug msg="error pulling and reading image \"docker.io/library/alpine\": Error writing blob: error storing blob to file \"/var/tmp/storage723686758/1\": unexpected EOF"

bot, retest this please

Change LGTM.  Would like a head nod from @nalind or @mtrmac

LGTM

@rh-atomic-bot r+

Thanks @rhatdan @TomSweeneyRedHat @umohnani8

Change LGTM. Would like a head nod from @nalind or @mtrmac

ACK.


Task-3

Issue: #4
Here is the ouput & commands are in my branch

Hey @ASHTAD123
Thanks for opening this PR 🚀. Mentor will review your pull request soon and till then, keep contributing and stay calm.
Thanks for contributing in OpenCode'24 ✨✨!

Hey @ASHTAD123
Your PR has been merged 🥳🥳 and you have earned 10 points.
Thanks for contributing in OpenCode'24 ✨✨


incorrect info in guideline

In the below image it says to add both components to the basegame.
However these with these names there are only two other components similar, but not exactly with these names.
Either I am doing something wrong, or the instructions are inaccurate.

You need to add them, they are not added by default


Allow storage and retrieval of relative URIs

(Migrated from https://openrdf.atlassian.net/browse/SES-151)
See forum thread at http://www.openrdf.org/forum/mvnforum/viewthread?thread=296 Allowing relative URIs to be stored in Sesame would enable upload of RDF documents with relative URIs and not resolving them until extracting them from Sesame again. A requirement here is that the API allows for the optional specification of a base URI at retrieval time. If not specified, a default base URI can be used for serializing to formats that require absolute URIs, such as NTriples.

I vote not to continue this feature request, as it removes all of the basis for the IRI/URI class contract, effectively making it impossible to compare two different IRIs at any point for equality.
Further support for writing relative IRIs would be useful, but not pushing them into the Model/Repository/Sail APIs.

Agreed.


ARC Compatibility

Hello @admsys thanks for this great addon.
I'm just writing to notify OF project transitioned to ARC and next release will be out soon.
Thank you

OF 0.12.0 is out finally !

Hi @dimitre! thanks for the nudge, I don't have a mac development system around these days unfortunately. This will have to sit for a while unless someone can open a PR for it.

Thank you!
I'll copy @2bbb and @artificiel here, in the case they have time to have a look.

@dimitre
maybe supporting ARC is not so hard.
we need to fix only ofxAudioUnitCocoaUtilties.mm.
but those codes are not regular method names or implementations of Objective-C style, about initXXX.
basically methods named as initXXX need to returns instancetype (i.e. class itself).
and I can't understand enough what those codes want to do actually and relations.
so, I can support to fix but I can't do by myself. sorry!

Hi, I've found that the easiest way to support ARC and for this addon to work with OF0.12 is to add the -fno-objc-arc flag  to ofxAudioUnitCocoaUtilties.mm.
Check this screenshot on where to click and just paste there the -fno-objc-arc  flag. compile as usual.

this would be a great addition to projectGenerator, if we could configure compiler flags to specific files.

I think a generic post-processing step would be great as it allows to solve a variety of problems.
there is already a proposal for a post-compile step: https://github.com/openframeworks/projectGenerator/pull/217 perhaps a similar ADDON_AFTER_PROJECT_GENERATED that allows an addon author to script actions to be performed right after generation?
(that being said, robustly scripting modifications to xcodeproj is not a solved problem by itself, unless some new methods appeared in the past year or so?)

@artificiel certainly it would be great, but it falls out of the scope of this. Although a post compile would not fix this issue as it is a compilation issue.

@roymacdonald about scope maybe i misunderstood @dimitre's idea but it requires some changes to to have instructions in addon.make so PG can mark some files as no-objc-arc — my suggestion was to investigate a generic post-processing step (beyond something specific to project file attributes).
as for the reference to https://github.com/openframeworks/projectGenerator/pull/217 it was to give an example of a design that could serve as inspiration, but yeah a post-compile would not fix this issue hence my suggestion of implementing something like ADDON_AFTER_PROJECT_GENERATED

@artificiel I get what you mean. :)  I just meant that discussing any fix to the PG was out of the scope of this issue and addon. But for sure it would be great if we already had something in PG that would allow to set something in the addon_config.mk file that would allow to put those flags in it.


Appstudio update test-component-pac-tzqo

Pipelines as Code configuration proposal
To start the PipelineRun, add a new comment with content /ok-to-test
For more detailed information about running a PipelineRun, please refer to Pipelines as Code documentation Running the PipelineRun
To customize the proposed PipelineRuns after merge, please refer to Build Pipeline customization

Pipelines as Code CI/test-component-pac-tzqo-on-pull-request has successfully validated your commit.

StatusDurationName

✅ Succeeded
9 seconds
init

✅ Succeeded
17 seconds
clone-repository

✅ Succeeded
47 seconds
build-container

✅ Succeeded
10 seconds
sast-snyk-check

✅ Succeeded
25 seconds
deprecated-base-image-check

✅ Succeeded
3 minutes
clair-scan

✅ Succeeded
47 seconds
clamav-scan

✅ Succeeded
18 seconds
sbom-json-check

✅ Succeeded
24 seconds
inspect-image

✅ Succeeded
9 seconds
show-summary

✅ Succeeded
7 seconds
show-sbom

Pipelines as Code CI/test-component-pac-tzqo-on-pull-request has successfully validated your commit.

StatusDurationName

✅ Succeeded
9 seconds
init

✅ Succeeded
17 seconds
clone-repository

✅ Succeeded
47 seconds
build-container

✅ Succeeded
10 seconds
sast-snyk-check

✅ Succeeded
25 seconds
deprecated-base-image-check

✅ Succeeded
3 minutes
clair-scan

✅ Succeeded
47 seconds
clamav-scan

✅ Succeeded
18 seconds
sbom-json-check

✅ Succeeded
24 seconds
inspect-image

✅ Succeeded
9 seconds
show-summary

✅ Succeeded
7 seconds
show-sbom

Pipelines as Code CI/test-component-pac-tzqo-on-pull-request has successfully validated your commit.

StatusDurationName

✅ Succeeded
8 seconds
init

✅ Succeeded
23 seconds
clone-repository

✅ Succeeded
1 minute
build-container

✅ Succeeded
11 seconds
sast-snyk-check

✅ Succeeded
9 seconds
clair-scan

✅ Succeeded
38 seconds
clamav-scan

✅ Succeeded
26 seconds
inspect-image

✅ Succeeded
25 seconds
deprecated-base-image-check

✅ Succeeded
7 seconds
sbom-json-check

✅ Succeeded
14 seconds
show-sbom

✅ Succeeded
8 seconds
show-summary


Audio event classification sample

Goal: Build a sample app for Yamnet, a pretrained model that can recognize many different kinds of audio event.
References:

Pretrained model
TFLite sound classification Android sample
iOS sample coming soon

@khanhlvg does this indicate we can now convert an audio classification model trained using Teachable Machine?

@khanhlvg
I am definetely interested about that!
Started reading all information...

I made a colab notebook with executable code blocks and the ability to hear and try different audio files
https://colab.research.google.com/drive/1tM9LIcFr5PCggzUqM0BXr07Zokil-Bye?usp=sharing

@farmaker47 do you want to create a separate repository for the project? Also, feel free to send a PR by including the link in the README of this repository. We can then scope this project :D

Yes sure!
I will create one when I start working the android part!

Hey @khanhlvg and @sayakpaul
I paste here some significant results from the benchmark tool for the yamnet tflite model.

I want your opinion @khanhlvg @sayakpaul about the fact that I get tflite error for this model when I try to use GPU.
There are no results in every phone configuration.
The TF Hub url is this where there is a code snippet on how to use this model.
Do you think that this model is not for GPU and why is that?

@farmaker47 it can be that the model is not yet supported by the TFLite GPU delegate or at least some parts of the model are not yet supported. For example, if I recollect correctly argmax() operation is not yet supported.
So, a good homework for you would be to load up the TFLite model in Netron and compare which ops are not supported by the delegate.

@farmaker47 @sayakpaul It's great to see the progress on this and sorry for the delayed response from my side.
I think there's a good chance that the model isn't compatible with GPU delegate. To find out, you can run the benchmark tool with the yamnet model and see the output/error message from the tool to find out.

Updated colab notebook with inference with interpreter with the tflite model.
Procedure of collecting sound, transforming it to correct form and infering with the interpreter seems similar with the one that we did with the SPICE model. So now what is left is to combine everything inside the android application!

I upload the first outputs from our model when the same .wav file is infered:

Colab notebook TensorFlow model: 9.9126965e-01 2.6559830e-04 1.5967786e-03 ..........
Colab notebook TF Lite model: 9.91269529e-01 2.65538692e-04 1.59677863e-03 ..........
Mobile phone TFLite file: 0.9912695, 2.655983E-4, 0.0015967786 ..........
Clearly we have an exact match and everything seems to work fine!!!

Also I have to mention that Log messages inside android studio from the tensorflow library are now more helpful. Watch an example if I intentionally change the output size of the float array:
E/EXCEPTION: java.lang.IllegalArgumentException: Cannot copy from a TensorFlowLite tensor (Identity) with shape [8, 521] to a Java object with shape [4, 521].
Above the log message points the error and the output node name (Identity)
The inference time for a 2 seconds audio file is 100ms... pretty fast don't you think??!! :) :)

Thanks George for the update! It looks like you're making good progress :)

The inference time for a 2 seconds audio file (after benchmarking it, CPU is used with only 2 threads) is 100ms... pretty fast don't you think??!! :) :)

Indeed! Classification model aren't computational expensive.

Clearly android app outputs the same labels as colab. I think project is going to finish real fast!

@farmaker47 from our previous discussions, I think that the only thing that is remaining here is the blog post. Right?

Yes Sayak. I have started writing the blog post.

@farmaker47 can we close this issue now as you have already released the blog posts?

Yeah sure!
Στις Σάβ, 12 Δεκ 2020, 4:10 μ.μ. ο χρήστης Sayak Paul <
<EMAIL_ADDRESS>έγραψε:

@farmaker47 https://github.com/farmaker47 can we close this issue now
as you have already released the blog posts?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/ml-gde/e2e-tflite-tutorials/issues/32#issuecomment-743761783,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AGHAJERDXHQGHXHRK57HPHLSUN2VPANCNFSM4SROA4TQ
.


Table.read(f"{lp.LEPHAREDIR}/examples/COSMOS.in") gives astropy.io.registry.base.IORegistryError

Hello, when running the getting started code from the docs:
import lephare as lp
from astropy.table import Table
# The following config is highly dependent on your input data and science goals
config=lp.all_types_to_keymap(lp.default_cosmos_config)
lp.data_retrieval.get_auxiliary_data(keymap=config, additional_files=['examples/COSMOS.in'])
lp.prepare(config)
# The following example table is in the lephare input format.
input_table=Table.read(f"{lp.LEPHAREDIR}/examples/COSMOS.in")
output, pdfs, zgrid = lp.process(config, input_table)

This gives:
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/lustre/t1/cl/lsst/tmp/henrique.almeida/miniconda3/lib/python3.11/site-packages/astropy/table/connect.py", line 62, in __call__
    out = self.registry.read(cls, *args, **kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/lustre/t1/cl/lsst/tmp/henrique.almeida/miniconda3/lib/python3.11/site-packages/astropy/io/registry/core.py", line 211, in read
    format = self._get_valid_format(
             ^^^^^^^^^^^^^^^^^^^^^^^
  File "/lustre/t1/cl/lsst/tmp/henrique.almeida/miniconda3/lib/python3.11/site-packages/astropy/io/registry/base.py", line 357, in _get_valid_format
    raise IORegistryError(
astropy.io.registry.base.IORegistryError: Format could not be identified based on the file name or contents, please provide a 'format' argument.
The available formats are:
           Format           Read Write Auto-identify Deprecated
--------------------------- ---- ----- ------------- ----------
                      ascii  Yes   Yes            No
               ascii.aastex  Yes   Yes            No
                ascii.basic  Yes   Yes            No
                  ascii.cds  Yes    No            No
     ascii.commented_header  Yes   Yes            No
                  ascii.csv  Yes   Yes           Yes
              ascii.daophot  Yes    No            No
                 ascii.ecsv  Yes   Yes           Yes
           ascii.fast_basic  Yes   Yes            No
ascii.fast_commented_header  Yes   Yes            No
             ascii.fast_csv  Yes   Yes            No
       ascii.fast_no_header  Yes   Yes            No
             ascii.fast_rdb  Yes   Yes            No
             ascii.fast_tab  Yes   Yes            No
          ascii.fixed_width  Yes   Yes            No
ascii.fixed_width_no_header  Yes   Yes            No
 ascii.fixed_width_two_line  Yes   Yes            No
                 ascii.html  Yes   Yes           Yes
                 ascii.ipac  Yes   Yes            No
                ascii.latex  Yes   Yes           Yes
                  ascii.mrt  Yes   Yes            No
            ascii.no_header  Yes   Yes            No
                  ascii.qdp  Yes   Yes           Yes
                  ascii.rdb  Yes   Yes           Yes
                  ascii.rst  Yes   Yes            No
           ascii.sextractor  Yes    No            No
                  ascii.tab  Yes   Yes            No
                       fits  Yes   Yes           Yes
                       hdf5  Yes   Yes           Yes
                 pandas.csv  Yes   Yes            No
                 pandas.fwf  Yes    No            No
                pandas.html  Yes   Yes            No
                pandas.json  Yes   Yes            No
                    parquet  Yes   Yes           Yes
                    votable  Yes   Yes           Yes
                     aastex  Yes   Yes            No        Yes
                        cds  Yes    No            No        Yes
                        csv  Yes   Yes            No        Yes
                    daophot  Yes    No            No        Yes
                       html  Yes   Yes            No        Yes
                       ipac  Yes   Yes            No        Yes
                      latex  Yes   Yes            No        Yes
                        mrt  Yes   Yes            No        Yes
                        rdb  Yes   Yes            No        Yes

Installed versions:

lephare 0.1.9 (from PyPI)

python 3.11.9 (from conda default channel)

astropy: 6.1.1 (from PyPI)

[x] I have described the situation in which the bug arose, including what code was executed, information about my environment, and any applicable data others will need to reproduce the problem.

[x] I have included available evidence of the unexpected behavior (including error messages, screenshots, and/or plots) as well as a descriprion of what I expected instead.

[x] If I have a solution in mind, I have provided an explanation and/or pseudocode and/or task list.

Thanks for noticing this. It needs to be:
input_table=Table.read(f"{lp.LEPHAREDIR}/examples/COSMOS.in",format='ascii')
I will update the documentation.

Hello, Raphael, the updated command works, thanks,

closed as resolved with update to the documentation


toString without Exponents

Hi,
This is more of a request than an issue. I just didn't submit a PR because I'm not sure you would be interested in doing this.
Can you add an option to toString() to return the results without any formatting or exponents, basically just return the raw result from  coeffToString( n.c ) ?
I had to do this to solve a problem on HackerRank - https://www.hackerrank.com/challenges/fibonacci-modified

Sorry, just verified that toFixed() already does this.


Enzyme creating a large number of allocations during reverse pass

This is a fun one. I am finding that for certain code patterns Enzyme is inserting a large number of allocations into the reverse pass even if the forward pass only does a small number or zero allocations. The MWE is
using Enzyme
using StructArrays
using StaticArrays
using BenchmarkTools

@inline function fga(x)
    return SMatrix{2,2,typeof(x.g), 4}(x.g, 0, 0, x.g)
end

getparams(x, inds) = map(getindex, x, inds)
getinds(xinds, index, ::Val{1}) = map(x->getindex(x[1], index), xinds)
getinds(xinds, index, ::Val{2}) = map(x->getindex(x[2], index), xinds)

function apply_instrument(vis, x, inds)
    vout = similar(vis, SMatrix{2,2,eltype(vis[1]), 4})
    @inbounds for i in eachindex(vout, vis)
        v = apply_jones(vis[i], i, x, inds)
        vout[i] = v
    end
    return vout
end

@inline inner(j1, j2, v) = j1*SMatrix{2,2,eltype(v), 4}(v[1], v[2], v[3], v[4])*j2'

@inline function apply_jones(v, index, x, inds)
    xind1 = getinds(inds, index, Val(1))
    xind2 = getinds(inds, index, Val(2))
    p1 = getparams(x, xind1)
    p2 = getparams(x, xind2)
    j1 = fga(p1)
    j2 = fga(p2)
    return inner(j1, j2, v)
end

function test(vis, x, inds)
    vout = apply_instrument(vis, x, inds)
    mapreduce(x->sum(abs2, x), +, vout)
end

function dtest(vis, dvis, x, dx, xinds)
    map(x->fill!(x, 0), dx)
    fill!(dvis, SVector(0.0, 0.0, 0.0, 0.0))
    autodiff(Enzyme.Reverse, test, Active, Duplicated(vis, dvis), Duplicated(x, dx), Const(xinds))
end

ngains = 186
nvis = 315

x = (g = rand(ngains),)

vis = StructVector{SVector{4, Float64}}((rand(nvis), rand(nvis), rand(nvis), rand(nvis)))

indg1 = rand(1:ngains, nvis)
indg2 = rand(1:ngains, nvis)
indd1 = rand(1:ngains, nvis)
indd2 = rand(1:ngains, nvis)

xinds = (g = (indg1, indg2), )

@benchmark test($vis, $x, $xinds)

dvis = zero(vis)
dx = Enzyme.make_zero(x)

@benchmark dtest($vis, $dvis, $x, $dx, $xinds)

which gives output
# Forward pass
BenchmarkTools.Trial: 10000 samples with 7 evaluations.
 Range (min … max):  4.806 μs …  17.213 ms  ┊ GC (min … max):  0.00% … 99.85%
 Time  (median):     5.336 μs               ┊ GC (median):     0.00%
 Time  (mean ± σ):   7.733 μs ± 172.506 μs  ┊ GC (mean ± σ):  24.72% ±  2.25%

      ▄▇██▇▆▄▃▂▂▂▃▂▁                          ▂▂▃▃▂▃▃▄▃▂      ▂
  ▄▁▅███████████████▇▆▆▆▅▅▃▃▄▃▁▃▅▃▃▁▃▄▁▅▁▁▃▄▇▇████████████▇█▇ █
  4.81 μs      Histogram: log(frequency) by time      8.81 μs <

# Reverse pass
julia> @benchmark dtest($vis, $dvis, $x, $dx, $xinds)
BenchmarkTools.Trial: 10000 samples with 1 evaluation.
 Range (min … max):  59.949 μs … 116.741 ms  ┊ GC (min … max):  0.00% … 99.78%
 Time  (median):     63.514 μs               ┊ GC (median):     0.00%
 Time  (mean ± σ):   78.214 μs ±   1.169 ms  ┊ GC (mean ± σ):  16.12% ±  1.88%

       ▃█▅▂▁▂▁
  ▁▁▁▁▄███████▇▄▃▂▂▂▂▂▂▂▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▂▂▂▂▂▂▂▂▂▂▂▂▂▁▁▁▁▁▁ ▂
  59.9 μs         Histogram: frequency by time         82.4 μs <

 Memory estimate: 57.80 KiB, allocs estimate: 42.

The problem isn't so much the performance as it is the allocations. Profiling the code I see the following

So a large portion of the time is spent allocating when calling getindex. Interestingly if I inline apply_instrument the problem goes away and I get the dramatically improved performance
julia> @benchmark dtest($vis, $dvis, $x, $dx, $xinds)
BenchmarkTools.Trial: 10000 samples with 1 evaluation.
 Range (min … max):   9.010 μs … 475.684 μs  ┊ GC (min … max): 0.00% … 0.00%
 Time  (median):      9.840 μs               ┊ GC (median):    0.00%
 Time  (mean ± σ):   10.143 μs ±   4.717 μs  ┊ GC (mean ± σ):  0.00% ± 0.00%

         ▁▄▆█▇▄▂
  ▁▁▂▂▂▃▆████████▅▄▃▂▃▂▂▃▃▃▃▃▃▃▃▃▃▂▂▂▂▁▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ ▂
  9.01 μs         Histogram: frequency by time         13.2 μs <

 Memory estimate: 21.00 KiB, allocs estimate: 8.

I am on Julia 1.10.4 and Enzyme 0.12.25

Calling Enzyme.API.inlineall!(true) at the top of the program can reduce the allocations significantly in my experience

That is good to know, and I can definitely add that! Are these allocations something I should expect with this kind of code?

Ok so I also sporadically get a segfault from code very similar to this. If I change apply instrument to
@inline function apply_instrument(vis, J::ObservedInstrumentModel, x)
    vout = similar(vis, SMatrix{2,2,eltype(vis[1]), 4})
    xint = x.instrument
    vout .= apply_jones.(vis, eachindex(vis), Ref(J), Ref(xint))
    return vout
end

I get a gc corruption error when calling Ref, which sometime spits out a ton of info. An example is below.
err_gccorruption_enzyme_sep2.txt

@ptiede can you open that as an issue with a MWE and also confirm you’re on 1.10.5?

Ya for sure! And ya I am on 1.10.5.


initMultipleTables and stateSave

Implementation of stateSave for initMultipleTables. Currently datatables linked to filter remember state, but filter doesnt. (after refresh page, there are no hightlighted selected options in option element and others)

fixed in 0.8.9.beta.11


net: resolver fails to resolve host with 2 cnames chain or more

What version of Go are you using (go version)?

$ go version
**1.17.6**

Does this issue reproduce with the latest release?
Yes.
What operating system and processor architecture are you using (go env)?
MacOs (darwin). but it is also reproduced in other env types.
go env Output
$ go env
GO111MODULE=""
GOARCH="arm64"
GOBIN=""
GOCACHE="/Users/i520773/Library/Caches/go-build"
GOENV="/Users/i520773/Library/Application Support/go/env"
GOEXE=""
GOEXPERIMENT=""
GOFLAGS=""
GOHOSTARCH="arm64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE="/Users/i520773/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/i520773/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/opt/homebrew/Cellar/go/1.17.6/libexec"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/opt/homebrew/Cellar/go/1.17.6/libexec/pkg/tool/darwin_arm64"
GOVCS=""
GOVERSION="go1.17.6"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/Users/i520773/Desktop/repos/e2e-tests/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -arch arm64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/39/cwqhd85n7cl0vrtf4c5kcw200000gn/T/go-build3546095244=/tmp/go-build -gno-record-gcc-switches -fno-common"

What did you do?
I am trying to resolve a dns record that is pointing to a cname. and the other cname is pointing to A record.
(I have a record which is resolved to a cname and the cname is resolved to an ip)
I am getting the error: no such host.
Code:
func issueLookUp(host string) ([]string, error) {
	ips, err := net.LookupHost(host)
	if err != nil {
		return nil, fmt.Errorf("error in lookup:\n %v", err)
	}
	if len(ips) == 0 {
		return nil, fmt.Errorf("LookupHost() empty return value")
	}
	for _, ip := range ips {
		fmt.Println("found ip ", ip)
	}
	return ips, nil
}

it is working for a url like google.com but it is failing for urls that has 2 CNAMEs in their resolving "chain".
The same code is working if we have only 1 cname in the chain.
What did you expect to see?
I expect the resolving to be successful.
What did you see instead?
lookup <some_url>  on  : no such host
Thanks!!

With the following records:

go-52005-a.liao.dev CNAME go-52005-b.liao.dev
go-52005-b.liao.dev CNAME go-52005-c.liao.dev
go-52005-c.liao.dev A <IP_ADDRESS>

The code finds the correct host:
10:45:00 ~/tmp/testrepo-847 0:01:40
main » cat main.go
package main

import (
	"fmt"
	"net"
)

func main() {
	fmt.Println(issueLookUp("go-52005-a.liao.dev"))
}

func issueLookUp(host string) ([]string, error) {
	ips, err := net.LookupHost(host)
	if err != nil {
		return nil, fmt.Errorf("error in lookup:\n %v", err)
	}
	if len(ips) == 0 {
		return nil, fmt.Errorf("LookupHost() empty return value")
	}
	for _, ip := range ips {
		fmt.Println("found ip ", ip)
	}
	return ips, nil
}

10:45:19 ~/tmp/testrepo-847 0:00:00
main » go run .
found ip  <IP_ADDRESS>
[<IP_ADDRESS>] <nil>

You'll need to provided more information to reproduce the issue.

Hi @seankhliao
Thanks for the quick reply. You can close this issue.
My problem was that i needed to use the appropriate name server.


fix encrypt bug

Fixes #ISSUSE_ID.
Changes proposed in this pull request:

Pull Request Test Coverage Report for Build 7025

8 of 9 (88.89%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.006%) to 71.14%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

sharding-core/sharding-core-common/src/main/java/org/apache/shardingsphere/core/parsing/antlr/filler/sharding/segment/impl/OrConditionFiller.java
7
8
87.5%

Totals

Change from base Build 7024:
0.006%

Covered Lines:
11307

Relevant Lines:
15894

💛  - Coveralls


spree core - move track inventory from Variant to StockItem

Read through and this looks pretty good to me!

oh, and I'm also testing this branch against hw_admin staging


Flutter Stable Framework Cherrypicks 1.20.4

Scheduled Cherrypicks

Ios-deploy update https://github.com/flutter/flutter/issues/64045

Commit https://github.com/flutter/flutter/commit/020215bb4c9e8d4fbbc5522f9eeb469fa4727279
PR https://github.com/flutter/flutter/pull/65139
Author @christopherfujino, original approver @jmagman

Tested with a physical device, LGTM


importd without middleware classes defined admin don't work

a minimal example is:
$ cat l.py
from importd import d

if __name__ == '__main__':
	d.main()

when you try to access the admin you receive:
AttributeError at /admin/
'WSGIRequest' object has no attribute 'user'

You need to declare auth related middlewares for it to work.

I just started with this project. I am not aware of architecture of this project and if there is plan to add default middleware classes for admin to work.
But until default middleware classes are added, adding these two lines will make admin work
from importd import d
d(MIDDLEWARE_CLASSES=['django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware'])

Interesting should be to integrate the know solutions into the actual code on master, via a Pull Request
:smile_cat:

@juancarlospaco I will give it a try now and open a PR

:shipit:

@juancarlospaco Opened a PR https://github.com/amitu/importd/pull/70


Fix skopeo layers and deprecate it

As title says. @mtrmac PTAL
@giuseppe I know you're using skopeo layers in your sys containers, would be nice to migrate that to mkdir dir && skopeo copy docker://image_name dir:here_are_the_layers

would be nice to migrate that to mkdir dir && skopeo copy docker://image_name dir:here_are_the_layers

(Do we document and commit to the dir: format as an ABI? I guess we need to… Not that having skopeo layers undocumented ever stopped anyone 😈 )

(Do we document and commit to the dir: format as an ABI? I guess we need to… Not that having skopeo layers undocumented ever stopped anyone  )

I think we should commit to oci: instead here

I think we should commit to oci: instead here

That might involve a schema or metadata conversion… which might actually be desirable, depending on the situation.

alright, fixed your comments - we'll talk about atomic moving to copy in another issue maybe (no urgency right now)

Thanks! LGTM pending tests.

Lets remove the layers information in the man page.  Perhaps remove layers from command completion.  I would prefer we make it dissapear if we don't want users using it any more.

one advantage of skopeo layers is that I could specify which layers to download, so that atomic pull will only fetch the missing ones (a layer could be already stored locally, from another image, or didn't change in a newer version of the image).  How can I do it with copy?

copy can’t do that for dir:; it would be possible to write an ostree: transport for containers/image and then skopeo copy would be able to skip redownloading, but that’s obviously not all that attractive given the existing Python implementation.

could we add a filter to skopeo copy that allows to specify which layers to consider as skopeo layers currently does?  We can drive it from atomic in the same way as we currently do.

In principle, sure, it’s code. Though it is a bit unclear what this does to the semantics of skopeo copy (will the manifest still contain all layers?), and some cases (schema conversion) really need the layers at least read if not written. So, it would be pretty ugly in an already pretty complex copy pipeline.
Separately, what semantics exactly do you need? Is it just a blind “download one layer, the caller is reading and interpreting the manifest and dealing with any semantics”, or it the caller actually expecting intelligence and conversions etc. from skopeo?
In particular, should signatures be verified when copying the manifest and data for your use case?

what we do in atomic is to first fetch the manifest, parse it, and then retrieve all the layers that are not already stored in the OSTree repository.  What is needed from atomic is the possibility to fetch a subset of the layers in an image.
The only intelligence needed is for the signatures.  Are signatures verified on the manifest?

Right now, skopeo inspect does not enforce the signature policy, only skopeo copy does. It could be added to inspect, at least as an option.  After that, whatever is downloading thes layer must verify the layer blobs against their digests, which current skopeo layers isn’t doing either.
@runcom Opinions on the path forward?
It seems to me that we either ignore signatures, in which case it seems most natural to revive skopeo layers, Or we plan to support them for pulling to ostree:, in which case a native Golang ostree: transport would be conceptually simpler than carving up skopeo copy into pieces and then having atomic reassemble it back together. OTOH https://github.com/projectatomic/atomic/blob/master/Atomic/syscontainers.py is pretty big.
… after all, a skopeo copy restricted to only a smaller set of layers starts looking as a pretty attractive option…

would it be possible to check signatures having only a subset of the layers?  Having something like --skip-layers=.... seems to me like a quite generic solution and won't require to change what we already have in place.

In the future we would also want to support container/storage as a back end for skopy copy also.  Is there a simple way to get that to happen also?

containers/storage will be integrated natively ( https://github.com/containers/image/pull/63 ), so these disassemble/reassemble-at-the-CLI-level concerns do not apply.  (Also, it always reads all inputs in https://github.com/containers/image/pull/63/files#diff-d77114c36cb773f7266e73a470816298R218 so it is not as interested in skipping existing layers.)

… after all, a skopeo copy restricted to only a smaller set of layers starts looking as a pretty attractive option…

would it be possible to check signatures having only a subset of the layers? Having something like --skip-layers=.... seems to me like a quite generic solution and won't require to change what we already have in place.

Well, “generic” only to the atomic-like “dig into the internal implementation details” users. But yes, it does seem the simplest way to integrate the two; https://github.com/containers/image/pull/159 is not pretty but it seems fairly acceptable, at least if we add some tests… @runcom ?

@mtrmac Are you saying that there will be a
skopeo copy docker:image storage
So that atomic command could pull an image from a registry and install it directly into a local container/storage repository?

Are you saying that there will be a skopeo copy docker:image storage
So that atomic command could pull an image from a registry and install it directly into a local container/storage repository?

I’d expect skopeo copy docker:busybox storage:busybox to work with https://github.com/containers/image/pull/63 , already today, yes.

Awesome, if this was merged...


Extract fir file from a verilog project

Issue
Hello,
I am trying to export firrtl from a verilog project.
Im using the command write_firrtl and it executes without error, but when I try to use the generated .fir file, to another tool, which takes as input only .fir files, it can not parse it .
Maybe Im doing some step wrong on generating the fir file :
The project which I work, has several files and the top level.  I created a script like this :
read_verilog-formal /home/mustafa/Downloads/yosys/tests/Aes128/half_adder.v
read_verilog -formal /home/mustafa/Downloads/yosys/tests/Aes128/full_adder.v
read_verilog -formal /home/mustafa/Downloads/yosys/tests/Aes128/ripple_adder_4bit.v
read_verilog -formal /home/mustafa/Downloads/yosys/tests/Aes128/ripple_adder_6bit.v
read_verilog -formal /home/mustafa/Downloads/yosys/tests/Aes128/ripple_adder_8bit.v
read_verilog -formal /home/mustafa/Downloads/yosys/tests/Aes128/ripple_adder_12bit.v
read_verilog -formal /home/mustafa/Downloads/yosys/tests/Aes128/vedic2x2.v
read_verilog -formal /home/mustafa/Downloads/yosys/tests/Aes128/vedic4x4.v
read_verilog -formal /home/mustafa/Downloads/yosys/tests/Aes128/vedic8x8.v
hierarchy -top vedic8x8
proc
opt
write_firrtl vedic8x8r.fir
So on this case the top level module is vedi8x8.v
Am I missing something  by doing like this ?
Thank you

What tool are you using it with? What error is it giving? I don't think anyone can help you without that information.

@daveshah1  Its this on : https://github.com/ekiwi/rfuzz   RFUZZ
I tried it with several fir files and it works correctly.
I think the problem is that Im using Yosys wrong. Is it the right way to elaborate and link together modules , when having multiple modules on multiple files ?
I also tried it with a simple full adder, so basically two files : half_adder.v and full_adder.v
And still can not use the output to the other tool.
Some of the errors from the RFUZZ :
[error] (run-main-0) firrtl.passes.PassExceptions:
[error] firrtl.passes.CheckInitialization$RefNotInitializedException<EMAIL_ADDRESS>: [module full_adder]  Reference _or__home_mustafa_Downloads_yosys_tests_Aes128_full_adder_v_7_3_Y is not fully initialized.
[error]    : _or__home_mustafa_Downloads_yosys_tests_Aes128_full_adder_v_7_3_Y <= VOID
[error] firrtl.passes.CheckInitialization$RefNotInitializedException<EMAIL_ADDRESS>: [module full_adder]  Reference _0 is not fully initialized.
[error]    : _or__home_mustafa_Downloads_yosys_tests_Aes128_full_adder_v_7_3_Y <= VOID
[error]    : _0 <= _or__home_mustafa_Downloads_yosys_tests_Aes128_full_adder_v_7_3_Y
[error] firrtl.passes.CheckInitialization$RefNotInitializedException<EMAIL_ADDRESS>: [module full_adder]  Reference cout is not fully initialized.
[error]    : cout <= VOID

Please provide a MCVE. If it's not possible to reproduce what you are seeing in a matter of a few minutes max, nobody will bother having a look at the problem.

This might be a problem in the rfuzz tool that I authored.
We will debug this in https://github.com/ekiwi/rfuzz/issues/2.
I think you could close this issue for now if @mlulaj agrees.


What are the benefits of allowing unused function params?

Hello,
Currently, it is allowed a function to have unused params. This is how the rule currently looks like:
"no-unused-vars": [
  2,
  {
    "args": "none"
  }
]

What are the benefits of that? In most cases, this may lead to bad API design and misleading source code. What about restoring this rule to the default option in ESLint? It is:
"no-unused-vars": [
  2,
  {
    "args": "after-used"
  }
]

Thanks,

Hey @ipeychev, as far as I can tell, after-used still allows unused params since it only checks the last one, right?
This setting was overridden by google, I would guess to make it easier to adopt in existing codebases. I would vote to set it to "args": "all" and disable when introducing it into the projects until they are clean.
What do you think?

I guess one possible use case of "args": "none" is to allow refactoring an API without introducing breaking changes. That way, if you stop using params, you can still take the one needed without forcing everyone to upgrade.
I'm not saying it is useful or nice, just trying to answer your question 😉

I think "args": "after-used" is the golden middle and this is the right choice for both writing new code and applying the settings to existing codebase (aka ESlint were correct to set it like this by default).
To allow unused params in function calls, but to forbid ones inside functions just doesn't make sense - this only will lead to bad function signatures.

Hey @ipeychev, I'm fine setting it to the ESlint default, really :)
Also, @eduardolundgren, can we transfer this to the liferay org?


First Contribution by Queeneth Ogbonna

Name: Queeneth Ogbonna
Project: QuTip:  https://qutip.org/index.html
Link to the QuTip Governance Model: https://github.com/qutip/governance/blob/main/governance.md
Link to the QuTip GitHub:  https://github.com/qutip
QuTiP, an open-source software package written in Python, provides users with a variety of tools to learn and simulate quantum systems. It is a versatile toolbox that allows users to explore the intricacies of quantum mechanics, study noise and dissipation effects on quantum systems, and perform advanced research in quantum science.
The top-notch numerical packages Scipy, Numpy, and Cython are all necessary for the QuTiP library to function. Additionally, Matplotlib offers graphical output.
The Community
QuTiP has fostered a dynamic ecosystem and community of individuals who contribute to and use the software. The community has created a wide range of tools that facilitate the study of different aspects of quantum physics and information processing. QuTiP has over 80 code contributors and has been downloaded over 300,000 times by thousands of users, making it an invaluable resource for researchers and enthusiasts.
GOVERNANCE MODEL:
QuTip Code Of Conduct
QuTiP values inclusivity and respect for all individuals who contribute to the project. They strive to provide a harassment-free experience regardless of gender, gender identity, and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, religion, or nationality. Those who violate this policy will be permanently removed from the project.
Project Roles
Core Contributors and Contributors:
They are project maintainers who have the right and responsibility to manage and oversee the project. They may remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions as necessary.
Admin Team:
The Admin Team keeps the QuTiP project lively, maintaining the software, and expanding and improving its features.
They are responsible for technical code development and managing QuTiP-related activities which include maintaining the project through software updates and bug fixes, developing new features, participating in forums, providing support, and mentoring others.
Board Members:
The Board Members are in charge of providing scientific advice, monitoring the project's progress, and ensuring that the Admin Team and the project have adequate financial and logistical support. The Board Members are volunteers who pledge to fulfill the responsibilities assigned to them.
Non-Profit Support:
QuTiP is an affiliated project of NumFOCUS, and their primary responsibility is to promote QuTiP knowledge in the quantum software and sci-dev communities amongst other responsibilities.
Decision-Making Process
The voting Process and decision making is made in groups:
Voting Process For Admin:
Core developers and significant contributors are chosen and elected by the already existing admin team to make up the admin team. Candidates who are not nominated may also submit their own applications with statements outlining their prior involvement with QuTiP and their dedication to the organization's future.
Decision-making For Admin:
Each member of the Admin Team has a vote when making decisions. Prior to making changes, they also make an effort to solicit feedback from the larger community and promptly communicate significant software updates.
Voting Process For Board Members:
The admin team initially selected the members of the Board based on their potential to support the project's growth and their willingness to join. New members may be proposed by current board members or elected by the admin team and existing board members.
As part of their application, potential board members can also include statements about their prior involvement with QuTiP and their dedication to the organization's future. Seats on the Board are held indefinitely, and there must be a minimum of three members and a maximum of seven. A board member who does not participate in the project or does not show up for meetings may be removed by a majority vote.
Decision-Making For Board Members:
Every board member has one vote, and decisions are made by a majority of votes cast.
How Easy Or Difficult Was It To Find And Understand The Governance Model?
At first, I found it a bit challenging to locate the governance model of the QuTip project, as it wasn't immediately obvious where to find it. However, after doing some research on the meaning of governance models, quantum Python, and the project's affiliation with NumFOCUS, I was able to grasp the concept and figure out how to complete the task. Despite the initial difficulty, the process of familiarizing myself with these topics turned out to be a valuable learning experience. Overall, I was able to successfully complete the task and gained a better understanding of open-source project governance in the process.

i just submitted my task. I am hoping and expecting your feedback @arliss-NF

@kwin-eth - this is a strong summary of the governance model for QuTiP.  Yes, this project was a bit more challenging, but you did a great job.  We are hoping that doing this type of research will also familiarize beginners to open source to learn about many topics instead of just governance.  Great job!


Replaced Alerts with Toast Notifications

Related Issues

issue goes here

Changes Made

Replaced console.log messages with toast notifications from the react-toastify library.
Modified the handleShareClick function to show a toast notification when the URL is copied to the clipboard.
Updated the handleSaveClick function to display a toast notification when a project is successfully saved.

Additional Information

Any additional information or context

Checklist

[x] Tests
[x] Translations
[x] Documentations

Screenshots

@AnirudhPanda ,please merge and review my pull request


(PDB-3467) Bump cheshire version to 5.7.1

Fixes an issue where cheshire hold onto the head of a seq while write it to a
stream.

Test PASSed

CLA signed by all contributors.

This needs a jackson bump as well

Actually looks like we're getting it transitively through cheshire in this version:
 [cheshire "5.7.1"]
   [com.fasterxml.jackson.core/jackson-core "2.8.6"]
   [com.fasterxml.jackson.dataformat/jackson-dataformat-cbor "2.8.6"]
   [com.fasterxml.jackson.dataformat/jackson-dataformat-smile "2.8.6"]

So it should be fine.