[FEAT] One-to-one clustering

Is there any interest in a one-to-one clustering implementation to be included as an alternative to connected components clustering?
When you have two datasets, you can do something like this:
linker.misc.query_sql(
    f"""
    with ranked as (
        select
            unique_id_l,
            unique_id_r,
            source_dataset_l,
            source_dataset_r,
            match_probability,
            rank() over (partition by unique_id_l order by match_probability desc) as rank
        from {df_predict.physical_name}
    )
    select *
    from ranked
    where rank = 1
    """
)

but it can get much more complicated when you start thinking about it, for example:

we might want the rank condition to be symmetric (where you don't allow duplicates to form on either dataset)
there can be ties in match probability
there might be more than 2 datasets

A proposed method
I have a method in mind for doing this, it's not pull request ready but I have some code snippets I could share too. The basic idea is that you run through some iterations where you guarantee no duplicates can form at each iteration.
The representatives table at iteration i must track several things:

node_id: the id corresponding (uniquely, across all source datasets) to that record.
source_dataset the source dataset corresponding to the node_id. Unlike connected components, this can't be dropped since it's needed to determine whether links should be accepted at each iteration.
representative: a representative id for the cluster this record belongs to.

Within an iteration we calculate some extra columns for the current representatives table:

contains_{sd} a boolean value for each source_dataset name sd, indicating whether the cluster contains a record from sd. For example, with datasets A, B, and C, we'd have columns contains_A, contains_B, contains_C.

Then we determine what the neighbours at this iteration will be. For each node_id in the neighbours table, we rank all of the incoming and outgoing edges by their match probability (where the edges aren't between nodes in the same cluster). We take the edges with rank_l and rank_r equal to 1, and then we filter out any edges that would introduce a duplicate, by checking the contains_{sd} flags on each side of the edge.
Ties could be dealt with at this step, using something arbitrary like row_number() instead of rank() or by detecting then dropping tied links.
Finally, the representatives table is updated in the same way as it is in the connected components iterations (join the previous representatives table with the neighbours.
Iterations finish when the clusters stabilise, i.e. when the count of nodes where rep_match = true reaches 0. I think the way this is set it should converge in at most k-1 iterations where k is the number of datasets.

See also https://github.com/moj-analytical-services/splink/issues/251
Yes - definitely interested in adding support for this.
Another aspect is to do with the 'venn diagram' of the two datasets.  Are they known to contain exactly the same records, is one a subset of the other, or can either side contain records not in the other.  Perhaps the later is the most generally useful, because it can be used on all the other scenarios, just with some possible loss of accuracy.
If you've already got some snippets, it'd be great to see a proposed/draft solution just a a script so we can get our heads around how it works.

This is actually getting closer to a full implementation now, hopefully it makes sense. I read this review of bipartite graph matching algorithms and what I've got here is (I think) equivalent to the Exact Clustering method they describe (extended to multiple datasets).
One variation on this implementation would be to filter out the edges that would introduce a duplicate, and THEN rank them and select the mutual best links. This would accept more links, but I like the simplicity of only accepting the best links and not moving on to the next best ones if the best option is already "taken". I think this corresponds to the Unique Mapping Clustering in the paper I mentioned.
The comments from @zmbc about unique and exhaustive make a lot of sense. I think the 'unique' part of this could be captured well by an implementation like this one, by setting the list of source_datasets to the ones which should contain at most one record. I don't know how one would achieve the 'exhaustive' part, especially if there's a threshold set on the pairwise match probabilities, and there's even the chance that some records don't have any matching pairs that satisfy the blocking rules.
Aside: one technical point I was stuck on was quoting the literal value of the source dataset name to be used in a query. I used single quotes below, but I think that might only work with DuckDB! See this line:
contains_expr = ", ".join([f"max(source_dataset == '{sd}') as contains_{sd}" for sd in source_datasets])
from __future__ import annotations

import logging
import time
from typing import Optional

from splink.internals.database_api import DatabaseAPISubClass
from splink.internals.pipeline import CTEPipeline
from splink.internals.splink_dataframe import SplinkDataFrame

logger = logging.getLogger(__name__)

def one_to_one_clustering(
    nodes_table: SplinkDataFrame,
    edges_table: SplinkDataFrame,
    node_id_column_name: str,
    source_dataset_column_name: str,
    edge_id_column_name_left: str,
    edge_id_column_name_right: str,
    source_datasets: list(str),
    db_api: DatabaseAPISubClass,
    threshold_match_probability: Optional[float],
) -> SplinkDataFrame:
    """One to one clustering algorithm.

    This function clusters together records so that at most one record from each dataset is in each cluster.

    Args:

    Returns:
        SplinkDataFrame: A dataframe containing the connected components list
        for your link or dedupe job.

    """

    pipeline = CTEPipeline([edges_table])

    match_prob_expr = f"where match_probability >= {threshold_match_probability}"
    if threshold_match_probability is None:
        match_prob_expr = ""

    # Add 'reverse-edges' so that the algorithm can rank all incoming and outgoing edges
    sql = f"""
    select
        {edge_id_column_name_left} as node_id,
        {edge_id_column_name_right} as neighbour,
        match_probability
    from {edges_table.templated_name}
    {match_prob_expr}

    UNION ALL

    select
    {edge_id_column_name_right} as node_id,
    {edge_id_column_name_left} as neighbour,
    match_probability
    from {edges_table.templated_name}
    {match_prob_expr}
    """
    pipeline.enqueue_sql(sql, "__splink__df_neighbours")

    neighbours = db_api.sql_pipeline_to_splink_dataframe(pipeline)

    pipeline = CTEPipeline([nodes_table])

    sql = f"""
    select
        {node_id_column_name} as node_id,
        {node_id_column_name} as representative,
        {source_dataset_column_name} as source_dataset
    from {nodes_table.templated_name}
    """

    pipeline.enqueue_sql(sql, "__splink__df_representatives")

    prev_representatives = db_api.sql_pipeline_to_splink_dataframe(pipeline)

    iteration, needs_updating_count = 0, 1
    while needs_updating_count > 0:
        start_time = time.time()
        iteration += 1

        pipeline = CTEPipeline([neighbours, prev_representatives])

        # might need to quote the value here?
        contains_expr = ", ".join([f"max(source_dataset == '{sd}') as contains_{sd}" for sd in source_datasets])

        sql = f"""
        select
            representative,
            {contains_expr}
        from {prev_representatives.physical_name}
        group by representative
        """

        pipeline.enqueue_sql(sql, f"__splink__representative_contains_flags_{iteration}")

        sql = f"""
        select
            r.node_id,
            r.source_dataset,
            cf.*
        from {prev_representatives.physical_name} as r
        inner join __splink__representative_contains_flags_{iteration} as cf
        on r.representative = cf.representative
        """

        pipeline.enqueue_sql(sql, f"__splink__df_representatives_with_flags_{iteration}")

        duplicate_criteria = " or ".join([f"(l.contains_{sd} and r.contains_{sd})" for sd in source_datasets])

        # must be calculated every iteration since the where condition changes as the clustering progresses
        sql = f"""
        select
            neighbours.node_id,
            neighbours.neighbour,
            {duplicate_criteria} as duplicate_criteria,
            row_number() over (partition by l.representative order by match_probability desc) as rank_l,
            row_number() over (partition by r.representative order by match_probability desc) as rank_r,
        from {neighbours.physical_name} as neighbours
        inner join __splink__df_representatives_with_flags_{iteration} as l
        on neighbours.node_id = l.node_id
        inner join __splink__df_representatives_with_flags_{iteration} as r
        on neighbours.neighbour = r.node_id
        where l.representative <> r.representative
        """

        # note for the future: a strategy to handle ties would go right here.

        pipeline.enqueue_sql(sql, f"__splink__df_ranked_{iteration}")

        sql = f"""
        select
            node_id,
            neighbour
        from __splink__df_ranked_{iteration}
        where rank_l = 1 and rank_r = 1 and not duplicate_criteria
        """

        pipeline.enqueue_sql(sql, f"__splink__df_neighbours_{iteration}")

        sql = f"""
        select
        source.node_id,
        min(source.representative) as representative
        from
        (
            select
                neighbours.node_id,
                repr_neighbour.representative as representative,
            from __splink__df_neighbours_{iteration} as neighbours
            left join {prev_representatives.physical_name} as repr_neighbour
            on neighbours.neighbour = repr_neighbour.node_id

            union all

            select
                node_id,
                representative
            from {prev_representatives.physical_name}
        ) AS source
        group by source.node_id
        """

        pipeline.enqueue_sql(sql, f"r")

        sql = f"""
        select
            r.node_id,
            r.representative,
            repr.source_dataset,
            r.representative <> repr.representative as needs_updating
        from r
        inner join {prev_representatives.physical_name} as repr
        on r.node_id = repr.node_id
        """

        pipeline.enqueue_sql(sql, f"__splink__df_representatives_{iteration}")

        representatives = db_api.sql_pipeline_to_splink_dataframe(pipeline)

        prev_representatives.drop_table_from_database_and_remove_from_cache()
        prev_representatives = representatives

        pipeline = CTEPipeline()

        # assess if the exit condition has been met
        sql = f"""
        select
            count(*) as count_of_nodes_needing_updating
        from {representatives.physical_name}
        where needs_updating
        """

        pipeline.enqueue_sql(sql, "__splink__df_root_rows")

        root_rows_df = db_api.sql_pipeline_to_splink_dataframe(
            pipeline, use_cache=False
        )

        root_rows = root_rows_df.as_record_dict()
        root_rows_df.drop_table_from_database_and_remove_from_cache()
        needs_updating_count = root_rows[0]["count_of_nodes_needing_updating"]
        logger.info(
            f"Completed iteration {iteration}, "
            f"num representatives needing updating: {needs_updating_count}"
        )
        end_time = time.time()
        logger.log(15, f"    Iteration time: {end_time - start_time} seconds")

    return representatives

# now test out with an example

import duckdb
import pandas as pd

from splink import DuckDBAPI, Linker

logger.setLevel(10)

nodes = pd.DataFrame({
    "unique_id":      [  0,  1,   2,   3,   4,   5,   6,   7,   8],
    "source_dataset": ['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c'],
})

edges = pd.DataFrame({
    "unique_id_l":       [  0,   1,   3,   4,   6,   6],
    "unique_id_r":       [  1,   2,   5,   5,   5,   7],
    "match_probability": [.90, .70, .85, .90, .80, .70],
})

db_api = DuckDBAPI()
df_nodes = db_api.register_table(nodes, "nodes")
df_edges = db_api.register_table(edges, "edges")

df_clusters = one_to_one_clustering(
    nodes_table=df_nodes,
    edges_table=df_edges,
    node_id_column_name="unique_id",
    source_dataset_column_name="source_dataset",
    edge_id_column_name_left="unique_id_l",
    edge_id_column_name_right="unique_id_r",
    source_datasets=['a', 'b', 'c'],
    db_api=db_api,
    threshold_match_probability=None,
)

df_clusters.as_pandas_dataframe()

Actually, now that I look at the code a bit closer, I'm a bit confused about rank_l and rank_r -- those are ranks regardless of source dataset, right? IIRC there are some assumptions you can make in Splink about which source dataset will be on the left and right, but if you had datasets A, B, and C, wouldn't this prevent A1 <--> B1 and A1 <--> C1 from both linking? Might not matter if B1 <--> C1 links, but it might not (maybe there is more missingness in B1 and C1).

@zmbc it does rank them regardless of source dataset. If you have A1 <--> B1 with a higher weight than A1 <--> C1, then after the first iteration A1 and B1 will have the same representative, and the ranking is over links where the two records have different representatives, so A1 <--> B1 is excluded from the ranking in the second iteration, leaving A1 <--> C1 free to link.
If you partition by source dataset too, you can get situations like A1 <--> B1, B1 <--> C1, and A2 <--> C1 all being accepted, creating an implicit duplicate between A1 and A2.

Ah! This is subtle and tricky to think through. Certainly if the datasets were totally scrambled between left and right, you could get A1 <--> B1, B1 <--> A2 (where the left and right there reflect the left and right tables). I think the key assumption here is that there is a valid ordering of the datasets D1, D2, D3, etc such that if DN is compared with DM, DN is on the left if and only if N < M.
A record in DN could only be linked to another record in DN if there were a loop of links back to DN. If our record if interest is linked to a record in DM, where M > N, that record in DM can only link again in the same iteration if it is on the left, which means it must link with a dataset DX where X > M. Iterating this can never lead back to DN.

It is tricky! I had to draw quite a few diagrams to think through different examples.
I can see the logic of what you're saying, but even with an ordering of the datasets it doesn't work to partition by representative and source_dataset. Examples like the one I gave before (with the ordering A < B < C) involve a kind of "leapfrogging", i.e. the links A1 -> B1, B1 -> C1, and A2 -> C1 all respect the ordering you described, but you'd end up with all four records in the same cluster eventually.
The approach I used in the code was to ensure that there are no chains of links at all within the one iteration. For two records A1 and B1 that link, you can be sure that A1 links to nothing else and B1 links to nothing else. Then it's just a matter of checking that merging the cluster that A1 belongs to and the cluster that B1 belongs to doesn't implicitly form a duplicate in one of the source datasets.

Sorry, let me clarify. I'm saying that it is necessary both to partition by representative only (not dataset) and to have an ordering that determines left and right records. If you don't have that second assumption, your rank_r and rank_l can't catch everything. I just wanted to state that assumption explicitly (and why it works). Do you know if the ordering is guaranteed by Splink, and is it documented?

To state a bit more explicitly what I think your comment is missing -- you
can form chains in one iteration, when the number of datasets > 2. You
could have A1 <--> B1, and B1 <--> C1, and C1 <--> D1, all in one
iteration, because each record that is linking twice is appearing once on
the left and once on the right.
On Wed, Dec 18, 2024, 3:52 PM Aymon Wuolanne @.***>
wrote:

It is tricky! I had to draw quite a few diagrams to think through
different examples.
I can see the logic of what you're saying, but even with an ordering of
the datasets it doesn't work to partition by representative and
source_dataset. Examples like the one I gave before (with the ordering A <
B < C) involve a kind of "leapfrogging", i.e. the links A1 -> B1, B1 -> C1,
and A2 -> C1 all respect the ordering you described, but you'd end up with
all four records in the same cluster eventually.
The approach I used in the code was to ensure that there are no chains of
links at all within the one iteration. For two records A1 and B1 that link,
you can be sure that A1 links to nothing else and B1 links to nothing else.
Then it's just a matter of checking that merging the cluster that A1
belongs to and the cluster that B1 belongs to doesn't implicitly form a
duplicate in one of the source datasets.
—
Reply to this email directly, view it on GitHub
https://github.com/moj-analytical-services/splink/issues/2562#issuecomment-2552483882,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ADF5EUASJTQ3XFGZIKEPDGT2GIDDFAVCNFSM6AAAAABTVDPIH2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDKNJSGQ4DGOBYGI
.
You are receiving this because you were mentioned.Message ID:
@.***>

Oh I see, sorry! The code I've got adds in the reverse edges too, so in the case of A1 <--> B1 and B1 <--> A2 the edges B1 <--> A1 and A2 <--> B1 are also included when the ranking happens, so you only get one of those links accepted. In the example of A1 -> B1 and B1 -> C1 you'd also only be able to accept one of the two, since one of them will have rank 2 with respect to B1.
Just to lay it out very explicitly, this is what the ranked table might look like:

id_l
id_r
probability
rank_l
rank_r

A1
B1
0.90
1
1

B1
A1
0.90
1
1

B1
C1
0.80
2
1

C1
B1
0.80
1
2

I think it's better to not rely on the ordering of the datasets, though I believe it is guaranteed with the way the blocking code works.

Ah, I see, I missed that. I guess what I said above is a potential
optimization, then, if we can assume an ordering of the datasets :)
On Wed, Dec 18, 2024, 4:43 PM Aymon Wuolanne @.***>
wrote:

Oh I see, sorry! The code I've got adds in the reverse edges too, so in
the case of A1 <--> B1 and B1 <--> A2 the edges B1 <--> A1 and A2 <--> B1
are also included when the ranking happens, so you only get one of those
links accepted. In the example of A1 -> B1 and B1 -> C1 you'd also only be
able to accept one of the two, since one of them will have rank 2 with
respect to B1.
Just to lay it out very explicitly, this is what the ranked table might
look like:
id_l id_r probability rank_l rank_r
A1 B1 0.90 1 1
B1 A1 0.90 1 1
B1 C1 0.80 2 1
C1 B1 0.80 1 2
I think it's better to not rely on the ordering of the datasets, though I
believe it is guaranteed with the way the blocking code works.
—
Reply to this email directly, view it on GitHub
https://github.com/moj-analytical-services/splink/issues/2562#issuecomment-2552540512,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ADF5EUEOIENMR37QR4I7YID2GIJENAVCNFSM6AAAAABTVDPIH2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDKNJSGU2DANJRGI
.
You are receiving this because you were mentioned.Message ID:
@.***>


Typo in uperf tasks for VM run

During uperf run using OpenShift Virtualization, typo found which prevents changing the client state to "Clients Running" in the operator.

Can one of the admins verify this patch?


Walkthrough: fixed typo on state class selectors

Added spaces after the .isLoggedIn state class to match the DOM structure on the Approach #2: Toggling State (.is) classes section.
Fixes #11.
Note: in the question Which selectors are allowed? I changed just one of the examples (the first one) so we could display both cases to expand it a little.

This is great, thanks :+1:


QNIC-based, fully blocking circuit switching

The goal
Fully blocking circuit switched resource allocation with released random backoff on failure
in order to avoid dead lock
Tasks

[ ] Add to "Q node" ( or "QNIC" ) "Allocated" flag.

[ ] modify Connection manager to handle massage to test and set allocated flag
""" Example pseudo code
if(! allocated){
allocate
( continue processing )
}else{
send reject request
( about processing )
}
"""

[ ] define reject setup request message type

[ ] Connection manager :: handle massage extend to handle
""" Example pseudo code
Reject:
Allocated -> False
"""

[ ] random backoff
"""
if ( EndNode ):
sleep( random ) // send yourself a message to the future
try again
""""

[ ] Limit the lifetime of a connection

set the parameter for that.

[ ] Implement connection tear down

Do we need new message type?
clear allocated flag

A couple of useful comments over at #24, but probably outdated now.
Notes available at
https://hackmd.io/ruP6-gCmQh6zoApdXz8DRw?view

Looks pretty awesome!
One problem: if I'm interpreting the animation right, QNIC reservations are only created on the receiving QNICs. However, both the inbound and outbound QNICs need to be reserved. Otherwise, two requests that are going in opposite directions on the same link could wind up double-reserving the link.

ConnectionRequests from EndNodes 3, 4, and 5 all pass through Router2, all planning to use the Router2-->Router1 link.  But the Reject message comes from Router1, when it ought to be from Router2.

I think,
we have connections
node3 <---> router2 port1
node4 <---> router2 port2
node5 <---> router2 port3
So, when the request goes to router2, it's fine. All end nodes will be accepted.
But when packet goes to router1,
router2 port4 <----> router1 port1
there is only one connection it can establish.
So, we have to choose one of three connections from above.

Yes, the bottleneck is the link router2<-->router1 link, but router2 should recognize that and reject two of the connections.  The problem is that the rejection seems to be coming from Router1.
With timestamps (upper right corner):

Close this issue and make issues for left things.


Prevent panic when logger is not initialised

Using mpLog in the error handler for loadConfig() can cause a panic because this function is where the logger is initialised, and initialisation may not have occured yet.
error parsing config file: /home/jholdstock/harness/pool/pool.conf:15: unknown option: backup
Use dcrpool -h to show usage
2020-02-23 18:41:02.940 [ERR] MP: /home/jholdstock/harness/pool/pool.conf:15: unknown option: backup
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x28 pc=0xa64506]

goroutine 1 [running]:
github.com/jrick/logrotate/rotator.(*Rotator).Write(0x0, 0xc0000ce200, 0x65, 0x78, 0x65, 0x0, 0x0)
        /home/jholdstock/code/gopath/pkg/mod/github.com/jrick/logrotate@v1.0.0/rotator/rotator.go:133 +0x26
main.logWriter.Write(0xc0000ce200, 0x65, 0x78, 0x43, 0xc0001d88f0, 0x0)
        /home/jholdstock/code/jholdstock/dcrpool/log.go:26 +0x7d
github.com/decred/slog.(*Backend).print(0xc0004d0b40, 0xc482a3, 0x3, 0xc480ed, 0x2, 0xc0001b9b70, 0x1, 0x1)
        /home/jholdstock/code/gopath/pkg/mod/github.com/decred/slog@v1.0.0/log.go:283 +0x25f
github.com/decred/slog.(*slog).Error(0xc0004d0b60, 0xc0001b9b70, 0x1, 0x1)
        /home/jholdstock/code/gopath/pkg/mod/github.com/decred/slog@v1.0.0/log.go:425 +0x85
main.main()
        /home/jholdstock/code/jholdstock/dcrpool/dcrpool.go:182 +0x137

To recreate, add an invalid config item to dcrpool.conf
loadConfig() already contains its own logging to stdout, so we don't need the line removed by this PR anyway.

Good catch.


feat(STONEINTG_452): check build PLR is signed and not annotated

Description
Add verification that build PLR is signed and not annotated by Snapshot
Issue ticket number and link
Type of change

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration
Checklist:

[ ] I have performed a self-review of my code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] I have added meaningful description with JIRA/GitHub issue key(if applicable), for example HASSuiteDescribe("STONE-123456789 devfile source")
[ ] I have updated labels (if needed)

/retest

/retest

/retest

/retest

/retest

/test redhat-appstudio-e2e

/test redhat-appstudio-e2e


Remove AI_ADDRCONFIG flag from getAddrInfo hints

Do not use AI_ADDRCONFIG flag in getAddrInfo hints as it cannot handle '<IP_ADDRESS>' on IPv6-only machines.

Ok. Why would we have had it there in the first place? I assume there was a reason. I'd like to know what behaviour that was supplying before we remove the flag.

So I dug back, and AF_ADDRCONFIG was added in https://github.com/istathar/http-streams/commit/1d22ad130747680142542bd26e137c6183579a3b. It seems likely similar to the kind of issue that appeared in Firefox for example. Documentation for getaddrinfo() https://man7.org/linux/man-pages/man3/getaddrinfo.3.html talks about the interaction between this flag, loopback, and IPv6 addresses.

This PR was made in a hurry, I should have added more context, sorry about that. So, the problem we are facing is that on IPv6-only nodes, getaddrinfo() with AI_ADDRCONFIG will fail to yield any results for nodenames such as <IP_ADDRESS> and localhost4. Since Debian introduced IPv6 only builders, we noticed that tests for various Haskell packages started to fail because of this (see bug reports for yesod-core and haskell-http-conduit as an example). So, we tried to remove AI_ADDRCONFIG from Haskell packages (see http-client, streaming-commons and irc-core for some examples). Also, this is a great reading about why AI_ADDRCONFIG is poorly implemented on linux.


white color doesn't work with dark theme.

[✓] I have verified the issue exists on the latest version
[✓] I am able to reproduce it

Version used:
1.7.0
Android version:
All
If app needs white color for target circle and title/description, but the theme is "dark", then it is not achievable since as per the 'TapTargetView' source code,
        final int targetCircleColor = target.targetCircleColorInt(context);
        if (targetCircleColor != UNSET_COLOR) {
            targetCirclePaint.setColor(targetCircleColor);
        } else {
            targetCirclePaint.setColor(isDark ? Color.BLACK : Color.WHITE);
        }

Because from Color - Android Source Code the value of white color value is "-1" in .class file. Which makes the above condition false since value of "UNSET_COLOR" is also -1.

Thanks for the report. The library should use something like Integer.MIN_VALUE instead, I'll fix it tomorrow


improve docker-compose example

The original docker-compose example didn't work for me. Proposing an improved compose where the migrate command is run inline instead of manually.
Description
Update the example docker-compose file to run the "migrate" step automatically, instead of having to do that in a separate shell command (which didn't work when I attempted it)
References
Review Checklist

[x] I have added documentation for new/changed functionality in this PR or in a PR to openfga.dev [Provide a link to any relevant PRs in the references section above]
[x] The correct base branch is being used, if not main
[x] I have added tests to validate that the change in functionality is working as expected

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

@trondhindenes - do you mind making the corresponding changes in https://github.com/openfga/openfga/blob/main/docker-compose.yaml?  The example in the document should match the product code.  TY!

@adriantam of course!

Thanks for your contribution @trondhindenes!


Common pagination twig displays 0 for first page of results

The _common/pagination.html.twig renders pagination buttons, the middle of which displays the current page number.
The first page is indexed 0 resulting in a label "Page 0".
I think it would be better for users if pages were labelled 1 .. n even though they are indexed 0 .. n.

Issue already handled elsewhere by incrementing page value in controller.


Data pack errors in 1.19.2

Can't open a (single player) world, new or existing, in 1.19.2. Throws a data pack error. Checked with the following and no other mods:
Forge 43.1.47
Apotheosis 1.19.2-6.0.1
Placebo 1.19.2-7.0.1
https://pastebin.com/ruNG0Vuh

Duplicate of #688


[P2P Distance] Implement bottom up flow rate updates in Auth

Implement the bottom up flow rate updates in Auth following this plan
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~01827ce4ed3e5a3729
Upwork Job ID:<PHONE_NUMBER>121115136
Last Price Increase: 2024-02-20

Still on hold for a while

We could start working on the backend even if the frontend isn't quite ready yet.

Still focused on higher priorities, this is available for volunteers! @Beamanator this one is all Auth so there shouldn't be any 1:1:1 issues in your way if you would like to pick this up.

No pressure though, I don't want you to feel spread too thin

Sadly I can't prioritize at the moment, but maaaaaybe next week

Waiting until this becomes more important

Still not a priority

Still haven't had time for this, probably won't for a while 🫤

Still on hold. I plan to finish distance splits for this project, then check if the team is cool with slowly chipping away at the remaining work to finish it or if it should be paused indefinitely.

Distance splits is almost done, going to pick this up next.

I'm still focused on splits, but plan to jump on this right after, hopefully in the next week or two.

I got a little start on this. It's feeling pretty achievable.

I'm going to close this issue since it's for the backend side of things, which are now done. I have created a new issue for the frontend part and assigned it to you [$250] [P2P Distance] Add RBR logic for the bottom up flow.


App crashes when loading a massive of photos

Hi, Is there a way to load massive photos. Currently the app crashes when loading a folder which contains many pictures.
I add fileStream.Dispose();, but it seems useless.
public async static Task<ImageFileInfo> LoadImageInfo(StorageFile file)
        {
            // Open a stream for the selected file.
            // The 'using' block ensures the stream is disposed
            // after the image is loaded.
            using (IRandomAccessStream fileStream = await file.OpenReadAsync())
            {
                // Create a bitmap to be the image source.
                BitmapImage bitmapImage = new BitmapImage();
                bitmapImage.SetSource(fileStream);

                var properties = await file.Properties.GetImagePropertiesAsync();
                ImageFileInfo info = new ImageFileInfo(
                    properties, file, bitmapImage,
                    file.DisplayName, file.DisplayType);
                fileStream.Dispose();
                return info;
            }
        }

Hi hupo376787! Thanks for the feedback. We just made an update that addresses this issue. The sample now loads images from the Pictures library (not including OneDrive pictures - we're still looking at that area) and uses data virtualization to handle the case when there are very many files. I hope this helps!


tslint -t vso ./src/**/*.ts   fails  on running 'yo botbuilder-enterprise'

Project
Name: Enterprise Bot Template
Language:  TypeScript
Description
Running 'yo botbuilder-enterprise' fails at below step:
tslint -t vso ./src/**/*.ts
With this error attached:
error.txt
npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR<EMAIL_ADDRESS>lint: tslint -t vso ./src/**/*.ts
npm ERR! Exit status 2
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>lint script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
To Reproduce
run  'yo botbuilder-enterprise'  to create a new enterpris_bot project
Expected behavior
Error should not be encountered
Screenshots

Additional context

Hi @ankurgupta325! Thank you for collaborating.
We checked that there are some TSLint errors in the solution about completed-docs rule, this is a rule that was updated after the v5.12.1 of TSLint which is set in the package.json of the Enterprise Bot Template.

We will ignore that rule in the TypeScript templates.


refactor Dockerfile & docs

This PR attempts to refactor the Dockerfile.
Main thing is to avoid having curl in the final image by fetching dependencies in a separate build stage and cleanup of separate ENV lines. Finally, a retagged python image is used.
I also started adding some docs regarding development (more later)

Looks all OK, just... curl is <1MB, that was quite some effort to shave it :D

You go me ;) I also wanted to merge the multiple ENV lines and add some empty lines to make the file (for me) more readable.

Looks all OK, just... curl is <1MB, that was quite some effort to shave it :D

You go me ;) I also wanted to merge the multiple ENV lines and add some empty lines to make the file (for me) more readable.

Yes, readability is better now :+1:


RFC: graphql@16 support

Summary
graphql-js updated to v16 (16.0.1 as of writing) recently and there are a few, minor, breaking changes. Mostly around type tweaks.
Proposed Solution
Update graphql (peer)dependency to v16, and associated types/usage.

Just checked, as expected no breaking changes, at least in our context. I've already seen the more "severe" changes when working on graphql-web-lite a while back, since that built off of<EMAIL_ADDRESS>back then, but for urql's purposes we're mostly only seeing snapshot breakage from the lacking trailing newlines in printed queries.

I just upgraded and it seems like webpack 5 (used in the context of storybook) isn't able to correctly resolve the @urql/execute-exchange package when using<EMAIL_ADDRESS>: https://github.com/FormidableLabs/urql/discussions/2139

This will be fixed in https://github.com/kitten/babel-plugin-modular-graphql/pull/4 @jgoux

This will be fixed in kitten/babel-plugin-modular-graphql#4 @jgoux

You replied 28 sec after I posted, are you a wizard? 😂
Thanks @JoviDeCroock ! 🚀


No way to specify content type for files

I am using s3-sync-client to upload some html files that are generated within an AWS Lambda.  These end up with a content type of
Content-Type | application/octet-stream
instead of
Content-Type | text/html
This causes the browser to prompt to download the file instead of opening the page.   A way to specify the content-type for all files would solve this for my use case.

Turns out you can, leaving this here for anyone else who has this need
await sync(srcDir, dstBucket, {
        commandInput: {
            ContentType: "text/html",
        },
    });


Add remark for RsaCng Key export behavior difference

Link to article:
https://docs.microsoft.com/en-us/dotnet/api/system.security.cryptography.rsacng?view=netframework-4.6
Problem:
Refer to discussion on:
https://social.msdn.microsoft.com/Forums/vstudio/en-US/10e6cf37-b8e8-497a-9ade-d7af9d9483c6/where-does-the-default-rsacngkeyexportpolicy-come-from?forum=netfxbcl
I found that on .NET Framework v4.6 or before, AllowPlaintextExport option is not passed when creating the key. This option is added as default on .NET v4.6.2 version of the source file.
Keys created without this option would encounter problem when the program try to export the private key after creation.
It would be great if we can add remark to corresponding versions to address this behavior difference.

@cheong00 Please move this issue to https://github.com/dotnet/docs/issues

Not sure why the move doesn't work as expected, I manually created new issue on:
https://github.com/dotnet/docs/issues/25342
and will close this one.


single picture with no rollover cannot be enlarged by clicking

just stays 2D on the page.

https://github.com/shadesoflight/tumblr-template-sass/commit/bfd61961f1c1ebc768a36dc90c58024b6701d36e

https://github.com/shadesoflight/tumblr-template-sass/commit/bfd61961f1c1ebc768a36dc90c58024b6701d36e


extract UploadSessionLister interface

This is a little cleanup of the UploadProgress interface I had to introduce in https://github.com/cs3org/reva/pull/4148
The UploadSessionLister interface allows listing and filtering existing UploadSessions by id, processing or expired state. This can be used by the ocis cli to purge expired AND processed uploads, list uploads that have expired but are still processing etc.
The UploadSession Interface could be extended to include processing steps like the antivirus scan outcome etc, but currently that is stored by the processing service. This may need more thoughts before changing it. I think it makes sense to persist tho outcome of processing steps in the upload session metadata. Unfortunately, we currently store processing stata and scan outcome in the node metadata, not the upload metadata. This will change ofter merging https://github.com/cs3org/reva/pull/4148 , then we can think about if and where to persist the processing state ...
For now, I think this PR is ready.

The TODOs and FIXMEs should be addressed or turned into issues before merging this in my opinion, but the general interface looks good to me.
How's the filtering of uploads gonna look like though? Does that become part of the ListUploads() call?

tracking the tus upload-expires bug in https://github.com/cs3org/reva/issues/4379

@aduffeck I completely changed the upload interface. ...
your opinion?

lgtm, as discussed in zoom :+1:

@kobergj I hope I made the linter happy ;-) will create an ocis bump right away

ocis pr was green, will rebase https://github.com/cs3org/reva/pull/4148 now


Add pyhdb into install requires.

pyhdb isn't required for sqlalchemy-hana. You can install sqlachemy-hana with indirect pyhdb dependency via: pip install sqlalchemy-hana[pyhdb]


Update README.md

Added my name. Nelson Uprety
Related issue

What changes does this PR do?
Screenshots (If any)
Questions

Hey @nelsonuprety1, please make another commit moving your name under line 1301 (Neha Patil) as the list is following alphabetical order.
Let us know if you need any help!

Moved my name to another line


NutritionFacts orchestrator functionality

Co-authored-by: Manik Gupta manikg08<EMAIL_ADDRESS>

please move them in Nutritionfacts dir

Renamed!


[x] I have searched the issues of this repository and believe that this is not a duplicate.

Expected Behavior

Current Behavior

List item should not retain hover styling after touchend
Steps to Reproduce (for bugs)
Go to https://material-ui-1dab0.firebaseapp.com/demos/lists/
Open Chrome dev tools (cmd alt J), toggle device toolbar (cmd shift M), click list item
Context

Using lists on mobile looks ugly
Your Environment

Material UI demo site (https://material-ui-1dab0.firebaseapp.com/demos/lists/)
Chrome 61.0.3163.100
Also repro'd on Google Pixel Android 8.0

The fix should be as easy as this one #7692. Do you want to give it a shoot?

@oliviertassinari done

Sorry to resurrect an old issue, but I still have this behaviour on the following environment:

@material-ui/core 1.0.0
Chrome 66 & Firefox 60 on Android 8.1

The weirdest thing is, if I enable remote debugging in the Chrome Dev Tools and activate the screencast, the issue disappears (hover states are disabled).
If I keep devtools on and disable the screencast, the problem re-appears. Somehow opening the screencast activates the media query @media (hover: none).


add tags to dataset update

[ ] I added an entry to CHANGELOG.md if knowledge of this change could be valuable to users.

Here is a brief summary of what I did:

 [DEVOPS-434] Manager: Editieren von Tags & Citations

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

7 of 9 (77.78%)  changed or added relevant lines in 4 files are covered.
23 unchanged lines in 8 files lost coverage.
Overall coverage decreased (-0.005%) to 90.468%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

services/src/pro/datasets/postgres.rs
0
2
0.0%

Files with Coverage Reduction
New Missed Lines
%

services/src/pro/projects/postgres_projectdb.rs
1
89.8%

services/src/api/handlers/datasets.rs
1
95.36%

services/src/datasets/external/pangaea/mod.rs
1
83.36%

services/src/datasets/external/edr.rs
2
85.72%

services/src/pro/layers/postgres_layer_db.rs
2
95.94%

services/src/datasets/external/netcdfcf/ebvportal_provider.rs
2
92.06%

services/src/api/handlers/workflows.rs
2
90.11%

services/src/pro/contexts/postgres.rs
12
96.74%

Totals

Change from base Build<PHONE_NUMBER>:
-0.005%

Covered Lines:
128759

Relevant Lines:
142325

💛  - Coveralls


[Bug]: Failed to open many pages with the '--incognito' property

Minimal, reproducible example
const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({
    headless: false, // 是否为无头模式，这里设置为false便于观察
    args: ['--incognito'], // 启用无痕模式
  });

  const page = await browser.newPage();
  await page.goto('https://www.google.com/');

  // ... 其他操作

  // await browser.close(); // 最后记得关闭浏览器实例
})();

Error string
Two browser Windows open
Bug behavior

[X] Flaky
[ ] PDF

Background
I am looking to open multiple pages in an incognito browser window. However, after using the puppeteer.launch({args: ['--incognito']}) method to launch an incognito browser, when I create a new page with browser.newPage() and subsequently execute the goto method to navigate to the target URL, the outcome is that two separate browser windows are opened - one incognito and one non-incognito - with the target URL being loaded in the non-incognito browser. The actual effect and a screenshot of the code are presented below.

Expectation
Expect the target URL to open as a TAB in the incognito browser each time the goto method is executed, inheriting the browser's incognito mode.
Reality
As mentioned above
Puppeteer configuration file (if used)
No response
Puppeteer version
v22.0.0
Node version
v20.10.0
Package manager
npm
Package manager version
10.2.3
Operating system
macOS

It has been determined to run locally, and the above screenshot is local operation, independent of other dependencies

Appears to be an issue in Chrome. I'd suggest using https://pptr.dev/api/puppeteer.browser.createbrowsercontext/ instead of relying on flags.

Alright, thank you. The issue has been resolved using your solution.

how do you create new page/tab in incognito mode? I can't seem to make it work from using browser.createbrowsercontext().
Is the an example code that I could try on?

there is an example in the link posted above https://pptr.dev/api/puppeteer.browser.createbrowsercontext#example

there is an example in the link posted above https://pptr.dev/api/puppeteer.browser.createbrowsercontext#example

Still can't get the incognito mode working. I modified some changes to the example code in order to run it, like this:
const puppeteer = require('puppeteer')

;(async () => {
  const browser = await puppeteer.launch({ headless: false })
  const context = await browser.createBrowserContext()
  const page = await context.newPage()
  await page.goto('https://example.com')
})()

"puppeteer": "^22.7.1"

yeah still doesn't work, I am on puppeteer": "^22.12.1. After creating the only context using const browser = await puppeteer.launch({ args: ["--incognito"] }); and then creating a new page afterwards it's still broken. Seems like the newPage() will only create a non-incognito window. The temporary solution I am using right now is after creating a browser with an only incognito tab, use the pages()[0] to get the only page then use goto() on that page, but this only gives a single tab.


Respect -driver-use-frontend-path throughout job creation

A number of job-creation functions were asking the toolchain for the frontend path, rather than using the frontend path computed by the Driver instance. Fix them, and add FIXMEs for the suspicious places where the toolchain is using its own notion of the Swift frontend path. We might want to change the way things are layered here in the future.

@swift-ci please test

@swift-ci please test

@swift-ci please test

@swift-ci please test

@swift-ci please test

@swift-ci please test

@swift-ci please test platform macOS

@swift-ci please test platform macOS

@swift-ci please test

@swift-ci please test macOS


Conference report changes

Note that Github changes the file encoding from windows-1252 to UTF-8. @alexanderlerch I'm not sure if it breaks your setup.

@alexanderlerch I have finished checking the relevant bits of the document, and there were only a few minor issues. I fixed them all except for making Fig 5 and Fig 6 smaller. I assume you will re-size all figures later.
Please feel free to merge the PR at your convenience. Thanks a lot!


storage: writeMemorySeries needs to return true for quarantined series

This is another fallout of my bug hunt.
@brian-brazil Sorry for missing this one previously. I found it with the help of my added panics on invariants. It's a very rare occurrence, luckily.

Fixes #2409

:+1:


Refs 1920: Added personal Bio and Passion for tech

Summary
Testing steps

⚠ This task currently requires qe-approval, but this PR does not fully resolve the task.  Please contact QE to determine appropriate testing required.

Ack


[Bug]: Styling inconsistencies when migrating from mini-css-extract-plugin to CssExtractRspackPlugin

System Info
  System:
    OS: macOS 15.1
    CPU: (12) arm64 Apple M3 Pro
    Memory: 2.14 GB / 36.00 GB
    Shell: 5.9 - /bin/zsh
  Binaries:
    Node: 20.17.0 - ~/.nvm/versions/node/v20.17.0/bin/node
    Yarn: 1.22.22 - ~/.nvm/versions/node/v20.17.0/bin/yarn
    npm: 10.8.2 - ~/.nvm/versions/node/v20.17.0/bin/npm
  Browsers:
    Chrome: 131.0.6778.86
    Edge: 131.0.2903.70
    Safari: 18.1
  npmPackages:
    @rspack/cli: 1.1.3 => 1.1.3
    @rspack/core: 1.1.3 => 1.1.3

Details
We are attempting to migrate from Webpack 5 to Rspack, mostly following the instructions here, as well as various other documentation across the Rspack site.
In our production build, we are migrating from the mini-css-extract-plugin to the CssExtractRspackPlugin as its documented that this plugin is not compatible with Rspack.
When performing a production build using the CssExtractRspackPlugin plugin, and evaluating the build artifacts, we notice that there is some styling inconsistencies/differences. Most notably, we have an EstimateNav.scss file that includes a padding-inline: 8px 16px !important; property.
Comparing the styling results between Rspack and Webpack, we notice that that padding-inline: 8px 16px !important; property is totally negated by some other styling, that we don't entirely understand where its coming from. You will also notice that that property is seemingly not seen by the browser, however does exist in the EstimateNav.scss artifact emitted by the CssExtractRspackPlugin plugin. See screenshots for a comparison.
Webpack

Rspack

Additionally, we notice there is a lot of extra styling stuff included in the Rspack build, like;
:not(:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)))

We would like to understand if there is an actual difference in the implementation of CssExtractRspackPlugin, compared to mini-css-extract-plugin, as implemented in https://github.com/web-infra-dev/rspack/pull/5072, or what might be the cause of these inconsistencies/differences.
It should be noted that when replacing CssExtractRspackPlugin with the standard style-loader, the issue does not exist.
I am happy to provide additional information if its deemed necessary! I appreciate the time taken to review this issue.
Reproduce link
No response
Reproduce Steps
No specific repro steps at this time. This is a general issue when replacing mini-css-extract-plugin with CssExtractRspackPlugin.

We would like to understand if there is an actual difference in the implementation of CssExtractRspackPlugin, compared to mini-css-extract-plugin

No, it's the same algorithm.
From I see, probably causes:

use different loader or different browserslist targets, you can see if this file are the same after been transformed by loaders for webpack and rspack, you can check this out using rsdoctor
use different configurations of optimization.splitChunks

Could you help me out by confirming that the style is missing or is covered by other styles ?

No, it's the same algorithm.

Thanks for the insight!

From I see, probably causes:
use different loader or different browserslist targets, you can see if this file are the same after been transformed by loaders for webpack and rspack, you can check this out using rsdoctor
use different configurations of optimization.splitChunks

We do not have any custom targets, browserlists, or optimization.splitChunks configuration. We are using the defaults provided in the Webpack configuration.
The issue goes away when we swap out rspack.CssExtractRspackPlugin.loader with require.resolve('style-loader')
Comparing the Loader Analysis in rsdoctor between a build using CssExtractRspackPlugin, and a build using style-loader;

The artifacts produced by sass-loader and css-loader are identical for EstimateNav.scss, the artifacts for CssExtractRspackPlugin, and style-loader are different as expected.

Could you help me out by confirming that the style is missing or is covered by other styles ?

Looking at the screenshot below;

The padding-inline: 8px 16px !important; property in EstimateNav.scss is missing from the first (bottom) block.
2 new style blocks are added when building with Rspack. Since padding-inline is a shorthand property, it is seemingly being translated to it equivalent padding-left and padding-right properties, along with all of those :lang sudoclasses.
As a result, the top block, which would normally be negated by padding-inline: 8px 16px !important;, is allowed to take precedence.

Do you know what mechanism might be responsible for those two new style blocks?

Might be the detection of side effects, the 2 blocks may be removed by webpack ?
I'm not sure, are you able to remove some private code, and try to give me a repo to repro this, I'm sure I can give you the answer very quickly

@JSerFeng
I was able to resolve the issue by overriding optimization.minimizer to use TerserPlugin instead of rspack.SwcJsMinimizerRspackPlugin and rspack.LightningCssMinimizerRspackPlugin, which I understand Rspack uses by default, as implied here. I understand these plugins are faster, however our codebase does not currently support them without some changes on our side.
Considering Webpack uses TerserPlugin by default, while Rspack uses rspack.SwcJsMinimizerRspackPlugin and rspack.LightningCssMinimizerRspackPlugin by default, it may be helpful to call out this change in default behavior in documentation like Migrate from webpack.
Im happy to make a contribution if you agree with the above.

Minimizer should not affect the correctness in execution, if so, either us or upstream toolchain should fix that, Is this caused by LightningCssMinimizer removing some needed styles ?

This bug is also affecting Rsbuild users and it wasn't happening before for us. I'll try to find the version where this regressed.


Add support to traverse into sub-directories

Currently, the code isn't going deep into sub-directories.
Here's the output of the files scanned.
FileName: .git
FileName: .idea
FileName: LICENSE
FileName: README.md
FileName: comments.go
FileName: go.mod
FileName: go.sum
FileName: main.go
FileName: stto
FileName: test
FileName: utils.go

Will be picking this up.

Will be picking this up.

Assigned this to you as well, is that ok?


Android build error

Could not find a declaration file for module 'react-native-cashfree-pg-sdk'. '/Users/sagar/Desktop/consulting_2.0/node_modules/react-native-cashfree-pg-sdk/lib/commonjs/index.js' implicitly has an 'any' type.   Try npm i --save-dev @types/react-native-cashfree-pg-sdkif it exists or add a new declaration (.d.ts) file containingdeclare module 'react-native-cashfree-pg-sdk';ts(7016)
I am getting this error while trying to build for android. Kindly provide a solution.

is this issue resolved?


Fix app theming

Noticed this when trying to upgrade mui-public to latest toolpad

Remove theme provider and cssbaseline from _app as it is shared between production app and editor

Merging so I can release it


adb_clr_icon ignored in basic push notifications

Prerequisites

[X] This is not a Security Disclosure, otherwise please follow the guidelines in Security Policy.
[X] I have searched in this repository's issues to see if it has already been reported.
[X] I have updated to the latest released version of the SDK and the issue still persists.

Bug summary
When sending notifications according to the payload defined here: https://developer.adobe.com/client-sdks/resources/reference/push-notifications/templates/basic/ the color attribute adb_clr_icon is ignored and instead a system default color is used.
Environment
OS: Android 14
Device: Samsung S23
Steps to reproduce

Send a push notification with an transparant adb_icon and select a background color with adb_clr_icon
Device receives a notification with the correct icon but the background is a system default and not the specified adb_clr_icon color

Current behavior
The behavior now is that the background color of the notification is using a system default.
Expected behavior
That the color selected by adb_clr_icon should be in use as the background color. Acording to documentation https://developer.adobe.com/client-sdks/resources/reference/push-notifications/templates/basic/
Anything else?
No response

Should follow these guidelines from Google https://developer.android.com/design/ui/mobile/guides/home-screen/notifications#apply-icon-color

Hi @emilrowland ,
Push templates are not currently supported by Messaging SDK. The documentation you linked is for Campaign Classic. We will add a note to the docs with the clarification.
Regards,
Spoorthi Pujari


Add getUserERC721Listings and getUserAavegotchiListings functions

Currently there are no functions that allow reading listings from a specific user for ERC721s. We should implement these to aid with the frontend UI

Yes, these functions are added.
Here are the functions:
function getOwnerERC721Listings(
  address _owner,
  uint256 _category,
  string memory _sort,
  uint256 _length // how many items to get back or the rest available
) external view returns (ERC721Listing[] memory listings_)

function getOwnerAavegotchiListings(
  address _owner,
  uint256 _category,
  string memory _sort,
  uint256 _length // how many items to get back or the rest available
) external view returns (AavegotchiListing[] memory listings_) {

Commit: 1f76ac4ca80afa3d1fc344cbc4f00c0876612315

Great! Will get this implemented in the frontend today. Closing.


Compile Time Generation problem with .net6.0

Using the Readme I was not able to get the default example for compile time generation of the container to work. Sadly my knowledge regarding T4 templates is sparse. Could you give me a pointer on what I did wrong?
Example Code
The t4 template is shown as follows by Rider:

Running the template produces the following error:

Hi, @sqeezy
Thanks for trying the comp-time. I am always greedy for the feedback.
Regarding the error, the DryIoc.dll is not found by template, and it is hard to tell why because I don't have access to the provided link https://github.com/sqeezy/DryIocEvaluation/tree/main/CompileTimeIoc

My bad on this one. I forgot that this repo was private. I changed the visibility.
Happy to give feedback, your library is helping us a lot.

@sqeezy Thanks for the access, I will check a bit later.


Allow for optional requiredShippingContactFields

As we know from the docs it's only possible to get back the postalAddress from the requiredBillingContactFields. If you want any of the other fields, such as name, email, and phone, you need to get them back from the requiredShippingContactFields.
The issue is that I don't want to ask the user for the shipping address because they won't be shipped anything. I do, however, want their contact information. This can be achieved on the native side by removing PKContactFieldPostalAddress from requiredShippingContactFields.
There's a few ways the js api can be extended to support this.

Split the current requestShipping into requestShippingContactInfo and requestShippingAddress. This would be a breaking change.
Do the above but keep requestShipping for backwards compatibility which sets both requestShippingContactInfo and requestShippingAddress to true. No breaking change.
Keep requestShipping and add noShippingAddress. No breaking change.
Make requestShipping an object where you can specify which fields you want. Breaking change but more future proof.

Let me know your thoughts. I'd be happy to submit a PR with whatever path makes sense.
Thank you!

This library supports both IOS and Android, and the JS layer has a generic approach bot mapping and normalizing the behaviour, I have added all the references in the code to the official docs of the above mentioned platforms, so we need to analyze such changes in scope of two worlds and also stay as compliant as possible with the W3C.
We do have a roadmap item for improving the shipping options, maybe we can go further into this direction.
I would start with understanding How can we achieve the same behaviour on the Android?  Does W3C(browser) supports this and how to achieve it there?

How can we achieve the same behavior on the Android?
On Android, the payment data response contains the email if emailRequired is passed in the request, and the name and phone number come from the billing address if billingRequired is passed to the request
Does W3C(browser) supports this and how to achieve it there?
W3C has requestPayerEmail, requestPayerName,  and requestPayerPhone. We can extend the GenericPaymentMethodDataDataInterface and add requestPayerName, and requestPayerPhone. To support that on iOS, under the hood we'll use requestShippingContactInfo and only add the PKContactFields the user asked for. And on Android we can just get them from the billingAddress.


Invalid Host

I don't know what to type in the host and I need some help

I assume you have Ollama running on a PC in your local network.
Firstly, follow the steps discussed in #5 to make Ollama accessible from your phone.
After that, you have to find your PCs local IP. You can do that by either going to your router's device list or getting it in windows CMD (just google "windows get local IP").
Then enter the following in the host field: "http://:11434"

I assume you have Ollama running on a PC in your local network.
Firstly, follow the steps discussed in #5 to make Ollama accessible from your phone.
After that, you have to find your PCs local IP. You can do that by either going to your router's device list or getting it in windows CMD (just google "windows get local IP").
Then enter the following in the host field: "http://:11434"

But why I need a PC to make it run?

First sentence in the readme:

Important: This app does not host a Ollama server on device, but rather connects to one and uses its api endpoint. Don't know what Ollama is? Learn more at ollama.com.

First sentence in the readme:

Important: This app does not host a Ollama server on device, but rather connects to one and uses its api endpoint. Don't know what Ollama is? Learn more at ollama.com.

Thank you


Process aborted when running tf.keras.layers.MaxPooling1D on GPU with large pool_size

Issue type
Bug
Have you reproduced the bug with TensorFlow Nightly?
Yes
Source
binary
TensorFlow version
2.14.0-rc1
Custom code
No
OS platform and distribution
No response
Mobile device
No response
Python version
No response
Bazel version
No response
GCC/compiler version
No response
CUDA/cuDNN version
No response
GPU model and memory
No response
Current behavior?
Process aborted with Check failed error when running tf.keras.layers.MaxPooling1D on GPU with large pool_size, while it throws an Exception on CPU.
When I reduce the pool_size_0 to 1e+18, it throws an Exception on GPU, which is a more reasonable behavior I think.
This behavior is similar to what described in #61642, which also throws a Check failed error by using a large pool_size for tf.compat.v1.layers.MaxPooling1D on GPU.
Standalone code to reproduce the issue
import tensorflow as tf
print(tf.version.GIT_VERSION, tf.version.VERSION, flush=True)

try:
    pool_size_0 = 1e+19
    pool_size = [pool_size_0,]
    strides_0 = 2
    strides = [strides_0,]
    padding = "same"
    data_format = "channels_last"
    arg_class = tf.keras.layers.MaxPooling1D(pool_size=pool_size,strides=strides,padding=padding,data_format=data_format,)
    arg_input_0_tensor = tf.random.uniform([1, 5, 4], dtype=tf.float32)
    arg_input_0 = tf.identity(arg_input_0_tensor)
    arg_input = [arg_input_0,]
    out = arg_class(*arg_input)
except Exception as e:
    print("Error:", str(e), flush=True)
print("Success!", flush=True)

Relevant log output
On GPU, it throws a Check failed and core dumped.
v2.14.0-rc0-34-gdd01672d9a9 2.14.0-rc1
2023-09-03 11:34:09.267078: I tensorflow/compiler/xla/stream_executor/cuda/cuda_dnn.cc:442] Loaded cuDNN version 8600
2023-09-03 11:34:09.267132: F tensorflow/compiler/xla/stream_executor/cuda/cuda_dnn.cc:1019] Check failed: cudnnSetPoolingNdDescriptor( handle_.get(), (pooling_descriptor.mode() == dnn::PoolingMode::kMaximum ? cudnn_max_pooling_mode : CUDNN_POOLING_AVERAGE_COUNT_EXCLUDE_PADDING), propagate_nans ? CUDNN_PROPAGATE_NAN : CUDNN_NOT_PROPAGATE_NAN, nd, shape.data(), padding.data(), strides.data()) == CUDNN_STATUS_SUCCESS (3 vs. 0)
Aborted (core dumped)

On CPU, it throws a Exception.
v2.14.0-rc0-34-gdd01672d9a9 2.14.0-rc1
Error: Exception encountered when calling layer 'max_pooling1d' (type MaxPooling1D).

{{function_node __wrapped__MaxPool_device_/job:localhost/replica:0/task:0/device:CPU:0}} Sliding window ksize for dimension 1 was zero. [Op:MaxPool]

Call arguments received by layer 'max_pooling1d' (type MaxPooling1D):
  • inputs=tf.Tensor(shape=(1, 5, 4), dtype=float32)
Success!

When I change the pool_size_0 to 1e+18, it throws a Exception on GPU.
v2.14.0-rc0-34-gdd01672d9a9 2.14.0-rc1
2023-09-03 11:51:28.441325: W tensorflow/core/framework/op_kernel.cc:1816] OP_REQUIRES failed at maxpooling_op.cc:1260 : INVALID_ARGUMENT: Attr ksize has value<PHONE_NUMBER>000000000 out of range for an int32
Error: Exception encountered when calling layer 'max_pooling1d' (type MaxPooling1D).

{{function_node __wrapped__MaxPool_device_/job:localhost/replica:0/task:0/device:GPU:0}} Attr ksize has value<PHONE_NUMBER>000000000 out of range for an int32 [Op:MaxPool]

Call arguments received by layer 'max_pooling1d' (type MaxPooling1D):
  • inputs=tf.Tensor(shape=(1, 5, 4), dtype=float32)
Success!

Hi @oawxkw,
I have replicated the reported behaviour.With CPU runtime the code is raising the intended exception as per attached
cpu-gist.
But with GPU runtime session getting crashed.

@oawxkw ,
This can be duplicate of #61642 as tf.compat.v1.layers.MaxPooling1D is inheriting from keras.layers.MaxPooling1D only. The other issue already under Dev team review.
Thanks!

I also observed some similar "Check failed" errors when using the following APIs on GPU.

tf.keras.layers.MaxPooling1D, tf.keras.layers.MaxPool1D, tf.compat.v1.keras.layers.MaxPooling1D, tf.compat.v1.keras.layers.MaxPool1D
tf.keras.layers.MaxPooling2D, tf.keras.layers.MaxPool2D, tf.compat.v1.keras.layers.MaxPooling2D, tf.compat.v1.keras.layers.MaxPool2D

I confirmed that these behaviors still exist in tensorflow nightly (2.15.0-dev20230906), and probably share the same root cause.
I think these are unexpected behaviors since they are supposed to throw Exceptions like the CPU does, rather than "Check failed" errors.

Code to reproduce the issue in `tf.keras.layers.MaxPooling2D`
import tensorflow as tf
print(tf.version.GIT_VERSION, tf.version.VERSION, flush=True)
print(tf.config.list_physical_devices(), flush=True)

try:
    pool_size_0 = 1e+38
    pool_size = [pool_size_0, pool_size_0]
    strides_0 = 2
    strides = [strides_0, strides_0]
    padding = "same"
    data_format = "channels_last"
    arg_class = tf.keras.layers.MaxPooling2D(pool_size, strides, padding=padding, data_format=data_format)
    arg_input_0_tensor = tf.random.uniform([1, 5, 5, 4], dtype=tf.float32)
    arg_input_0 = tf.identity(arg_input_0_tensor)
    arg_input = [arg_input_0,]
    out = arg_class(*arg_input)
except Exception as e:
    print("Error:", str(e), flush=True)
print("Success!", flush=True)

On GPU, the Check failed error occurs:
v2.14.0-rc0-34-gdd01672d9a9 2.14.0-rc1
[PhysicalDevice(name='/physical_device:CPU:0', device_type='CPU'), PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]
2023-09-07 10:51:52.089257: F tensorflow/compiler/xla/stream_executor/cuda/cuda_dnn.cc:1019] Check failed: cudnnSetPoolingNdDescriptor( handle_.get(), (pooling_descriptor.mode() == dnn::PoolingMode::kMaximum ? cudnn_max_pooling_mode : CUDNN_POOLING_AVERAGE_COUNT_EXCLUDE_PADDING), propagate_nans ? CUDNN_PROPAGATE_NAN : CUDNN_NOT_PROPAGATE_NAN, nd, shape.data(), padding.data(), strides.data()) == CUDNN_STATUS_SUCCESS (3 vs. 0)
Aborted (core dumped)

On CPU, it throws an Exception:
v2.14.0-rc0-34-gdd01672d9a9 2.14.0-rc1
[PhysicalDevice(name='/physical_device:CPU:0', device_type='CPU')]
Error: Exception encountered when calling layer 'max_pooling2d_1' (type MaxPooling2D).

{{function_node __wrapped__MaxPool_device_/job:localhost/replica:0/task:0/device:CPU:0}} Sliding window ksize for dimension 1 was zero. [Op:MaxPool]

Call arguments received by layer 'max_pooling2d_1' (type MaxPooling2D):
  • inputs=tf.Tensor(shape=(3, 74, 74, 256), dtype=float32)
Success!


label_sync job failing

Describe the bug
The label_sync job on our prow is failing due to the initupload sidecar encountering errors while uploading to blob storage.
{"component":"initupload","error":"failed to upload to blob storage: failed to upload to blob storage: encountered errors during upload: [writer close error: blob (key \"logs/label-sync/1600158620245299200/started.json\") (code=Unknown): AccessDenied: Access Denied\n\tstatus code: 403, request id: KS6YBWCW1GRZTVK6, host id: mhIlF7/Xjq4kuNHSkxxhZkAxpkTnMY0UgUtjUDMwimWLPsJSzsEPFUYWmee7mJpUbiuSRDnYlNI= writer close error: blob (key \"logs/label-sync/latest-build.txt\") (code=Unknown): AccessDenied: Access Denied\n\tstatus code: 403, request id: KS6J2DR3877NVFB3, host id: 5UmHVO9L2fuKclp5JTM9U/NTUwQuGUGfJVIOZ/lrfmLYfRsujj7yxgBp1p47zxhsk3iqv+E+6Qo=]","file":"prow/cmd/initupload/main.go:45","func":"main.main","level":"fatal","msg":"Failed to initialize job","severity":"fatal","time":"2022-12-06T16:02:14Z"}

Steps to reproduce
Wait for the cron job on our prow web site or run the following command
kubectl create -f "https://prow.ack.aws.dev/rerun?prowjob=f6452fc4-7571-11ed-8391-0a44b5034b02"

Expected outcome
Expecting the job to succeed.
Environment
k8s 1.20

Looks like we're missing to attach a service account to the periodic job
/assign

/assign


Update flake8

Closes issue #6

Welcome to Codecov :tada:
Once merged to your default branch, Codecov will compare your coverage reports and display the results in this comment.
Thanks for integrating Codecov - We've got you covered :open_umbrella:


can't run example in README (rcall throws error)

Attached is a screenshot of the first one, but I get a similar one for other examples further down the readme too that use rcall. Do you have any suggestions for how to debug this?

I just tried it, same error

It’s working fine on my Mac. R3.5.1 and python 3 by the way.

Let me check what's the issue on python 2.

I could reproduce your error on python 2.

You will need
from __future__ import unicode_literals

and
class Foo(object):
    pass

Thank you!


Can I use this library for WebHooks too?

Hi @amcintosh
First of all, does this package support WebHooks? Is there a sample code that first verifies and then listens to WebHook events from FreshBooks?
Thanks
Bill

Hi!
So the library does support the registration and verification of callbacks.
See https://amcintosh.github.io/freshbooks-php-sdk/html/classes/amcintosh-FreshBooks-FreshBooksClient.html#method_callbacks
and https://amcintosh.github.io/freshbooks-php-sdk/html/classes/amcintosh-FreshBooks-Resource-EventsResource.html#method_verify
There's no example code at the moment, nor examples on checking the verification header, though the FreshBooks API docs does have a python example of that:
# Using Flask:
import base64
import hmac
import hashlib
import json

from flask import Flask, request

def signature_match(verifier, request):
    signature = request.headers.get('X-FreshBooks-Hmac-SHA256')
    data = json.dumps(request.form)

    dig = hmac.new(
        verifier.encode('utf-8'),
        msg=data.encode('utf-8'),
        digestmod=hashlib.sha256
    ).digest()
    calculated_sig = base64.b64encode(dig).decode()

    return signature == calculated_sig

I can look into writing a PHP example.

@bhaidar I've added a webhooks example and some more documentation on their use in this PR.
Hope that helps.


No respawn setting

If this option is enabled clients will be not able to respawn after death, they have to wait for the next map. Perhaps we can use the existing timeout value and use -1 for never respawn.

Commit before that should be referenced too but forgot to include it in the commit message, now I'm having trouble updating the commit log message.

You can use ammend, I'll close this.


BUG-When downloading a file, we don't get the suggested name, but rather the actual file name

Description
Could be just a simple case of the manual on file download not being clear, but when downloading a file in the system through the file_download element, the name option doesn't seem to matter. We always get the name of the file we downloaded.
How to reproduce
from taipy.gui import Gui

DOWNLOAD_PATH = "/home/gbritoda/repos/taipy_dev/taipy_download.py"

page = """
<|{DOWNLOAD_PATH}|file_download|name=my_downloadable_file.py|>
"""

GUI_OBJ = Gui(page=page)
GUI_OBJ.run(
        host="<IP_ADDRESS>",
        port=1234,
        dark_mode=False,
        debug=True,
        use_reloader=True,
)

Click download, we expect to get my_downloadable_file.py, but we get taipy_download.py, which is the original name.
Expected behavior
Expected to get the contents of taipy_download.py, but with the name my_downloadable_file.py.
Instead we simply get taipy_download.py, content and title.
Screenshots

Runtime environment

OS: WSL Ubuntu 22.04.2 LTS
Browser: Firefox 118.0.1 (64 bit)
TaiPy 2.4.0

Hi @FabienLelaquais , if that's fixed in TaiPy 3.0 I am more than happy to close the issue.
Thank you for getting back 😊

Thank you!


F 6.2 - bug orbit navigation

i can't use the button next and previous to navigate on the slideshow ...

i found the solution, I am going to create a pull request :)

#8328

I see it's working on the docs. What changes to Orbit prevented you from using the buttons?

I changed nothing, I just updated foundation...

What browser did you encounter this bug in?

I use chrome on linux and on my IPhone.
below my html code reduced :
`

◀
▶

`

Merged #8328


feature request: authentication mechanism

Is there any intention to integrate an authentication mechanism? be it mod_auth_ldap or alike? great tool, just lacking unique users so we can keep track of who is creating / editing postmortems.

Yes! Also, as a protection mechanism for the reports.


[WIP] ci: fix preview_branch=master tests

Do not merge.
Failing tests:

[x] public/docs/_examples/animations/ts
[x] public/docs/_examples/dependency-injection/ts
[x] public/docs/_examples/server-communication/ts
[ ] public/docs/_examples/cb-aot-compiler/ts
[ ] public/docs/_examples/cb-ts-to-js/js
[ ] public/docs/_examples/forms/js
[ ] public/docs/_examples/quickstart/js
[ ] public/docs/_examples/styleguide/js

Notes:

Animation examples required new @angular/animations and @angular/platform-browser/animations package. They also needed unique animation triggers.
Dependency injection example required this.injector.get(); to be used on ngOnInit instead of being in a class property initializer.
Server communication only had trivial typing fixes on the e2e test.

Outstanding problems:

AoT examples fail ngc compilation only on local tests on Windows. Travis runs are unaffected.

Illegal state: Could not load the summary for directive NgClass in<EMAIL_ADDRESS>

All JS examples that are using script tags (not SystemJS) fail to find Observable:

Unhandled Promise rejection: Cannot read property 'Observable' of undefined ; Zone: <root> ; Task: Promise.then ; Value: TypeError: Cannot read property 'Observable' of undefined

Superseded by https://github.com/angular/angular.io/pull/3415


Updates for purescript 0.13

Thanks for this - sorry it took me so long to respond!
Just published v4.0.0 to bower as well.


Content-Security-Policy level 3

It would be great if caniuse could report support for CSP level 3, in particular the strict-dynamic attribute recommended by Google in https://csp.withgoogle.com/docs/strict-csp.html

indeed. I missed it


sonoff.sonoff_1000e68f51_1 (<class 'abc.XSwitches'>) does not set supported color modes

日志: homeassistant.components.light
来源: components/light/init.py:1267
集成: 灯光 (文档, 问题)
首次发生: 22:35:26 (15 全部发生)
上次记录: 22:35:26
sonoff.sonoff_1000e68f51_1 (<class 'abc.XSwitches'>) does not set supported color modes, this will stop working in Home Assistant Core 2025.3, please create a bug report at https://github.com/AlexxIT/SonoffLAN/issues
sonoff.sonoff_1000e68f51_2 (<class 'abc.XSwitches'>) does not set supported color modes, this will stop working in Home Assistant Core 2025.3, please create a bug report at https://github.com/AlexxIT/SonoffLAN/issues
sonoff.sonoff_1000e68f51_3 (<class 'abc.XSwitches'>) does not set supported color modes, this will stop working in Home Assistant Core 2025.3, please create a bug report at https://github.com/AlexxIT/SonoffLAN/issues
sonoff.sonoff_1000e68f51_4 (<class 'abc.XSwitches'>) does not set supported color modes, this will stop working in Home Assistant Core 2025.3, please create a bug report at https://github.com/AlexxIT/SonoffLAN/issues
sonoff.sonoff_1000e3eb20 (<class 'custom_components.sonoff.switch.XSwitch'>) does not set supported color modes, this will stop working in Home Assistant Core 2025.3, please create a bug report at https://github.com/AlexxIT/SonoffLAN/issues

Also got the same error for a POW device:

[homeassistant.components.light] sonoff.sonoff_100179f813 (<class 'custom_components.sonoff.switch.XSwitchPOWR3'>) does not set supported color modes, this will stop working in Home Assistant Core 2025.3, please create a bug report at https://github.com/AlexxIT/SonoffLAN/issues

It's important to add diagnostics
https://github.com/AlexxIT/SonoffLAN?tab=readme-ov-file#issues

Hi, same there
sonoff-e167adf8e46493c6e7695c85065e12c1-Applique Cameretta Sofia-e82bfe60d7add2eb64850e0b19651906.json
attached diagnostic.

@gianlucasullazzo I can't see anything related to this issue in your diagnostics.

Ok @AlexxIT , let me know what I can provide you. I have this on logs:
does not set supported color modes, this will stop working in Home Assistant Core 2025.3, please create a bug report at https://github.com/AlexxIT/SonoffLAN/issues
I have 9 sonoff mini and I get these logs at each HA startup.
Regards,
Gianluca

The problem could theoretically be if you turned a switch into a light. But this is not in your config.

Yes, I turned 7 of them into light via config (default_class)

So you previously provided an incorrect diagnosis. It's hard to help someone who does that.
If you have this setting, it should have come up in the diagnostics.

Why are you saying this? I Just downloaded the diagnosis from HA. It's not my fault if diagnosis does not include what you need. I'm sorry about it but, of course, it's not intentional from my side. At this point, is there something else I can provide you?

And, just to be clear, I turned them into light months ago..

Sorry. It's my bad. This setting removing from diagnostics after first read.

No problem @AlexxIT, please let me know if I can provide you more info.


eBPF for Windows should support per-CPU hash and per-CPU array maps

eBPF for Windows should support per-CPU hash and per-CPU array maps

Duplicate of #192


Newgrounds videos not downloading

Checklist

[x] I'm reporting a broken site support issue
[x] I've verified that I'm running youtube-dl version 2020.09.20
[x] I've checked that all provided URLs are alive and playable in a browser
[x] I've checked that all URLs and arguments with special characters are properly quoted or escaped
[x] I've searched the bugtracker for similar bug reports including closed ones
[x] I've read bugs section in FAQ

Description

Newgrounds videos will not download if supplied with the base newgrounds url https://www.newgrounds.com/portal/view/x.
I was however able to download the direct url found within dev tools https://uploads.ungrounded.net/alternate/1527000/1527940_alternate_110572.720p.mp4?1601550856
Verbose log

Python v2
> youtube-dl --no-check-certificate 'https://www.newgrounds.com/portal/view/767347' --verbose
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: [u'--no-check-certificate', u'https://www.newgrounds.com/portal/view/767347', u'--verbose']
[debug] Encodings: locale UTF-8, fs utf-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2020.09.20
[debug] Python version 2.7.16 (CPython) - Darwin-18.7.0-x86_64-i386-64bit
[debug] exe versions: ffmpeg 4.3.1, ffprobe 4.3.1, rtmpdump 2.4
[debug] Proxy map: {}
[Newgrounds] 767347: Downloading webpage
ERROR: Unable to extract ; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type  youtube-dl -U  to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
Traceback (most recent call last):
  File "/usr/local/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 797, in extract_info
    ie_result = ie.extract(url)
  File "/usr/local/bin/youtube-dl/youtube_dl/extractor/common.py", line 532, in extract
    ie_result = self._real_extract(url)
  File "/usr/local/bin/youtube-dl/youtube_dl/extractor/newgrounds.py", line 65, in _real_extract
    r'"url"\s*:\s*("[^"]+"),', webpage, ''), media_id)
  File "/usr/local/bin/youtube-dl/youtube_dl/extractor/common.py", line 1010, in _search_regex
    raise RegexNotFoundError('Unable to extract %s' % _name)
RegexNotFoundError: Unable to extract ; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type  youtube-dl -U  to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.

Python v3
> python3 /usr/local/bin/youtube-dl 'https://www.newgrounds.com/portal/view/762677' --verbose
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['https://www.newgrounds.com/portal/view/762677', '--verbose']
[debug] Encodings: locale UTF-8, fs utf-8, out utf-8, pref UTF-8
[debug] youtube-dl version 2020.09.20
[debug] Python version 3.8.5 (CPython) - macOS-10.14.6-x86_64-i386-64bit
[debug] exe versions: ffmpeg 4.3.1, ffprobe 4.3.1, rtmpdump 2.4
[debug] Proxy map: {}
[Newgrounds] 762677: Downloading webpage
ERROR: Unable to extract ; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type  youtube-dl -U  to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
Traceback (most recent call last):
  File "/usr/local/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 797, in extract_info
    ie_result = ie.extract(url)
  File "/usr/local/bin/youtube-dl/youtube_dl/extractor/common.py", line 532, in extract
    ie_result = self._real_extract(url)
  File "/usr/local/bin/youtube-dl/youtube_dl/extractor/newgrounds.py", line 64, in _real_extract
    media_url = self._parse_json(self._search_regex(
  File "/usr/local/bin/youtube-dl/youtube_dl/extractor/common.py", line 1010, in _search_regex
    raise RegexNotFoundError('Unable to extract %s' % _name)
youtube_dl.utils.RegexNotFoundError: Unable to extract ; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type  youtube-dl -U  to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.

I'm also having this problem, was trying to download https://www.newgrounds.com/portal/view/705952 , I was able to download the video by using this online tool: https://www.tubeoffline.com/DL.php?host=NewGrounds&video=https://www.newgrounds.com/portal/view/705952&booked=&thumb=


date button: clicking multiple times causes multiple input events

It should only emit 'input' if the date actually changes

Fix will be in v2.4.0


Should prefixed_id columns be unique instead?

// README.md

Schema::create('your_models_table', function (Blueprint $table) {
   $table->string('prefixed_id')->index();
});

As this package generates an uuid for each model shouldn't this be unique() instead of index()?

Makes sense, feel free to PR this 👍


Please add: Excel Maestro

https://chat.openai.com/g/g-PNdA4W4tm-excel-maestro
Thank you!

Please raise a pull request for the same


Disconnection when using variable regex for title regex; a bit different than last time

easier to demonstrate on video
https://youtu.be/CxVthCfuVWA
wf attached
Node, WFs  attached
aegisflow.zip
multiloader_wiring_error2.json
multiloader_wiring_error.json

OK - I'll make this clearer in the documentation.
The regex widgets can be converted to an input BUT the only thing that can be plugged into this input is a simple string source - by which I mean, it has to be "directly connected to the original* source of the string - a node which is just a widget where you type a string (like the Simple String node now included) has to be directly connected to the regex input.
In your video you are bringing the string via another node. That won't work. Not now, not ever.
Why? Because the regex needs to be evaluated before the workflow begins, because that is when the graph is calculated. So the regex input isn't getting the string in the usual way, it is manually looking at the node that is plugged into it and reading the widget on that node directly.
This is a hack, but it's the only way that the functionality can be supported.

Updated docs

Yeah, I feared that was the case; IE until it runs there's no way to tell what the result of a switch will be, f/e, and so it won't ever work. I've started removing this sort of logic as a result, and instead using muters instead and multiple send nodes (this was how I got the controlnet piece to work)


求个小程序能使用的版本

微信小程序无法使用很多原生的语句，比如document.getElementById，
求一个小程序能用的

I don't know much about mini-program development, but would love to make Hanzi Writer compatible with mini-programs! What needs to change to make it usable with Mini-programs? Is it only document.getElementById that's not supported? What should document.getElementById be replaced with?

many javascript raw functions can not use, and can do something with dom. I don't know how to describe the all limit.
thanks you anyway

Many people use weChat in China,  and the mini-program is a useful app in weChat. so I hope the hanzi-writer can support it.
developer document:
https://developers.weixin.qq.com/miniprogram/en/dev/quickstart/basic/getting-started.html#install-development-tools

Thanks for the docs link! I'll take a look and try to get a wechat-compatible version working this week

@chanind this program is a personal interest?

Sorry, I don't really understand the question. It's not a company, it's just a free open-source project. If you want to improve the code you can contribute a pull request as well!

It looks like Wechat miniprograms support canvas, but I can't find anything about working with SVG. I'll work on getting canvas rendering support completed and then try porting that over to wechat.

I just published a miniprogram custom component with the name hanzi-writer-miniprogram. Let me know if it works, or if there's problems with it! The repo is here: https://github.com/chanind/hanzi-writer-miniprogram. I'll improve the docs over the next few days, and publish a 1.0.0 version if it seems like the plugin works.

Closing this because a miniprogram plugin for Hanzi Writer now exists at: https://github.com/chanind/hanzi-writer-miniprogram


Topbar Chopped off when jumping with Scrollspy

Hey all,
I recently rebuilt my personal site http://blanchardjeremy.com using Bootstrap and Hyde (via a template I made called hyde-bootstrap).
I turned on scroll spy and whenever I click on certain links, the left and right sides of the topbar get chopped off. Here's a screenshot http://cl.ly/Bjzv
Scrolling one pixel will return it to it's normal state. Screenshot: http://cl.ly/BjjB
Is this a bug or is there something wrong with my code?

Yeah this is a known browser bug - we haven't been able to figure out any hacks around it either :/ There should be an open issue for it already.


Some keys get doubled.

Describe the bug
On some songs i converted, some keys got duplicated at the same place making it that even if i hit them, i miss.
Program version:
1.1.6
Plateform:
Windows 7, exe with python 3.8.10
Also, please specify what did you used exactly (the .exe file or the source code?). If you used Python, please specify the version of your Python (example: Python 3.7.6)
Additional context:
I haven't had this issue with 1.1.5 but that may be because i haven't used it a lot. Might also be a problem with the chart.

If you used the map type to "[4K] Players 1 and 2" this is a known issue.
Would be nice if you could provide more details so I can recreate the bug:

The song and the fnf mod you used.
The difficulties you created, especially their map type (4K, 8K, ...)

If you used the map type "[4K] Players 1 and 2" this is a known issue.
Would be nice if you could provide more details so I can recreate the bug:

The song and the fnf mod you used.
The difficulties you created, especially their map type (4K, 8K, ...)

Tricky v2 (directly took the files from the github repo) on Hellclown and Madness on normal and hard. I played in Easy without issues, also i remembered that Notepad++ can remove duplicate lines in a file so i used that on them a few days ago

If you used the map type "[4K] Players 1 and 2" this is a known issue.
Would be nice if you could provide more details so I can recreate the bug:

The song and the fnf mod you used.
The difficulties you created, especially their map type (4K, 8K, ...)

Tricky v2 (directly took the files from the github repo) on Hellclown and Madness on normal and hard. I played in Easy without issues, also i remembered that Notepad++ can remove duplicate lines in a file so i used that on them a few days ago

Fixed in #31


[desktop] Accented non-ASCII characters do not show in TextField on Windows

Accented non-ASCII characters such as the Turkish accented letters ğüşıöçĞÜŞİöç do not show in TextField on Windows 10.
They actually cause weird behavior. "ı" shows as "1", "ü" hides characters that follow, etc.

Can you explain what exactly you mean by "show"? Are you attempting to type these characters and they aren't showing up correctly, or are you setting them programmatically and they aren't showing up?
If the former this is #30661. The latter would be unexpected.

For these letters it's #30661: ğşıĞŞİ
For these, there is a "switch to hiding mode" behavior, which is different: üöçÜÖÇ.
When you press any of these "hiding" keys, nothing happens visually (no broken character shows). After that, whatever letter you press is also hidden. However, if you press backspace enough number of times and delete that invisible "hiding" character, new keys that you press work normally.
So, I type "abcüde" and see: "abc|", where | is the cursor.  Then, I type "fg" and see "abcfg|". Hope it makes sense.

That's all text input, so it's all part of #30661.


Missing channel name in readme and spring documentation

Under "Sleuth with Zipkin via RabbitMQ or Kafka" section in readme file, should mention that default channel name is "sleuth".

I've updated the docs, but in the different section. That one is correct.


Oklab colour blending

Currently, Fusion uses a relatively standard CIELAB implementation when blending colours, e.g. for tweening and spring simulation. However, it may not have ideal perceptual uniformity; specifically, it may have hue shift issues:

In a future release, Fusion should consider adopting Oklab as the standard colour space for blending between colours. This would likely replace the CIELAB implementation completely.
Given that this is an internal change, this wouldn't have any breaking effects on any APIs, though colours output from animation APIs would be subtly different.
Related:
https://bottosson.github.io/posts/oklab/
https://raphlinus.github.io/color/2021/01/18/oklab-critique.html

though colours output from animation APIs would be subtly different.

I don't think this should bother anyone, unless they have it set a certain way and somehow memorized exactly how it shifts. I don't see any drawbacks to this.

Implemented!


Create explore page

Please follow the wireframe and create the explore page.
You can use dummy data to create it.
Link to wireframe: https://github.com/thtauhid/open-profile/blob/main/Wireframe.pdf

Hello, could I take this please? Just to confirm you want to create a new page "/explore" and just create a dummy file with users and render a tile for each?

Yes. Do refer to the wireframe for the design though.
I've assigned this task to you.

Join our Discord server to discuss ideas, ask questions, and collaborate with others.

Thank you!


Examples

Do you have reports examples / screenshots ? Thanks !

@duard
We have demo project to show how it works, please check the following web-page - https://report.anychart.com/
There you can examples and exports.


Feature/filterable labels

closes #14

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


python package directory structure

allows to install raspihive via setuptools

@PIOTA89 please create a develop branch on https://github.com/Raspihive/raspihive

i added the develop branch @bernardoaraujor


It doesn't recognize SvelteKit project

Hi, the extension is not working on my SvelteKit project.
TailwindCSS is properly installed and the IntelliSense works perfectly on VSCode.
Here's my project's structure:

Here's everything I've tried so far:

Opening nvim in the root folder and in the src folder
Using tailwindCSS.forceActivate
Opening my tailwind.config.cjs file
Renaming it to tailwind.config.js
Reinstalling the extension and the COC plugin
Creating an index.html file to see if it works with basic html files

Nothing works, so I really don't know what to do, thanks for reading.

Thank you for your answer. I tried running :CocCommand tailwindCSS.showOutput but it opens me an empty buffer, and :echo WorkspaceFolders returns me my root directory.
I also tried testing the extension on a basic html project with tailwindcss and a Next.JS project, it didn't work for both, so the problem is not related to SvelteKit. Is there any dependency I need besides coc.nvim, coc-html and coc-css ?

I am unable to reproduce the non-working situation in my environment. If you give me a reproducible case, I will try.

Otherwise, the only other thing I can think of is to update coc.nvim to the latest version and try


Added the product categories filter to the listing page, added a new …

…model field and updated the filter form

👍


[ASCII-1621] Fix flake in configsync tests

What does this PR do?

Fix a flake in comp/core/configsync/configsyncimpl/sync_integration_test.go happening on slow runners.
Motivation

We don't want any flakiness in tests.
Additional Notes

Replaces two calls to Sleep with EventuallyWithT and increased timeout.
Possible Drawbacks / Trade-offs

Describe how to test/QA your changes

/merge


Added defaultIndex parameter to FluidNavBar.

Nice, thanks for this PR!
BTW don't worry about the Dart CI / build, it always failed.
Can you update the example and the README.md to reflect this change please?

Thanks for looking into it.
Can you merge it then? =)
I do not have rights to do that.

Ooops didn't see that the version in pubspec.yaml must be changed. Can you set it to 1.1.1 ? Otherwise pub will reject it when publishing

Done