Allow "resume last" before end of first epoch

For now, --exp.resume last  crashes when it cannot load the engine (if previous run excited before saving anything)
Instead, I think it should just start the training over (and maybe delete the option file if the new one is different?  need more thinking about this)

I think it's almost duplicate with #21 ?


Angular Chart Pie-Chart Click Event

Hi Guys, This is OmBalakumar. Angular Chart is great using and the chart which i am getting is really great but i have implemented click event  In Chartjs Documentation I have seen click event coding documentation.. there its given canvas.onclick(). I don't know where this canvas came from..?? my chart click event is not working.. Please suggest me ways to achieve it..
This is the Html Page
`
`
This is the Javascript page
$scope.pied = [{
value: 4,
color: "#FF5A5E",
highlight: "#FF5A5E",
label: "Prospective"
}, {
value: 0,
color: "#46BFBD",
highlight: "#46BFBD",
label: "Pending"
}, {
value: 0,
color: "#FDB45C",
highlight: "#FDB45C",
label: "CallBacks"
}, {
value: 4,
color: "#e6e6fa",
highlight: "#e6e6fa",
label: "FollowUp"
}, {
value: 1,
color: "#cc5229",
highlight: "#cc5229",
label: "Not Interested"
}, {
value: 0,
color: "#556b2f",
highlight: "#556b2f",
label: "Close"
}]
var pieOptions = {
//Boolean - Whether we should show a stroke on each segment
segmentShowStroke: true,
      //String - The colour of each segment stroke
      segmentStrokeColor: "#fff",

      //Number - The width of each segment stroke
      segmentStrokeWidth: 2,

      //Boolean - Whether we should animate the chart
      animation: true,

      //Number - Amount of animation steps
      animationSteps: 100,

      //String - Animation easing effect
      animationEasing: "easeOutBounce",

      //Boolean - Whether we animate the rotation of the Pie
      animateRotate: true,

      //Boolean - Whether we animate scaling the Pie from the centre
      animateScale: false,

      //Function - Will fire on animation completion.
      onAnimationComplete: null

    }
    var ctx = document.getElementById("pieChart").getContext("2d");
    var myPieChart = new Chart(ctx).Pie($scope.pied, pieOptions);
    ctx.onclick = function(evt){
    var activePoints = myPieChart.getPointsAtEvent(evt);
    console.log("active: "+activePoints);
    // => activePoints is an array of points on the canvas that are at the same position as the click event.
};
    document.getElementById('js-legend').innerHTML = myPieChart.generateLegend();`

The onclick event comes from the chart object I do believe, not the context. So you want to do myPieChart.onclick not ctx.onclick

Thanks dibsyjr1 :) I have used angular-chart which is more easy for me to use.

That's okay, no problem

Hello, today I am closing all issues that are only affecting version 1 of Chart.js as WONTFIX.
If this issue does affect version 2 as well, I apologize for the error. Please create a test case against Chart.js 2 using on of the below websites and we will be happy to reopen the issue and update its classification:

http://jsbin.com/
http://jsfiddle.net/
http://codepen.io/pen/
Premade template: http://codepen.io/pen?template=JXVYzq


Allow ParentDocumentRetriever to subclass MultiVectorRetriever

Makes Docstore subclass BaseStore<string, Document> Makes ParentDocumentRetriever take a BaseStore instead of a Docstore.

@eyurtsev this will ensure backcompat for the existing docstore people are using with this 👍


PostgreSQL 14 FUNCTION BEGIN ATOMIC syntax generating errors

Environment
Liquibase Version: Community 4.3.1
Liquibase Integration & Version: CLI
Liquibase Extension(s) & Version: None
Database Vendor & Version: PostgreSQL 14; JDBC Driver 42.3.1
Operating System Type & Version: MacOS Darwin Kernel Version 20.6.0
Description
In PostgreSQL 14 there is support in FUNCTIONs/PROCEDUREs for native SQL code in a BEGIN ATOMIC ...; END block rather than embedding the code in a string. The advantage is that dependency tracking can be implemented by the database so that DROP ... CASCADE can drop impacted stored procedures.
The new syntax is accepted but an error is raised when it is run thru Liquibase; the text is accepted in PSQL. Liquibase is reporting an issue with the semicolon in the BEGIN ATOMIC block yet shows it is sending the whole statement in the error message (endDelimiter is set to an empty string and splitStatements is set to false).
Steps To Reproduce
I have the files shown below when I run the following command:

liquibase --driver=org.postgresql.Driver --username mmauger --url jdbc:postgresql://localhost:5432/mmauger --changeLogFile changeLog.yml --logLevel debug update

changeLog.yml

databaseChangeLog:
  - include:
      file: good.sql            # uses AS $$ ... $$ syntax for function body
  - include:
      file: bad.sql             # uses PG 14 BEGIN ATOMIC ...; END syntax for function body

good.sql

--liquibase formatted sql
--changeset  good:bug  runAlways:true  endDelimiter:""  splitStatements:false  stripComments:false

create or replace function xyzxx ()
returns numeric
language sql
as $$
    select 1
$$

--rollback  DROP FUNCTION xyzxx
--

bad.sql

--liquibase formatted sql
--changeset  bad:bug  runAlways:true  endDelimiter:""  splitStatements:false  stripComments:false

create or replace function xyzxx ()
returns numeric
language sql
begin atomic
    select 1;
end

--rollback  DROP FUNCTION xyzxx
--

Actual Behavior
When I run liquibase I get the following log messages for good.sql:
[2021-11-04 18:35:27] FINE [liquibase.changelog] Running Changeset:good.sql::bug::good
[2021-11-04 18:35:27] FINE [liquibase.executor] Changeset good.sql::bug::good
[2021-11-04 18:35:27] FINE [liquibase.executor] Executing with the 'jdbc' executor
[2021-11-04 18:35:27] FINE [liquibase.executor] 0 row(s) affected
[2021-11-04 18:35:27] FINE [liquibase.changelog] Reading ChangeSet: good.sql::bug::good
[2021-11-04 18:35:27] FINE [liquibase.database] Executing Statement: create or replace function xyzxx ()
returns numeric
language sql
as $$
    select 1
$$

--
[2021-11-04 18:35:27] FINE [liquibase.executor] Executing with the 'jdbc' executor
[2021-11-04 18:35:27] FINE [liquibase.executor] 0 row(s) affected
[2021-11-04 18:35:27] INFO [liquibase.changelog] Custom SQL executed
[2021-11-04 18:35:27] INFO [liquibase.changelog] ChangeSet good.sql::bug::good ran successfully in 44ms
[2021-11-04 18:35:27] FINE [liquibase.executor] Executing with the 'jdbc' executor
[2021-11-04 18:35:27] FINE [liquibase.executor] Executing with the 'jdbc' executor
[2021-11-04 18:35:27] FINE [liquibase.executor] 1 row(s) affected

But the following for bad.sql:
[2021-11-04 18:35:27] FINE [liquibase.changelog] Running Changeset:bad.sql::bug::bad
[2021-11-04 18:35:27] FINE [liquibase.executor] Changeset bad.sql::bug::bad
[2021-11-04 18:35:27] FINE [liquibase.executor] Executing with the 'jdbc' executor
[2021-11-04 18:35:27] FINE [liquibase.executor] 0 row(s) affected
[2021-11-04 18:35:27] FINE [liquibase.changelog] Reading ChangeSet: bad.sql::bug::bad
[2021-11-04 18:35:27] FINE [liquibase.database] Executing Statement: create or replace function xyzxx ()
returns numeric
language sql
begin atomic
    select 1;
end

--
[2021-11-04 18:35:27] FINE [liquibase.executor] Executing with the 'jdbc' executor
[2021-11-04 18:35:27] FINE [liquibase.executor] Executing with the 'jdbc' executor
[2021-11-04 18:35:27] FINE [liquibase.executor] 0 row(s) affected
[2021-11-04 18:35:27] FINE [liquibase.executor] Release Database Lock
[2021-11-04 18:35:27] FINE [liquibase.executor] Executing with the 'jdbc' executor
[2021-11-04 18:35:27] FINE [liquibase.executor] 0 row(s) affected
[2021-11-04 18:35:27] FINE [liquibase.executor] Executing with the 'jdbc' executor
[2021-11-04 18:35:27] INFO [liquibase.lockservice] Successfully released change log lock
[2021-11-04 18:35:27] FINE [liquibase.executor] Executing with the 'jdbc' executor
[2021-11-04 18:35:27] FINE [liquibase.executor] 0 row(s) affected
[2021-11-04 18:35:27] FINE [liquibase.executor] Executing with the 'jdbc' executor
[2021-11-04 18:35:27] FINE [liquibase.executor] 0 row(s) affected
Unexpected error running Liquibase: Migration failed for change set bad.sql::bug::bad:
     Reason: liquibase.exception.DatabaseException: ERROR: syntax error at end of input
  Position: 91 [Failed SQL: (0) create or replace function xyzxx ()
returns numeric
language sql
begin atomic
    select 1;
end

--]
For more information, please use the --logLevel flag
[2021-11-04 18:35:27] SEVERE [liquibase.integration] Unexpected error running Liquibase: Migration failed for change set bad.sql::bug::bad:
     Reason: liquibase.exception.DatabaseException: ERROR: syntax error at end of input
  Position: 91 [Failed SQL: (0) create or replace function xyzxx ()
returns numeric
language sql
begin atomic
    select 1;
end

--]
liquibase.exception.LiquibaseException: liquibase.exception.MigrationFailedException: Migration failed for change set bad.sql::bug::bad:
     Reason: liquibase.exception.DatabaseException: ERROR: syntax error at end of input
  Position: 91 [Failed SQL: (0) create or replace function xyzxx ()
returns numeric
language sql
begin atomic
    select 1;
end

--]
	at liquibase.changelog.ChangeLogIterator.run(ChangeLogIterator.java:124)
	at liquibase.Liquibase.lambda$null$0(Liquibase.java:273)
	at liquibase.Scope.lambda$child$0(Scope.java:160)
	at liquibase.Scope.child(Scope.java:169)
	at liquibase.Scope.child(Scope.java:159)
	at liquibase.Scope.child(Scope.java:138)
	at liquibase.Scope.child(Scope.java:222)
	at liquibase.Liquibase.lambda$update$1(Liquibase.java:272)
	at liquibase.Scope.lambda$child$0(Scope.java:160)
	at liquibase.Scope.child(Scope.java:169)
	at liquibase.Scope.child(Scope.java:159)
	at liquibase.Scope.child(Scope.java:138)
	at liquibase.Liquibase.runInScope(Liquibase.java:2322)
	at liquibase.Liquibase.update(Liquibase.java:216)
	at liquibase.Liquibase.update(Liquibase.java:202)
	at liquibase.integration.commandline.Main.doMigration(Main.java:1764)
	at liquibase.integration.commandline.Main$1.lambda$run$0(Main.java:364)
	at liquibase.Scope.lambda$child$0(Scope.java:160)
	at liquibase.Scope.child(Scope.java:169)
	at liquibase.Scope.child(Scope.java:159)
	at liquibase.Scope.child(Scope.java:138)
	at liquibase.integration.commandline.Main$1.run(Main.java:363)
	at liquibase.integration.commandline.Main$1.run(Main.java:193)
	at liquibase.Scope.child(Scope.java:169)
	at liquibase.Scope.child(Scope.java:145)
	at liquibase.integration.commandline.Main.run(Main.java:193)
	at liquibase.integration.commandline.Main.main(Main.java:156)
Caused by: liquibase.exception.MigrationFailedException: Migration failed for change set bad.sql::bug::bad:
     Reason: liquibase.exception.DatabaseException: ERROR: syntax error at end of input
  Position: 91 [Failed SQL: (0) create or replace function xyzxx ()
returns numeric
language sql
begin atomic
    select 1;
end

--]
	at liquibase.changelog.ChangeSet.execute(ChangeSet.java:672)
	at liquibase.changelog.visitor.UpdateVisitor.visit(UpdateVisitor.java:49)
	at liquibase.changelog.ChangeLogIterator$2.lambda$null$0(ChangeLogIterator.java:111)
	at liquibase.Scope.lambda$child$0(Scope.java:160)
	at liquibase.Scope.child(Scope.java:169)
	at liquibase.Scope.child(Scope.java:159)
	at liquibase.Scope.child(Scope.java:138)
	at liquibase.changelog.ChangeLogIterator$2.lambda$run$1(ChangeLogIterator.java:110)
	at liquibase.Scope.lambda$child$0(Scope.java:160)
	at liquibase.Scope.child(Scope.java:169)
	at liquibase.Scope.child(Scope.java:159)
	at liquibase.Scope.child(Scope.java:138)
	at liquibase.Scope.child(Scope.java:222)
	at liquibase.changelog.ChangeLogIterator$2.run(ChangeLogIterator.java:94)
	at liquibase.Scope.lambda$child$0(Scope.java:160)
	at liquibase.Scope.child(Scope.java:169)
	at liquibase.Scope.child(Scope.java:159)
	at liquibase.Scope.child(Scope.java:138)
	at liquibase.Scope.child(Scope.java:222)
	at liquibase.Scope.child(Scope.java:226)
	at liquibase.changelog.ChangeLogIterator.run(ChangeLogIterator.java:66)
	... 26 more
Caused by: liquibase.exception.DatabaseException: ERROR: syntax error at end of input
  Position: 91 [Failed SQL: (0) create or replace function xyzxx ()
returns numeric
language sql
begin atomic
    select 1;
end

--]
	at liquibase.executor.jvm.JdbcExecutor$ExecuteStatementCallback.doInStatement(JdbcExecutor.java:393)
	at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:82)
	at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:150)
	at liquibase.database.AbstractJdbcDatabase.execute(AbstractJdbcDatabase.java:1275)
	at liquibase.database.AbstractJdbcDatabase.executeStatements(AbstractJdbcDatabase.java:1257)
	at liquibase.changelog.ChangeSet.execute(ChangeSet.java:637)
	... 46 more
Caused by: org.postgresql.util.PSQLException: ERROR: syntax error at end of input
  Position: 91
	at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2553)
	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2285)
	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:323)
	at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:473)
	at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:393)
	at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:322)
	at org.postgresql.jdbc.PgStatement.executeCachedSql(PgStatement.java:308)
	at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:284)
	at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:279)
	at liquibase.executor.jvm.JdbcExecutor$ExecuteStatementCallback.doInStatement(JdbcExecutor.java:389)
	... 51 more

Expected/Desired Behavior
The script bad.sql will create the desired function as it does in PSQL.
$ psql -X mmauger mmauger -f good.sql -c '\sf xyzxx'
CREATE FUNCTION
CREATE OR REPLACE FUNCTION public.xyzxx()
 RETURNS numeric
 LANGUAGE sql
AS $function$
    select 1
$function$

$ psql -X mmauger mmauger -f bad.sql -c '\sf xyzxx'
CREATE FUNCTION
CREATE OR REPLACE FUNCTION public.xyzxx()
 RETURNS numeric
 LANGUAGE sql
BEGIN ATOMIC
 SELECT 1;
END

Additional Context
I can continue using the old syntax, but the lack of dependency tracking is going to become a challenge as the system is maintained and references to impacted objects are hidden and rely upon manual searching through the source code.

Thanks for letting us know about this issue @mmauger   We will add this to the list issues to process.

I've looked at this for a bit, and I'm not sure where the problem is. It almost seems like a postgresql JDBC driver issue, but I don't know enough about the new BEGIN ATOMIC syntax in 14 to know for sure.
What I found was:

Liquibase is sending the SQL you specify to postgresql correctly
Even if I test making pretty generic JDBC calls with the create function call, it still fails with the not-very-helpful "syntax error and end of input" message.

For 2, I tried running:
            final Connection connection = DriverManager.getConnection("jdbc:postgresql://localhost:54322/lbadmindb", "lbadminuser", "LbRootPass1");
            final PreparedStatement preparedStatement = connection.prepareStatement("create or replace function xyzxx ()\n" +
                    "returns void\n" +
                    "language sql\n" +
                    "begin atomic\n" +
                    "select 1;" +
                    "end;");
            preparedStatement.execute();

which gave the same error, and that is well outside any liquibase code, even though it works fine in pgsql.
The "syntax error at end of input" seems to be based on what is in the begin atomic block, because it does work if I take out the select 1; from the above example.

So, I'm wondering if it's a postgresql jdbc problem? But does anyone who knows more about the postgresql logic have other ideas on what it could be?

The "syntax error at end of input" seems to be based on what is in the begin atomic block, because it does work if I take out the select 1; from the above example.

The select 1 is invalid if the function "returns void" but what if its "return numeric"?
In the meantime, I'll confirm the JDBC conflict and submit a bug report to the PG team (unless you have done so already)

If you set the connection property "preferQueryMode" to "simple" or "extendedForPrepared", then the driver will not attempt to split the statement into multiple commands. It will get sent as-is and executed via the simple protocol rather than the parse / bind / execute extended protocol. I tried this out locally and confirmed that I'm able to create a SQL standard body procedure on PG 14.
https://postgrespro.ru/list/thread-id/2571450?ysclid=l779hi96793448119

This is not an issue anymore in liquibase version 4.23.0


[PLAN] Add api blueprint support

Add a method to Generate apib file: https://apiblueprint.org/.

Finish at #7.


Change how display serial number is retrieved

As the serial number doesn't seem to consistently be available within the InfoDictionary, retrieve via CGDisplaySerialNumber.
@OCJvanDijk, this is based on the information you provided in issue #2. This at least seems to work consistently for me.

This is no longer needed as @OCJvanDijk has released a new release which fixes the issue. Furthermore, as described in #2, this was not the correct approach.


chore: remove and deprecate old CSS templates endpoints

SUMMARY
Removing server side rendered pages endpoints from CSS templates view.
Also deprecating csstemplateasyncmodelview/api/read endpoint.
BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF

TESTING INSTRUCTIONS

ADDITIONAL INFORMATION

[ ] Has associated issue:
[ ] Required feature flags:
[ ] Changes UI
[ ] Includes DB Migration (follow approval process in SIP-59)

[ ] Migration is atomic, supports rollback & is backwards-compatible
[ ] Confirm DB migration upgrade and downgrade tested
[ ] Runtime estimates and downtime expectations provided

[ ] Introduces new feature or API
[ ] Removes existing feature or API

Codecov Report
Attention: Patch coverage is 90.90909% with 1 lines in your changes are missing coverage. Please review.

Project coverage is 64.09%. Comparing base (2e5f3ed) to head (9e56763).
Report is 51 commits behind head on master.

Files
Patch %
Lines

superset/views/css_templates.py
90.90%
1 Missing :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##           master   #28387      +/-   ##
==========================================
+ Coverage   60.49%   64.09%   +3.60%
==========================================
  Files        1931      521    -1410
  Lines       76241    37211   -39030
  Branches     8566        0    -8566
==========================================
- Hits        46122    23851   -22271
+ Misses      28015    13360   -14655
+ Partials     2104        0    -2104

Flag
Coverage Δ

hive
49.08% <90.90%> (-0.08%)
:arrow_down:

javascript
?

presto
53.67% <90.90%> (-0.13%)
:arrow_down:

python
64.09% <90.90%> (+0.60%)
:arrow_up:

unit
58.30% <90.90%> (+0.68%)
:arrow_up:

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

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

@mistercrunch might wanna scope out the CI issue.

mmmh, ran the same command as CI but locally and it worked:
$ supersetbot orglabel --issue 28387 --repo apache/superset
🟢 SUCCESS: added label(s) preset-io to issue 28387

re-triggered CI. Looked like what happens when trying to reference an issue that does not exist yet... Not sure what happened.

This is not a required check, feel free to merge with that check failing while I look into it


Theme shouldn't have background color

Set-Theme lambda:

Set-PoshPrompt lambda:

As you can see there are two more issue in the second pic as well.

You can easily change the background colors so they are consistent with the one in your setting, in this case using Write-PoshTheme to get the json, store it elsewhere, adjust the background colors and set the location of that one as your theme using Set-PoshPrompt -Theme mytheme.json. Although it might be interesting to make bg colors optional (I think there's a way).
The second issue is because of the font being used, in my tests I always use MesloLGM NF, which is why it does not show those icons correctly in your setup.

This should now be OK! I did have to think out of the box for this one as transparent foreground text does not exist. Fortunately, you can reverse the ANSI color sequence meaning a transparent background (or one that isn't set) can become the foreground.


feat(ack): Do not call isUpToDate if resource is deleted

Description of your changes
Modifies the ACK controller template to only call isUpToDate if not meta.WasDeleted(cr). This may safe some time and unnecessary AWS calls.
Only affects controllers that are generated with ACK.
I have:

[x] Read and followed Crossplane's contribution process.
[x] Run make reviewable test to ensure this PR is ready for review.

How has this code been tested
n.a.

have you done any manual testing? I think this looks sane, but it is a type of change that could have unintended consequences

have you done any manual testing? I think this looks sane, but it is a type of change that could have unintended consequences

I only tested this once with rds.DBInstance to check whether the implementation works fine. I did not test the other resources. However, I looked through all isUpToDate functions to see if there is something umcommon (like anything besides read operations) but that does not seem to be the case.


GPG keytocard fails with card inaccessible afterwards

Met a strange behavior - tried to replace auth key on my NK3 and while doing so I got an error with a message: gpg: error getting current key info: General error
Nitrokey 3 FW: v1.5.0-test.20230704 (wanted to play with PIV a bit)
GPG: 2.3.8
Steps to reproduce:

Add an ECC key (NISTp521, Auth) with addkey
Select it
Run keytocard

The card already has a key in auth slot (ed25519) and I want to replace it.
After this error any communication with the card fails with something like:
gpg --card-status
gpg: OpenPGP card not available: Not supported

Unplugging and replugging the card ends up with:
gpg --card-status
gpg: selecting card failed: No such device
gpg: OpenPGP card not available: No such device

Killing and restarting scdaemon seems to help

Tried updating GPG to 2.4, "downgrading" NK3 firmware to 1.5.0, re-generating the key to NISTp256 - it only seemed to set key attributes to nistp256 but the key is not uploaded and the error remains the same - gpg: KEYTOCARD failed: Card error

The GPG function of the Nitrokey 3 doesn't support NIST P521yet.
If you want this functionality to be added, please voice your support in https://github.com/Nitrokey/opcard-rs/issues/36 so that we prioritize this feature.

Tried updating GPG to 2.4, "downgrading" NK3 firmware to 1.5.0, re-generating the key to NISTp256 - it only seemed to set key attributes to nistp256 but the key is not uploaded and the error remains the same - gpg: KEYTOCARD failed: Card error

I am not sure I fully understand this comment. Are you locked out of generating/importing a nistp256 key? This would be a bug.

Initially I generated NISTp521 but today I tried several things - updated GnuPG, downgraded Nitrokey firmware to a stable version and finally generated NISTp256.
When I tried putting this new NISTp256 key to card (via GnuPG 2.4 this time if it matters) - it failed with Card error but changed authentication key attrbutes (the one I tried to push to card) from ed25519 to nistp256 and now this key on card is completely unusable and I'm afraid I have to reset my NK3 completely.
Regarding the p521 part - it's a bit off-topic - but I need it unless Nitrokey is interested in fixing OpenKeychain for Android - opened an issue in this project. In a nutshell - it works with some key lengths and curves but fails or even crashes with the others. So, I voted on that opcard-rs issue.

Changing the key attribute will delete the key stored on the NK3, so it is to be expected that you Ed25519 key cannot be used anymore.
I am not able to reproduce the error you encountered. Importing a nistp256 with an Ed25519 key in the authentication key works properly.
Are the other slots of your keys also populated?


apotheosis 6.0.1 crash (forge 43.2.3)

latest.log

Your log looks truncated.  It mentions a mixin conflict but the other mod's mixin is skipped, and a crash does not happen.
In any case, this is not an apoth bug, and it is on you to not install conflicting mods.


Style/InverseMethods: Auto-correct can cause stack overflow due to recursion

I had a codebase I was auto-correcting and noticed this issue. I would expect it to be an issue with other auto-correct code as well. The source code shouldn't really exist in the first place, but I think auto-correct should also never (or rarely) break code. This may be difficult to avoid generically but I would think that tracking the current context of the auto-correct would be possible (i.e. we know we're already in !=)
Expected behavior
Auto-correct should not produce a new recursive call
Actual behavior
The user function != caused a recursive call after being auto-corrected (see below for details) which resulted in a stack overflow
Steps to reproduce the problem
# hello.rb
class MyClass
  def !=(other)
    !(self == other)
  end
end

$ rubocop --auto-corret

# hello.rb
class MyClass
  def !=(other)
    self != other
  end
end

RuboCop version
$ [bundle exec] rubocop -V
0.60.0 (using Parser <IP_ADDRESS>, running on ruby 2.3.2 x86_64-darwin17)

This is an edge case that most cops wouldn't need to worry about. Even with inverse methods it is an edge case because it is unlikely that the correction is going to be the same as the method itself. I don't think it would be too difficult to look at the node parent to make sure we don't register an offense in a case like this. Unfortunately, it seems like something that would have to be implemented inside of each cop rather than having a global check in the corrector.


Build the plugin with Golang 1.17.6

Upgrade dependencies and docker images
Close #83

e2e tests ok, LGTM


Adjust dropdown elements z-index globally

Summary
PR Checklist

Is this a multi-tenancy feature/bug?

[ ] Yes, the relevant RBAC changes are at:

Do we need to backport changes to the old Rancher UI, such as RKE1?

[ ] Yes, the relevant PR is at:

Are backend engineers aware of UI changes?

[ ] Yes, the backend owner is:

Related issue https://github.com/harvester/harvester/issues/5663

Occurred changes and/or fixed issues

We introduced a regression to LabeledSelect in https://github.com/harvester/dashboard/pull/956 globally
Technical notes summary

This change will partially revert the z-index changes in 956 and keep working the namespace filter layout.
Areas or cases that should be tested

Areas which could experience regressions

To check if bugFixing in https://github.com/harvester/harvester/issues/5155 is still valid
Test the vGPU filter

Screenshot/Video

@mergify backport release-harvester-v1.3


CDVPlugin class CDVLogger (pluginName: Console) does not exist.

Same as previous issue. Should be easy to fix. @thoughtpalette Can you take a look at it?
CDVPlugin class CDVLogger (pluginName: Console) does not exist.
2015-01-18 22:32:18.061 trendicity[24209:8844253] ERROR: Plugin 'Console' not found, or is not a CDVPlugin. Check your plugin mapping in config.xml.

Related to #33.

Where are we on this one?


Use ropes instead of array of (lines of) characters to prevent choking on large files (JSONs, etc.)

See title :wink:.

I agree, for larger files (not yet decided on the appropriate cut off/size to switch on yet) we will use ropes instead of an array. Neovim uses a linked list, I considered this but it seems like the worse of the three options to be honest.

This approach (of using ropes) has been shelved in favour of switching to use a gap buffer as our backing data structure for everything for now.


[ERROR DPL-0036] Detailed placement failed.

Detailed placement failed [step 14]
[STEP 14]
[INFO]: Running Detailed Placement (log: ../home/tosil/revamped/caravel_user_project/openlane/user_proj_example/runs/23_02_02_14_11/logs/routing/14-diode_legalization.log)...
[ERROR]: during executing openroad script /openlane/scripts/openroad/dpl.tcl
[ERROR]: Log: ../home/tosil/revamped/caravel_user_project/openlane/user_proj_example/runs/23_02_02_14_11/logs/routing/14-diode_legalization.log
[ERROR]: Last 10 lines:
[INFO DPL-0035]  ANTENNA_input14_A
issue_reproducible.zip
[INFO DPL-0035]  ANTENNA_input14_A
[INFO DPL-0035]  ANTENNA__26891__A
[INFO DPL-0035]  ANTENNA__16333__A0
[INFO DPL-0035]  ANTENNA_input1_A
[INFO DPL-0035]  ANTENNA__28920__A
[INFO DPL-0035]  ANTENNA_input2_A
[ERROR DPL-0036] Detailed placement failed.
Error: dpl.tcl, 20 DPL-0036
child process exited abnormally
[ERROR]: Creating issue reproducible...
[INFO]: Saving runtime environment...

Hello @nithinkrishnanrs2023
Can you please lmk how did you resolve this issue?


the web client does not open, it says that it needs a last release, but I don’t know where it is and it also writes on another account where there is skin, it writes an error vim error vim was opened

the web client does not open, it says that it needs a last release, but I don’t know where it is and it also writes on another account where there is skin, it writes an error vim error vim was opened

why i dont have skins i have skin only my skins are displayed


melhore o overlay por gentileza

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.

##Vou ver
Devo ter me confundido

esta bem!


Polygon for blocked areas

This PR allows block areas to support polygons (discuss here and here)
How this works (it's in Portuguese, "Centro" means "Center"):

Thanks a lot for this! We'll have a look, would you mind to send us your CLA? Please also go ahead and post this PR into the referenced discussion threads.

@karussell, I did the changes using JTS library and it works. The problem was the performance. Polygon class is almost 10x faster than JTS.
Maybe I did something wrong, I do not know. Anyway, I committed the changes using Polygon class.

Really nice approach @andreylh, thanks for providing this PR. Would you mind to add a test that shows that block Polygon works?

@boldtrn thank you very much. Sure, I can do that.

@karussell @boldtrn Is there still something I need to change?

@andreylh I've added two comments (regarding if arr.length%2==1 and return isPolygon)


How use it

I need to know how use this library in my android studio project?

Configure the project

You need to configure gradle for java version 11 or higher.

Add dependencies 'io.apisense:rhino-android:1.0' (used to handle youtube javascript) and in some cases you also need to add org.json library.

copy folder javatube into /app/src/main/java/ of your project, or you can compile the java files to .jar and copy it to your project's /app/libs/ folder and configure the dependency in gradle: implementation files('libs/JavaTube.jar').

If everything went well with importing the code and dependencies, you can now import javatube into your code, for example: import javatube.Youtube;.

The useful classes are

Youtube (obtaining more complete information about the videos),
Playlist (obtaining playlist information),
Channel (obtaining channel information),
Search (allows you to perform searches by keywords and return videos, YouTube shorts, channels and playlists related to your search).

Code example
This code will create a new Youtube object, it will access the video streams and will download the highest quality progressive stream (audio and video in a single file) to the path "./":

new Youtube("https://www.youtube.com/watch?v=60ItHLz5WEA").streams().getHighestResolution().download("./");.

Thanks sir but please upload it to jitpack in the future 👍❤


update the 'set_state' method

I'm not sure whether it is wrong, since the state_sync is always true and never encounter some  problem with it. But when I read this part of the source code, I think the logic maybe wrong.  Maybe give it a read again. Merry Christmas !

I got it.


Doesn't work

check the bottom of callbacks.py .. Code missing in the heraspy (0.2) package

It does not work for me either ...


Refactoring error messages to use %w formatting directive and fix logging issue

This PR coincides with PR https://github.com/in-toto/witness/pull/314 and aims to standardised the error formatting across the witness codebase.
I have tried my best to make sure these changes are standardised across the entire repository, so if anyone would like to review and double check that would be much appreciated 😄.

Closing this PR in favour of https://github.com/in-toto/go-witness/pull/83


Android Studio 3.2 RC 3 is not working correctly with the Flutter plugin

Everytime opening a Flutter project, no matter what I have tried, I will have to do either or multiple of the following things:

Reassign the Flutter SDK path:

Enable Dart support for the project:

Sync project with Gradle Files.

Before that, the project view looks like this:

That means that I am unable to access any project directories (android, ios or lib) because the Flutter plugin is not connected properly (until I fix it with the necessary steps described above).
This also disables all code analysis and completion features (if I open a file externally because I cannot access it from inside the workspace before enabling support and syncing) & the ability to run the application from within Android Studio.
I have tried
Reinstalling from the Android Studio Preview website and flutter upgrade..
Doctor
flutter doctor -v
[√] Flutter (Channel master, v0.8.3-pre.28, on Microsoft Windows [Version 10.0], locale en-US)
    • Flutter version 0.8.3-pre.28 at flutterRoot
    • Framework revision 0e8103ff13 (4 hours ago), 2018-09-11 18:16:21 +0200
    • Engine revision 9a173a8dc8
    • Dart version 2.1.0-dev.4.0.flutter-ef72098353

[!] Android toolchain - develop for Android devices (Android SDK 28.0.2)
    • Android SDK at sdkRoot
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-28, build-tools 28.0.2
    • Java binary at: javaRoot
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1136-b06)
    X Android license status unknown.

[√] Android Studio (version 3.2)
    • Android Studio at studioRoot
    X Flutter plugin not installed; this adds Flutter specific functionality.
    X Dart plugin not installed; this adds Dart specific functionality.
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1136-b06)

Issue moved to flutter/flutter-intellij #2600 via ZenHub


Qty not respected for subparts

After fixing issue https://github.com/xesscorp/KiCost/issues/324 with e6b5a87ead990ed7b4b8db68dd84d4393a0637c3. There are still an issue left.
Issue / Problem report

The qty is not respected for each subpart. Test file https://github.com/xesscorp/KiCost/files/2439992/subpartbom.txt

This bug is created with the motivation from https://github.com/xesscorp/KiCost/issues/324#issuecomment-426830132

This limitation is already known in the older version but needs to be fix in Octopart API.

@nickoe, test this fix. But you still to use the blank at 'manf#'

I added also the warning tip when detected the  ambiguous case.

I have just tesed master including your commit. I can confirm that it works as expected and it also erros on mismatch between part fields. Everything is good now. Thanks. :)

If you miss some message or tip that could help users. Give us a hit, we need the users feedback.

As it seems to work as expected now I don't see anything missing. One could add a note in the doc that for multiple subparts they are mapped one to one, hence one may need to add empty fields. But as that is an error thrown by the script they user will catch it anyways.


Invalid modification of ExcludePath

I use fluent bit on kubesphere. Theoretically, I can determine which logs will be collected by modifying "input.spec.tail.excludepath", but I find it useless. I failed to ask for help in kubesphere forum. This is the kubesphere forum link.
fluent-bit:v1.6.9
Thank you very much for any help

Thanks，I looked at the link. Please note the Pod fields in the picture. In other words, the log on the image is not the log generated on the POD. It is the log generated by the node. In fact, the log under the path has been excluded. As for why this log is generated, it is generated by docker and kubelet files.

@wenchajun Thanks,I'll see how to exclude these logs.


Add continuous code quality monitoring

Hey, great to see how development continues on this project!
I recently stumbled upon Codacy, a tool for analyzing and monitoring code quality. Besides highlighting code quality issues, it also gives explanations why certain things are an issue, so it is also a great chance for all contributors to improve their skills.
How about trying it out on ArTEMiS? It's free for open source projects.
Cheers,
Dominik

We added this some time ago


If the batch size is 1, testing LSTM on the Wgpu backend will fail

Describe the bug
If the batch size is 1, testing LSTM on the Wgpu backend will fail.
To Reproduce

Change the batch size of the input in test_batched_forward_pass of LSTM from 8 to 1.
https://github.com/tracel-ai/burn/blob/2a721a9d0c73e36fabd9c9cf337bd3ca4d8d1acc/crates/burn-core/src/nn/rnn/lstm.rs#L319-L330

to
    #[test]
    fn test_batched_forward_pass() {
        let device = Default::default();
        let lstm = LstmConfig::new(64, 1024, true).init(&device);
        let batched_input =
            Tensor::<TestBackend, 3>::random([1, 10, 64], Distribution::Default, &device);

        let (cell_state, hidden_state) = lstm.forward(batched_input, None);

        assert_eq!(cell_state.shape().dims, [1, 10, 1024]);
        assert_eq!(hidden_state.shape().dims, [1, 10, 1024]);
    }

Run the command: cargo test -p burn-core --features test-wgpu. The test will fail.

CC @louisfd @nathanielsimard

@wcshds I can't reproduce it on my computer (I'm on Linux/Vulkan). I think there are corruption issues with wgpu on the Metal backend. Are you on a Mac? We are investigating the issues; it may be linked to how we build the compute pass in wgpu where we assume each pipeline is executed in the same order as registered. Still investigating.

@nathanielsimard I am using Ubuntu22.04/Vulkan under WSL.

@nathanielsimard The bug still exists on main. But #1659 seems to resolve this problem on my device.

@wcshds the PR #1659 just disable inplace operations with fusion, the if will always output false.

@wcshds Maybe there is a problem with array visibility caused by the dynamic use of fused inplace operation. The problem is only present with a batch size of 1 since the shape of the tensor is not compatible with another operation for fusion, whereas with a batch dimension it is.


[ARD:mediathek] Whole series download not working (media-JSON reports "410 Gone")

DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

[X] I understand that I will be blocked if I intentionally remove or skip any mandatory* field

Checklist

[X] I'm reporting that a supported site is broken
[X] I've verified that I'm running yt-dlp version 2023.03.04 (update instructions) or later (specify commit)
[X] I've checked that all provided URLs are playable in a browser with the same IP and same login details
[X] I've checked that all URLs and arguments with special characters are properly quoted or escaped
[X] I've searched known issues and the bugtracker for similar issues including closed ones. DO NOT post duplicates
[X] I've read the guidelines for opening an issue
[ ] I've read about sharing account credentials and I'm willing to share it if required

Region
Europe/Berlin
Provide a description that is worded well enough to be understood
Downloading videos from the ARD mediathek works fine, but downloads of a whole series seems to be broken due to a JSON error. This issue seems to affect multiple series, as I've tested at least one other, currently running one.
Provide verbose output that clearly demonstrates the problem

[X] Run your yt-dlp command with -vU flag added (yt-dlp -vU <your command line>)
[ ] If using API, add 'verbose': True to YoutubeDL params instead
[X] Copy the WHOLE output (starting with [debug] Command-line config) and insert it below

Complete Verbose Output
[debug] Command-line config: ['https://www.ardmediathek.de/sendung/alpha-centauri/Y3JpZDovL2JyLmRlL2Jyb2FkY2FzdFNlcmllcy8wOGUzM2E4NS01YjVjLTQyZjQtYWY0My1hOGNjOGVmNDIzZGE', '-vU']
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version<EMAIL_ADDRESS>[392389b7d] (linux_exe)
[debug] Python 3.10.9 (CPython x86_64 64bit) - Linux-5.15.0-69-generic-x86_64-with-glibc2.35 (OpenSSL 3.0.8 7 Feb 2023, glibc 2.35)
[debug] exe versions: ffmpeg 4.4.2 (setts), ffprobe 4.4.2
[debug] Optional libraries: Cryptodome-3.16.0, brotli-1.0.9, certifi-2022.12.07, mutagen-1.46.0, sqlite3-2.6.0, websockets-10.4
[debug] Proxy map: {}
[debug] Loaded 1786 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
Available version<EMAIL_ADDRESS>Current version<EMAIL_ADDRESS>Current Build Hash: 7494af600c4389d19961b44e406472bba7c54c28dc1f62bb72bdde7181708a9a
yt-dlp is up to date<EMAIL_ADDRESS>[debug] Using fake IP <IP_ADDRESS> (DE) as X-Forwarded-For
[ARD:mediathek] Extracting URL: https://www.ardmediathek.de/sendung/alpha-centauri/Y3JpZDovL2JyLmRlL2Jyb2FkY2FzdFNlcmllcy8wOGUzM2E4NS01YjVjLTQyZjQtYWY0My1hOGNjOGVmNDIzZGE
[ARD:mediathek] Y3JpZDovL2JyLmRlL2Jyb2FkY2FzdFNlcmllcy8wOGUzM2E4NS01YjVjLTQyZjQtYWY0My1hOGNjOGVmNDIzZGE: Downloading webpage
[ARD:mediathek] Downloading media JSON
ERROR: [ARD:mediathek] None: Unable to download JSON metadata: HTTP Error 410: Gone (caused by <HTTPError 410: 'Gone'>); please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U
  File "yt_dlp/extractor/common.py", line 694, in extract
  File "yt_dlp/extractor/ard.py", line 274, in _real_extract
  File "yt_dlp/extractor/ard.py", line 27, in _extract_media_info
  File "yt_dlp/extractor/common.py", line 1048, in download_content
  File "yt_dlp/extractor/common.py", line 1012, in download_handle
  File "yt_dlp/extractor/common.py", line 882, in _download_webpage_handle
  File "yt_dlp/extractor/common.py", line 839, in _request_webpage

  File "yt_dlp/extractor/common.py", line 821, in _request_webpage
  File "yt_dlp/YoutubeDL.py", line 3742, in urlopen
  File "urllib/request.py", line 525, in open
  File "urllib/request.py", line 634, in http_response
  File "urllib/request.py", line 563, in error
  File "urllib/request.py", line 496, in _call_chain
  File "urllib/request.py", line 643, in http_error_default
urllib.error.HTTPError: HTTP Error 410: Gone

Oh well, this is right! Thanks @dirkf - I'll leave this open, so someone could improve the ARDBetaMediathek extractor later on...


import/order relative import sorting order changed in 2.27.0

Given the following rule config:
module.exports.rules = {
  'import/order': [
    'error',
    {
      alphabetize: { order: 'asc', caseInsensitive: true },
      groups: ['builtin', 'external', 'internal', ['parent', 'sibling', 'index'], 'object'],
      'newlines-between': 'always',
      warnOnUnassignedImports: true,
    }
  ]
}

In eslint-plugin-import 2.26, sibling imports were sorted after parent imports. In versions 2.27.0 to 2.27.5, siblings are sorted before parents.
Here’s an example of previously valid, but now invalid code:
import { fooz } from '../baz.js'
import { foo } from './bar.js'

I think this is also what @cojoclaudiu meant with https://github.com/import-js/eslint-plugin-import/issues/2669#issuecomment-1382716158, but it appears to be unrelated to that issue.

Also having issues with the import/order getting:
error  `@ember-data/model` import should occur after import of `@ember/template`  import/order

Indeed, this seems to be broken. cc @Pearce-Ropion

Definitely should have been a breaking change, at a minimum.

Given that its a bug, I don't think a breaking change would have made sense since it wasn't intentional.

@Twipped indeed, it's only a breaking changes if it's intentional.

Ok, I've confirmed that this is caused by the alphabetical sortingFn introduced in https://github.com/import-js/eslint-plugin-import/commit/347d78b678a772d5d04e56ff36c131e46d0423ef. The sorter is sorting parent imports after siblings because ../ is sorted after ./ alphabetically. Currently the sorting fn has no knowledge of nested groups, it will just sort all elements that are in the same group alphabetically.
@ljharb What is the expected behavior for nested groups? The docs aren't very clear.
In the description for groups it says:

The enforced order is the same as the order of each element in a group.

But in the example given for groups it says that nested groups can be mingled together

> ['sibling', 'parent'], // Then sibling and parent types. They can be mingled together

And then there is nothing in the alphabetize description that relates to the sorting of nested groups.

My assumption is that we should sort nested groups in element order and then alphabetically. If this is the case, the alphabetical mutations will need to be aware of the group order which will make that code much more complicated.
Alternatively, we can change how the initial ranks are set by increasing the rank within nested groups in addition to just between groups.
Thoughts?

I think that the primary thing is to avoid the regression - so the default behavior should remain "whatever it did before".
However, if the ideal behavior we decide on is different, we should also provide an option for that behavior.
I would assume that ['sibling', 'parent'] means that neither one should have any preference. If they want siblings sorted before parents, they'd do 'sibling', 'parent' without the array.

I would assume that ['sibling', 'parent'] means that neither one should have any preference. If they want siblings sorted before parents, they'd do 'sibling', 'parent' without the array.

Unless you want sibling to be sorted before parent without newlines.

I believe that's what the distinctGroup option is for?

Like @Pearce-Ropion, I've been relying on the fact that nested groups respect the array order and
then set "newlines-between": "always" to get a split between them.

I believe that's what the distinctGroup option is for?

The doc seems to imply that distincGroup is for pathGroups only (cf. https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/order.md#distinctgroup-boolean). So are you saying that to get stable ordering in a nested group and newlines between groups, we should use pathGroups instead of groups?

ah, fair point. We don't seem to have a way to avoid newlines between groups.
or, rather - the only way we currently have to signal "treat these two groups differently" is putting them in an array. One thing that could imply is "don't newline between them, but keep their relative ordering", and another thing that could imply is "treat all groups in the array as being of equal rank".
It can't imply both, so which one should it imply?

The enforced order is the same as the order of each element in a group

This in the docs implies to me that it should be the latter. If that's what previous versions of the plugin in v2 do, then I think that's what we should go with - and if someone wants https://github.com/import-js/eslint-plugin-import/issues/2682#issuecomment-1386199672, then we'd need a new feature request filed for that, after this bugfix is done.

So in order to fix the regression, we would essentially need to revert https://github.com/import-js/eslint-plugin-import/commit/347d78b678a772d5d04e56ff36c131e46d0423ef.
The following uses the example ../barz.js and ./bar.js:
The problem is that the new sorter (v2.27+) splits sorting of import paths by the / character (added in https://github.com/import-js/eslint-plugin-import/commit/347d78b678a772d5d04e56ff36c131e46d0423ef). This results in an attempt to sort .. and . instead of the full path. This results in ./bar.js being placed before ../barz.js.
In 2.26 and below, we attempt to sort on the the full import path. Thus ../barz.js and ./bar.js results in ../barz.js being placed before ./bar.js.

It is worth noting that before the "alphabetization" takes place, both the parent and sibling imports have the same rank. So in both v2.26 and v2.27+, the ordering of the groups in the nested array has no affect on the final order of the imports, just that they are placed together without new lines.
Instead of reverting, one option could be adding a case that specifically targets parent imports and places them before sibling imports. The question would then be, what if the nested group array had sibling placed first (ie, ['sibling', 'parent', 'index'],)? Should we only do this if parent specifically comes before sibling?

So in my mind, a real fix would be to change the alphabetical sorter to sort based on the original groups configuration option and not just the ranks.

Seems like you have the real fix in mind :-) a PR would be appreciated!

So the only issue with the proposed fix is that it will probably change the sorting for many people across the board since it won't just affect the sorting in this parent/sibling case. It will change how alphabetical sorting works for every nested group which may constitute a minor or major version change.

I've put up #2721. I think it needs more unit testing but figured I'd get the PR out there

I've filed https://github.com/import-js/eslint-plugin-import/pull/2885, which should fix the regression, while keeping everything else working as-is.

I just tested v2.30.0 (https://github.com/import-js/eslint-plugin-import/pull/2885) and it still sorts index differently from what I expect (i.e. differently from v2.26.0).
My config:
{
  alphabetize: { order: 'asc' },
  groups: [
    ['builtin', 'external'],
    ['unknown'],
    ['parent', 'sibling', 'index'],
    ['type'],
  ],
  'newlines-between': 'always',
}

What I expect (because index is the last item in the group):
import { foo } from '../app/foo.js'
import { index } from './index.js'

What it actually does:
import { index } from './index.js'
import { foo } from '../app/foo.js'

@gustavopch i think the idea was that that’s a bug fix, because actually “./index.js” isn’t an index, it’s a sibling. “./“ would be an index.

Tested with 2.30.0:
import { Foo } from '../Foo';
import { Bar } from './Bar';

-> No error
import { Foo } from '../someDirectory/Foo';
import { Bar } from './Bar';

-> 2:1  error  ./Barimport should occur before import of../someDirectory/Foo  import/order

again, that seems like a bugfix to me - ./ should come before ../.

Seems like something that should be configurable as there are several code styles.

I would say an import of a closer file should be sorted later. My mental model distinguishes the following groups:
Runtime builtin:

bun:test
node:path

Dependencies:

lodash
react

Internal:

#some-internal

Relative:

../../grandparent-sibling.js
../parent-sibling.js
./sibling.js

So when comparing relative path segments, .. should come first, . second, and everything else alphabetically.
Relative imports used to be sorted that way, until it broke in 2.27.0.

I've given up on this being fixed and have migrated to using simple-import-sort/imports instead of import/order.

The problem is that in the current implementation, items in a group are not sorted in the order they are listed. It just bundles all items in a group together with no official sorting. It gives an error because it expects some amount of ordering, but there is no enforcement of the order listed in the group in the config.
https://github.com/import-js/eslint-plugin-import/pull/2721 would still solve this issue and give you full control of the intra-group ordering.

again, that seems like a bugfix to me - ./ should come before ../.

According to the documentation the default is

["builtin", "external", "parent", "sibling", "index"].

ah, true. if that's your config then ../ should indeed come before ./


Limit menu action ul selector to first ul

DNN-8678: When using a  element in a quick settings view, the jquery
ul selector would apply to all ul elements.  Since showMenu() applied
styles by calling .css(), the menu placement adjustments being performed
would incorrectly be applied to  elements internal to the quick
settings view. This limits the jquery object to the first .

I have tested this fix on multiple installations.  No negative impacts.
@jbrinkman Can we merge this one in?


Checklist

[ ] ./gradlew build compiles code correctly
[ ] Added new tests where applicable
[ ] ./gradlew test passes all tests
[ ] Extended README or added javadocs where applicable

This does not fix the problem IMO. Imagine you lose the event because the node restarted after you have acked the incoming request.
I think the right way to solve this would be increase the timeout in these cases. This way when you have acked the request, there's no case of potential loss of event.

Synced offline.


Use slice instead of array

I think  you should use slice instead of array

@biningo this repo is no longer maintained. Come checkout https://github.com/go-co-op/gocron which we're actively maintaining. It already has this change made. And many enhancements!


Explicit local executor definition

Explicitly set local executor for process workflow_summary_mqc to avoid
unnecessary warning message when running deploying via cluster or cloud.

@pditommaso - didn't you specifically ask me to remove this kind of statement on a different nf-core pipeline before, because it broke stuff for people running on kubernetes?
Phil

Nope. it was for get_software_versions process. Instead the workflow_summary_mqc is an exec: process that most of executor cannot run remotely and therefore it prints a warning message.


Search parent directories if the file is not found in the current workspace.

If the file that we're looking for is not found in the current workspace, search the parent directory.  This will find the file if it is in a separate repo nearby to the current project.  This is easier than parsing the project's header and framework search paths, but hopefully will find the file in most cases.
This recursion stops if we have searched two levels up, or if we've reached the user's home directory.  This is to avoid performing searches that are too costly.
This PR also changes runShellCommand so that it doesn't use the shell.  This fixes a potentially serious security hole in the handling of the shell arguments, because the workspacePath and fileName were not escaped and were just passed to the shell verbatim.  To avoid using the shell at all, we can use -quit on the find command line, so there's no need for the pipe to head -n 1.
This PR also adds -L to the find command line.  This means that find will follow any symbolic links when looking for files.  If the user has repos that are symlinked into their workspace, this means that we'll find them now.

I like it, great work @ewanmellor :+1:


Make the set-variables file just a bit cleaner

Minor tweak that makes the file cleaner and provides feedback to the user as to how many variables were saved.

Output example after running this script:


Including specified header file yields 'This header should not be included directly!' error

I'm building a UMDF driver project (based upon the MS video\IndirectDisplay sample). To specify DISPLAYCONFIG_VIDEO_SIGNAL_INFO for a supported display mode, I need to include videoStandard. The page describing the DISPLAYCONFIG_VIDEO_SIGNAL_INFO struct states:

DUMMYUNIONNAME.AdditionalSignalInfo.videoStandard
The video standard (if any) that defines the video signal. For a list of possible values, see the D3DKMDT_VIDEO_SIGNAL_STANDARD enumerated type.

Looking at the page that describes this enumerated type (this page), we're instructed to include d3dkmdt.h. Doing so, however, yields a compile-time error:

c:\program files (x86)\windows kits\10\include\10.0.17763.0\shared\d3dkmdt.h(20): fatal error C1189: #error:  This header should not be included directly!

I've tried various other header files...
//#include <windef.h>
//#include <d3d9.h>
//#include <d3d9types.h>
//#include <d3dkmddi.h>
#include <d3dkmdt.h>      // D3DKMDT_VSS_OTHER
//#include <d3dkmthk.h>
//#include <Ntddk.h>
//#include <Ntifs.h>
//#include <Wdm.h>

...but most of them aren't in the include path for a UMDF driver project, and since many of these header files have 'km' (kernel mode) in their names, it's not clear that it's safe to add include paths that would allow them to be included...

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

ID: 07cc762f-21f1-bc6a-0c35-a979bb85871e
Version Independent ID: 7244fbbe-ccde-3f35-539a-a3bd1a9cac59
Content: _D3DKMDT_VIDEO_SIGNAL_STANDARD (d3dkmdt.h) - Windows drivers
Content Source: wdk-ddi-src/content/d3dkmdt/ne-d3dkmdt-_d3dkmdt_video_signal_standard.md
Product: windows-hardware
Technology: windows-devices
GitHub Login: @lorihollasch
Microsoft Alias: loriwhip

@mr-intj , our doc tooling automatically adds the header file with the words "include xxx.h" to every refpage, so I cannot remove the word "include". I'll take it up with our tool folks to understand why the include instruction is there. You are correct that you cannot include this file in an indirect display project. The Indirect Display Sample simply adds the hardcoded numerical value of 255 (D3DKMDT_VSS_OTHER) for videoStandard. If you don't want to hardcode the value, the dev team suggested that one approach would be to copy the D3DKMDT_VIDEO_SIGNAL_STANDARD definition to your project. Hope your project is going well - appreciate the issues that you've been filing!

@mr-intj , our doc tooling automatically adds the header file with the words "include xxx.h" to every refpage, so I cannot remove the word "include". I'll take it up with our tool folks to understand why the include instruction is there. You are correct that you cannot include this file in an indirect display project. The Indirect Display Sample simply adds the hardcoded numerical value of 255 (D3DKMDT_VSS_OTHER) for videoStandard. If you don't want to hardcode the value, the dev team suggested that one approach would be to copy the D3DKMDT_VIDEO_SIGNAL_STANDARD definition to your project. Hope your project is going well - appreciate the issues that you've been filing!


Chronograf Settings -- clarify command-line and env-vars (multiple entries)

Community user is confused about how to send all of the etcd endpoints to Chronograf.  The documentation shows an example of sending 1 -- but I believe the default setup for etcd is to provide 3 so that if one fails, the others can be contacted.
https://community.influxdata.com/t/chronograf-high-availability/15895
We should modify the setup to show how to provide multiple etcd endpoints via both the command line input string and via environment variables.
The confusing part is that the syntax is different depending on which mechanism you use.
Apparently for ALL command line flags/environment variables which are plural such as:
etcd-endpoints,
google-domains,
generic-scopes,
generic-domains,
auth0-organizations
and two that aren't:
github-organization,
heroku-organization
the following applies.
For the command line, you can use the input flag multiple times:
chronograf --etcd-endpoints=localhost:2379 --etcd-endpoints=<IP_ADDRESS>:2379 --etcd-endpoints <IP_ADDRESS>.100:2379

But for the environment variables you provide a comma separated list:
ETCD_ENDPOINTS=localhost:2379,<IP_ADDRESS>:2379,<IP_ADDRESS>.100:2379

Relevant URLs
https://docs.influxdata.com/chronograf/v1.8/administration/create-high-availability/#start-chronograf
These tables should also be revised based on the appropriate guidance:
https://docs.influxdata.com/chronograf/v1.8/tools/chronograf-cli/#authentication-option-flags
The guidance in the table options are inconsistent.  For example:
OAuth has:
Auth0 organization membership required to access Chronograf. Organizations are set using an organization key in the user’s app_metadata. Lists are comma-separated and are only available when using environment variables.
Github has no mention of multiple orgs:
Specify a GitHub organization membership required for a user. Optional.
Heroku has:
Heroku organization membership required to access Chronograf. Lists are comma-separated.
What products and version are you using?
Chronograf 1.8+
I reviewed this with @glinton -- you can follow-up with him if you need more!

now we have a customer support ticket about this same issue.  Please address this...

[ ] Update example to show three etcd endpoints

[ ] Make guidance in table options consistent


Q: using FeatureManagement with ApiExplorer and ApiVersioningExplorer

I've been watching the live.asp.net community standard and was wondering how/if the FeatureManagement would be used and/or be supported in an Web API with/without versioning and things like Swagger/Open API documentation? or is FeatureManagement focused on MVC Razor View/Pages?

Hello @grahamehorner, our goal is to make feature management easily usable by Web API as well as MVC.  For generation of swagger/open API documentation we will not be focusing too much on this front. This would be up to the authors of such generators to interpret our constructs such as the FeatureAttribute.

@jimmyca15 so if I understand you correctly given swagger/openAPI (Swashbuckle and NSwag) make use of the ApiExplorer for discovery of paths/routes/actions etc. it would require a change to the ApiExplorer to allow these to understand and document features or would it be possible to extend/derive an attribute from the already existing ApiExplorer attributes ?

ApiExplorer can reveal things that make sense like FeatureAttribute. I don't imagine that the generators would be able to understand this though because they would have to take a dependency on feature management. Although, most of these generators offer extensibility points to understand how to generate Open API for mechanisms that the base generator is unaware of.
The topic of how features play into API spec generation is a bit unclear to me. I am envisioning that you have an API surface that changes based on whether certain features are enabled/disabled. In this case I imagine that multiple API specs would need to be generated that map to specific combinations of enabled + disabled features.
The main takeaway here though is that as the feature management library grows and adds extensibility points to ASP.Net Core, it will do so using patterns that should be able to be taken advantage of if desired.

If you are using Swashbuckle then you can hide/show APIs to swagger based on the features associated with the Api here's an example:
	public class FeatureToggleFilter : IOperationFilter
	{
		private readonly IFeatureManager _featureManager;

		public FeatureToggleFilter(IFeatureManager featureManager)
		{
			_featureManager = featureManager;
		}

		public void Apply(Operation operation, OperationFilterContext context)
		{
			var featureGateAttributes = context.ApiDescription.ActionAttributes()
				.OfType<FeatureGateAttribute>().ToList();

			if (featureGateAttributes.Any())
			{
				var enabledApi = true;

				foreach (var featureGateAttribute in featureGateAttributes)
				{
					if (!enabledApi)
					{
						break;
					}

					foreach (var feature in featureGateAttribute.Features)
					{
						if (!_featureManager.IsEnabled(feature))
						{
							enabledApi = false;
							break;
						}
					}
				}

				if (!enabledApi)
				{
					operation.Tags = operation.Tags.Concat(new[] { "DisabledApi" }).ToList();
				}
			}
		}
	}

And then filter disabled APIs using a document filter:
	public class DisabledOperationFilter : IDocumentFilter
	{
		public void Apply(SwaggerDocument swaggerDoc, DocumentFilterContext context)
		{
			foreach (var pathItem in swaggerDoc.Paths.Values)
			{
				pathItem.Get = NullifyIfPrivateApi(pathItem.Get);
				pathItem.Put = NullifyIfPrivateApi(pathItem.Put);
				pathItem.Post = NullifyIfPrivateApi(pathItem.Post);
				pathItem.Delete = NullifyIfPrivateApi(pathItem.Delete);
				pathItem.Options = NullifyIfPrivateApi(pathItem.Options);
				pathItem.Head = NullifyIfPrivateApi(pathItem.Head);
				pathItem.Patch = NullifyIfPrivateApi(pathItem.Patch);
			}
		}

		private Operation NullifyIfPrivateApi(Operation operation)
		{
			if (operation == null) return null;
			return operation.Tags.Contains("DisabledApi") ? null : operation;
		}
	}

at the time of asp.net 8.
also removes controllers from swagger
(it can falls on lambda maps, i did not test with them)
public class FeatureToggleFilter : IOperationFilter
{
    private readonly IFeatureManager _featureManager;

    public FeatureToggleFilter(IFeatureManager featureManager)
    {
        _featureManager = featureManager;
    }

    public void Apply(OpenApiOperation operation, OperationFilterContext context)
    {
        var featureGateAttributes = context.MethodInfo
            .GetCustomAttributes(typeof(FeatureGateAttribute), true)
            .Cast<FeatureGateAttribute>().ToList();

        var controllerType = context.MethodInfo.DeclaringType;
        if (controllerType is not null)
        {
            var controllerFeatureGateAttributes = controllerType.GetCustomAttributes(typeof(FeatureGateAttribute), true)
                .Cast<FeatureGateAttribute>();
            featureGateAttributes.AddRange(controllerFeatureGateAttributes);
        }

        if (featureGateAttributes.Count != 0)
        {
            var enabledApi = true;

            foreach (var featureGateAttribute in featureGateAttributes)
            {
                if (!enabledApi)
                {
                    break;
                }

                foreach (var feature in featureGateAttribute.Features)
                {
                    if (!_featureManager.IsEnabledAsync(feature).GetAwaiter().GetResult())
                    {
                        enabledApi = false;
                        break;
                    }
                }
            }

            if (!enabledApi)
            {
                operation.Tags.Add(new OpenApiTag() {Name = "DisabledApi"});
            }
        }
    }
}

public class DisabledOperationFilter : IDocumentFilter
{
    private bool IsDisabledApi(OpenApiOperation operation)
    {
        return operation.Tags.Any(tag => tag.Name == "DisabledApi");
    }

    public void Apply(OpenApiDocument swaggerDoc, DocumentFilterContext context)
    {
        var pathsToRemove = new List<string>();

        foreach (var (key, pathItem) in swaggerDoc.Paths)
        {
            var operationTypesToRemove = new List<OperationType>();
            foreach (var (operationType, operation) in pathItem.Operations)
            {
                if (IsDisabledApi(operation))
                    operationTypesToRemove.Add(operationType);
            }

            foreach (var operationType in operationTypesToRemove)
            {
                pathItem.Operations.Remove(operationType);
            }

            // if everything removed from "controller"
            if (operationTypesToRemove.Count != 0 && pathItem.Operations.Count == 0)
            {
                pathsToRemove.Add(key);
            }
        }

        // remove those "controllers"
        foreach (var pathToRemove in pathsToRemove)
        {
            swaggerDoc.Paths.Remove(pathToRemove);

            var lastSlashIdx = pathToRemove.LastIndexOf('/');
            var controllerPath = pathToRemove[0..lastSlashIdx];

            var controllerPathLastSlashIdx = controllerPath.LastIndexOf('/');
            var controllerName = controllerPath[(controllerPathLastSlashIdx+1)..];

            var tag = swaggerDoc.Tags.FirstOrDefault(tag => tag.Name == controllerName);
            if (tag is not null)
                swaggerDoc.Tags.Remove(tag);
        }
    }
}


Users of pre-release extensions are switched back to stable and not back to pre-release after releases

My understanding was that if a user switches to the pre-release version of an extension, this would set a persistent flag so that if a higher version stable was published and they were updated to it, they would also be moved back to the next pre-release version when one is published.
This doesn't seem to be the case for me. I thought it failed last month when I published and assumed I was incorrect, but I saw the same today.

I was on a pre-release version (v3.33.202201xx)
I published a new stable version (v3.34.0)
VS Code updated to the new stable version and I did some testing
I published a new pre-release version (v3.35.20220201)
VS Code did not update me to v3.35.20220201 but still shows a "Switch to Pre-Release Version" button

I think I may be able to workaround this in future by publishing the new (higher-version) pre-release version before the (lower version) stable version. Although, I don't think this is working as expected (see https://github.com/microsoft/vscode/issues/15756#issuecomment-968744105 and https://github.com/microsoft/vscode/issues/15756#issuecomment-968749080). (fyi @sandy081)

Expected behaviour is to stick to pre-release always if opted to install pre-release first. If it is not working as expected, its a bug. I will investigate and see if I can repro.

Thanks! It's not something I can easily test without making a dummy extension, so hopefully you have a better way. I don't know if it's related, but there is a dependency on the Dart extension from the Flutter one (I suspect not, but just FYI).

I just tested this and it works for me

auto updated from pre-release to release
auto updated from release to pre-release

Can you please try from your side and let me know where it does not work?

Hmm, odd. I'll have to do some more testing. Is there a good way I can do this without publishing a dummy/test extension to the live marketplace?

probably you can tweak the package.json of the extension in the disk

I'm not sure I understand what you mean? I'm wondering if I can get VS Code to auto-update an extension, eg. from pre-release to stable, without having to publish versions to the live marketplace.

I am sorry that I am not clear. You can hack around to trigger an auto update and also change existing extension from pre-release to a release version by doing following steps

Open the package.json of the installed extension from the installed extensions folder
Change the version number in the package.json to lower number
Change the isPreReleaseVersion value in __metadata property to false
Restart VS Code and see the latest pre-release version of the extension is installed.

FYI, I just did new releases today and kept an eye on this, but everything appears to have worked correctly. I published stable versions and was updated to them, then published higher-version pre-release versions, and was switched back to those. I suspect there was some user-error in the original report.


Add GitHub Action that automatically displays all contributors in the README

Hey @vishanurag Please assign me this Task with label "gssoc-ext", "hacktoberfest-accepted" and "level2"

Can you please assign it to me? I want to work on it.
and add the gssoc-ext label

Can you please assign it to me? I want to work on it. and add the gssoc-ext label

pr already raised


Flytekit Rust entrypoint

Tracking issue

Faster performance - faster startup. In limited testing more than 3.8x speedup
Smaller footprint - our goal is to remove object-store dependencies and replace with rust
Also remove dependency on grpc in python and only replace with rust

This also introduces rust more wholistically in flytekit

@vlad-ivanov-name thank you for all the comments. As you can tell I am complete newbie and I will definitely try to adapt all your suggestions. If you think you can take over the PR and improve it - please feel free too :) I would love to hand it over

@kumare3 hi. Wanted to check when this is planned to be merged?

This needs more work, especially tooling so - not yet planned but definitely later this year

This needs more work, especially tooling so - not yet planned but definitely later this year

@kumare3 is there anything that outside contributors can help with so that the release of this feature will be faster?

@austin362667 , @kumare3, hi. Just a surface-level thought on the overall design. So, Flyte uses GRPC as a default transport, most likely due to being written in Go. Then, we inherited this transport in Python Entrypoint and flytekit. Afterward, community has realized that GRPC clients in Python is bound to some performance and stability issues in our specific use cases. So, the proposed solution is to create native GRPC clients in Rust and wrap them as Python packages with PyO3. Am I correct with this chain of reasoning?
@austin362667 By inspecting your PRs I see what you say when you mention that the task is not easy. You seem to employ quite deep workarounds for solving ref outliving.
If I am, then I wanted to ask if any alternative and probably simpler approaches were considered:

What if Flyte API had a set of RESTful ports/endpoints in addition to the GRPC ones? Would it remove the performance issues in the Entrypoint? Do we know if the primary contributor to the slowness of the entrypoint is the GRPC client? I did not see much CPU-bound code in there. This approach would also remove GRPC dependencies from flytekit and make it more lightweight. asyncio could be used for communication to resolve any performance issues, and if the endpoint was over compressed HTTP/2 I suppose that the difference between GRPC and REST would be minimal. Just looking at the efforts needed to introduce Rust to the project along with additional GRPC client packaging using PyO3, I am wondering if simpler alternatives are viable? Are there any significant drawbacks that you see?
Was it considered encapsulating all communication with Flyte APIs into a sidecar, making Task pods lighter. There would be no need for entrypoint this way, or at least it would be a minimal setup script.

I am not saying that the current solution is bad in any way, just asking questions from a fresh perspective.

Actually I think you're right.
Refactoring gRPC into RESTful is another huge story, too. And, yes, it indeed mitigates the dependencies over Python grpcio and protobuf.
Let's say if we want to stay in gRPC architecture. It's true the transport layer is not CPU-bounded, and I've already enabling non-blocking network by leveraging asyncio during this run / register asynchronously. So performance is not an issue or bottleneck any more. Another reason to introduce Rust in the Flytekit remote client is to reduce the wheel size, thereby decreasing the Docker image pull wait time for Flytekit when starting a pod. Am I missing anything? @pingsutw
IMO, a better use case for introducing Rust is rewriting the entry point, just like what @kumare3  is trying  here. Refactor this component might have much more potential for performance gains.

Grpc is not used because of golang, but because of it being way faster than rest and type safety. Problem has been Grpc python support by Google has been not great. All the top projects in the world today use Grpc and I still prefer it. We are looking migrating to an http2 compliant implementation of Grpc - connect!

Yeh, no doubt speed and type safety are the two most important reasons to use gRPC!

Was it considered encapsulating all communication with Flyte APIs into a sidecar, making Task pods lighter. There would be no need for entrypoint this way, or at least it would be a minimal setup script.

I'm not sure on this one. Can you elaborate more? And wdyt? @MortalHappiness

Grpc is not used because of golang, but because of it being way faster than rest and type safety. Problem has been Grpc python support by Google has been not great. All the top projects in the world today use Grpc and I still prefer it. We are looking migrating to an http2 compliant implementation of Grpc - connect!

@kumare3 understood. I can see reasoning behind this. I prefer strong typing in remote calls as well. However, if Python is the primary client language and GRPC support there is not great, is it a solid reason for introducing another language (and a quite tricky one) to the project?
In case of the Endpoint, why not implement it in Go, for example? Is it a drastic difference between calling the Task function from Go, compared to using PyO3 in Rust? If Go was used, probably we would achieve the same goals along with reducing the maintainability pressure by introducing a new language to the project.
And feel free to tell me if I am not making much sense, I will stop debating on this particular point :)

Another reason to introduce Rust in the Flytekit remote client is to reduce the wheel size, thereby decreasing the Docker image pull wait time for Flytekit when starting a pod.

@austin362667 this is a good point indeed. Do we know by how much the wheel size is reduced?

Was it considered encapsulating all communication with Flyte APIs into a sidecar, making Task pods lighter. There would be no need for entrypoint this way, or at least it would be a minimal setup script.

@kdubovikov @austin362667
Although I do not have much context with the Rust gRPC implementation, from a K8s perspective, I do not think this is correct. First off, sidecar container also run in the same Pod with the main container, so the task pods will not be lighter. Besides, I don't think it is easier to implement it as a sidecar container. As far as I know, the main communication ways between sidecar and main container is via network or shared volumes, so the sidecar container must be either consistently watch for file system changes or serves as a translator between the main container and the Flyte API. In either way the implementation will not be easier.
Feel free to tell me if you have a better implementation for the sidecar pattern. Maybe I misunderstand something.

Was it considered encapsulating all communication with Flyte APIs into a sidecar, making Task pods lighter. There would be no need for entrypoint this way, or at least it would be a minimal setup script.

@kdubovikov @austin362667
Although I do not have much context with the Rust gRPC implementation, from a K8s perspective, I do not think this is correct. First off, sidecar container also run in the same Pod with the main container, so the task pods will not be lighter. Besides, I don't think it is easier to implement it as a sidecar container. As far as I know, the main communication ways between sidecar and main container is via network or shared volumes, so the sidecar container must be either consistently watch for file system changes or serves as a translator between the main container and the Flyte API, by capturing the network requests from the main container and translate it to gRPC. In either way the implementation will not be easier.
Feel free to tell me if you have a better implementation for the sidecar pattern. Maybe I misunderstand something.

@MortalHappiness I meant that the Task container will get lighter and possibly won't need extra GRPC dependencies, and the sidecar can act as a bridge and use any more efficient implementation that we consider to be faster. This way the task container won't need much except from the user code itself, and sidecar would take care of handling all of the platform functionality. However, I agree that adding a sidecar is not contributing much to the entrypoint performance by itself, and the problem of communication between sidecar and task containers still must be solved. The key to this issue is optimizing the entrypoint cold start time, and sidecar is more about decoupling one from another. So yes, let's dismiss the sidecar thread for now.
It's just that using PyO3 and Rust as a workaround for standard Google GRPC clients in Python is not looking as a very common or widely accepted pattern that I have seen in other codebases (especially those that are not primarily in Rust), so I ask if everyone involved are sure that introducing Rust to the project is the best possible solution considering all tradeoffs. Maybe I am not aware of other roadmap points that will broaden the usage of Rust for different use cases as well. Again, not saying that using Rust for creating Python GRPC client packages or entrypoint script is wrong in any way, just mentioning that it adds a whole new layer of maintainability in the long term.
The second usecase is to use Rust for the Entrypoint script, but I am not entirely sure if it will be much different than using Go for the same: run task setup code and then run and monitor the Python process, communicating back to Flyte when neccessary.
In short

Does Flyte has far-reaching plans to use Rust in the future for any other cases than Entrypoint?
If no, why won't we write entrypoint in Go, which is already the primary language of the platform and should give us performance benefits as well.

@kdubovikov grpc is not used at runtime. This communication happens through blob store.
The decision on a new language is dependent on what we can achieve with the new language.
The reason for rust is the amazing benefit of interoperability with many different languages. Goal is to build a common rust runtime that allows any language sdk.
As for the sidecar pattern - it is already supported in Flyte through raw container tasks. There are many disadvantages with it too. Check it out

@kdubovikov grpc is not used at runtime. This communication happens through blob store. The decision on a new language is dependent on what we can achieve with the new language. The reason for rust is the amazing benefit of interoperability with many different languages. Goal is to build a common rust runtime that allows any language sdk.
As for the sidecar pattern - it is already supported in Flyte through raw container tasks. There are many disadvantages with it too. Check it out

Thanks for the context, @kumare3 . Go would not solve the interoperability for sure, if that's our goal. Then Rust it is 🦀 , closing this discussion.
My first question remains: is there anything that can be done by outside contributors to speed up the release of this feature?


SWITCHYARD-2884 Transform message to String automatically in HttpMessageComposer#decompose method

https://issues.jboss.org/browse/SWITCHYARD-2884

ok to test

Merged by Jenkins.


test/recover4.go: failures with "interface is nil, not error" since 2021-11-04

greplogs --dashboard -md -l -e 'panic: interface conversion: interface is nil, not error'
2021-11-05T07:00:05-6fefb7f/linux-ppc64le-buildlet
2021-11-05T07:00:05-6fefb7f/linux-ppc64le-power9osu
2021-11-05T05:29:10-3b5add5/linux-ppc64le-power9osu
2021-11-05T00:52:06-3839b60/linux-mips64le-mengzhuo
2021-11-05T00:52:04-1c4cfd8/linux-mips64le-mengzhuo
2021-11-04T21:52:51-1e0c3b2/linux-mips64le-mengzhuo
2021-11-04T21:33:23-71fc881/linux-ppc64le-buildlet
2021-11-04T20:43:07-8248152/linux-mips64le-mengzhuo
2021-11-04T20:31:02-978e39e/linux-ppc64le-power9osu
2021-11-04T20:01:22-6d1fffa/linux-mips64le-mengzhuo
2021-11-04T20:00:54-961aab2/linux-ppc64le-buildlet

(Marked as release-blocker for Go 1.18 because this looks like a 1.18 regression.)

@bcmills How can we use greplogs? I couldn't find it.

It's one of Austin's go-misc tools:
https://pkg.go.dev/github.com/aclements/go-misc/greplogs

I believe these are related to PacerRedesign. I can get the failure intermittently with the latest source but if I disable the PacerRedesign then I can't make it fail. The failures started about the time this was enabled.

(CC @mknyszek)

That's... interesting. This suggests that the memcopy function just isn't faulting. I took a quick look and the main difference I see is that a GC is running during this test now whereas previous one was not.
I have a way to break the test with GOEXPERIMENT=nopacerredesign and just a well-placed GC:
diff --git a/test/recover4.go b/test/recover4.go
index 67ed970ecb..cd60382e65 100644
--- a/test/recover4.go
+++ b/test/recover4.go
@@ -1,4 +1,6 @@
+//go:build linux || darwin
 // +build linux darwin
+
 // run

 // Copyright 2015 The Go Authors. All rights reserved.
@@ -22,6 +24,7 @@ package main

 import (
        "log"
+       "runtime"
        "runtime/debug"
        "syscall"
        "unsafe"
@@ -54,6 +57,8 @@ func main() {

        other := make([]byte, 16*size)

+       go runtime.GC()
+
        // Note: Cannot call syscall.Munmap, because Munmap checks
        // that you are unmapping a whole region returned by Mmap.
        // We are trying to unmap just a hole in the middle.

For me, on linux/ppc64le, this fails immediately.
There's something else wrong with the test, or the runtime. I'm currently fielding a few other bugs so I'd appreciate some help with this.

Note that simply adding a runtime.GC call is not enough, because that's fully synchronous. It appears that the GC needs to be executing concurrently with the access. I don't know why that makes a difference.
Maybe there's something here about the goroutine doing the access migrating threads, and for whatever reason the result of the munmap just isn't visible on other threads? An execution trace would probably help flush this out. If it's a scheduling thing, then even just the execution trace or a well-place Gosched might be enough to poke the bug.

I poked the bug a few more times: I can reproduce on linux-ppc64le-buildlet just by adding a trace.Start and defer trace.Stop at the top of main. Looks like really any scheduling perturbation is enough to trigger this.
What's really interesting though is when I looked at the trace, the main goroutine never actually migrated Ps. It may have migrated OS threads or something, but certainly no Ps. I've also confirmed that, in fact, when this does happen, there's no segfault! So clearly something is super weird about that munmap on these platforms. I'm starting to wonder if this is some cache invalidation issue where, say, the executing code is migrated to another CPU or something after the munmap and the mapping still appears to be valid. Very, very little is going on in this test on the Go side.
Also, these platforms uniformly seem to have a relaxed memory model. Perhaps that's related in some way?

I'm not sure this indicates a larger issue. I'm going to mark this as not a beta blocker.

On a trybot, a new failure mode: https://storage.googleapis.com/go-build-log/0d23a8f3/linux-ppc64le-buildlet_73293137.log

Could it be possible that the runtime (or something else) that mmaps the pages immediately after our munmap? (I don't know why the runtime would map that, though.) Could we make the hole unwritable using a different way, maybe mprotect?

Yes! That's a really, really good point Cherry. That's sounds like it. I'll take a closer look tomorrow.

Yeah, that's exactly what's happening. Probably a persistentalloc mapping or something.
sysMap 0xc000000000 4194304
sysMap 0x7d3dca3e0000 131072
sysMap 0x7d3dca2e0000 65536
sysMap 0x7d3dc9ae0000 65536
sysMap 0x7d3dc5b10000 65536
sysMap 0x7d3da5c60000 65536
sysAlloc 0x7d3da37b0000 1048576
sysAlloc 0x7d3da37a0000 65536
sysAlloc 0x7d3da3790000 65536
sysAlloc 0x7d3da3750000 262144
recover4.go mapping 0x7d3da3650000 0x7d3da374ffff
sysAlloc 0x7d3da36d0000 262144
panic: interface conversion: interface is nil, not error

goroutine 1 [running]:
main.memcopy.func1()
	/workdir/go/test/recover4.go:35 +0x4c
main.memcopy({0x7d3da3650005?, 0x7d3da36d0000?, 0x40000?}, {0xc000080000?, 0x0?, 0x8698c?})
	/workdir/go/test/recover4.go:42 +0xdc
main.main()
	/workdir/go/test/recover4.go:72 +0x1e0


C4 - Person - Long Description Overflow Issue

Preflight Checklist

[ x] I agree to follow the Code of Conduct that this project adheres to.
[ x] I have searched the issue tracker for a feature request that matches the one I want to file, without success.

You must agree to search and the code of conduct. You must fill in this entire template. If you delete part/all or miss parts out your issue will be closed.
Describe the bug
When I use a description for a C4 person it breaks out of the person container

To Reproduce
Steps to reproduce the behavior:

create a doc
add c4 person
add a long description

Expected behavior
The text should not break out of the person container

draw.io version (In the Help->About menu of the draw.io editor):

draw.io version 20.3.0

Thanks for the report. This will be fixed in the next release.

Internal commit


Unable to build on M1 mac

Getting error: failed to load manifest for workspace member on running cargo build or even cargo metadata.
Steps to Reproduce

Cloned the repo
Ran cargo metadata

Expected Results
Should have displayed metadata as output.
Actual Results
error: failed to load manifest for workspace member `/path/to/wasmtime/crates/bench-api`

Caused by:
  failed to load manifest for dependency `wasi-cap-std-sync`

Caused by:
  failed to load manifest for dependency `wasi-common`

Caused by:
  failed to load manifest for dependency `wiggle`

Caused by:
  failed to load manifest for dependency `wiggle-macro`

Caused by:
  failed to load manifest for dependency `wiggle-generate`

Caused by:
  failed to load manifest for dependency `witx`

Caused by:
  failed to read `/path/to/wasmtime/crates/wasi-common/WASI/tools/witx/Cargo.toml`

Caused by:
  No such file or directory (os error 2)

Versions and Environment
Wasmtime version or commit: On Commit ca0e8d0a1d8cefc0496dba2f77a670571d8fdcab
Operating system: Mac M1
Extra Info
Anything else you'd like to add?
Tried using multiple rust toolchains
stable-aarch64-apple-darwin (default) and stable-x86_64-apple-darwin.

Same result when trying to run cargo build or cargo build -p wasmtime-c-api.

You will need to run git submodule update --init to fetch all submodules.

You will need to run git submodule update --init to fetch all submodules.

This worked. Perfect. 🙏🏼  Thanks.


decrease default tracing permits

Describe the feature
The default tracing permits:
https://github.com/paradigmxyz/reth/blob/422b8f8e75d80e7f311f1f4812851c33131e1b82/crates/rpc/rpc/src/debug.rs#L695-L695
are too high. tracing is mostly cpu bound, so the default should be max(std::thread::available_parallelism() - x, 2) where x could be 2-4.
This way we don't allow saturating all cores with tracing requests, risking starvation of essential jobs
https://github.com/paradigmxyz/reth/blob/422b8f8e75d80e7f311f1f4812851c33131e1b82/crates/node-core/src/args/rpc_server_args.rs#L150-L152
https://github.com/paradigmxyz/reth/blob/422b8f8e75d80e7f311f1f4812851c33131e1b82/crates/rpc/rpc-builder/src/constants.rs#L22-L23
Additional context
No response

Can I give it a try?


update strings

@RocketChat/android

For #1918

@cmassi pls review italian changes

Thanks @cmassi  will you send a PR ? or I should do these change in this PR only

@GOVINDDIXIT Let's avoid the use of a translator service. Could you translate only the file of your mother language here, please?

Sure @filipedelimabrito I will remove other files

@filipedelimabrito done! Pls review


Replace '\n' -> std::endl in 'cout' cpp snippet

Don't inline '\n'.
Right off the bat, it's incompatible with Windows where the EOL is CRLF (\r\n). Using std::endl avoids these kind of issues and nuisances.
EDIT: I did not include it, but I could've bumped the version as well.. However, it does make sense to only do it if the PR gets merged.

I'm late to the party, but \n is cross platform provided that you're using a text stream, It's automatically converted when appropriate (http://en.cppreference.com/w/c/io C streams on Windows OS convert \n to \r\n on output, and convert \r\n to \n on input ). std::endl forces a flush of the buffer, which can slow things down depending on the situation.

@jwood13 Huh, did not know that. Thanks for enlightening me!
However, shouldn't, by default, std::endl be used to terminate a line? Conventionally speaking, inlining either \n or \r\n looks rather.. messy, a defunct artifact of olden code (I've seen \r\n in .NET code and it made me curl up in a ball and cry.. System.Environment.LINE_SEPERATOR if need be!). Say a new hipster OS comes out and \n (or 0x0A) is no longer a line terminator? (jk.. bad joke, no new system wouldn't fail to comply to industry set standards with over a couple decades now)
I do agree: in the case one looks to get every nickle of performance out of C++, std::endl shouldn't be used unless you want to flush the buffer's contents. But is that the main use case? Say, for >90% of people using C++?
One could argue snippets are for those who needn't write the same line of code for the millionth time since they're knowledgeable enough to that point, meaning getting a bit of a perf bonus just from the snippet would be nice.. :man_shrugging:


What is the migration path from 0.0.5 to 0.0.7

I upgraded from 0.0.5 to 0.0.7 and CspSetBuilder has been removed. How should this be done in the new version?
Also CspValue needs a &'static str. This is difficult to use when iterating. Why did you change it from String to &'static str?
The main branch did not contain the 0.0.7 of axum-csp but it is in a support branch, why is this not on the main branch?
edit: Added CspValue question

I itterate over the know files that are in the assets and put them in a JavascriptFile struct:
pub(crate) struct JavaScriptFile {
    // Relative to the pkg/ dir
    pub filepath: &'static str,
    // SHA384 hash of the file
    pub hash: &'static str,
    // if it's a module add the "type"
    pub filetype: Option<&'static str>,
}

pub(crate) fn get_js_files() -> Vec<JavaScriptFile> {
    // Needs https://github.com/thedodd/trunk/issues/583 for the
    // code below to be enabled
    let mut js_files: Vec<JavaScriptFile> = Vec::new();
    Assets::iter().for_each(|filepath| {
        let filepath = filepath.to_string();

        if filepath.ends_with(".js") || filepath.ends_with(".wasm") {
            tracing::info!("CSP for javascript file: {filepath}");
            if let Some(file) = Assets::get(&filepath) {
                let mut hasher = Sha384::new();
                hasher.update(&file.data.to_vec());
                let result = hasher.finalize();

                js_files.push(JavaScriptFile {
                    filepath: string_to_str(filepath),
                    hash: string_to_str(general_purpose::STANDARD_NO_PAD.encode(&result)),
                    filetype: Some("module"),
                });
            }
        }
    });
    js_files
}

...

let mut js_directives: Vec<CspValue> = js_files
            .iter()
            .map(|value| CspValue::Sha384 { value: &value.hash })
            .collect();

When you want the hash as a static string right now you need to convert it:
fn string_to_str(s: String) -> &'static str {
    Box::leak(s.into_boxed_str())
}

This is not common practice in my opinion.


Admin\Facilities - Add status column to grid

For External and Internal Users, add a column to the facilities grid called "status"
The status options are
Active
Transferred
Closed
Temporarily Shutdown
External User: Operator View Figma
Internal User View Figma
Development checklist

[ ] add a status to the facility model (probably using class Statuses(models.TextChoices), see the operation statuses for an example)
[ ] edit the existing facility get endpoint to additionally fetch and filter on status
[ ] add a status column to the facility grid component
[ ] update existing api tests
[ ] update existing vitests

@zoeyli-46 , I've removed If an operation that was previously closed or temporarily shutdown, and has been reported as Restarted, the status reverts back to Active. because I ~think this would be done in the ticket for the restart form. Unless you mean there's a status of "Restarted," but in the grid we're supposed to show it as active?

removed backlog tag! @BCerki

@zoeyli-46 , do you know if we have a ticket for creating the facility grid for internal users? It looks like we're using the same grid for both internal/external in the app right now, but they are different in the designs

Hey @BCerki yes, this is the ticket https://github.com/orgs/bcgov/projects/122/views/2?filterQuery=facilit&pane=issue&itemId=64983985
here are all other associated facility internal user tickets
https://github.com/orgs/bcgov/projects/122/views/2?filterQuery=facilit&pane=issue&itemId=78646387
https://github.com/orgs/bcgov/projects/122/views/2?filterQuery=facilit&pane=issue&itemId=77908571
https://github.com/orgs/bcgov/projects/122/views/2?filterQuery=facilit&pane=issue&itemId=64985528


Change the env from python to python3

Awesome tool - although simplistic, it saved me some time while debugging what was not properly setup in my configuration.
Just change the shebang because it didn't run on my Ubuntu machine. I had to
-#!/usr/bin/env python
+#!/usr/bin/env python3

otherwise it's giving
  File "./tcviz.py", line 43
    print('Usage: %s <interface>' % sys.argv[0], file=sys.stderr)
                                                     ^
SyntaxError: invalid syntax

Fixed, thanks!


Config: New config flow ignoring environment variables

Please have a look also at hardware/README.md and check if it contains any errors or anything is missing there.

@joergkayser yes, this is intended


added text file isthisworking.txt

Testing out Git, VS Code and GitHub integration after factory resetting my computer and setting everything back up

I think I screwed something up on this.  Somehow it looks like I created a new folder called GitHubTrainer and created this txt file within that new folder, instead of inside the GitHubTrainer clone.  What does it look like to you?
It should be Documents/Learning JavaScript/GitHubTrainer/Users/abehenderson/textfiles/isthisworking.txt
But in my Finder it looks like Documents/GitHubTrainer/isthisworking.txt

The pathway that GitHub cares about is shown here. Without having your laptop in front of me, it's hard to say what might be the issue there (if one exists), but this looks ok.


homebrew formula update

This PR:

Adds a bump of the version in the homebrew formula available at https://github.com/cortexapps/homebrew-tap
Adds a custom event of HOMEBREW_UPDATE after making the update

@rich-jay - yet again, I am merging without waiting for a review, primarily because this is essentially testing in production.  There really isn't a trivial way to know that this full workflow will be successfully without running through the production publish.
Going to find out once I force this merge without your review.