Foreign Key docs

Adding foreign key constraint info to relevant docs. Will follow up with additional documentation on removing foreign keys using DROP INDEX.
@dt – Could I get you to check this out for me?

This change is

Review status: 0 of 2 files reviewed at latest revision, 8 unresolved discussions.

constraints.md, line 217 [r1] (raw file):

#### Rules for Creating Foreign Keys

__Constrained Columns__

Maybe overly pedantic, but the referenced columns are also constrained by the constraint in the other table, since they can't be deleted if referenced.

constraints.md, line 220 [r1] (raw file):

oreign
s/ oreign/ Foreign/

I'd probably also emphasize INDEX more than the others, e.g. "using INDEX (or one of UNIQUE or PRIMARY KEY, which imply the creation of an index)", and also not that it is only required that the columns constrained appear as the prefix of an index.

constraints.md, line 222 [r1] (raw file):

- oreign key columns must be [indexed](indexes.html) in the [`CREATE TABLE`](create-table.html) statement using [`PRIMARY KEY`](#primary-key), [`UNIQUE`](#unique), or [`INDEX`](create-table.html#create-a-table-with-secondary-indexes).
- The constrained column must be of the same [type](data-types.html) as the column it references.
- Each column can have no more than 1 Foreign Key constraint.

specifically, can appear in no more than one... e.g. FOREIGN KEY (a, b) REFERENCES foo (a,b) means no other fk constraint can include a or b (though note this is only for constrained cols -- a col can be referenced by any number of FKs).

constraints.md, line 227 [r1] (raw file):

__Referenced Columns__

- Referenced columns must contain only unique values. This means the `REFERENCES` clause must use exactly the same columns as a [`PRIMARY KEY`](#primary-key) or [`UNIQUE`](#unique) constraint.

I think this could use a little clarification, as well as an example saying that  REFERENCES foo (a, b) requires (a,b) be UNIQUE (or PRIMARY KEY, since that also implies UNIQUE).

constraints.md, line 228 [r1] (raw file):

- Referenced columns must contain only unique values. This means the `REFERENCES` clause must use exactly the same columns as a [`PRIMARY KEY`](#primary-key) or [`UNIQUE`](#unique) constraint.
- In the `REFERENCES` clause, if you specify the table but no columns, CockroachDB references the table's primary key. In these cases, you can only create single-column foreign keys.

it should work fine if the primary key is compound.
note that REFERENCES at the column level can only reference a single col, named or implicit, while at the table level it's just that the they have to be the same number.

constraints.md, line 232 [r1] (raw file):

__Using Null Values__

You can write _NULL_ values to columns with the Foreign Key constraint if and only if the write contains _NULL_ values for each constrained column. (This is similar to the `MATCH FULL` behavior in Postgres.) For example, if you have a Foreign Key constraint column on two columns and try to write an `INT` into one and a _NULL_ into the other, it will fail. However, writing _NULL_ values into both columns would succeed.

not exactly: if all the cols involved in the FK are null, then it isn't checked -- I think you can still write if some but not are null if that same combination exists in the referenced table?

constraints.md, line 234 [r1] (raw file):

You can write _NULL_ values to columns with the Foreign Key constraint if and only if the write contains _NULL_ values for each constrained column. (This is similar to the `MATCH FULL` behavior in Postgres.) For example, if you have a Foreign Key constraint column on two columns and try to write an `INT` into one and a _NULL_ into the other, it will fail. However, writing _NULL_ values into both columns would succeed.

Because using _NULL_ values can conceptually break referential integrity, we recommend using [`NOT NULL`](#not-null) in conjunction with your Foreign Key constraint.

I'm not sure I'd say they "break" it but rather flip it around with a more positive approach, specifically pointing out that since FKs ensure every value in a table appears in the referenced table while not-null ensures every row has a value, used together they ensure every row corresponds to a row in the referenced table.

constraints.md, line 238 [r1] (raw file):

__Bulk Inserts__

Though not a rule, we do not currently recommend bulk inserting rows into tables with foreign keys due to potential performance issues.

I don't know that we recommend against it, just that it might be slow and we don't have a workaround yet (like disabling the check until after the insert then running a one-shot validation or something).

Comments from Reviewable

Review status: 0 of 2 files reviewed at latest revision, 8 unresolved discussions.

constraints.md, line 217 [r1] (raw file):
Previously, dt (David Taylor) wrote…
> Maybe overly pedantic, but the referenced columns are also constrained by the constraint in the other table, since they can't be deleted if referenced.

Done.

constraints.md, line 220 [r1] (raw file):
Previously, dt (David Taylor) wrote…
> > oreign
> s/ oreign/ Foreign/
>
> I'd probably also emphasize `INDEX` more than the others, e.g. "using `INDEX` (or one of UNIQUE or PRIMARY KEY, which imply the creation of an index)", and also not that it is only required that the columns constrained appear _as the prefix_ of an index.

Done.

constraints.md, line 222 [r1] (raw file):
Previously, dt (David Taylor) wrote…
> specifically, can appear in no more than one... e.g. `FOREIGN KEY (a, b) REFERENCES foo (a,b)` means no other fk constraint can include `a` or `b` (though note this is only for constrained cols -- a col can be *referenced* by any number of FKs).

Done.

constraints.md, line 227 [r1] (raw file):
Previously, dt (David Taylor) wrote…
> I think this could use a little clarification, as well as an example saying that ` REFERENCES foo (a, b)` requires `(a,b)` be `UNIQUE` (or PRIMARY KEY, since that also implies UNIQUE).

Done.

constraints.md, line 228 [r1] (raw file):
Previously, dt (David Taylor) wrote…
> it should work fine if the primary key is compound.
> note that `REFERENCES` at the column level can only reference a single col, named or implicit, while at the table level it's just that the they have to be the same number.

Done.

constraints.md, line 232 [r1] (raw file):
Previously, dt (David Taylor) wrote…
> not exactly: if all the cols involved in the FK are null, then it isn't checked -- I think you can still write if some but not are null if that same combination exists in the referenced table?

Done.

constraints.md, line 234 [r1] (raw file):
Previously, dt (David Taylor) wrote…
> I'm not sure I'd say they "break" it but rather flip it around with a more positive approach, specifically pointing out that since FKs ensure every *value* in a table appears in the referenced table while not-null ensures every row has a value, used together they ensure every row corresponds to a row in the referenced table.

Done.

constraints.md, line 238 [r1] (raw file):
Previously, dt (David Taylor) wrote…
> I don't know that we recommend against it, just that it might be slow and we don't have a workaround yet (like disabling the check until after the insert then running a one-shot validation or something).

Done.

Comments from Reviewable

Review status: 0 of 2 files reviewed at latest revision, 11 unresolved discussions.

constraints.md, line 208 [r2] (raw file):

### Foreign Keys

The Foreign Key constraint is specified using `REFERENCES` at the column level or `FOREIGN KEY` and `REFERENCES` at the table level. It helps enforce referential integrity between two tables by guaranteeing that all values in a table's foreign key columns already exist in the referenced columns of another table.

it isn't always "already" -- it also prevents deletion/updates of those values in the referenced table.

constraints.md, line 231 [r2] (raw file):

#### _NULL_ Values

By default, foreign keys will accept _NULL values in some scenarios. However, because [_NULL_](null-handling.html) values can introduce ambiguous references in data, we recommend strictly enforcing referential integrity by using [`NOT NULL`](#not-null) on both the foreign key and referenced columns when [creating your tables](create-table.html). (`NOT NULL` cannot be added to existing tables.)

_NULL?

constraints.md, line 231 [r2] (raw file):

#### _NULL_ Values

By default, foreign keys will accept _NULL values in some scenarios. However, because [_NULL_](null-handling.html) values can introduce ambiguous references in data, we recommend strictly enforcing referential integrity by using [`NOT NULL`](#not-null) on both the foreign key and referenced columns when [creating your tables](create-table.html). (`NOT NULL` cannot be added to existing tables.)

ditto comment below on "ambiguous" being unclear.
I think we could say explicitly:

NOT NULL  makes you provide a value.
FK makes sure the value you provided actually exists in the other table.
Each is fulfilling a distinct purpose, but used in conjunction, they give you the property that you can always join and not be missing things. I don't think it is so much that we recommend doing so as much as that's just how they add up.

there's a parallel to CHECK constraints here too, where NOT-NULL makes you provide a value, and CHECK makes sure any provided values are valid.

constraints.md, line 244 [r2] (raw file):

For example, if you have a Foreign Key constraint on columns `(A, B)` and try to insert `(1, NULL)`, the write would fail unless the row with the value `1` for `(A)` contained a _NULL_ value for `(B)`. However, inserting `(NULL, NULL)` would succeed, albeit with the side effect of degrading your tables' referential integrity.

Similarly, if your foreign keys' referenced columns allow for _NULL_ values, those reference can become ambiguous and result in similar degradation of the tables' referential integrity.

They're not really ambiguous -- it's not unclear what they point to, so much as they just don't point to anything.

constraints.md, line 248 [r2] (raw file):

#### Bulk Inserts

Bulk inserts into tables with foreign keys might be slow, but we're working to improve their performance.

I don't know if we even need to call out just bulk inserts, so much as added cost, in general, to operations on the tables involved: each row written to or updated in the referencing table has to also look up rows in the referenced table, and every row deleted and updated on the referenced table need to check for rows in the referencing table... currently all these checks are done per-row, but we're working to reduce that cost in the future.

Comments from Reviewable

just as an fyi, you can just git commit --amend -a and then force-push to update the PR.

Review status: 0 of 2 files reviewed at latest revision, 11 unresolved discussions.

constraints.md, line 208 [r2] (raw file):
Previously, dt (David Taylor) wrote…
> it isn't always "already" -- it also prevents deletion/updates of those values in the referenced table.

Done.

constraints.md, line 231 [r2] (raw file):
Previously, dt (David Taylor) wrote…
> `_NULL`?

Typo. I need a Markdown linter.

constraints.md, line 231 [r2] (raw file):
Previously, dt (David Taylor) wrote…
> ditto comment below on "ambiguous" being unclear.
>
> I think we could say explicitly:
> - NOT NULL  makes you provide a value.
> - FK makes sure the value you provided actually exists in the other table.
> Each is fulfilling a distinct purpose, but used in conjunction, they give you the property that you can always join and not be missing things. I don't think it is so much that we recommend doing so as much as that's just how they add up.
>
> there's a parallel to CHECK constraints here too, where NOT-NULL makes you provide a value, and CHECK makes sure any provided values are valid.
>

The problem is just that they _can_ be ambiguous, which is antithetical to referential integrity. For example:
CREATE TABLE tbl1 (a INT, b INT, c INT, UNIQUE(a, b)); INSERT INTO tbl1 VALUES (1, NULL, 1); INSERT INTO tbl1 VALUES (1, NULL, 2); INSERT INTO tbl1 VALUES (1, NULL, 3); CREATE TABLE tbl2 (d INT, e INT, INDEX (d, e), FOREIGN KEY (d, e) REFERENCES tbl1 (a, b)); INSERT INTO tbl2 VALUES (1, NULL);
Which set of (a, b, c) values that the one row of (d, e) references is ambiguous specifically because of NULL.
That being said, I:

Reorganized to focus on the explanation of the behavior
Removed the phrase "recommended"
Removed the term ambiguous in favor of "degraded referential integrity."

If we see users tripped up on this, we can:

Include greater detail about foreign keys and JOIN –– I held off on that for the time being because we don't have the JOIN docs ready yet
Expand the section later to include greater detail about the interaction of NOT NULL and foreign keys

constraints.md, line 244 [r2] (raw file):
Previously, dt (David Taylor) wrote…
> They're not really `ambiguous` -- it's not unclear what they point to, so much as they just don't point to anything.

Fix detailed above.

constraints.md, line 248 [r2] (raw file):
Previously, dt (David Taylor) wrote…
> I don't know if we even need to call out just bulk inserts, so much as added cost, in general, to operations on the tables involved: each row written to or updated in the referencing table has to also look up rows in the referenced table, and every row deleted and updated on the referenced table need to check for rows in the referencing table... currently all these checks are done per-row, but we're working to reduce that cost in the future.

Done.

Comments from Reviewable

Review status: 0 of 2 files reviewed at latest revision, 1 unresolved discussion.

Comments from Reviewable


Enable policy 77 if possible.

When using OpenEXR as a submodule, you currently can't set a variable
outside of it as the option will override it (so you need to set the
option.) With policy 77 in place, this works as expected. (Same change as just submitted for OpenEXR, see https://github.com/AcademySoftwareFoundation/openexr/pull/961)
Signed-off-by: Matthäus G. Chajdas<EMAIL_ADDRESS>

@meshula Certainly not for 3.0! We should not be changing dependency requirements at this stage.
Let's get this release done, and then as a separate matter, I think the whole TAC should decide if we want to make a policy decision across all projects about what is a reasonable minimum CMake. For a number of reasons, I would support bumping from 3.12 to something newer, but let's do it by consensus and with a principled reason for which version specifically. There are also some really nice things in 3.15, such as the -B an -S arguments to cmake that eliminate the confusing directory dance.

This seems innocuous enough to include, and easy enough to back out of if it causes a problem. I vote for merging, then address the cmake version issues later.

Thanks!


Allow custom double quotes

It would be nice if you could define what will be used to replace escaped double quotes.
I mean replace this line with something like this:
return portion.replace(/\\"/g, params.doubleQuotes);

What's the use case for replacing the quotes?

I am using this module to create CSVs which are then passed to a third party service and entered into a database. Thus I have to conform to their CSV formatting and encoding guidelines, which include having regular escaped quotes in string values (i.e. "ab\"c" instead of "ab"""c")


[UI,BE] Filter resources by tenant

Closes https://app.zenhub.com/workspaces/team-pesto-6127680175876a0014fc5657/issues/weaveworks/weave-gitops-enterprise/1005

What changed?

Included tenant in responses from /v1/helmrelease /v1/kustomizations /v1/buckets etc (all apps and sources, including requests for individual objects)
Refactored https://github.com/weaveworks/weave-gitops/pull/2406/files#diff-06dc83544702564c0e9d6c8521c5cd04effb124e4b5bb5f4c691e4daf9a68a36R108-R121 into a helper function in https://github.com/weaveworks/weave-gitops/pull/2406/files#diff-c5bd0de5d6df572f5d3cc9c7529a43a7d79c64fa73b6bc82ecdbef1e4c658eafR42 called SetFromEnv that we can also use in EE
Added tenant to Sources and Applications as column and filter if the WEAVE_GITOPS_FEATURE_TENANCY flag is true. This will be by default false in Core and true in EE. Left True for now in helm-values-dev.yaml for testing.

Hello! @foot @jmickey I've tagged you guys even though this is still in draft to get your thoughts so far + I'll also need some help writing tests for the new stuff I've added when anyone is available please :)

Adds a bit of boilerplate innit. I can't think of any other solutions though.
Cool! Will take it for a spin.

Thank you! I've updated EE also, just waiting to test once the upgrade is done https://github.com/weaveworks/weave-gitops-enterprise/pull/1284

Did we add the tenant field to the detail page too? I forgot what the decision there was though.
Testing it out now,.. 🐌

Thank you both! Nope, not added yet for some reason I thought we were still discussing it. Will add it shortly :)

Yup yup, it's coming. We were still discussing it when I opened the PR - I'm just adding it as we speak ;)

@ozamosi Just checking -  are there any other points to address before we merge? Ta

Just to make the feature flag default to true directly in the charts/gitops-server helm chart.

Not any more, @weave-gitops-bot. Not any more.


grpc: split dronecore.proto into .proto

This is a try to split up the dronecore service into multiple services
with, so that each plugin can have its proto definition and server
(wrapper) implementation.
 I'm not sure if we should go down that route (yet).

This makes the gRPC API ugly and non-intuitive. We need to do more research how gRPC can work together with the plugin architecture. Closing for now.


Fix fluid tank rendering

Description
This PR fixes three issues with the fluid tank rendering. First, it fixes certain fluids like Water not rendering in Fabulous graphics by using the Sheets.translucentCullBlockSheet render type, which renders correctly in Fabulous graphics. Second, rendered fluids now take light level into account, which fixes fluids like water glowing in the dark.
Closes #427

BEFORE: Glow in the dark water

AFTER:

BEFORE: Glow in the dark lava

AFTER:

thx


Syncing speed issue

Disable default checks that slow down syncing. These include checkblockindex and ckeckmempool and should only be enabled periodically or on demand.
Fix #246

May I suggest to instead alter line 169 to
fDefaultConsistencyChecks = GetBoolArg("-fdefaultconsistencychecks", false);
Or do we always want this to be false for CMainParams and CGoldParams, and probably for all future chains aswell? In which case implement both your changes and the above?
The problem with hard coding is of course it can't be selected by the user and could be misleading or confusing....
Are you sure these checks aren't needed? E.g. CheckBlockIndex() checks the genesis block etc...

They can still be enabled with checkmempool and checkblockindex.
I implemented it like that because it's how it's done in bitcoin/elements. They only set it to true for regtest not sure why though.
Crucial checks are done in other places as well. These seem like consistency checks, which look redundant and become very time consuming as the chain grows.

So it's slightly redundant but has more checks to catch bugs on unit-tests. Leaving it as is then.


Implement Push API

Mastodon's Push API allows a user to subscribe to and receive push notifications when a server-side notification is received, via the Web Push API. The goal of this task is to implement the following endpoints of this API in BigBone:

Subscribe to push notifications
Get current subscription
Change types of notifications
Remove current subscription

The Push API as it is documented by Mastodon can be found here:
https://docs.joinmastodon.org/methods/push/
Tip: A lot of other endpoints similar to this have already been implemented. In order to get an idea how to implement this, I suggest that you study the code upfront. Start with one of the *Methods.kt files.
Please consult the following documents to make sure your contribution meets our projects criteria:

Code of Conduct
Code Contribution Guidelines

I will try to develop them :+1:


Lai panic: Else() outside of If()

We'll need the AML bytecode to debug this issue.

The machine actually belongs to @ImDaBigBoss so we need to wait for him to dump it.

SystemDSDT.zip
I hope this is what you were looking for, I wasn't too sure how to dump it all on MacOS.

Could you call lai_enable_tracing(LAI_TRACE_OP); before calling lai_create_namespace()

Is this ok? The OS doesn't write to USB yet

It's a T450 Lenovo ThinkPad which is running OpenCore to have MacOS on it.

This is quite an interesting case, which we can't reproduce when testing in userland. Could you try running the boot_image from https://github.com/managarm/lai_tools ? That'll show us whether it is some spurious bug in lai, or some memory corruption.

I guess I'm sorry? It isn't a memory problem.

Any updates on this issue?


Picker improvements

Various improvements to the Picker API along with corresponding improvements :ObsidianTags command.
This command now has mappings for tagging the current note and inserting a tag. For pickers that allow it (telescope and fzf-lua) you can also select multiple tags at once and apply the mappings.
Closes #359.

Update: see demo here https://github.com/epwalsh/obsidian.nvim/discussions/450

Thanks for the kind words @panosz :)
I just added a demo here: https://github.com/epwalsh/obsidian.nvim/discussions/450
I hope that clarifies things. I'm using telescope but most of that functionality is the same with fzf-lua. However with mini.pick I was not able to implemented nearly as much.

hi @epwalsh, long time user here, I recently moved to Telescope and I'm using its theme feature (specifically, theme = "dropdown") for every Telescope command. Not every obsidian.nvim command respect this choice, though, for example ObsidianSearch and ObsidianBacklinks. Could this be a bug/is there a setting for that? Thanks!

Hey @armaninux I think this should be an easy fix. Can you show me your telescope config so I can try to reproduce?

Sure, I just have this one setting in my init.vim, the rest is vanilla telescope:
" telescope
lua <<EOF
require('telescope').setup({
  pickers = {
    find_files = {
      theme = "dropdown",
    }
  }
})
EOF

Single mappings can also specify that:
map gr :Telescope oldfiles theme=dropdown<cr>

Ah, okay this actually does work out-of-the-box for me with our find_files commands like :ObsidianQuickSwitch. But :ObsidianSearch uses grep_string or live_grep, so your telescope config should look like this:
        find_files = {
          theme = "dropdown",
        },
        grep_string = {
          theme = "dropdown",
        },
        live_grep = {
          theme = "dropdown",
        },

On the other hand, :ObsidainBacklinks uses the picker API directly, but I've just pushed a fix for that to respect the theme as well: c57b248

Indeed it works perfectly now, nice and clean! Thanks!


Allow users to use dollar signs, commas, and periods when inputting Item value.

Resolves #1052
Description
This PR allows users to use normal currency representations (i.e. using $, comma and period seperators) in the Items controller. This is similar to the implementation to #1045.
Type of change

Bug fix (non-breaking change which fixes an issue)

How Has This Been Tested?
This PR includes tests specific to this change. It also adds some tests for more general coverage, since there were no tests at all for the create action on the Items controller. I don't know if there were errors caught before, but this endpoint likely was failing since, prior to this PR, the item_params was using :value instead of :value_in_cents, so presumably any new items wouldn't have values.

Are we planning on moving towards request specs? This PR has controller specs since that seems to be what's already in the app, but I'd be happy to change them to request specs if that's still the way we want to go.

We're definitely planning on going that way but we haven't made (or mandated) the switch yet. This PR looks great as is and I'm going to merge it in. I think @armahillo may have started a branch for request specs like we did for system specs.
Regardless, thanks so much for this! It is going to make the lives of some folks a little better!


Specify current date range on initialization

Please expose a property that allows for the state of the component to be persisted across loads - for example, by including parameters in the URL.
The state supplied and stored may be opaque to the caller, but should result in the component entering the same absolute or relative time range (updated, accordingly, with the current time).
Example usage:
import { useHistory } from "react-router-dom";

...

const persistRange = (range: string): void {
  let history = useHistory();
  history.replace(`#range={range}`);
}

...

  persistedRange = history.location.hash.substring(1).split("=")[1];

  <DatePick
    getRawRange={persistRange}
    rawRange={persistedRange}
  />

https://github.com/iamPres/react-datepick/pull/6

Close the issue when the change is submitted :)


Define HRD approval workflow and database interaction

Define the workflow for property managers to make edits and then HRD to approve and how that interacts with our database.
This ticket is for if we use Bloom entirely, not a split Bloom+drupal architecture

Lowering the priority of this ticket since we don't know whether this feature is in scope.


SCIP craches due to symbol lookup error

Hi,
I am using SCIP.jl for teaching this year. When solving a (small) MIP example, SCIP craches terminating julia. The error is:
presolving:
(round 1, fast)       0 del vars, 0 del conss, 0 add conss, 19 chg bounds, 0 chg sides, 0 chg coeffs, 0 upgd conss, 0 impls, 0 clqs
   (0.0s) probing cycle finished: starting next cycle
   (0.0s) symmetry computation started: requiring (bin +, int -, cont +), (fixed: bin -, int +, cont -)
julia: symbol lookup error: /home/mathieu/.julia/artifacts/57fdba491f69913899ed2d7f646b5d8b59c6945a/lib/libscip.so: undefined symbol: _ZN5bliss13AbstractGraph18find_automorphismsERNS_5StatsEPFvPvjPKjES3_

When I change the solver (I tried GLPK and HiGHS for instance), there is no error.
Is there a way to correct this bug to keep using SCIP?
Best,
Mathieu
PS: Pkg status
  [9961bab8] Cbc v1.0.0
  [e2554f3b] Clp v1.0.0
  [60bf3e95] GLPK v1.0.0
  [86223c79] Graphs v1.6.0
  [87dc4568] HiGHS v1.1.0
  [7073ff75] IJulia v1.23.2
  [4076af6c] JuMP v0.23.0
  [b8f27783] MathOptInterface v1.1.0
  [82193955] SCIP v0.10.2

PPS: Code to reproduce the bug:
using JuMP, SCIP

Centrales = ["C1", "C2", "C3", "C4", "C5"]
PuissancesMax = [9000, 6000, 3000, 4000, 7000]
CoûtsFixes = [35000, 24000, 14000, 17000, 23000]
Villes = ["Villetaneuse", "Épinay", "Saint-Denis"]
Demandes = [3000, 6000, 5000]

Coûts = [
    80 100 120;
    20  30  40;
    40  60  80;
    70  90  40;
    30  30  50
];

function electricite(Centrales, Villes, PuissancesMax, CoûtsFixes, Demandes, Coûts)

    V = 1:length(Villes)
    C = 1:length(Centrales)

    m = Model(SCIP.Optimizer)

    @variable(m, x[C, V] >= 0)
    @variable(m, y[C], Bin)

    @objective(m, Min, sum(Coûts[i,j] * x[i,j] for i in C, j in V) +
        sum(CoûtsFixes[i] * y[i] for i in C))

    for i in C
        @constraint(m, sum(x[i,j] for j in V) <= PuissancesMax[i] * y[i])
    end

    for j in V
        @constraint(m, sum(x[i,j] for i in C) == Demandes[j])
    end

    optimize!(m)
    if termination_status(m) == JuMP.MathOptInterface.OPTIMAL
        println("Optimum = ", objective_value(m))
        x = value.(x)
        y = round.(Int, value.(y))
        print(x, y)
    else
        println("Pb irréalisable")
    end
end

electricite(Centrales, Villes, PuissancesMax, CoûtsFixes, Demandes, Coûts)

Hi, thanks for the report, we will look into it

Can you check in your Manifest what is the version of SCIP_jll when you ran it. And whether you can downgrade the version to the previous one>

@matbesancon I think this is the same issue as https://github.com/scipopt/SCIP.jl/issues/221#issuecomment-1057329556

Hi,
iSoron is right, this is due to the incompatible version of bliss_jll installed by default.
The solution given here works!
Thank you both for your answers.
Best,
Mathieu

I updated the bliss version in SCIP.jl for now to be sure we take the same one:
https://github.com/scipopt/SCIP.jl/pull/223


CI build: Debian & AppImage 📦

Thank you for this project!

Closes #17

@ZhymabekRoman
Thanks for contributing, I'll try to fix the error.

I think your recent commit already fixed it.
I couldn't replicate the error.
Thank you for all your efforts in bringing this build support.


RFM - hackfont

https://chocolatey.org/packages/hackfont
I use this so will pick it up.

Submitted.

I also submitted hackfont-windows earlier which is a Windows Installer for this font - it's a WAY better method for installing.


feat: support for robust benchmarking of fms-hf-tuning

Is your feature request related to a problem? Please describe.
When running benchmarks using fms-hf-tuning we need to:

record exceptions such as GPU Out Of Memory, transient RuntimeError and NCCL errors, etc
ensure robust capture of system metrics
annotate AIM run information with additional information regarding the benchmarking in order to make the AIM data searchable via benchmarking labels e.g. benchmark experiment name, benchmark identifier

However fms-hf-tuning does not support these features hence requiring maintenance of external forks of fms-hf-tuning that provide them. Specifically

fms-hf-tuning does not surface the various exceptions in a way that is easily identifiable by an automated process I.e. currently requires grepping stderr.
system metrics are sent to an AIM server. However we have observed stability issues with storing and retrieving the data from AIM leading to lost data. In general for benchmarking we need a highly robust way to ensure the metrics are captured
There is no way to supply external metadata for insertion to AIM for a fms-hf-tuning run

Describe the solution you'd like
Here is a simplified view of the current state of the sft_trainer.py script:
def train(
        model_args,
        data_args,
        training_args,
        tune_config,
        trainer_controller_args,
    ):
    callbacks = [SomeCallback()]

    if aim_available:
        callbacks.append(get_aimstack_callback())

    callbacks.extend(other_callbacks)

    sft_trainer.train(callbacks=callbacks)

def main():
   (
        model_args,
        data_args,
        training_args,
        tune_config,
        trainer_controller_args,
    ) = parser.parse_args_into_dataclasses(return_remaining_strings=True)

   train(
        model_args,
        data_args,
        training_args,
        tune_config,
        trainer_controller_args,
    )

We propose the following
class BenchmarkingFriendlyAIMCallBack(AimCallBack):
    def on_train_begin(self, args, state, control, model=None, **kwargs):
        super().on_train_begin(args, state, control, model, **kwargs)
        # annotate self.run with custom metadata so that we can search for this run on AIM

    def on_train_end(self, args, state, control, **kwargs):
        if state.is_world_process_zero:
            # Dump aim metrics to a file such that we can collect this data without actually spinning up an AIM server
            ...
        super().on_train_end(args=args, state=state, control=control, **kwargs)

def parse_args():
    return (
        model_args,
        data_args,
        training_args,
        tune_config,
        trainer_controller_args,
        benhmarking_args,
    )

def train(
        model_args,
        data_args,
        training_args,
        tune_config,
        trainer_controller_args,
        callbacks,
    ):

    callbacks.extend(other_callbacks)
    sft_trainer.train(callbacks=callbacks)

def main():
    try:
        (
            model_args,
            data_args,
            training_args,
            tune_config,
            trainer_controller_args,
            benhmarking_args,
        ) = parse_args()

        aim_metadata = read_metadata(benchmarking_args.aim_metadata_path)

        callbacks = [ ]

        if aim_is_available():
            callbacks.append(
                # dumps AIM data to disk plus annotates AIM run with custom metadata
                BenchmarkingFriendlyAIMCallback(
                custom_metadata=aim_metadata,
                output_file=benchmarking_args.aim_output_file,
                )
            )
        train(
            model_args,
            data_args,
            training_args,
            tune_config,
            trainer_controller_args,
            callbacks=callbacks, # new
        )
    # Catch GPU OOM exceptions, NCCL exceptions etc, and store them in a file for easy processing
    except GPUOutOfMemoryError as exc :
        report_gpu_oom(my_custom_args.aim_output_file, exc)
        raise
    except Exception:
        report_unknown_error(my_custom_args.aim_output_file, exc)
        raise

Pros:

other people/services wishing to robustly detect GPU OOM errors and extract system metrics can use the above features

Cons:

need to update the code in sft_trainer.py

As a plus, the proposed changes in train() enable us to experiment with new implementations of BenchmarkingFriendlyAIMCallback() without requiring updates to fms-hf-tuning (e.g. by using a wrapper script).
Describe alternatives you've considered
Make minimal changes to train() to assist developing third party wrapper scripts
We could slightly refactor the code such that the logic in the  train() method for activating the current AIMCallback (via a call to get_aimstack_callback()) is in the main() method instead of the train() method.
This would enable us to use a wrapper script which implements our earlier proposed design of sft_trainer.py. The wrapper script would have a main() function similar to the above proposal and which would invoke tuning.train().
sft_trainer.py in fms-hf-tuning would look like this:
def parse_args():
    return (
        model_args,
        data_args,
        training_args,
        tune_config,
        trainer_controller_args,
    )

def train(
        model_args,
        data_args,
        training_args,
        tune_config,
        trainer_controller_args,
        callbacks,
    ):

    callbacks.extend(other_callbacks)
    sft_trainer.train(callbacks=callbacks)

def main():
    (
        model_args,
        data_args,
        training_args,
        tune_config,
        trainer_controller_args,
        benhmarking_args,
    ) = parse_args()

    # Move the insertion of the AIM Callback from train() to main()
    callbacks = [ ]

    if aim_available:
        callbacks.append(get_aimstack_callback())

    train(
        model_args,
        data_args,
        training_args,
        tune_config,
        trainer_controller_args,
        callbacks=callbacks, # new
    )

Pros:

changes to fms-hf-tuning are a handful of lines of code

Cons:

Other services/people wishing to robustly collect metrics and/or exceptions will have to implement these features themselves (e.g. using a wrapper script)

@Ssukriti Addressing the above will make it significantly easier for the benchmarking effort to use the latest fms_hf_tuning changes, as well as for others to execute benchmarking runs, so please let us know how we can help - we can contribute a PR with our proposed changes for example.

@dushyantbehl can you please work with @VassilisVassiliadis to understand the issues with AIM and if the changes requested are already addressed with your pending PRs?

These are the changes we're proposing:

catch GPU OOM exceptions and other exceptions and store them in a file
tweak the AIM code a bit:

move the auto-insertion of the AIMCallback from the train() method to the main() method
update the AIMCallback class so that it can optionally dump the metrics that it collects to a file
update the AIMCallback class so that it also tags the AIM Experiment with metadata

If these seem reasonable to you, I can either contribute bullet 2 directly to the PR that @dushyantbehl is working on or open a new PR after @dushyantbehl 's PR is merged into main. We can then discuss how to handle bullet point 1.

Thanks and Great @VassilisVassiliadis. This is on my plate already.
The patch has 1 and 3 already as working examples and for 2 I already have a code on my system for another thread which I can push to the repo too. I will take these bullets no worries!
Let me know if we need to connect on this for any other details.

@VassilisVassiliadis https://github.com/foundation-model-stack/fms-hf-tuning/pull/89 is merged.

Thank you @dushyantbehl  I'll take a look.
Since you're already working on 2.2 we still need to decide how we're going to handle 1 (i.e. reporting errors). I noticed that @kellyaa has already started working on something related to this in https://github.com/foundation-model-stack/fms-hf-tuning/pull/149
@Ssukriti would it make sense to design a unified way of reporting errors that all scripts (sft_trainer.py, accelerate_launch.py etc) can use ?

The importance of #149 is to ensure that whatever error messages are thrown:

A concise summary of that error it is written to /dev/termination-log
A well-defined exit code is thrown. For "user fault" errors, it must be less than 128. For unknown or system-level causes, they are >128 <256.

This is so that when tuning jobs are being executed via Kubernetes CRs, the pod can accurately reflect the end state of the job without the user having to scrape the logs.
I'm good with whatever unified mechanisms you want to create, as long as we are able to accomplish the above.

I think this is now done. I just found a small bug and opened a PR for it here: #199


bugfix on draft_tp value

logic error, when the draft_tp is set but target_tp>1.
FILL IN THE PR DESCRIPTION HERE
FIX #xxxx (link existing issues this PR will resolve)
BEFORE SUBMITTING, PLEASE READ THE CHECKLIST BELOW AND FILL IN THE DESCRIPTION ABOVE

 PR Checklist (Click to Expand)
Thank you for your contribution to vLLM! Before submitting the pull request, please ensure the PR meets the following criteria. This helps vLLM maintain the code quality and improve the efficiency of the review process.
PR Title and Classification
Only specific types of PRs will be reviewed. The PR title is prefixed appropriately to indicate the type of change. Please use one of the following:

[Bugfix] for bug fixes.
[CI/Build] for build or continuous integration improvements.
[Doc] for documentation fixes and improvements.
[Model] for adding a new model or improving an existing model. Model name should appear in the title.
[Frontend] For changes on the vLLM frontend (e.g., OpenAI API server, LLM class, etc.)
[Kernel] for changes affecting CUDA kernels or other compute kernels.
[Core] for changes in the core vLLM logic (e.g., LLMEngine, AsyncLLMEngine, Scheduler, etc.)
[Hardware][Vendor] for hardware-specific changes. Vendor name should appear in the prefix (e.g., [Hardware][AMD]).
[Misc] for PRs that do not fit the above categories. Please use this sparingly.

Note: If the PR spans more than one category, please include all relevant prefixes.
Code Quality
The PR need to meet the following code quality standards:

We adhere to Google Python style guide and Google C++ style guide.
Pass all linter checks. Please use format.sh to format your code.
The code need to be well-documented to ensure future contributors can easily understand the code.
Include sufficient tests to ensure the project to stay correct and robust. This includes both unit tests and integration tests.
Please add documentation to docs/source/ if the PR modifies the user-facing behaviors of vLLM. It helps vLLM user understand and utilize the new features or changes.

Adding or changing kernels
Each custom kernel needs a schema and one or more implementations to be registered with PyTorch.

Make sure custom ops are registered following PyTorch guidelines: Custom C++ and CUDA Operators and The Custom Operators Manual
Custom operations that return Tensors require meta-functions. Meta-functions should be implemented and registered in python so that dynamic dims can be handled automatically. See above documents for a description of meta-functions.
Use torch.libary.opcheck() to test the function registration and meta-function for any registered ops.  See tests/kernels for examples.
When changing the C++ signature of an existing op, the schema must be updated to reflect the changes.
If a new custom type is needed, see the following document: Custom Class Support in PT2.

Notes for Large Changes
Please keep the changes as concise as possible. For major architectural changes (>500 LOC excluding kernel/data/config/test), we would expect a GitHub issue (RFC) discussing the technical design and justification. Otherwise, we will tag it with rfc-required and might not go through the PR.
What to Expect for the Reviews
The goal of the vLLM team is to be a transparent reviewing machine. We would like to make the review process transparent and efficient and make sure no contributor feel confused or frustrated. However, the vLLM team is small, so we need to prioritize some PRs over others. Here is what you can expect from the review process:

 After the PR is submitted, the PR will be assigned to a reviewer. Every reviewer will pick up the PRs based on their expertise and availability.
 After the PR is assigned, the reviewer will provide status update every 2-3 days. If the PR is not reviewed within 7 days, please feel free to ping the reviewer or the vLLM team.
 After the review, the reviewer will put an  action-required label on the PR if there are changes required. The contributor should address the comments and ping the reviewer to re-review the PR.
 Please respond to all comments within a reasonable time frame. If a comment isn't clear or you disagree with a suggestion, feel free to ask for clarification or discuss the suggestion.

Thank You
 Finally, thank you for taking the time to read these guidelines and for your interest in contributing to vLLM. Your contributions make vLLM a great tool for everyone!

We should have supported draft TP>1 right? @njhill

@comaniac yes, I think for general draft models tp must be either 1 or equal to target model tp size.
So I think the logic here indeed isn't quite right, but not in a way that the change in this PR addresses.

@comaniac @qibaoyuan I opened https://github.com/vllm-project/vllm/pull/9394 for this, I think we can close this one.

@comaniac @qibaoyuan I opened #9394 for this, I think we can close this one.

ok.

Closing this PR. @njhill whoever merged your PR please put @qibaoyuan as a co-author.


[fork] Helper functions and mempool triggers

Helper functions to check for upgrade activation. Triggers to clean mempool on activation/deactivation.
Also includes a revert me commit, that when reverted, enables the upgrade by default.

Fixed timestamps


Runtime error: nil pointer dereference during copa patch execution in GitLab CI environment

Version of copa
v0.9.0
Expected Behavior
The copa patch command should complete successfully without crashing, applying necessary patches to the specified Docker image.
Actual Behavior
The command fails with a segmentation fault specifically when executed within GitLab CI. The error does not occur when the command is executed in a local Docker container. Below is the error output captured from the GitLab CI job:
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0xc4832f]
goroutine 51 [running]:
github.com/cpuguy83/go-docker/transport.(*Transport).DoRaw(...)
...
created by google.golang.org/grpc.(*acBalancerWrapper).Connect in goroutine 50
...

Interestingly, the same command executes successfully when run locally in a Docker container, indicating that the issue may be specific to the GitLab CI environment.
Steps To Reproduce

Pull any Docker image within a GitLab CI job.
Execute a vulnerability scan on the image using Trivy within the same CI job.
Attempt to patch the image using copa patch within the GitLab CI job.

Commands Executed:
# Vulnerability scan
trivy image --pkg-types os --ignore-unfixed -f json -o output.json $IMAGE

# Image patching
copa patch -i $IMAGE -r output.json -t patched

Dockerfile
FROM golang:alpine3.21 AS build

RUN apk add --no-cache bash make git && \
    git config --global core.compression 0 && git clone --depth 1 https://github.com/project-copacetic/copacetic && \
    cd copacetic && make

FROM moby/buildkit:v0.18.1

RUN apk add --no-cache curl bash jq docker-cli && \
    curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh -s -- -b /usr/local/bin v0.58.0

COPY --from=build /go/copacetic/dist/linux_amd64/release/copa /usr/local/bin/copa

Are you willing to submit PRs to contribute to this bug fix?

[ ] Yes, I am willing to implement it.

@ashnamehrotra I build this Dockerfile locally and on gitlab runner, no problems


Github action failing to deploy Platformatic app with error code 500

I'm trying to deploy a Platformatic app, but Github action is failing to deploy with below error. Looks like a server error and I tried to deploy several times. How to fix this error?
Getting environment secrets
Getting environment variables
Warning: Move platformatic dependency to devDependencies to speed up deployment
Found Platformatic config file: ./platformatic.db.json
Project has been successfully archived
Bundle has been already uploaded. Skipping upload...
Error: Could not create a deployment: 500
##[debug]Node Action run completed with exit code 1
##[debug]Finishing: Deploy project

Hi, can you please send a message to the Platformatic support channel? I will help you. Don't forget to add your workspaceId.

@Pragades-Rajagopal @ivan-tymoshenko was this resolved?

@Pragades-Rajagopal Sorry, I completely lose this issue. Please confirm if you still have this problem. And it would be helpful if you gave me access to the repo you are trying to deploy from.
P.S Here is a public link to the discord channel: https://discord.gg/platformatic

@mcollina Issue is not resolved
@ivan-tymoshenko I have provided access to the repo > https://github.com/Pragades-Rajagopal/platformatic
Workspace ID: 621bcf77-484a-4803-9b66-ff325c772482

@Pragades-Rajagopal, you are deploying from the main branch using dynamic workspace credentials.
Dynamic workspaces - to deploy from the PRs.
Static workspaces - to deploy from the branches.
Anyway, we should provide a more informative error message. Let me know if you need help creating or setting static workspace credentials.

😭😭

@ivan-tymoshenko I updated Static workspace key and it deployed seamlessly. Thanks for your support
@mcollina cheers! Also how to add another app to Platformatic cloud?

We'll soon be launching new plans for our cloud! If you are interested in a preview, ping me at<EMAIL_ADDRESS>


Resource conditional deployment evaluation

Currently when deploying a bicep template resource with a condition attached to it, it still gets evaluated upon deployment. For example if there is a policy that prevents public IP addresses in Azure, and I have a condition to create one or not in my template it is evaluated no matter what.
So if isPublic is false in the example below, the deployment still fails on validation if there is a Policy against public IP addresses.
resource publicIP 'Microsoft.Network/publicIPAddresses@2022-01-01' = if(isPublic) {
  name: pipName
  location: location
  tags: tags
  properties: {
    publicIPAllocationMethod: 'Dynamic'
  }
  sku: {
    name: 'Basic'
  }
}

Would it be possible to have the template be evaluated for a condition and only validate parts of the template that will be deployed against policy?

Duplicate of #2371


Add support for $push

My initial naive attempt to implement $push
Addresses #15
I realize there's probably a lot more to do.
Feedback welcome.

Interesting. I'd be surprised if that is all that needed to change but it's certainly possible. I'll take a closer look in a few days - most likely this weekend.

Thanks for taking the initiative, btw. It's definitely appreciated!

Closing in favor of https://github.com/scottrogowski/mongita/pull/19


Confusing name (Typeahead.js or corejs-typeahead?)

This project mostly refers to itself as Typeahead.js. Yet:

The readme file's title is corejs-typeahead.
There is a different project also called Typeahead.js, on which this one is based.

It would help a lot to explicitly indicate what this project's name is.

You should take the readme file's title as the name of this project.
The project was forked from Twitter's typeahead.js project after that project was abandoned. You'll still find references to twitter's Typeahead.js name due to the fork. It wasn't necessary to go through and update all those references. They're essentially the same code base anyways, with this repo having a few critical bug fixes and some basic improvements.

Thanks @jlbooker but this is an issue report, not a question. What I meant is that pending a proper solution, the readme file should explicitly indicate what this project's name is.

I believe the readme file already correctly indicates the project name.

The readme file does correctly implicitly indicate the project name. It also incorrectly implicitly indicate the project name.
To be perfectly clear, to solve this in an acceptable manner, either:

the project should stop using the incorrect name
or, at least, the readme file should explicitly indicate the project name

@jlbooker can you please reopen this ticket?


Missing example code in quickstart

Wanted to flag something that's confused me a couple of times when reading https://flask-admin.readthedocs.io/en/latest/introduction/#getting-started:
There's 2 code blocks "above the fold":
from flask import Flask
from flask_admin import Admin

app = Flask(__name__)

# set optional bootswatch theme
app.config['FLASK_ADMIN_SWATCH'] = 'cerulean'

admin = Admin(app, name='microblog', template_mode='bootstrap3')
# Add administrative views here

app.run()

followed by:
from flask_admin.contrib.sqla import ModelView

# Flask and Flask-SQLAlchemy initialization here

admin = Admin(app, name='microblog', template_mode='bootstrap3')
admin.add_view(ModelView(User, db.session))
admin.add_view(ModelView(Post, db.session))

Where do db, User, and Post come from? They're not explained or linked in the document, afaict. I see some boilerplate about setting up a db over in the Flask docs, and also some SQL that creates user and post tables, but nothing defining class User / class Post.
I'm guessing this is obvious to people more familiar with the Flask ecosystem, but some explanation, bare-bones code sample defining them, or link to the assumed sample code / boilerplate would be useful in the flask-admin quickstart, I think.
I can try to PR it once I figure out the answer, but thought I'd mention since this has been a point of friction for me picking up flask-admin a couple times.

Looks like the missing code I want is actually over in flask-sqlalchemy https://flask-sqlalchemy.palletsprojects.com/en/2.x/quickstart/
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)

    def __repr__(self):
        return '<User %r>' % self.username

from datetime import datetime

class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(80), nullable=False)
    body = db.Column(db.Text, nullable=False)
    pub_date = db.Column(db.DateTime, nullable=False,
        default=datetime.utcnow)

    category_id = db.Column(db.Integer, db.ForeignKey('category.id'),
        nullable=False)
    category = db.relationship('Category',
        backref=db.backref('posts', lazy=True))

    def __repr__(self):
        return '<Post %r>' % self.title

This seems like a minimal / self-contained starter example:
from flask import Flask
from flask_admin import Admin
from flask_admin.contrib.sqla import ModelView
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

# set optional bootswatch theme
app.config['FLASK_ADMIN_SWATCH'] = 'cerulean'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'

admin = Admin(app, name='microblog', template_mode='bootstrap3')

db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)

    def __repr__(self):
        return '<User %r>' % self.username

db.create_all()

admin.add_view(ModelView(User, db.session))

app.run()


Support missing properties tag in json schema

As per the OpenAPI specs (See https://swagger.io/docs/specification/data-models/dictionaries/ for instance), it is possible to define a json schema with  additionalProperties only (and no properties).
This PR fixes the error generated in this case.

Thanks, @olivier-heurtier, it looks good. Can you please fix linter errors?

Done.

:+1:


Add ".rdg" as a registered XML file extension

This PR registers .rdg as a recognised file extension for XML data.
Description
My first encounter with the extension happened a few days ago, where a user complained about rdg files not using the usual XML icon. After addressing their issue, I decided to see if the extension had enough in-the-wild use to warrant being registered with Linguist.
Which proved to be a pain, thanks to very skewed metrics:

Roughly 3,015 .rdg files exist on GitHub
Of the 2,019 URLs I managed to harvest, 1,968 of them were non-XML files from the same user and repository.
That leaves only 51 files: 8 were non-XML, and 44 were indeed XML.

All this accounts for just 27 unique repos, and 26 unique users. Not acceptable usage IMHO.
However...
Harvester has no way of collecting the 996 remaining URLs because the ~1960 non-XML results from Titroid/FortressOfOz keep filling up the bulk of search result pages.
And it's (apparently?) impossible to exclude individual users or repositories in search results. E.g., the query extension:rdg NOT user:Titroid NOT nothack doesn't work. The non-XML rdg files are comprised only of digits and semicolons, giving us no common pattern with which to exclude it from searches.
@pchaigno Do you know how to exclude specific users/repos?
Origin of sample
The rdcman.rdg file was sourced from kevinmarquette.github.io, released under the MIT license.

I have one good news and one bad news: 1) I found a way to exclude that user's files, and 2) you already have all the .rdg XML files.
That user stores its files under directories Fortress of Oz, 18291929_Project2_Part1, and Levels. We can exclude files under those directories with -path:dirname. That gives us 51 files left. Levels is probably not that uncommon as a directory, but I doubt there are many .rdg XML files under Levels directories. You could check that by downloading all files matching extension:rdg -path:"Fortress of Oz" -path:18291929_Project2_Part1 NOT dkfjdkfjdf, but I wouldn't put my hopes too high.

Well damn, this might be the first new extension I've proposed to Linguist that wasn't good enough. 😀 Although I at least learned how to exclude specific search criteria by prefixing it with a dash:
extension:rdg -repo:"Titroid/FortressOfOz" NOT dkfjdkfjdf

Which yielded a scant 51 results, and there's no way that even comes close to acceptability. 😅

Well damn, this might be the first new extension I've proposed to Linguist that wasn't good enough.

What?! You're just closing? You're not going to start a Twitterstorm, demand that your extension is added, and point to the number of stars on the compiler's repository as a justification to add the extension?? That's very disappointing.

I don't use Twitter, or any social media. 😁
So I bottle my rage by writing code faster.


Improved the position of hamburger icon

Issue Reference: #506
Screenshots:
Before:

After:

PS: Also improved the indentation of the file header.ejs a bit.

/gssoc/

/level2/


Add compatibility with Xaero's Mini/WorldMap

While biomes may be difficult to implement as an overlay, structures or just right-clicking in the previewer to add a waypoint may be a good idea
Many other features may be addable in the future if you have any other idea ^^

I had a quick look at these mods, and what they all have in common are that they are basically mods for Xaero's Min/WorldMap the same way that Xaero's Min/WorldMap is a mod for Minecraft.
They use the same mixin mechanism world-preview and other fabric mods use to modify Minecraft, to modify the Xaero's Min/WorldMap mod instead.
See MinimapRendererMixin.java of https://github.com/Abbie5/xaeroarrowfix for instance.
So, if I would decide to mod Xaero's Min/WorldMap there would be no stability guarantees for new versions and I would possibly spend a considerable amount of time staying compatible with Xaero's Min/WorldMap on top of staying compatible with future versions of Minecraft...
This is not something that I would be willing to implement, let alone maintain.
So, unless xaero96 provides a public API this is not going to happen.


feat(payment): INT-4282 remove masterpass for Square

What? INT-4282
Remove Masterpass for SquareV2
Why?
The project has been canceled and will not be developed or launched.
Testing / Proof

Depends on
https://github.com/bigcommerce/bigpay/pull/4470
https://github.com/bigcommerce/ng-payments/pull/1437
https://github.com/bigcommerce/bigcommerce/pull/43061
https://github.com/bigcommerce/checkout-sdk-js/pull/1263
@bigcommerce/checkout @bigcommerce/apex-integrations

💚 Tested!
QE details:
PR has been validated without issue, SquareV2 payment is working as expected after code clean up.
Following functionalities has been validated:

Auth + Capture.
Partial Refund. Known issue: https://jira.bigcommerce.com/browse/INT-4695 Refunds are failing due to missing field. Huitlacoche team is working on fix.
Full Refund. Known issue: https://jira.bigcommerce.com/browse/INT-4695 Refunds are failing due to missing field. Huitlacoche team is working on fix.
Auth Only.
Capture
Void. New Issue found in master: https://jira.bigcommerce.com/browse/INT-4967**
Manual Orders. New Issue found in master: https://jira.bigcommerce.com/browse/INT-4966**
etcetera.

Note: Above issue were not introduced by code cleanup, issue are available already in master and were replicated using a store base/created using a integration deployment.
Please review attached word document with validation screenshots:
INT-4282 - Clean up merged code .docx


state doens't pass to query execution

still not works

steps to reproduce steps to reproduce

create new dashboard

add new panel
query builder
database -> default  table -> test_grafana
datetime -> EventTime

go to query

look to Generated SQL - EventQuery

switch to query back

try to select another table -> test_alerts
and another date time fieild -> event_time

Generated SQL could show correct data
but Query Inspector and Panel will show old query (two different)


[analyzer] offer fix to add late for invalid_reference_to_this

class A {
  B b = B(this); // <- here
}

class B {
  A a;

  B(this.a);
}

There is an invalid_reference_to_this.
It took me some time to figure out that late is what is needed, since this type of referencing is also possible in Java for example.
Would it make sense to offer a quick fix to add late in this case?

Yes, an initializing expression for a late instance variable does have access to this, but when it's a non-late variable it does not have that access. However, there could also be situations where the "best" modification to the code would be to change initializer lists on constructors in the same class, because they may well be able to do the same thing, and they don't incur any dynamic checking on the initialization status of the variable during the rest of the lifetime of the object.
In the given example we have a cyclic object graph (an A has a reference to a B that has a reference back to the same A), and in this case there's no hope that we can use initializer lists (because they enforce an ordering on the creation of objects). But we could have done it in this variant:
class A {
  B b;
  A(int i): B(i);
}

class B {
  int i;
  B(this.i);
}

So if it's ok that the fix is at times not optimal then the change that adds late would be fine, but we put more emphasis on avoiding late (and the run-time costs associated with late) if at all possible, then it's perhaps better to emit some advice about the set of possible fixes and let the developer make a choice.

However, there could also be situations where the "best" modification to the code would be to change initializer lists on constructors ...

I'm having trouble coming up with a concrete example of such a case, which might indicate that marking the field as late in a situation like this (where this is being referenced in the initializer) might just be the most common appropriate fix. If that's the case, then I have no concerns about adding such a fix.

Here's an example:
class A {
  int i;
  int j = i + 1; // Error, no access to `this`.
  A(this.i);
}

class AfixInitializer {
  int i;
  int j;
  AfixInitializer(this.i): j = i + 1;
}

class AfixLate {
  int i;
  late int j = i + 1;
  AfixLate(this.i);
}


Pull bot destroying PRs?

I had two prs open and then this bot pushed the latest commits into my forks making these prs 0 commits ones. I don't understand how and why but would appreciate some help/explanation.
https://github.com/Safrodev/fabricenchantments/pull/7 and https://github.com/FlashyReese/sodium-extra-fabric/pull/47

Per documentation pull will automatically hard reset your default branch to match upstream if you didn't specify a pull.yml. GitHub automatically closes prs if there are no changes between the head and base branches after the hard reset. Please review README. Thank you!


Implement a test for the endpoint for the registration in the OBS e3

Estimate: 3

This was already implemented in this PR Implement a test for the endpoint for the registration in the OBS


Cannot find name 'sample' at line 159

Cannot find name 'sample' at line 159

Please provide a full stack trace.


Add a workflow to upload binary size information to BigQuery

The first iteration of this workflow. Right now it can be triggered manually to enable backfilling for previous toolchain releases.
In subsequent changes we'll make it run each time a release is created or updated.
Relies on two new actions:

github.com/thebrowsercompany/gha-aws-ssm-get-parameter
github.com/thebrowsercompany/gha-google-bloaty

I wonder if we could generalise some of this into a separate action and use that rather than start adding a ton of JS and composite actions into the repository.

Thinking about this more today: Yes we absolutely can, but I really want to validate the entire pipeline of sending data to BigQuery and Datadog before I put too much effort into refactoring this to be a reusable action - it might change quite a bit and working across repos will make things harder so I'd prefer to merge into this repo and iterate.  How can I do this in a way that makes you happy? :)

Down to a ~280 line diff. In the future I may even pull out the bigquery upload csv code but I think it's too soon to know exactly what the API should look like without a few more example use cases

BTW, missing newlines on the python files.

Ah, thanks. Updated in the latest commit.


fix: wasm function call

currently, this wasm call is using an outdated function definition, the new one doesn't accept a flush argument, and returns an Option https://github.com/tikv/minitrace-rust/blob/d679456de432728170ed319cba2bd86ad5afe1f5/minitrace/src/collector/global_collector.rs#L248

minitrace has been renamed to fastrace. You may submit the pr there XD


Add Storage Volume Failover Detector for ASEv2

ASEv2 uses FileServer instead of the azure files so add storage volume failover detector in ASE Lens for when we have ASEv2.

Good example, pretty much just use the same detector for the app view inside of the ASE view
https://applensv2.azurewebsites.net/sites/shipcalc-api-prod/appanalysis/detectors/storagefailover?startTime=2017-10-06


releases.yml: Add promotion_permits field

/lgtm

/retest

Has been failing the same since Feb 2 (could have been a problem weeks before, but we don't have test runs from then). This makes me sad. However this PR doesn't seem likely to make it any worse.


autoScaling.horizontal.maxReplicas dont generate any HorizontalPodAutoscaler

What happened?
My deployment never auto-scale on DigitalOcean. Allways I have 1 replica.
What did you expect to happen instead?
I try with small values of memory or cpu, but never scale. Also, the only documentation about this feature is on legacy devspace.cloud site.
How can we reproduce the bug?
My devspace.yaml
deployments:
- name: app
  namespace: "mynamespace"
  helm:
    componentChart: true
    values:
      replicas: 1
      autoScaling:
        horizontal:
          maxReplicas: 3
          averageCPU: 5m
          # averageRelativeCPU: 1
      containers:
      - name: app
        image: pablorsk/app

Local Environment:

DevSpace Version: 5.10.0
Operating System: linux
Deployment method: helm

Kubernetes Cluster:

Cloud Provider: DigitalOcean
Kubernetes Version: v1.20.2

Anything else we need to know?

@pablorsk thanks for creating this issue! Is the according HorizontalPodAutoscaler created in the namespace?

No @FabianKramm, sorry. How can I create it? I need a new section on devspace.yaml, a kubectl instruction or a manifest?


Non github repos?

Will it work with for example:

bitbucket
gitlab
something-else

Nope. Only supports github. Sorry.


Add Microsoft Edge Support

Changes

Added Microsoft Edge support (keyword: edge
Update README about Microsoft Edge
Fix typo <browser>-profile to <browser>-profiles in Commands section

Related with #71

@earthpyy Could you please enable GitHub Actions on your fork?

@earthpyy I was wrong, just merged a fix to have working GitHub workflow.

@earthpyy Could you please disable GitHub Actions on your fork?


Implement Prefix-LM attention masking

relevant https://github.com/bigscience-workshop/Megatron-DeepSpeed/issues/21
I'm trying to implement the attention mask for Prefix-LM as in the T5 paper in order to do instruction finetuning.

I am having trouble modifying the attention masking operation as it seems to be part of the fused kernels and I cannot identify which part of the C++ code is responsible for applying the mask.
One main issue is that a different attention mask will be needed for every item in the batch (depending on the length of the prompt), while the current code only supports a single attention mask for the entire batch.
Could someone point me in the right direction here?

Essentially I would like to unzero-out specific chunks in each sequence so that the prompt can undergo full attention visibility before beginning to decode the output during training. This would be done by taking the spans in the token sequence that correspond to prompts (there may be multiple due to sequence packing, so essentially <|endoftext|> to the end of the prompt) and applying squares of 1's to the lower triangular matrix to achieve the desired attention mask.
I have no trouble creating these masks given my inputs, I'm just not sure how to get these masks into the forward operation.


Not receiving all Renovate updates

Deployer action at minimum is behind.

Looks like Renovate is getting stuck on lockfile changes which are blocked by #165.  @mishraomp

I fixed the peer deps issue by lowering react to match the version and now we are at 17 than 18, in future we will address the issue of moving it to mui 5 and react latest version, but at this point we are free to use renovate again. @DerekRoberts

@mishraomp Great!  I'll get that back on track.  :)


There is no "typ" header in version 2.0.0

Why there is no type header in version 2.0.0 ?

The typ header field is optional.
See: #174 and https://tools.ietf.org/html/rfc7519#section-5.
Does this change cause any issues for you?

Not, but I think that for other people could be generate a issue if they use other media types in addition to JWT token. So, I think would be better to include "typ" header on JWT token.

After upgrading to 2.0, my tests were failing. Took me a second to realize it was because of this change. The token fixture I had included the typ param but new tokens did not — thus the failure. This is a fine change, so I’m chiming in here to help anyone else searching for test failures after upgrading to 2.0.

@lleger Thank you very much for offering help. 🥇

Hi, I just want to know if starting v2.2.1 the JWT created will always include in the header by default the entry :
"typ": "JWT"
or not?

another way around, JWT was a default header before 2.0.0
removed by this PR
https://github.com/jwt/ruby-jwt/pull/174/files

I would like to comment on this (unfortunately) closed issue.
It does not make much sense to me to remove the "typ" from the default headers. I think, the typ should be set by default to "JWT". A missing typ header is prone to causing all kinds of problems and took me a couple of hours to debug in a netlify environment. See details here:
https://community.netlify.com/t/identity-role-based-access-control-across-subdomains/29957/12

I would like to comment on this (unfortunately) closed issue.
It does not make much sense to me to remove the "typ" from the default headers. I think, the typ should be set by default to "JWT". A missing typ header is prone to causing all kinds of problems and took me a couple of hours to debug in a netlify environment. See details here:
https://community.netlify.com/t/identity-role-based-access-control-across-subdomains/29957/12

FYI, Auth0 started rejecting JWT tokens without the typ specified. Specifying it manually restored functionality.


Feature Request: Reverse Proxy the Admin Pages

Type

[ ] General question or discussion
[ ] Propose a brand new feature
[ X ] Request modification of existing behavior or design

What is the problem that your feature request solves
Being able to access the admin pages through the regular URL that we setup for the archive.
Describe the ideal specific solution you'd want, and whether it fits into any broader scope of changes
This is sort of in relation to #221, where we'd be able to access the admin pages through an NGINX proxy, making the business end of the ArchiveBox much more easily accessible. Plus, providing a nice how-to plus config example to help us out.
What hacks or alternative solutions have you tried to solve the problem?
I've tried making a reverse proxy configuration similar to my other reverse proxies. It doesn't quite load anything right.
How badly do you want this new feature?

[ ] It's an urgent deal-breaker, I can't live without it
[ X ] It's important to add it in the near-mid term future
[ ] It would be nice to have eventually

[ X ] I'm willing to contribute dev time / money to fix this issue
[ X ] I like ArchiveBox so far / would recommend it to a friend
[ ] I've had a lot of difficulty getting ArchiveBox set up

Hmm it should work out of the box with the admin UI behind a reverse proxy. What errors are you seeing exactly?
Here's an example Caddy 2 config:
archive.example.com {
    reverse_proxy <IP_ADDRESS>:<published port>
}

The problem happens when you set the reverse proxy in a subfolder instead of a subdomain
location /archivebox/ fails because it redirects to /public, which does not fall behind the reverse proxy location, so it gets a 404 error


Crash when xwayland_surface_create returns NULL

https://github.com/swaywm/sway/issues/4203#issuecomment-500917642
This can be reproduced in both sway and rootston, by launching three instances of pysolfc.

I'm not sure if this bug is still reproducible. At least, I can't reproduce it using pysolfc any more (although that might be due to a change in pysolfc itself).

Here's a fix: https://github.com/swaywm/wlroots/pull/2343

I'm not sure if this bug is still reproducible. At least, I can't reproduce it using pysolfc any more (although that might be due to a change in pysolfc itself).

Probably because libwayland doesn't create one timerfd per event loop timer anymore.


ApplicationOfficialForm::getOfficialRoles()

This should fix the Duplicate function. Seemed to work fine for me, but do test before merging.

This is included elsewhere.


Disable a BubbleListItem?

Hi,
Just checked the docs, I couldn't see a disabled prop for items? Do I have to not display the item / filter it from children?
Useful to show the user it's an available option but temporarily disabled due to an unmet condition.

Hi,
the item has no disable prop because this is not specified in material design. I would recommend to just not render the item.
https://material.io/design/components/buttons-floating-action-button.html#types-of-transitions

Thanks, that's what I ended up doing.


Upgrade to Android 13

In order to upgrade to Android 13 :

Update React Native and all dependencies
Add config in app.json

:tada: This PR is included in version 1.1.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Adjustments of loader-v4 (part 3)

Problem
Continuation of #2750.
Summary of Changes

Removes load_and_finalize_program() and load_program() in loader utils.
Adds instructions_to_load_program_of_loader_v4() and load_program_of_loader_v4() to loader utils.
Fixes incorrect program runtime environment in deployment verification check.
Introduces minimum of 1 lamport to avoid program account from being deleted if rent is disabled.

The code looks good to me. Can we add some tests?

Can we add some tests?

The tests will come in #2796. However we can't merge that until #2182, which depends on SIMD-0162.


Replace uses of deno.land/std/node/{}.ts with native node:{}

Updates to the latest Deno Node API compatability.

Thanks for your contribution and sorry for the delay. I will review at the first opportunity.


[KED-2768] kedro install doesn't play well with hooks

Description
Pipline registry for hooks
All Kedro CLI commands go through kedro/framework/cli/cli.py::KedroCLI whose __init__ runs bootstrap_project. Kedro's bootstrap_project reads the users project metadata and imports the user settings.py file.
The users settings.py file (at least in modern Kedro versions) by default imports ProjectHooks from the users hooks.py file.
If users choose to register their pipelines via the register_pipelines hooks inside ProjectHooks class (or any other class inside hooks.py) and import their pipelines at the module-level of hooks.py to use them inside register_pipelines, this triggers a chain import from bootstrap_project that imports settings.py -> hooks.py -> imported_pipeline -> imported_pipeline/pipeline.py -> imported_pipeline/nodes.py -> third_party_library.
This is fine for pretty much all CLI commands (though can contribute to slowing CLI commands down for large projects that have many imports, for CLI commands that don't necessarily need the whole project imported to do something) since having the projects requirements installed is a sensible pre-requisite to running any of them (e.g kedro run).
However, the exception to that is kedro install and kedro build-reqs which are presumably written to help users install their requirements. That is, the starting position of using those commands is that the users don't have their project requirements installed.
Third party hooks
If users want to register a third-party hook that doesn't register itself automatically, their settings.py looks something like:
from third_party_hook import ThirdPartyHook

hooks = (ProjectHooks(), ThirdPartyHook())

which kedro install imports and runs and fails at if third_party_hook isn't already installed.
Steps to Reproduce
kedro new --starter=pandas-iris

Put a import tensorflow or import non_existent_library in data_engineering/nodes.py and then register the data engineering pipeline (or really just import it) at the top-level of your hooks.py and try running kedro install.
Expected Result
kedro install should execute and install the project requirements.
Actual Result
kedro install fails with an import error.
Your Environment
Include as many relevant details about the environment in which you experienced the bug:

Kedro version used (pip show kedro or kedro -V): Kedro 0.17.4
Python version used (python -V): Python 3.7.11
Operating system and version: MacOS Mojave

Related issue in starters repo: https://github.com/quantumblacklabs/kedro-starters/issues/38

I'm closing this issue as it is now solved in master as part of [KED-2768] Fix kedro install flow (#1203). Thank you @mzjp2 for the amazing write-up and please shout is you'd like to discuss this further!


Use image resize function from ImageStatic when ImageWrapper loads

Alternative to #14826 which uses a single draw to canvas taking both imageSize and imageExtent into account instead of resizing the image twice (which has quality implications).  This is more like the behavior before #14444 but always produces a canvas.

I think it was a mistake to make the changes I made in #14444. I'm currently thinking about a different way to create Image layers with images that don't need to be decoded on every render frame.

A canvas would still be needed if the aspect ratios so not match, and scaling down to reduce canvas use or up see more detail in a smaller natural size SVG will still be useful in that case.  Although for huge SVGs with a lot a detail I do not think ImageStatic is the best approach even if you want to render to canvas.  It would be easy to tile in both canvas layers https://codesandbox.io/s/svg-flag-canvas-tiles-292mps?file=/main.js and WebGL https://codesandbox.io/s/svg-flag-data-tiles-5nyscm?file=/main.js

The original issue #14826 tried to fix is that due to the size of the used SVG image, nothing was rendered because the resulting canvas was too big. I only liked the idea of giving the imageSize property a purpose, but that's not something we really need.
I agree that ImageStatic is not a good way to work with SVG images. But the same can happen with non-SVG images, so the state of image handling after #14444 is problematic.

Replaced by #14945


Fix tenant_add_vm

Minor error in return from _tenant_vm_add when checking for attached volumes to the VM being added to the vmgroup.
The code is using two functions to do the same work in auth_api.py - _tenant_vm_add() and _tenant_vm_replace() both are about the same in functionality - the former is moving the VM from default to a named tenant and the latter from a named tenant to another named tenant. These need to be refactored into a single function so code isn't duplicated.

CI failed with below error,
FAIL: volumecreate_test.go:177: VolumeCreateTestSuite.TestValidOptions
volumecreate_test.go:82:
// positive test case
c.Assert(err, IsNil, Commentf(out))
... value *exec.ExitError = &exec.ExitError{ProcessState:(*os.ProcessState)(0xc420363140), Stderr:[]uint8(nil)} ("exit status 1")
... Error response from daemon: create option_volume_n9ocblmgyv6t: Post http://%!F(MISSING)run%!F(MISSING)docker%!F(MISSING)plugins%!F(MISSING)334cbf101410e47e1360d8793088a0e9b8fe25e263fe87cbe190729a8020203c%!F(MISSING)vsphere.sock/VolumeDriver.Create: http: ContentLength=69 with Body length 0
volumecreate_test.go:82:
// positive test case
c.Assert(err, IsNil, Commentf(out))
... value *exec.ExitError = &exec.ExitError{ProcessState:(*os.ProcessState)(0xc42045d360), Stderr:[]uint8(nil)} ("exit status 1")
... Error response from daemon: create option_volume_1x211hubfnfyi: Post http://%!F(MISSING)run%!F(MISSING)docker%!F(MISSING)plugins%!F(MISSING)334cbf101410e47e1360d8793088a0e9b8fe25e263fe87cbe190729a8020203c%!F(MISSING)vsphere.sock/VolumeDriver.Create: http: ContentLength=80 with Body length 0

Thanks for the review @lipingxue @shaominchen


Made mesh center scaling optional; fix broken meshfactory_adhoc.py test

Also other miscellaneous fixes

Looks good to me! Eager to test this out


The inferred argument type is confusing in subclass of logging.FileHandler

Environment data

Language Server version: 2022.9.30 (pyright df789b5e)
OS and version: Windows 11 22000.978 WSL Ubuntu 20.04
Python version (& distribution if applicable, e.g. Anaconda): 3.9 (Miniconda3)

Code Snippet

Snippet 1

import logging

class MyHandler(logging.FileHandler):
    def __init__(
        self,
        filename,
        mode="a",
        encoding=None,
        delay=False,
        errors=None,
    ) :
        super().__init__(
            filename=filename,
            mode=mode,
            encoding=encoding,
            delay=delay,
            errors=errors,
        )

reveal_type(MyHandler.__init__)

Snippet 2

import logging

class MyHandler(logging.FileHandler):
    def __init__(
        self,
        filename=1,
        mode="a",
        encoding=None,
        delay=False,
        errors=None,
    ):
        super().__init__(
            filename="myfile",
            mode=mode,
            encoding=encoding,
            delay=delay,
            errors=errors,
        )

reveal_type(MyHandler.__init__)

Repro Steps
Paste code snippets above in VSCode and see the revealed types.
Expected behavior
In snippet 1, since encoding and errors are inferred to be str | None (instead of Unknown | None), I expect filename inferred StrPath (instead of Unknown).
In snippet 2, filename is expected to be inferred int (instead of StrPath)
Actual behavior

Snippet 1

Type of "MyHandler.__init__" is "(self: MyHandler, filename: Unknown, mode: str = "a", encoding: str | None = None, delay: bool = False, errors: str | None = None) -> None"

Snippet 2

Type of "MyHandler.__init__" is "(self: MyHandler, filename: str | PathLike[str] = 1, mode: str = "a", encoding: str | None = None, delay: bool = False, errors: str | None = None) -> None"

Thanks for the bug report. This will be fixed in an upcoming release.
Pyright, the type checker that underlies pylance, uses different techniques to infer method parameter types when they are unannotated.

If the parameter is a self or cls it is inferred to be of type Self or type[Self], respectively.
If the method is overriding a base class method whose parameters are annotated and the signatures match in number, name and parameter type, the parameter types are inherited from the base method.
If the parameter has a default argument value other than None (e.g. a = 0), the parameter type is inferred from the type of the default argument.
If the method is an __init__ and none of the parameters are annotated, the corresponding class is treated as though it is generic, and each of the __init__ parameters is assigned its own type variable. Since instance variables are often assigned values directly from __init__ parameters, this allows pyright to improve its inference of instance variable types in code that contains no annotations. For example:

class Foo:
    def __init__(self, a, b):
        self.a = a
        self.b = b

f = Foo(1, "hi")
reveal_type(f.a) # int
reveal_type(f.b) # str

In the case of parameter filename in your first sample above, pyright was using technique 4 to infer its type, giving it an internal TypeVar type. It should use technique 2, which infers the type StrPath as you expected.
This is addressed in this commit.

I think we have some eval ordering issue as you can see below. filename will show Unknown until it is evaluated as argument below. I think that is when type is inferred and cached.

@heejaechang, that is unexpected behavior. Should be investigated to see if it's a bug in the hover provider or type evaluator. I recommend opening a new bug since it's not the same issues as the one in this bug report.

This issue has been fixed in prerelease version 2022.9.41, which was released yesterday. You can find the changelog here: CHANGELOG.md


Won't load after firefox update.

After updating to FF35, freshplayer won't work anymore. When trying to load youtube videos it gives "Failed to load 'libpepflashplayer.so'", and it won't work on other sites either. I tried recompiling from the latest release but that didn't fix it.
Any ideas? For some reason Firefox won't open in a terminal properly (forks and gives the prompt back, rather than giving me terminal output..

Agh, sorry. I removed google chrome yesterday after forgetting why I needed it installed. I'm silly.

I have had this problem on Fedora 25 workstation.
failed to load libpepflashplayer.so.  freshwraopper is a translation layer which needs PPAPI plugin backend
This program notes up to as dozen locations searched, but the library files is not found.   Even thought the library is physically in on of the locations, and many of the other, not google directories, have symbolic links.  This search and load algorithm is not working.
HACK: is to edit /etc/freshwrapper.conf and add the last line.  This physical location is the default installation location for libpepflashplayer on Fedora spins.
Path to the Pepper Flash plugin.
If the option is absent, freshwrapper will search for Pepper Flash in
a number of locations where it could be. Usually that's enough, but if
not, you should manually enter the right path. Multiple paths could
be specified, separated by colon.
#pepperflash_path = "/opt/google/chrome/PepperFlash/libpepflashplayer.so"
pepperflash_path = "/usr/lib64/flash-plugin/libpepflashplayer.so"
I hope this helps.