refactor(iroh-blobs): do not hit the network when downloading blobs which are complete

Description
Two changes to the downloader:

Never try to download from ourselves. If the only provider node added is our own node, fail with error "no providers".
The actual download request flow is turned into a generator (while keeping API compatibility for the existing get_to_db public function). A new get_to_db_in_steps function either runs to completion if the requested data is fully available locally, or yields a NeedsConn struct at the point where it needs a network connection to proceed. The NeedsConn has an async proceed(self, conn: Connection), which must be called with a connection for the actual download to start.

This two-step process allows the downloader to check if we should dial nodes at all, or are already done without doing anything, while emitting the exact same flow of events (because we run the same loop) to the client.
To achieve this, get_to_db now uses a genawaiter generator internally. This means that the big loop that is the iroh-blobs protocol request flow does not have to be changed at all, only that instead of a closure we yield and resume, which makes this much easier to integrate into an external state machine like the downloader.
The changes needed for this for the downloader are a bit verbose because the downloader itself is generic over a Getter, with impls for the actual impl and a test impl that does not use networking; therefore the new NeedsConn state has to be modeled with an additional associated type and trait here.
This PR adds three tests:

Downloading a missing blob from the local node fails without trying to connect to ourselves
Downloading an existing blob succeeds without trying to download
Downloading an existing collection succeeds without trying to download

Closes #2575
Replaced #2576
Notes and open questions
Breaking changes
None, only an API addition to the public API of  iroh_blobs: iroh_blobs::get::check_local_with_progress_if_complete

can you also add a test with a collection that needs some blobs to be downloaded

Wait, I am not sure if this is correct. We can only resume the generator once, so we have to recreate it if a node fails. I do this in the direct_download case, but not in the queued downloader. Hrmm, gotta think more.

OK, I pushed another commit that hopefully fixes things.
One constraint of this design is that create a generator, which encapsulates the loop-over-hashseq flow for getting collections. We start the generator before connecting to a node, to yield Complete in case we have everything available locally. The generator is resumed with a connection, to then perform the actual download protocol, continuing the loop as needed. However, this generator we can only ever resume once. So if the node fails during the download, and we want to try the next node, we have to recreate the generator. This is what we do now in the PR. This means, though, that in this case the FoundLocal events would be emitted again.
When using the iroh blobs client, this is not necessarily an issue, because the TransferState that we reduce the events into by default deals fine with this.
I see three options now:

a) Keep as-is in the PR and document that events may be emitted multiple times when the download is auto-retried, and have to deduplicated or ignored client-side if acting on each event
b) Deduplicate the events when sending them out, by keeping a TransferState in the progress sender. This is straightforward to add to the queued downloader, because there we keep a TransferState  anyway to emit an initial state when a new intent is added to an already-queued download request. If we want to have it for direct downloads too, the "keep a transfer state" logic would have to be added to the get_to_db flow as well. Might be rather straightforward too, but would increase the state being kept.
c) Do not use a generator, but rewrite the get_to_db loop so that they return a cloneable struct of its state at the time when it needs a conn, and resume with that struct. This likely means "write manual state machine instead of looping dynamically". Not super keen on doing this, but it wouldn't be the end of the world either, the loop is not that complex.

WDYT? Also, cc @rklaehn

The problem I see with the current approach is that you would get Local events, for blobs that where not local before, eg peer 1 has blob1, but not blob2, and peer 2 has blob2, so you get the following events if I understand correctly

Remote: Blob1
<Error, blob2 not found with peer1>

Local: Blob1
Remote: Blob2

The problem I see with the current approach is that you would get Local events, for blobs that where not local before

True. We should write a test for the scenario you made up in any case.
My current thinking is that we could use the TransferState that already exists to check if any event should be emitted or not. At least for FoundLocal. So option b) that is.
And for Found (which should really be renamed FoundRemote) we should add the node id of the remote peer IMO and emit them multiple times. Edit: Ugh, we can't do that, because iroh-blobs doesn't know about node ids, it works with regular quic connections too. Unfortunate. Either a new generic around the connection it is, or mapping the node id in in the higher layers.
This is turning out a bit bigger than envisioned. I'd say let's keep discussing a bit and then I can impl what we arrive at (did this a bit "on the go" so far, without having gotten at these difficulties before. This is good to tackle however, on current main we are a) double-emitting events for each node we try, and b) have no tests for that).

I think if we have the lower levels of iroh-blobs emit events on a per transfer basis this is good.
For the events emitted from the downloader, I am thinking we could lean into the duplicate events and wrap the events in a an event like this
enum DownloaderEvent {
  BlobTransferEvent {
    event: BlobEvent,
    target_node: NodeId,
  }
}

and allow full insight into the actual happenings for a user


Disable warnings on labels

Hi,
I'm using react-intl's <FormattedMessage /> to display labels in menus and buttons. When I'm using this, react gives me a warning like this:
warning.js:36 Warning: Failed prop type: Invalid prop `caption` of type `object` supplied to `MenuItem`, expected `string`.

Since <FormattedMessage /> displays a string everything works fine. Would it be OK to extend the prop types on these items (Dropdown, MenuItem, Button etc...) to allow for React elements to be passed in?

Hi,
If it's possible, you can use the imperative API from react-intl. That way you avoid the warning and everything works perfectly (at least in my case).

I tried that and the warning disappeared. Thank you!


Update AWS instructions for recommender and sentiment

Hi, Terence.
There is a tiny error in the instructions for setting up our AWS instances to launch servers for both the recommender and sentiment projects. The commands with sudo pip should be replaced with pip, because:

sudo pip installs packages system-wide, not inside an active environment. In fact, on AWS you can't even access them outside of an environment, because we do not have admin privileges, only user privileges.

Now, you might ask why this problem didn't come up earlier when we did the recommender project. Well, in that case we were only installing numpy and Flask, both of which were already installed in the pytorch_p36 environment! In this case, vaderSentiment and colour are not installed in pytorch_p36, hence the issues this time around.
Using pip fixes the issue, since pip installs packages inside the current environment.
Hope this helps!
--matt
P.S. Here is a reproducible example. Running on Deep Learning AMI (Ubuntu) Version 24.2 (ami-02c253ecf7eaba73e)
From outside an environment
$ sudo pip install words2num     # words2num is a lightweight package with no dependencies
$ pip list | grep words2num
$                  # ta-da, nothing!

From within an active environment
(pytorch_p36) ubuntu@ip-172-31-12-30:~$ sudo pip install words2num
(pytorch_p36) ubuntu@ip-172-31-12-30:~$ pip list | grep words2num
(pytorch_p36) ubuntu@ip-172-31-12-30:~$

In fact, in both cases you should see the following warning:
WARNING: The directory '/home/ubuntu/.cache/pip' or its parent directory is not owned by the
current user and caching wheels has been disabled. check the permissions and owner of that
directory. If executing pip with sudo, you may want sudo's -H flag.

excellent, thanks, @msarmi9 !!


[WIP] feat(dag): add IPLD to dag.get

This PR is a proposal to resolve #738 and will also fix #747.
In the dag.get function we create an temporary in-memory IPLD resolver with a custom bitswap exchange hooked up to the block.get API call.
This is kinda awesome!
I've not implemented all the methods for the exchange, but you don't need to because it only uses get.
I created a utility module for extracting the CID and path from the cid arg...the spec for dag.get is flexible in that you can pass it a Qmhash, or a Qmhash/with/path or a CID instance but the IPLD module isn't as flexible and they need to be split into two args: CID(Qmhash) and /with/path.
I've also added explain-error because it's really good at adding context to error messages whilst also retaining the original error & stack. It also means that in tests we can assert on error messages that are generated within this module rather than (possibly) randomly changing messages from dependencies.

BLOCKED
This is currently a breaking change to the way dag-pb nodes are traversed via path.
In go-ipfs you can do this:
ipfs dag get /ipfs/QmWgCbdDVhsXA8UzpaQwFgw71iGaLrAfyyy51XWpHzNu8C/gif

but with this pull request, to get the same object, you'd need to:
jsipfs dag get /ipfs/QmWgCbdDVhsXA8UzpaQwFgw71iGaLrAfyyy51XWpHzNu8C/Links/gif

Note "Links".

Note that go-ipfs intends to add /ipld namespace which will behave the same way as /ipfs does here. See https://github.com/ipfs/go-ipfs/pull/4672.
I'd also use ipfs dag relolve to resolve the path on the daemon side to limit api cals.

@magik6k thanks for looking at this!
I'd love to use dag.resolve but js-ipfs daemon doesn't have it. Is dag.resolve going away in go-ipfs or is it worth implementing it in js-ipfs and adding it to the spec?

dag.resolve should not exist as it stands per all the conversations I, @whyrusleeping and @jbenet had in the past, both in person and async. It has been almost 2 years since the work on this API started, not worth going through all the data points, the tl;dr; is that there wasn't the opportunity to commit to an API for both implementations.
I took a lot of notes along the way here, find them at:

https://github.com/ipfs/interface-ipfs-core/issues/81
https://github.com/ipfs/interface-ipfs-core/issues/121
https://github.com/ipfs/interface-ipfs-core/issues/125

My suggestion is for everyone to get a revisited dag API and implement it for both implementations that respects all the constraints (i.e. we can't just use JSON serialization for responses over HTTP as it messes up with types).

unblocked thanks to https://github.com/ipld/js-ipld-dag-pb/pull/78


Previous versions of Docker

Add information on where to find older versions of Docker Desktop for Mac OSX and Windows. See e.g.

3.x-mac
2.x-mac
3.x-windows
2.x-windows

Docker Desktop 3.6.0 works for Mac OSX El Capitan (v10.15.7).

Solved with 3ebac077fccacb925c35471e5d3c0767f283abc8


Upgrade tonic-build to 0.10.2

Checklist

[x] I have read the Contributor Guide
[x] I have read and agree to the Code of Conduct
[x] I have added a description of my changes and why I'd like them included in the section below

Description of Changes
Upgrade tonic-build to latest (0.10.2) and bump crate version

That's a good point. My thinking was that it might be surprising to find that bumping the patch version of the tool can potentially break a project that is using the tool. I'm happy to go with 0.1.3.

That's a good point. My thinking was that it might be surprising to find that bumping the patch version of the tool can potentially break a project that is using the tool. I'm happy to go with 0.1.3.

You know what, you've got fresh eyes, I think your feeling is right, bumping a major if protos break with new versions sounds good


feat(docs) prefix info in migration docs

Describe pull-request
A draft on how we could inform about the prefix change.
Solving issue
Fixes: DTS-1764
How to test

Go to Storybook
Check in "Migrating from components v4" document.
Look at the newly added info in the document

I think this needs rebase?

Closing this one due to a lot of merge conflicts and opening a new one.


Detox seems to keep waiting for requests that are already completed

Description
Been trying to setup a simple scenario with detox, it actually works till some point
My test is for login, it works until I press my login button, after that the test hangs because it seems that detox is waiting for requests to finish.
But I don't have requests in flight, I've interacted with the emulator while the test is in flight and every new request is added to the list (see the last log), but when they are completed they don't ever get removed from the log, that's why I think that this might be a bug..

[x] I have tested this issue on the latest Detox release and it still reproduces

Reproduction
I don't expect it to be helpful, but the code is this:
import TheWorld, { TheWorldInstance } from '../helpers/world/TheWorld'
import { createUsers } from '../helpers/background/have'
import Navigator from '../helpers/Navigator'
import { element, expect } from 'detox'

describe('Example', () => {
    let world: TheWorldInstance = null!

    const typeOnFormInput = async (id: string, text: string) => {
        await element(
            by.id('base-form-input').withAncestor(by.id(id))
        ).typeText(text)
    }

    const pressElement = async (id: string) => {
        await element(by.id(id)).tap()
    }

    const requireTextById = async (id: string, text: string) => {
        await expect(element(by.id(id))).toHaveText(text)
    }

    beforeEach(async () => {
        world = new TheWorld()
        await device.reloadReactNative()
    })

    it('should login successfully', async () => {
        const johnnyName = 'Johnny Test'
        await createUsers(world, [{
            name: johnnyName
        }])
        await Navigator.goToLogin()

        const johnny = world.userByName(johnnyName)

        await typeOnFormInput('user-email-input', johnny.email)
        await typeOnFormInput('user-password-input', johnny.password)
        // The test hangs here, where the first request start
        await pressElement('login-button')
        await requireTextById('agenda-screen-title', 'Agenda')
    })
})

Expected behavior
I expect detox to not wait for requests that are already completed
Environment (please complete the following information):

Detox: 16.0.0
React Native: 0.61.5
Node: 12.9.1
Device: iPhone 11 simulator
Xcode: 11.3.1
iOS: 13.3
macOS:  10.15.1

If you are experiencing a timeout in your test

[x] I have followed the instructions under Lower-level Idling Resources Debug and am providing the log below:

2020-03-18 11:37:01.921 Db Keepfy[10977:2df6c] [com.wix.Detox:EarlGreyStatistics] WXAnimatedDisplayLinkIdlingResource -> busy (null)
2020-03-18 11:37:01.921 Db Keepfy[10977:2df6c] [com.wix.Detox:EarlGreyStatistics] WXAnimatedDisplayLinkIdlingResource -> busy (null)
2020-03-18 11:37:01.921 Db Keepfy[10977:2df6c] [com.wix.Detox:EarlGreyStatistics] WXAnimatedDisplayLinkIdlingResource -> busy (null)
2020-03-18 11:37:01.921 Db Keepfy[10977:2df6c] [com.wix.Detox:EarlGreyStatistics] WXAnimatedDisplayLinkIdlingResource -> busy (null)
2020-03-18 11:37:01.921 Db Keepfy[10977:2df6c] [com.wix.Detox:EarlGreyStatistics] WXAnimatedDisplayLinkIdlingResource -> busy (null)
2020-03-18 11:37:01.921 Db Keepfy[10977:2df6c] [com.wix.Detox:EarlGreyStatistics] WXAnimatedDisplayLinkIdlingResource -> busy (null)
2020-03-18 11:37:01.921 Db Keepfy[10977:2df6c] [com.wix.Detox:EarlGreyStatistics] WXAnimatedDisplayLinkIdlingResource -> busy (null)
2020-03-18 11:37:01.921 Db Keepfy[10977:2df6c] [com.wix.Detox:EarlGreyStatistics] WXAnimatedDisplayLinkIdlingResource -> busy (null)
2020-03-18 11:37:01.921 Db Keepfy[10977:2df6c] [com.wix.Detox:EarlGreyStatistics] WXAnimatedDisplayLinkIdlingResource -> busy (null)
2020-03-18 11:37:01.921 Db Keepfy[10977:2df6c] [com.wix.Detox:EarlGreyStatistics] WXAnimatedDisplayLinkIdlingResource -> busy (null)
2020-03-18 11:37:01.921 Db Keepfy[10977:2df6c] [com.wix.Detox:EarlGreyStatistics] WXAnimatedDisplayLinkIdlingResource -> busy (null)
2020-03-18 11:37:01.921 Db Keepfy[10977:2df6c] [com.wix.Detox:EarlGreyStatistics] WXAnimatedDisplayLinkIdlingResource -> busy (null)
2020-03-18 11:37:01.921 Db Keepfy[10977:2df6c] [com.wix.Detox:EarlGreyStatistics] WXAnimatedDisplayLinkIdlingResource -> busy (null)
2020-03-18 11:37:01.922 Db Keepfy[10977:2df6c] [com.wix.Detox:EarlGreyStatistics] WXAnimatedDisplayLinkIdlingResource -> busy (null)
2020-03-18 11:37:01.922 Db Keepfy[10977:2df6c] [com.wix.Detox:EarlGreyStatistics] WXAnimatedDisplayLinkIdlingResource -> busy (null)
2020-03-18 11:37:01.922 Db Keepfy[10977:2df6c] [com.wix.Detox:EarlGreyStatistics] WXAnimatedDisplayLinkIdlingResource -> busy (null)
2020-03-18 11:37:01.923 Db Keepfy[10977:2df6c] [com.wix.Detox:EarlGreyStatistics] WXAnimatedDisplayLinkIdlingResource -> busy (null)
2020-03-18 11:37:01.923 Db Keepfy[10977:2df6c] [com.wix.Detox:EarlGreyStatistics] WXAnimatedDisplayLinkIdlingResource -> busy (null)
2020-03-18 11:37:01.923 Db Keepfy[10977:2df6c] [com.wix.Detox:EarlGreyStatistics] WXAnimatedDisplayLinkIdlingResource -> busy (null)
2020-03-18 11:37:01.923 Db Keepfy[10977:2df6c] [com.wix.Detox:EarlGreyStatistics] WXAnimatedDisplayLinkIdlingResource -> busy (null)
2020-03-18 11:37:01.923 Db Keepfy[10977:2df6c] [com.wix.Detox:EarlGreyStatistics] WXAnimatedDisplayLinkIdlingResource -> busy (null)
2020-03-18 11:37:01.923 Db Keepfy[10977:2df6c] [com.wix.Detox:EarlGreyStatistics] WXAnimatedDisplayLinkIdlingResource -> busy (null)
2020-03-18 11:37:01.924 Db Keepfy[10977:2df6c] [com.wix.Detox:EarlGreyStatistics] WXAnimatedDisplayLinkIdlingResource -> busy (null)
2020-03-18 11:37:01.924 Db Keepfy[10977:2df6c] [com.wix.Detox:EarlGreyStatistics] WXAnimatedDisplayLinkIdlingResource -> busy (null)
2020-03-18 11:37:01.924 Db Keepfy[10977:2df6c] [com.wix.Detox:EarlGreyStatistics] WXAnimatedDisplayLinkIdlingResource -> busy (null)
2020-03-18 11:37:01.924 Db Keepfy[10977:2df6c] [com.wix.Detox:EarlGreyStatistics] WXAnimatedDisplayLinkIdlingResource -> busy (null)
2020-03-18 11:37:01.924 Db Keepfy[10977:2df6c] [com.wix.Detox:EarlGreyStatistics] WXAnimatedDisplayLinkIdlingResource -> busy (null)

I've disabled my animations using the e2e replacement, lottie is present on the project but the only animation it executes was removed for the test.
Device and verbose Detox logs

[x] I have run my tests using the --loglevel trace argument and am providing the verbose log below:

This is basically repeated until the test ends with timeout:
detox[11508] INFO:  [actions.js] Sync WXAnimatedDisplayLinkIdlingResource: undefined
detox[11508] INFO:  [actions.js] Sync App State: Waiting for view's draw or layout pass to complete: (
    "http://localhost:8081/assets/src/@assets/images/logo-name-white.png?platform=ios&hash=507d34f0f19f8da3a7127db01eb97978",
    "http://localhost:8081/assets/src/@assets/images/logo-name-white.png?platform=ios&hash=507d34f0f19f8da3a7127db01eb97978",
    "https://app-backend.com/graphql",
    "https://app-backend.com/graphql",
    "http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false",
    "https://app-backend.com/graphql"
)
detox[11508] INFO:  [actions.js] Sync Dispatch Queue: com.apple.main-thread
detox[11508] TRACE: [AsyncWebSocket.js/WEBSOCKET_SEND] {"type":"currentStatus","params":{},"messageId":548}
detox[11508] TRACE: [DetoxServer.js/MESSAGE] role=tester action=currentStatus (sessionId=95c8dee0-416f-e09c-0f27-e26bfb404a00)
detox[11508] TRACE: [DetoxServer.js/MESSAGE] role=testee action=currentStatusResult (sessionId=95c8dee0-416f-e09c-0f27-e26bfb404a00)
detox[11508] TRACE: [AsyncWebSocket.js/WEBSOCKET_MESSAGE] {"type":"currentStatusResult","messageId":548,"params":{"state":"busy","resources":[{"name":"WXAnimatedDisplayLinkIdlingResource","info":{}},{"name":"Dispatch Queue","info":{"queue":"<OS_dispatch_queue_main: com.apple.main-thread[0x7fff89eb43c0] = { xref = -2147483648, ref = -2147483648, sref = 1, target = com.apple.root.default-qos.overcommit[0x7fff89eb4840], width = 0x1, state = 0x001ffe9000000300, dirty, in-flight = 0, thread = 0x303 }>","prettyPrint":"com.apple.main-thread"}}],"messageId":548}}

detox[11508] INFO:  [actions.js] Sync WXAnimatedDisplayLinkIdlingResource: undefined
detox[11508] INFO:  [actions.js] Sync Dispatch Queue: com.apple.main-thread
detox[11508] TRACE: [AsyncWebSocket.js/WEBSOCKET_SEND] {"type":"currentStatus","params":{},"messageId":549}
detox[11508] TRACE: [DetoxServer.js/MESSAGE] role=tester action=currentStatus (sessionId=95c8dee0-416f-e09c-0f27-e26bfb404a00)
detox[11508] TRACE: [DetoxServer.js/MESSAGE] role=testee action=currentStatusResult (sessionId=95c8dee0-416f-e09c-0f27-e26bfb404a00)
detox[11508] TRACE: [AsyncWebSocket.js/WEBSOCKET_MESSAGE] {"type":"currentStatusResult","messageId":549,"params":{"state":"busy","resources":[{"name":"WXAnimatedDisplayLinkIdlingResource","info":{}},{"name":"Dispatch Queue","info":{"queue":"<OS_dispatch_queue_main: com.apple.main-thread[0x7fff89eb43c0] = { xref = -2147483648, ref = -2147483648, sref = 1, target = com.apple.root.default-qos.overcommit[0x7fff89eb4840], width = 0x1, state = 0x001ffe9000000300, dirty, in-flight = 0, thread = 0x303 }>","prettyPrint":"com.apple.main-thread"}}],"messageId":549}}

detox[11508] INFO:  [actions.js] Sync WXAnimatedDisplayLinkIdlingResource: undefined
detox[11508] INFO:  [actions.js] Sync Dispatch Queue: com.apple.main-thread
detox[11508] TRACE: [AsyncWebSocket.js/WEBSOCKET_SEND] {"type":"currentStatus","params":{},"messageId":550}
detox[11508] TRACE: [DetoxServer.js/MESSAGE] role=tester action=currentStatus (sessionId=95c8dee0-416f-e09c-0f27-e26bfb404a00)
detox[11508] TRACE: [DetoxServer.js/MESSAGE] role=testee action=currentStatusResult (sessionId=95c8dee0-416f-e09c-0f27-e26bfb404a00)
detox[11508] TRACE: [AsyncWebSocket.js/WEBSOCKET_MESSAGE] {"type":"currentStatusResult","messageId":550,"params":{"state":"busy","resources":[{"name":"WXAnimatedDisplayLinkIdlingResource","info":{}},{"name":"App State","info":{"appState":"Waiting for view's draw or layout pass to complete","urls":["http://localhost:8081/assets/src/@assets/images/logo-name-white.png?platform=ios&hash=507d34f0f19f8da3a7127db01eb97978","http://localhost:8081/assets/src/@assets/images/logo-name-white.png?platform=ios&hash=507d34f0f19f8da3a7127db01eb97978","https://app-backend.com/graphql","https://app-backend.com/graphql","http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false","https://app-backend.com/graphql"],"prettyPrint":"Waiting for view's draw or layout pass to complete: (\n    \"http://localhost:8081/assets/src/@assets/images/logo-name-white.png?platform=ios&hash=507d34f0f19f8da3a7127db01eb97978\",\n    \"http://localhost:8081/assets/src/@assets/images/logo-name-white.png?platform=ios&hash=507d34f0f19f8da3a7127db01eb97978\",\n    \"https://app-backend.com/graphql\",\n    \"https://app-backend.com/graphql\",\n    \"http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false\",\n    \"https://app-backend.com/graphql\"\n)","elements":["CACHED: LocalDataTask <2A1229C2-5E20-45A3-8084-A4BBA936D5F4>.<2>","CACHED: LocalDataTask <51ECCF7F-AB0A-40BF-A3B0-AD928A482B4C>.<1>","CACHED: LocalDataTask <C9FB15AA-1220-4CDF-A55E-E146E0002364>.<5>","<CALayer: 0x6000022abac0>","CACHED: LocalDataTask <8E2DB8F5-53D4-4D0C-AE21-3B206049435C>.<4>","<CALayer: 0x6000022b8620>","CACHED: LocalDataTask <949DDC38-4FA6-4B60-A788-C498D3948A29>.<1>","CACHED: LocalDataTask <B70C42DB-B488-4B6F-A874-5F5481B182A7>.<3>"]}},{"name":"Dispatch Queue","info":{"queue":"<OS_dispatch_queue_main: com.apple.main-thread[0x7fff89eb43c0] = { xref = -2147483648, ref = -2147483648, sref = 1, target = com.apple.root.default-qos.overcommit[0x7fff89eb4840], width = 0x1, state = 0x001ffe9000000300, dirty, in-flight = 0, thread = 0x303 }>","prettyPrint":"com.apple.main-thread"}}],"messageId":550}}

detox[11508] INFO:  [actions.js] Sync WXAnimatedDisplayLinkIdlingResource: undefined
detox[11508] INFO:  [actions.js] Sync App State: Waiting for view's draw or layout pass to complete: (
    "http://localhost:8081/assets/src/@assets/images/logo-name-white.png?platform=ios&hash=507d34f0f19f8da3a7127db01eb97978",
    "http://localhost:8081/assets/src/@assets/images/logo-name-white.png?platform=ios&hash=507d34f0f19f8da3a7127db01eb97978",
    "https://app-backend.com/graphql",
    "https://app-backend.com/graphql",
    "http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false",
    "https://app-backend.com/graphql"
)
detox[11508] INFO:  [actions.js] Sync Dispatch Queue: com.apple.main-thread

I'm closing, it's a lib animation as emulator logs indicated.
I'm still confused from the:
detox[11508] INFO:  [actions.js] Sync App State: Waiting for view's draw or layout pass to complete: (
    "http://localhost:8081/assets/src/@assets/images/logo-name-white.png?platform=ios&hash=507d34f0f19f8da3a7127db01eb97978",
    "http://localhost:8081/assets/src/@assets/images/logo-name-white.png?platform=ios&hash=507d34f0f19f8da3a7127db01eb97978",
    "https://app-backend.com/graphql",
    "https://app-backend.com/graphql",
    "http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false",
    "https://app-backend.com/graphql"
)

That where being shown repeatedly and by the fact that every new request was added to these logs...


fix: prerender not awaiting sheet reset

Fixes #17
The issue I was running into was when multiple links lead to the same content. Say neither /foo nor /bar existed, so both urls would lead to a 404 page.
/foo (the 404 page) would have the correct styles, but /bar would not. /bar would be missing the content specific to the 404 page, but oddly, not the global styles (like header, page background, etc. Still not entirely sure why this is, but I'm not curious enough to go looking).
Finally realized it was the sheet only finishing it's reset after the next page had been prerendered. Just needed to insert an await to ensure the reset finished before prerendering the next page, else any common / shared styles would be removed.

Thank you!

Published as<EMAIL_ADDRESS>

Awesome, thanks!

Just as a random side note, the build / publish for @twind/wmr is way more complicated than it needs to be. You should be good just providing the (now) ESNext output + types, nothing more. It's quite a mess of files and formats that will never be used by WMR at the moment. The CJS output, for example, will never work with WMR as it relies on a Node built-in. That will immediately error out during the build if there's an attempt to use it.
I didn't really want to mess with the build process too much, so I thought I'd just mention it here as distilt is a bit short on docs and I'm not sure if you can just reduce down its output to ESNext.


⚠ Samsung has degraded performance

In a3541e7, Samsung (https://samsung.com) experienced degraded performance:

HTTP code: 200
Response time: 2954 ms

Resolved: Samsung performance has improved in 4423860.


remove deprecated version property in docker compose files

https://nickjanetakis.com/blog/docker-tip-51-which-docker-compose-api-version-should-you-use
https://github.com/compose-spec/compose-spec/blob/77bd39a846442132495990c221d5aa3509ce19bc/04-version-and-name.md

I have been dropping these for a while. I think VS Code was confused by it for a while (more or less a Linux thing) but that hasn't been for a while.

@jefftriplett I haven't thought about it, just been mindlessly adding it, until today when I updated Docker and it started logging WARN[0000] /home/josh/projects/webtools/compose.yml: version is obsolete


A simple example

Hello I want to use the project doctrine-rest for a small test that I have. I want it because I want to use doctrine as ORM as well. I have a specification to use HTTP JSON API for subscribers and fields (each subscriber can have multiple fields). Can you provide a simple working example on how to use it or maybe you have wiki? Where is the documentation page?
All I want is a base example with routing added and how to handle incoming requests. Is routing supported in doctrine-rest or is an external class (maybe symfony?)?
Thanks in advance,
Nikos

Hey
Only documentation exists right now is in README file.
Routing is not supported should be implemented depend on framework used.
The best way to get into the library is to read unit tests.
https://github.com/R3VoLuT1OneR/doctrine-rest/tree/master/tests/unit/Action
Currently implemented integration with Laravel framework:
https://github.com/R3VoLuT1OneR/laravel-doctrine-rest
But also there is no usage examples.

Ok I will read those links and try to get an understanding. Please keep this open for a while.
May I ask what a EntityTransformer is and how to use? Also where should I implement JsonApiResource on doctrine entity and what should this do?
Thanks so far

Can I hire you to develop a small json api test case for subscribers and fields using some rest php library out of the box with doctrine? I already have the models and all of that but I am afraid I will run out of time (I have 8 days to deliver it) if I try to delve into and extract the documentation. This way I can learn by example while at the same time I develop the test case. If you are interested let me know.

EntityTransformer is a fractal transformer. I use fractal library for transformation entities into JSON API response. https://fractal.thephpleague.com/
JsonApiResource should be implemented on doctrine entity in order to build proper references url in JSON API response.
Basically the library is collection of REST actions. So depend on REST action you need, you should look how each action implemented.
So the action flow next:

Get symfony httpfoundation request and create new RestRequest object.

// Get http request from framework or init yourself
$httpRequest = Symfony\Component\HttpFoundation\Request::createFromGlobals();
$restRequest = new RestRequest($httpRequest);

Or implement your own request class that will implement RestRequestContract

After you have request we need create an CollectionAction object, that used for Index rest actions. For that we would net RestRepository object, that used as EntityRepository for rest actions and fractal transformer.

$transformer = new SubscriberTransformer();

$restRepository = new RestRepository(
   $entityManager,
   $entityManager->getClassMetadata(Subscriber::class)
);

$action = new CollectionAction($restRepository, $transformer);

// dispatch action
$response = $action->dispatch($request);

$response is RestResponse object, that extends Symfony\Component\HttpFoundation\JsonResponse that easily converts into json response.

@foo123 Sent you hangout invite to nikosms0 at gmail. you can add me r3volut1oner

can we do skype? I can send you the requirements..

@foo123 Find me in skype, same username

Ok i did, waiting for response.

Thank you for your skype response. I will try to work it out and see how it goes. If I have further questions/issues I will post on github. Thanks


ResizeObserver bottleneck

While implementing a ResizeObserver to our own software I noticed a bottleneck in your implementation of the observer.
ro: new ResizeObserver(entries => {
    for (const entry of entries) {
        let id = Array.from(entry.target.attributes).find(e => e.name.startsWith('_bl')).name.substring(4);
        let element = s.tracked[id];
        if (element) {
            element.ref.invokeMethodAsync('OnResize', entry.target.getBoundingClientRect());
        }
    }
}),

You are calling entry.target.getBoundingClientRect() during the invocation of the dotnet method. getBoundingClientRect() is expensive and one of the layout-trashing methods. The way better approach is to use entry.contentRect which is provided with the entry already.
ro: new ResizeObserver(entries => {
    for (const entry of entries) {
        let id = Array.from(entry.target.attributes).find(e => e.name.startsWith('_bl')).name.substring(4);
        let element = s.tracked[id];
        if (element) {
            element.ref.invokeMethodAsync('OnResize', entry.contentRect);
        }
    }
}),

It's a little change but it will probably increase the performance by a good piece for larger diagrams.

Very interesting, thank you!
Never knew about this honestly, I'll try to apply it in the next version.

Ok, I messed up.
So there is a catch with entry.contentRect: after some more development time with our ResizeObserver implementation I noticed a crucial difference to getBoundingClientRect(). The observer only passes the targeted elements size, which results in 0 values for x, y, left and top. In other words: The observer passes the size but not the position of the target element within the client.
I am sorry that I misunderstood that and pointed that out before researching enough. I don't know if this remains to be useful for the lib because I am not far enough into the targets of your observer and if the absolute position is needed. Hopefully you can make use of the information above either way.

Right, now I remember why I was calling getBoundingClientRect instead of just using contentRect!
For the nodes, I only use the sizes. But for the canvas container, I use the positions as well, so them being 0 is a problem. This is just in case the canvas is resized and moved at the same time. The mutation observer might not pick it up.


Migrate Our.Umbraco.GMaps to Bellissima

Source: https://github.com/ArnoldV/Our.Umbraco.GMaps
It is likely that only the frontend would need work, which lives in https://github.com/ArnoldV/Our.Umbraco.GMaps/tree/develop/Our.Umbraco.GMaps/wwwroot

During UmbraCollab we've made a good bit of progress, so it mostly needs polish now - https://github.com/nul800sebastiaan/UmbraCollabBellissimaGmaps.git


Heroku 22 Stack Image Hierarchy diagram

As someone new to CNB, the relationship between all the various images and how they relate to the Heroku stack image and the CNB concepts is pretty confusing. To help wrap my head around it all, I ended up making a diagram. Sharing here in case there is interest in including it in the documentation.

Cool, we need more illustrations like this again in our docs I think.
Would you mind turning this into an inline Mermaid diagram?
The coloring etc might then be not as nice, but it will be so, so much easier to keep this diagram up to date going forward - we'll likely make some changes to the hierarchy in the next few months already, for which we'll need the source files (or re-do the diagram in some app).
Keeps repo size small, too ;)

@dzuelke I opened https://github.com/heroku/cnb-builder-images/pull/437 with the same thing in Mermaid. (I did it on a separate branch so we can delete this branch to avoid the image from becoming part of the git history.)


Network disconnects since TPKT commits on issue #5946

Describe the bug
After issue #5946 I am experiencing network disconnects.
To Reproduce
Steps to reproduce the behavior:

Start xfreerdp and connect to Windows 2012 R2 RDS server.
Bring up a file in  notepad or otherwise expose text to copy and paste.
Highlight and copy the text.
Return back to the desktop session and try to paste.
Before you are allowed to paste, your session disappears.

Expected behavior
You return back to your session and paste the text.
Screenshots
N/A
Application details

Version: latest nightly xfreerdp version
Command line: any command line that defaults to use clipboard redirection.
OS version connecting to: Windows 2012 R2 RDS Server
If available the log output from a run with /log-level:trace
[14:40:41:511] [4438:4488] [WARN][com.freerdp.client.x11] - X11 trying to lock although already locked!
[14:40:41:511] [4438:4488] [WARN][com.freerdp.client.x11] - X11: trying to unlock although not locked!
[14:40:42:091] [4438:4488] [WARN][com.freerdp.client.x11] - X11 trying to lock although already locked!
[14:40:42:095] [4438:4503] [WARN][com.freerdp.client.x11] - X11: trying to unlock although not locked!
[14:40:42:123] [4438:4503] [WARN][com.freerdp.client.x11] - X11 trying to lock although already locked!
[14:40:42:129] [4438:4501] [WARN][com.freerdp.channels.cliprdr.common] - [cliprdr_packet_format_list_new] called with invalid type 00000000
[14:40:46:731] [4438:4488] [WARN][com.freerdp.client.x11] - X11 trying to lock although already locked!
[14:40:51:371] [4438:4488] [WARN][com.freerdp.client.x11] - X11 trying to lock although already locked!
[14:40:54:747] [4438:4503] [WARN][com.freerdp.client.x11] - X11 trying to lock although already locked!
[14:40:54:747] [4438:4488] [WARN][com.freerdp.client.x11] - X11: trying to unlock although not locked!
[14:40:58:640] [4438:4488] [WARN][com.freerdp.client.x11] - X11 trying to lock although already locked!
[14:41:00:129] [4438:4488] [ERROR][com.freerdp.core.rdp] - rdp_recv_tpkt_pdu: freerdp_channel_process() fail
[14:41:00:129] [4438:4488] [ERROR][com.freerdp.core.transport] - transport_check_fds: transport->ReceiveCallback() - -1
[14:41:00:129] [4438:4488] [ERROR][com.freerdp.core] - freerdp_check_fds() failed - 0
[14:41:00:129] [4438:4488] [ERROR][com.freerdp.client.x11] - Failed to check FreeRDP file descriptor
[14:40:39:199] [4438:4488] [INFO][com.freerdp.core] - freerdp_connect:freerdp_set_last_error_ex resetting error state
[14:40:39:199] [4438:4488] [INFO][com.freerdp.client.common.cmdline] - loading channelEx rdpdr
[14:40:39:200] [4438:4488] [INFO][com.freerdp.client.common.cmdline] - loading channelEx rdpsnd
[14:40:39:200] [4438:4488] [INFO][com.freerdp.client.common.cmdline] - loading channelEx cliprdr
[14:40:39:200] [4438:4488] [INFO][com.freerdp.client.common.cmdline] - loading channelEx drdynvc
[14:40:39:545] [4438:4488] [INFO][com.freerdp.primitives] - primitives autodetect, using optimized
[14:40:39:553] [4438:4488] [INFO][com.freerdp.core] - freerdp_tcp_is_hostname_resolvable:freerdp_set_last_error_ex resetting error state
[14:40:39:553] [4438:4488] [INFO][com.freerdp.core] - freerdp_tcp_connect:freerdp_set_last_error_ex resetting error state
[14:40:41:113] [4438:4488] [INFO][com.freerdp.gdi] - Local framebuffer format  PIXEL_FORMAT_BGRX32
[14:40:41:113] [4438:4488] [INFO][com.freerdp.gdi] - Remote framebuffer format PIXEL_FORMAT_BGRA32
[14:40:41:149] [4438:4488] [INFO][com.winpr.clipboard] - initialized POSIX local file subsystem
[14:40:41:149] [4438:4488] [INFO][com.freerdp.channels.rdpsnd.client] - [static] Loaded fake backend for rdpsnd
[14:40:41:150] [4438:4500] [INFO][com.freerdp.channels.rdpdr.client] - Loading device service drive [Temp] (static)
[14:40:41:150] [4438:4488] [INFO][com.freerdp.channels.drdynvc.client] - Loading Dynamic Virtual Channel rdpgfx
[14:40:41:556] [4438:4488] [INFO][com.freerdp.core] - rdp_set_error_info:freerdp_set_last_error_ex resetting error state
[14:40:42:417] [4438:4500] [INFO][com.freerdp.channels.rdpdr.client] - registered device #1: Temp (type=8 id=1)
[14:41:00:129] [4438:4488] [INFO][com.freerdp.client.common] - Network disconnect!
[14:41:16:088] [4542:4554] [WARN][com.freerdp.channels.cliprdr.common] - [cliprdr_packet_format_list_new] called with invalid type 00000000
[14:41:16:675] [4542:4556] [WARN][com.freerdp.client.x11] - X11 trying to lock although already locked!
[14:41:16:675] [4542:4548] [WARN][com.freerdp.client.x11] - X11: trying to unlock although not locked!
[14:41:25:233] [4542:4548] [WARN][com.freerdp.client.x11] - X11 trying to lock although already locked!
[14:41:26:286] [4542:4548] [WARN][com.freerdp.client.x11] - X11 trying to lock although already locked!
[14:41:26:290] [4542:4548] [WARN][com.freerdp.client.x11] - X11: trying to unlock although not locked!
[14:41:29:645] [4542:4548] [WARN][com.freerdp.client.x11] - X11 trying to lock although already locked!
[14:41:29:648] [4542:4548] [WARN][com.freerdp.client.x11] - X11: trying to unlock although not locked!
[14:41:33:424] [4542:4548] [WARN][com.freerdp.client.x11] - X11 trying to lock although already locked!
[14:41:33:427] [4542:4556] [WARN][com.freerdp.client.x11] - X11: trying to unlock although not locked!
[14:41:33:431] [4542:4548] [WARN][com.freerdp.client.x11] - X11 trying to lock although already locked!
[14:41:33:431] [4542:4548] [WARN][com.freerdp.client.x11] - X11: trying to unlock although not locked!
[14:41:36:904] [4542:4548] [WARN][com.freerdp.client.x11] - X11 trying to lock although already locked!
[14:41:36:904] [4542:4548] [WARN][com.freerdp.client.x11] - X11: trying to unlock although not locked!
[14:41:43:863] [4542:4548] [ERROR][com.freerdp.core.rdp] - rdp_recv_tpkt_pdu: freerdp_channel_process() fail
[14:41:43:863] [4542:4548] [ERROR][com.freerdp.core.transport] - transport_check_fds: transport->ReceiveCallback() - -1
[14:41:43:863] [4542:4548] [ERROR][com.freerdp.core] - freerdp_check_fds() failed - 0
[14:41:43:864] [4542:4548] [ERROR][com.freerdp.client.x11] - Failed to check FreeRDP file descriptor

=================================================================
==4542==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 136 byte(s) in 1 object(s) allocated from:
#0 0x7f08f5273720 in __interceptor_realloc (/lib/x86_64-linux-gnu/libasan.so.5+0xe9720)
#1 0x7f08f509f7a9  (/lib/x86_64-linux-gnu/libX11.so.6+0x567a9)
Indirect leak of 1360 byte(s) in 17 object(s) allocated from:
#0 0x7f08f5273518 in calloc (/lib/x86_64-linux-gnu/libasan.so.5+0xe9518)
#1 0x7f08f509f77e  (/lib/x86_64-linux-gnu/libX11.so.6+0x5677e)
Indirect leak of 112 byte(s) in 14 object(s) allocated from:
#0 0x7f08f5273330 in __interceptor_malloc (/lib/x86_64-linux-gnu/libasan.so.5+0xe9330)
#1 0x7f08f50a0102  (/lib/x86_64-linux-gnu/libX11.so.6+0x57102)
Indirect leak of 80 byte(s) in 3 object(s) allocated from:
#0 0x7f08f5273720 in __interceptor_realloc (/lib/x86_64-linux-gnu/libasan.so.5+0xe9720)
#1 0x7f08f50a001f  (/lib/x86_64-linux-gnu/libX11.so.6+0x5701f)
SUMMARY: AddressSanitizer: 1688 byte(s) leaked in 35 allocation(s).
Desktop (please complete the following information):

OS: [e.g. iOS] Debian 10, Gnome, Wayland
Browser [e.g. chrome, safari] N/A
Version [e.g. 22] N/A

Commandline and /buildconfig please

It might already be fixed, so be sure to check again with next nightly

OK, I just built master and it appears to be fixed already as you mentioned, sorry. I still get a lot of those warnings about X11 locking/unlocking though. Not sure what that is all about.

Ok, thx. Good to know. The x11 one is still pending.


Fix transform call in ImageFolderDataset

Description
Without this change I get the following (partial) error:
Expected exactly one or two argument for an accessor of transform at
/home/user/perl5/lib/perl5/AI/MXNet/Gluon/Data/Vision.pm line 422,  line 207.
This change addresses that error.
Checklist
Essentials
I will take a look at how to add unit test to this change.
Changes
There are no new features.   From my perspective the change addresses a typo as other packages in the same file call the transform sub the same way this change does.
Comments
I could not get original code to work so cannot confirm if change is backwards compatible.

@john- the tests seem to be stuck, can you please merge master to you branch and push to trigger new set of tests ? Thanks!

I am not quite sure what I am doing but so far I have:

Did a pull of master from apache/incubator-mxnet
Merge master into my branch
Pushed the branch back to my repo

When you say push to trigger a new set of tests does that mean do another pull request?

@john- thank you, I'll try to get the tests running

@szha Hi there, could you check when you have time why tests are stuck on this pr ?

@mxnet-label-bot Add [Perl, Gluon]

Thanks for the contribution @john-
I guess, way around for this would be to retrigger CI using
git commit --allow-empty -m "Trigger notification"
Hopefully this time it doesn't get stuck.

@john- gentle ping to trigger CI. thanks!

Do I need to:

Close this pull request
Do a 'git commit --allow-empty -m "Trigger notification"' in my branch
Do another pull request

I don't see how doing the 'git commit --allow-empty -m "Trigger notification"' will do anything otherwise.  Also, note that I merged master back into my branch.

I read through the Details for the ci failures and it is not clear to me how the errors relate to the pull request.   Can someone provide some insight?  Maybe I need to re-merge the master branch?


Berke/fix docs

some formats

Markdown generated by Quarto:

title: Pathway

Pathway is an open data processing framework.
It allows you to easily develop data transformation pipelines and
Machine Learning applications that work with live data sources and
changing data.

This notebook shows how to use the Pathway to deploy a live data
indexing pipeline which can be queried from your chains just like a
regular vector store. However, under the hood, Pathway updates the index
on each data change giving you always up-to-date answers.
In this notebook, we will use a simple document processing pipeline
that: 1. Monitors several data sources (files, S3 folders, cloud
storages) for data changes. 2. Parses, splits and embeds the documents
using LangChain methods. 3. Builds a vector index for the data.
We will connect to the index using a VectorStore client, which
implements the similarity_search function to retrieve matching
documents.
The basic pipeline described in this document allows to effortlessly
build a simple vector index of files stored in a cloud location.
However, Pathway provides everything needed to build realtime data
pipelines and apps, including SQL-like able operations such as
groupby-reductions and joins between disparate data sources, time-based
grouping and windowing of data, and a wide array of connectors.
Prerequisites {#prerequisites}
Install the pathway package. To use the most powerful,
unstructured.io based parser also install unstructured package.
# !pip install pathway

Building the data pipeline {#building-the-data-pipeline}
First, make suer you have an API key ith an LLM provider such as OpenAI.
import getpass
import os

if "OPENAI_API_KEY" not in os.environ:
    os.environ["OPENAI_API_KEY"] = getpass.getpass("OpenAI API Key:")

We will now assemble the data vectorization pipeline, using a simple
UTF8 file parser, CharacterTextSplitter, and OpenAIEmbeddings.
First, we define the data sources. For simplicity we use the files-based
one, but any supported pathway
connector, such
as s3 or
google
drive
will work too.
Then, we now define the LangChain components that define how the data
will be processed.
Last, we assemble the data pipeline. We will start it running in a
background thread, to be able to query it immediately from the
demonstration. Please note that in a production deployment, the server
will be running in another process, possibly on another machine. For the
quick-start, we keep the server and client as different threads of the
same python process.
import pathway as pw
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.text_splitter import CharacterTextSplitter
from langchain.vectorstores import PathwayVectorServer

# This creates a `pathway` connector that reads a single file.
data_sources = []
data_sources.append(
    pw.io.fs.read(
        "../../templates/rag-pathway/sample_documents",
        format="binary",
        mode="streaming",
        with_metadata=True,
    )
)

# This creates a connector that tracks files in Google drive.
# please follow the instructions at https://pathway.com/developers/tutorials/connectors/gdrive-connector/ to get credentials
# data_sources.append(
#     pw.io.gdrive.read(object_id="17H4YpBOAKQzEJ93xmC2z170l0bP2npMy", service_user_credentials_file="credentials.json", with_metadata=True))

# Choose proper LangChain document transformers
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
embeddings_model = OpenAIEmbeddings(openai_api_key=os.environ["OPENAI_API_KEY"])

# The PathwayVectorServer is a wrapper over pathway.xpacks.llm.vector_store to accept LangChain transforments
# Fell free to fork it to develop bespoke document processing pipelines.
vector_server = PathwayVectorServer(
    *data_sources,
    embedder=embeddings_model,
    splitter=text_splitter,
)
vector_server.run_server(host="<IP_ADDRESS>", port="8765", threaded=True, with_cache=False)

We now instantiate and configure the client
from langchain.vectorstores import PathwayVectorClient

client = PathwayVectorClient(
    host="<IP_ADDRESS>",
    port="8765",
)

And we can start asking queries
query = "What is Pathway?"
docs = client.similarity_search(query)

print(docs[0].page_content)

Your turn! Now make a change to the source documents or make a fresh
one and retry the query!
Using unstructured.io document parser {#using-unstructured.io-document-parser}
The vectorization pipeline supports pluggable parsers. The default
parser simply decodes files as UTF8. However, we also provide an
https://unstructured.io/ parser that can extract text out of many kinds
of documents:
# !pip install unstructured[all-docs]  # if you will need to parse complex documents

from pathway.xpacks.llm import parsers

vector_server = PathwayVectorServer(
    *data_sources,
    parser=parsers.ParseUnstructured(),
    embedder=embeddings_model,
    splitter=text_splitter,
)

Getting information on indexed files {#getting-information-on-indexed-files}
PathwayVectorClient.get_vectorstore_statistics() gives essential
statistics on the state of the vector store, like the number of indexed
files and the timestamp of last updated one. You can use it in your
chains to tell the user how fresh is your knowledge base.
client.get_vectorstore_statistics()

Filtering based on file metadata {#filtering-based-on-file-metadata}
We support document filtering using jmespath
expressions, for instance:
# take into account only sources modified later than unix timestamp
docs = client.similarity_search(query, metadata_filter="modified_at >= `1702672093`")

# take into account only sources modified later than unix timestamp
docs = client.similarity_search(query, metadata_filter="owner == `james`")

# take into account only sources with path containing 'repo_readme'
docs = client.similarity_search(query, metadata_filter="contains(path, 'repo_readme')")

# and of two conditions
docs = client.similarity_search(
    query, metadata_filter="owner == `james` && modified_at >= `1702672093`"
)

# or of two conditions
docs = client.similarity_search(
    query, metadata_filter="owner == `james` || modified_at >= `1702672093`"
)

Running in production {#running-in-production}
Running in a separate process {#running-in-a-separate-process}
A production deployment will typically run the server in a separate
process. We provide a template application under
templates.
We recommend to run the Pathway data indexing pipeline in a
container-based deployment environment, such as Docker or Kubernetes.
For more info see Pathway’s deployment
guide.
Configuring the cache {#configuring-the-cache}
The Pathway vectorizing pipeline comes with an embeddings cache:
vector_server.run_server(..., with_cache=True)

The default cache configuration is the locally hosted disk cache, stored
in the ./Cache directory. However, it is possible to customize it by
explicitly specifying the caching backend that can be chosen among
several persistent backends
options.


Support table scans in expressions (subquery)

We're currently not walking expressions in the FederationAnalyzerRule. This means any table scans in expressions are not handled correctly. For example, this means subqueries in a projection or filter are not handled. A first implementation could find table scans in the expressions and incorporate them into optimize_recursively.

Closed by #37.


Port add admin functionality from MLBPool2

Add the ability for the administrator to add a second admin - similar to MLBPool2

Completed in the changes branch - https://github.com/prcutler/nflpool/commit/3dfd2955c76fa80674e18b932af4e46714242a73
This will go live with the 2018 season when merged.


package id and multiple build types

Hi, we want to use the library to share images. Our app builds different types of the app, each with a different package id (example: com.myapp.dev, com.myapp.rc, com.myapp). The installation instructions require that I hardcode the package id into our manifest and MainApplication.java files in order for the library to share as expected. Do you have any recommendation on how to set up the project for this sort of case of variable package ids?

@embpdaniel You can use BuildConfig.APPLICATION_ID to reference it in MainApplication & for manifest file you can use '${applicationId}.provider' value


[Feature] flink yarn-session submission mode support

Feature Request
flink yarn-session submission mode support

i will take this issue

i will take this issue

👌🏻 good job.


Not narrowing nested discriminated union

Bug Report

🔎 Search Terms

nested discriminated union
This issue is definitely related to #18758, but it is different from that issue in that the tag is also present in the top-level type.
As in the top-level type, the nested types form a generic union, I believe this is also related to #13995.
🕗 Version & Regression Information

This is the behavior in every version I tried.
⏯ Playground Link

Playground link with relevant code
💻 Code

enum Kind {
	A,
	B,
}

type InnerA = {
	kind: typeof Kind.A
}
type InnerB = {
	kind: typeof Kind.B
}

type Inner = InnerA | InnerB

type Outer<T extends Inner = Inner> = {
	kind: T['kind']
	inner: T
}

const handleInnerA = (inner: InnerA) => {}
const handleInnerB = (inner: InnerB) => {}

const fn = (outer: Outer) => {
	switch (outer.kind) {
		case Kind.A:
			return handleInnerA(outer.inner)
		case Kind.B:
			return handleInnerB(outer.inner)
	}
}

🙁 Actual behavior
The above code should compile without errors.
🙂 Expected behavior
The type of the inner property on outer should be narrowed based on the value of outer's kind property.

Narrowing here would be unsound because this is a legal call:
const p: Outer = { kind: Kind.A, inner: { kind: Kind.B } };
fn(p);

See also #27808

Narrowing here would be unsound because this is a legal call:
const p: Outer = { kind: Kind.A, inner: { kind: Kind.B } };
fn(p);

See also #27808

oh yes, thanks! you're absolutely right

oh yes, thanks! you're absolutely right


Does ledger memory leak?

Bug description
when a istio resource (like serviceentry) updated 1qps,the pilot memory usage will increase quickly, and cpu util increased.
the resource update quickly is my problem,but why the memory usage keep increasing, does this situation meet the design?
[ ] Docs
[ ] Installation
[ ] Networking
[x] Performance and Scalability
[ ] Extensions and Telemetry
[ ] Security
[ ] Test and Release
[ ] User Experience
[ ] Developer Infrastructure
Expected behavior
memory need to be stable
Steps to reproduce the bug
	file, err := os.Create("mem-04.heap")
	if err != nil {
		fmt.Println(err)
		return
	}
	defer file.Close()
	lg := ledger.Make(time.Minute)
	for i := 0; i < 1000; i++ {
		_, err = lg.Put("a", strconv.Itoa(i))
		if err != nil {
			fmt.Println(err)
		}
	}
        time.Sleep(time.Minute * 2)
	pprof.WriteHeapProfile(file)

pprof the heap profile
(pprof) top10
Showing nodes accounting for 1.50MB, 100% of 1.50MB total
      flat  flat%   sum%        cum   cum%
    1.50MB   100%   100%     1.50MB   100%  istio.io/pkg/ledger.(*smt).loadBatch
         0     0%   100%     1.50MB   100%  istio.io/pkg/ledger.(*smt).Update
         0     0%   100%     1.50MB   100%  istio.io/pkg/ledger.(*smt).loadChildren
         0     0%   100%     1.50MB   100%  istio.io/pkg/ledger.(*smt).update
         0     0%   100%     1.50MB   100%  istio.io/pkg/ledger.smtLedger.Put
         0     0%   100%     1.50MB   100%  main.main
         0     0%   100%     1.50MB   100%  runtime.main
ROUTINE ======================== istio.io/pkg/ledger.(*smt).loadBatch in /home/shaoyu/project/pkg/ledger/smt.go
    1.50MB     1.50MB (flat, cum)   100% of Total
         .          .    347:	s.db.updatedMux.RUnlock()
         .          .    348:	if exists {
         .          .    349:		if s.atomicUpdate {
         .          .    350:			// Return a copy so that Commit() doesnt have to be called at
         .          .    351:			// each block and still commit every state transition.
    1.50MB     1.50MB    352:			newVal := make([][]byte, batchLen)
         .          .    353:			copy(newVal, val)
         .          .    354:			return newVal, nil
         .          .    355:		}
         .          .    356:		return val, nil
         .          .    357:	}

Version (include the output of istioctl version --remote and kubectl version --short and helm version if you used Helm)
istio 1.7.2
How was Istio installed?
istioctl generate manifests --set profile=default | kubectl apply -f
Environment where bug was observed (cloud vendor, OS, etc)
linux 4.19 kubernetes 1.17

https://github.com/istio/istio/issues/28015

https://github.com/istio/istio/issues/28015

there are different. pkg ledger it self Vs pkg ledger misused.

Any progress?

@andrewshaoyu the ledger does have a known slow leak in 1.7, but it shouldn't be enough to evict nodes (which seems to be in keeping with what you reported).  The ledger is being refactored in 1.9 to remove a few leak conditions, and add a features.  If I can get you a build of 1.9 which uses the refactored ledger, would you be willing to test it with the same configuration you used above?

OK,I will try to test with 1.9.

Fixed in #29275, currently cherrypicking into 1.9.

Fixed in #29275, currently cherrypicking into 1.9.


BeagleBone Black - Tiva C connection over SPI

I'm trying to connect a  BeagleBone Black with a Texas Instrument Tiva C using SPI . On the master BBB I'm using rc_spi functions to configure the SPI pins and send 8 bytes of data to the slave Tiva C. The 8 bytes are sent to the Tiva C (checked using a Logic Analyzer) but the Tiva C only receive the first byte. Program on the Tiva C works fine (Checked using Tiva C to Tiva C connection)
The communication of the BBB with the peripheral device (Tiva C) is Freescale SPI mode 0
The pinout on the BBB is:
GND
3.3V
MOSI (P9_30)
MISO (P9_29)
SCK (P9_31)
On the BBB the Slave Select/FSS/CS is always at "0" when transmitting data frames
In this configuration the Tiva C needs SSInFss to return to "1" every time a frame is sent
(SSInFss is forced High)
Is there a way to force the Slave Select pin on the BBB from "0" to "1" when a frame is Tx  or is that the way the SPI Linux driver or rc_spi library works?

This is why I set up the slave select pin to be configurable in manual mode
since the Linux spi driver often doesn't behave as we want. I suggest
trying the manual mode option and toggling the slave select pin on and off
in your software where appropriate.  Good luck!
On Wed, Oct 2, 2019, 6:46 PM hjmcu<EMAIL_ADDRESS>wrote:

I'm trying to connect a BeagleBone Black with a Texas Instrument Tiva C
using SPI . On the master BBB I'm using rc_spi functions to configure the
SPI pins and send 8 bytes of data to the slave Tiva C. The 8 bytes are sent
to the Tiva C (checked using a Logic Analyzer) but the Tiva C only receive
the first byte. Program on the Tiva C works fine (Checked using Tiva C to
Tiva C connection)
The communication of the BBB with the peripheral device (Tiva C) is
Freescale SPI mode 0
The pinout on the BBB is:
GND
3.3V
MOSI (P9_30)
MISO (P9_29)
SCK (P9_31)
On the BBB the Slave Select/FSS/CS is always at "0" when transmitting data
frames
In this configuration the Tiva C needs SSInFss to return to "1" every time
a frame is sent
(SSInFss is forced High)
Is there a way to force the Slave Select pin on the BBB from "0" to "1"
when a frame is Tx or is that the way the SPI Linux driver or rc_spi
library works?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/StrawsonDesign/librobotcontrol/issues/169?email_source=notifications&email_token=ABPUPICLGIWSW575P3ATEVTQMVFIVA5CNFSM4I45LLAKYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HPI7PIQ,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABPUPIAVFOSVRUUDY6S3JUDQMVFIVANCNFSM4I45LLAA
.

I will try the manual mode, thank you


rename ENABLE_DEBUG to MRB_DEFINE_HOOKS

Here are some reasons why it should be renamed:

ENABLE_DEBUG isn't prefixed (possible name clash with other libs)
the enable_debug build config method is totally unrelated to this
the new name MRB_DEFINE_HOOKS is more precise

ENABLE_DEBUG and DISABLE_DEBUG will still work for backward compatibility but mruby users should update their code. E.g. to #if defined MRB_DEFINE_HOOKS || defined ENABLE_DEBUG.

It's OK to rename it, but I don't think MRB_DEFINE_HOOK is not precise. It sounds like the hook itself, besides that, it doesn't specify which hook we are going to add. How about 'MRB_ENABLE_CODE_FETCH_HOOK`. The only concern is it's too long.

And what do  you think about another ENABLE_ macro, ENABLE_STDIO?

In any case, I think it should be prefixed with MRB_ to avoid conflicts with other libraries.

What about MRB_DEBUG_HOOKS? MY only concern is that people might still think it's related to MRB_DEBUG.
What do you think about MRB_USE_STDIO?

Or MRB_STATE_DEFINE_HOOKS or just MRB_STATE_HOOKS?

I picked MRB_ENABLE_DEBUG_HOOK for consistency with (MRB_)DISABLE_STDIO.

Okay. By the way, I've proposed MRB_NO_STDIO because mruby already has MRB_NO_INIT_ARRAY_START.

@matz @cremno The only problem I have with the naming MRB_ENABLE_DEBUG_HOOK is it's similar to MRB_DEBUG. This is probably MRB_DEBUGs fault for being too generic though.
Thoughts?

@zzak probably I will rename MRB_DEBUG later, but not this time.


Proposal to include speaker into conference_schedule

Hey,
as discussed in #25 here a proposal to include a filter for speaker.
Unfortunately, the pretty printing seems to be hard coded into today which makes it hard to easily add the functionality.
Therefore, I thought it would be OK to include that into the raw get_conference_schedule:
julia> JuliaCon.today(speaker="Felix")

Wednesday 28 July 2021

Purple
╭───────┬────────────────────────────────────────────────┬──────┬────────────────╮
│ Time  │ Title                                          │ Type │ Speaker        │
├───────┼────────────────────────────────────────────────┼──────┼────────────────┤
│ 19:10 │ DeconvOptim.jl: Microscopy Image Deconvolution │  L   │ Felix Wechsler │
╰───────┴────────────────────────────────────────────────┴──────┴────────────────╯

Currently running talks are highlighted in yellow.

T = Talk, L = Lightning Talk, S = Sponsor Talk, K = Keynote,
W = Workshop, M = Minisymposium, BoF = Birds of Feather,
E = Experience, P = Virtual Poster

Check out https://live.juliacon.org/agenda for more information.

julia> JuliaCon.tomorrow(speaker="Carsten")

Thursday 29 July 2021

BoF/Mini Track
╭───────┬─────────────────────────────────────┬──────┬────────────────────────────────────────────────────────────────
│ Time  │ Title                               │ Type │ Speaker                                                       ⋯
├───────┼─────────────────────────────────────┼──────┼────────────────────────────────────────────────────────────────
│ 18:30 │ Julia in High-Performance Computing │ BoF  │ Valentin Churavy, Michael Schlottke-Lakemper, Simon Byrne et  ⋯
╰───────┴─────────────────────────────────────┴──────┴────────────────────────────────────────────────────────────────
                                                                                1 column omitted

T = Talk, L = Lightning Talk, S = Sponsor Talk, K = Keynote,
W = Workshop, M = Minisymposium, BoF = Birds of Feather,
E = Experience, P = Virtual Poster

Check out https://live.juliacon.org/agenda for more information.

julia> JuliaCon.get_conference_schedule(speaker="Felix")
4×7 SubDataFrame
 Row │ start                      duration    title                              speaker
     │ ZonedDat…                  Compound…   String                             Array…
─────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────
   1 │ 2021-07-28T17:10:00+00:00  10 minutes  DeconvOptim.jl: Microscopy Image…  ["Felix Wechsler"]
   2 │ 2021-07-29T16:30:00+00:00  30 minutes  InvertibleNetworks.jl - Memory e…  ["Philipp A. Witte", "Mathias Lo…
   3 │ 2021-07-30T19:30:00+00:00  10 minutes  FourierTools.jl | Working with t…  ["Rainer Heintzmann", "Felix Wec…
   4 │ 2021-07-30T17:15:00+00:00  3 minutes   IndexFunArrays.jl | Fun with ind…  ["Felix Wechsler", "Rainer Heint…
                                                                                3 columns omitted

Is that something you like?
Cheers,
Felix

Unfortunately, the pretty printing seems to be hard coded into today which makes it hard to easily add the functionality.

Can't you just centralize it into a function, say, _print_today_tables(....; output) and use it in today and talks_by?

The issue with today is that it only prints one day, right?
So currently to filter the full schedule and printing it in a nice way would require to call today from the first day until the last day, wouldn't it?

Short summary:

the speaker keywords in today are still there
talks_by:

julia> JuliaCon.talks_by("Carsten")

Thursday 29 July 2021

BoF/Mini Track
╭───────┬─────────────────────────────────────┬──────┬──────────────────────────────────────────────────────────────────╮
│ Time  │ Title                               │ Type │ Speaker                                                          │
├───────┼─────────────────────────────────────┼──────┼──────────────────────────────────────────────────────────────────┤
│ 18:30 │ Julia in High-Performance Computing │ BoF  │ Valentin Churavy, Michael Schlottke-Lakemper, Simon Byrne et al. │
╰───────┴─────────────────────────────────────┴──────┴──────────────────────────────────────────────────────────────────╯

refactored some parts like legend to external methods
added get_tracks method to get a list of all possible tracks which can be passed to today(track="Green").

Personally, I wouldn't call / link this to today at all. This seems to just complicate things. In my eye, talks_by and today are orthogonal functions. One filters by time, the other by speaker. If they have common printing, put it in a separate function. If not, then not. Essentially, just put what you wrote in the issue into a talks_by function and print it more nicely than just returning the DataFrame. You don't have to use any fancy PrettyTables.jl for the printing (like today). You could do what now does just with a for loop that prints the filtered talks for example.
But if you think your current approach is better for some reason, I can also take a look at it later (will head for a lunch break now 😄).

I'll try to come up with something (again) :smiley:

Hm, changes quite a bit now.
Maybe we postpone that to after JuliaCon to prevent crashing anything?
At least I'm doing fine with my local version :laughing:


lru_cache does not allow to update current value in the cache

https://github.com/boostorg/compute/blob/master/include/boost/compute/detail/lru_cache.hpp#L66
"insert" function silently returns if the cache already contains the key, without updating the current value.
There is also no API to remove the value if the cache contains an item associated with the key, so it looks like it's hard to work around this limitation.

a workaround for this limitation is to use get after insertion as this will update the list. This costs an additional map lookup, but should be fine performance-wise.

using get will not update the value of the key
cache.insert(1,1);
cache.insert(1,2);
cache.get(1);  // what would you expect this to return?

This class was designed for storing compiled OpenCL programs (kernels). That's why there's no need to update value on insert(). It assumes that (key, values) pairs are unique, which means you can't have pairs (1,1) and (1,2). Also, it's in detail:: namespace, which means it's not a public API.
I'm closing the issue, marking not-a-bug. Please reopen if this behaviour causes problems in Boost.Compute, for example: bad program is run.


Attempt to read property "name" on null

The error occurs immediately after deleting the log file.
Attempt to read property "name" on null {"userId":1,"exception":"[object] (ErrorException(code: 0): Attempt to read property \"name\" on null at \\vendor\\stepanenko3\\nova-logs-tool\\src\\Http\\Controllers\\LogsController.php:42)

Same here

Same here

@Metilar @rafaelsmith @BeiAduo
Fixed in https://github.com/stepanenko3/nova-logs-tool/releases/tag/v2.1.0


fix navigation on tablet

fix issue https://github.com/github/docs/issues/1593

في أربعاء، ٢٥ نوفمبر، ٢٠٢٠ في ٢:١٢ ص، كتب Ihor Sychevskyi <
<EMAIL_ADDRESS>
review page
https://docs-1595--fix-nav.herokuapp.com/en
[image: 1]
https://user-images.githubusercontent.com/26163841/100161995-394c5d00-2ebb-11eb-8030-02fa7d25b746.jpg
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/github/docs/pull/1595#issuecomment-733286162, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/ART5OGXXLCRH2R46N5QCHSDSRQ4WFANCNFSM4UBQTKCA
.

🕊🔹Ⓜ™
On Tue, Nov 24, 2020, 6:07 PM Ihor Sychevskyi<EMAIL_ADDRESS>wrote:

fix issue #1593 https://github.com/github/docs/issues/1593
You can view, comment on, or merge this pull request online at:
https://github.com/github/docs/pull/1595
Commit Summary

fix navigation on tablet

File Changes

M stylesheets/nav.scss
https://github.com/github/docs/pull/1595/files#diff-32586997f7baccc64b6b4a53a4a92a251ded41e52c3169568105c01c72a1887d
(2)

Patch Links:

https://github.com/github/docs/pull/1595.patch
https://github.com/github/docs/pull/1595.diff

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/github/docs/pull/1595, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AR3JBXYNDPHIB2ULUF5XMTLSRQ4CZANCNFSM4UBQTKCA
.

cc @chiedo

Thanks for the fix!


dockerise server

FROM rust:1.40 as builder WORKDIR /usr/src/myapp COPY . . RUN cargo install --path . FROM debian:buster-slim RUN apt-get update && apt-get install -y extra-runtime-dependencies COPY --from=builder /usr/local/cargo/bin/myapp /usr/local/bin/myapp CMD ["myapp"]

Delete the apt cache after update

Potentially look at https://github.com/coord-e/magicpak

https://www.lpalmieri.com/posts/fast-rust-docker-builds/


False numerous "Uncaught in promise" error indications

Using zone.js 0.8.18
Without zone.js the following code runs ok
var t = Promise.reject(5).then((x)=>{console.log("fulfilled");}).then(null, (x)=>{console.log("rejected");});
No uncaught in promise error indication.
While running the same code having zone.js loaded makes browser showing uncaught in promise error 3 times.

@stasberkov , thank you for posting the issue, I will check it.

@stasberkov , can't reproduce in 0.8.20, could you provide a reproduce repo?

will close for now for not be able to reproduce.


patchShebangs doesn't handle /usr/bin/env -S

Describe the bug
patchShebangs doesn't handle /usr/bin/env -S command args... shebangs
To Reproduce
Steps to reproduce the behavior:

Download https://github.com/mkg20001/nix/blob/master/pkgs/kseistrup-filters/default.nix
Remove the sed command in the install phase that drops the -S flag
Build it

Expected behavior
Should patch shebangs as it would with the sed command
(The -S flag just allows multiple arguments which are already handled)
Additional context
Fails with exit 1 and no output
Metadata

system: "x86_64-linux"
host os: Linux 4.19.93, NixOS, 20.03pre-git (Markhor)
multi-user?: yes
sandbox: yes
version: nix-env (Nix) 2.3.2
channels(maciej): "nixpkgs-20.03pre207249.7e8454fb856"
channels(root): "nixos-20.03pre208857.e4134747f56"
nixpkgs: /home/maciej/.nix-defexpr/channels/nixpkgs

Maintainer information:
# a list of nixpkgs attributes affected by the problem
attribute:
# a list of nixos modules affected by the problem
module:

cross-ref: https://github.com/kseistrup/filters/issues/2

fixed in https://github.com/NixOS/nixpkgs/pull/211187


mantl shipped support

The following issues occur when deploying shipped to a default mantl installation:

docker needs a manual restart to pick up network options.
worker nodes require access to marathon. they are currently blocked by iptables.

anything else?
@stevendborrelli @mikejihbe

HI.. i'm new to mantl & shipped..
i am interested in "project shipped" and looking for how to deploy it.
is possible to deploy "project shipped UI" locally??
the only way is go to "https://ciscoshipped.io."??

@ryane How is shipped deployed? What needs to be done on the Mantl side w/r/t Docker?

@ryane "projec shipped" is opensource?? how can i install "shipped" for test??

@angry-tony We don't develop shipped. Take a look at it's website: https://ciscoshipped.io/

@angry-tony shipped is currently not open source, as it is a Cisco product that is deployed on top of mantl. Right now the main way to access is vis ciscoshipped.io, but talk to @fabgia  if you are looking to deploy it locally to your environment.

@stevendborrelli  wow.. good news..   one question... how to talk to @fabgia ?? could you give me his info??

shipped has shutdown


Do not hardcode "python" and "pytest" in tests

I discovered these issues when packaging pid for Debian. Debian packaging tools run tests during the package build using python3 -m pytest tests which makes the tests fail because the default pidfile name is pytest.py.pid (because "executable" in this case is "pytest.py).
Also hardcoding "python" as executable name doesn't work on systems without Python 2 (/usr/bin/python is usually "reserved" for Python 2 so there is no python without Python 2).

Awesome thanks !
Do you need a new release for this or is getting it into master good enough ?

Do you need a new release for this or is getting it into master good enough ?

Thanks, I don't need a new release just for this, merging is enough, thanks.


2.1.15 Warning during installation

Hi,
during installation of 2.1.15
sudo npm -g install homebridge-openwebif-tv
I got following warning:
npm WARN deprecated<EMAIL_ADDRESS>request has been deprecated, see https://github.com/request/request/issues/3142
+<EMAIL_ADDRESS>updated 1 package in 1.701s

Can you please have a look or give advise?
regards
Birnbam

This warning is from npm, more here: https://www.npmjs.com/package/request


Add JS API description to doc

@doochik what about docs? It's really hard to use borschik through API. It makes impossible writing tasks for popuplar tasks runners.


Change closures to use $app as the first parameter.

Almost always the first parameter is $app therefor it makes little sense
to use use part of the closure and having PHP do context switching all
over the place.
This also makes it explicit in the service providers exactly what $app
instance is used.

Rebase and reverted the initializer change.

Thank you @henrikbjorn.

:+1:


Homepage carousel splash

DONE in this PR:

create carousel component for homepage hero image /Splash component
update plus icon colors
add longer hero image description to left-side of page

Before: homepage hero - static image

After: homepage hero - carousel

After: paragraph hero image description

The carousel will be updated further after guidance from UXD: #197


fix the bug about flow control settings on stm32f4xx mcu

When I initialize UART with FLOW_CONTROL_CTS_RTS using the the api uart_flow_control_transform() in the hal_uart_stm32f4.c file, I found the UART is not work.
So, I trace the code and find there is a problem in the function. It should be FLOW_CONTROL_CTS_RTS other than FLOW_CONTROL_RTS on line 947
Please merge it quickly

 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.

Look good, merged. Thanks for your commit!


if statement for mitigating CSRF attack, is missing isset check for ouath2state in $_SESSION

// Check given state against previously stored one to mitigate CSRF attack } elseif (empty($_GET['state']) || ($_GET['state'] !== $_SESSION['oauth2state'])) {
should probably be:
// Check given state against previously stored one to mitigate CSRF attack } elseif (empty($_GET['state']) || (isset($_SESSION['oauth2state']) && $_GET['state'] !== $_SESSION['oauth2state'])) {

Are you able to identify a line item or area which your code should be implemented?


Example that supports placeholders / gaps / blank spaces in a draggable list

Basically I'm trying to create something like this rather crude jQuery UI example.

You can drag any of the words to a free gap in any order
You can override a word with another (which returns the overridden word back to the pool)
You can drag an allocated word back to the pool leaving the gap open as it was
You can remove a word once it is allocated to a gap using the close button

I've looked at the examples, but it seems like they don't allow "blank" items to exist.
Does anyone know of an example that supports this, or have an idea how it can be achieved with this library?

but it seems like they don't allow "blank" items to exist

How about to make "blank" items display: none or visibility: hidden? So you can use some "blank\default" items as a workaround.

Thanks - can you provide a working example/demo?

There is an undocumented value for 'behaviour' property called 'drop-zone'. When set, the container will not sort its elements which you can use it to be containers to drop word to. The rest is pretty straightforward. Simply update the content of the 'word' container as you wish after drop.

Any chance of providing a working example? It would be greatly appreciated.

Also, is it worth updating the docs?

Check out https://codesandbox.io/s/mok9x9my6y.
It is not the exact same thing but I hope it will give some idea.
I will update the docs after it is implemented and tested completely. But for your case it works fine.
Cheers!


Idea/Could we by default exclude the observability models from a project lineage?

I was viewing the lineage for my project using --select models/marts and wanted to see my available dims and facts and some of their lineage. Selecting the models in this way also includes the observability models that add a layer of noise and clutter that I am not usually interested in seeing.

Could a configuration be set up to exclude the observability models at the project level? Or a selection way that is recommended?

Thanks for raising this! For now you should be able to pass --exclude dbt_observability or --exclude dbt_observability_marts to remove that noise. I'll keep this issue open for now so we can work on better implementing or documenting this.


Upgrade to AWS SDK v2

We'd like to upgrade to using the SKDv2 in CAPI to remove any blocking call and this is getting in the way.

Thanks both 🙌


Fixed main_menu styling

Coverage remained the same at 100.0% when pulling 9bd7468ee8c939f82aa087b6ba0d3906f0af9c3e on fix_main_menu into cc77f80806a2ecda4370401caa374c823ea95fd2 on master.


Too many events, it may be wise to restart the builder

I'm doing some tests to see the difference in compilation time using numThreads = 4 vs 8.
VSCode is open while I delete 20000+ r-files from Explorer.
Should VSCode notice this and start recompiling automatically?
The only thing I saw was a "Too many events, it may be wise to restart the builder" line in the ABL Language Server output.
After restarting VSCode (I could probably just have restarted the language server) compilation of the sources started as expected.
Edit: I noticed no performance improvement going from 4 to 8 threads (where 3 threads crashed during compilation). Could there be another limiting factor, e.g. a network connection to local databases.

Switching the number of threads requires a LS restart. Then you can execute action "Rebuild project", so you don't have to manually delete the rcode. The notification "Too many events" is thrown when the OS is not able (or willing) to send all events to the subscribers. The message recommends to restart the language server, but in fact a project rebuild is a better solution.

Edit: I noticed no performance improvement going from 4 to 8 threads (where 3 threads crashed during compilation). Could there be another limiting factor, e.g. a network connection to local databases.

Check process explorer. Usually, the limiting factor is disk I/O. You should also check your antivirus software, they can sometimes consume a crazy amount of CPU, or slow down I/O.


Adding migrations with startup in different project -

Please can support be added for adding migrations with dotnet-ef  when the startup.cs is in a different project to the DbContext.
https://stackoverflow.com/questions/38705694/add-migration-with-different-assembly helped me.

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

ID: b545eeff-6c33-3cc0-09ce-a3ad342d7438
Version Independent ID: 34bc1bac-7338-d8ab-390d-8c5e88a48c10
Content: Migrations with Multiple Projects - EF Core
Content Source: entity-framework/core/managing-schemas/migrations/projects.md
Product: entity-framework
GitHub Login: @bricelam
Microsoft Alias: bricelam

dotnet ef migrations add --startup-project ./ProjectWithStartup/ --project ./ProjectWithDbContext/

The Using a Separate Project article is about adding migrations to a project that doesn't contain your DbContext. Having Startup in a separate project is mentioned a few places throughout the docs.

@bricelam do you think this issue should be closed then?

It might be worth mentioning the startup project again on this page.

Duplicate of ##933


j-card does not seem to work out of the box.

I added j-card to my app:
<link rel="import" href="../../bower_components/j-elements/j-card.html">
...
<j-card>hello</j-card>

Then I checked the browser. J-card did not visually add anything. In the console there's an error:
Uncaught TypeError: Vaadin.ThemableMixin is not a function
    at j-card.html:198
    at j-card.html:265

and the row 198 is:
class CardElement extends Vaadin.ThemableMixin(Polymer.Element) {

Thanks for the report!
Fixed in 790b262dad2d903a6af98b4b2128db6c301b78f3 and 82018fccee4431d80822b592d29039950b83257f (I had forgotten a bunch of imports).


Handling of response errors

Describe the bug
When an API request receives an error status code in the response (eg 400) I would expect the API functions (this.post, this.get etc) to reject
Steps to reproduce the bug
Create an API method like this:
publish (id) {
  return this.post(`sites/${id}/publications`)
}

Ensure the endpoint responds with a 400 status code.
Call the method:
try {
  await Sites.api().publish(1)
  console.log('Request was successful')
} catch (error) {
  console.log('Request was unsuccessful')
}

Expected behavior
'Request was unsuccessful' is logged.
Actual behavior
'Request was successful' is logged.
Versions

Vuex ORM Axios: 0.9.3
Vuex ORM: 0.36.3

Additional context
I have also tried using the Axios response interceptor:
// Add a response interceptor
axios.interceptors.response.use(function (response) {
  return response
}, function (error) {
  console.error('There is an error')
  throw new Error(error)
  // Or this - same result:
  // return Promise.reject(error).
})

This logs 'There is an error' upon a 400 response, but this.post still resolves.
I have also confirmed that 400 is invalid via this Axios config (this has no effect):
axios.defaults.validateStatus = (status) => {
  return status >= 200 && status < 300
}

It's the same result when defining the validateStatus at the apiConfig level or the request level, eg:
static apiConfig = {
    validateStatus: (status) => {
      return status >= 200 && status < 300
    },
 ...

await Sites.api().publish(1, '', {
    validateStatus: (status) => {
      return status >= 200 && status < 300
    }
})

With any of these, a 400 response code still resolves rather than rejects.

Closing - found it was due to a local interceptor util function that was not throwing an error on bad response


PubsubClient: Unable to use .next() after logs_subscribe subscription initialized

Problem

I'm using PubsubClient to subscribe to new logs using logs_subscribe.
However, when I run this code, it ends up wit the following error:
error[E0599]: no method named `next` found for struct `Pin<Box<dyn futures_core::stream::Stream<Item = solana_client::rpc_response::Response<RpcLogsResponse>> + Send>>` in the current scope
  --> src/main.rs:90:27
   |
90 |         let logs = stream.next().await.unwrap();
   |                           ^^^^ method not found in `Pin<Box<dyn Stream<Item = Response<RpcLogsResponse>> + Send>>`
   |
   = help: items from traits can only be used if the trait is in scope
help: the following traits are implemented but not in scope; perhaps add a `use` for one of them:
   |
1  + use enum_iterator::Sequence;
   |
1  + use futures_util::stream::stream::StreamExt;
   |
1  + use serde_json::de::Read;
   |
1  + use std::iter::Iterator;
   |
     and 2 other candidates

Here is minimal code:
// ...
use solana_client::nonblocking::pubsub_client::PubsubClient;
use solana_client::rpc_config::{RpcAccountInfoConfig, RpcProgramAccountsConfig, RpcTransactionLogsConfig, RpcTransactionLogsFilter};

#[tokio::main]
async fn main() {
    let ws_client: PubsubClient = PubsubClient::new(&config.rpc_ws).await.unwrap();

    let (mut stream, _) = ws_client
        .logs_subscribe(
            RpcTransactionLogsFilter::All,
            RpcTransactionLogsConfig {
                commitment: Some(CommitmentConfig::processed()),
            },
        )
        .await?;

    loop {
        let logs = stream.next().await.unwrap();
        println!("logs: {:?}", logs);
    }
}

The issue is happening also when using any other subscription methods, such as program_subscribe.
More debug info:
$ rustc --version
rustc 1.77.2 (25ef9e3d8 2024-04-09)

Cargo.toml:
[dependencies]
solana-client = "1.18.11"

Any idea why this could be happening?
Proposed Solution

Fixed, I was missing:
tokio-stream = "0.1.15"

In Cargo.toml.


Consider hot-reloading with Rails

Turns out there is some work going on here regarding hot reloading on the rails side: https://github.com/rmosolgo/react-rails-hot-loader
It would be interesting if this could be made to work with the webpack setup.
While not a high priority, it's worth saving the idea.

+1

I've finally got a hot reload setup working now and this gist was the key to it: https://gist.github.com/epeli/28c2dbcbe8109a0c5edb

@gugl Nice! Actually it's identical setup with what I'm doing now inside express server on Node, but instead jade -> erb.

We've got this working on https://github.com/shakacode/react-webpack-rails-tutorial/.
We may or may not want to support this for the generators.

@justin808 I think it would be awesome to have this in the generators!

@robwise We need to find some community help on that. Maybe @yorzi or @aaronvb ?

Closing this as #179 is the one that should do this one.


Raw input not working

I want to work with raw input (windows) and thought this library was a good fit for me.
I tried to modify the listener example to use raw input but was not able to do so.
Steps to reproduce:

Build the project for x64 (I used VS2017 Community)

Change the following code snippet in listenersample.cpp:
manager.CreateDevice<gainput::InputDeviceKeyboard>(gainput::InputDevice::DV_RAW);
const gainput::DeviceId keyboardId = manager.CreateDevice<gainput::InputDeviceKeyboard>();
manager.CreateDevice<gainput::InputDeviceMouse>(gainput::InputDevice::DV_RAW);
const gainput::DeviceId mouseId = manager.CreateDevice<gainput::InputDeviceMouse>();
manager.CreateDevice<gainput::InputDevicePad>();
manager.CreateDevice<gainput::InputDevicePad>();
manager.CreateDevice<gainput::InputDeviceTouch>();
to
const gainput::DeviceId keyboardId = manager.CreateDevice<gainput::InputDeviceKeyboard>(gainput::InputDevice::AutoIndex, gainput::InputDevice::DV_RAW);
//manager.CreateDevice<gainput::InputDeviceKeyboard>();
const gainput::DeviceId mouseId = manager.CreateDevice<gainput::InputDeviceMouse>(gainput::InputDevice::AutoIndex, gainput::InputDevice::DV_RAW);
//manager.CreateDevice<gainput::InputDeviceMouse>();
//manager.CreateDevice<gainput::InputDevicePad>();
//manager.CreateDevice<gainput::InputDevicePad>();
//manager.CreateDevice<gainput::InputDeviceTouch>();

Run the sample project

Observe that there is no mouse input being reported

Potential solution:
I believe that the problem lies in how the library gets the raw input data in GainputInputDeviceMouseWinRaw.h and GainputInputDeviceKeyboardWinRaw.h
For x64 dwSize variable must be 48 instead of 40. A better way would be to get the size needed from the system itself.
Check the revisions of this gist.
NOTE: I have used C++ 11 features (shared_ptr) for my modifications.
Kindly let me know if you need anything more from my side

@malhotraprateek are you trying to get all system input or only input within your application window?

@kowalej
Hi, I was trying to create a Vulkan demo application. It think it was intended to be a windowed application and did not capture all system input.
It has been sometime now, so I may not remember correctly.

My purposes were capturing all input inside and outside the focused window but perhaps this may help you:
Set flags RIDEV_INPUTSINK | RIDEV_DEVNOTIFY and for hWnd give it the handle to your applications window.
Read more about the flags and such here:
https://docs.microsoft.com/en-us/windows/desktop/api/winuser/ns-winuser-tagrawinputdevice

The issue I observed was that the lpb byte array was declared to have a size of 40 but the OS was returning 48 instead.
I believe the correct size can be determined by calling GetRawInputData with nullptr for the third parameter and does not need to be hard-coded.
(See references)
Does the size of input data buffer depend upon RIDEV_* flags?
References:
MS Documentation
This blog post
This stack-overflow question has some more useful info.


Gram-Schmidt well-conditioning

The interpolant construction algorithm in principle does not need the Gram-Schmidt (GS) algorithm to be applied to the basis, i.e the waveforms can be directly used as basis vectors. For the moment, this seems to work in all cases tested without any numerical inaccuracies (the debug option monitors the conditioning of the basis matrix). If signs of ill-conditioning appear in future applications (e.g. large numbers of repeated interpolant points), what discussed below might help solving the issue.

One might imagine that a GS-tted basis would be "optimal" (i.e. it would require less elements) because redundancies would be avoided. This last intuition should be given a more rigorous backup.
However, when applying the GS algorithm on long seglens (~128), the basis matrix becomes ill-conditioned (most probably due to the sparsity of elements and the "disparity" of the basis vectors, compared to a basis made of waveforms) and its inversion acquires large errors. Hence, for the moment, GS is not applied to the basis.
Assuming GS would indeed improve the algorithm^*, one can apply a regularised GS algorithm to fix the ill-conditioning issue.
Several options are already known:

See "Numerical stability" and "Alternatives" here.
a. Modified Gram-Schmidt
b. Householder transformations
c. Cholesky decomposition

Regularisation discussed in  Field+ (Phys. Rev. X 4, 031006), pg.14, Appendix A and Refs.[66,67,68].
Relevant codes to be compared against are GreedyCPP and LALInference.

Antil+ Appendix A.2 suggests to use the residuals to construct the basis matrix.

See the discussion here.

^* One might question the practical advantages of improving the algorithm in cases where no signs of ill-conditioning appear without GS. In fact, since the convergence is exponential, small improvements in the reduction of basis element numbers won't have a large impact in practise.

Moved to new repository: https://github.com/GCArullo/JenpyROQ/issues

Closing


fatal Unable to detect the IP of the kube-dns service

Version
using 5a75885484210c8a0ad0f1d47828c0899554df31
Expected Behavior
ip configurable or optional like before
Actual Behavior
... previous versions did not have this requirement
we use coredns so need a auto-discovery for that or a way to inject the IP via ENV
Steps to Reproduce the Problem
boot without kubedns
Resource Specs and Logs
"Unable to detect the IP of the kube-dns service, services \"kube-dns\" not found

Community Note

Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritize this request
Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
If you are interested in working on this issue or have submitted a pull request, please leave a comment

Is your cluster dns service called something different than kube-dns ?
Most clusters are using coredns, but the service name is still kube-dns for compatibility reasons.
https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/#:~:text=Note%3A The CoreDNS Service is named kube-dns in the metadata.name field.

we don't have a kubernetes dns service, we install coredns on the hosts
so we need to either hardcode the ip or have a flag to disable this feature

https://github.com/aws/karpenter/pull/2793 might fix it, trying that atm

confirmed working

A really hacky workaround is to setup a  kube-dns service that doesn't point to any pods so that you get a cluster IP that can be used to reference the cluster's IP Family.

Are you using EKS and the EKS Optimized AMI?
Are you passing your hardcoded cluster IP to the kubeletConfiguration in your Provisioner specs?

1: no
2: no
we are not using kubeletConfiguration nor eks
this is a custom cluster that runs coredns on the nodes via systemd

I assume you're using the "custom" amiFamily then?  If so, we could just have the dns discovery not panic.

yes, and yes "just don't fail" is good enough afaik


Add option to generate code for deprecated methods

To retain backwards compatibility, deprecated methods are not generated by default.
Fixes #70

Looks good! Merged and published as 1.9.9. Thanks for the fix!


Changing datatype for JsonCache type

This PR:

Adds the right type to the JsonCache, which is an intermediary data structure used to read and write serialized cache to a file.
Introduces new types on SerializationCacheTypes.ts for stricter typechecking
Modifies Serializer.ts and Deserializer.ts to respect types and adds inline conversions
Removes JSONKeys.ts and EntitySerializer.ts since they are no longer needed with the new design

Coverage remained the same at 76.988% when pulling 8c76ad77ae7ec51216051da0d7797f995aa25d92 on serialize-deserialize into d891c4932119360c6663c564b8b07d4e1b4c32ec on dev.


Layout for training data

Thank you very much for this great port.
I would like to train the network with a custom dataset.
Could you add some information on the layout of the ../../frames directory and on the pickled ground truth?
How are images and labels matched to each other, what encoding is expected?

Oh, I'm very sorry. I've now found #15 .
Great explanations there.
Thanks


fix: Increases the model sizes to includes the thumbnail size

This PR increases the model sizes to include the thumbnail size until there's a clear definition of how the catalyst will calculate the thumbnail size.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>9
Details

2 of 2 (100.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 86.746%

Totals

Change from base Build<PHONE_NUMBER>9:
0.0%

Covered Lines:
520

Relevant Lines:
584

💛  - Coveralls


fix: LEAP-515: Fix CommentForm for old UI

Hi @hlomzik!
This PR was created in a response to PRs in upstream repos:

https://github.com/HumanSignal/label-studio-frontend/pull/1661

something crazy is going on. first version of this PR has lot of changes from other LSF PRs which were not synced yet to monorepo. New version has lot of conflicts. Just closing it and will create aggregative PR later


Gene page - associated studies table

Design

StudyId
Details
View

NEALEUKB_20015
Sitting height (...)
Locus (button)

Proposed API schema
type query {
  studiesForGene(geneId: String!) [StudyForGene!]!
}
type StudyForGene {
  study: Study!
  // nothing else for now, but likely to have a combined score in future (aggregating g2v + v2d scores)
}

@peatroot I implemented this query as you defined. It will be deployed by Monday morning.


Newbase

implemented the top section of the design sprint guide landing page, So far 90% done,  Just some challenges around using the compiled css class, especially on the areas where it isn't clear as regarding positioning, font-colors and the likes.

It's best practice to give PRs a meaningful title. I'm not sure that "Newbase" tells me what to expect from this PR.