feat: navigation and dashboard

What does this PR do?
Introduces left navigation for bootc. The initial Dashboard is just the empty screen that we had before (but now always visible), and Disk Images is the main screen we had after you had created an image, renamed and with a more typical empty screen. This sets bootc up for adding additional pages in the future, most likely Samples and a filtered bootable Images page.
Most page urls had to be updated, and I switched to vi.waitFor() for the tests I updated.
Screenshot / video of UI
https://github.com/user-attachments/assets/5c5a21db-6642-42cc-bb04-ce8280f7699d
What issues does this PR fix or reference?
Most of #886, but not marking as fixed since there is some renaming & cleanup that I'd like to do on other files but didn't want to complicate this PR further.
How to test this PR?
Unit tests updated. Go to every page and try all links to confirm navigation.

One thing I would find useful is to copy the path of a specific disk image.  Once created, I may change to the terminal to copy/move it around or upload it somewhere.  Is it possible to have such a copy-path function?


[Feature] Add support for fetching block receipts using eth_getBlockReceipts

Description
Currently Graph Node requires syncing block receipts and this would cause overload on RPC since it would call like from 50 requests to 100 requests of eth_getTransactionReceipt for high throughput networks like BSC or Polygon.
See related issues here https://github.com/graphprotocol/graph-node/issues?q=is%3Aissue+receipt+is%3Aclosed.
Have created a PR on rust-web3 to support this https://github.com/graphprotocol/rust-web3/pull/15
Are you aware of any blockers that must be resolved before implementing this feature? If so, which? Link to any relevant GitHub issues.
No response
Some information to help us out

[ ] Tick this box if you plan on implementing this feature yourself.
[X] I have searched the issue tracker to make sure this issue is not a duplicate.

cc @lutter @incrypto32 could you please check? I think this is a must have feature to run subgraphs on the top of serviced nodes.

Thanks @tornadocontrib, this does indeed look interesting. Checking specs for support for this method, it seems like it is pretty widely adopted but might not work for all EVM clients? (just thinking about whether configuration might be required)

@azf20 Yeah, but it has been adopted to major EVM chains like Ethereum https://github.com/ethereum/go-ethereum/pull/27702, BSC ( https://github.com/bnb-chain/bsc/pull/2068 ), Polygon ( They use Erigon so it is already implemented ), Avalanche ( https://github.com/ava-labs/coreth/pull/429 ), Op-stack chains ( They use the latest Geth ) , and this is the only method to enable running graph-node with serviced nodes like Infura or Quicknode especially for the high throughput chains like BSC or Mainnet.

@maoueh Yeah but the problem is eth_getBlockReceipts is not a chain dependent method but it relies whether the node would support it or not ( For example some people could run old nodes that doesn't support this method yet, or the provider simply didn't whitelisted this method on their load balancer, etc. ) So think it should be disabled by users manually.

I'm not sure I understand your concern. My proposition is to make eth_getBlockReceipts{num: <genesis|0>} and if it fails, it's not supported otherwise it is.
Network is indeed not related but making the call and have it succeed means it's available.

@azf20 @maoueh Is there any plans to implement those? I think it is an important feature that would be able to cut expenses and speedup sync drastically

hey @tornadocontrib yes thanks for this, we are investigating and plan to implement, will keep this thread up to date


Remove redundant class dedupe function from styletron-inferno

Per the discussion in https://github.com/rtsao/styletron/pull/90, the added class dedupe function seems to be redundant.
cc @faddee @wagerfield

Could very well be, though I'm 99% sure I was seeing an element with a className of a a b c in one of my early tests, so let me take a look and see if I can repeat this. Either way since each class just maps to a single CSS property/value declaration, it doesn't actually matter from a styled result perspective—the reason for doing it was more to save the browser from potentially parsing and applying the class twice. Given your knowledge on how browsers process classes, and CSS—do you see this being an issue?

Yeah, I'd love to add a test case for duplicated class names.

It's not a duplicated {color: 'red'} that would worry me. It's if the composition of {color: 'red'} and {color: 'green'} doesn't override the other that would worry me. But the tests are running just fine now and having styletron-react and styletron-inferno as identical as possible will ease all kind of maintenance. So I encourage to merge this.

No idea what I did before to get duplicate class names—I expect it was an error on my part in an earlier implementation. Either way, I am unable to reproduce this test case, so happy for you to merge this 👍
@faddee I agree—the closer these implementations are, the better.
Could either of you please explain why you need to check for invalid attributes in the React styled implementation (omitInvalidProps > isValidAttr)?

@wagerfield Because React warns in development mode when you pass unknown props to an element because they consider it to be an anti-pattern. But React still omits unknown props so the checks could theoretically be disabled in production.

But is that not then the responsibility of the user using React as opposed to the responsibility of Styletron to 'cleanse' the user's errors?
Like if I used React without Styletron and added some unknown props to an element, I would get those warnings right? Then I would go "oh, my bad" and then fix them.
I don't think this should be the responsibility of Styletron since it's of no concern to applying styles and it adds unnecessary bloat and overhead to the lib. I say drop it 😄

@wagerfield you can pass a function to styled which makes it possible to produce different styles depending on which props you send to the component. There's no way for the user to "clean" those props before they're sent down to the React element, and so that's the reason Styletron does that for you :)
const Text = styled('span', props => ({
  fontSize: props.small ? '12px' : '16px',
}))

<Text small>Hello world!</Text>

Of course—hadn't thought of that, thanks @vikfroberg 👍


attrib.set needs to set attributes for id0 before any other id can take on an attribute

if _v0 is specified, attribute is set:

if _v1 or any other id is specified, attribute is NOT set:

only once _v0 is set, other ids can then be set with attributes:

File for testing:
hidden_unless_id0_set.zip


Timeouts (short dns timeout value?)

I'm repeatedly getting the following errors running the downloader:
Process Process-11:
Traceback (most recent call last):
  File "/home/dam/.virtualenvs/pwneddb/lib/python3.11/site-packages/anyio/_core/_sockets.py", line 190, in connect_tcp
    addr_obj = ip_address(remote_host)
               ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/ipaddress.py", line 54, in ip_address
    raise ValueError(f'{address!r} does not appear to be an IPv4 or IPv6 address')
ValueError: 'api.pwnedpasswords.com' does not appear to be an IPv4 or IPv6 address

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/dam/.virtualenvs/pwneddb/lib/python3.11/site-packages/anyio/_core/_tasks.py", line 115, in fail_after
    yield cancel_scope
  File "/home/dam/.virtualenvs/pwneddb/lib/python3.11/site-packages/httpcore/_backends/anyio.py", line 114, in connect_tcp
    stream: anyio.abc.ByteStream = await anyio.connect_tcp(
                                   ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dam/.virtualenvs/pwneddb/lib/python3.11/site-packages/anyio/_core/_sockets.py", line 193, in connect_tcp
    gai_res = await getaddrinfo(
              ^^^^^^^^^^^^^^^^^^
asyncio.exceptions.CancelledError: Cancelled by cancel scope 7fbb37227890

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/dam/.virtualenvs/pwneddb/lib/python3.11/site-packages/httpcore/_exceptions.py", line 10, in map_exceptions
    yield
  File "/home/dam/.virtualenvs/pwneddb/lib/python3.11/site-packages/httpcore/_backends/anyio.py", line 113, in connect_tcp
    with anyio.fail_after(timeout):
  File "/usr/lib/python3.11/contextlib.py", line 155, in __exit__
    self.gen.throw(typ, value, traceback)
  File "/home/dam/.virtualenvs/pwneddb/lib/python3.11/site-packages/anyio/_core/_tasks.py", line 118, in fail_after
    raise TimeoutError
TimeoutError

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/dam/.virtualenvs/pwneddb/lib/python3.11/site-packages/httpx/_transports/default.py", line 66, in map_httpcore_exceptions
    yield
  File "/home/dam/.virtualenvs/pwneddb/lib/python3.11/site-packages/httpx/_transports/default.py", line 366, in handle_async_request
    resp = await self._pool.handle_async_request(req)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dam/.virtualenvs/pwneddb/lib/python3.11/site-packages/httpcore/_async/connection_pool.py", line 268, in handle_async_request
    raise exc
  File "/home/dam/.virtualenvs/pwneddb/lib/python3.11/site-packages/httpcore/_async/connection_pool.py", line 251, in handle_async_request
    response = await connection.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dam/.virtualenvs/pwneddb/lib/python3.11/site-packages/httpcore/_async/connection.py", line 99, in handle_async_request
    raise exc
  File "/home/dam/.virtualenvs/pwneddb/lib/python3.11/site-packages/httpcore/_async/connection.py", line 76, in handle_async_request
    stream = await self._connect(request)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dam/.virtualenvs/pwneddb/lib/python3.11/site-packages/httpcore/_async/connection.py", line 124, in _connect
    stream = await self._network_backend.connect_tcp(**kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dam/.virtualenvs/pwneddb/lib/python3.11/site-packages/httpcore/_backends/auto.py", line 30, in connect_tcp
    return await self._backend.connect_tcp(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dam/.virtualenvs/pwneddb/lib/python3.11/site-packages/httpcore/_backends/anyio.py", line 112, in connect_tcp
    with map_exceptions(exc_map):
  File "/usr/lib/python3.11/contextlib.py", line 155, in __exit__
    self.gen.throw(typ, value, traceback)
  File "/home/dam/.virtualenvs/pwneddb/lib/python3.11/site-packages/httpcore/_exceptions.py", line 14, in map_exceptions
    raise to_exc(exc) from exc
httpcore.ConnectTimeout

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/lib/python3.11/multiprocessing/process.py", line 314, in _bootstrap
    self.run()
  File "/usr/lib/python3.11/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/home/dam/.virtualenvs/pwneddb/lib/python3.11/site-packages/hibp_downloader/commands/hibp_download.py", line 178, in queue_worker_process
    asyncio.run(pwnedpasswords_get_store_gather(result_queue, hash_prefixes, worker_args))
  File "/usr/lib/python3.11/asyncio/runners.py", line 190, in run
    return runner.run(main)
           ^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/asyncio/runners.py", line 118, in run
    return self._loop.run_until_complete(task)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
  File "/home/dam/.virtualenvs/pwneddb/lib/python3.11/site-packages/hibp_downloader/commands/hibp_download.py", line 182, in pwnedpasswords_get_store_gather
    metadata_results = await asyncio.gather(
                       ^^^^^^^^^^^^^^^^^^^^^
  File "/home/dam/.virtualenvs/pwneddb/lib/python3.11/site-packages/hibp_downloader/commands/hibp_download.py", line 228, in pwnedpasswords_get_and_store_async
    binary, metadata_latest = await pwnedpasswords_get(prefix, hash_type=hash_type, etag=etag, encoding=encoding_type)
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dam/.virtualenvs/pwneddb/lib/python3.11/site-packages/hibp_downloader/commands/hibp_download.py", line 269, in pwnedpasswords_get
    response = await httpx_binary_response(url=url, etag=etag, encoding=encoding, debug=httpx_debug)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dam/.virtualenvs/pwneddb/lib/python3.11/site-packages/hibp_downloader/lib/http.py", line 53, in httpx_binary_response
    response = await client.send(request=request, stream=True)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dam/.virtualenvs/pwneddb/lib/python3.11/site-packages/httpx/_client.py", line 1617, in send
    response = await self._send_handling_auth(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dam/.virtualenvs/pwneddb/lib/python3.11/site-packages/httpx/_client.py", line 1645, in _send_handling_auth
    response = await self._send_handling_redirects(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dam/.virtualenvs/pwneddb/lib/python3.11/site-packages/httpx/_client.py", line 1682, in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dam/.virtualenvs/pwneddb/lib/python3.11/site-packages/httpx/_client.py", line 1719, in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dam/.virtualenvs/pwneddb/lib/python3.11/site-packages/httpx/_transports/default.py", line 365, in handle_async_request
    with map_httpcore_exceptions():
  File "/usr/lib/python3.11/contextlib.py", line 155, in __exit__
    self.gen.throw(typ, value, traceback)
  File "/home/dam/.virtualenvs/pwneddb/lib/python3.11/site-packages/httpx/_transports/default.py", line 83, in map_httpcore_exceptions
    raise mapped_exc(message) from exc
httpx.ConnectTimeout

The thread managing also does not handle the threads crashing, making those threads stall. Eventually every thread crashes and the main process gets stuck waiting for the now crashed threads to close.

Thanks for the report(s) @gregsadetsky and @wildegnux
I've not had a chance to look into this yet, however I've been able to compare Python 3.10 vs 3.11 and somewhere in between something has broken :(
My current limited check is that I've just used hibp-downloader under Python 3.10 to update my own local --data-path to see if the latest reported Naz.API dataset is included yet - the tool works fine under 3.10
Not entirely sure the root cause is a DNS lookup issue yet, as I get slightly different messages in my 3.11 test environment
2024-01-19T01:17:44+1000 | INFO | hibp-downloader | HIBP Downloader: v0.2.1
2024-01-19T01:17:44+1000 | INFO | hibp-downloader | data-path '/home/ndejong/test/data'
2024-01-19T01:17:44+1000 | INFO | hibp-downloader | metadata-path '/home/ndejong/test/data'
2024-01-19T01:17:45+1000 | INFO | hibp-downloader | Created 4 worker processes to consume a queue of prefix-hash values.
2024-01-19T01:17:52+1000 | INFO | hibp-downloader | prefix=000ef source=[lc:0 et:0 rc:249 ro:0 xx:1] processed=[4.4MB ~24824H/s] api=[55req/s 4.4MB] runtime=0.2min
2024-01-19T01:18:01+1000 | INFO | hibp-downloader | prefix=001f3 source=[lc:0 et:0 rc:499 ro:0 xx:1] processed=[8.8MB ~26053H/s] api=[58req/s 8.8MB] runtime=0.3min
Process Process-4:
Traceback (most recent call last):
  File "/home/ndejong/test/.venv/lib/python3.11/site-packages/anyio/streams/tls.py", line 140, in _call_sslobject_method
    result = func(*args)
             ^^^^^^^^^^^
  File "/usr/lib/python3.11/ssl.py", line 921, in read
    v = self._sslobj.read(len)
        ^^^^^^^^^^^^^^^^^^^^^^
ssl.SSLWantReadError: The operation did not complete (read) (_ssl.c:2580)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/ndejong/test/.venv/lib/python3.11/site-packages/anyio/_core/_tasks.py", line 115, in fail_after
    yield cancel_scope
  File "/home/ndejong/test/.venv/lib/python3.11/site-packages/httpcore/_backends/anyio.py", line 34, in read
    return await self._stream.receive(max_bytes=max_bytes)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ndejong/test/.venv/lib/python3.11/site-packages/anyio/streams/tls.py", line 205, in receive
    data = await self._call_sslobject_method(self._ssl_object.read, max_bytes)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ndejong/test/.venv/lib/python3.11/site-packages/anyio/streams/tls.py", line 147, in _call_sslobject_method
    data = await self.transport_stream.receive()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ndejong/test/.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 1123, in receive
    await self._protocol.read_event.wait()
  File "/usr/lib/python3.11/asyncio/locks.py", line 213, in wait
    await fut
asyncio.exceptions.CancelledError: Cancelled by cancel scope 7905d01b4790

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/ndejong/test/.venv/lib/python3.11/site-packages/httpcore/_exceptions.py", line 10, in map_exceptions
    yield
  File "/home/ndejong/test/.venv/lib/python3.11/site-packages/httpcore/_backends/anyio.py", line 32, in read
    with anyio.fail_after(timeout):
  File "/usr/lib/python3.11/contextlib.py", line 158, in __exit__
    self.gen.throw(typ, value, traceback)
  File "/home/ndejong/test/.venv/lib/python3.11/site-packages/anyio/_core/_tasks.py", line 118, in fail_after
    raise TimeoutError
TimeoutError

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/ndejong/test/.venv/lib/python3.11/site-packages/httpx/_transports/default.py", line 66, in map_httpcore_exceptions
    yield
  File "/home/ndejong/test/.venv/lib/python3.11/site-packages/httpx/_transports/default.py", line 366, in handle_async_request
    resp = await self._pool.handle_async_request(req)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ndejong/test/.venv/lib/python3.11/site-packages/httpcore/_async/connection_pool.py", line 268, in handle_async_request
    raise exc
  File "/home/ndejong/test/.venv/lib/python3.11/site-packages/httpcore/_async/connection_pool.py", line 251, in handle_async_request
    response = await connection.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ndejong/test/.venv/lib/python3.11/site-packages/httpcore/_async/connection.py", line 103, in handle_async_request
    return await self._connection.handle_async_request(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ndejong/test/.venv/lib/python3.11/site-packages/httpcore/_async/http2.py", line 185, in handle_async_request
    raise exc
  File "/home/ndejong/test/.venv/lib/python3.11/site-packages/httpcore/_async/http2.py", line 148, in handle_async_request
    status, headers = await self._receive_response(
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ndejong/test/.venv/lib/python3.11/site-packages/httpcore/_async/http2.py", line 292, in _receive_response
    event = await self._receive_stream_event(request, stream_id)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ndejong/test/.venv/lib/python3.11/site-packages/httpcore/_async/http2.py", line 333, in _receive_stream_event
    await self._receive_events(request, stream_id)
  File "/home/ndejong/test/.venv/lib/python3.11/site-packages/httpcore/_async/http2.py", line 361, in _receive_events
    events = await self._read_incoming_data(request)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ndejong/test/.venv/lib/python3.11/site-packages/httpcore/_async/http2.py", line 452, in _read_incoming_data
    raise exc
  File "/home/ndejong/test/.venv/lib/python3.11/site-packages/httpcore/_async/http2.py", line 438, in _read_incoming_data
    data = await self._network_stream.read(self.READ_NUM_BYTES, timeout)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ndejong/test/.venv/lib/python3.11/site-packages/httpcore/_backends/anyio.py", line 31, in read
    with map_exceptions(exc_map):
  File "/usr/lib/python3.11/contextlib.py", line 158, in __exit__
    self.gen.throw(typ, value, traceback)
  File "/home/ndejong/test/.venv/lib/python3.11/site-packages/httpcore/_exceptions.py", line 14, in map_exceptions
    raise to_exc(exc) from exc
httpcore.ReadTimeout

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/lib/python3.11/multiprocessing/process.py", line 314, in _bootstrap
    self.run()
  File "/usr/lib/python3.11/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/home/ndejong/test/.venv/lib/python3.11/site-packages/hibp_downloader/commands/hibp_download.py", line 178, in queue_worker_process
    asyncio.run(pwnedpasswords_get_store_gather(result_queue, hash_prefixes, worker_args))
  File "/usr/lib/python3.11/asyncio/runners.py", line 190, in run
    return runner.run(main)
           ^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/asyncio/runners.py", line 118, in run
    return self._loop.run_until_complete(task)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
  File "/home/ndejong/test/.venv/lib/python3.11/site-packages/hibp_downloader/commands/hibp_download.py", line 182, in pwnedpasswords_get_store_gather
    metadata_results = await asyncio.gather(
                       ^^^^^^^^^^^^^^^^^^^^^
  File "/home/ndejong/test/.venv/lib/python3.11/site-packages/hibp_downloader/commands/hibp_download.py", line 228, in pwnedpasswords_get_and_store_async
    binary, metadata_latest = await pwnedpasswords_get(prefix, hash_type=hash_type, etag=etag, encoding=encoding_type)
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ndejong/test/.venv/lib/python3.11/site-packages/hibp_downloader/commands/hibp_download.py", line 269, in pwnedpasswords_get
    response = await httpx_binary_response(url=url, etag=etag, encoding=encoding, debug=httpx_debug)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ndejong/test/.venv/lib/python3.11/site-packages/hibp_downloader/lib/http.py", line 53, in httpx_binary_response
    response = await client.send(request=request, stream=True)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ndejong/test/.venv/lib/python3.11/site-packages/httpx/_client.py", line 1617, in send
    response = await self._send_handling_auth(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ndejong/test/.venv/lib/python3.11/site-packages/httpx/_client.py", line 1645, in _send_handling_auth
    response = await self._send_handling_redirects(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ndejong/test/.venv/lib/python3.11/site-packages/httpx/_client.py", line 1682, in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ndejong/test/.venv/lib/python3.11/site-packages/httpx/_client.py", line 1719, in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ndejong/test/.venv/lib/python3.11/site-packages/httpx/_transports/default.py", line 365, in handle_async_request
    with map_httpcore_exceptions():
  File "/usr/lib/python3.11/contextlib.py", line 158, in __exit__
    self.gen.throw(typ, value, traceback)
  File "/home/ndejong/test/.venv/lib/python3.11/site-packages/httpx/_transports/default.py", line 83, in map_httpcore_exceptions
    raise mapped_exc(message) from exc
httpx.ReadTimeout
^CSIGINT received, exiting.
SIGINT received, exiting.
SIGINT received, exiting.
SIGINT received, exiting.
^CSIGINT received, exiting.
Exception ignored in atexit callback: <function _exit_function at 0x7905d137ce00>
Traceback (most recent call last):
  File "/usr/lib/python3.11/multiprocessing/util.py", line 360, in _exit_function
    _run_finalizers()
  File "/usr/lib/python3.11/multiprocessing/util.py", line 300, in _run_finalizers
    finalizer()
  File "/usr/lib/python3.11/multiprocessing/util.py", line 224, in __call__
    res = self._callback(*self._args, **self._kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/multiprocessing/queues.py", line 199, in _finalize_join
    thread.join()
  File "/usr/lib/python3.11/threading.py", line 1119, in join
    self._wait_for_tstate_lock()
  File "/usr/lib/python3.11/threading.py", line 1139, in _wait_for_tstate_lock
    if lock.acquire(block, timeout):
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ndejong/test/.venv/lib/python3.11/site-packages/hibp_downloader/main.py", line 20, in sigint_handler
    exit()
  File "<frozen _sitebuiltins>", line 26, in __call__
SystemExit: None

Note to self

write tests to catch this, we really don't have much in the way of tests at the moment  :(
figure out why the project badges are claiming 3.12 since we don't even test for 3.12
handle threads that blow up so we don't fall into an infinite wait condition
the issue here appears to be caused by httpx
tickets that looks related - https://github.com/encode/httpx/discussions/2726

New release v0.3.0 that might resolve this issue, unfortunately it's been really hard to replicate the errors on this to chase it down - https://github.com/threatpatrols/hibp-downloader/releases/tag/0.3.0
There are two key changes that I'm expecting should move the needle on this issue though -

the loosening of the dependencies to allow upgrades beyond patch releases because there is "something" funky in and around anyio where previously we were probably too opinionated about httpx dependency version that imports anyio
the increase in HTTPX request timeout from 5 seconds to 30 seconds; this seems the more likely culprit

The code is more robust around handling worker threads when they have HTTPX exceptions so we should see less infinite loop scenarios, however clean thread exiting (eg SIGINT with ^C) is still not a thing :(
Please do send feedback so we can gauge if this resolves.

Occasional errors still occur on Python 3.11.6 (on EndeavourOS):
2024-01-24T14:50:16+0100 | DEBUG | hibp-downloader | worker_index=14 prefix='0413a' hash_type='sha1' encoding_type='gzip' ignore_etag=False local_cache_ttl=43200 start_timestamp=2024-01-24 14:50:16.201230+01:00
2024-01-24T14:50:16+0100 | DEBUG | hibp-downloader | No existing metadata file 'data2/sha1/04/13/0413a.meta' using an empty entry
2024-01-24T14:50:46+0100 | ERROR | hibp-downloader | Unable to establish connection https://api.pwnedpasswords.com/range/0413a

Debug log doesn't seem to tell me anything else about those threads that might be useful.
But the failing threads do exit cleanly now so there's no more infinite wait. And to workaround the errors once could just run it in a loop until it stops giving errors.

I can also reproduce the same errors on a different machine with Python 3.10.12 on Ubuntu 22.04.3 LTS (running under WSL)

Okay, that helps - are you able to provide a list of the installed Python packages in each virtual environment you have there?

Python 3.11.6:
aiofiles==23.2.1
anyio==4.2.0
certifi==2023.11.17
click==8.1.7
colorama==0.4.6
h11==0.14.0
h2==4.1.0
hibp-downloader==0.3.0
hpack==4.0.0
httpcore==1.0.2
httpx==0.26.0
hyperframe==6.0.1
idna==3.6
markdown-it-py==3.0.0
mdurl==0.1.2
Pygments==2.17.2
rich==13.7.0
shellingham==1.5.4
sniffio==1.3.0
typer==0.9.0
typing_extensions==4.9.0

Python 3.10.12:
aiofiles==23.2.1
anyio==4.2.0
certifi==2023.11.17
click==8.1.7
colorama==0.4.6
exceptiongroup==1.2.0
h11==0.14.0
h2==4.1.0
hibp-downloader==0.3.0
hpack==4.0.0
httpcore==1.0.2
httpx==0.26.0
hyperframe==6.0.1
idna==3.6
markdown-it-py==3.0.0
mdurl==0.1.2
Pygments==2.17.2
rich==13.7.0
shellingham==1.5.4
sniffio==1.3.0
typer==0.9.0
typing_extensions==4.9.0

I am also experiencing the Unable to establish connection errors - and, from reading the logs, I assume they are not retried? 🤔

Yes, retries are not a thing in the current code - would surely help
Current thinking is that the timeouts would make sense if you consider this thing creates a lot connections which may in-turn cause an upstream network component to grok - for example a small home router may not have enough NAT state table and then intermittently show connection problems.
This line of thinking might explain why I've rarely been able to replicate this most of the time.
Could you give it another spin and reduce the --processes and --chunk-size values - if this is the underlaying issue then a feature to dynamically scale back to suit the local network conditions might be the thing needed here

New release 0.3.1 implements retries and provides CLI options to adjust the default values
https://pypi.org/project/hibp-downloader/0.3.1/
pip install --upgrade hibp-downloader

Feedback would be great

Sorry for the lack of feedback! Will run some test now!

I still run into some threads crashing:
Traceback (most recent call last):
  File "/home/dam/.virtualenvs/pwn/lib/python3.11/site-packages/anyio/streams/tls.py", line 140, in _call_sslobject_method
    result = func(*args)
             ^^^^^^^^^^^
  File "/usr/lib/python3.11/ssl.py", line 921, in read
    v = self._sslobj.read(len)
        ^^^^^^^^^^^^^^^^^^^^^^
ssl.SSLWantReadError: The operation did not complete (read) (_ssl.c:2580)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/dam/.virtualenvs/pwn/lib/python3.11/site-packages/anyio/_core/_tasks.py", line 115, in fail_after
    yield cancel_scope
  File "/home/dam/.virtualenvs/pwn/lib/python3.11/site-packages/httpcore/_backends/anyio.py", line 34, in read
    return await self._stream.receive(max_bytes=max_bytes)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dam/.virtualenvs/pwn/lib/python3.11/site-packages/anyio/streams/tls.py", line 205, in receive
    data = await self._call_sslobject_method(self._ssl_object.read, max_bytes)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dam/.virtualenvs/pwn/lib/python3.11/site-packages/anyio/streams/tls.py", line 147, in _call_sslobject_method
    data = await self.transport_stream.receive()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dam/.virtualenvs/pwn/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 1123, in receive
    await self._protocol.read_event.wait()
  File "/usr/lib/python3.11/asyncio/locks.py", line 213, in wait
    await fut
asyncio.exceptions.CancelledError: Cancelled by cancel scope 72b64bf7c550

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/dam/.virtualenvs/pwn/lib/python3.11/site-packages/httpcore/_exceptions.py", line 10, in map_exceptions
    yield
  File "/home/dam/.virtualenvs/pwn/lib/python3.11/site-packages/httpcore/_backends/anyio.py", line 32, in read
    with anyio.fail_after(timeout):
  File "/usr/lib/python3.11/contextlib.py", line 158, in __exit__
    self.gen.throw(typ, value, traceback)
  File "/home/dam/.virtualenvs/pwn/lib/python3.11/site-packages/anyio/_core/_tasks.py", line 118, in fail_after
    raise TimeoutError
TimeoutError

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/dam/.virtualenvs/pwn/lib/python3.11/site-packages/httpx/_transports/default.py", line 67, in map_httpcore_exceptions
    yield
  File "/home/dam/.virtualenvs/pwn/lib/python3.11/site-packages/httpx/_transports/default.py", line 252, in __aiter__
    async for part in self._httpcore_stream:
  File "/home/dam/.virtualenvs/pwn/lib/python3.11/site-packages/httpcore/_async/connection_pool.py", line 361, in __aiter__
    async for part in self._stream:
  File "/home/dam/.virtualenvs/pwn/lib/python3.11/site-packages/httpcore/_async/http2.py", line 582, in __aiter__
    raise exc
  File "/home/dam/.virtualenvs/pwn/lib/python3.11/site-packages/httpcore/_async/http2.py", line 572, in __aiter__
    async for chunk in self._connection._receive_response_body(
  File "/home/dam/.virtualenvs/pwn/lib/python3.11/site-packages/httpcore/_async/http2.py", line 313, in _receive_response_body
    event = await self._receive_stream_event(request, stream_id)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dam/.virtualenvs/pwn/lib/python3.11/site-packages/httpcore/_async/http2.py", line 333, in _receive_stream_event
    await self._receive_events(request, stream_id)
  File "/home/dam/.virtualenvs/pwn/lib/python3.11/site-packages/httpcore/_async/http2.py", line 361, in _receive_events
    events = await self._read_incoming_data(request)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dam/.virtualenvs/pwn/lib/python3.11/site-packages/httpcore/_async/http2.py", line 452, in _read_incoming_data
    raise exc
  File "/home/dam/.virtualenvs/pwn/lib/python3.11/site-packages/httpcore/_async/http2.py", line 438, in _read_incoming_data
    data = await self._network_stream.read(self.READ_NUM_BYTES, timeout)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dam/.virtualenvs/pwn/lib/python3.11/site-packages/httpcore/_backends/anyio.py", line 31, in read
    with map_exceptions(exc_map):
  File "/usr/lib/python3.11/contextlib.py", line 158, in __exit__
    self.gen.throw(typ, value, traceback)
  File "/home/dam/.virtualenvs/pwn/lib/python3.11/site-packages/httpcore/_exceptions.py", line 14, in map_exceptions
    raise to_exc(exc) from exc
httpcore.ReadTimeout

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/lib/python3.11/multiprocessing/process.py", line 314, in _bootstrap
    self.run()
  File "/usr/lib/python3.11/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/home/dam/.virtualenvs/pwn/lib/python3.11/site-packages/hibp_downloader/commands/hibp_download.py", line 193, in queue_worker_process
    asyncio.run(pwnedpasswords_get_store_gather(result_queue, hash_prefixes, worker_args))
  File "/usr/lib/python3.11/asyncio/runners.py", line 190, in run
    return runner.run(main)
           ^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/asyncio/runners.py", line 118, in run
    return self._loop.run_until_complete(task)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/asyncio/base_events.py", line 654, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
2024-03-08T14:55:04+0100 | ESC[1;37mDEBUGESC[0m | hibp-downloader | Request attempt 1 of 5 for 'https://api.pwnedpasswords.com/range/0ec91'
  File "/home/dam/.virtualenvs/pwn/lib/python3.11/site-packages/hibp_downloader/commands/hibp_download.py", line 197, in pwnedpasswords_get_store_gather
    metadata_results = await asyncio.gather(
                       ^^^^^^^^^^^^^^^^^^^^^
  File "/home/dam/.virtualenvs/pwn/lib/python3.11/site-packages/hibp_downloader/commands/hibp_download.py", line 254, in pwnedpasswords_get_and_store_async
    binary, metadata_latest = await pwnedpasswords_get(
                              ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dam/.virtualenvs/pwn/lib/python3.11/site-packages/hibp_downloader/commands/hibp_download.py", line 306, in pwnedpasswords_get
    response = await httpx_binary_response(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dam/.virtualenvs/pwn/lib/python3.11/site-packages/hibp_downloader/lib/http.py", line 74, in httpx_binary_response
    response.binary = b"".join([part async for part in response.aiter_raw()])
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dam/.virtualenvs/pwn/lib/python3.11/site-packages/hibp_downloader/lib/http.py", line 74, in <listcomp>
    response.binary = b"".join([part async for part in response.aiter_raw()])
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dam/.virtualenvs/pwn/lib/python3.11/site-packages/httpx/_models.py", line 991, in aiter_raw
    async for raw_stream_bytes in self.stream:
  File "/home/dam/.virtualenvs/pwn/lib/python3.11/site-packages/httpx/_client.py", line 147, in __aiter__
    async for chunk in self._stream:
  File "/home/dam/.virtualenvs/pwn/lib/python3.11/site-packages/httpx/_transports/default.py", line 251, in __aiter__
    with map_httpcore_exceptions():
  File "/usr/lib/python3.11/contextlib.py", line 158, in __exit__
    self.gen.throw(typ, value, traceback)
  File "/home/dam/.virtualenvs/pwn/lib/python3.11/site-packages/httpx/_transports/default.py", line 84, in map_httpcore_exceptions
    raise mapped_exc(message) from exc
httpx.ReadTimeout

And now some retries (nice :+1: )
2024-03-08T14:53:30+0100 | DEBUG | hibp-downloader | Request attempt 2 of 5 for 'https://api.pwnedpasswords.com/range/05cbc'
2024-03-08T14:53:30+0100 | DEBUG | hibp-downloader | Request attempt 2 of 5 for 'https://api.pwnedpasswords.com/range/05cbf'
2024-03-08T14:53:51+0100 | DEBUG | hibp-downloader | Request attempt 2 of 5 for 'https://api.pwnedpasswords.com/range/075ea'
2024-03-08T14:54:14+0100 | DEBUG | hibp-downloader | Request attempt 2 of 5 for 'https://api.pwnedpasswords.com/range/0922a'
2024-03-08T14:55:04+0100 | DEBUG | hibp-downloader | Request attempt 2 of 5 for 'https://api.pwnedpasswords.com/range/0ccec'
2024-03-08T14:55:04+0100 | DEBUG | hibp-downloader | Request attempt 2 of 5 for 'https://api.pwnedpasswords.com/range/0cced'
2024-03-08T14:55:04+0100 | DEBUG | hibp-downloader | Request attempt 2 of 5 for 'https://api.pwnedpasswords.com/range/0ccf2'
2024-03-08T15:11:25+0100 | DEBUG | hibp-downloader | Request attempt 2 of 5 for 'https://api.pwnedpasswords.com/range/4e3ac'
2024-03-08T15:12:56+0100 | DEBUG | hibp-downloader | Request attempt 2 of 5 for 'https://api.pwnedpasswords.com/range/540c3'
2024-03-08T15:19:08+0100 | DEBUG | hibp-downloader | Request attempt 2 of 5 for 'https://api.pwnedpasswords.com/range/6bb9d'
2024-03-08T15:19:08+0100 | DEBUG | hibp-downloader | Request attempt 2 of 5 for 'https://api.pwnedpasswords.com/range/6bba1'
2024-03-08T15:39:30+0100 | DEBUG | hibp-downloader | Request attempt 2 of 5 for 'https://api.pwnedpasswords.com/range/b9611'
2024-03-08T15:39:30+0100 | DEBUG | hibp-downloader | Request attempt 2 of 5 for 'https://api.pwnedpasswords.com/range/b9615'
2024-03-08T15:40:41+0100 | DEBUG | hibp-downloader | Request attempt 2 of 5 for 'https://api.pwnedpasswords.com/range/bdb53'
2024-03-08T15:47:58+0100 | DEBUG | hibp-downloader | Request attempt 2 of 5 for 'https://api.pwnedpasswords.com/range/da102'

Unclear to me if that crashed thread is one of the retries...
That test was run on my laptop in my office (wifi) network using the default options. Running the same right now on my home network. Will also run a test on my home desktop (WSL).

Test from home network: No crashed threads, but more of these failed downloads:
2024-03-09T18:54:56+0100 | DEBUG | hibp-downloader | worker_index=6 prefix='d3215' hash_type='sha1' encoding_type='gzip' http_timeout=30 http_max_retries=5 http_debug=Falseignore_etag=False local_cache_ttl=43200 start_timestamp=2024-03-09 18:54:56.486975+01:00
2024-03-09T18:54:56+0100 | DEBUG | hibp-downloader | No existing metadata file 'test_home/sha1/d3/21/d3215.meta' using an empty entry
2024-03-09T18:54:56+0100 | DEBUG | hibp-downloader | Request attempt 1 of 5 for 'https://api.pwnedpasswords.com/range/d3215'
2024-03-09T18:55:06+0100 | WARNING | hibp-downloader | Request [1 of 5] failed for 'GET' 'https://api.pwnedpasswords.com/range/d3215'
2024-03-09T18:55:06+0100 | DEBUG | hibp-downloader | Request attempt 2 of 5 for 'https://api.pwnedpasswords.com/range/d3215'

But all failures succeeded on attempt 2. :+1:

Test in WSL (home network): With default options (which on this machine means 32 processes) it runs full boar for ~30-60 sec, then completely stops for ~30 sec (matching the http-timeout value). Then all the active download fails and it continues going at full speed again for another minute and then stops again and so on. Reducing processes / chunks size does improve things, but I had to go down to 8 processes and 1 chunk for getting it to not occasionally lock up. Might be some funky stuff in the WSL network stack I guess, since it worked mostly fine one the linux laptop in the same network.


ruff binary not found when installed to PATH

pytest-ruff seems to be making some assumptions about how binaries can be found for an environment, assumptions that fail expectations for a pip-run environment:
 ~ @ pip-run pytest-ruff -- -c "import pytest_ruff; print(pytest_ruff.find_ruff_bin())"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/var/folders/f2/2plv6q2n7l932m2x004jlw340000gn/T/pip-run-jrfhl2p1/ruff/__main__.py", line 28, in find_ruff_bin
    raise FileNotFoundError(path)
FileNotFoundError: /Users/jaraco/Library/Python/3.12/bin/ruff

Even though the binary is present and made prominent by the installation of pytest-ruff:
 ~ @ pip-run pytest-ruff -- -c "import shutil; print(shutil.which('ruff'))"
/var/folders/f2/2plv6q2n7l932m2x004jlw340000gn/T/pip-run-740q7ysr/bin/ruff

The same issue can be observed without using pip-run by using pip install --target:
 draft @ pip install --target target pytest-ruff -q
 draft @ env PYTHONPATH=target PATH=target/bin:$PATH py -c "import pytest_ruff; pytest_ruff.find_ruff_bin()"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/Users/jaraco/draft/target/ruff/__main__.py", line 28, in find_ruff_bin
    raise FileNotFoundError(path)
FileNotFoundError: /Users/jaraco/Library/Python/3.12/bin/ruff

I understand that it may be undesirable to simply rely on ruff as found on $PATH (as shutil.which does), but it would be nice if ruff could be picked up if installed using --target.

If you'd like me to explore a solution, feel free to assign the issue to me.

It is not clear to me why pip-run can't find ruff, I just call ruff discovery function, but I agree if FileNotFoundError, we can check if ruff is available.
I'll assign it to you, I won't have time to work on it now.

Oh, shoot. I see now that find_ruff_bin is imported from ruff so the discovery issue is in ruff itself.

The issue was previously reported as https://github.com/astral-sh/ruff/issues/11246.

Good news. The issue is fixed upstream for ruff > 0.4.4, so there's nothing more to do here.


Enabling several cwise op kernels for ROCm

This PR enables:
"Div", "RealDiv", "DivNoNan", "MulNoNan" for complex
"xlogy" for float, half, double
Benchmark tests for DivNoNan and Cube

Submitted upstream as  #35972.


lint issues with advanced YAML

Component
cli
Describe the bug
I'm just starting out with Woodpecker, having used Drone 1.x for awhile now.  I wanted to test out the multi-pipeline feature and am using the go examples from woodpecker/.woodpecker.  If I try to lint the files using the 0.15.3 Mac binaries I get the following error:
$ woodpecker-cli lint .woodpecker/test.yml
10:23AM ??? ../../../../woodpecker/src/github.com/woodpecker-ci/woodpecker/cli/common/zerologger.go:20 > LogLevel = trace
❌ Config is invalid
10:23AM FTL ../../../../woodpecker/src/github.com/woodpecker-ci/woodpecker/cmd/cli/main.go:69 > error running cli error="Failed to load yml file do not support yaml node kind '16'"

If I remove the variables (eg. &golang_image golang:latest) and change the image locations from *golang_image to golang:latest it will work.
Does it work correctly from the server/agent and this is just a lint error?
System Info
{
"source": "https://github.com/woodpecker-ci/woodpecker",
"version": "0.15.3"
}

$ uname -v
Darwin Kernel Version 21.4.0: Fri Mar 18 00:45:05 PDT 2022; root:xnu-8020.101.4~15/RELEASE_X86_64

Additional context
No response
Validations

[X] Read the Contributing Guidelines.
[X] Read the docs.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] Check that this is a concrete bug. For Q&A join our Discord Chat Server or the Matrix room.

It does appear to run correctly it's just the lint that fails.

It looks like the problem is a difference between the published documentation and the released binaries.   While looking at the .woodpecker/docs.yml file I see that every push to the default branch (master) triggers a deploy of the docs.  Looking at the commits it appears that v0.15.3 was released on Jun 16 but commit adding the variables, advanced YAML, and lint changes were not added until Jul 17.

It does appear to run correctly it's just the lint that fails.

tldr: variables is a yaml feature so v0.15.x already do support it, just the linter does not have any idea what to do with this
current master does have rule for it...


Ordering services listing

Order list responses by:

Framework

Lot

Service Name

note this gives the following message under testing:
/Users/martyninglis/Envs/dm-api/lib/python2.7/site-packages/sqlalchemy/sql/base.py:530: SAWarning: Column 'CAST(services.data ->> :data_1 AS VARCHAR)' on table <sqlalchemy.sql.selectable.Select at 0x10de7c390; Select object> being replaced by <sqlalchemy.sql.elements.ColumnClause at 0x10de8dfd0; %(4528261328 anon)s>, which has the same key.  Consider use_labels for select() statements.
(key, getattr(existing, 'table', None), value))

Which is an advisory around syntax. To remove this would require using SQLAlchemy select not Flask::SQLAlchemy query for our queries. Whoever picks this up we should chat about implications.

Closing for now as logging issues are not fixed.


Implement tickets

As part of accounts pallet, implementing the Fungible trait.

Syncing with the ETH network via pallet_accounts, we should mint tickets according to the ETH smart contract.
To be honest this could also include minting NOVA as well.

Part of this task should be swapping into our substrate fork which allows assets to be untradeable.

TODO

calculate the lock period from the timestamp passed in the Ethereum event
get USD price (Chainlink or other means)
mint Tickets and NOVA according to the lock period and bonus calculation

This was estimated 13 but ended being in so many sprints. We need to retrospect here. cc @ZerusD


DefaultPlayerStrumY isn't set up correctly

Describe your bug here.
DefaultPlayerStrumY is set slightly higher than the actual strum Y, I need to manually set the variable when the song starts
Command Prompt/Terminal logs (if existing)
No response
Are you modding a build from source or with Lua?
Lua
What is your build target?
Windows
Did you edit anything in this build? If so, mention or summarize your changes.
no

do it + 10


Implement allow list for drops

This will help us test things on production and sell it as VIP drop as well
Simple list, some csv where we can put list of addresses to allowed to mint even mint would be enabled.
we can add design that allow list phase enabled or so

Or whitelist_buyer

cc @exezbcz

probably done in #9171

phases


Make kerberos authentication using ccache

Entering a password and login is not always convenient
If the system is in a domain and login is configured via kerberos, it will be much more convenient.

This is a good idea, I need to have a look if there is a ccache compatible library for kerberos in golang.
A fast search 5mn search didn't give me any result yet, but I'll keep this in mind.

This is a good idea, I need to have a look if there is a ccache compatible library for kerberos in golang. A fast search 5mn search didn't give me any result yet, but I'll keep this in mind.

https://github.com/dpotapov/go-spnego
Please take a look at this repo

Working on Windows now, is it enough or do you need Linux also?
If so I'll publish it soon.

Implemented in both Windows and Linux, but only tested on Windows so far.
No unit tests done yet, this may came in the future.
Corporate internal version also updated.


want to use SliverWidget in ReorderableListView

Use case
I would like to use the sliverAppbar( and other sliver widget ) and reorder it!
Currently I get an error, so I would like you to support this if you don't mind.
Proposal
https://user-images.githubusercontent.com/7422251/179350217-7af75a3e-f0f4-44c8-95ea-9b1fc340f017.mp4

Hi @hatano0x06
The goal of this Github repo is not to give assistance on personal code or the whole package/plugin project,
but to improve flutter reporting bugs or with feature requests.
If you encounter behavior that you believe could be a bug, please provide a completed and minimal reproducible code sample that represents the problem.
Instead, if you think that the issue might depend on your implementation, please see flutter's community for resources and ask questions like this. You may also get some help if you post it on Stack Overflow and flutterhelp.
Thank you!

Hello,
Don’t hesitate to join. The assistance, below your page you can find, more
informations.
Eldeloro, manager.
Le lun. 18 juil. 2022 à 10:50 AM, huycozy @.***> a
écrit :

Hi @hatano0x06 https://github.com/hatano0x06
The goal of this Github repo is not to give assistance on personal code or
the whole package/plugin project,
but to improve flutter reporting bugs or with feature requests.
If you encounter behavior that you believe could be a bug, please provide
a completed and minimal reproducible code sample
https://stackoverflow.com/help/minimal-reproducible-example that
represents the problem.
Instead, if you think that the issue might depend on your implementation,
please see flutter's community https://flutter.dev/community for
resources and ask questions like this. You may also get some help if you
post it on Stack Overflow and flutterhelp
https://www.reddit.com/r/flutterhelp/.
Thank you!
—
Reply to this email directly, view it on GitHub
https://github.com/flutter/flutter/issues/107774#issuecomment-1186932673,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AYUHILS5FQ4JNLNBYRTJBJDVUULHDANCNFSM53X24YLQ
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

@hatano0x06
Your sample code throws an exception right after running.
Please see this StackOverflow answer that may help you: https://stackoverflow.com/questions/53980410/reorder-items-in-sliverlist-in-flutter-with-drag-drop (using a 3rd package reorderables)
cc: @darrenaustin for thoughts on the possibility of combining Sliver widgets and ReorderableListView as mentioned in #66080
Thanks!

This is an issue  because it causes exception


🐛 Handling mostly all old experiment json formats for importing experiments

In this PR, we have managed to import mostly all formats of old experiment json.
I have also disabled the import button until a file is selected.

Closing this PR as a new PR is created with correct pointing branch and reverted release branch not having angular 15 commits from dev branch


Add Upgrades GUI - Extended from SpaceDock

This pull request was automatically generated by SpaceDock on behalf of zer0Kerbal, to add Upgrades GUI - Extended to CKAN.
Please direct questions about this pull request to zer0Kerbal.
Mod details:
name = /mod/2208/Upgrades%20GUI%20-%20Extended
author = zer0Kerbal
abstract = Continuation of UpgradesUIExtensions by @got, continued by zer0Kerbal with community support.  This plugin is a collections of interface tweaks aimed at making the part/module upgrades feature introduced in 1.2 more user-friendly. Note that the plugin doesn't add any upgrades. If you want to have them in your game you need to download other mods that implement the upgrade feature.
license = CC 4.0 BY-NC-SA
Homepage = https://forum.kerbalspaceprogram.com/index.php?/topic/158081-122-upgradesgui-v15-upgrades-info-and-selection-in-vabsph-part-tooltips/
description =

Upgrades GUI - Extended
Continuation of  by (first by @GOT), now continued by zer0Kerbal with community support.
This plugin is a collections of interface tweaks aimed at making the part/module upgrades feature introduced in 1.2 more user-friendly.
Note that the plugin doesn't add any upgrades. If you want to have them in your game you need to download other mods that implement the upgrade feature.

VAB/SPH part tool tips show upgraded stats

The part stats are now updated according to unlocked upgrades.
The part cost is now updated according to unlocked upgrades.
All module widgets now show the updated stats according to unlocked upgrades.
The part upgrade module widget show the detail of part stats/cost modifiers.
If "showUpgradesInModuleInfo" (stock field) is set to true the upgrade config, the module widget now show the details of every upgrade currently unlocked for this module
Some QOL tweaks to the tool tip stats : dry mass, mention of multi-mode engines, better formatting of engines thrust/ISP
(bonus feature) Non-stock modules using cost/mass modifiers should have their modifiers taken into account too.

Upgrades selection

This allow to customize which upgrades are applied to placed parts in all modes (Career, Science and Sandbox)
Parts with upgrades now have a clickable "upgrade widget" in the tool tip widget list
Clicking on the widget show a list of upgrade widgets that can be toggled to enable/disable upgrades for this part
Upgrades exclusivity/overrides rules and R&D unlock status can't be bypassed
Vessels with customized upgrades will work perfectly if the plug-in is removed, all this is done within the stock upgrade implementation.

R&D tech tree feature

In the nodes part list, upgrades have a pale green background to better differentiate them from parts.

Download & source
Soon to be available on CKAN !
LATEST RELEASE and source from github.
Disclaimer
I'm far from a skilled programmer, so the code for this may be ugly. As far as I know, it does the job and doesn't break the game. However, keep in mind that I don't really know what I'm doing. If anybody has the time to review and comment my code, I'm open to suggestions and pull requests :) This also goes for me, zer0Kerbal. :)
KSP-AVC disclaimer
This mod doesn't include mini-AVC, but it has a version file that allow version checking trough the KSP-AVC Plugin.
Licensing
This masterful work of art is released under the unlicense.
So public domain, feel free to do anything, especially updating this plugin if I'm not around.
See changelog for changes
Known bugs and glitches

None at the moment
According to original author, GOT, even though you might be able to seemingly disable upgrades in the editor, these 'edits' may not and probably do not change anything in flight.

Didn't last long:
2019-08-16 12:00:03.332566
New errors detected, a popup should have shown up:
[
  [
    "UpgradesUIextensions",
    {
      "failed": true,
      "last_inflated": "2019-08-16T09:31:13Z",
      "last_checked": "2019-08-16T09:31:10Z",
      "last_error": "Could not get the mod from SpaceDock, reason: Mod not found.",
      "last_indexed": null
    }
  ]
]


Be resiliant to failing to load the telemetry extension

Add try/catch and keep going. We don't want this to happen, but it shouldn't prevent the extension from working.
Fixes #9454

My only ask is that we please, please, please stop calling it the "telemetry DLL" unless we're want to rename this project to make it clear. 😄

I called it the telemetry extension! It's fancy


Update deleted homeassistant user in Postgres

Just finished fixing this but posting this as an FYI
Home assistant was having a bunch of issues. Looking in the logs it showed that HomeAssistant was unable to connect to the DB.
Prereq's: You need this setup.

ssh root@{{HA_IP}} -p 22222
docker ps | grep -I time
docker exec -it {{container_id}} /bin/bash
psql -U postgres
ALTER USER postgres WITH PASSWORD '{{New password}}';
I then used pgadmin to recreate the HA users with the right permissions
Reboot and everything was working fine again

I'll be turning off automatic updates in the future for this plugin. Home this helps someone.

Just tried your option. But at point 3 I get the error:
Error response from daemon: Container * is not running. When I use the command docker container ls it shows that the conatiner is running.  Do you have any idea to solve this?

Hey @BobPuts - I made a mistake in my instructions.
You need to run the command: docker ps | grep -I time
That will return:
**747076f6daf3**   husselhans/hassos-addon-timescaledb-aarch64:2.0.1               "/init"                  41 hours ago   Up 41 hours   <IP_ADDRESS>:5432->5432/tcp, :::5432->5432/tcp
Then step 3:
docker exec -it **747076f6daf3** /bin/bash

Tried this and returned nothing. After a few times it says started 1 second ago, and then return nothing. It seems timescaledb is restarting everytime after the upgrade error.

This issue is marked stale and will be closed.
If the issue still persists, please respond to this ticket.


Adopt project-inheritance

See https://github.com/jenkins-infra/helpdesk/issues/3842. This plugin has a deployed POM that uses HTTP instead of HTTPS, so consumers (including promoted-builds) can't switch off the JCenter version (which JFrog has asked us to stop caching) until project-inheritance is republished with HTTPS.

Never mind, I can't actually adopt this because it is not hosted in the Jenkins GitHub organization.


SSB integration test

clean up the CSVs so that it loads faster
create integration test against H2

Codecov Report

Merging #9559 (822ca01) into master (c5d4b15) will decrease coverage by 2.64%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##             master    #9559      +/-   ##
============================================
- Coverage     69.90%   67.25%   -2.65%
- Complexity     4797     5017     +220
============================================
  Files          1927     1427     -500
  Lines        102729    74586   -28143
  Branches      15592    11914    -3678
============================================
- Hits          71811    50162   -21649
+ Misses        25847    20788    -5059
+ Partials       5071     3636    -1435

Flag
Coverage Δ

integration1
?

integration2
?

unittests1
67.25% <ø> (-0.02%)
:arrow_down:

unittests2
?

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

Impacted Files
Coverage Δ

...va/org/apache/pinot/core/routing/RoutingTable.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...va/org/apache/pinot/common/config/NettyConfig.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...a/org/apache/pinot/common/metrics/MinionMeter.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...g/apache/pinot/common/metrics/ControllerMeter.java
0.00% <0.00%> (-100.00%)
:arrow_down:

.../apache/pinot/common/metrics/BrokerQueryPhase.java
0.00% <0.00%> (-100.00%)
:arrow_down:

.../apache/pinot/common/metrics/MinionQueryPhase.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...ache/pinot/server/access/AccessControlFactory.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...he/pinot/common/messages/SegmentReloadMessage.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...he/pinot/common/messages/TableDeletionMessage.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...pinot/core/data/manager/realtime/TimerService.java
0.00% <0.00%> (-100.00%)
:arrow_down:

... and 751 more

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Subscription Type Not Permitted

Hi, I have tried to run the deployment script and am getting an error about the subscription type not being permitted. I have contacted Microsoft support and they said that our Tenant was setup correctly. Any ideas what the problem may be?
Thanks for any help that you can provide.

Closed due to inactivity - reopen if required


Switch between header/source doesn't find correct file in trivial cases.

When header and source files are in separate folders, swapping between header and source files fail in trivial situations:

.h and .cpp files with the same name but different folders will fail to swap if the contents are empty.
Similar to the above point, if there are build errors it may fail to execute the swap.
If a header only contains forward declarations and functions (no class definition), it will go to the file that contains the first class declaration.

For an example of point 3, see test-switch.tar.gz. This was tested with Qt Creator 10.0.0, which currently uses the clangd code model to handle header/source switches.

Open Foo.cpp.
Execute Switch Header/Source, it will correctly switch to Foo.h.
Execute Switch Header/Source again from Foo.h, notice how instead of switching to Foo.h it switches to Bar.h as the "source" file.
If you delete the class Bar; forward declare and change the function declaration to void foo(class Bar& bar);, executing Switch Header/Source correctly switches to Foo.cpp.

Logs
log.txt
System information
Output of clangd --version:
clangd version 16.0.2 (https://github.com/llvm/llvm-project 18ddebe1a1a9bde349441631365f0472e9693520)
Features: linux+grpc
Platform: x86_64-unknown-linux-gnu
Editor/LSP plugin: Qt Creator 10.0.0
Operating system: Arch Linux

See https://github.com/clangd/clangd/issues/1043 for some discussion of how this feature currently works.
I think the "file index" approach discussed in this comment is a promising one and should address the case of files with the same name in different directories, regardless of their contents.
There are probably opportunities to improve the content-based heuristics as well, but the above sounds like the bigger bang for buck overall.

I agree, I think a file index and using heuristics based on that would handle situations like this much better overall. Care would need to be taken if there's multiple files with the same name, though, ideally ties would be broken based on more similar paths. (e.g. if multiple internal projects with a Foo.h and Foo.cpp pair, one heuristic could be to match the companion that has the fewest directories to a common root)
I saw that issue earlier, but it looks like their fix only resolved issues for differing case for case-insensitive filesystems.


documentation for how to debug

I hear a lot that debugging is a big pain point.
Suggest we start a top-level section in the documentation called "Debugging.md", with tips and tricks for debugging.    There are various blog posts and unofficial tools available -- I think it will be useful to have an easy-to-find, somewhat authoritative source of documentation on "How To Debug"

I'm new, but working on debug right now. I could help

Thank you @danidiez. Do you need pointers?


LinkTo mutation is getting deprecated

It seems that ember's builtin LinkTo should not be mutated anymore.
Please see:
https://github.com/ember-template-lint/ember-template-lint/issues/1820#issuecomment-791963816
https://github.com/emberjs/rfcs/blob/master/text/0671-modernize-built-in-components-1.md

I see. This addon needs refactoring.

It seems that ember's builtin LinkTo should not be mutated anymore. Please see: ember-template-lint/ember-template-lint#1820 (comment) https://github.com/emberjs/rfcs/blob/master/text/0671-modernize-built-in-components-1.md

now you can use <LinkTo @route="authenticated" {{action Dd.actions.close}}>link</LinkTo>
I think this addon is deprecated for new versions of emberjs

now you can use <LinkTo @route="authenticated" {{action Dd.actions.close}}>link

Does this work?

now you can use <LinkTo @route="authenticated" {{action Dd.actions.close}}>link

Does this work?

<LinkTo "schedule.feed" {{on "click" this.toggleNavigaion}}>Feed
https://stackoverflow.com/questions/61740255/how-do-i-replace-invokeaction-attributes-on-link-to-components-in-emberjs


Cannot find "C:\Program Files\Microsoft Monitoring Agent\Agent\AzureAutomation<version>\HybridRegistration" folder if step 2 is not run

For Azure VMs, install the Log Analytics agent for Windows using the virtual machine extension for Windows. The extension installs the Log Analytics agent on Azure virtual machines, and enrolls virtual machines into an existing Log Analytics workspace using an Azure Resource Manager template or PowerShell. Once the agent is installed, the VM can be added to a Hybrid Runbook Worker group in your Automation account. Refer to steps 3 and 4 in the Manual deployment section.
If customer follow the above steps, they will miss the step 2, hence fail to find the C:\Program Files\Microsoft Monitoring Agent\Agent\AzureAutomation folder. Please update the document to improve customer experience.

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

ID: 7b29372c-7bd9-7da2-4cff-9afbb432bccf
Version Independent ID: 66ce101d-d21b-3fdf-be70-7f9cadc1570e
Content: Azure Automation Windows Hybrid Runbook Worker
Content Source: articles/automation/automation-windows-hrw-install.md
Service: automation
Sub-service: process-automation
GitHub Login: @MGoedtel
Microsoft Alias: magoedte

@sscchh2001 Thanks for your comment! We will review and provide an update as appropriate.

Assigning @MGoedtel for visibility, review, document enhancement consideration as appropriate and for additional insights if any. Thanks.

@sscchh2001 - Thanks for bringing this to our attention.  This documentation does need to be updated to correct this item and I'll bug this and see if we can squeeze it in this sprint or the next sprint.  I also see some inconsistencies with the corresponding Linux HRW install article, so I'll include that in the work item also.  #please-close

What is step 2? After installing the MMA, I can't seem to find the "C:\Program Files\Microsoft Monitoring Agent\Agent\AzureAutomation" folder. Does it take several hours for this to be pushed down to the Hybrid Worker?

@kevindd992002 - After the Log Analytics agent for Windows is installed, it can take several minutes before it downloads the Azure Automation solution MP to the machine.  That is dependent on you importing/enabling the solution in the workspace, as called out in step 1 of the manual install steps. If you followed the steps from the beginning, then if the agent is successfully communicating with the workspace (can confirm by reviewing the Application and Services\Operations Manager event log, it should pull the MP down and update the machine with the files to support the HRW role.
If you are experiencing issues, please open a support case with us.
Hope that helps.

After posting here, I realized that I had to enable the solution in the workspace. After enabling it, it took just a few minutes for it to be pushed down to the nodes. Thanks!

@kevindd992002 - Happy to hear you were able to identify what caused your situation. As a result of this not being related to a documentation issue, I'm going to proceed with closing this GitHub issue. Thanks!  #please-close

Installed MMA on my machine and log analytics is integrated with my machines. Solution is also enabled for log analytics. I am still unable to see the Azure Automation  folder inside Agent folder


Update vue-sfc-rollup to v3.0.0

https://github.com/team-innovation/vue-sfc-rollup/releases/tag/v3.0.0

Addressed in #25


Question

Hello,
I see your OceanLab drone project and would like it if you had reference for this?
This project I find very interesting. Where can I contact you if I have questions about the detection model?
Thank you 🙂

Hi,
Thank you for your interest in the OceanLab drone project! I'm glad you find it interesting. For this project, I'm utilizing a Zero-Shot Object Tracking strategy to track maritime species. I've made some modifications to the original code from the Roboflow repository to tailor it to my needs.
Best regards

Thank you 🙂 I will have to look into it.


Asset file type case and null handling

Make asset file type comparisons case insensitive

This change enables the AssetFileType to handle file extensions with case insensitivity.
I've also hardened the AssetFileType type to better handle null values in the case of the default value and other cases as well as to perform parameter validate to ensure we are creating values that will be useful.

@RamonArguelles

API change check for Azure.MixedReality.ObjectAnchors.Conversion
API changes are not detected in this pull request for Azure.MixedReality.ObjectAnchors.Conversion

#sign-off

Automerge seems to be stuck; merging manually.


CSP support for AMP pages

Describe the problem
We added CSP support in #3499, but it didn't apply to AMP pages.
Describe the proposed solution
I think we just have to add this monstrosity but I didn't look too closely yet
Alternatives considered
No response
Importance
nice to have
Additional Information
No response

This... isn't actually possible. If you follow the instructions in https://amp.dev/documentation/guides-and-tutorials/optimize-and-measure/secure-pages/, your page won't validate:

AMP is a trainwreck.


Replace cstr16! with a declarative macro

Add a new declarative macro that makes use of the ucs2::ucs2_cstr macro. Drop the proc macro from uefi_macros. For users of the uefi API there should be no change, just a different implementation behind the scenes.
Checklist

[ ] Sensible git history (for example, squash "typo" or "fix" commits). See the Rewriting History guide for help.
[ ] Update the changelog (if necessary)

Nice


Woox R4028 not converting

smarthack-psk.log
smarthack-wifi.log
smarthack-web.log
smarthack-udp.log
smarthack-mqtt.log
When starting the program the WOOX R4028 is in the update mode. as soon as i start the program it gvioes back to the original state and is it out of the update mode. trien to change the value in fake-registration-server.py (schema_key_count = 1 if gwId in self.activated_ids else 20) to 10, also tried 30, 5, 3 and 2 all with the same result. Any suggestion?
tuya-convert v2.4.4
Checking for network interface wlan0... Found.
Checking UDP port 53... Available.
Checking UDP port 67... Available.
Checking TCP port 80... Available.
Checking TCP port 443... Available.
Checking UDP port 6666... Available.
Checking UDP port 6667... Available.
Checking TCP port 1883... Available.
Checking TCP port 8886... Available.
Starting AP in a screen
Starting web server in a screen
Starting Mosquitto in a screen
Starting PSK frontend in a screen
Starting Tuya Discovery in a screen
IMPORTANT

Connect any other device (a smartphone or something) to the WIFI vtrust-flash
This step is IMPORTANT otherwise the smartconfig may not work!
Put your IoT device in autoconfig/smartconfig/pairing mode (LED will blink fast). This is usually done by pressing and holding the primary button of the device
Make sure nothing else is plugged into your IoT device while attempting to flash.
Press ENTER to continue

======================================================
Starting smart config pairing procedure
Waiting for the device to install the intermediate firmware
Put device in EZ config mode (blinking fast)
Sending SSID                  vtrust-flash
Sending wifiPassword
Sending token                 00000000
Sending secret                0101
................                                                <- Here goes the device from update mode to normal operation mode
SmartConfig complete.
Resending SmartConfig Packets
.................
SmartConfig complete.
Resending SmartConfig Packets
.................
SmartConfig complete.
Resending SmartConfig Packets
................
SmartConfig complete.
Resending SmartConfig Packets
.................
SmartConfig complete.
Resending SmartConfig Packets
..................
SmartConfig complete.
Resending SmartConfig Packets
..................
SmartConfig complete.
Resending SmartConfig Packets
................
SmartConfig complete.
Resending SmartConfig Packets
.................
SmartConfig complete.
Resending SmartConfig Packets
.................
SmartConfig complete.
Resending SmartConfig Packets
............
Device did not appear with the intermediate firmware
Check the *.log files in the scripts folder
Do you want to try flashing another device? [y/N]

Unsupported firmware due to patch by Tuya, please see pinned issue #483 and the wiki.


fillColor does not work

Sparkline(
data: data,
fillMode: FillMode.below,
fillColor: Colors.red[200],
);

Above code does not work. Always get white background color. Can you please help.

@Gagan5278  Fixed.  V1.0.7


CORE-419 IPB Club Syncing

Closes CORE-419

@CalumTowers are you somehow able to test this to: 1) ensure it doesn't break ;) and 2) it does fix the original issue?
I don't know why the original error was occurring, because IPB should be able to find the club that it gave us in the first place (!) but it must have something to do with the new club.

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


missing marker

Hi. I like the app but the marker is invisible so I cant easily tell where I am in my document. i am using a bluetooth keeyboard but I don"t think that's the case. Any ideas? thanks! -Tony

Update: the marker does appear when the Bluetooth keyboard is not connected. So is there a bug when it comes to using Bluetooth keyboards on the Android/phone version?

No Bluetooth keyboard and marker sometimes invisible. Closing/reopening file temporarily fixes.

No curser when I try to tap within previous text to edit.  Sets up a trial and error that is very frustrating.


Roll up WindowsTerminal's subprojects into packaging outputs

This may be a targeted fix that obviates the need for #2002 without going all the way to #1995.

Oh my god it works.

So with this in, can we close #2002? Because I'd love to not have to do that.


added env variable to disable tqdm progress for non-tty

to disable tqdm (e.g. on jenkings) run TQDM_ENABLED=False ./gradlew logicTest

Current coverage is 81.45% (diff: 100%)

Merging #4665 into master will decrease coverage by 0.05%

@@             master      #4665   diff @@
==========================================
  Files          1307       1307
  Lines         44956      44956
  Methods           0          0
  Messages          0          0
  Branches       7072       7072
==========================================
- Hits          36642      36617    -25
- Misses         5622       5645    +23
- Partials       2692       2694     +2

Powered by Codecov. Last update b494dbf...6d4d01f


Non-directive attribute event handler shows error during design time

Passing in a void method to a regular onclick attribute shows an error during design time,

It works in runtime.
Also using a directive attribute works,
<button @onclick="@Activate">Activate</button>
@rynowak @SteveSandersonMS, is this the expected behavior?

I think there's an interesting question about whether we want to remove the support to do raw event handlers without using EventCallback.
We didn't do any work to block this, and it was there in the past. @SteveSandersonMS thoughts? This would entail removing a bunch of overloads/extensions on RenderTreeBuilder.
I'm tempted to leave it because it doesn't seem harmful. @ajaybhargavb what's the difference between the generated code for designtime and runtime for this case? Is this failing at design time because of an explicit type check?

@rynowak Does raw event handler mean call JavaScript code directly? If yes, we need this. Look here https://github.com/aspnet/AspNetCore/issues/5545#issuecomment-469748054 "Design" section , example with conditionallyStopPropagation function and example with blockDigits function.

@Andrzej-W - what I meant in this context is whether you can use Action<UIMouseEventArgs> and other delegate types with the render tree builder directly. We currently have a bunch of different overloads of AddAttribute that made these things possible before we implemented EventCallback.
We're at the part of the product cycle where we're doing a lot of API cleanup.

@ajaybhargavb, let's make the non-directive attribute version of event handlers not to work.

I looked more deeply into this. The reason for this error in design time is because of,
__o =
#nullable restore
#line 1 "x:\dir\subdir\Test\TestComponent.cshtml"
               Activate

#line default
#line hidden

This is not specific to javascript event handler attributes like onclick. It happens for pretty much any attribute where we pass in a method group as the attribute value.
<button random="@Activate">Activate</button> will have the same error. This is the behavior we've always had. And now javascript event handler attributes also behave like normal attributes.
I think this is ok and we should leave it as is. @rynowak @SteveSandersonMS @mkArtakMSFT  thoughts?

Yes, I think this is fine.


.NOT_EDITED_HERE.yaml referenced in README.md doesn't exist in the repo

Problem description
In the README.md, there is a reference to a .NOT_EDITED_HERE.yaml file, but that file does not exist in the repo anywhere.
I did a grep -rni NOT_EDITED_HERE and only found a reference to it in the README.md.
Output:
grep -rni NOT_EDITED_HERE
README.md:59:[`.NOT_EDITED_HERE.yaml`](.NOT_EDITED_HERE.yaml) are maintained in other

Thanks for reporting; yes, I think we removed use of that file at some point, but didn't update the instructions; if I'm not mistaken, this will be fixed as part of https://github.com/docker/docker.github.io/pull/13909


Allow typing within pathlist widget

As #48 detailed, the ability to paste paths or otherwise edit paths within the header path could be useful.
This could be accomplished with a change of widget type of _pathlist.

Thanks for the vote for this feature and the PR. I'll go ahead and close this issue as a duplicate of https://github.com/crahan/ipyfilechooser/issues/48.


Update sbt to 1.6.1

Updates org.scala-sbt:sbt from 1.6.0 to 1.6.1.
GitHub Release Notes - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.scala-sbt", artifactId = "sbt" } ]

labels: library-update, early-semver-patch, semver-spec-patch, commit-count:1

Codecov Report

Merging #571 (bfd278d) into develop (c003e07) will decrease coverage by 0.06%.
The diff coverage is n/a.

@@             Coverage Diff             @@
##           develop     #571      +/-   ##
===========================================
- Coverage    60.42%   60.36%   -0.07%
===========================================
  Files           53       53
  Lines         1539     1539
  Branches        30       30
===========================================
- Hits           930      929       -1
- Misses         609      610       +1

Impacted Files
Coverage Δ

...-/com/twitter/bijection/CollectionInjections.scala
93.10% <0.00%> (-3.45%)
:arrow_down:

Continue to review full report at Codecov.

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


Move commander from SimonBaeumer/commander to commander-cli/commander

Fixes #134
Checklist

[x] Added unit / integration tests for windows, macOS and Linux?
[x] Added a changelog entry in CHANGELOG.md?
[x] Updated the documentation (README.md, docs)?
[x] Does your change work on Linux, Windows and macOS?
[x] codeclimate integration
[ ] dependencies
[x] travis integration
[ ] deployment

Release deployment needs to be fixed, currently it fails because the oauth token is not actual anymore.
Further SimonBaeumer/cmd should be replaced by commander-cli/cmd

Let me know when this is done. I'll look through the codebase and see if I can find anything.

Let me know when this is done. I'll look through the codebase and see if I can find anything.

The migration is finished. I would like to merge #126 before this. The build will break the master branch temporary but imho it shouldn't be a big problem because your current builds work.
After merging of #126 this PR can get merged and can move on with other PRs.

@dylanhitt finished, awaiting your review

I think you got everything.
The one thing I did notice though is that in the PR template the links to markup files do not work. I believes it's because github doesn't support relative linking in PRs??? I can't really find anything saying it is or isn't .
Thank you for doing the migration by the way. These things are never fun to do.

Good catch, thanks! Fixed the links and tried it - as you said, github does not support relative links in PRs.


How do production signing options differ by Windows version?

Your table in the question "How do production signing options differ by Windows version?" is confusing me.
Can you please confirm that a cross-signed driver is still valid for Windows 7, 8, and Server 2008 when it is signed with a nonexpired SHA-1 certificate (e.g. expires March 2023) and timestamped after July 1st 2021 and the same SHA-1 certificate chains to a cross-cert that is expired before July 1, 2021 (e.g. April 15, 2021).

What is written on the page seems to be very different from what Windows actually enforces. Multiple people have reported that expired cross-signing certificates are still working fine to load drivers on all versions of Windows. It seems like there aren't actually any checks on the expiration. Then maybe it will change with a future Windows update, who knows.

Yes, it's true, we still can cross-sign drivers for Win 7 and Win 10 (when Secure Boot is disabled). I assume that the statement on the page is correct:
"As long as driver packages are timestamped before the expiration date of the leaf signing certificate, they will continue working."
I'm quite sure that there are checks on the expiration, which means you cannot timestamp your driver when your certificate is expired. Or if you omit timestamping and increment the time on your PC about 10 years then you can see that driver installation is refused.
Well, I just want to be sure that Microsoft does not have security updates that prevents loading of cross-signed drivers that are signed after July 1st, 2021. And I also expect that Microsoft will not change this policy on Windows 7 and 8. But this policy can quickly change when there is any bad cross-signed driver.

I can load a driver with an expired cross certificate and a timestamp just fine on Windows 10 (with Secure Boot disabled) - without changing the time or doing anything else. I have also tried to remove the timestamp parameter - it still loads fine without any issues.
So it doesn't look like there are currently any checks on the expiration of cross certificates.

That's why I said driver installation is refused. Anything else are maybe flaws and we shoud not discuss it here ...

We're past the July 1st deadline, so I've tested again. Drivers are still loading just fine with expired cross certificates, including on Windows 11. Seems like the new policy has still not been implemented.

Thanks for the feedback.
Please refer to https://docs.microsoft.com/en-us/windows-hardware/drivers/install/deprecation-of-software-publisher-certificates-and-commercial-release-certificates#how-do-production-signing-options-differ-by-windows-version for the latest guidance on signing options for different versions of Windows.


Won't build on Android with 6.4.0

Report
Plugin Version
6.4.0
On what Platform are you having the issue?
Android
What did you do?
Upgrade the module from  6.3.20 to 6.4.0
What did you expect to happen?
To build
What happened instead?
It won't build
Please provide any other relevant information.
The build fails with this error:
Execution failed for task ':app:processDebugResources'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
   > Android resource linking failed
     /Users/dan/.gradle/caches/transforms-2/files-2.1/37c6fe9dbf1b79078fb5838794dd4b38/jetified-af-android-sdk-6.4.0/AndroidManifest.xml:16:5-20:15: AAPT: error: unexpected element <queries> found in <manifest>.

And indeed that file contains a <queries> tag

Thank you.

@ge-af I can confirm the solution work (well I updated RN and that came with gradle update )


File not found Error in SD 1.5 ( Automatic 1111 Colab)

This error always happening since this morning . Would anyone know how to fix it ?
FileNotFoundError                         Traceback (most recent call last)
 in
51   srv= getoutput('cat /content/srvr.txt')
52
---> 53   for line in fileinput.input('/usr/local/lib/python3.8/dist-packages/gradio/blocks.py', inplace=True):
54     if line.strip().startswith('self.server_name ='):
55         line = f'            self.server_name = "{srv[8:]}"\n'
1 frames
/usr/lib/python3.8/fileinput.py in _readline(self)
340                     pass
341                 # The next few lines may raise OSError
--> 342                 os.rename(self._filename, self._backupfilename)
343                 self._file = open(self._backupfilename, self._mode)
344                 try:
FileNotFoundError: [Errno 2] No such file or directory: '/usr/local/lib/python3.8/dist-packages/gradio/blocks.py' -> '/usr/local/lib/python3.8/dist-packages/gradio/blocks.py.bak'

The same error happens to me.

same here

i have this same problem too

in 2.0 too

same here with an earlier clone of this repo
so guessing it's to do with certain outer dependencies

Same here.
It seems that the dependencies were not installed.

In the last cell, add the following right below import fileinput:
!pip install -q gradio GitPython jsonmerge einops clean-fid resize-right torchdiffeq gfpgan !pip install -q git+https://github.com/openai/CLIP.git !pip install -q torchsde transformers facexlib realesrgan lark safetensors omegaconf lpips basicsr pytorch-lightning piexif fonts font-roboto open-clip-torch
That fixed it for me

I get this when I run it with the code @Klaushayan mentioned:
No module 'xformers'. Proceeding without it.
so it doesn't use xformers now if I add this code, and it throws the filenotfound error without it.

@luci9t
Add the following above all of these pip commands:
gpu = getoutput('nvidia-smi')
if ('T4' in gpu):
 %pip install -q https://github.com/TheLastBen/fast-stable-diffusion/raw/main/precompiled/T4/xformers-0.0.13.dev0-py3-none-any.whl
elif ('P100' in gpu):
%pip install -q https://github.com/TheLastBen/fast-stable-diffusion/raw/main/precompiled/P100/xformers-0.0.13.dev0-py3-none-any.whl
elif ('V100' in gpu):
 %pip install -q https://github.com/TheLastBen/fast-stable-diffusion/raw/main/precompiled/V100/xformers-0.0.13.dev0-py3-none-any.whl
elif ('A100' in gpu):
 %pip install -q https://github.com/TheLastBen/fast-stable-diffusion/raw/main/precompiled/A100/xformers-0.0.13.dev0-py3-none-any.whl
!pip install -q triton==2.0.0.dev20221120

same error here @TheLastBen

In the last cell, add the following right below import fileinput:
gpu = getoutput('nvidia-smi') if ('T4' in gpu):   %pip install -q https://github.com/TheLastBen/fast-stable-diffusion/raw/main/precompiled/T4/xformers-0.0.13.dev0-py3-none-any.whl elif ('P100' in gpu): %pip install -q https://github.com/TheLastBen/fast-stable-diffusion/raw/main/precompiled/P100/xformers-0.0.13.dev0-py3-none-any.whl elif ('V100' in gpu):  %pip install -q https://github.com/TheLastBen/fast-stable-diffusion/raw/main/precompiled/V100/xformers-0.0.13.dev0-py3-none-any.whl elif ('A100' in gpu):  %pip install -q https://github.com/TheLastBen/fast-stable-diffusion/raw/main/precompiled/A100/xformers-0.0.13.dev0-py3-none-any.whl !pip install -q triton==2.0.0.dev20221120
!pip install -q gradio GitPython jsonmerge einops clean-fid resize-right torchdiffeq gfpgan  !pip install -q git+https://github.com/openai/CLIP.git !pip install -q torchsde transformers facexlib realesrgan lark safetensors omegaconf lpips basicsr pytorch-lightning piexif fonts font-roboto open-clip-torch
That fixed it for me
edit: added xformers

All the code runs fine now, thanks, but when i click the generated link i just get a 404 error :-(

@Piritipany
Ben added the dependencies, this fix shouldn't be needed anymore. Try running the colab again on a clean runtime and it should be fine.


Mirroring feature

I just implemented a today widget in one of my apps. I needed to read a preference item in the today widget that was currently stored in my main app. Usually, this would mean having to migrate the key over to the App Groups user defaults suite. However, I'm lazy and instead just went with observing the key and then setting it in the App Groups user defaults suite when changed:
// Constants.swift

extension Defaults.Keys {
	static let timeZonesInMenu = Key<[ChosenTimeZone]>("timeZonesInMenu", default: [])
}

// SharedConstants.swift

struct Constants {
	static let appGroupId = "XXXX.com.sindresorhus.Dato.shared"
	static let sharedDefaults = UserDefaults(suiteName: appGroupId)!
}
extension Defaults.Keys {
	static let sharedTimeZones = Key<[ChosenTimeZone]>("sharedTimeZones", default: [], suite: Constants.sharedDefaults)
}

// OtherFile.swift

// Sync time zone changes to the shared item.
Defaults.observe(.timeZonesInMenu) { change in
	Defaults[.sharedTimeZones] = change.newValue
}
	.tieToLifetime(of: self)

And I was thinking this might be useful for others too.
I'm thinking:
// Key with same name
Defaults.mirror(.key, to: suite)

// Key with different name (where the key is strongly-typed and defined in a shared Constants.swift file or something)
Defaults.mirror(.key, to: suite, as: .sharedKey)

// Key with different name
Defaults.mirror(.key, to: suite, as: "sharedKey")

Would probably need a similar unmirror method too.
Note that this is not syncing. It's only one way.
Feedback welcome.

I wonder why it would be right to encourage such use. Setting up an app group is really easy, just a few clicks in Xcode


Null constraint violation on the fields: ()

Bug description
I have self-referenced relation and referenced in its parent. On creation of this self-relation, I tried to create the parent as well since it's allowed by the API. This results in an unexpected runtime error.
How to reproduce
generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URI_postgresql")
}

model Parent {
  id         String @id @default(cuid())
  resource   Resource @relation("Resource", fields: [resourceId], references: [id], onUpdate: NoAction)
  resourceId String @unique
}

model Resource {
  id          String @id @default(cuid())
  dependsOn   Resource? @relation("DependsOn", fields: [dependsOnId], references: [id], onUpdate: NoAction)
  dependsOnId String
  dependedOn  Resource[] @relation("DependsOn")
  parent      Parent? @relation("Resource")
}

    await prisma.resource.create({
      data: {
        parent: {
          create: {},
        },
      },
    })

Errors with the following on SQL databases
      11  */
     12 testMatrix.setupTestSuite((suiteConfig, suiteMeta) => {
     13   beforeAll(async () => {
   → 14     await prisma.resource.create(
   Null constraint violation on the fields: ()

And errors with the following on MongoDB
      11  */
     12 testMatrix.setupTestSuite((suiteConfig, suiteMeta) => {
     13   beforeAll(async () => {
   → 14     await prisma.resource.create(
   Error converting field "dependsOnId" of expected non-nullable type "String", found incompatible value of "null".

Expected behavior
It created the Parent and connected it to Resource.
Prisma information

// Add your schema.prisma

// Add your code using Prisma Client

Environment & setup

OS: Ubuntu 20.04
Database: Tested on all of them
Node.js version: 16

Prisma Version
4.3.0 (dev)

Duplicate of https://github.com/prisma/prisma/issues/13885

TODO: update the tests here once it's been fixed https://github.com/prisma/prisma/pull/15215


Dashboards having single quote ('), slash (/) or colon (:) in the name not getting migrated

Dashboards having single quote ('), slash (/) or colon (:) in the name not getting migrated
Description
If a dashboard has a single quote in the name, the migrate_dashboards.py fails with "INVALID_INPUT" and "..not a valid NRQL query" error. If a slash (/) or colon (:) is in the name, the Dashboard is simply not found on the source account (and therefore not migrated) since the fetch entities script replaces slash (/) or colon (:) with the ~ character.
Steps to Reproduce
Test by using the migrate_dashboards.py script to migrate a Dashboard having single quote in the name. i.e. "Aaron's Test"
Expected Behavior
Dashboards having single quote in the name, slash (/) or colon (:) in the name should be able to get migrated.
Relevant Logs / Console output
2022-10-13 10:02:27,850 - migrate_dashboards.py - INFO - Dashboard migration started.
2022-10-13 10:02:27,856 - entityclient.py - INFO - Searching matching entity for type:DASHBOARD, name:Aaron's Test, acct:*****
2022-10-13 10:02:28,405 - entityclient.py - ERROR - {'entityFound': False, 'status': 200, 'error': [{'extensions': {'errorClass': 'INVALID_INPUT'}, 'locations': [{'column': 41, 'line': 3}], 'message': "Provided filter: [name = 'Aaron's Test' AND type = 'DASHBOARD' AND tags.accountId = '1006970'] is not a valid NRQL query", 'path': ['actor', 'entitySearch']}]}

Thanks for opening the bug @OscarLopezEns I am looking into this.