[FEATURE]: onConflictDoUpdate() set many

Describe what you want
This is a follow-up of a discussion on discord
The idea is that, when inserting an array of object values, it's a bit complex to ask for an update for value which cause a conflict. I came up with something like the following

const values: CrmCompanies[] = ... ;

await db
    .insert(crmCompanies)
    .values(values)
    .onConflictDoUpdate({
      target: crmCompanies.id,
      set: Object.assign(
        {},
        ...Object.keys(values[0])
          .filter((k) => k !== "id")
          .map((k) => ({ [k]: sql`excluded.${k}` })),
      ) as Partial<CrmCompanies>,
    });

As you can see, the syntax is not very easy to come up with, and we lose type information. Ideally, I would rather write something such as (not necessarily that exact syntax of course):
const values: CrmCompanies[] = ... ;

await db
    .insert(crmCompanies)
    .values(values)
    .onConflictDoUpdate({
      target: crmCompanies.id,
      set: values,
    });

I realized that I oversimplified my code above... it no longer works.
Given a utility function such as:
function keysFromObject<T extends object>(object: T): (keyof T)[] {
  return Object.keys(object) as (keyof T)[];
}

this code seems to work:
await skDrizzleDb
  .insert(crmCompanies)
  .values(values)
  .onConflictDoUpdate({
    target: crmCompanies.id,
    set: Object.assign(
      {},
      ...keysFromObject(values[0])
        .filter((k) => k !== "id")
        .map((k) => ({ [k]: sql.raw(`excluded.${crmCompanies[k].name}`) })),
    ) as Partial<CrmCompany>,
  });

how about like this?
const values: CrmCompanies[] = ... ;

await db
    .insert(crmCompanies)
    .values(values)
    .onConflictDoUpdate({
      target: crmCompanies.id,
      set: ({excluded}) => ({
        value: excluded.value
      }),
    });

I haven't looked into this but doesn't this work?
await db
    .insert(crmCompanies)
    .values(values)
    .onConflictDoUpdate({
      target: crmCompanies.id,
      set: {
         value: sql`excluded.value`,
         anotherValue: sql`excluded.anotherValue`,
         ... etc
      },
    });

Or listing all the columns is what you're trying to avoid?

Or listing all the columns is what you're trying to avoid?

Yes, listing all the columns is what I refuse to do because the day I add a new column is when the sh** hits the fan: nothing will complain (no type issue, ...) but one data will be let on the side.

    set: ({excluded}) => ({
        value: excluded.value
      }),

@lxia1220, I don't think that set can be given such a function... can it?

@Angelelz thanks .. that works great .. should be in the docs
    await db.transaction(async (db) => {
      await db.insert(player).values(results)
        .onConflictDoUpdate({ target: player.id, set: { ranking: sql`excluded.ranking` } })
    })

This is more like a general SQL knowledge, more that it's drizzle. I believe the docs will have some improvements anyway.

Hey, is this actually feasible to capture the conflicting row so that I can then set it as something? As I don't think the thread above actually resolves the initial question?

Hey, is this actually feasible to capture the conflicting row so that I can then set it as something? As I don't think the thread above actually resolves the initial question?

The feature request is about a convenience more than an actual request. This currently possible, you just need to list all the fields.

The feature request is about a convenience more than an actual request. This currently possible, you just need to list all the fields.

True. Actually, I had several cases where I did not want to update all the fields in case of conflicts... I realize that it can be more subtle than I initially thought.
FWIW, I wrote this little syntaxic sugar that makes it (a bit) easier to read the code:
export function conflictUpdateSet<TTable extends PgTable>(
  table: TTable,
  columns: (keyof TTable["_"]["columns"] & keyof TTable)[],
): PgUpdateSetSource<TTable> {
  return Object.assign(
    {},
    ...columns.map((k) => ({ [k]: sql.raw(`excluded.${(table[k] as Column).name}`) })),
  ) as PgUpdateSetSource<TTable>;
}

Here is how I use it:
     tx
      .insert(skSession)
      .values(sessions)
      .onConflictDoUpdate({
        target: [skSession.session],
        set: conflictUpdateSet(skSession, [
          "startTimestamp",
          "stats",
          // ... all colums to update here
        ]),
      });

Not sure if it's the cleanest solution... Drizzle internals are a bit obscure to me.

@drizzle-team I wish this conflictUpdateSet was included in postgres/sqlite packages to make it easier to do upserts.
Upserts should be encouraged. If you will not add the conflictUpdateSet please at least document this in
https://orm.drizzle.team/docs/insert#on-conflict-do-nothing
actually I wish there was a section in the docs
https://orm.drizzle.team/docs/insert#on-conflict-do-update which is IMHO a more common usecase than on-conflict-do-nothing

This took me forever.
I am using Mysql. I had to do this:
function allSetValues(values: Record<string, unknown>[]) {
  return Object.assign(
    {},
    ...Object.keys(values[0]!).map((k) => {
      return { [k]: sql.raw(`values(${k})`) }; //Needs to be raw because otherwise it will have 3 string chunks!
    }),
  ) as Record<string, unknown>;
}

//Usage:
await db
      .insert(schema.devPartners)
      .values(devPartners)
      .onDuplicateKeyUpdate({
        set: allSetValues(devPartners),
      });

This was overly complicated for me to just have an upsert. Maybe I am a tad bit too spoiled by prisma

I made this function to generate the set with all columns except the ones with default values.
import { sql } from 'drizzle-orm'
import { PgUpdateSetSource, PgTable } from 'drizzle-orm/pg-core'
import { getTableColumns } from 'drizzle-orm'
import { getTableConfig } from 'drizzle-orm/pg-core'

export function conflictUpdateSetAllColumns<TTable extends PgTable>(
  table: TTable,
): PgUpdateSetSource<TTable> {
  const columns = getTableColumns(table)
  const { name: tableName } = getTableConfig(table)
  const conflictUpdateSet = Object.entries(columns).reduce(
    (acc, [columnName, columnInfo]) => {
      if (!columnInfo.default) {
        // @ts-ignore
        acc[columnName] = sql.raw(
          `COALESCE(excluded.${columnInfo.name}, ${tableName}.${columnInfo.name})`,
        )
      }
      return acc
    },
    {},
  ) as PgUpdateSetSource<TTable>
  return conflictUpdateSet
}

nice one @tjapa, will update my gist too in case anyone would land there looking for it from search engine

Love it @tjapa ! :1st_place_medal:
Does anyone have a library started that has all these neat little extras that we all need?
Here's a quick code snippet on how to apply it just in case anyone comes across this:
export async function updatePoolTeamPlayers(input: PoolTeamPlayer[]): Promise<void> {
  await db.insert(pool_team_player).values(input)
    .onConflictDoUpdate({ target: pool_team_player.id, set: conflictUpdateSetAllColumns(pool_team_player) })
}

I'm using camelCase to name my columns, for example:
const user = pgTable("user", {
 firstName: varchar("firstName")
//...

seems like these helper functions seem to ignore (?) this so I get errors like:
column.firstname does not exist
Is there some workaround or will I have to rename all my columns...

Sharing my snippet for sqlite -- sets all the rows except for the ones defined in the second argument:
export function conflictUpdateAllExcept<
  T extends SQLiteTable,
  E extends (keyof T["$inferInsert"])[],
>(table: T, except: E) {
  const columns = getTableColumns(table);
  const updateColumns = Object.entries(columns).filter(
    ([col]) => !except.includes(col as keyof typeof table.$inferInsert),
  );

  return updateColumns.reduce(
    (acc, [colName, table]) => ({
      ...acc,
      [colName]: sql.raw(`excluded.${table.name}`),
    }),
    {},
  ) as Omit<Record<keyof typeof table.$inferInsert, SQL>, E[number]>;
}

// usage:
await db
  .insert(column) // column: SQLiteTableWithColumns<...>
  .values(values) // values: (typeof column.$inferInsert)[]
  .onConflictDoUpdate({
    set: conflictUpdateAllExcept(column, ["id"]),
    target: column.id,
  });

Should be fully type-safe too, you'll get intellisense results for the except array as well as an error if you put a column that doesn't exist.

@tjapa @capaj I thought I had run into this before when trying out using postgres schemas and trying to drop all tables across different schemas, but getTableColumns doesn't return the prefixed table name, correct? So if you have tables schema1.table_name then getTableColumns will just return table_name. So I wasn't able to figure out at the time how to use sql.raw and inject the schema name in there. I'm guessing this might be an issue doing upserts if they are on different schemas?

Sharing my snippet for sqlite -- sets all the rows except for the ones defined in the second argument:
export function conflictUpdateAllExcept<
  T extends SQLiteTable,
  E extends (keyof T["$inferInsert"])[],
>(table: T, except: E) {
  const columns = getTableColumns(table);
  const updateColumns = Object.entries(columns).filter(
    ([col]) => !except.includes(col as keyof typeof table.$inferInsert),
  );

  return updateColumns.reduce(
    (acc, [colName, table]) => ({
      ...acc,
      [colName]: sql.raw(`excluded.${table.name}`),
    }),
    {},
  ) as Omit<Record<keyof typeof table.$inferInsert, SQL>, E[number]>;
}

// usage:
await db
  .insert(column) // column: SQLiteTableWithColumns<...>
  .values(values) // values: (typeof column.$inferInsert)[]
  .onConflictDoUpdate({
    set: conflictUpdateAllExcept(column, ["id"]),
    target: column.id,
  });

Should be fully type-safe too, you'll get intellisense results for the except array as well as an error if you put a column that doesn't exist.

This works like a charm, thanks for sharing!

@tjapa @capaj I thought I had run into this before when trying out using postgres schemas and trying to drop all tables across different schemas, but getTableColumns doesn't return the prefixed table name, correct? So if you have tables schema1.table_name then getTableColumns will just return table_name. So I wasn't able to figure out at the time how to use sql.raw and inject the schema name in there. I'm guessing this might be an issue doing upserts if they are on different schemas?

Maybe you can get the schema using the getTableConfig function.
I saw that the function returns object with a field called schema.

I'm using camelCase to name my columns, for example:
const user = pgTable("user", {
 firstName: varchar("firstName")
//...

seems like these helper functions seem to ignore (?) this so I get errors like:
column.firstname does not exist
Is there some workaround or will I have to rename all my columns...

@sp88011 I had a similar problem and had to use some more quotes to resolve it. If I use ItzDerock's example from https://github.com/drizzle-team/drizzle-orm/issues/1728#issuecomment-2148635569
This line
      [colName]: sql.raw(`excluded.${table.name}`),

needs to be
      [`${colName}`]: sql.raw(`excluded."${table.name}"`),

If I understand it right, PostgreSQL will convert the identifiers like column names to lowercase unless double quoted.

    // @ts-ignore

Thank you for this! <3
However, ts-ignore can cause some grey hair because your IDE won't warn of a missing sql import nor be able to auto-import it. Better cast the initial reduce value {} as any

These helper functions have been really useful, but they break with the new snake_case feature. table.name is still the titlecase version and you get a no such column: excluded.titleCase error. Any idea how to add compatibility for that?

These helper functions have been really useful, but they break with the new snake_case feature. table.name is still the titlecase version and you get a no such column: excluded.titleCase error. Any idea how to add compatibility for that?

you can do with internal things
(db.dialect.casing as CasingCache).getColumnCasing(schema.table.column)

Seriously it should be part of the ORM. An ORM should take away the need to write complicated helper functions. This issue is open for a year now, you basically just need to take one of the snippets from above and place it into Drizzle.
Personally I would like to write:
this.db
      .insert(products)
      .values(newProducts)
      .onConflictDoUpdate({ target: products.id });

And expect existing items get overwritten

In Postgres for a more dynamic approach we got it working like this:
    if (itemsToUpsert.length > 0) {
        const setObject = Object.keys(itemsToUpsert[0]).reduce((acc, key) => {
            // Convert camelCase keys to snake_case for database compatibility,
            // this is specially necessary if you have relationships
            const columnName = key.replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`);
            acc[columnName] = sql.raw(`excluded."${columnName}"`);
            return acc;
        }, {} as Record<string, any>);

        // Perform the upsert operation with bulk insert and conflict resolution.
        const result = await trx
            .insert(schema)
            .values(itemsToUpsert)
            .onConflictDoUpdate({
                target: schema.id,
                set: setObject,
            })
            .returning({
                id: schema.id,
                name: schema.name,
            });
        return result;
    }


losing power bolts a med door on bagel

Description
whenever power is regained the entrance from lobby to main med corridor gets bolted
seen live on lizard
Reproduction
no idea but it happens reliably whenever power flickers
should also note some bozo was trying to hack into it earlier

never seen this happen on another round mustve been admeme


Change 'DONE' with 'OK'

On phone version, the last view was using hardcoded
english word 'DONE'. After discussion, it was decided
that this should be changed with 'OK' as it is more
universal.

This addresses PR #41


Add Airflow 2.10 (released in August 2024) to tests

Previously, the test matrix did not include Airflow 2.10, released in August 2024.
This PR changes this, ensuring we run our integration tests against the latest stable version of Airflow.

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

Project coverage is 97.69%. Comparing base (7eba460) to head (4d7002a).

Additional details and impacted files
@@           Coverage Diff           @@
##             main      #96   +/-   ##
=======================================
  Coverage   97.69%   97.69%
=======================================
  Files           5        5
  Lines         564      564
=======================================
  Hits          551      551
  Misses         13       13

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


CUPS should not create temporary queues if there is already a permanet queue for the printer

If there is a printer in the network which does driverless IPP printing (or a remote CUPS queue) CUPS creates a temporary print queue when one tries to access the printer (the printers listed by lpstat -e and not by lpstat -v).
This also happens if for the printer there is already a queue set up manually, with ipp, dnssd, socket, ... backend. In this case the temporary queue could confuse the user.
If CUPS discovers an IPP printer, before listing it internally as a candidate for a temporary queue, it could determine its IP, host name, and IPP service name, and check these against the URIs of the existing permanent queues and skip it if the printer is already served with one of the permanent queues.

If we see a printer already configured with the same device URI, then we use the permanent queue.
For any other usage, it is impossible to reliably determine whether a printer is a duplicate.


core/utils: Introduce getTrimmedMsg() (v1)

This pull request suggests to introduce an upper limit of payload string in replica's log.
Resolves #111

Thank you for comments, I've updated the branch by force-pushing the branch. The summary of updates is:

rebased onto the latest master branch
renamed the function and the constant
introduced another parameter max to shortString().

The diff between v1 and v2 is here, which might not be easy to read due to the rebase.

I force-pushed again to fix DCO failure. No functional change.


Table Schema Error

Hi Tao,
The table schema (table.json) misses a lot of "foreign_keys" pairs.  For example: table "paper" has primary key "paper_id", and table "paper key phrase" also has column "paper_id", but there is no "foreign_keys" relation between the two columns.
Similar cases: customer id:: [contacts, customer], product id::[store product, product]
During the evaluation, it will cause extra errors.
Thanks,
Yan

Close this issue, record it here


Enable ledger peers if we are fixed number of slots from the current time.

We want to bound the use of root peers and when it's safe distribute the load to ledger peers.
The time when we can switch to use ledger peers is determined by choosing the point so that the probability that a 50% stake adversarial would be chosen k times to produce a block is sufficiently low.
@nfrisby provided us the following calculation:
import numpy as np; from scipy.stats import nbinom
k=2160; f=0.05; capA=0.45
times=np.arange(start=20, stop=25, step=0.1)
probs=nbinom.cdf(k=3600*times - k, n=k, p=1 - (1 - f)**capA)   # subtract k because SciPy nbinom counts failures, not trials
with np.printoptions(threshold=np.inf):
    print(np.vstack((times,probs)).T)

gives
array([[2.00000000e+01, 3.89589508e-35],
       [2.01000000e+01, 5.48005283e-34],
       [2.02000000e+01, 7.29687739e-33],
       [2.03000000e+01, 9.20253704e-32],
       [2.04000000e+01, 1.09985720e-30],
       [2.05000000e+01, 1.24640698e-29],
       [2.06000000e+01, 1.34002112e-28],
       [2.07000000e+01, 1.36748257e-27],
       [2.08000000e+01, 1.32530979e-26],
       [2.09000000e+01, 1.22045706e-25],
       [2.10000000e+01, 1.06845979e-24],
       [2.11000000e+01, 8.89698079e-24],
       [2.12000000e+01, 7.05003593e-23],
       [2.13000000e+01, 5.31883984e-22],
       [2.14000000e+01, 3.82234126e-21],
       [2.15000000e+01, 2.61780000e-20],
       [2.16000000e+01, 1.70939701e-19],
       [2.17000000e+01, 1.06475945e-18],
       [2.18000000e+01, 6.32939860e-18],
       [2.19000000e+01, 3.59231016e-17],
       [2.20000000e+01, 1.94751832e-16],
       [2.21000000e+01, 1.00897282e-15],
       [2.22000000e+01, 4.99757646e-15],
       [2.23000000e+01, 2.36761723e-14],
       [2.24000000e+01, 1.07330666e-13],
       [2.25000000e+01, 4.65782302e-13],
       [2.26000000e+01, 1.93586002e-12],
       [2.27000000e+01, 7.70868418e-12],
       [2.28000000e+01, 2.94228056e-11],
       [2.29000000e+01, 1.07687782e-10],
       [2.30000000e+01, 3.78100487e-10],
       [2.31000000e+01, 1.27404718e-09],
       [2.32000000e+01, 4.12172987e-09],
       [2.33000000e+01, 1.28075770e-08],
       [2.34000000e+01, 3.82406424e-08],
       [2.35000000e+01, 1.09756761e-07],
       [2.36000000e+01, 3.02944104e-07],
       [2.37000000e+01, 8.04445049e-07],
       [2.38000000e+01, 2.05594302e-06],
       [2.39000000e+01, 5.05924446e-06],
       [2.40000000e+01, 1.19922464e-05],
       [2.41000000e+01, 2.73928866e-05],
       [2.42000000e+01, 6.03228251e-05],
       [2.43000000e+01, 1.28120635e-04],
       [2.44000000e+01, 2.62567040e-04],
       [2.45000000e+01, 5.19444492e-04],
       [2.46000000e+01, 9.92463809e-04],
       [2.47000000e+01, 1.83219262e-03],
       [2.48000000e+01, 3.26978613e-03],
       [2.49000000e+01, 5.64388076e-03]])

Or, more directly: (nbinom.ppf(q=1e-6, n=k, p=1 - (1 - f)**capA) + k) / 3600 yields 23.723055555555554 hours. The ppf method is the inverse of .cdf (aka the quantile function).
Our question: how many slots after the immutable tip until the adversary is elected k times? If that number of slots is beyond the wall-clock, then the adversary does not pose a risk yet.
Explanation of this answer: the SciPy nbinom is the negative binomial distribution of the number of tails before you see a certain number of heads. For this question "heads" = "a slot the adversary leads", "tails = a slot the adversary does not lead". We think in terms of the number of flips (ie slots), so we shift that by the number of heads to get the number of tails, since "flips = heads + tails".

We realised that bootstrap feature will subsume this one.


Support setting kernel argument as NULL

As per Khronos OpenCL spec:

If the argument is declared to be a pointer of a built-in scalar or vector type, or a user defined structure type in the global or constant address space, the memory object specified as argument value must be a buffer object (or NULL).

I tried to set kernel argument like this
some_kernel.set_arg(0, NULL);

but get error invalid argument size instead.
Because OpenCL explicitly allows NULL as input, I went on to see why and now maybe I've identified the problem:
// set_kernel_arg implementation for built-in types (including NULL)
template<class T>
struct set_kernel_arg
{
    typename boost::enable_if<is_fundamental<T> >::type
    operator()(kernel &kernel_, size_t index, const T &value)
    {
        kernel_.set_arg(index, sizeof(T), &value);
//                                        ^^^^^^
//                     now we are getting the address of NULL
//                     certainly CL API won't allow an arbitrary address
    }
};

So Boost Compute needs somehow to identify the NULL, maybe via a special type inside boost::compute, and set the value NULL directly to the CL API instead of its address.

I don't think it's a valid option. I can undestand why someone would like to pass a null pointer when the argument isn't requied or won't be used in OpenCL C API, but in Boost.Compute's API you would have to pass an uninitialized buffer object.
Also I don't see good solution to support that (using NULL is  void set_arg(size_t index, const T &value), because NULL does not have its own type.
User can always use void set_arg(size_t index, size_t size, const void *value) which will work correctly with NULL. Another way would be to specify the type

User can always use void set_arg(size_t index, size_t size, const void *value) which will work correctly with NULL.

I wasn't aware of that. That should solve my issue, but felt using something like std::nullptr_t or compute::null_t would be neater. This way it also plays nice with the variadic set_args(T&&... args)

We can add overload for std::nullptr_t, which will fix it for C++11 and newer, so it should have in variadic version.


Add support python 2

Hi @brennerm
check_mk api is really good, I have added python 2 support to it, thus works with python2 and python3.

Thanks for your effort. :+1:

👍


Use new gql query to correctly scope CVE images and deployments on cve single page

Description
A detailed explanation of the changes in your PR.
Feel free to remove this section if it is overkill for your PR, and the title of your PR is sufficiently descriptive.
Checklist

[ ] Investigated and inspected CI test results
[ ] Unit test and regression tests added
[ ] Evaluated and added CHANGELOG entry if required
[ ] Determined and documented upgrade steps
[ ] Documented user facing changes (create PR based on openshift/openshift-docs and merge into rhacs-docs)

If any of these don't apply, please comment below.
Testing Performed
TODO(replace-me)
Use this space to explain how you tested your PR, or, if you didn't test it, why
you did not do so. Valid reasons include, for example, "CI is sufficient",
"No testable changes". Feel free to attach JSON snippets, curl commands,
screenshots.
In addition to reviewing your code, reviewers must also review your testing
instructions and make sure they are sufficient.

Current dependencies on/for this PR:

master

PR #6167   👈

This comment was auto-generated by Graphite.


Can you use fings on unmatched samples?

It would certainly run, but you would have to be careful with the results, you wouldn't want to filter anything because of a poor-quality unmatched normal sample.  I guess it might help clean up regions of poor quality alignment/sequencing.  I should really finish adding the tumor-only mode I've been intending to implement.
If you've got a specific use-case or project in mind, feel free to email me and we can discuss it further.


Could you explain...?

Could you explain how can i implement it? I did a playbook like your example, adding a role, but ansible dont recognise the nsupdate.py in ../roles/nsupdate.. Could you explain a little bit, how can i implement it? thanks!

yes I would like this too

Hi, I'll update this repo after weekend - completely rewritten module with docs. I hope this will help. ;)

That will be awesome!

Any progress on this rewrite with docs? As it is now you have to copy the module out of the source tree into your library path manually. Which is not that great.

@gaudenz What are you missing documentation wise? How do you feel about the submodule approach suggested in https://groups.google.com/forum/#!msg/ansible-project/08O9e_0jpgc/TKmcSzUFEgAJ?

While I don't personally have a problem with submodules, they are perceived by most people as difficult to work with and a very advanced feature.
IMO the best approach would be to integrate this module into Ansible upstream and to submit a pull request.


[Change Request]: Tangential movement along an trajectory

Currently it is not possible to command AGVs in a specific tangential edge-orientation related to a physical trajectory.
The only existing way to command AGVs in a edge specific orientation is the value "orientation" [rad, Float64], which only relates to the project specific map origin. As a result, all commanded orientation values are global interpreted orientations. A simple "move backwards" command along a trajectory, which can include curves, is currently not possible.
Therefore, we suggest to integrate a new value for a tangential command. Two options are possible:

The new value specifies, in how to interpretate the "orientation" value - ENUM [GLOBAL, TANGENTIAL]
A new orientation value gets integrated, e. g. "orientationTangential", and the existing value "orientation" is renamed to "orientationGlobal".

I think there is a bug in the definition of the field orientation! This changed from VDA5050 V1.0 to VDA5050 V1.1. I refere to the part "Orientation of the AGV on the edge relative to the global project specific map coordinate origin".
In all discussion this was a tangential value. Also the examples describing the VDA5050 (VDMA_Example_1_Forward_Driving.docx) suggest differently. At the VDA5050-Mesh-Up this was also a tangential value.

To my understanding it is no bug. But anyway the VDA5050 must provide a possibility to command AGVs in both ways: Related to a global origin and tangetial to a trajectory must be given.
We already had customers, who came up with both use cases in different projects:

Global commanding: Saves time for station approaches
Tangetial trajectory commading: To reduce necessary space along a path due to tiny areas with limited factors, such as pillars.

Well, at least we know now that this has to be discussed soon.
Our way of interpreting this values:

edge/orientation: is an orientation relative to the edge-tangent. Which other way would you tell an AGV to drive backwards on a edge, that is not a straight line.
node/theta: is an orientation relative to the map-coordinat-system. Combining this value with the flag edge/rotationAllowed=false one can tell the AGV that it should have a specific rotation relative to the map-coordinate-system when driving along the edge.

Which information is this interpretation based on:

edge/orientation:

VDA5050/V1.0 does not state in which coordinate-system the angle is defined.
VDMA handed out 13 word-files exactly describing this behaviour (VDMA_Example_1...docx ... VDMA_Example_13...docx)

theta:

VDA5050/V1.0 says: "Der Radialwert in Relation zum globalen Koordinatensystem". Unfortunately, this was removed in VDA5050/V1.1.

We tested so far with three different supervisors, all interpreted edge/orientation as a tangential value. I am looking forward for comments of other parties working with VDA5050.

#59

Related issue #59


Split standard sys from core, add core unit tests

Codecov Report

Merging #27 into master will increase coverage by 4.45%.
The diff coverage is 58%.

@@            Coverage Diff             @@
##           master      #27      +/-   ##
==========================================
+ Coverage    52.5%   56.95%   +4.45%
==========================================
  Files          37       37
  Lines         899      906       +7
  Branches       83       89       +6
==========================================
+ Hits          472      516      +44
+ Misses        354      310      -44
- Partials       73       80       +7

Flag
Coverage Δ

#unittests
56.95% <58%> (+4.45%)
:arrow_up:

Impacted Files
Coverage Δ

src/standard/collision/collider.ts
0% <ø> (ø)
:arrow_up:

src/standard/sprite/sprite_system.ts
0% <0%> (-18.89%)
:arrow_down:

src/standard/collision/collision_system.ts
0% <0%> (ø)
:arrow_up:

src/standard/interpolation/interpolation_system.ts
0% <0%> (-45%)
:arrow_down:

src/standard/sprite/sprite.ts
0% <0%> (-60%)
:arrow_down:

src/standard/shape/ellipse.ts
0% <0%> (ø)

src/standard/collision/gjk.ts
0% <0%> (ø)

src/standard/camera/camera_system.ts
0% <0%> (-26.32%)
:arrow_down:

src/message/message_bus.ts
82.6% <100%> (ø)
:arrow_up:

src/game.ts
100% <100%> (ø)
:arrow_up:

... and 17 more

Continue to review full report at Codecov.

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


Roaring64Bitmap equals Bug + Leak

Describe the bug (same as #452, but with Roaring64Bitmap instead of Roaring65NavigableMap)
When Container becomes empty after a
removeLong call, the key (high part) is not removed from highLowContainer.
This results in a potential memory leak and incorrect equality check when
comparing two Roaring64Bitmap maps.
https://github.com/RoaringBitmap/RoaringBitmap/blob/37fe4d0cb3ce51a4f6975e614f70d70fa23f8f4f/RoaringBitmap/src/main/java/org/roaringbitmap/longlong/HighLowContainer.java#L222-L224
To Reproduce
Roaring64Bitmap b1 = new Roaring64Bitmap();
Roaring64Bitmap b2 = new Roaring64Bitmap();

b1.add(1);
b1.removeLong(1);
System.out.println(b1.equals(b2));

RoaringBitmap version: 0.9.8

@Maithem Some feed regarding shared tests. Thanks.

This bug was already fixed in https://github.com/RoaringBitmap/RoaringBitmap/pull/451
The following test is passing on master:

  @Test
  public void leak1() {
    Roaring64Bitmap b1 = new Roaring64Bitmap();
    Roaring64Bitmap b2 = new Roaring64Bitmap();

    b1.add(1);
    b1.removeLong(1);
    assertEquals(b2, b1);
  }

@blacelle I'm working on refactoring tests to test against LongBitmapDataProvider interface which will merge both tests from TestRoaring64Bitmap and TestRoaring64NavigableMap

@Maithem  I understand that you recommend we close this issue, correct?

@lemire I believe so. The test passes on master. 0.9.8 was released ~16 days ago, but the fix went it 4 days ago https://github.com/RoaringBitmap/RoaringBitmap/pull/451

Closing.
@javier-godoy : if you disagree, please open a new issue with more information.


limit on the amount of data you can back up to a vault

I find these 2 statements in the article contradictory & confusing -

There is no limit on the amount of data you can back up to a vault.
Azure Backup restricts the maximum size for the data source, however, these limits are large.

If there is in fact a large maximum limit on how much data can be backed up based on data source, how can it be said that "there is no limit on the amount of data you can back up to a vault". Can you please explain?

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

ID: efe1b860-8d24-1742-4f20-c3e75cacbba3
Version Independent ID: 2ac226c0-df97-f729-fe09-3d51d61b9083
Content: Azure Backup FAQ
Content Source: articles/backup/backup-azure-backup-faq.md
Service: backup
GitHub Login: @markgalioto
Microsoft Alias: markgal;arunak;trinadhk;sogup;

@mvark , Thank you for pointing out the confusion. Azure Backup has limits for the size of an individual data source that is being backed up. These limits are listed in the following tables. Azure Backup doesn't limit the number of data sources that you back up in a vault. I have moved this statement to a separate q&a to alleviate the confusion. This change will publish shortly.

#please-close

@mvark We will now close this issue. If there are further questions regarding this matter, please reopen it and we will gladly continue the discussion.


Suffix is misspelled

We have a referer/referrer situation :)
The configuration option
   stripSufix: '.ext',

is misspelled. It should be
   stripSuffix: '.ext',

I guess it's worth supporting both for backwards-compatibility?

:+1:


Ongoing NewtonGameDynamics  Integration

Currenty Waiting for PR #59

PhysicsStressTest is now working on windows for me.

Wew look at that... https://news.developer.nvidia.com/announcing-physx-sdk-4-0-an-open-source-physics-engine/

open source and more stable - pretty sweet - good reason to switch honestly.

Indeed. Even more of a reason is that just about every company considers physx first and mostly sides with it. As much as i love newton - Julio is just one guy (no matter how professional). Cant compete with nvidia's resources :|

I am not going to worry about backwards comparability at all.  The Bullet api was lacking in some regards in my opinion anyway.  I am not sure what you are worried about regarding node and component changes.

I am not going to worry about backwards comparability at all.  The Bullet api was lacking in some regards in my opinion anyway.  I am not sure what you are worried about regarding node and component changes.

I am not sure what you are worried about regarding node and component changes.

UnknownComponent is completely broken and Node modifications are simply wrong. But most importantly - a feature PR is supposed to have only changes related to that feature and nothing more. Anything else belongs in a separate PR.


Infinite repetitions and invalid JSON - Outlines with MLX

Describe the issue as clearly as possible:
On certain prompts, the LLM can spiral into an infinite loop providing the same item repeatedly, until stopped by max_tokens parameter.
In that case, the JSON will fail with an exception as being invalid, without returning any result.
Llama.cpp and MLX-LM have parameters to penalize repetition and thus preventing it.
While Outlines accept additional parameters to pass to Llama.cpp, it does not for MLX-LM,
resulting in prompt failure.
long_42k_llm_prompt.md
Steps/code to reproduce the bug:
RESULTS_JSON_SCHEMA = """{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
	"results": {
		"type": "array",
		"items": {
			"type": "string"
		}
	}
},
"required": ["results"],
"additionalProperties": false
}"""

from outlines import models, generate, samplers
import json

model = models.mlxlm("mlx-community/Meta-Llama-3.1-8B-Instruct-4bit")
sampler = samplers.multinomial( top_p=0.1 )
generator = generate.json( model, RESULTS_JSON_SCHEMA, sampler )

json_answer = generator( long_42k_llm_prompt, max_tokens=1000 )
print( json.dumps( json_answer, indent=4 ) )

Expected result:
List without endless repetition at the end.

When running directly MLX-LM, we get an infinite loop, stopped by max_tokens only

python -m mlx_lm.generate --model mlx-community/Meta-Llama-3.1-8B-Instruct-4bit --prompt "$(< ~/Downloads/long_42k_llm_prompt.md)" --max-tokens 5000

...
687. **Methodist Hospital**
688. **Methodist Hospital**
689. **Methodist Hospital**
690. **Methodist Hospital**
691. **Methodist Hospital**
692. **Methodist Hospital**
693. **Methodist Hospital**
694. **Methodist Hospital**
695. **Methodist Hospital**
696. **Methodist Hospital**
697. **Methodist Hospital**

==========
Prompt: 11380 tokens, 432.382 tokens-per-sec
Generation: 5000 tokens, 26.872 tokens-per-sec
Peak memory: 6.891 GB

Error message:
No response
Outlines/Python version information:
Version information

```
0.0.47.dev69+g72377db
Python 3.12.4
mlx==0.17.2
mlx-lm==0.18.1
```

Context for the issue:
No response

I created the PR https://github.com/outlines-dev/outlines/pull/1134 to fix the problem.
Please review it and merge it.


Document how to plot only one variable without any additional data available

Some suggestion to add to the documentation:
While trying to get a MSWMS server running with new model data, I tried to do a minimal example to just plot temperature on pressure levels. With the examples given in the documentation, always additional model variables (e.g. PV or Theta) were necessary. I suggest to include a very simple example of how to make a simple plot for a certain variable in the documentation. @joernu76 proposed the following approach, which worked out fine for me:
mpl_hsec_styles.make_generic_class("HS_MyStyle_pl_air_temperature",'air_temperature','pl',[],[])
register_horizontal_layers = [
    (mpl_hsec_styles.HS_MyStyle_pl_air_temperature, ["model"]),
    ]

And for vertical plots:
mpl_vsec_styles.make_generic_class("VS_MyStyle_pl_air_temperature",'air_temperature','pl',[],[])
register_vertical_layers = [
    (mpl_vsec_styles.VS_MyStyle_pl_air_temperature, ["model"]),
    ]

And for line plots simply:
register_linear_layers = [
    (mpl_lsec_styles.LS_DefaultStyle, "air_temperature","pl", ["model"]),
    ]

However, this may be too much information for https://mss.readthedocs.io/en/stable/mswms.html , which is already too long in my opinion. It might be a good idea to also restructure this page.

While we restructure the documentation we have to keep urls valid because of linked from our publication.
We maybe can describe a few minimized examples. These have to become test covered so that we learn when we need to improve them.


I have add some time statistics just like AB.

liangxu@master:~/git/weighttp$ ./build/default/weighttp -n 1000000 -c 2048 -t 4 "http://<IP_ADDRESS>:9000/test"
weighttp - a lightweight and simple webserver benchmarking tool

starting benchmark...
spawning thread #1: 512 concurrent requests, 250000 total requests
spawning thread #2: 512 concurrent requests, 250000 total requests
spawning thread #3: 512 concurrent requests, 250000 total requests
spawning thread #4: 512 concurrent requests, 250000 total requests
progress:  10% done
progress:  20% done
progress:  30% done
progress:  40% done
progress:  50% done
progress:  60% done
progress:  70% done
progress:  80% done
progress:  90% done
progress: 100% done

finished in 21 sec, 138 millisec and 418 microsec, 47307 req/s, 12981 kbyte/s
requests: 1000000 total, 1000000 started, 1000000 done, 1000000 succeeded, 0 failed, 0 errored
status codes: 1000000 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 281000000 bytes total, 85000000 bytes http, 196000000 bytes data

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:    0.024 15.089 246.2  0.131 21041.707
Processing: 0.060 16.799  78.9 15.625 6848.592
Waiting:    0.060 16.799  78.9 15.625 6848.592
Total:      5.852 31.887 286.4 15.910 21042.083

Percentage of the requests served within a certain time (ms)
  50%  15.910
  66%  16.217
  75%  16.451
  80%  16.636
  90%  17.304
  95%  18.411
  98%  21.767
  99%  29.097
 100%  21042.083 (longest request)

FYI: When building under Ubuntu 16.04.2 LTS; I had to modify the build script to include the C math library, as during the link stage I experienced an undefined reference to symbol sqrt@@GLIBC_2.2.5.


[Feature Request] Add Ubuntu-24.04 build support

Need tauri github action supports platform Ubuntu-24.04.

It already does but it's in beta: https://docs.github.com/en/actions/using-github-hosted-runners/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources
Also, only tauri v2 supports 24.04 see https://github.com/tauri-apps/tauri/issues/9662


Tutorials PR previews

Today in a meeting we decided we'd implement PR previews for tutorials by pushing a new page to production with access controls so its only visible to our writing team (plus anyone else we want to share previews with). This seems like the best trade-off between infrastructure simplicity, security, and ease of contributor use.

Duplicate of https://github.com/Qiskit/documentation/issues/1381


[terra-docs] Create new notices variant for Not Supported Incorrect Use

Summary
Create a new documentation notices component variant type for explaining the "Hazards of Incorrect Use", showing how if a component is used in a specified way, it is not supported and strongly not recommended.

Closes #3583
Includes:

new "Not Supported" variant
adds styles for markdown items missed last time
updates screenshots

Deployment Link

https://terra-core-notices-inco-afrwrz.herokuapp.com/dev_tools/cerner-terra-docs/documentation-components/notice#notices-for-hazard-awareness-of-incorrect-usage

Additional Details

Will be needed for new Terra-Pills component terra-framework/pull/1490 to document incorrect use patterns.

Is there some place in our current doc where I can see these notices in action? I'd like to learn how we are using them.

--> Github Search: org:cerner "import { Notice }" -path:packages/terra-docs/

Direct links to some of the dev-site pages:

terra-application-navigation
terra-infinite-list
terra-dialog-modal
clinical-item-collection
https://engineering.cerner.com/terra-ui/application/cerner-terra-application-docs/polyfills
https://engineering.cerner.com/terra-ui/application/terra-application/how-to/create-workspace-content
https://engineering.cerner.com/terra-ui/dev_tools/cerner-terra-application-docs/terra-dev-site/writing-documentation


There is an example does not work

Hi, I'm learning the python code, and I found there is an example does not work:
https://github.com/google/or-tools/blob/master/examples/python/flexible_job_shop_sat.py
It shows an error:
$ python flexible_job_shop_sat.py
Horizon = 40
terminate called after throwing an instance of 'Swig::DirectorMethodException'
  what():  SWIG director method error. Error detected when calling 'SolutionCallback.OnSolutionCallback'
Aborted (core dumped)

Python version:
Python 3.7.0 (default, Aug 24 2018, 20:15:24)
[GCC 5.4.0 20160609] on linux

Or-tools version:
$ pip list|grep ortools
ortools                  6.9.5824

Please upgrade to 6.10.
The name of the method has changed since then, and the example reflects the
new name.
Thanks
Laurent Perron | Operations Research |<EMAIL_ADDRESS>| (33) 1 42 68 53
00
Le jeu. 20 déc. 2018 à 09:55, maxnilz<EMAIL_ADDRESS>a écrit :

Hi, I'm learning the python code, and I found there is an example does not
work:
https://github.com/google/or-tools/blob/master/examples/python/flexible_job_shop_sat.py
It shows an error:
$ python flexible_job_shop_sat.py
Horizon = 40
terminate called after throwing an instance of 'Swig::DirectorMethodException'
what():  SWIG director method error. Error detected when calling 'SolutionCallback.OnSolutionCallback'
Aborted (core dumped)
Python version:
Python 3.7.0 (default, Aug 24 2018, 20:15:24)
[GCC 5.4.0 20160609] on linux
Or-tools version:
$ pip list|grep ortools
ortools                  6.9.5824
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/google/or-tools/issues/986, or mute the thread
https://github.com/notifications/unsubscribe-auth/AKj17SYRwNpqTPTNRM7Hmp6AtQQsSe8zks5u61CNgaJpZM4ZbwfY
.

Thanks very much, it works when I upgrade to 6.10

@maxnilz you can use pip show ortools


fix: audit and upgrade dependencies

Fix: Audit dependency tree to remove well-known vulnerabilities
Description: Running npm audit for this project reveals a series of easily fixable vulnerabilities in the dependency tree. Many of them are automatically fixable running npm audit fix. Moreover, I have upgraded the devDependencies jest and eslint by some major versions, which also removes quite many vulnerabilities. I have also run the tests and the linter and nothing breaks. I have also opened the test results in my browser and everything looks fine, via firefox test/output/index.html

This package is great, but I get tons of npm warnings whenever I use them. I would like to receive just a few less, and fixing the issues in this PR was rather easy. Do I need to do something else so that this PR is compliant?

@albertodiazdorado doesn't look like just update of deps is enough, looks like there were some breaking changes in the API

Thanks for the very fast response @derberg
There is indeed a breaking change in one of the upgrades that requires node v14. We cannot do that upgrade if we want to keep backwards compatibility with node v12.
In the end, this was not as easy as I though. I will have a second look at it. Do you want me to close the PR and re-open it in the future, or may I leave it here?

@albertodiazdorado up to you if you want to continue with this one or start new

Thanks for the very fast response @derberg

yeah, the AsyncAPI Conference has ended 😅 so have more time now 😄

@albertodiazdorado what do you need to continue here?


Suggestions : use of ndarray crate

I was considering implementing a NN to learn rust and  found your repository when searching for existing implementations. I see that your conclusion is rust is too slow for neural networks. Considering that a NN is mostly matrix multiplications, why not optimized it or use an external crate. Have you considered to benchmark ndarray ?

Hi,
Sorry if the README is not clear. I just rephrased it a little.
I am absolutely not saying that Rust is too slow for neural networks. I am sure that an optimized implementation could compete with C++ or based ones.
However, my implementation is mostly for learning purposes and is too slow for production use.
There are, of course, many ways my implementation could be made faster but this is not really the goal of the project.

Thank's for your highlight, very nice project btw ! I'll close this.


Depend on tyrasd/jxon library

Hi!
I'm using the JXON class in order to process OSM data.
It turned out, few German post codes with leading '0' are accidentally parsed to numbers.
I.e. '01234' will be 1234.
This is the relevant code: https://github.com/openstreetmap/iD/blob/master/modules/util/jxon.js#L9
Surprisingly, live version of iD editor doesn't do this. Could you briefly explain what bits I'm missing?
Thank you

Surprisingly, live version of iD editor doesn't do this. Could you briefly explain what bits I'm missing?

Hmm, I'm not sure!   Where I live in New Jersey, we also use post codes with a leading '0', and they all look fine in my local copy of iD, so I can't reproduce what you're seeing.
I think iD's JXON library is just an older version of @tyrasd's library found here:
https://github.com/tyrasd/jxon
The best thing for iD to do would be to remove ours and pull in that other library as a dependency.

Let's leave this open until we've actually made tyrasd/jxon a dependency.


Does Frostwire store a unique instance/user GUID locally anymore?

Hi all, looking to see whether a GUID is stored locally by frostwire anymore. It used to be stored in the frostwire.props file, but hasn't been stored there in some time. Any users/devs know whether any unique user/machine/instance guid is stored locally?

iirc, we don't have any unique guid anymore for our desktop app, we have it for android, but not used (probably to be removed in the near future)


MIC-301 add ScreeningOutcome to retrieved Referral Model

as part of MIC-301, UI need to receive screening outcome from csip record

Codecov Report
Attention: Patch coverage is 0% with 3 lines in your changes missing coverage. Please review.

Project coverage is 89.47%. Comparing base (98e380d) to head (94906f3).

Files
Patch %
Lines

...nterventionplanapi/domain/CsipRecordTranslation.kt
0.00%
0 Missing and 3 partials :warning:

Additional details and impacted files
@@             Coverage Diff              @@
##               main      #93      +/-   ##
============================================
- Coverage     89.61%   89.47%   -0.15%
  Complexity      695      695
============================================
  Files           119      119
  Lines          2100     2100
  Branches        107      110       +3
============================================
- Hits           1882     1879       -3
  Misses          175      175
- Partials         43       46       +3

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


fix hadoop_file_system's bug when not provide namenode info

When we use the Hadoop File System, if we do not provide namenode info,
such as the URI is viewfs:///nn01/hadoop/serving/mnist_model
instead of viewfs://hadoop-namenode/nn01/hadoop/serving/mnist_model
with namenode info, then we can't connect HDFS correctly.
In this situation, we should connect HDFS use default namenode info, as the native HDFS semantics.

Can you modify the logic for the hdfs:// section as well ?

I was thinking something like this would be enough ```
diff --git a/tensorflow/core/platform/hadoop/hadoop_file_system.cc b/tensorflow/core/platform/hadoop/hadoop_file_system.cc
index eb35531..3a4954c 100644
--- a/tensorflow/core/platform/hadoop/hadoop_file_system.cc
+++ b/tensorflow/core/platform/hadoop/hadoop_file_system.cc
@@ -164,7 +164,7 @@ Status HadoopFileSystem::Connect(StringPiece fname, hdfsFS* fs) {
// https://github.com/tensorflow/tensorflow/blob/v1.0.0/third_party/hadoop/hdfs.h#L259
hdfs_->hdfsBuilderSetNameNode(builder, "default");
} else {

hdfs_->hdfsBuilderSetNameNode(builder, nn.c_str());

hdfs_->hdfsBuilderSetNameNode(builder, nn == "" ? "default" : nn.c_str());
}
// KERB_TICKET_CACHE_PATH will be deleted in the future, Because KRB5CCNAME is
// the build in environment variable of Kerberos, so KERB_TICKET_CACHE_PATH

@pavanky Thanks for your supplement. I'll update this PR.

Nagging Reviewer @martinwicke: You have been added as a reviewer to this pull request. Please add your review or reassign. It has been 29 days with no activity and the awaiting review label has been applied.

Nagging Reviewer @martinwicke: You have been added as a reviewer to this pull request. Please add your review or reassign. It has been 44 days with no activity and the awaiting review label has been applied.


Ability to undo edits

This came up in play test with Fred. It was mainly in the context of mobile, but I think this will be an important feature in general.

It allows the user to experiment with different changes and see the impact it has on the enemy path
While we refine the player inputs, it allows the player to fix any accidental or unintended changes

Needs some cleanup, but that is covered in #66


setFileHandler to write buffer length

Otherwise, binary files were sent with wrong headers
strlen works here as fallback for text files, but not binary files, those contain null symbols which are treated as end of string by strlen
https://github.com/webui-dev/webui/blob/2ca3b793c4fde6d9328937298dec30190a02afaa/src/webui.c#L2288
particularly, attempting to read .woff fonts were resulting in passing header "Content-Length: 4" resulting in browser error
"OTS parsing error: Size of decompressed WOFF 2.0 is less than compressed size"

Thanks for the fix 👍
Just to let you know, webui has a specific send function for raw binary data webui_send_raw(). Perhaps we should implement it in Deno too.


what if we restrict the memory size into half

then we need a replacement technique

no matter, since the memory size depends on each task.
we about to make an LPU algorithms


Scheduler rearrange logic could be more optimized

There's a case we don't handle in our Scheduler rearrange logic that would be better handled there than before we went to the exhaustive search.  We don't try to shift an existing scheduled recording over to another tuner with an open slot in order to make room for a new one. We will swap the recording time if it has other airings...but that's different. I'm not 100% sure this affects systems that have all tuners with the same lineup...but I think it could.  SageTV has always had this deficiency..this is nothing new. :)

So this would require checking if more than one tuner offers that airing, and if so, try a different one for that airing, and recheck the conflicts?  There's have to be a way to track which of the available tuners have been checked with this file in this iteration... Might be.. messy.

Yeah, this is far from an easy change to do...it was just on my list of things to fix that's been sitting there for years so figured I'd add it to the tracker. :)


“Attempt to index local 'hooks' (a nil value)”

Hi there, thanks for your work on this plugin, it looks like an excellent addition to my setup!
I am unfortunately experiencing a problem in my AstroNvim setup when trying to invoke :Glance references -- I get the following error message and stack trace:
Error executing vim.schedule lua callback: ...m/site/pack/packer/start/glance.nvim/lua/glance/init.lua:136: attempt to index local 'hooks' (a nil value)
stack traceback:
        ...m/site/pack/packer/start/glance.nvim/lua/glance/init.lua:136: in function 'handler'
        ...im/site/pack/packer/start/glance.nvim/lua/glance/lsp.lua:31: in function 'handler'
        ...w/Cellar/neovim/0.8.0/share/nvim/runtime/lua/vim/lsp.lua:1390: in function ''
        vim/_editor.lua: in function <vim/_editor.lua:0>

It seems like the hooks map is always nil for some reason. This is my Packer init:
...

"dnlhc/glance.nvim",
config = function()
  require("glance").setup({})
end,

...

}

So, it should be set up with the default options which should have {} as default for its hooks, but it somehow gets converted into a nil value.
I also tried to configure it like:
require("glance").setup({
  hooks = {
    "before_open" = function(results, open, jump, method)
      open(results)
    end,
  },
})

But I still receive the same error message when running :Glance references
I'll continue with my debugging, but any help would be greatly appreciated! 🙇

Hey, thanks for reporting.
That's very strange and shouldn't happen, i cannot reproduce the issue with my setup.
Can you try to reinstall the plugin?

I made it work after running :PackerSync 🤷
Amazing plugin, thanks again!


UNBLOCKED GAMES drift games unblocked | Play Free Games Online - ti239

UNBLOCKED GAMES drift games unblocked | Play Free Games Online - ti239
drift games unblocked is a popular website that offers a wide variety of games that can be played in environments where access to gaming sites is typically restricted, such as schools and workplaces.
Enjoy playing all your favorite casual drift games unblocked, office, or home. Dive into the world of online free games without downloads!
👉🔴 [SITE Games Unblocked >> drift games unblocked](http://freeplayer.one/?title=drift_games_unblocked&ref=9)
👉🔴 [PREMIUM Games Unblocked >> drift games unblocked](http://freeplayer.one/?title=drift_games_unblocked&ref=9)
🙋♀ A short introduction - what is your organization all about?
🌈 Contribution guidelines - how can the community get involved?
👩💻 Useful resources - where can the community find your docs? Is there anything else the community should know?
🍿 Fun facts - what does your team eat for breakfast?
🧙 Remember, you can do mighty things with the power of Markdown
drift games unblocked: Unlocking Premium Fun in Educational Settings
In recent years, the phenomenon of drift games unblocked has taken the online gaming community by storm. These games, designed to bypass restrictions often placed by schools and workplaces, provide a unique blend of entertainment and engagement, especially for students. Among the vast array of options, unblocked premium games stand out as a popular choice, offering enhanced features, better graphics, and a more immersive gaming experience.
What Are drift games unblocked?
drift games unblocked are online games that can be accessed and played without restrictions, typically in environments like schools or offices where gaming sites might be blocked. The appeal of these games lies in their accessibility and the diverse range of genres available, from action and adventure to puzzles and strategy. Students often turn to these games during breaks or downtime, providing a quick escape from their academic routines.
The Rise of Premium drift games unblocked
As the unblocked games market has evolved, so has the demand for premium content. Premium drift games unblocked are those that offer superior gameplay experiences, often including advanced graphics, engaging storylines, and multiplayer functionalities. Many of these games are adaptations of popular titles, enabling players to enjoy high-quality gaming even in restricted environments.
The allure of premium unblocked games lies in their ability to combine fun with an element of strategy and critical thinking. Many of these games challenge players to solve complex problems, collaborate with peers, and develop skills that are beneficial beyond the gaming world.
Benefits of Playing drift games unblocked
Stress Relief: For students juggling a demanding academic schedule, unblocked games provide a much-needed break. Engaging in play can reduce stress and enhance overall well-being.
Social Interaction: Many unblocked games allow for multiplayer modes, enabling students to connect with friends or even make new ones. This social aspect is particularly valuable in school settings, fostering teamwork and collaboration.
Skill Development: Numerous unblocked games require strategic thinking, quick reflexes, and problem-solving abilities. These skills can translate to academic success, making gaming a potentially productive pastime.
Creativity Boost: Games that allow for customization and creative expression can inspire students to think outside the box, enhancing their creative skills.
Popular Genres of drift games unblocked Premium Games
Action and Adventure: Games that provide thrilling narratives and exciting challenges, often featuring iconic characters and rich worlds. Titles like "Among Us" or "Minecraft" have gained immense popularity in unblocked formats.
Puzzle and Strategy: These games challenge players to think critically and plan ahead, with examples including "2048" and "Bloons Tower Defense."
Simulation: Games like "The Sims" or "Animal Crossing" let players create and manage their virtual lives, promoting creativity and organization.
Sports and Racing: Titles such as "Basketball Stars" and "Slope" offer fast-paced action and competitive gameplay, appealing to sports enthusiasts.
Conclusion
drift games unblocked premium games represent a dynamic intersection of fun and education, providing students with a unique platform to unwind while also honing valuable skills. As educational institutions continue to grapple with balancing entertainment and learning, these games offer a solution that can enhance the school experience. By integrating gaming into their downtime, students can enjoy the thrill of play while developing critical skills, making unblocked premium games a worthwhile addition to any educational setting.

dfasf


httpcache is used, but X-Ratelimit-Remaining is still decreasing

I configured httpcache for the client
	cacheClient := httpcache.NewMemoryCacheTransport()
	githubClient = github.NewClient(cacheClient.Client()).WithAuthToken(strings.TrimSpace(password))

Although the same data was accessed, it was found that the speed limit was still decreasing.
g.Infow("_resp rate limit", "limit", _resp.Rate)

Has anyone tested other ways?

This can be achieved by reusing the httpcacche client.


Option to exclude touchpad/pointer devices

Currently, keyd breaks the touchpad on Asahi Linux. This Reddit post describes it quite well: Debugging touchpad issues with keyd remapper.
Rather than figuring out a fix on either the kernel or libinput, since I'm not using keyd for any touchpad handling, is there a way (perhaps a flag?) for keyd to disable handling touchpad/pointer devices entirely?

It seems like * excludes mice already.

Yes, mouse support is experimental (and usually breaks on touchpads), which is why it is disabled by default. However, laptops will often group other keys into the touchpad device which can cause keyd to misidentify them as keyboards. If this happens (which can be verified by inspecting the daemon output) you can explicitly exclude them by adding -<id> to your ids section.

Should this behavior be documented somewhere in the README?

Indeed, I've added a note to the man page.


Archive To File Missing Traceability

If using the archive to separate file option, the appended tasks could not be assigned to the original note. Inside this archive file, the archiver plugin should create sub-headings based on the title of the original file. Under this sub-headings the archived tasks should be moved automatically. This could be a great way to built a big archive with structure and traceability.
Alternatively a backlink to the original note could be appended to the archived task.

Another idea - Send completed tasks in multiple files to a single archive and separate them by file name headers or other way.


refactor: remove nest asyncio

In this PR, i removed nest_asyncio from the client.
Reason:

This is blocking the integration with libraries & Jina, both use coroutine functions and raised exceptions.
The latest jupyter-notebook support asyncio see here.

@mapleeit yes


Do not add missing "./" to relative path.

I don't really think that implicitly adding "./" to the module path is a good idea. In my opinion it is much better to let webpack handle this task (resolving module path). By default webpack looks for module with relative path through the all resolve.root[] places (which is very usefull for me), but when we add "./" implicitly, it removes such abilities.

Current coverage is 93.33% (diff: 100%)

Merging #29 into master will decrease coverage by 0.78%

@@             master        #29   diff @@
==========================================
  Files             1          1
  Lines            17         15     -2
  Methods           5          5
  Messages          0          0
  Branches          3          2     -1
==========================================
- Hits             16         14     -2
  Misses            1          1
  Partials          0          0

Powered by Codecov. Last update 49e7ce5...4befd9d


Added .github support files - Fixes #245

These files were copied over from xFailOverCluster with the resource names corrected.

This change is

Codecov Report

Merging #246 into dev will not change coverage.
The diff coverage is n/a.

@@         Coverage Diff         @@
##            dev   #246   +/-   ##
===================================
  Coverage    97%    97%
===================================
  Files        17     17
  Lines      1321   1321
===================================
  Hits       1284   1284
  Misses       37     37

Reviewed 4 of 4 files at r1.
Review status: all files reviewed at latest revision, 1 unresolved discussion.

.github/PULL_REQUEST_TEMPLATE.md, line 5 at r1 (raw file):

Please prefix the PR title with the resource name, i.e. 'xIPAddress: My short description'
If this is a breaking change, then also prefix the PR title with 'BREAKING CHANGE:', i.e. 'BREAKING CHANGE: xDFSNamespaceFolder: My short description'

Wrong resource name here.

Comments from Reviewable

Doh! Good catch - careless of me!

Review status: 3 of 4 files reviewed at latest revision, 1 unresolved discussion.

.github/PULL_REQUEST_TEMPLATE.md, line 5 at r1 (raw file):
Previously, johlju (Johan Ljunggren) wrote…
Wrong resource name here.

Done.

Comments from Reviewable

Reviewed 1 of 1 files at r2.
Review status: all files reviewed at latest revision, all discussions resolved.

Comments from Reviewable


[Windows 11] Video comes black screen.

My code here:
import 'package:flutter/material.dart';

import 'package:media_kit/media_kit.dart'; // Provides [Player], [Media], [Playlist] etc.
import 'package:media_kit_video/media_kit_video.dart'; // Provides [VideoController] & [Video] etc.

late VideoController controller;
final player = Player();

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  // Necessary initialization for package:media_kit.
  MediaKit.ensureInitialized();
  controller = await VideoController.create(
    player.handle,
    enableHardwareAcceleration: false,
    width: 1920,
    height: 1080,
  );

  runApp(
    const MaterialApp(
      home: MyScreen(),
    ),
  );
}

class MyScreen extends StatefulWidget {
  const MyScreen({Key? key}) : super(key: key);
  @override
  State<MyScreen> createState() => MyScreenState();
}

class MyScreenState extends State<MyScreen> {
  @override
  void initState() {
    super.initState();
    // Play a [Media] or [Playlist].
    player.open(Media('https://www.w3schools.com/html/movie.mp4'));
  }

  @override
  void dispose() {
    player.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Center(
      child: SizedBox(
        width: 1920,
        height: 1080,
        // Use [Video] widget to display video output.
        child: Video(
          controller: controller,
          width: 1920,
          height: 1080,
        ),
      ),
    );
  }
}

The video becomes black screen, but audio is normal.

Debug log:
Launching lib\main.dart on Windows in debug mode...
√ Built build\windows\x64\runner\Debug\bilibili.exe
package:media_kit_libs_windows_audio registered.
package:media_kit_libs_windows_video registered.
Connecting to VM Service at ws://<IP_ADDRESS>:9653/M7y1ANW-jG0=/ws
Connected to the VM Service.
AMD Radeon(TM) Graphics
media_kit: ANGLESurfaceManager: Direct3D Feature Level: 11_0
1920 1080
media_kit: VideoOutput: Create Texture:<PHONE_NUMBER>600
media_kit: VideoOutput: std::future_status::ready
media_kit: VideoOutput: Using H/W rendering. // I already use enableHardwareAcceleration: false, but still use hw?
[ERROR:flutter/shell/common/shell.cc(1065)] The 'com.alexmercerind/media_kit_video' channel sent a message from native to Flutter on a non-platform thread. Platform channel messages must be sent on the platform thread. Failure to do so may result in data loss or crashes, and must be fixed in the plugin or application code creating that channel.
See https://docs.flutter.dev/platform-integration/platform-channels#channels-and-platform-threading for more information.
flutter: VideoOutput.Resize
flutter: {handle:<PHONE_NUMBER>664, id:<PHONE_NUMBER>600, rect: {height: 1080, left: 0, top: 0, width: 1920}}
flutter: VideoController: Texture ID:<PHONE_NUMBER>600
Application finished.

AMD Ryzen 9 5900HX with Radeon Graphics
NVDIA GeForce RTX 3070 Laptop GPU

Also try to run with flutter run  --no-enable-impeller -v (and select windows platform later), with no effect.

Flutter version?

Flutter version?

Channel stable, 3.24.4

Try to use the build we have provided: https://github.com/media-kit/media-kit/releases/tag/media_kit-v1.1.10
Does it work?

???

Success. (I've changed the urls because of some network problems.)

Can you build using main branch?

dependency_overrides:
  media_kit:
    git:
      url: https://github.com/media-kit/media-kit
      path: media_kit
  media_kit_video:
    git:
      url: https://github.com/media-kit/media-kit
      path: media_kit_video
  media_kit_libs_video:
    git:
      url: https://github.com/media-kit/media-kit
      path: libs/universal/media_kit_libs_video

Works well.


Date widget inside list widget not showing default date value

- Do you want to request a feature or report a bug?
- What is the current behavior?
- If the current behavior is a bug, please provide the steps to reproduce.
- What is the expected behavior?

- Please mention your CMS, node.js, and operating system version.

- Please link or paste your config.yml below if applicable.
I have a list widget with each item containing multiple date fields. However, all date fields other than the last field are initially blank instead of showing the default value (the current date in this case). I am using CMS version 1.2.0 according to my browser console.
Here is a link to my config.yml:
config.yml

Hi @thebetternewt
I have just tried to replicate the problem, but I don't see any issues. All the dates are displaying as expected. Are you still having issues?

This seems to be fixed in 1.3.5, not sure where the fix actually occurred. Please comment if you're still able to reproduce.

Hi. Sorry for the delayed response. Yes I thought this issue was already confirmed and fixed. I did not realize the issue was still open. It has been working for a while now. Thanks your your help!

I can still reproduce this using the original config:
collections:
  - label: "Settings"
    name: "Settings"
    files:
      - name: "date_settings"
        label: "Date Settings"
        file: "data/date_settings.json"
        description: "Set blackout dates"
        fields:
          - label: "Blackout Dates"
            name: "blackout_dates"
            widget: "list"
            fields:
              - {label: "Note", name: "note", widget: "string"}
              - {label: "Start Date", name: "start_date", widget: "date"}
              - {label: "End Date", name: "end_date", widget: "date"}

When a new list item is created, the Date widget calls onChange to set its default.
The nested default is set using this code:
https://github.com/netlify/netlify-cms/blob/1a3454f244b1e1a190f24fe2acfb9b1583446bc6/src/components/EditorWidgets/List/ListControl.js#L163
For some reason, when the list is first being created, getObjectValue returns an empty Map on every call. Therefore, when there are multiple widgets in the list item, only the last one will have remain (1 will overwrite 2, 2 will overwrite 3, etc.).

@erquhart  ping!!!

@barthc sorry about that, yes!


VPAID Creative error

Hi,
We're getting an error with a known-working ad:
Ad error: AdError 901: An unexpected error occurred within the VPAID creative. Refer to the inner error for more info. Caused by: Error: Error: null
This is an ad URL that is currently working within JWPlatform, but is unfortunately erroring out with videojs + videojs-contrib-ads + videojs-ima.
You can see what we're running into here:
http://feature.dailycaller.com/vidtest.html
When I use the same code with the test ad from the google-ima sample, it's working:
http://feature.dailycaller.com/vidtest2.html
So it seems there's some specific incompatibility between what the ad expects (and gets from JWPlatform), and what it gets from videojs-ima.
I think we're pulling ads from networks so there's no contact with any developers I can make, but I'm confirming this with our ad team.

Hi there,
It looks like your ad requires insecure VPAID mode, which you can enable in your plugin options with
vpaidMode: google.ima.ImaSdkSettings.VpaidMode.INSECURE

Even with that though, I'm seeing an error from the ad itself, do you know what could be causing this within the ad?
"AdOnLoad ERROR!! Error: swfobject failed to create object in element"

Thanks for the vpaidMode suggestion. I'll add that.
As for that other part, I'm not sure.  Ad guy confirmed we're using network ads for these.

Looks like setting the mode to INSECURE is still leading to security issues:
XMLHttpRequest cannot load http://bs.serving-sys.com/BurstingPipe/adServer.bs?cn=is&c=23&pl=VAST&pli=16538558&PluID=0&pos=4677&ord=1726378819&cim=1. A wildcard '*' cannot be used in the 'Access-Control-Allow-Origin' header when the credentials flag is true. Origin 'http://imasdk.googleapis.com' is therefore not allowed access. The credentials mode of an XMLHttpRequest is controlled by the withCredentials attribute.
That's what I'm now seeing in http://feature.dailycaller.com/vidtest.html

I don't think this is a result of the INSECURE setting, I just think you might be getting further into your ad execution that you did before so you weren't seeing this before. I know it seems like it would be a result of INSECURE because now you're getting a security error, but what this is saying is that you're using a wildcard in your Access-Control-Allow-Origin header on the ad server, and that's not allowed because we make our requests using credentials. You'll have to talk to your ad server to get them to explicitly allow imasdk.googleapis.com in their Access-Control-Allow-Origin header.

Turns out the ad was actually busted, apologies.


Improve Data Parsing

[x] Auto-Detect Separator
[ ] Auto-Detect Header
[ ] Auto-Detect Decimal Separator ( 3.00 vs 3,00)

Failure - no header
1	2	3	4	Forge
3,6216	8,6661	-2,8073	-0,44699	0
4,5459	8,1674	-2,4586	-1,4621	0

Think the yelp dataset has a headerhttps://app.zenhub.com/files/186917455/748b61af-c0f2-4359-a04e-adb44302e8fe/download

Yes, we have more work to do in this space. This epic was tracking V1 PROSE integration and improvements (header, commas in data, etc.) These have been fixed. Closing this issue. Use #810, #811 and #656 to track further improvements.


How to enable labels with the same name?

I've looked around the documentation but wasn't able to find any information on what to do if I have labels with the same name (aka duplicates). For example, if I had a line chart and wanted to have the labels [a, b, c, a] in my x axis, my current chart would only return [a, b, c]. Is there any way I can enable duplicate labels, even if they have same data? eg (a,0) and (a,0).
My data looks like this:
[["a", 0], ["b", 1], ["c", 1], ["a", 0]]

I was able to fix it by doing something like: [["a-1", 0], ["b-1", 1], ["c-1", 1], ["a-2", 0]] and then in my xAxes, I had something that fixed my ticks. (userCallback, more found here: https://stackoverflow.com/questions/38777137/modifying-the-x-axis-labels-of-a-scatterplot-in-chart-js-2).


Why is ImgInfLoader  not performing any pre-processing? (a bit URGENT)

Hi All,
A bit urgent. Hence would really be thankful if someone with a quick answer to take the time to reply to me.
A look at the following class https://github.com/IrvingMeng/MagFace/blob/dbd0c5b587d62b3ee51933e41b68f70e0e6db8bf/inference/gen_feat.py#L52 shows that there is no pre-processing done, apart from just loading the image using cv2. In contrast, Insightface (which also uses the same meta files) performs face alignment https://github.com/deepinsight/insightface/blob/d4d4531a702e22cc7666cda2de6db53f4dc2e4db/recognition/evaluation/ijb/ijb_evals.py#L238 . While using the same meta, I am wondering why there is a difference. Am I to understand that magface does not use any pre-processing? (is there no crop+align using landmark here?)
Thanks,

Hi. MagFace requires the same pre-processing as Insightface. gen_feat.py assumes that images are already cropped and aligned offline.
If images are not processed in advance, you need to preprocess them in the dataloader.

Thanks a lot for the instant response Irving. Thanks for the great work and the repo. (just on another note, might really help if  if addition to baidu, a gdrive of IJB tar is provided. Baidu registration is getting difficult for me because it requires a phone number. I had to find an alternate location in Insightface to get the IJB tar file). Please ignore my comment if it is not relevant or feasible for reasons you know best.

IJB tar files are not provided in gdrive due to my limited access to google services. I will attempt to upload them to gdrive recently and let you know if I succeed.
Please expect late responses as the connections are truly restricted and unstable.

Hi arunsubk,
IJB files are availabel in google drive now. You can find the links in Readme.

Hi IrvingMeng,
Thanks a lot for this and also to all your responses on the thread. Really helped me move ahead with reproducing magface on IJB.
Warm regards,
Arun


logs not showing up in cloudwatch

When deploying a question answering model with later versions of python, transformers and pytorch the logs do not seem to be seen in cloudwatch. If I deploy the same model but with older python and module versions the logs can be seen in cloudwatch.
Recreate the issue
Case 1, No logs seen
Code

hub = {
  'HF_MODEL_ID':'distilbert-base-uncased-distilled-squad',
  'HF_TASK':'question-answering'
}

huggingface_model = HuggingFaceModel(
   env=hub,
   role=role,
   transformers_version="4.12.3",
   pytorch_version="1.9.1",
   py_version="py38",
)
predictor = huggingface_model.deploy(
   initial_instance_count=1,
   instance_type="ml.m5.xlarge"
)

data = {
"inputs": {
    "question": "What is used for inference?",
    "context": "My Name is Philipp and I live in Nuremberg. This model is used with sagemaker for inference."

Warning: MMS is using non-default JVM parameters: -XX:-UseContainerSupport
Model server started.

Case 2, logs visible
Code

hub = {
  'HF_MODEL_ID':'distilbert-base-uncased-distilled-squad',
  'HF_TASK':'question-answering'
}

huggingface_model = HuggingFaceModel(
   env=hub,
   role=role,
   transformers_version="4.6",
   pytorch_version="1.7",
   py_version="py36",
)
predictor = huggingface_model.deploy(
   initial_instance_count=1,
   instance_type="ml.m5.xlarge"
)

data = {
"inputs": {
    "question": "What is used for inference?",
    "context": "My Name is Philipp and I live in Nuremberg. This model is used with sagemaker for inference."
    }
}

# request
predictor.predict(data)

logs:

This is an experimental beta features, which allows downloading model from the Hugging Face Hub on start up. It loads the model defined in the env var `HF_MODEL_ID`
--
#015Downloading:   0%\|          \| 0.00/2.74k [00:00<?, ?B/s]#015Downloading: 100%\|██████████\| 2.74k/2.74k [00:00<00:00, 2.74MB/s]
#015Downloading:   0%\|          \| 0.00/451 [00:00<?, ?B/s]#015Downloading: 100%\|██████████\| 451/451 [00:00<00:00, 473kB/s]
#015Downloading:   0%\|          \| 0.00/265M [00:00<?, ?B/s]#015Downloading:   3%\|▎         \| 8.17M/265M [00:00<00:03, 81.7MB/s]#015Downloading:   6%\|▌         \| 16.5M/265M [00:00<00:03, 82.9MB/s]#015Downloading:   9%\|▉         \| 24.8M/265M [00:00<00:03, 75.2MB/s]#015Downloading:  12%\|█▏        \| 32.4M/265M [00:00<00:03, 66.9MB/s]#015Downloading:  15%\|█▍        \| 39.8M/265M [00:00<00:03, 69.1MB/s]#015Downloading:  18%\|█▊        \| 46.8M/265M [00:00<00:03, 66.9MB/s]#015Downloading:  20%\|██        \| 53.6M/265M [00:00<00:03, 64.6MB/s]#015Downloading:  23%\|██▎       \| 60.2M/265M [00:00<00:03, 65.1MB/s]#015Downloading:  25%\|██▌       \| 67.3M/265M [00:00<00:02, 66.7MB/s]#015Downloading:  29%\|██▉       \| 76.5M/265M [00:01<00:02, 74.3MB/s]#015Downloading:  32%\|███▏      \| 85.2M/265M [00:01<00:02, 78.0MB/s]#015Downloading:  35%\|███▌      \| 93.0M/265M [00:01<00:02, 76.5MB/s]#015Downloading:  39%\|███▊      \| 103M/265M [00:01<00:01, 82.1MB/s] #015Downloading:  42%\|████▏     \| 111M/265M [00:01<00:01, 82.6MB/s]#015Downloading:  45%\|████▍     \| 119M/265M [00:01<00:01, 76.1MB/s]#015Downloading:  48%\|████▊     \| 127M/265M [00:01<00:01, 75.6MB/s]#015Downloading:  51%\|█████     \| 135M/265M [00:01<00:01, 76.9MB/s]#015Downloading:  54%\|█████▍    \| 143M/265M [00:01<00:01, 71.3MB/s]#015Downloading:  57%\|█████▋    \| 150M/265M [00:02<00:01, 70.4MB/s]#015Downloading:  59%\|█████▉    \| 157M/265M [00:02<00:01, 68.8MB/s]#015Downloading:  62%\|██████▏   \| 165M/265M [00:02<00:01, 70.2MB/s]#015Downloading:  65%\|██████▍   \| 172M/265M [00:02<00:01, 68.7MB/s]#015Downloading:  67%\|██████▋   \| 179M/265M [00:02<00:01, 64.9MB/s]#015Downloading:  70%\|██████▉   \| 185M/265M [00:02<00:01, 62.4MB/s]#015Downloading:  72%\|███████▏  \| 191M/265M [00:02<00:01, 61.1MB/s]#015Downloading:  75%\|███████▍  \| 198M/265M [00:02<00:01, 63.2MB/s]#015Downloading:  78%\|███████▊  \| 206M/265M [00:02<00:00, 67.1MB/s]#015Downloading:  81%\|████████  \| 214M/265M [00:03<00:00, 71.8MB/s]#015Downloading:  83%\|████████▎ \| 222M/265M [00:03<00:00, 72.3MB/s]#015Downloading:  86%\|████████▌ \| 229M/265M [00:03<00:00, 69.9MB/s]#015Downloading:  89%\|████████▉ \| 236M/265M [00:03<00:00, 71.1MB/s]#015Downloading:  92%\|█████████▏\| 245M/265M [00:03<00:00, 76.8MB/s]#015Downloading:  95%\|█████████▌\| 253M/265M [00:03<00:00, 75.0MB/s]#015Downloading:  98%\|█████████▊\| 261M/265M [00:03<00:00, 69.5MB/s]#015Downloading: 100%\|██████████\| 265M/265M [00:03<00:00, 70.8MB/s]
#015Downloading:   0%\|          \| 0.00/466k [00:00<?, ?B/s]#015Downloading:   6%\|▌         \| 28.7k/466k [00:00<00:02, 191kB/s]#015Downloading:  45%\|████▍     \| 209k/466k [00:00<00:00, 783kB/s] #015Downloading: 100%\|██████████\| 466k/466k [00:00<00:00, 1.23MB/s]
#015Downloading:   0%\|          \| 0.00/28.0 [00:00<?, ?B/s]#015Downloading: 100%\|██████████\| 28.0/28.0 [00:00<00:00, 19.5kB/s]
#015Downloading:   0%\|          \| 0.00/232k [00:00<?, ?B/s]#015Downloading:  18%\|█▊        \| 41.0k/232k [00:00<00:00, 273kB/s]#015Downloading:  88%\|████████▊ \| 205k/232k [00:00<00:00, 750kB/s] #015Downloading: 100%\|██████████\| 232k/232k [00:00<00:00, 762kB/s]
WARNING - Overwriting /.sagemaker/mms/models/distilbert-base-uncased-distilled-squad ...
2022-03-23 14:31:16,829 [INFO ] main com.amazonaws.ml.mms.ModelServer -
MMS Home: /opt/conda/lib/python3.6/site-packages
Current directory: /
Temp directory: /home/model-server/tmp
Number of GPUs: 0
Number of CPUs: 1
Max heap size: 3234 M
Python executable: /opt/conda/bin/python3.6
Config file: /etc/sagemaker-mms.properties
Inference address: http://<IP_ADDRESS>:8080
Management address: http://<IP_ADDRESS>:8080
Model Store: /.sagemaker/mms/models
Initial Models: ALL
Log dir: /logs
Metrics dir: /logs
Netty threads: 0
Netty client threads: 0
Default workers per model: 1
Blacklist Regex: N/A
Maximum Response Size: 6553500
Maximum Request Size: 6553500
Preload model: false
Prefer direct buffer: false
2022-03-23 14:31:16,921 [WARN ] W-9000-distilbert-base-uncased-d com.amazonaws.ml.mms.wlm.WorkerLifeCycle - attachIOStreams() threadName=W-9000-distilbert-base-uncased-d
2022-03-23 14:31:17,049 [INFO ] W-9000-distilbert-base-uncased-d-stdout com.amazonaws.ml.mms.wlm.WorkerLifeCycle - model_service_worker started with args: --sock-type unix --sock-name /home/model-server/tmp/.mms.sock.9000 --handler sagemaker_huggingface_inference_toolkit.handler_service --model-path /.sagemaker/mms/models/distilbert-base-uncased-distilled-squad --model-name distilbert-base-uncased-distilled-squad --preload-model false --tmp-dir /home/model-server/tmp
2022-03-23 14:31:17,051 [INFO ] W-9000-distilbert-base-uncased-d-stdout com.amazonaws.ml.mms.wlm.WorkerLifeCycle - Listening on port: /home/model-server/tmp/.mms.sock.9000
2022-03-23 14:31:17,051 [INFO ] W-9000-distilbert-base-uncased-d-stdout com.amazonaws.ml.mms.wlm.WorkerLifeCycle - [PID] 35
2022-03-23 14:31:17,051 [INFO ] W-9000-distilbert-base-uncased-d-stdout com.amazonaws.ml.mms.wlm.WorkerLifeCycle - MMS worker started.
2022-03-23 14:31:17,051 [INFO ] W-9000-distilbert-base-uncased-d-stdout com.amazonaws.ml.mms.wlm.WorkerLifeCycle - Python runtime: 3.6.13
2022-03-23 14:31:17,052 [INFO ] main com.amazonaws.ml.mms.wlm.ModelManager - Model distilbert-base-uncased-distilled-squad loaded.
2022-03-23 14:31:17,057 [INFO ] main com.amazonaws.ml.mms.ModelServer - Initialize Inference server with: EpollServerSocketChannel.
2022-03-23 14:31:17,074 [INFO ] W-9000-distilbert-base-uncased-d com.amazonaws.ml.mms.wlm.WorkerThread - Connecting to: /home/model-server/tmp/.mms.sock.9000
2022-03-23 14:31:17,151 [INFO ] main com.amazonaws.ml.mms.ModelServer - Inference API bind to: http://<IP_ADDRESS>:8080
Model server started.
2022-03-23 14:31:17,175 [INFO ] W-9000-distilbert-base-uncased-d-stdout com.amazonaws.ml.mms.wlm.WorkerLifeCycle - Connection accepted: /home/model-server/tmp/.mms.sock.9000.
2022-03-23 14:31:17,176 [WARN ] pool-2-thread-1 com.amazonaws.ml.mms.metrics.MetricCollector - worker pid is not available yet.
2022-03-23 14:31:18,810 [INFO ] W-9000-distilbert-base-uncased-d-stdout com.amazonaws.ml.mms.wlm.WorkerLifeCycle - Model distilbert-base-uncased-distilled-squad loaded io_fd=daebe6fffed0ff6d-00000017-00000001-e136dd8f47306764-937c7c58
2022-03-23 14:31:18,816 [INFO ] W-9000-distilbert-base-uncased-d com.amazonaws.ml.mms.wlm.WorkerThread - Backend response time: 1563
2022-03-23 14:31:18,818 [WARN ] W-9000-distilbert-base-uncased-d com.amazonaws.ml.mms.wlm.WorkerLifeCycle - attachIOStreams() threadName=W-distilbert-base-uncased-d-1
2022-03-23 14:31:19,265 [INFO ] pool-1-thread-3 ACCESS_LOG - /<IP_ADDRESS>:51978 "GET /ping HTTP/1.1" 200 31
2022-03-23 14:31:24,202 [INFO ] pool-1-thread-3 ACCESS_LOG - /<IP_ADDRESS>:51978 "GET /ping HTTP/1.1" 200 0
2022-03-23 14:31:29,202 [INFO ] pool-1-thread-3 ACCESS_LOG - /<IP_ADDRESS>:51978 "GET /ping HTTP/1.1" 200 1
2022-03-23 14:31:34,202 [INFO ] pool-1-thread-3 ACCESS_LOG - /<IP_ADDRESS>:51978 "GET /ping HTTP/1.1" 200 1
2022-03-23 14:31:39,201 [INFO ] pool-1-thread-3 ACCESS_LOG - /<IP_ADDRESS>:51978 "GET /ping HTTP/1.1" 200 0
2022-03-23 14:31:44,201 [INFO ] pool-1-thread-3 ACCESS_LOG - /<IP_ADDRESS>:51978 "GET /ping HTTP/1.1" 200 0
2022-03-23 14:31:49,202 [INFO ] pool-1-thread-3 ACCESS_LOG - /<IP_ADDRESS>:51978 "GET /ping HTTP/1.1" 200 1
2022-03-23 14:31:54,202 [INFO ] pool-1-thread-3 ACCESS_LOG - /<IP_ADDRESS>:51978 "GET /ping HTTP/1.1" 200 0
2022-03-23 14:31:57,949 [INFO ] W-distilbert-base-uncased-d-1-stdout com.amazonaws.ml.mms.wlm.WorkerLifeCycle - Preprocess time - 0.028371810913085938 ms
2022-03-23 14:31:57,949 [INFO ] W-distilbert-base-uncased-d-1-stdout com.amazonaws.ml.mms.wlm.WorkerLifeCycle - Predict time -<PHONE_NUMBER>948.6992 ms
2022-03-23 14:31:57,949 [INFO ] W-9000-distilbert-base-uncased-d com.amazonaws.ml.mms.wlm.WorkerThread - Backend response time: 70
2022-03-23 14:31:57,949 [INFO ] W-distilbert-base-uncased-d-1-stdout com.amazonaws.ml.mms.wlm.WorkerLifeCycle - Postprocess time - 0.07843971252441406 ms
2022-03-23 14:31:57,950 [INFO ] W-9000-distilbert-base-uncased-d ACCESS_LOG - /<IP_ADDRESS>:51978 "POST /invocations HTTP/1.1" 200 74
2022-03-23 14:31:59,202 [INFO ] pool-1-thread-3 ACCESS_LOG - /<IP_ADDRESS>:51978 "GET /ping HTTP/1.1" 200 1
2022-03-23 14:32:04,201 [INFO ] pool-1-thread-3 ACCESS_LOG - /<IP_ADDRESS>:51978 "GET /ping HTTP/1.1" 200 0
2022-03-23 14:32:09,202 [INFO ] pool-1-thread-3 ACCESS_LOG - /<IP_ADDRESS>:51978 "GET /ping HTTP/1.1" 200 1
2022-03-23 14:32:14,202 [INFO ] pool-1-thread-3 ACCESS_LOG - /<IP_ADDRESS>:51978 "GET /ping HTTP/1.1" 200 1
2022-03-23 14:32:19,202 [INFO ] pool-1-thread-3 ACCESS_LOG - /<IP_ADDRESS>:51978 "GET /ping HTTP/1.1" 200 1
2022-03-23 14:32:24,201 [INFO ] pool-1-thread-3 ACCESS_LOG - /<IP_ADDRESS>:51978 "GET /ping HTTP/1.1" 200 0
2022-03-23 14:47:01,381 [INFO ] W-distilbert-base-uncased-d-1-stdout com.amazonaws.ml.mms.wlm.WorkerLifeCycle - Preprocess time - 0.029802322387695312 ms
2022-03-23 14:47:01,381 [INFO ] W-distilbert-base-uncased-d-1-stdout com.amazonaws.ml.mms.wlm.WorkerLifeCycle - Predict time -<PHONE_NUMBER>381.0054 ms
2022-03-23 14:47:01,381 [INFO ] W-9000-distilbert-base-uncased-d com.amazonaws.ml.mms.wlm.WorkerThread - Backend response time: 61
2022-03-23 14:47:01,381 [INFO ] W-9000-distilbert-base-uncased-d ACCESS_LOG - /<IP_ADDRESS>:51978 "POST /invocations HTTP/1.1" 200 62
2022-03-23 14:47:01,381 [INFO ] W-distilbert-base-uncased-d-1-stdout com.amazonaws.ml.mms.wlm.WorkerLifeCycle - Postprocess time - 0.08940696716308594 ms
2022-03-23 14:47:02,644 [INFO ] W-distilbert-base-uncased-d-1-stdout com.amazonaws.ml.mms.wlm.WorkerLifeCycle - Preprocess time - 0.027418136596679688 ms
2022-03-23 14:47:02,644 [INFO ] W-9000-distilbert-base-uncased-d com.amazonaws.ml.mms.wlm.WorkerThread - Backend response time: 61
2022-03-23 14:47:02,644 [INFO ] W-distilbert-base-uncased-d-1-stdout com.amazonaws.ml.mms.wlm.WorkerLifeCycle - Predict time -<PHONE_NUMBER>644.274 ms
2022-03-23 14:47:02,645 [INFO ] W-9000-distilbert-base-uncased-d ACCESS_LOG - /<IP_ADDRESS>:51978 "POST /invocations HTTP/1.1" 200 62
2022-03-23 14:47:02,645 [INFO ] W-distilbert-base-uncased-d-1-stdout com.amazonaws.ml.mms.wlm.WorkerLifeCycle - Postprocess time - 0.08702278137207031 ms
2022-03-23 14:47:03,714 [INFO ] W-distilbert-base-uncased-d-1-stdout com.amazonaws.ml.mms.wlm.WorkerLifeCycle - Preprocess time - 0.02288818359375 ms
2022-03-23 14:47:03,715 [INFO ] W-distilbert-base-uncased-d-1-stdout com.amazonaws.ml.mms.wlm.WorkerLifeCycle - Predict time -<PHONE_NUMBER>714.5115 ms
2022-03-23 14:47:03,715 [INFO ] W-9000-distilbert-base-uncased-d com.amazonaws.ml.mms.wlm.WorkerThread - Backend response time: 61
2022-03-23 14:47:03,715 [INFO ] W-distilbert-base-uncased-d-1-stdout com.amazonaws.ml.mms.wlm.WorkerLifeCycle - Postprocess time - 0.08249282836914062 ms
2022-03-23 14:47:03,715 [INFO ] W-9000-distilbert-base-uncased-d ACCESS_LOG - /<IP_ADDRESS>:51978 "POST /invocations HTTP/1.1" 200 61
2022-03-23 14:47:04,201 [INFO ] pool-1-thread-3 ACCESS_LOG - /<IP_ADDRESS>:51978 "GET /ping HTTP/1.1" 200 0

When deploying a question answering model with later versions of python, transformers and pytorch the logs do not seem to be seen in cloudwatch. If I deploy the same model but with older python and module versions the logs can be seen in cloudwatch.

You say with an older version you see logs but not with a newer one? The Cases you attached are vice versa. What is correct?

Yeah sorry, fixed it.
I can see the logs with the old versions but not with the new ones.

@ibegleris i got in touch with the SageMaker Team. I ll come back when i know something

Hi @ibegleris ,
Did you happen to try with pytorch 1.8 ?

I can confirm that with transformers_version = '4.17' and pytorch_version      = '1.10' the logs appearing again.

The issue is with the HF PT 1.9 containers not having latest version of sagemaker-inference. We are working internally to resolve this.


Why do you host the model zoo on AWS

Downloading models from AWS is slow to me, could you provide a mirror on the cloud storage of Baidu or Tencent?

Please use English for issues.

BaiduYun or Tencent Cloud are too slow for us
They do not provide direct links.

We also provide a mirror on Aliyun, please refer to the MODEL ZOO. However, it is sometimes very slow to upload the models, so some recent models are still not synchronized.

~/mmdetection$ python tools/train.py configs/cascade_rcnn_x101_32x4d_fpn_1x.py --validate
2019-07-25 10:13:28,296 - INFO - Distributed training: False
2019-07-25 10:13:30,073 - INFO - load model from: open-mmlab://resnext101_32x4d
Downloading: "https://s3.ap-northeast-2.amazonaws.com/open-mmlab/pretrain/third_party/resnext101_32x4d-a5af3160.pth" to /home/yaping/.cache/torch/checkpoints/resnext101_32x4d-a5af3160.pth
Traceback (most recent call last):
File "/home/yaping/anaconda3/envs/mmd/lib/python3.7/urllib/request.py", line 1317, in do_open
encode_chunked=req.has_header('Transfer-encoding'))
File "/home/yaping/anaconda3/envs/mmd/lib/python3.7/http/client.py", line 1229, in request
self._send_request(method, url, body, headers, encode_chunked)
File "/home/yaping/anaconda3/envs/mmd/lib/python3.7/http/client.py", line 1275, in _send_request
self.endheaders(body, encode_chunked=encode_chunked)
File "/home/yaping/anaconda3/envs/mmd/lib/python3.7/http/client.py", line 1224, in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
File "/home/yaping/anaconda3/envs/mmd/lib/python3.7/http/client.py", line 1016, in _send_output
self.send(msg)
File "/home/yaping/anaconda3/envs/mmd/lib/python3.7/http/client.py", line 956, in send
self.connect()
File "/home/yaping/anaconda3/envs/mmd/lib/python3.7/http/client.py", line 1384, in connect
super().connect()
File "/home/yaping/anaconda3/envs/mmd/lib/python3.7/http/client.py", line 928, in connect
(self.host,self.port), self.timeout, self.source_address)
File "/home/yaping/anaconda3/envs/mmd/lib/python3.7/socket.py", line 727, in create_connection
raise err
File "/home/yaping/anaconda3/envs/mmd/lib/python3.7/socket.py", line 716, in create_connection
sock.connect(sa)
TimeoutError: [Errno 110] Connection timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "tools/train.py", line 98, in
main()
File "tools/train.py", line 76, in main
cfg.model, train_cfg=cfg.train_cfg, test_cfg=cfg.test_cfg)
File "/home/yaping/mmdetection/mmdet/models/builder.py", line 43, in build_detector
return build(cfg, DETECTORS, dict(train_cfg=train_cfg, test_cfg=test_cfg))
File "/home/yaping/mmdetection/mmdet/models/builder.py", line 15, in build
return build_from_cfg(cfg, registry, default_args)
File "/home/yaping/mmdetection/mmdet/utils/registry.py", line 74, in build_from_cfg
return obj_type(**args)
File "/home/yaping/mmdetection/mmdet/models/detectors/cascade_rcnn.py", line 86, in init
self.init_weights(pretrained=pretrained)
File "/home/yaping/mmdetection/mmdet/models/detectors/cascade_rcnn.py", line 94, in init_weights
self.backbone.init_weights(pretrained=pretrained)
File "/home/yaping/mmdetection/mmdet/models/backbones/resnet.py", line 484, in init_weights
load_checkpoint(self, pretrained, strict=False, logger=logger)
File "/home/yaping/anaconda3/envs/mmd/lib/python3.7/site-packages/mmcv/runner/checkpoint.py", line 140, in load_checkpoint
checkpoint = load_url_dist(open_mmlab_model_urls[model_name])
File "/home/yaping/anaconda3/envs/mmd/lib/python3.7/site-packages/mmcv/runner/checkpoint.py", line 99, in load_url_dist
checkpoint = model_zoo.load_url(url)
File "/home/yaping/anaconda3/envs/mmd/lib/python3.7/site-packages/torch/hub.py", line 433, in load_state_dict_from_url
_download_url_to_file(url, cached_file, hash_prefix, progress=progress)
File "/home/yaping/anaconda3/envs/mmd/lib/python3.7/site-packages/torch/hub.py", line 349, in _download_url_to_file
u = urlopen(url)
File "/home/yaping/anaconda3/envs/mmd/lib/python3.7/urllib/request.py", line 222, in urlopen
return opener.open(url, data, timeout)
File "/home/yaping/anaconda3/envs/mmd/lib/python3.7/urllib/request.py", line 525, in open
response = self._open(req, data)
File "/home/yaping/anaconda3/envs/mmd/lib/python3.7/urllib/request.py", line 543, in _open
'_open', req)
File "/home/yaping/anaconda3/envs/mmd/lib/python3.7/urllib/request.py", line 503, in _call_chain
result = func(*args)
File "/home/yaping/anaconda3/envs/mmd/lib/python3.7/urllib/request.py", line 1360, in https_open
context=self._context, check_hostname=self._check_hostname)
File "/home/yaping/anaconda3/envs/mmd/lib/python3.7/urllib/request.py", line 1319, in do_open
raise URLError(err)
urllib.error.URLError: <urlopen error [Errno 110] Connection timed out>
sad!

bad

model zoo on BaiduYun：
链接：https://pan.baidu.com/s/1k72QpgXPDEx92Gdyjs6PjA
提取码：etub

@nwf5d
Thank you.
Why not ALL of them?


Request : Add custom signatures

I see the JSON file of signatures.  Would be nice if there was a way to add custom signatures.
Use same JSON format, configure by command line switch
--signatures=custom-sigs.json

You can add custom signatures with a file in your home directory.
https://github.com/michenriksen/gitrob#adding-custom-signatures


Back button issue on checkout page #6668

Issue Reference
#6668

@papnoisanjeev
This is working fine.


Cucumber datatable in karate

How to use cucumber datatable in karate for verifying expected hashmap output

@gjain3693 please use Stack Overflow for these kinds of low-effort questions please: https://stackoverflow.com/questions/tagged/karate


Automated Package Upgrade

:tada: This PR is included in version 2.2.411 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


[libass] Update to 0.15.0

Describe the pull request

What does your PR fix?
Update libass to 0.15.0

Which triplets are supported/not supported? Have you updated the CI baseline?
All triplets are supported. Just like previous version.

Does your PR follow the maintainer guide?
Yes

The CIs are failing due to harfbuzz.pc (the PkgConfig file) not found. Currently harfbuzz.pc is not installed if harfbuzz is built with CMake (harfbuzz/harfbuzz#896) and upstream has no interest in fixing this. Building harfbuzz using meson should be able to install harfbuzz.pc properly, but this is still waiting to be merged into vcpkg (#12860).

Force-pushed to rebase this PR after #15263

Check failure logs here.

The dependency PR #12860 has been merged, so pkgconfig is no longer failing.

The dependency PR #12860 has been merged, so pkgconfig is no longer failing.

/azp run

/azp run

Seems good, don't know why the pipeline didn't archived the installed file paths.
Already tested on x86-windows and x64-windows-static locally.

Seems good, don't know why the pipeline didn't archived the installed file paths.
Already tested on x86-windows and x64-windows-static locally.