chore(master): Release 0.46.6

:robot: I have created a release beep boop
aztec-package: 0.46.6
0.46.6 (2024-07-15)
Features

Modular CLI + aztec test (#7426) (cca2a9b)

barretenberg.js: 0.46.6
0.46.6 (2024-07-15)
Features

Modular CLI + aztec test (#7426) (cca2a9b)

Miscellaneous

ci: Recover from earthly bug with --no-cache, build images from registry (#7462) (09299e3)

Documentation

Documenting fields (#7468) (05a11a1)

aztec-packages: 0.46.6
0.46.6 (2024-07-15)
Features

Modular CLI + aztec test (#7426) (cca2a9b)
Pass through unencrypted logs to base rollup (#7457) (0381502)

Bug Fixes

Add trailing extra arguments for backend in gates_flamegraph (#7472) (66d257b)
Aws secrets in docs CI (#7470) (3b2acc7)

Miscellaneous

ci: Recover from earthly bug with --no-cache, build images from registry (#7462) (09299e3)
Minor link fix (#7469) (fcbc399)

Documentation

Documenting fields (#7468) (05a11a1)

barretenberg: 0.46.6
0.46.6 (2024-07-15)
Features

Modular CLI + aztec test (#7426) (cca2a9b)

Miscellaneous

ci: Recover from earthly bug with --no-cache, build images from registry (#7462) (09299e3)

This PR was generated with Release Please. See documentation.

Benchmark results
Metrics with a significant change:

proof_construction_time_sha256_100_ms (16): 6,524 (+20%)
protocol_circuit_simulation_time_in_ms (private-kernel-tail-to-public): 4,437 (-34%)

Detailed results
All benchmarks are run on txs on the Benchmarking contract on the repository. Each tx consists of a batch call  to create_note and increment_balance, which guarantees that each tx has a private call, a nested private call, a public call, and a nested public call, as well as an emitted private note, an unencrypted log, and public storage read and write.
This benchmark source data is available in JSON format on S3 here.
Proof generation
Each column represents the number of threads used in proof generation.

Metric
1 threads
4 threads
16 threads
32 threads
64 threads

proof_construction_time_sha256_ms
5,731
1,546
703 (-1%)
766 (+4%)
764 (-1%)

proof_construction_time_sha256_30_ms
11,737 (-1%)
3,134 (-1%)
1,402 (-1%)
1,435
1,470 (+1%)

proof_construction_time_sha256_100_ms
43,877
11,804 (-1%)
:warning: 6,524 (+20%)
5,396
5,356

proof_construction_time_poseidon_hash_ms
78.0
34.0
34.0
58.0
89.0 (+1%)

proof_construction_time_poseidon_hash_30_ms
1,519
417
200
222
262 (-2%)

proof_construction_time_poseidon_hash_100_ms
5,636
1,512
676 (-1%)
738 (+1%)
740 (-1%)

L2 block published to L1
Each column represents the number of txs on an L2 block published to L1.

Metric
4 txs
8 txs
16 txs

l1_rollup_calldata_size_in_bytes
708
708
708

l1_rollup_calldata_gas
6,600
6,592
6,576

l1_rollup_execution_gas
583,062
583,205
583,340

l2_block_processing_time_in_ms
758 (+1%)
1,406 (-1%)
2,696

l2_block_building_time_in_ms
13,091
25,924
50,851 (+1%)

l2_block_rollup_simulation_time_in_ms
13,091
25,923
50,851 (+1%)

l2_block_public_tx_process_time_in_ms
10,966
23,574
48,495 (+1%)

L2 chain processing
Each column represents the number of blocks on the L2 chain where each block has 8 txs.

Metric
3 blocks
5 blocks

node_history_sync_time_in_ms
6,968 (-3%)
9,823 (-1%)

node_database_size_in_bytes
12,447,824
16,420,944

pxe_database_size_in_bytes
16,254
26,813

Circuits stats
Stats on running time and I/O sizes collected for every kernel circuit run across all benchmarks.

Function
time_ms
bytecode_size_in_bytes

GasToken:_increase_public_balance
100 (+1%)
13,790

GasToken:set_portal
11.5 (-2%)
3,339

Token:constructor
126 (-3%)
23,692

FPC:constructor
92.6 (-1%)
13,592

GasToken:mint_public
83.1
10,158

Token:mint_public
55.0 (-2%)
19,034

Token:assert_minter_and_mint
68.6
12,925

AuthRegistry:set_authorized
45.0 (+1%)
7,812

FPC:prepare_fee
103 (-6%)
15,062

Token:transfer_public
50.9 (+19%)
31,218

FPC:pay_refund
129 (-6%)
25,260

Benchmarking:increment_balance
1,342
15,267

Token:_increase_public_balance
15.4 (-1%)
15,006

FPC:pay_refund_with_shielded_rebate
179 (-2%)
26,347

Public DB Access
Time to access various public DBs.

Function
time_ms

get-nullifier-index
0.159 (+3%)

Tree insertion stats
The duration to insert a fixed batch of leaves into each tree type.

Metric
1 leaves
16 leaves
64 leaves
128 leaves
256 leaves
512 leaves
1024 leaves

batch_insert_into_append_only_tree_16_depth_ms
10.3 (-1%)
16.7
N/A
N/A
N/A
N/A
N/A

batch_insert_into_append_only_tree_16_depth_hash_count
16.8
31.7
N/A
N/A
N/A
N/A
N/A

batch_insert_into_append_only_tree_16_depth_hash_ms
0.596 (-1%)
0.512
N/A
N/A
N/A
N/A
N/A

batch_insert_into_append_only_tree_32_depth_ms
N/A
N/A
48.0
75.6
131 (+1%)
244 (-1%)
469

batch_insert_into_append_only_tree_32_depth_hash_count
N/A
N/A
95.9
159
287
543
1,055

batch_insert_into_append_only_tree_32_depth_hash_ms
N/A
N/A
0.490
0.465
0.451
0.442 (-1%)
0.439

batch_insert_into_indexed_tree_20_depth_ms
N/A
N/A
59.3
111
182
351 (-1%)
693

batch_insert_into_indexed_tree_20_depth_hash_count
N/A
N/A
109
207
355
691
1,363

batch_insert_into_indexed_tree_20_depth_hash_ms
N/A
N/A
0.501
0.497
0.480
0.475
0.475

batch_insert_into_indexed_tree_40_depth_ms
N/A
N/A
72.4
N/A
N/A
N/A
N/A

batch_insert_into_indexed_tree_40_depth_hash_count
N/A
N/A
133
N/A
N/A
N/A
N/A

batch_insert_into_indexed_tree_40_depth_hash_ms
N/A
N/A
0.516
N/A
N/A
N/A
N/A

Miscellaneous
Transaction sizes based on how many contract classes are registered in the tx.

Metric
0 registered classes
1 registered classes

tx_size_in_bytes
76,847
667,838

Transaction size based on fee payment method
| Metric |  |
| - |  |

:robot: Release is at https://github.com/AztecProtocol/aztec-packages/releases/tag/aztec-packages-v0.46.6 :sunflower:

:robot: Release is at https://github.com/AztecProtocol/aztec-packages/releases/tag/aztec-package-v0.46.6 :sunflower:

:robot: Release is at https://github.com/AztecProtocol/aztec-packages/releases/tag/barretenberg-v0.46.6 :sunflower:

:robot: Release is at https://github.com/AztecProtocol/aztec-packages/releases/tag/barretenberg.js-v0.46.6 :sunflower:


GitHub Action

Try and make a GitHub Action for Lintje.
I can make this work with the payload.before...payload.after combination of SHAs from the GitHub push action. The problem is that the "checkout" action by default only checks out the first commit. This makes it not possible to query Git itself unless you specify fetch-depth: X where X is arbitrary. I can't find a way to select a number of commits based on the event payload.
So I should probably fetch the commit message through the GitHub API in the action. That means lintje needs to support reading from STDIN to read the commits from there.
// Pseudo code: this should probably be done in the GitHub action nodejs script
gh commits fetch ... > commits
cat commits | lintje

This in a GitHub action does not work unfortunately:
- uses: actions/checkout@v2
  with:
    fetch-depth: ${{ github.context.payload.commits.length + 1 }} # Fetch enough commits to test on

To do

Check if you can add an additional rule in the action that every commit on the PR should have a successful build? If not, fail lintje.

Lintje is now available as a GitHub Action on the GitHub marketplace.
The Lintje GitHub Action will be maintained in a separate repository.


Fix wrong return type of Result.map in documentation

The documentation previously stated that Result.map(f) returns None in case the initial result was Result.Error. This probably was erroneously copy&pasted from the documentation for Option.

Nice catch, thank you!


[BUG][Storage] SetMetadataAsync fails when blob name contains a space character

Describe the bug
UploadAsync works properly when there's a space character in the blob name. However, SetMetadataAsync throws an exception with a BlobNotFound error code.
Exception
Azure.Storage.StorageRequestFailedException
  HResult=0x80131500
  Message=The specified blob does not exist.
RequestId:fab4e043-601e-0034-729e-6d9909000000
Time:2019-09-17T21:22:29.7182221Z
Status: 404 (The specified blob does not exist.)

ErrorCode: BlobNotFound

Stack Trace
   at Azure.Storage.Blobs.BlobRestClient.Blob.SetMetadataAsync_CreateResponse(Response response)
   at Azure.Storage.Blobs.BlobRestClient.Blob.<SetMetadataAsync>d__24.MoveNext()
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Azure.Storage.Blobs.Specialized.BlobBaseClient.<SetMetadataInternal>d__60.MoveNext()
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Azure.Storage.Blobs.Specialized.BlobBaseClient.<SetMetadataAsync>d__59.MoveNext()
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at Azure.Messaging.EventHubs.CheckpointStore.Blob.Samples.Sample01_HelloWorld.<RunAsync>d__8.MoveNext() in C:\Users\camaiaor\Documents\Repos\azure-sdk-for-net\sdk\eventhub\Azure.Messaging.EventHubs.CheckpointStore.Blob\samples\Sample01_HelloWorld.cs:line 60
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Azure.Messaging.EventHubs.CheckpointStore.Blob.Samples.Program.<Main>d__2.MoveNext() in C:\Users\camaiaor\Documents\Repos\azure-sdk-for-net\sdk\eventhub\Azure.Messaging.EventHubs.CheckpointStore.Blob\samples\Program.cs:line 39

Code Snippet
The following code snippet is enough to make the exception happen:
var blob = new BlobClient(StorageAccountConnectionString, ContainerName, "blank space");
var stream = new MemoryStream(Encoding.UTF8.GetBytes("body"));

await blob.UploadAsync(stream);

await blob.SetMetadataAsync(new Dictionary<string, string>());

UploadAsync doesn't throw and the blob with name blank space is uploaded to Azure with no issues. However, SetMetadataAsync fails.
The code works if "blank space" is changed to "blank_space".

This issue will happen when you have a space in the blob name but also send a request that adds a query to the URI.
For example if you're creating a blob, it will convert a space into a '%20' which is expected.
http://storageaccount.blob.core.windows.net/test-container-name/blob%20name
If your method requires an added query to it, say for example creating a lease on a blob, it seems that it will re-encode the uri. Same for SetMetadata method and CreateSubDirectory as well. So any method that requires adding a query to the Uri is affected
'http://storageaccount.blob.core.windows.net/test-container-name/blob%2520name?comp=lease'
'http://storageaccount.file.core.windows.net/test-share-lname/test-directory-name/sub%2520dir%2520name?restype=directory'
'http://storageaccount.blob.core.windows.net/test-container-name/blob%2520name?comp=metadata'
Here's the method that appends the query to the uri (AppendQuery from RequestUriBuilder class in Azure.Core.Http.Pipeline). This is called by methods in the BlobRestClient.cs

Here's the SetMedata Test ran to reproduce this issue
`        public async Task SetMetadataAsync_Space()
{
using (GetNewContainer(out BlobContainerClient container))
{
// Arrange
BlobBaseClient blob = await GetNewBlobClient(container, "blob name");
IDictionary<string, string> metadata = BuildMetadata();
            // Act
            try
            {
                await blob.SetMetadataAsync(metadata);
            }
            catch
            {
                Console.WriteLine("error");
            }
            // Assert
            Response<BlobProperties> response = await blob.GetPropertiesAsync();
            AssertMetadataEquality(metadata, response.Value.Metadata);
        }
    }`

@tg-msft Could you help us take a look at this, because this seems to be in the Core libraries and we don't know much about what's going on here and why Uris are getting encoded twice.
#7720 is a duplicate of this item as well.

I think #8090 will allow us to fix this once it's merged.


Update Blog “2021-02-18-time-to-add-your-own-content”

Automatically generated by Netlify CMS

👷 Deploy Preview for stalwart-malabi-2392be processing.

Name
Link

🔨 Latest commit
3ed31c456d2afb585307419fa71d6442e31bd950

🔍 Latest deploy log
https://app.netlify.com/sites/stalwart-malabi-2392be/deploys/66335da83b9b5f0008764365


InfluxDB sends points to subscriber out of order

Bug report
System info: [Include InfluxDB version, operating system name, and other relevant details]
Version: 7948bef
OS: Linux & OS-X
Steps to reproduce:

Create a subscription
Write data at a high rate on a single connection

Expected behavior: [What you expected to happen]
Subscriber should receive all points on a single connection in the same order they were sent to InfluxDB
Actual behavior: [What actually happened]
Subscriber receives points on multiple connections in random order.
 This leads to race conditions in the processing of those requests since the points are no longer sequential.

Is the example script you have given meant to be a pipelined HTTP request? It looks like it is writing one point per batch, but writing them using the same TCP connection. Is that correct?

That is correct.
This is the minimum reproducible example. Though in my specific case it's not one point, but thousands of points. My client buffers up to X kb of data, or up to the completion 1 work unit (which is a bunch of points all generated at the same time), and then dumps the buffer to InfluxDB. So when I generate enough points to fill the buffer and send a second batch, this second batch gets sent to the subscriber before the first one.

Are you using TCP or UDP for the subscriber to send points?

TCP. Exactly the same as this test case. Multiple requests on a single connection.

TCP.
(deleted previous comment, missed the "subscriber" portion of the question)

I'm going to make a guess. I haven't tried it out, but I can see a way where this would happen. InfluxDB seems to keep the writes in order if you are using pipelining to write them, but then it might use multiple connections if the previous http connection hasn't been finished yet for some reason. So it would be pretty easy for InfluxDB to open multiple connections for a single connection and then write them to Kapacitor who would have no idea what the ordering is supposed to be.
The Go client is supposed to take over this, but the default HTTP client in Go only appears to use a persistent connection if it is available.
We might need to modify how the InfluxDB client writes these requests to keep requests in the same batch with each other. I'm not yet sure how we would do that though.

@phemmer Try setting:
[subscriber]
write-concurrency = 1

If you have a high write rate, it's possible that you can have points dropped because the subscription write path to kapacitor is not able to keep up.

@phemmer was the setting sufficient? In thinking about this more internally, we have some preference for leaving the behavior as is. In general, asserting that the delivery order from influxdb -> kapacitor should be identical to the delivery order from client -> database  create a tighter coupling than we want at the ingest tier. Clustered InfluxDB would not be able to meet the same ordering promise (from the client's perspective) in many cases regardless.
We have created a docs issue to explain the current behavior more clearly:
https://github.com/influxdata/docs.influxdata.com/issues/1319

Setting write-concurrency = 1 is not something I want to do as I do send multiple independent streams of data from different sources to influxdb that do not need to be multiplexed into a single subscriber connection (potentially causing a bottleneck).
I don't use influxdb clustering, so I'm not sure how it works, but even assuming there's some sort of layer-7 load balancing going on before the InfluxDB nodes, it should be simple enough to create persistence so that the same TCP connection always goes to the same InfluxDB node.

@phemmer what if we made it possible for a user-provided id to run sequentially?
I think it would be possible to ensure that requests made to the same node (which it would in pipelining) would run sequentially, but the problem is that many http client libraries automatically recycle and pipeline connections if the server does not specify Connection: close. So you could have two separate requests that aren't intentionally being pipelined shared with the entire application. I do not think we want to make those types of subscriptions move more slowly because we accidentally believe them to be related to each other.
But, if the user provided a key, we could provide a named lock and ensure that the write concurrency was one for that specific lock. Maybe we could automatically generate one on request and the user could provide the id for each request after the initial request.
This is just a random idea and I am not sure how feasible it would be with clustering. For example, requests made to different nodes that use the lock would not be able to be locked themselves, but maybe just writing that as a caveat the user has to understand is enough?

I do not think we want to make those types of subscriptions move more slowly because we accidentally believe them to be related to each other.

That's a good point.

But, if the user provided a key, we could provide a named lock and ensure that the write concurrency was one for that specific lock.

That seems feasible.
Something that might be simpler: What about instead of a lock, a channel index? I don't know how the InfluxDB code works in regards to subscribers, but I imagine each subscriber gets its own channel which the points are sent across. What about when an index key is provided that a new subscriber is created with an automatic write-concurrency = 1, and then all points with the given index key are sent to that subscriber's chan.
However this does seem like it's getting fairly deep into edge case territory.

Some background on this.  @phemmer you actually logged an issue about data loss under high ingest rate around the time of 1.0: https://github.com/influxdata/influxdb/issues/7330.  At that time, we processed writes sequentially to each subscriber.  The issue was that if the injest rate was too high, we'd have to drop points if the subscriber was not able to keep up to prevent a big backlog in the server and the channel filling up.  Essentially, there are N writers into a channel, but only 1 reader from that channel.  The "fix" for that issue at the time was to add concurrent readers and the write-concurrency setting: https://github.com/influxdata/influxdb/pull/7407.  This does introduce the possibility for points to be sent out of order.
On the reading side, we don't currently coalesce writes to subscribers.  If you have lots of small batches, we still end up sending those as small batches whereas we could group them up into larger batches and send them with fewer requests.  This would improve throughput to some extent with a single reader.
IIRC, this push model was originally designed with UDP as the only transport.  We added HTTP in a little after (#6655).  Dropping points was the intended behavior since UDP isn't reliable.  Given that, there are several parts of the current code path that we allowed for dropping points.   Honestly, I think we're trying to make subscriptions do things that they were not originally designed and if we want in-order, at-least-once delivery semantics that can keep up with DBs injest rate, we need to consider a different design that can support that.


License?

I think we should maybe add a license to this gamma-astro-data-formats to make it clear what kind of use is and isn't allowed.
This might be important especially if CTA wants to continue here or copy from here as the starting point for their internal data format specification effort. My understanding is that currently, it's legally not clear what use is allowed, CTA would have to contact the contributors here and ask permission before e.g. copying the spec as starting point for CTA-internal documentation.
Looking around a bit, e.g. at https://choosealicense.com/non-software/ or https://creativecommons.org/choose/ or e.g. https://github.com/elegant-scipy/elegant-scipy and https://github.com/jakevdp/PythonDataScienceHandbook as mixed code / text projects, one option could be that we put this:

Code is BSD-3. (currently we just have a few Python scripts to generate example files using Numpy, Astropy and Gammapy, all BSD-3 projects)
Text is CC BY 4.0.

These are very liberal licenses that are very permissive in re-use, even commercial.
@woodmd and @TarekHC  as biggest contributors here - OK?
@kosack  or anyone from CTAO - does this work for you?

Sounds good to me.

I agree. We need a license, and the more open the better.
If we are sure that using BSD-3/CC BY 4.0 will not conflict with CTA (or ctapipe), then it's a good choice.


4/27 Update causing a break?

Hello, today (4/27/2021) FFXIV had extended maintenance and a small update for hotfixes. I launched Alexander having it worked the previous evening and instantly noticed it wasn't working correctly. I did a quick reinstall of the application to see if it was that and it still stopped working. Checking in with one of my friends who also uses it, they reported 0 issues after the update. I am wondering if it's common for such a small hotfix to break the program, if it's on my side, or it's a more general issue? Nothing had to be changed for them including OPCODES so I'm opening this to report this issue incase anyone else has had this problem. Also looking for answers so I can try to fix this, thanks again.

Well, they did change opcodes. If ffxiv_dx11.exe gets changed, you may assume that ACT FFXIV plugin and this to break. It's updated now! https://github.com/Soreepeong/XivAlexander/releases


Develop the interface between Unity DAPA and SDAP deployed in MCP/EKS

DAPA endpoint like: https://1gp9st60gd.execute-api.us-west-2.amazonaws.com/dev/am-uds-dapa/collections/JPL_MUR25-JPL-L4-GLOB-v04.2/processes/time-series:area?bbox=-77.0,35.0,-70.0,42.0&datetime=2022-01-01T00:00:00Z/2022-01-31T00:00:00Z configured in API Gateway to point to SDAP deployment.


chore: update edge functions template.

Deno change the way to import global types.
source here: https://github.com/denoland/vscode_deno/issues/1115

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

0 of 0   changed or added relevant lines in 0 files are covered.
7 unchanged lines in 2 files lost coverage.
Overall coverage decreased (-0.03%) to 60.063%

Files with Coverage Reduction
New Missed Lines
%

internal/storage/rm/rm.go
2
89.53%

internal/gen/keys/keys.go
5
11.76%

Totals

Change from base Build<PHONE_NUMBER>:
-0.03%

Covered Lines:
6870

Relevant Lines:
11438

💛  - Coveralls


Dixon-Price function: flatten input X before doing other computations

https://github.com/bessagroup/F3DASM/blob/56d5f10f46efe65c9f519bbfafedcb568722b63b/src/f3dasm/functions/pybenchfunction.py#L939

add
X = X.flatten()
before line 939

Can you provide me with an explanation why this should be implemented? The evaluate(self, X) function always expects an 1D-array in the newest pr/1.0 commits:
https://github.com/bessagroup/F3DASM/blob/c0068ca0f1f5a796d82a94325e2ec42b999b845e/src/f3dasm/functions/function.py#L65

I stand corrected; it's not needed!
I accidentally added another axis to my input data when I was trying to evaluate a function at it.
Closing this issue!


Treat namespace resolution as seperate from regular variable lookup

Right now this code fails:
import json
let json = json::make_object()
let str = json::to_string(json)

But really json:: should be a separate lookup from json because it's a namespace.

Closing as this is really just #21


Auto fix errors after scrub

Would it make sense to auto run sudo snapraid -e fix after a scrub detects an error? It could be implemented easily, I just wondered if there's reasoning against it being automatic? I seem to get an error almost every other sync, so would be nice if it automatically corrected them.

I am strongly opposed to doing any kind of automatic fix. If a scrub detects an error, something went wrong and needs investigating.
How do you get an error on almost every sync?

This is the typical error I get
25782', diff bits 65/128
2020-03-05 06:40:24,240 [OUTERR] Data error in file
'/media/mfs-rainbow-lorikeet/Projects/Video/In Work/Archive/Ski Trip MMXV
Footage/Hero 3+/Day 5/GOPR1105.MP4' at position '4275', diff bits 62/128
2020-03-05 09:33:14,660 [OUTERR] DANGER! Unexpected data errors! The
failing blocks are now marked as bad!
2020-03-05 09:33:14,665 [OUTERR] Use 'snapraid status' to list the bad
blocks.
2020-03-05 09:33:14,666 [OUTERR] Use 'snapraid -e fix' to recover.

On Wed, 4 Mar 2020, 8:05 pm Christian Fersch<EMAIL_ADDRESS>wrote:

I am strongly opposed to doing any kind of automatic fix. If a scrub
detects an error, something went wrong and needs investigating.
How do you get an error on almost every sync?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/Chronial/snapraid-runner/issues/28?email_source=notifications&email_token=AD4ZG4CAGMF377XO44ONRQ3RF2X6JA5CNFSM4K73YNVKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOENZ73DA#issuecomment-594804108,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AD4ZG4C75OWI3OP4MUJWYRLRF2X6JANCNFSM4K73YNVA
.


fix #8750 - Follow operation should prefer the focused way

After studying the ID software architecture for a bit i came up with this solution for #8750.
I performed various test on my local machine and it seems to cover the cases described in the issue.
Unit tests were started, and no errors were found.
Hope it can be helpful, i will be available for any further updates.

Ping https://github.com/openstreetmap/iD/issues/8750

hey @tyrasd thank you very much for the code review.
I executed some test and, correct me if i am wrong, it seems to me that i could reproduce the behavior you reported even without my code changes.
What i noticed is that now, not stopping when a node that has multiple parent is encountered, lets that behavior to show up more often.
That said, i just pushed a new commit that ends the following action if a node that has already been followed is encountered again, this should avoid the user to end up following infinite circles.
I hope i correctly answered your question, waiting for your feedback.
Thanks!

Hey guys, any news on this ?
If there's there something i can do to improve/speed up the review let me know !
Thanks

Sorry, I haven't had time to give it a deeper look yet. I'll try to come around it next week. :)

Hi, any updates regarding this PR ?
Thank you

I objected on implementing this in #8750, since it would hamper usability in a significant number of use cases.


Fix narrow diff view on navigation

This fixes #176.
The only "bad" thing about this solution is that it doesn't preserver the collapsed state on navigating. I don't think there's a way around it though. I tried switching the class to an attr and the issue persisted, so it's something about the DOM being different than expected.

I looked at this a bit more, and it looks like GitHub is adding the class split-diff to the body on navigation (widens the page) whenever this test passes:
$(".file-diff-split").is(":visible")

Our code is hiding a parent of that element, so the class doesn't get applied. As a quick solution, we could change the selector in content.css to target .refined-github-minimized .data tbody instead of .refined-github-minimized .data, to allow the GitHub visibility test to pass.

@DrewML much simpler and preserves state. 👍
I force pushed an update using the CSS method.

Sweet! Thanks for doing that. LGTM :shipit:


Simplify hoard.zsh

print -z is all you really need to output it on the prompt. It's zsh specific, but then again it's a zsh script.

Note sure if you've tested it, but this breaks it.
Attaching a short screen recording.
I open hoard through <Ctrl>-h , try to navigate, but the UI doesnt update. Pressing enter to select the command, does not print it into the terminal. Only after the next interactiong with the terminal, it gets printed into the terminal
https://github.com/user-attachments/assets/2edee11e-c004-4454-8f7c-614af736f6f6

However, I'd be stoked if we could make this part easier!

@Hyde46 Hmm I wonder if it's related to specific ZSH opts/settings, will have to take another look.


SaltRemover.StripMolWithDeleted() returning wrong deleted info

Reported by Mariana Assmann:
smiles = 'CC(=O)O.[Na]'
mol = Chem.MolFromSmiles(smiles)
remover = SaltRemover()
res, deleted = remover.StripMolWithDeleted(mol, dontRemoveEverything=True)
print(Chem.MolToSmiles(deleted[0]))
>>> [LiH]

Here's the mailing list thread:
<EMAIL_ADDRESS>

Check the mailing list thread. This isn't actually a bug in the salt remover, it's due to the fact that query atoms constructed from SMARTS atom lists have their atomic number set. This bug, #1988, has been fixed.


Update helpers.php

Looks like php8 is not liking numeric strings as we like them.
Fixes #1229

This needs tests for sure

Don’t we already have some for simbrief xml data ?
On 6 Jun 2021 Sun at 20:10 Nabeel S. @.***> wrote:

This needs tests for sure
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/nabeelio/phpvms/pull/1230#issuecomment-855430616, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/ARXKVMJ6J6V44BTXHEM6APTTROTWTANCNFSM46GC47FQ
.

--
B. Fatih KOZ
Sent from mobile device / Mobil cihaz ile gonderildi.

Nothing that is testing that exact method

Sure, we need to read $simbrief->xml->times->est_time_enroute from what you have as xml for testing and then check the result.
Test data has : 2077 seconds as EET, so it should give a result 0034 as hhmm.
Nothing complicated, if you wish I can try adding a test method for this.


stf_lib CTest regression

This pull request introduces a regression target for unit testing STF_LIB using CTest. The regression tests can be executed with the following commands:
mkdir -p release/
cd release/
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j32 regress
cd ..

Currently, these tests serve as a stub and do not cover the STF_LIB extensively (only one basic STFWriter test was added).

This is great! And appreciated. One thing this doesn't really test is making sure the file written contains the expected information written. Suggest adding an stf_reader after the close and making sure the file read matches what was written.

Written file contents are tested by diff comparison to golden file that is included in the test directory.

@bdutro, @klingaard, main purpose for this PR is to add CTest environment to the stf_lib, proper tests that would cover components of the stf_lib can be added in the future.

This all looks good. Could you go ahead and add a make regress call to https://github.com/sparcians/stf_lib/blob/master/.github/workflows/ubuntu-build.yml so it runs for PRs?


SWift 3

many errors on converting my launguage to swift 3
kindly let me do the changes and let us know
/SwiftData.swift:1270:21: 'SQLiteDB' is inaccessible due to 'private' protection level
error description on funcition
extension SwiftData.SQLiteDB {
func bind(objects: [AnyObject], toSQL sql: String) -> (string: String, error: Int?) {

I have to apologize for my absence with this repo. 😞 I was unable to work on this for a large part of 2015, and since my return, I haven't been developing in Swift.
Obviously, there are some real problems with the library as it is - a complete re-working is necessary. If there is the interest, I'm looking for one or more people who can update and maintain this codebase, that can be added as collaborators . If anyone would like to contact me privately, you can send me an email directly.
Thanks

Just upgraded to Xcode 8
It works fine when using the "Use Legacy Swift Language Version" build setting.
When I have some spare time, I will try it in Swift 3 mode.

we have converted as much as possible and it works it might be a issue of the syntax changes of swift3

After running the Swift 3.0 migration tool the following errors occurred: http://stackoverflow.com/questions/40380068/swiftdata-sqlite-wrapper-broken-with-swift-3-0#comment68013680_40380068
@Ullas9 do you already have the fixed code? I would very much appreciate it.

sure soon i will
On Wednesday, 2 November 2016 8:02 PM, MajestikM<EMAIL_ADDRESS>wrote:

After running the Swift 3.0 migration tool the following errors occurred: http://stackoverflow.com/questions/40380068/swiftdata-sqlite-wrapper-broken-with-swift-3-0#comment68013680_40380068@Ullas9 do you already have the fixed code? I would very much appreciate it.—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

Has anyone made any updates? We are using SwiftData and can't update to Swift 3 until SwiftData is  updated. I would greatly appreciate if someone can point me to a fork with a Swift 3 version.

i do have it but it will be great if we discuss before forking it my name is ullas<PHONE_NUMBER>89
On Sunday, 8 January 2017 7:02 AM, amdroid007<EMAIL_ADDRESS>wrote:

Has anyone made any updates? We are using SwiftData and can't update to Swift 3 until SwiftData is updated. I would greatly appreciate if someone can point me to a fork with a Swift 3 version.—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

In future can we expect Swift 3.0 migration of SwiftData ?

yes

@Ullas9 any updates to the 3.0 migration on SwiftData? Swift 3.1 just came out, and I am sure knowing apple, they are going to phase out Swift 2 soon - besides most other frameworks are now in 3.0, so I would really like to migrate to Swift 3 for an app and this one is holding me back. I tried doing the migration myself unfortunately I am more of an Android developer myself so some of the errors are beyond my understanding of Swift's quirks.
Please do a 3.0 fork if possible - or post a diff if possible?
J

amdroid007 as your name says i can understand u r the androids, i have a lib of 3.0 would need to get permission and will fork

I ended up getting SwiftData working with Swift 3.0 today. I have not really put it through its paces yet, but it has worked for me so far.
https://pastebin.com/AG0HuTNa
For the most part, Xcode can figure out the conversion process. But the getColumnValue() function needed some manual intervention.

@desrochers Thanks. Your code helps me a lot. :)


Version 20.1.0 of azure-mgmt-resource breaks PolicyClient

azure-mgmt-resource:
20.1.0:
Linux:
3.9:

Describe the bug
When executing the PolicyClient Python example from the MS Website, it works with azure-mgmt-resource 20.0.0, but returns an error with version 20.1.0:
AttributeError: 'NoneType' object has no attribute 'format'
To Reproduce
Steps to reproduce the behavior:

Execute the example provided at: https://docs.microsoft.com/en-us/azure/governance/policy/assign-policy-python
It works with version 20.0.0
It fails with version 20.1.0: AttributeError: 'NoneType' object has no attribute 'format'

Expected behavior
The new version is not expected to break the current behavior.
The release history doesn't show that there were changes regarding this matter: https://pypi.org/project/azure-mgmt-resource/20.1.0/

Thanks for the feedback, we’ll investigate asap.

Hi @josvo , I can't reproduce the error. Could you follow the doc to provide more detailed log?(please conceal  sensitive info)

Hi @msyyc
This is strange, I cannot reproduce this behavior anymore. I tried with different Python versions and also different library versions, they all seem to work fine now.
I'm going to close this issue. In case I run into the problem again, I will reopen this bug report and provide the debug information.
Thanks for your efforts.

Hi @msyyc
Was able to reproduce it now. This is what I get:
cd /home/josef/vscode/azure-mgmt-resource ; /usr/bin/env /home/josef/vscode/azure-mgmt-resource/.venv/bin/python /home/josef/.vscode/extensions/ms-python.python-2022.4.1/pythonFiles/lib/python/debugpy/launcher 33557 -- /home/josef/vscode/azure-mgmt-resource/test.py
Traceback (most recent call last):
  File "/usr/lib64/python3.9/runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib64/python3.9/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/home/josef/.vscode/extensions/ms-python.python-2022.4.1/pythonFiles/lib/python/debugpy/__main__.py", line 45, in <module>
    cli.main()
  File "/home/josef/.vscode/extensions/ms-python.python-2022.4.1/pythonFiles/lib/python/debugpy/../debugpy/server/cli.py", line 444, in main
    run()
  File "/home/josef/.vscode/extensions/ms-python.python-2022.4.1/pythonFiles/lib/python/debugpy/../debugpy/server/cli.py", line 285, in run_file
    runpy.run_path(target_as_str, run_name=compat.force_str("__main__"))
  File "/usr/lib64/python3.9/runpy.py", line 268, in run_path
    return _run_module_code(code, init_globals, run_name,
  File "/usr/lib64/python3.9/runpy.py", line 97, in _run_module_code
    _run_code(code, mod_globals, init_globals,
  File "/usr/lib64/python3.9/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/home/josef/vscode/azure-mgmt-resource/test.py", line 33, in <module>
    policyAssignment = policyClient.policy_assignments.create("/subscriptions/eb74d967-xxxx-xxxx-xxxx-xxxxx", "audit-vm-manageddisks", policyAssignmentDetails)
  File "/home/josef/vscode/azure-mgmt-resource/.venv/lib64/python3.9/site-packages/azure/core/tracing/decorator.py", line 73, in wrapper_use_tracer
    return func(*args, **kwargs)
  File "/home/josef/vscode/azure-mgmt-resource/.venv/lib64/python3.9/site-packages/azure/mgmt/resource/policy/v2021_06_01/operations/_policy_assignments_operations.py", line 614, in create
    request.url = self._client.format_url(request.url)
  File "/home/josef/vscode/azure-mgmt-resource/.venv/lib64/python3.9/site-packages/azure/core/pipeline/transport/_base.py", line 582, in format_url
    base = self._base_url.format(**kwargs).rstrip("/")
AttributeError: 'NoneType' object has no attribute 'format'

The code I use to create the PolicyAssignment:
assignmentLocation = "westeurope"
policyAssignmentIdentity = Identity(type="SystemAssigned")
policyAssignmentDetails = PolicyAssignment(display_name="Audit VMs without managed disks Assignment", policy_definition_id="/providers/Microsoft.Authorization/policyDefinitions/06a78e20-9358-41c9-923c-fb736d382a4d", description="Shows all virtual machines not using managed disks", identity=policyAssignmentIdentity, location=assignmentLocation)

# Create new policy assignment
policyAssignment = policyClient.policy_assignments.create("/subscriptions/eb74d967-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "audit-vm-manageddisks", policyAssignmentDetails)

As before, this works perfectly with version 20.0.0, but doesn't with 20.1.0 and also not with 20.1.0.

Hi @josvo, there may be a problem with the parameter format. Here is a sample fyi, it could work well in 20.0.0 or 21.0.0.

Hi
Found the time to test it:
The example provided at Microsoft docs uses:
policyClient = PolicyClient(credential, subId, base_url=none)

whereas your sample uses:
    policy_client = PolicyClient(
        credential=DefaultAzureCredential(),
        subscription_id=SUBSCRIPTION_ID
    )

It turns out the behavior in _policy_client.py changed from using base_url=None to base_url="https://management.azure.com".
See this commit.
The solution is to leave away the base_url when creating a PolicyClient.
However, the documentation did not catch up with that change.


Minor changes for azure batch plugin defaults

Changed

Changed application_id to client_id for azuread_service_principal since application_id is being deprecated
Changed plugin_defaults & infra_defaults to pydantic models

Added

Added tftpl file for generating conf file
Added script in the main.tf for conf template

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


I recently noticed that clients, (including Vagrant machines that use berkshelf for acquiring cookbooks) are fetching a specific old verion of b (0.1.34) instead of the latest (0.1.54).
When requested directly in the runlist, the latest version of b is fetched.
I hacked this snippet, executable using chef-shell -z -c ~/.chef/knife.rb to show the issue:
api_service = Chef::REST.new(Chef::Config[:chef_server_url])
Chef::Cookbook::FileVendor.fetch_from_remote(api_service)
env = '_default' # No version constraints
puts "Indirect: " + api_service.post("environments/#{env}/cookbook_versions",{run_list: ['a']})['b'].version
# Indirect: 0.1.34
puts "Direct: " + api_service.post("environments/#{env}/cookbook_versions",{run_list: ['b']})['b'].version
# Direct: 0.1.54

I'm wondering:

Why Chef isn't choosing the latest version when no constraints are in place (I checked), especially considering that this is not a real node (so it shouldn't have any "cached" cookbooks)?
What's so special about version 0.1.34? Where is a possible pin except roles (I have none) and environments (I made sure it's not there)?
Where can I dig around to find this cookbook logic? I'm currently probing the oc_erchef but I'm afraid I'm wasting my time.

Could be related to to CHEF-5243, and berkshelf/berkshelf#1140

Is cookbook a's only dependency cookbook 'b'?  Does cookbook 'b' have any dependencies?  Often the cause of such a solution is some common dependency of cookbook A and cookbook B further down the dependency graph.

No, I double checked using:
api_service = Chef::REST.new(Chef::Config[:chef_server_url])
Chef::Cookbook::FileVendor.fetch_from_remote(api_service)
env = '_default' # No version constraints
api_service.post("environments/#{env}/cookbook_versions",{run_list: ['a']}).values.map{|v|v.metadata.dependencies.select{|dk,dv|dk == 'b'}}
#  => [{"b"=>">= 0.1.1"}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}]

So the only dependency is from a. I also used berks viz to verify.

@stevendanna quick question - does the dependency resolver try to get the solution with the highest version numbers, or just the first solution it finds?
Seems to me that it takes the first solution and I was assuming it picks the highest versions possible

It will pick the highest version number that it can to meet all dependencies.
Unless I'm misreading your check above, it looks like you filtered only on 'b' in the results for given runlist 'a'?

@BackSlasher it has kind of a weird algorithm for determining the best. The very newest cookbooks are considered much better than any older cookbooks, and it frequently will pick an older "top level" item in order to get a newer version of a dependency. While this is frustrating, it's likely not a thing that can be fixed without a major breakage, since many people are probably implicitly relying on this behavior without knowing about it.
This is one of the big reasons why we created the policyfiles feature:

We can improve the resolver logic without breaking the whole universe (policyfiles are actually using a better solver right now).
You get to see what the resolver did before running anything in production

The code for the solver Chef Server is using is here: https://github.com/chef/dep-selector but it's a huge amount of effort to make any functional changes to it, as you'll have to support the old and new behavior together, and have a way for chef-client to pick the one it wants.

I want it to pick the newer versions of my cookbooks. It seems like it doesn't.
@marcparadise yeah, I'm getting a lower version of b when the runlist only contains a. I wanted to rule out any chance that another cookbook requires a lower version of b, so I made this filter.
@danielsdeleo, I saw a dependency resolver in Erlang in the Chef Server repo. Is it not the one being used by the server? Is the ruby one you linked behaviorally identical?

@BackSlasher the Ruby one is the original implementation from back when Chef Server was written in Ruby. We wrote a pure Erlang implementation, but it had different behavior in many edge cases, so we had to switch back to the Ruby one (it maintains a pool of ruby solver processes and talks to them via erlectricity). So the behavior you're interested in looking into is in the dep-selector gem. But, as I said before, it cannot be changed without having a means for both chef-client and server to pick between the old and new behaviors. You'll get what you want a lot quicker if you either use policyfiles or generate environment files to lock the cookbooks.

@danielsdeleo I re-read your statement

The very newest cookbooks are considered much better than any older cookbooks, and it frequently will pick an older "top level" item in order to get a newer version of a dependency.

And I get it now!
On b I depend on elasticsearch, which I only pinned down later (because they did a major overhaul), and 0.1.34 was the last version who's metadata wasn't spermy-pinned.
Playing with the runlist and comparing the output of
res = api_service.post("environments/#{env}/cookbook_versions",{run_list: my_runlist})
res.keys.map{|k|[k,res[k].version]}.sort_by{|k,v|k}.each{|i|puts i.inspect}

helped me be sure.
So Chef server preferred that version in order to preserve the latest elasticsearch cookbook.
I'll take that as a lesson to
spermy
pin
everything
Thanks everyone for the quick reply!

suggest closing this issue - as user error. I trying to debug a similar problem, but much simpler.


Meta-issue: variants and precise record types

ADR014 summarizes the envisioned approach. Here is the plan of action:

[x] Extend TlaType1 with row types, new records, and variants, see #1597
[x] Update ADR002 with the extended syntax for type annotations
[x] Introduce the Variant operator in Variants.tla
[x] Extend the type annotation parser with the new syntax, see #1602
[ ] ~Implement kind inference?~
[x] Extend the type unification with row types, #1646
[x] Introduce a feature flag --features=rows to optionally enable row types, new records, and variants, #1648
[x] Extend the type checker to use the new records (when --features=rows is enabled), #1688
[x] Refactor CellT, see #1693
[x] Update the model checker to support new records (when --features=rows is enabled), #1709
[x] Extend the type checker to support variants (when --features=rows is enabled), #1847
[x] Update the model checker to support variants (when --features=rows is enabled), #1857
[x] Implement a generator for variants, #1868
[x] Serialize variants to ITF, #1869
[x] Add a safety check instead of the post type checker, which makes sure that no row types and type variables propagate to the model checker, #1878
[x] Migrate all integration tests to the new types
[x] Update ADR002, #1922
[x] Update the HOWTO and the tutorial
[ ] Introduce a feature flag --features=old.records to optionally enable the old records, make --features=rows the default
[ ] Announce the transition period of one month
[ ] Remove the code for the old records

Original contents:
We should rethink type inference for sets of records of different types.
One possible direction would be to introduce something similar to variant records (https://en.wikibooks.org/wiki/Ada_Programming/Types/record#Variant_record). We could then treat expressions of the form r.type = X as casts, possibly accompanied by a change in the internal representation.

Here is a piece of text from https://apalache.informal.systems/docs/adr/002adr-types.html for the context:

Note: For the above example of a set of records, we are considering to introduce union types. So the type of the set
{[type |-> "1a", bal |-> 1],
[type |-> "2a", bal |-> 2, val |-> 3]}
would be something like:
Set([type |-> "1a"], bal |-> 1] + [type |-> "2a", bal |-> 2, val |-> 3])
The value of the field type would serve as a type tag. However, we would have to fix a set of patterns that turn a union type into a precise record type. One such pattern is a set comprehension, e.g., { r \in S: r.type = "1a" }. If you have suggestions on this line of thought, please let us know.

It looks like at least three users ran into hard-to-debug issues that would not appear if we had a precise record type checker.

This seems to be a usability issue after all

Let's figure patterns first and write an ADR in addition to https://apalache.informal.systems/docs/adr/002adr-types.html

Might we also consider using https://en.wikipedia.org/wiki/Row_polymorphism ? This would just enable the (imo) most natural sub-typing relationship on records, where a record r1 <: r2 iff r2 has all the fieldName : types in r1 (but possibly others as well). I think that would cover  the case you gave, without having to introduce a special meaning for a particular key.

I am not sure about row polymorphism, but I guess it is different. What we need are records that have different combinations of fields and are distinguished by a tag field. That's the pattern introduced by Lamport, which would be very hard to replace with something else.

What would be the difficulty in replacing this with a more principled approach?

One thing is to add a few additional tests where needed, another one is to completely rewrite a spec. Here is a canonical example of how records are mixed in a set: https://github.com/tlaplus/Examples/blob/master/specifications/Paxos/Paxos.tla
As far as I understand row polymorphism is that one can shrink a record type. The way Leslie uses records (and thus all people who are reading his book and copying his specs) is using them as unions in C.

If we look at this set from Paxos {[type |-> "1a", bal |-> 1], [type |-> "2a", bal |-> 2, val |-> 3]}, then the way records are used here is similar to algebraic data types. For instance, in Scala we would define two case classes:
case class Msg1a(bal: Int) extends PaxosMessage {}

case class Msg2a(bal: Int, val: Int) extends PaxosMessage {}

If we agree that the field type specifies the constructor of such a type, we could treat the two records in Paxos as two objects that are constructed by using two different constructors. So we could introduce a new kind of a type definition for those variant/inductive/algebraic types in type annotations:
@typeDef: MSG =
          [type -> "1a", bal: Int]
        | [type -> "2a", bal: Int, val: Int];

So we can construct records of two types:

a record r1 of type [type: Str, bal: Int] that has r1.type = "1a".
a record r2 of type [type: Str, bal: Int, val: Int] that has r2.type = "2a".

We can discuss the concrete syntax here, but that is basically an ADT. The type of the above set will be Set(MSG).
We can go even further and sneak in recursive/inductive data structures:
@typeDef: TREE =
          type = "Leaf" -> [type: Str, val: Int]
        | type = "Node" -> [type: Str, left: TREE, right: TREE];

FWIW: An example of a spec with the message types {[type |-> "tok", q |-> 1, color |-> "black"], [type |-> "pl", src |-> "addr"]} , and where the refinement mapping drops a (record) field from the second msg type: https://github.com/tlaplus/Examples/blob/22e6b2daae5e0173ac856e8eab5c01abd90b39d4/specifications/ewd998/EWD998ChanID.tla#L183-L189

Ah, I see. Thanks for the explanation @konnov .  I think I misunderstood the need for backwards compatibility here, and so how much leeway we had when considering a more principled type discipline around records.

Since there is no pattern matching in TLA+, we have to figure out how to deconstruct those types. The obvious patterns are like: IF m.type = "1a" THEN … ELSE … and { m \in Msgs: m.type = "1a" }. These two patterns are consistent with the record idioms that we see in the examples. We could also use CASE to do pattern matching over union types. We have to figure out these patterns and see, whether they are comprehensive.

Looking at the allocator example, we would probably have to introduce a pattern for converting a generic message to a special message, by looking at m.type. @Kukovec this is what you probably meant by a casting operator, right?
I am trying to come up with a reasonable solution and that is not easy. This is the best one I have so far:
RAlloc(m) ==
  /\ m \in network
  /\ \E ma \in {m}:
      /\ ma.type = "allocate"
      /\ holding' = [holding EXCEPT ![ma.clt] = @ \cup ma.rsrc]
      /\ requests' = [requests EXCEPT ![ma.clt] = @ \ ma.rsrc]

You could try set filtering
\E ma \in {msg \in {m} : msg.type = "allocate" }: ...

Also, you could implement this to be the body of the "casting" operator:
Cast(rec, fld) = CHOOSE cast \in { r \in {rec} : r.type = fld } : TRUE

This option looks interesting, though it is heavy on syntax:
\E ma \in {msg \in {m} : msg.type = "allocate" }: ...

I am not sure how to use Cast(rec, fld). Can you try to use in that above example?
The problem is that we both have to check the type and introduce a new name for a matching message. There is a small number of operators in TLA+ that allow such a trick.

In the above, you could do
LET mCast == Cast(m, "allocate")
IN
  /\ mCast \in network
  /\ holding' = [holding EXCEPT ![mCast.clt] = @ \cup mCast.rsrc]
  /\ requests' = [requests EXCEPT ![mCast.clt] = @ \ mCast.rsrc]

It shouldn't be impossible to LET-wrap as a preprocessing step.

Ah, I was also thinking about a let expression. I guess, it is syntactically concise. Though if you just cast, we need an additional test for the actual type. Cast would just shrink the type. By the way, CHOOSE is free to return whatever on the empty set.

Yes, but what else do you do on a bad cast?

RAlloc(m) is a predicate, so it should produce FALSE, when m.type is different from "allocate".

Sure, then you can jut wrap with an ITE:
IF m.type = "allocate"
THEN (cast)
ELSE FALSE

Sure, you can. But the more baroque this pattern is, the more the chances to get it wrong.

How about the following syntactic form:
RAlloc(m) ==
  /\ m \in network
  /\ m.type = "allocate" => \E ma \in {m}:
        /\ holding' = [holding EXCEPT ![ma.clt] = @ \cup ma.rsrc]
        /\ requests' = [requests EXCEPT ![ma.clt] = @ \ ma.rsrc]

Although it looks a bit unusual, it is somewhat similar to pattern matching in Scala :-)

Of course, we can wrap the above example with a custom operator. I just want to see how we could avoid that, as a custom operator immediately introduces a module dependency on Apalache.

I have opened a discussion #789 on that, as the discussion in this issue is deeply buried. I have written five code patterns and now see what has worried me. Three of these patterns are not closed under negation.

I am closing this meta-issue. This work is finished. There are a few follow-up issues: #1926, #1943, #1944, #1945. All of them are tracked in the milestone: https://github.com/informalsystems/apalache/milestone/60

Hurrah! Awesome work here :)


Find-DbaStoredProcedure does not report TextHeader content

Before submitting a bug report:

[X] Ensure you are able to reproduce it on the latest released version (we release often)
[X] Verified this bug is not already reported in an issue
[X] Verified errors are not related to permissions
[X] Can reproduce in a clean PowerShell session (clean = powershell -NoProfile)

Putting this as a feature request instead of a bug report as the documentation clearly states that the command will report on the textbody.
However, WITH RECOMPILE gets reported/stored in the 'TextHeader', not the 'TextBody'.
It's returning an result for the stored procedure but nothing for the text found property.
Having to check if any WITH RECOMPILE was present, and whether it was commented out or not ( --WITH RECOMPILE, /* WITH RECOMPILE */ ) , required extra steps that I'm hoping we can add to the command.
Steps to Reproduce
CREATE PROCEDURE dbo.TextHeaderHasTheGoodies

    @IntParam int

    WITH RECOMPILE

    AS
    BEGIN

        SELECT @IntParam AS NotImportant

    END
GO

$FindRecompileParams = @{
     SqlInstance = 'localhost'
     Database    = 'DBA'
     Pattern     = 'RECOMPILE'
}
Find-DbaStoredProcedure @FindRecompileParams

Expected Behavior
Procedure correctly reports that the stored procedure contains the word 'RECOMPILE' and the 'StoredProcedureTextFound' property shows the line number and string e.g.
(LineNumber: 7)     WITH RECOMPILE
Actual Behavior
Procedure correctly reports that the stored procedure contains the word 'RECOMPILE'.
However, the 'StoredProcedureTextFound' does not show the line number or the string.

Environmental data

PowerShell: 5.1.16299.251
SQL Server: Microsoft SQL Server 2016 (SP1) (KB3182545) - 13.0.4001.0 (X64)   Oct 28 2016 18:17:30   Copyright (c) Microsoft Corporation  Developer Edition (64-bit) on Windows 10 Pro 6.3 <X64> (Build 16299: )

Further investigation reveals more fun 😃
If you pass in the switch IncludeSystemObjects this doesn't get reported.

So it's not a bug/feature/issue then!
TL;DR

The only difference when using the switch IncludeSystemObject and not using it is, when we don't include that switch we check using T-SQL first for performance reasons i.e.
                # If system objects aren't needed, find stored procedure text using SQL
                # This prevents SMO from having to enumerate

                if (!$IncludeSystemObjects) {

This uses the sys.modules.definition and that is used to match on our pattern ( I'm ignoring the old style joins 😆 )
$sql = "SELECT OBJECT_SCHEMA_NAME(p.object_id) as ProcSchema, p.name, m.definition as TextBody FROM sys.sql_modules m, sys.procedures p WHERE m.object_id = p.object_id"
This definition includes the TextHeader so we find the pattern in there.
We then go back to the Smo for that procedure and return the results from the 'TextBody' property which, since we've used Smo, doesn't have our pattern and nothing gets spit out.`
When we do include the switch IncludeSystemObjects, we go straight to the Smo so the pattern isn't found and our whole procedure is ignored.

Such fun! 😄

Added features / fixes - see https://github.com/sqlcollaborative/dbatools/pull/5340 . @potatoqualitee / @wsmelton , if you are good with these changes, can you please close this issue. Thanks!

done didley! thanks mike!


Adding link to documentation on supported fields for pod templates.

Changes
This fixes #3249 , adding a link to the documentation on supported fields for pod templates.
Submitter Checklist
These are the criteria that every PR should meet, please check them off as you
review them:

[x] Includes docs (if user facing)
[x] Commit messages follow commit message best practices
[x] Release notes block has been filled in or deleted (only if no user facing changes)

See the contribution guide for more details.
Double check this list of stuff that's easy to miss:

If you are adding a new binary/image to the cmd dir, please update
the release Task to build and release this image.

Reviewer Notes
If API changes are included, additive changes must be approved by at least two OWNERS and backwards incompatible changes must be approved by more than 50% of the OWNERS, and they must first be added in a backwards compatible way.

/kind documentation

/release-note-none

/lgtm


Parameters marked undefined in function decorated with custom @deprecated decorator

We use a custom @deprecated decorator to mark functions as deprecated. Oddly, whenever we use the decorator, any parameters in the resulting function are returned by the language server as undefined variables. This does not occur under Jedi.
More oddly, this appears to depend on the name of the decorator. We took all the logic out of the decorator, and the language server behaves the same way. Meanwhile, if we create an identical decorator with a different name, all variables and the resulting function are found.
Perhaps somehow "@deprecated" is being special-cased inside the language server?
Environment data

Language Server version: <IP_ADDRESS>
OS and version: Windows 10 Pro 1903
Python version (& distribution if applicable, e.g. Anaconda): 3.7.4/Miniconda3

Expected behaviour
Identical parsing regardless of the name of the decorator used.
Actual behaviour
(Note undefined variable errors related to function g, lines 20-23, but not function h, lines 26-30, despite identical function and decorator definitions).

Logs
Downloading https://pvsc.azureedge.net/python-language-server-stable/Python-Language-Server-win-x<IP_ADDRESS>.nupkg...
Language server dowload complete
Unpacking archive... done
[Info  - 2:13:21 PM] Analysis cache path: C:\Users\krychd\AppData\Local\Microsoft\Python Language Server
[Info  - 2:13:21 PM] GetCurrentSearchPaths C:\Miniconda3\envs\prod\python.exe
[Info  - 2:13:21 PM] Interpreter search paths:
[Info  - 2:13:21 PM]     c:\miniconda3\envs\prod\dlls
[Info  - 2:13:21 PM]     c:\miniconda3\envs\prod\lib
[Info  - 2:13:21 PM]     c:\miniconda3\envs\prod\lib\lib-tk
[Info  - 2:13:21 PM]     c:\miniconda3\envs\prod
[Info  - 2:13:21 PM]     C:\Users\krychd\Projects\Python\aws
[Info  - 2:13:21 PM]     C:\Users\krychd\Projects\Python\shared
[Info  - 2:13:21 PM]     c:\miniconda3\envs\prod\lib\site-packages
[Info  - 2:13:21 PM]     c:\miniconda3\envs\prod\lib\site-packages\flake8-2.5.1-py2.7.egg
[Info  - 2:13:21 PM]     c:\miniconda3\envs\prod\lib\site-packages\win32
[Info  - 2:13:21 PM]     c:\miniconda3\envs\prod\lib\site-packages\win32\lib
[Info  - 2:13:21 PM]     c:\miniconda3\envs\prod\lib\site-packages\pythonwin
[Info  - 2:13:21 PM] User search paths:
[Info  - 2:13:21 PM]     C:\Users\krychd\Projects\Python\ficc_alpha
[Info  - 2:13:30 PM] Microsoft Python Language Server version <IP_ADDRESS>
[Info  - 2:13:30 PM] Initializing for C:\Miniconda3\envs\prod\python.exe
Analysis of DataLoaders.futures.test(User) queued
Analysis version 153 of 1 entries has started.
Analysis of DataLoaders.futures.test(User) on depth 0 completed  in 0.5316 ms.
Analysis complete: 1 modules in 0.7992 ms.
Analysis version 153 of 1 entries has been completed in 0.6414 ms.
Analysis of DataLoaders.futures.test(User) queued
Analysis version 154 of 1 entries has started.
Analysis of DataLoaders.futures.test(User) on depth 0 completed  in 0.6071 ms.
Analysis complete: 1 modules in 0.8693 ms.
Analysis version 154 of 1 entries has been completed in 0.7197 ms.
Completions in file:///c:/Users/krychd/Projects/python/ficc/DataLoaders/futures/test.py at (32, 1)
IntelliCode identified no likely completion items.
Analysis of DataLoaders.futures.test(User) queued
Analysis version 155 of 1 entries has started.
Analysis of DataLoaders.futures.test(User) on depth 0 completed  in 0.5093 ms.
Analysis complete: 1 modules in 0.7266 ms.
Analysis version 155 of 1 entries has been completed in 0.6101 ms.
Signatures in file:///c:/Users/krychd/Projects/python/ficc/DataLoaders/futures/test.py at (32, 2)
Analysis of DataLoaders.futures.test(User) queued
Analysis version 156 of 1 entries has started.
Analysis of DataLoaders.futures.test(User) on depth 0 completed  in 0.4599 ms.
Analysis complete: 1 modules in 0.6815 ms.
Analysis version 156 of 1 entries has been completed in 0.5531 ms.
Signatures in file:///c:/Users/krychd/Projects/python/ficc/DataLoaders/futures/test.py at (32, 3)
Analysis of DataLoaders.futures.test(User) queued
Analysis version 157 of 1 entries has started.
Analysis of DataLoaders.futures.test(User) on depth 0 completed  in 0.4552 ms.
Analysis complete: 1 modules in 0.6721 ms.
Analysis version 157 of 1 entries has been completed in 0.5529 ms.
Signatures in file:///c:/Users/krychd/Projects/python/ficc/DataLoaders/futures/test.py at (32, 4)
Signatures in file:///c:/Users/krychd/Projects/python/ficc/DataLoaders/futures/test.py at (32, 0)
Analysis of DataLoaders.futures.test(User) queued
Analysis version 158 of 1 entries has started.
Analysis of DataLoaders.futures.test(User) on depth 0 completed  in 0.4758 ms.
Analysis complete: 1 modules in 0.7175 ms.
Analysis version 158 of 1 entries has been completed in 0.5835 ms.
Analysis of DataLoaders.futures.test(User) queued
Analysis version 159 of 1 entries has started.
Analysis of DataLoaders.futures.test(User) on depth 0 completed  in 0.5734 ms.
Analysis complete: 1 modules in 0.7932 ms.
Analysis version 159 of 1 entries has been completed in 0.6774 ms.
Hover in file:///c:/Users/krychd/Projects/python/ficc/DataLoaders/futures/test.py at (2, 31)
Analysis of DataLoaders.futures.test(User) queued
Analysis version 160 of 1 entries has started.
Analysis of DataLoaders.futures.test(User) on depth 0 completed  in 0.5694 ms.
Analysis complete: 1 modules in 0.8264 ms.
Analysis version 160 of 1 entries has been completed in 0.7022 ms.
Analysis of DataLoaders.futures.test(User) queued
Analysis version 161 of 1 entries has started.
Analysis of DataLoaders.futures.test(User) on depth 0 completed  in 0.8551 ms.
Analysis complete: 1 modules in 1.188 ms.
Analysis version 161 of 1 entries has been completed in 1.0392 ms.
Analysis of DataLoaders.futures.test(User) queued
Analysis version 162 of 1 entries has started.
Analysis of DataLoaders.futures.test(User) on depth 0 completed  in 0.3447 ms.
Analysis complete: 1 modules in 0.5658 ms.
Analysis version 162 of 1 entries has been completed in 0.4397 ms.
Analysis of DataLoaders.futures.test(User) queued
Analysis version 163 of 1 entries has started.
Analysis of DataLoaders.futures.test(User) on depth 0 completed  in 0.7358 ms.
Analysis complete: 1 modules in 0.9932 ms.
Analysis version 163 of 1 entries has been completed in 0.8746 ms.
Analysis of DataLoaders.futures.test(User) queued
Analysis version 164 of 1 entries has started.
Analysis of DataLoaders.futures.test(User) on depth 0 completed  in 0.8239 ms.
Analysis complete: 1 modules in 1.164 ms.
Analysis version 164 of 1 entries has been completed in 0.9943 ms.
Signatures in file:///c:/Users/krychd/Projects/python/ficc/DataLoaders/futures/test.py at (2, 16)
Analysis of DataLoaders.futures.test(User) queued
Analysis version 165 of 1 entries has started.
Analysis of DataLoaders.futures.test(User) on depth 0 completed  in 0.7461 ms.
Analysis complete: 1 modules in 1.0962 ms.
Analysis version 165 of 1 entries has been completed in 0.9059 ms.
Analysis of DataLoaders.futures.test(User) queued
Analysis version 166 of 1 entries has started.
Analysis of DataLoaders.futures.test(User) on depth 0 completed  in 0.3801 ms.
Analysis complete: 1 modules in 0.6042 ms.
Analysis version 166 of 1 entries has been completed in 0.4819 ms.
Hover in file:///c:/Users/krychd/Projects/python/ficc/DataLoaders/futures/test.py at (2, 16)
Hover in file:///c:/Users/krychd/Projects/python/ficc/DataLoaders/futures/test.py at (14, 38)
Analysis of DataLoaders.futures.test(User) queued
Analysis version 167 of 1 entries has started.
Analysis of DataLoaders.futures.test(User) on depth 0 completed  in 0.4223 ms.
Analysis complete: 1 modules in 0.7 ms.
Analysis version 167 of 1 entries has been completed in 0.5464 ms.
Analysis of DataLoaders.futures.test(User) queued
Analysis version 168 of 1 entries has started.
Analysis of DataLoaders.futures.test(User) on depth 0 completed  in 0.4569 ms.
Analysis complete: 1 modules in 0.6901 ms.
Analysis version 168 of 1 entries has been completed in 0.561 ms.
Completions in file:///c:/Users/krychd/Projects/python/ficc/DataLoaders/futures/test.py at (30, 1)
IntelliCode identified no likely completion items.
Analysis of DataLoaders.futures.test(User) queued
Analysis version 169 of 1 entries has started.
Analysis of DataLoaders.futures.test(User) on depth 0 completed  in 0.3791 ms.
Analysis complete: 1 modules in 0.5874 ms.
Analysis version 169 of 1 entries has been completed in 0.4734 ms.
Signatures in file:///c:/Users/krychd/Projects/python/ficc/DataLoaders/futures/test.py at (30, 2)
Analysis of DataLoaders.futures.test(User) queued
Analysis version 170 of 1 entries has started.
Analysis of DataLoaders.futures.test(User) on depth 0 completed  in 0.3707 ms.
Analysis complete: 1 modules in 0.577 ms.
Analysis version 170 of 1 entries has been completed in 0.4631 ms.
Analysis of DataLoaders.futures.test(User) queued
Analysis version 171 of 1 entries has started.
Analysis of DataLoaders.futures.test(User) on depth 0 completed  in 0.3716 ms.
Analysis complete: 1 modules in 0.5948 ms.
Analysis version 171 of 1 entries has been completed in 0.4682 ms.
Analysis of DataLoaders.futures.test(User) queued
Analysis version 172 of 1 entries has started.
Analysis of DataLoaders.futures.test(User) on depth 0 completed  in 0.3776 ms.
Analysis complete: 1 modules in 0.5848 ms.
Analysis version 172 of 1 entries has been completed in 0.4707 ms.
Signatures in file:///c:/Users/krychd/Projects/python/ficc/DataLoaders/futures/test.py at (30, 5)
Analysis of DataLoaders.futures.test(User) queued
Analysis version 173 of 1 entries has started.
Analysis of DataLoaders.futures.test(User) on depth 0 completed  in 0.3771 ms.
Analysis complete: 1 modules in 0.6033 ms.
Analysis version 173 of 1 entries has been completed in 0.4757 ms.
Analysis of DataLoaders.futures.test(User) queued
Analysis version 174 of 1 entries has started.
Analysis of DataLoaders.futures.test(User) on depth 0 completed  in 0.3758 ms.
Analysis complete: 1 modules in 0.5886 ms.
Analysis version 174 of 1 entries has been completed in 0.4731 ms.
Signatures in file:///c:/Users/krychd/Projects/python/ficc/DataLoaders/futures/test.py at (30, 7)
Analysis of DataLoaders.futures.test(User) queued
Analysis version 175 of 1 entries has started.
Analysis of DataLoaders.futures.test(User) on depth 0 completed  in 0.4337 ms.
Analysis complete: 1 modules in 0.6887 ms.
Analysis version 175 of 1 entries has been completed in 0.5512 ms.
Analysis of DataLoaders.futures.test(User) queued
Analysis version 176 of 1 entries has started.
Analysis of DataLoaders.futures.test(User) on depth 0 completed  in 0.4464 ms.
Analysis complete: 1 modules in 0.6859 ms.
Analysis version 176 of 1 entries has been completed in 0.5499 ms.

Code Snippet / Additional lnformation
from functools import wraps

def deprecated(a=None, b=None, c=None):
    def wrap(func):
        @wraps(func)
        def new_func(*args, **kwargs):
            return func(*args, **kwargs)
        return new_func
    return wrap

def decorated(a=None, b=None, c=None):
    def wrap(func):
        @wraps(func)
        def new_func(*args, **kwargs):
            return func(*args, **kwargs)
        return new_func
    return wrap

@deprecated('blah')
def g(x, y):
    return x + y

g(4, 2)

@decorated('blah')
def h(x, y):
    return x + y

h(4, 2)

We have deprecated as a special case which stops the analysis of some functions, but it doesn't distinguish if it's from the actual "deprecation" library, or something else.
https://github.com/microsoft/python-language-server/blob/bd54c7409f776dfbc4b53523f3b966528feb480f/src/Analysis/Ast/Impl/Analyzer/Symbols/SymbolCollector.cs#L215-L226
We'd need to loosen this, either by checking that the decorator comes from deprecation, or configuring it. @MikhailArkhipov would know what this check has been getting us (likely a perf improvement).

Thanks @jakebailey. I'd tend to think that deprecated functions should still be analyzed by the language server, regardless of how they were deprecated. A deprecated function after all still has to work until its removal from the library, and may require maintenance to ensure it continues to function until its removal version.


[Intel MKL] Restructuring layout pass tests for bfloat16 - part 4

@nhasabni Thank you for your contribution. Can you please sign CLA? Thanks!

@gbaned I've singed the CLA already. Not sure what's the issue now. https://cla.developers.google.com/clas shows Googe Corporate CLA.

@googlebot I signed it!


Click show scrolls to top of show notes. Added back to episode button.

When you click a show, the window smooth scrolls to the top of the show notes. I also added back to episode button that smooth scrolls back to your place in the episodes list.

@jameygleason love the idea. However, I think the wording might be a little confusing to viewers. "Back to" could suggest returning to a previous episode but since it's not the previous episode, it might be confusing.
How do you feel about introducing overflow-y on the show list on desktop? I think the show list made sense when there were a dozen shows but now that there are 80+, a scroll might make more sense, that way, when you click an episode, it doesn't get lost in the long list. and when they go 100+, i don't think having a long page like that makes sense.
Thoughts?

This will be tracked here: https://github.com/wesbos/Syntax/pull/113


Use without Github CLI

Is spr usable without gh?
The first error I got from git spr -h was
10:13PM WRN ../../../runner/work/spr/spr/github/githubclient/client.go:101 > failed to read hub config file error="failed to open hub config file: open <snip>/.config/hub: no such file or directory"

No GitHub OAuth token found! You can either create one
at https://github.com/settings/tokens and set the GITHUB_TOKEN environment variable,
or use the official "gh" CLI (https://cli.github.com) config to log in:

	$ gh auth login

Alternatively, configure a token manually in ~/.config/hub:

	github.com:
	- user: <your username>
	  oauth_token: <your token>
	  protocol: https

I created ~/.config/hub with a new token. But the next invocation of git spr -h complains that hosts.yml doesn't exist:
10:41PM WRN ../../../runner/work/spr/spr/github/githubclient/client.go:89 > failed to read gh cli config file error="failed to open gh cli config file: open <snip>/.config/gh/hosts.yml: no such file or directory"

So do other commands, and all of them seem to work other than this warning.
Overall, it's not clear where gh falls on the spectrum between a strict requirement and a small convenience.

Try the first approach:
create a token at https://github.com/settings/tokens and set the GITHUB_TOKEN environment variable.
No github cli needed.

You mean, place the token in an env variable instead of ~/.config/hub?

Yes, exactly.
I have the GITHUB_TOKEN set with the token value exported in my bashrc.

That works, thank you!
Had to ask because it was surprising based on the help message that the two would work differently. I'm guessing this is because ~/.config/hub is being read by a third-party library.

Closed because there's no bug or anything, but please feel free to reopen/edit the OP if you still need it!

Hello everyone,
First off, I'd like to say that this tool is fantastic—great work!
I have a question regarding the selection options for scopes. Specifically, how many options should I select to appropriately define the access level for personal tokens?
Thank you for your assistance!


[events] Ensure we can recover from crash

We update the event subsystem through a call here:
https://github.com/MystenLabs/sui/blob/6f3605544bfa02f68242e334b4834f62dd9b286f/crates/sui-core/src/authority.rs#L532-L535
However, if there is a crash between the return of the update state and calling the event subsystem, then we might never send the transaction to the event subsystem. Is this an issue? If so I recommend we pass along the sequence number of the transaction, and upon restart check that the event store has processed all the events by sequence number.

The rainy days we worry about: the server crashes just before starting the event processing, or before storing the event into the persistent storage. We don't worry about subscriptions because we fail fast by cutting off the connection, hence the clients will notice that and attempt to re-connect. And the clients are responsible for figuring out their own cursors. However, we are worried about having txns stored in fullnode, but not the events. This will cause it to skip the missing events because the transaction has been persisted.
After some discussions with @gdanezis & @lxfind  , I think here's a potential solution:

We keep track of the sequence number of transactions, once they are assigned and stored in DB, assuming this sequence number is consistent within a fullnode (e.g. a sequence number shouldn't map to two txns)
When we process events, we pass in the sequence number, and store it along with the events
Event service has a cursor to track the previous processed seq number. When there's a new txn but with a seq number that is larger than previous_seq_num + 1, it means some txns were skipped for event processing. Then evene service will find these txns and do event processing one by one until the sequence number matches again.
make the event service a complete async task (tokio::task) to not block txn processing.

Note: For system events (e.g. checkpoints, epoch change etc) we may have similar problems, so that's worth eyeing on too.

@longbowlu to make the above easier, we should make a stream of TransactionEffects, or maybe a stream of EventEnvelope's, which should follow the transaction sequencing.  In fact ideally this could be similar to or based on the Stream for TX batches.,   This stream naturally occurs in increasing sequence number.   This would be the same sequence for which we process events and write them to event store.
When an error occurs, then, the last entries in the event store would have the highest sequence number written.  To ensure we do not skip we need to recover the effects starting at the sequence after the last sequence number.
This actually dovetails nicely with a proposal I wrote up to pipeline the storage writes in SuiDataStore.  Having streams makes recovery processing really really simple.

@velvia  after https://github.com/MystenLabs/sui/pull/2494 event processing is now part of post processing index ("Stream for TX batches").
This simplifies the story a bit, now we just need to make sure the post processing happens at least once for every txn. This should be not too hard to achieve by using @mystenmark 's WAL. AND as long as our event store is idempotent.

Hi guys! Any update on this?
What is the preferred way to fetch missed events right now(in case you disconnected, I'm interested only in objects updates/deletes/creations)?
Should clients fallback to something like suix_queryEvents?


Add instructions to README on how to use Jitpack

With the Jitpack Gradle plugin, one is not dependent upon Tomas making releases before one can benefit from the new changes made.
To help developers get it set up, we should add another section to the ReadMe's "Download" section (or maybe use a new section completely) that explains how to configure Jitpack to do that.

Closed by #533.


[Key Request] Table 21 "Cust. Ledger Entry" - One new key

Currently it is not passible to use a table Extension to create new keys on existing tables. In these special case it is not possible to use a query for substitution of a key.
New Key
External Document No.,Customer No.,Open,Positive

We are going to deliver possibility for partners to add table keys soon. Closing this old request for now.


Svelte 4

Support Svelte 4
peerDependencies is using svelte 3.
See the Svelte migration guide
Reproduce
"svelte": "^4.0.5",
"ag-grid-community": "^30.0.3",
"ag-grid-svelte": "^0.3.0",
Then npm i
Error

Installation error
npm ERR! code ERESOLVE
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR!
npm ERR! While resolving<EMAIL_ADDRESS>npm ERR! Found<EMAIL_ADDRESS>npm ERR! node_modules/svelte
npm ERR!   dev<EMAIL_ADDRESS>from the root project
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer svelte@"^3" from<EMAIL_ADDRESS>npm ERR! node_modules/ag-grid-svelte
npm ERR<EMAIL_ADDRESS>from the root project
npm ERR!
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.

Is there a reason why this migration hasn't been completed yet? I see there's a PR with a WIP, but it hasn't been completed.
If any please let me know I'm happy to try and look into it and try to resolve the issues

I would like to see svelte 4 support too.


fix: DIA-1168: Delete kafka topics on job failure / cancel

We observed an issue where the list of kafka topics was growing on develop Adala instance, even though we implemented logic to delete them after completing a job. However, we did not handle the case of a job failing, or being canceled. I have added a handler to be run when the parent_streaming_task fails, so that we clean up topics, and also cleaning up topics when we cancel a job.
Also added logic to attempt to stop input/output jobs when the parent task fails.

Commit https://github.com/HumanSignal/infra/commit/3144ea8053f8c9a81c06084acccd9bd9987a7da8 is created.

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

Project coverage is 43.71%. Comparing base (a20ead5) to head (478dbf1).
Report is 3 commits behind head on master.

Files
Patch %
Lines

server/tasks/process_file.py
0.00%
15 Missing :warning:

server/app.py
0.00%
6 Missing :warning:

server/utils.py
0.00%
2 Missing :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##           master     #131      +/-   ##
==========================================
- Coverage   44.20%   43.71%   -0.49%
==========================================
  Files          40       40
  Lines        1794     1814      +20
==========================================
  Hits          793      793
- Misses       1001     1021      +20

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

Commit https://github.com/HumanSignal/infra/commit/7cbe0c3eddada655513282936dc6fea28afb2136 is created.

Commit https://github.com/HumanSignal/infra/commit/663b690ce0818ba4dfb3de19b863067dcca29290 is created.

Commit https://github.com/HumanSignal/infra/commit/cd55f815a181208f672d8246a88d637ed64bf32d is created.


FR: Check if Brew is installed

I have Brew installed already so all good, but I think it would be nice to check for Brew in case user forgot that he/she does not have Brew installed.
Something like this perhaps?
command -v brew >/dev/null 2>&1 || { echo >&2 "Installing Homebrew Now"; \
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"; }

Source: https://gist.github.com/ryanmaclean/4094dfdbb13e43656c3d41eccdceae05

@lesaff good call! I'm not sure though that I want it to actually perform the installation. I'd rather just let them know that switch-php requires Brew and maybe recommend the necessary commands to run.
I personally think installing Brew (or anything for that matter) without asking for the user's permission is a little unethical. But I can definitely add in a clause that if Brew isn't installed, throw an error that also includes the necessary commands to install Brew so they can copy/paste/run if they so desire.
Thanks for the first issue! 😜

Maybe just return Brew is not installed message to remind user? 💭

Yep something along those lines sounds like the best idea 👍


does plugin works with Artemis ActiveMQ ?

Hi,
I use Redhat version of ActiveMQ called Artemis ActiveMQ (version 2.6.1).
When i use --jolokia-url option it works with this url : "http://user:password@host_ip:8161/console/jolokia/"
But it returns "ACTIVEMQHEALTH UNKNOWN - ERROR: Getting Values FAILED: 'value'" for the health option.
Does this plugin works with Artemis ActiveMQ ? When i read the code, i guess there are differences with url query and variable "PREFIX".
Someone already use this plugin or another one plugin with Artemis ActiveMQ ?
Thanks,
Br

We have the same issue. Is there a way to get Artemis support?

Hello,
Anyone got a solution? We have the same issue with Artemis running in a Openshift pod.
[user@server]$ ./check_amq_artemis.py -j "https://user:passwd@host/console/jolokia" health
ACTIVEMQHEALTH UNKNOWN - ERROR: Getting Values FAILED: 'value'
Thanks!

Hello,
Anyone got a solution? We have the same issue with Artemis running in a Openshift pod.
[user@server]$ ./check_amq_artemis.py -j "https://user:passwd@host/console/jolokia" health
ACTIVEMQHEALTH UNKNOWN - ERROR: Getting Values FAILED: 'value'
Thanks!


Rigidity_group

Implement rigidity_group for edge connections and line supports and point supports:
https://github.com/strusoft/femdesign-api/blob/master/FemDesign.Core/Supports/Group.cs
Will need to update the deconstructor as well:
https://github.com/strusoft/femdesign-api/blob/master/FemDesign.Grasshopper/Deconstruct/SupportDeconstruct.cs
And probably
https://github.com/strusoft/femdesign-api/blob/master/FemDesign.Grasshopper/Deconstruct/EdgeConnectionDeconstruct.cs

I am experiencing some problems with rigidity_groups also for Point Support Groups - It seems that the deconstructor is not able to read it as well - do you look into that also?

@AmalieRask131
Yes. We will implement it for point supports as well. Thanks for pointing it out.
Are you using different stiffness for different calculations?

@andosca Currently we are using the api to populate a model with loads, containing the building foundation beams and piles. Support groups are used instead of piles, and often we want to restrict the the compression limit of the piles according to the measured values from the building site, to obtain a plastic redistribution.
(i'm not quite sure, but) it looks like the spring-stiffness for some situations is reduced in ULS only, being fully rigid in SLS - NOT using the 'same for all calculations'.

@AmalieRask131
Ok so then this issue might be a blocker for you. We will implement it ASAP :)

Hi @AmalieRask131!
if you like, you can build 21.4.0 and try the rigidity group.
It will give you access to the Rigidity Group and you can serialise/deserialise the model as usual :)
I hope it helps

Works fine.


AE Flex Facet UI: Should we hide Dockerfile config when runtime  != custom

I may have forgotten or missed a conversation about this, but I initially thought we wanted to hide the 'Dockerfile' configuration in the Flex facet unless the runtime was set to 'custom'.  Flex tries to hard to hide docker from the user for non-custom scenarios, so ideally the user wouldn't see this field unless they had explicitly decided to go down that path.
Another thing that looks like a bug is that the Dockerfile shows up as configured except greyed out when the app.yaml is set to custom and the project has a Dockefile under ../src/main/docker.  This is confusing because it could give the impression that the Dockerfile is being used, but just can't be changed.  Hiding the configuration completely would also fix this bug.
Doing something similar to what's proposed for the deployment configuration here: #1333  could be nice. So that the runtime is displayed, and if it's custom, the dockerfile selection UI is displayed as a child of that UI element.

The decision was to hide Dockerfile on runtime != custom from the deployment UI, but not from the facet, so as to decrease the amount of "magic" to the users. i.e., why was Dockerfile there before and why is not there now? What do I need to do to get it back there?
Why do you say that Flex "tries hard to hide docker" for non-custom scenarios?
Dockerfile will always be set to something, even if grayed out, unless the user sets it to an empty value. The caption underneath the Dockerfile textbox, when it's disabled, attempts to explain the state of things:

There might be something I'm missing, but #1333 seems to only focus on the deployment UI.
All in all, I still think Dockerfile being always there in facet for the purposes of reducing mysticism is still a valid decision.

On Fri, Mar 31, 2017 at 2:28 PM, João Martins<EMAIL_ADDRESS>wrote:

The decision was to hide Dockerfile on runtime != custom from the
deployment UI, but not from the facet, so as to decrease the amount of
"magic" to the users. i.e., why was Dockerfile there before and why is not
there now? What do I need to do to get it back there?
Why do you say that Flex "tries hard to hide docker" for non-custom
scenarios?

App Engine Flex does not require docker or Dockerfiles and emphasizes their
standard runtimes.  It's weird and can be confusing to have a configuration
element visible which doesn't apply to the use-case.

Dockerfile will always be set to something, even if grayed out, unless the
user sets it to an empty value. The caption underneath the Dockerfile
textbox, when it's disabled, attempts to explain the state of things:

[image: screenshot from 2017-03-31 14 27 05]

https://cloud.githubusercontent.com/assets/3290856/24563927/2d9689c2-161e-11e7-90c4-20b8653c9346.png
In the above example a user could still misconstrue this to indicate that
the path is being used but they simply can't change it.  Many user's will
have a lot less complete understanding of how the platform works.

There might be something I'm missing, but #1333
https://github.com/GoogleCloudPlatform/google-cloud-intellij/issues/1333
seems to only focus on the deployment UI.

Yes it is about the deployment UI, but the service configuration widget
treats the same subject as the facet.

All in all, I still think Dockerfile being always there in facet for the
purposes of reducing mysticism is still a valid decision.

Look this is clearly a subjective thing. I think we could make it work
either way with some UX dexterity, but I prefer tailoring the visible UI to
the use-case instead of displaying all possible configuration elements
regardless of their applicability.  This is one of the key benefits of a
dynamic UI vs a CLI.
You are receiving this because you authored the thread.

Reply to this email directly, view it on GitHub
https://github.com/GoogleCloudPlatform/google-cloud-intellij/issues/1334#issuecomment-290791571,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AHf5HTLr5YW49ICq-v3o3W-ktlLmE0Xcks5rrUXWgaJpZM4Mv9qn
.

Whenever Dockerfile is grayed out, its value should never be used.
If it is being used anywhere, then it's a bug.


Edited qat_plugin README.

Replaced multiple instances of master with main.
Reworded line 15 "Verify QAT device plugin is registered" removed 'on master'
and corresponding section heading. Related to pr499.
Signed-off-by: DougTW<EMAIL_ADDRESS>

closing in favour of rebased and fixed version: #587


Large file formats

@DanielJMaher @FBRTMaka please review
Keep in mind once HDVideo and echograms come alive we will need to update

his should not be merged in until i give the okay.  There might be changes needed and the data isnt fully exposed yet.

@oceanzus Just as a heads up, this changes the config.yml


AccumAnalyzer Couldn't Infer Reduction from Accumulation

In the attached app, the AccumAnalyzer could not infer reduction by just looking at line 164 ~ 168 and it's corresponding counter. As a result, the analyzer concludes that the initiation interval for the corresponding counter needs to be at least 2, whereas in theory II should be 1.
RNNMetaProgrammed_loop_perfection.scala.zip

Fixed by making it not split the accumulating register in memory analysis into two (accumulator and copy-read-by-someone-later-on).  I don't think it makes any sense to do this duplication if both are buffer size 1 (read in the same block), so I made it stop detecting that the accesses to the reg conflict in this case.


Fix the calculation for identity operator's expectation value

Summary
Fix a bug in qiskit.quantum_info in the calculation of expectation value of the identity operator.
Fixes #13029
Details and comments
Currently,  qiskit.quantum_info yields incorrect results for the expectation value of an identity operator for a given state vector. It returns the norm of the state vector; however, it ought to return the square of the norm.
Therefore, I am changing the following line
https://github.com/Qiskit/qiskit/blob/1be2c5aa103f1991f2fdc75a77a09f82635b8431/qiskit/quantum_info/states/statevector.py#L478-L479
to
   if x_mask + z_mask == 0:
       return pauli_phase * np.linalg.norm(self.data) ** 2

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

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

1 of 1 (100.0%)  changed or added relevant line in 1 file are covered.
8 unchanged lines in 2 files lost coverage.
Overall coverage increased (+0.005%) to 88.56%

Files with Coverage Reduction
New Missed Lines
%

crates/accelerate/src/two_qubit_decompose.rs
1
92.09%

crates/qasm2/src/lex.rs
7
92.48%

Totals

Change from base Build<PHONE_NUMBER>8:
0.005%

Covered Lines:
73867

Relevant Lines:
83409

💛  - Coveralls

Thanks for opening a PR to fix this! Could you add a release note and a test, to verify it now works as expected? (See e.g. this PR for an example on how a bugfix PR should look like 🙂)

Sure, I just added a release note and a test.


⚠ ClamAV has degraded performance

In 56c5c01, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 586 ms

Resolved: ClamAV performance has improved in d1aa1b1.


executor/common_lunux.h/usbip_server_init: Close fd if can't find usb port

If usb port for usbip server can't be found, fd of the server and client should be closed.
If they don't closed, the number of open files will increase and may overflow the number of available open files.

The CI checks fail:
executor/common_linux.h:1:1: The file is not formatted/regenerated. Run 'make generate' and include it into the commit.


Delta-rs not using latest object_store which fails the table optimize

Environment
Delta-rs version: 0.21.0

Bug
What happened: We write data to delta table using delta-rs with PyArrow engine with DayHour as partition column. Our Day
deltalake.write_deltalake(
            table_or_uri=delta_table_path,
            data=df,
            partition_by=[dayhour_partition_column],
            schema_mode='overwrite',
            mode="append",
            storage_options={"AWS_S3_ALLOW_UNSAFE_RENAME": "true"},
        )

I ran the optimize command using the spark sql query below on the delta table
optimize_query = f"""
OPTIMIZE delta.`s3_table_path`
ZORDER BY (col1, col2)
"""
spark.sql(optimize_query)

After optimize, it creates partitions with spaces and does not properly encode the partition urls as shown in the below image i.e; it creates new partitions url with spaces (.zstd.parquet).

The issue https://github.com/delta-io/delta-rs/issues/2978 suggests delta-rs needs to be updated to have the recent object_store version 0.10.2 for this to be fixed.
@ion-elgreco @rtyler Could you please let me know if this is going to be fixed anytime soon?

This is not a PR though

@gprashmi  should be closed in #2994


[Feature Request] Remove or Alter Muted/Faint Text

Muted Text not exactly necessary, only hinders visibility and readability of text at this point

This is resolved in the upcoming update


⚠ Bofrost.fr has degraded performance

In 0f7ee67, Bofrost.fr (https://www.bofrost.fr) experienced degraded performance:

HTTP code: 200
Response time: 1186 ms

Resolved: Bofrost.fr performance has improved in 62d7210 after 6 minutes.


Add updates to Unity.py re: App Catalog

[x] register apps
[x] de-register apps
[ ] deploy applications
[ ] list applications

future:

[ ] run apps with inputs defined by application_descriptor.json


Add stm32 low level drivers

Hi @wickste,
Woud you please review this PR and merge if it is O.K.?
regards
Haithem.

Hi @rahmanih ,
I suggest to

add stm32_drivers under fx_drivers folder which regroup other semi-vendor delivred fx drivers

common
|_ fx_drivers
|_ stm32
|_ nxp...
|_ ............

add a readme file to guide users start from this files, what to modify to avoid compilation error.
(for example  #include "stm32XXXX.h" --> #include "stm32h7xx.h")

Hi @wickste,
Could you review this PR please?
regards
Haithem.

Thank you @rahmanih - this looks good!
I will need to hold off on merging it for the moment as we are still finalizing the new development process. We need to make sure all new contributions are compliant with that process, so we can continue to obtains safety certification for this code base.