Allow describe under test_each

Motivation
Right now, test_each only allows it blocks underneath it, but we've had multiple requests that it also allow a nested describe block, e.g. in #2694. This PR extends test_each just a bit to allow this by desugaring it in the same way that describe blocks are usually desugared.
Test plan

See included automated tests.

One current concern I have about this is that I don't love its desugaring, but partly this is because the whole Minitest rewriter needs to be reworked at some point. Currently, each describe gets desugared to an entire class, which means this gets turned into a ClassDef within the block passed to test_each, which is not great, but already it-blocks turn into MethodDefs in the same context.
At some point, it would be worth taking another look at the whole DSL and figuring out a way of writing it that doesn't require this specific clunky desugaring, but short of making T.proc.bind(T.attached_class) work correctly (which would be the "correct" way) I haven't thought of another way of writing it that preserves the semantics correctly.

Do we actually want this? I'm concerned of this exploding global symbol table.
Can we push back?

Actually, on reflection: the reason that we need to include the classes desugared for describe is because of scoping of other locals and defined methods… but test_each doesn't allow anything else to be defined within its scope. That means that we could conceivably just ignore describe and desugar everything inside as though they existed outside describe, without creating new classes. That'll avoid cluttering up the name table any more while also giving people this feature. i.e.
# this
test_each([1, 2, 3]) do |x|
  describe "foo" do
    it "bar" do; end
  end
end

# can be desugared basically like this
test_each([1, 2, 3]) do |x|
  it "foo/bar" do; end
end

What do you think of that approach?

There's some FUD about this an approach, so I'm going to close it for now; it should be easy to resurrect this with whatever approach we end up wanting to implement.


Progress Bar

I didn't find any resource or description for how to use a simple progress bar in a screen

BasicSamples/CancellableBulkAction

Please cancel topic when closed.

@volkanceylan topic to close


[Question] Failed to send "count" command with database "dbname": socket error or timeout

I have been running MongoDB in my Amazon since 2019. It has over millions of data and it was working fine until yesterday. But today when I try to query using Laravel jenssegers eloquent model it gives me this error:
Failed to send "count" command with database "dddb": socket error or timeout
at /var/www/html/console/vendor/mongodb/mongodb/src/Operation/Count.php:154
150| if (isset($this->options['readConcern']) && ! \MongoDB\server_supports_feature($server, self::$wireVersionForReadConcern)) {
151| throw UnsupportedException::readConcernNotSupported();
152| }
153|

154| $cursor = $server->executeReadCommand($this->databaseName, new Command($this->createCommandDocument()), $this->createOptions());
155| $result = current($cursor->toArray());
156|
157| // Older server versions may return a float
158| if ( ! isset($result->n) || ! (is_integer($result->n) || is_float($result->n))) {

Exception trace:
1 MongoDB\Driver\Server::executeReadCommand("dbname", Object(MongoDB\Driver\Command), [Object(MongoDB\Driver\ReadPreference)])
/var/www/html/console/vendor/mongodb/mongodb/src/Operation/Count.php:154

2 MongoDB\Operation\Count::execute(Object(MongoDB\Driver\Server))
/var/www/html/console/vendor/mongodb/mongodb/src/Collection.php:277

Please use the argument -v to see more details.
It would be really very helpful if you give me a solution.
Thanks in advance

@apsbd: Please share the complete exception (class and full message). Also, please confirm if this exception is easily reproducible or whether this is an occasional exception.
From what you've shared already, I can tell you that a "socket error of timeout" indicates that the command either took too long to execute (beyond the driver's socketTimeoutMS option, which defaults to 300 seconds unless you've modified it) or the connection was dropped/interrupted for some other reason. It's unlikely that the issue originated in the driver or your application.
Additionally, it may be helpful to share more details about your deployment and the operation you're running. Off the top of my head, the following may be helpful:

Share your connection string (redact any sensitive information) so we can see any options being set at the client-level. If you are also provided database or collection-level options (e.g. custom read preference), share those as well.
Describe the full count command that you are executing. Share the query filter and any additional options being passed. How many seconds does the operation take to execute before it succeeds or raises an exception?
Describe the collection on which the operation is running. How many documents are in the collection in total and how many do you expect to be counted?
Share any indexes on the collection and indicate whether the count command is using one of these indexes.
If possible, share output from the explain command for the count command you're running, which may provide much of the above and tell us which index is likely to be used.
Share details about the MongoDB deployment. Is this a replica set or a sharded cluster? If a replica set, is the query being issued against the primary or a secondary?
Attempt to run the equivalent count operation in the MongoDB shell when connected to the same server and share the result and timing for the operation to execute.

@jmikola Thanks for your reply.

I installed MongoDB in my AWS EC2 instance (t2.2xlarge 8 core 32 GiB RAM) and kept all default settings in the /etc/mongodb.conf (Only Auth is enabled, and IP is bind to the localhost only).
The database is running as a stand-alone deployment and I've over 1 Billion documents in a single collection. The instance is running on Amazon Linux and it was working great until few days ago it shows me this error while I tried to run a command from Laravel CLI.
The database is running in the localhost and the auth is enabled and the authentication database is admin.
I've 6 Indexes but no indexes were used in the count and it's working fine from the MongoDB shell. Only I got this error when I try the same count/query from the Laravel CLI.
I'm expecting around 325M of the count.

The strange part is it was working fine before and all of a sudden it stops working. I'm no expert in setup MongoDB so any help is appreciable.
Here's the gist of my Laravel Command Code that gives me the error:
protected $filter = ["date_added" => ["$type" => "string", "$ne"=> ""]];

public function handle()
{
        $db = DB::connection('mongodb');

        $collection = $db->selectCollection('contacts_collection');
        $cursor = $collection->find($this->filter);
        $total = $collection->count($this->filter);
        ......
        ......
}

Thanks

Some more info missing from my previous request:

Share your connection string (redact any sensitive information) so we can see any options being set at the client-level. If you are also provided database or collection-level options (e.g. custom read preference), share those as well.
How many seconds does the operation take to execute before it succeeds or raises an exception? Report this for both the MongoDB shell and the PHP driver.
Share output from the explain command for the count command you're running.

The Collection::explain() documentation has an example, which happens to use the count command. Please run that from PHP and share a var_dump() of the output. In your case, you'd want to replace the third argument to the Count constructor with your query filter.
It's quite possible that an unindexed count operation on a collection with more than a billion documents is timing out due to a socket timeout. I don't know offhand if the shell enforces a socket timeout, but the PHP driver does default to 300 seconds as noted in my last comment.
In any event, answers to the second and third bullets above should help narrow this down. If you are hitting a socket timeout from PHP, the fact that it's a CLI environment would support that. Most web SAPIs would time out the request after 30 seconds (long before the driver's 300 second default), but I believe the CLI has no limit of PHP execution time, which would allow you to hit the driver's socket timeout.
I expect the ultimate solution is going to be creating an index to accommodate this query filter.

@jmikola Here's what you've asked for:

Connection String:
This is what I get when I try to get the connection from my PHP client

MongoDB\Client {#4128
    manager: MongoDB\Driver\Manager {#4127},
    uri: "mongodb://localhost:27017/admin",
    typeMap: [
        "array" => "MongoDB\Model\BSONArray",
        "document" => "MongoDB\Model\BSONDocument",
        "root" => "MongoDB\Model\BSONDocument",
    ],
    writeConcern: MongoDB\Driver\WriteConcern {#4124},
}

Let me know if this is correct or how I can get the connection string correctly.

MongoDB\Collection::explain from PHP client:

MongoDB\Operation\Count^ {#4151
  -databaseName: "mydb"
  -collectionName: "mycollection"
  -filter: array:1 [
    "date_added" => array:2 [
      "$type" => "string"
      "$ne" => ""
    ]
  ]
  -options: []
}

>>> $result = $collection->explain($count);

MongoDB/Driver/Exception/ConnectionTimeoutException with message 'Failed to send "explain" command with database "mydb": Failed to read 4 bytes: socket error or timeout'

Explain from MongoDB shell

{
        "queryPlanner" : {
                "plannerVersion" : 1,
                "namespace" : "mydb.contacts_collection",
                "indexFilterSet" : false,
                "parsedQuery" : {
                        "$and" : [
                                {
                                        "$nor" : [
                                                {
                                                        "date_added" : {
                                                                "$eq" : ""
                                                        }
                                                }
                                        ]
                                },
                                {
                                        "date_added" : {
                                                "$type" : [
                                                        2
                                                ]
                                        }
                                }
                        ]
                },
                "winningPlan" : {
                        "stage" : "COUNT",
                        "inputStage" : {
                                "stage" : "COLLSCAN",
                                "filter" : {
                                        "$and" : [
                                                {
                                                        "$nor" : [
                                                                {
                                                                        "date_added" : {
                                                                                "$eq" : ""
                                                                        }
                                                                }
                                                        ]
                                                },
                                                {
                                                        "date_added" : {
                                                                "$type" : [
                                                                        2
                                                                ]
                                                        }
                                                }
                                        ]
                                },
                                "direction" : "forward"
                        }
                },
                "rejectedPlans" : [ ]
        },
        "executionStats" : {
                "executionSuccess" : true,
                "nReturned" : 0,
                "executionTimeMillis" : 835758,
                "totalKeysExamined" : 0,
                "totalDocsExamined" : 325981182,
                "executionStages" : {
                        "stage" : "COUNT",
                        "nReturned" : 0,
                        "executionTimeMillisEstimate" : 814353,
                        "works" : 325981184,
                        "advanced" : 0,
                        "needTime" : 325981183,
                        "needYield" : 0,
                        "saveState" : 2546769,
                        "restoreState" : 2546769,
                        "isEOF" : 1,
                        "invalidates" : 0,
                        "nCounted" : 280139059,
                        "nSkipped" : 0,
                        "inputStage" : {
                                "stage" : "COLLSCAN",
                                "filter" : {
                                        "$and" : [
                                                {
                                                        "$nor" : [
                                                                {
                                                                        "date_added" : {
                                                                                "$eq" : ""
                                                                        }
                                                                }
                                                        ]
                                                },
                                                {
                                                        "date_added" : {
                                                                "$type" : [
                                                                        2
                                                                ]
                                                        }
                                                }
                                        ]
                                },
                                "nReturned" : 280139059,
                                "executionTimeMillisEstimate" : 801643,
                                "works" : 325981184,
                                "advanced" : 280139059,
                                "needTime" : 45842124,
                                "needYield" : 0,
                                "saveState" : 2546769,
                                "restoreState" : 2546769,
                                "isEOF" : 1,
                                "invalidates" : 0,
                                "direction" : "forward",
                                "docsExamined" : 325981182
                        }
                }
        },
        "serverInfo" : {
                "host" : "ip-10-0-0-11",
                "port" : 27017,
                "version" : "3.6.18",
                "gitVersion" : "2005f25eed7ed88fa698d9b800fe536bb0410ba4"
        },
        "ok" : 1
}

I've got a correction about Index. the date_added field above is an index. I've checked and made sure.

Could you please, let me know how to increase socketTimeoutMS from 300 seconds to something else in PHP settings.

I've created a test server with a smaller database with the same PC configuration and weirdly enough, it's showing the exact error. As I mentioned before, this query was working fine in the main server before a few days earlier.

Also, after fixing this error, I'd like to take some professional advice as consultancy (paid) from you, if you are interested.

Thanks in advance.

Looking at the MongoDB shell's output, I see "executionTimeMillis" : 835758. That figure definitely exceeds the 300 second default in the PHP driver.
socketTimeoutMS is a connection string option, so you can either specify it in the connection string directly (e.g. mongodb://example.com/?socketTimeoutMS=123456) or via the second options array parameter to the Manager or Client constructors. See Client::__construct() docs, which describe how to specify options. That page references Manager::__construct() for docs on the supported options themselves to avoid duplication, since they are all implemented in the base extension (apart from typeMap, which is something supported in the Client constructor's third parameter).
That said, the query is only dealing with the date_added field, so I think the best course of action would be to create an index on that field. This should avoid the need to do a very expensive collection scan in favor of an index scan, which would hopefully all be in memory. Ultimately, this could reduce the execution time from 800+ seconds down to just a few seconds (if that).
Lastly, I don't have any availability for side work, but MongoDB definitely offers consulting services and could deal with analyzing an existing applications and making performance/schema recommendations. Please see https://www.mongodb.com/products/consulting if you're interested in pursuing that.

@jmikola Thank you very much for your time and help. I really appreciated it.
I've been able to fix this issue by setting executionTimeMillis in the options. That's really awesome :)
Again, thanks for your awesome help.
Regards,
Ahmed


[CALCITE-489] Teach CalciteAssert to respect multiple settings, use lex=JAVA in README.md for brevity

Nice work. Once you've fixed a few review comments, +1 to check in.


Performance issue with batching

System Info
x86_64, Debian 11, L4 GPU
Who can help?
No response
Information

[x] The official example scripts
[ ] My own modified scripts

Tasks

[ ] An officially supported task in the examples folder (such as GLUE/SQuAD, ...)
[ ] My own task or dataset (give details below)

Reproduction

Install tensorrt_llm 0.13.0
Build an llama3.1 8b engine with trtllm-build

trtllm-build --checkpoint_dir ./tllm_checkpoint_1gpu_int4_awq --output_dir ./tmp/llama/8B/trt_engines/int4_awq/1-gpu  --gpt_attention_plugin auto  --gemm_plugin auto  --max_num_tokens 32768 --max_batch_size 8 --logits_dtype=float32

Create a input.text file with batch_size=1.
Run benchmark

python3 TensorRT-LLM/examples/run.py --engine_dir=./tmp/llama/8B/trt_engines/int4_awq/1-gpu --max_output_len 1 --run_profiling --tokenizer_dir ./llama-3.1-8b-probability-finetuned --max_input_length=100000 --input_file input.text

Modify input.text and make it batch size = 2/4/8
Rerun benchmark for each batch size

Expected behavior
The latency shouldn't increase linearly with batch size, which means batch_size=2 shouldn't be 2x slower than batch_size=1.
actual behavior
The latency increase linearly with batch size.
batch_size: 1, avg latency of 1 iterations: : 0.5734167098999023 sec

batch_size: 2, avg latency of 1 iterations: : 1.1703827381134033 sec

batch_size: 4, avg latency of 1 iterations: : 2.7013044357299805 sec

additional notes
This bug makes TRT-LLM totally unusable in production, so please treat it as P0

@ShuaiShao93 Could you try to use the latest version of Trt-LLM?

I just tried 0.14.0 and it's still the same

@ShuaiShao93 could you test the performance using benchmark in the folder benchmarks?

@ShuaiShao93 could you test the performance using benchmark in the folder benchmarks?

Sure. Just ran this again on L4 with newest version 0.15.0
$ python TensorRT-LLM/benchmarks/python/benchmark.py -m dec --engine_dir ./tmp/llama/8B/trt_engines/int4_awq/1-gpu/  --batch_size "1;2;4" --input_output_len "600,1"

[TensorRT-LLM] TensorRT-LLM version: 0.15.0
Allocated 12513.68 MiB for execution context memory.
/opt/conda/lib/python3.10/site-packages/torch/nested/__init__.py:226: UserWarning: The PyTorch API of nested tensors is in prototype stage and will change in the near future. (Triggered internally at ../aten/src/ATen/NestedTensorImpl.cpp:178.)
  return _nested.nested_tensor(
[TensorRT-LLM] TensorRT-LLM version: 0.15.0
[BENCHMARK] engine_dir 1-gpu world_size 1 num_heads 32 num_kv_heads 8 num_layers 32 hidden_size 4096 vocab_size 128256 precision float16 batch_size 1 gpu_weights_percent 1.0 input_length 600 output_length 1 gpu_peak_mem(gb) 18.002 build_time(s) None tokens_per_sec 5.55 percentile95(ms) 182.971 percentile99(ms) 184.105 latency(ms) 180.119 compute_cap sm89 quantization QuantMode.PER_GROUP|INT4_WEIGHTS generation_time(ms) 0.041 total_generated_tokens 0.0 generation_tokens_per_second 0.0
[TensorRT-LLM] TensorRT-LLM version: 0.15.0
[BENCHMARK] engine_dir 1-gpu world_size 1 num_heads 32 num_kv_heads 8 num_layers 32 hidden_size 4096 vocab_size 128256 precision float16 batch_size 2 gpu_weights_percent 1.0 input_length 600 output_length 1 gpu_peak_mem(gb) 18.08 build_time(s) None tokens_per_sec 5.73 percentile95(ms) 351.315 percentile99(ms) 356.232 latency(ms) 349.315 compute_cap sm89 quantization QuantMode.PER_GROUP|INT4_WEIGHTS generation_time(ms) 0.043 total_generated_tokens 0.0 generation_tokens_per_second 0.0
[TensorRT-LLM] TensorRT-LLM version: 0.15.0
[BENCHMARK] engine_dir 1-gpu world_size 1 num_heads 32 num_kv_heads 8 num_layers 32 hidden_size 4096 vocab_size 128256 precision float16 batch_size 4 gpu_weights_percent 1.0 input_length 600 output_length 1 gpu_peak_mem(gb) 18.256 build_time(s) None tokens_per_sec 5.83 percentile95(ms) 693.707 percentile99(ms) 694.556 latency(ms) 685.958 compute_cap sm89 quantization QuantMode.PER_GROUP|INT4_WEIGHTS generation_time(ms) 0.044 total_generated_tokens 0.0 generation_tokens_per_second 0.0

We can see the P95 latency for batch size 1,2,4 are 182.971, 351.315, 693.707. Still almost linearly increasing.


Log response

Log the response object when the HTTP call to consulate fails.
Remove 'Definition' from the response.
Omit 'Output', 'Notes', 'ServiceTags', 'CreateIndex', and 'ModifyIndex' from the response when they are empty

Pull Request Test Coverage Report for Build 97

6 of 8 (75.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.3%) to 93.4%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

server/server.go
6
8
75.0%

Totals

Change from base Build 92:
-0.3%

Covered Lines:
467

Relevant Lines:
500

💛  - Coveralls


reversed column container with inverse on Infinite Scroll component calls next on scrollTop=0

Description
For the most part, the component works excellent and as expected.
I'm making a chat application as exercise, so I have the inversed option on.
My scrollable container (the immediate parent of InfiniteScroll component) has flex and direction of column-reverse.
The problem
As can be seen below on the right side, after I scroll a bit to the top, and then scroll back down (scrollTop=0) I'm unintentionally fetching the next page of data.

when I simply check for non-0 scrollTop before calling the API it just keeps the loading indicator stuck on top of the page and  the component does not make any further calls to the backend.
I would love some insight.
Thanks to any helpers!

I managed to fix my issue.
first have a look at the returned JSX where the InfiniteScroll lays.
    <Flex
      id="scrollableDiv"
      direction="column-reverse"
      flexGrow={1}
      overflow="auto"
      ref={scrollable}
    >
      <NewMessages
        channel={channel}
        cursor={
          messages.length > 0 ? messages[messages.length - 1].createdAt : ''
        }
      />
      <InfiniteScroll
        dataLength={messages.length}
        next={() => fetchMoreData()}
        style={{ display: 'flex', flexDirection: 'column-reverse' }} //To put endMessage and loader to the top.
        inverse={true}
        hasMore={hasMore ? hasMore : false}
        loader={
Loading...
}
        scrollableTarget="scrollableDiv"
        scrollThreshold={'555px'}
        initialScrollY={0}
      >
        <List w="100%">
          <ListItem textAlign="center">
            {hasMore ? null : (
              <Box color="#6f819b" textAlign="center">
                Chat began here..
              </Box>
            )}
          </ListItem>
          {messages.map((message, i) => (
            <Box key={message.id}>
              <MessageItem
                message={message}
                isNotSameUserAsLast={
                  i === 0 || messages[i - 1].user.id !== messages[i].user.id
                }
              />
            </Box>
          ))}
        </List>
      </InfiniteScroll>
    </Flex>

The default position of scrollTop was 0 and when scrolling up it would decrease into negatives.
when scrolling up and down again to 0, fetch would fire, which is not expected.
I found the following code inside index.es.js:
if (threshold.unit === ThresholdUnits.Pixel) {
            return (target.scrollTop <=
                threshold.value + clientHeight - target.scrollHeight + 1 ||
                target.scrollTop === 0);
}

if anyone else has the problem I had, just remove the or condition like so:
if (threshold.unit === ThresholdUnits.Pixel) {
            return (target.scrollTop <= threshold.value + clientHeight - target.scrollHeight + 1);
}

Closable.

I managed to fix my issue.
first have a look at the returned JSX where the InfiniteScroll lays.
    <Flex
      id="scrollableDiv"
      direction="column-reverse"
      flexGrow={1}
      overflow="auto"
      ref={scrollable}
    >
      <NewMessages
        channel={channel}
        cursor={
          messages.length > 0 ? messages[messages.length - 1].createdAt : ''
        }
      />
      <InfiniteScroll
        dataLength={messages.length}
        next={() => fetchMoreData()}
        style={{ display: 'flex', flexDirection: 'column-reverse' }} //To put endMessage and loader to the top.
        inverse={true}
        hasMore={hasMore ? hasMore : false}
        loader={
Loading...
}
        scrollableTarget="scrollableDiv"
        scrollThreshold={'555px'}
        initialScrollY={0}
      >
        <List w="100%">
          <ListItem textAlign="center">
            {hasMore ? null : (
              <Box color="#6f819b" textAlign="center">
                Chat began here..
              </Box>
            )}
          </ListItem>
          {messages.map((message, i) => (
            <Box key={message.id}>
              <MessageItem
                message={message}
                isNotSameUserAsLast={
                  i === 0 || messages[i - 1].user.id !== messages[i].user.id
                }
              />
            </Box>
          ))}
        </List>
      </InfiniteScroll>
    </Flex>

The default position of scrollTop was 0 and when scrolling up it would decrease into negatives.
when scrolling up and down again to 0, fetch would fire, which is not expected.
I found the following code inside index.es.js:
if (threshold.unit === ThresholdUnits.Pixel) {
            return (target.scrollTop <=
                threshold.value + clientHeight - target.scrollHeight + 1 ||
                target.scrollTop === 0);
}

if anyone else has the problem I had, just remove the or condition like so:
if (threshold.unit === ThresholdUnits.Pixel) {
            return (target.scrollTop <= threshold.value + clientHeight - target.scrollHeight + 1);
}

Closable.


MemberSHPE link fix

This doesn't fix the issue of using TouchableOpacity elements for hyperlinks, but it does fix hyperlinks working in the first place. Please test if this works on iOS.

works on ios. feel free to merge


Modal Dialog not opening when using Asp.Net Core 2 Angular SPA Template

Hi:
I'm heavily using clarity suite and I want to integrate it with the new Angular Spa Template in DotnetCore 2. I've created a sample app I want to share for troubleshooting purposes. I've got through a lot of hoops, but now I can't figure this one out. When I click on the button, the modal doesn't open.
https://github.com/luis-cortina/AspNetCoreAppTemplate/tree/feature/adding-clarityng
Please help?
Luis

@youdz
Do you know of someone on the team who might be able to help figure this out?

Hi @luis-cortina, unfortunately none of us in the team have any experience with using ASP.NET to build SPA apps. Hoping maybe someone in the community has some experiences and will respond to you here.
But I did see a thread on Stack Overflow, which seems to suggest that others are experiencing issues with Angular two-way binding in ASP.NET:
https://stackoverflow.com/questions/44465072/ngmodel-2-way-data-binding-not-working-with-visual-studio-2017-angular-2-single
Unfortunately there isn't an accepted answer, but maybe you can try the suggested answers to see if either would help resolve your problem?

Import ClarityModule in AppModuleShared instead or
Break up the two-way binding by doing the below.

Change:
<clr-modal [(clrModalOpen)]="closable" [clrModalClosable]="false">
   ...
</clr-modal>

To:
<clr-modal [clrModalOpen]="closable" (clrModalOpenChange)="$event.value" [clrModalClosable]="false">
   ...
</clr-modal>

That didn't do the trick. I try using model binding and worked correctly, so it doesn't look like that's the issue.
I saw in the docs there's an explicit open() method for the modal. How do I get the ref from the modal to open it?
Any other tips on how to debug this? I already checked and the required js is being loaded.
Thanks,
Luis

To grab the ref from the wizard you usually do something like this...
<clr-wizard #yourRefHere ...>
...and then in your host component you have something like this...
@Component {
  ...
}
class yourHostComponentThatHasTheWizardInItsTemplate {
  ...
  @ContentChild("yourRefHere") thisIsYourWizard;
  ...
  // then later in your code you would call
  this.thisIsYourWizard.open();
}

This is pretty basic Angular stuff. You can read more on their docs.
https://angular.io/guide/template-syntax#template-reference-variables--var-

Actually, in @mathisscott's answer, replace @ContentChild("yourRefHere") by @ViewChild("yourRefHere"). The modal is in the view of your component, not projected into it. But he's right, that's the main way to grab a reference to the modal.

What do you mean? It says ViewChild already. 😝

Hi guys, you're awesome, this one was my mistake.
It turns out this template comes with bootstrap pre-bundled in the webpack.vendor.config,js, and those styles were messing with the clarity ones. I removed it and it works fine now.
Since I still plan to use that combo (Clarity+Ng2+AspNetCore), I'm going to keep that repo alive so poeple can use it as reference if they want.
Thanks,
Luis


Incorrect handling of filename* in Content-Disposition header causes a double quote to appear at the end of a non-ASCII file name

Issue Description
When uploading a file from Postman, if the file name contains non-ascii characters, a double quote will be appended at the end of it. Such issue doesn't happen if the file is uploaded from a web-form or using a CLI tool.

Ref: https://github.com/postmanlabs/postman-app-support/issues/8537
Expected Behavior
File name will remain unchanged (red circle) as when I uploaded it from a web-form, or using a CLI tool (cURL, httpie)
Actual Behavior
A double quote symbol got appended to the file name (blue circle).
Source code
from flask import Flask, request

app = Flask(__name__)

@app.route("/", methods=["POST"])
def upload_file():
    print("request.files:", request.files)
    return ""

if __name__ == "__main__":
    app.run(host="<IP_ADDRESS>", port=4444)

Environment

Python version: 3.6, 3.7 and 3.8
Flask version: 1.1.2
Werkzeug version: 1.0.1

Thanks for reporting this. Based on the referenced Postman issue, the problem is caused by incorrect handling of filename*=... (without following that link it isn’t clear from the issue description that this isn’t a bug in Postman).

Thanks, I've changed the title and add more description.

Actually, I think it is a bug in postman. Looking at the example given in the postman bug report:
Content-Disposition: form-data; name="file"; filename="你好.xlsx"; filename*="UTF-8''%E4%BD%A0%E5%A5%BD.xlsx"

And looking at the relevant RFCs (https://tools.ietf.org/html/rfc6266 & https://tools.ietf.org/html/rfc5987), I notice that filename*= does not support quoted-string values -- only percent-encoding -- whereas the example combines both. When removing the non-RFC-compliant quotes, the example seems to work just fine with flask:
Content-Disposition: form-data; name="file"; filename="你好.xlsx"; filename*=UTF-8''%E4%BD%A0%E5%A5%BD.xlsx

Thanks @obfusk! @obfusk please report this back to Postman. Closing this issue out. If Flask (Werkzeug) is being less tolerant of non-spec-compliant input compared to other widely used HTTP parsers , maybe we can reconsider accepting a PR for this (and feel free to let us know whether you can reproduce this with Postman hitting other stacks). But the fact that Flask has been used by lots of international sites for many years presumably without this coming up until now suggests we’re probably okay leaving the current behavior as-is?


docker langflow ver1.0.15 not working

not gonna start project, app does work

@tdhd3 you can use latest tag until https://github.com/langflow-ai/langflow/issues/3321 is resolved

#3321
PR #3455


High memory cost and slow performance

Hi Johnson, thanks for this fantastic extension!
However, there are many users complaining about the slow performance and high memory cost. I also get this problem.
I know it is busy for you to maintain this project, so this issue is a tracker for this problem only. If you don't have much time on it, I can debug and fix this issue gradually (or post some information).
Thanks again!

The ESLint extension is slow with language-tools 🤔

Ah, thanks. Actually, volar is quite fast when use it standalone 😃

Thanks for confirming that, I saw that your issue was related to ESLint so linked it, if your high memory usage is still an issue you can open a new issue.


Tier1 icon mass import

I added the rtl attribute where i thought appropriate.  I left it off the up,down, left, right icons on purpose.  I'm not entirely sure how they will be used and i'm not sure that they always are mirrored.
If these look good i'll update the read me in my next pull request instructing how to do a mass update with svgo cli.

@dbatiste This look good? Just want to double-check with somebody who knows this repo :)

@dlockhart I confirmed some of the icons with Sarah and split out the emojis.  Would you like another pass through before i merge these into master?

@ctwomey1 your changes look great, I think this is ready!


[BUG] Process terminated while extracting features from filtered image

Describe the bug
I am trying to extract features using different filters from 3D PET images with 3D ROIs.
With the wavelet and LBP3D filters the process terminated with the following code : Process finished with exit code -1073740940 (0xC0000374). Usually I see this kind of errors when I haven't enough memory but I tracked my memory and 15GB were still free when the process terminated.
I also have the following error with LoG filter (sigma = [0.5, 1, 2, 3, 5]) but it might more be a wrongful use than a bug : IndexError: boolean index did not match indexed array along dimension 1; dimension is 1 but corresponding boolean dimension is 2 and Process finished with exit code -1073741819 (0xC0000005)
PyRadiomics configuration
radiomics.imageoperations.getBinEdges = IBSI_binning # from issue 498
im_spacing = np.array([ROI.GetSpacing()[0]] * 3)
image, ROI = IBSI_resampling(image, ROI, resampledPixelSpacing=im_spacing,
                                                 interpolator=sitk.sitkBSpline) # from issue 498
label_stats.Execute(image, ROI)
settings = {'resegmentRange': [0., label_stats.GetMaximum(label)], 'resegmentMode': 'absolute',
                  'binWidth': binSize, 'weightingNorm': 'no_weighting'}
extractor = featureextractor.RadiomicsFeatureExtractor(**settings)
imagetype_dic = {'Original': None,
                             'Wavelet': None,
                             'LoG': {'sigma': [0.5, 1, 2, 3, 5]},
                             'Square': None,
                             'SquareRoot': None,
                             'Logarithm': None,
                             'Exponential': None,
                             'Gradient': None,
                             'LBP3D': None}
for imagetype in imagetype_dic:
    extractor.enableImageTypeByName(imagetype, customArgs=imagetype_dic[imagetype])
results_dic = extractor.execute(image, ROI)

PyRadiomics log file
testLog_wavelet.txt
testLog_Log.txt
testLog_LBP3D.txt
Version (please complete the following information):

OS: Windows
Python version: 3.7.4
PyRadiomics version 2.2.0

Thanks for you help and feel free to ask for more information if needed

@TimZaragori, thanks for reporting this, I will investigate. The return code and error you are describing suggests it is failing somewhere in the C-extensions of PyRadiomics (causing a process termination instead of gracefull raising a RuntimeError.
What happens when you pass the image and ROI to the regular PyRadiomics (i.e. without using the IBSI drop-ins?)

And what happens if you use the IBSI-resampling drop in as a drop in, without applying it outside of the feature extractor? (i.e. setting radiomics.imageoperations.resampleImage = IBSI_resampling, following #498)

@JoostJM By commenting the first line, so without using IBSI_binning, I don't get error anymore.
When I apply the resampling as a setting of the extractor it doesn't seem to change the behavior (if  IBSI_binning is on I got errors, else it's ok)

@TimZaragori, thanks for the details! I'll get on it.
Can you share the image/mask that gives you the error for me to play with?

Can you send me an email<EMAIL_ADDRESS>? Since we are dealing with patient data, prefer to share it in this way

@TimZaragori, I found the cause of the problem. In IBSI binning a fixed lower bound for the bin edges is used if you define an absolute resegmentation range. For non-filtered images, this poses no problem, as voxels outside that range are excluded anyway. However, applying a filter results in different gray values, and resegmentation is not re-applied to these filtered images. Therefore, applying some filters can lead to voxels falling outside the defined range of bins, causing them to be discretized to "0". This is an invalid value for gray level and causes an index error in the calculation of texture matrices (e.g. for GLSZM, correct index in matrix is calculated as (i, j) = (grayvalue - 1, region size), which in case of gray value 0 results in index -1, which is invalid).
In my case, this resulted in a graceful error where an IndexError is raised, but this was most likely because the datatype for the index is size_t, which does not allow for negative indices and therefore results in an overflow, which on the subsequent check is then indeed larger than the maximum allowed index (which is checked). In your case, I assume size_t datatype does allow for negative values and therefore passes the maximum index check and subsequently fails with a Process terminated.
I will add a bugfix to ensure grayvalue 0 fails gracefully in matrix calculation. For your specific case, I added a little check in the IBSI binning function to prevent this error (it logs a warning when this fix kicks in). Below is a python script which mimics the PyRadiomics command line, but uses IBSI binning and resampling instead of the corresponding regular PyRadiomics functions. You can use this script just like you would use the PyRadiomics command line, i.e. python <script.py> <image.nrrd> <mask.nrrd> -p <params.yaml> instead of pyradiomics <image.nrrd> <mask.nrrd> -p <params.yaml>:
#!/usr/bin/env python
import logging

import numpy as np
import SimpleITK as sitk
import six

import radiomics
from radiomics.scripts import parse_args

def IBSI_binning(parameterValues, **kwargs):
  ibsiLogger = logging.getLogger('radiomics.ibsi')

  binWidth = kwargs.get('binWidth', 25)
  binCount = kwargs.get('binCount')
  resegmentRange = kwargs.get('resegmentRange')
  resegmentMode = kwargs.get('resegmentMode', 'absolute')

  if binCount is not None:
    binEdges = np.histogram(parameterValues, binCount)[1]
    binEdges[-1] += 1  # Ensures that the maximum value is included in the topmost bin when using numpy.digitize
  else:
    minimum = min(parameterValues)
    maximum = max(parameterValues)

    # Start binning form the first value lesser than or equal to the minimum value and evenly dividable by binwidth
    lowBound = minimum - (minimum % binWidth)
    # Add + 2* binwidth to ensure the maximum value is included in the range generated by numpy.arange, and that values
    # equal to highbound are binned into a separate bin by numpy.histogram (This ensures ALL bins are half open, as
    # numpy.histogram treats the last bin as a closed interval. Moreover, this ensures consistency with numpy.digitize,
    # which will assign len(bins) + 1 to values equal to rightmost bin edge, treating all bins as half-open)
    highBound = maximum + 2 * binWidth

    # #####################################
    # IBSI difference
    # #####################################
    if resegmentRange is not None:
      if resegmentMode == 'absolute':
      	resegment_min = min(resegmentRange)
      	if resegment_min > lowBound:
      		ibsiLogger.warning('lower bound of resegment range (%-.3g) lower than found minimum (%-.3g), using found minimum', resegment_min, lowBound)
      	else:
        	lowBound = min(resegmentRange)
      elif resegmentMode == 'sigma':
        lowBound = minimum
    # #####################################

    binEdges = np.arange(lowBound, highBound, binWidth)

    # if min(parameterValues) % binWidth = 0 and min(parameterValues) = max(parameterValues), binEdges will only contain
    # 1 value. If this is the case (flat region) ensure that numpy.histogram creates 1 bin (requires 2 edges). For
    # numpy.histogram, a binCount (1) would also suffice, however, this is not accepted by numpy.digitize, which also uses
    # binEdges calculated by this function.
    if len(binEdges) == 1:  # Flat region, ensure that there is 1 bin
      binEdges = [binEdges[0] - .5, binEdges[0] + .5]  # Simulates binEdges returned by numpy.histogram if bins = 1

    ibsiLogger.debug('Calculated %d bins for bin width %g with edges: %s)', len(binEdges) - 1, binWidth, binEdges)

  return binEdges  # numpy.histogram(parameterValues, bins=binedges)

def IBSI_resampling(image, mask, **kwargs):
  ibsiLogger = logging.getLogger('radiomics.ibsi')
  # resample image to new spacing, align centers of both resampling grids.
  spacing = kwargs.get('resampledPixelSpacing')
  grayValuePrecision = kwargs.get('grayValuePrecision')
  interpolator = kwargs.get('interpolator', sitk.sitkLinear)

  try:
    if isinstance(interpolator, six.string_types):
      interpolator = getattr(sitk, interpolator)
  except Exception:
    ibsiLogger.warning('interpolator "%s" not recognized, using sitkLinear', interpolator)
    interpolator = sitk.sitkLinear

  im_spacing = np.array(image.GetSpacing(), dtype='float')
  im_size = np.array(image.GetSize(), dtype='float')

  spacing = np.where(np.array(spacing) == 0, im_spacing, spacing)

  spacingRatio = im_spacing / spacing
  newSize = np.ceil(im_size * spacingRatio)

  # Calculate center in real-world coordinates
  im_center = image.TransformContinuousIndexToPhysicalPoint((im_size - 1) / 2)

  new_origin = tuple(np.array(image.GetOrigin()) + 0.5 * ((im_size - 1) * im_spacing - (newSize - 1) * spacing))

  ibsiLogger.info('Resampling from %s to %s (size %s to %s), aligning Centers', im_spacing, spacing, im_size, newSize)

  rif = sitk.ResampleImageFilter()
  rif.SetOutputOrigin(new_origin)
  rif.SetSize(np.array(newSize, dtype='int').tolist())
  rif.SetOutputDirection(image.GetDirection())
  rif.SetOutputSpacing(spacing)

  rif.SetOutputPixelType(sitk.sitkFloat32)
  rif.SetInterpolator(interpolator)
  res_im = rif.Execute(sitk.Cast(image, sitk.sitkFloat32))

  # Round to n decimals (0 = to nearest integer)
  if grayValuePrecision is not None:
    ibsiLogger.debug('Rounding Image Gray values to %d decimals', grayValuePrecision)
    im_arr = sitk.GetArrayFromImage(res_im)
    im_arr = np.round(im_arr, grayValuePrecision)
    round_im = sitk.GetImageFromArray(im_arr)
    round_im.CopyInformation(res_im)
    res_im = round_im

  # Sanity check: Compare Centers!
  new_center = res_im.TransformContinuousIndexToPhysicalPoint((newSize - 1) / 2)
  ibsiLogger.debug("diff centers: %s" % np.abs(np.array(im_center) - np.array(new_center)))

  rif.SetOutputPixelType(sitk.sitkFloat32)
  rif.SetInterpolator(sitk.sitkLinear)
  res_ma = rif.Execute(sitk.Cast(mask, sitk.sitkFloat32))
  res_ma = sitk.BinaryThreshold(res_ma, lowerThreshold=0.5)

  return res_im, res_ma

if __name__ == "__main__":
  radiomics.imageoperations.getBinEdges = IBSI_binning
  radiomics.imageoperations.resampleImage = IBSI_resampling
  parse_args()

@JoostJM Thanks for investigating this and the detailed answer.
Indeed, it seems quite logic we can't keep the same resegmentation range as the non-filtered images. I should have thought about it sorry. However, I don't see how we can keep the same behavior with filtered image, i.e. the same lower bound for every patients since (as far as I understood) it will allow similar values across different patients to go in the same bin. Or for filtered images, it is not the behavior we want and Fixed bin number is more interesting?
If I set the lower bound to the minimum in the ROI, this minimum will be patient dependent. An option could be to locate a voxel with the minimum we want on non-filtered image (in my case where I have PET images it will be 0 and I can get it in the background) and then look at the same voxel in filtered image to get its value. Even though I am not used to all these filters and their mathematical definitions I am pretty sure it won't work for all filters, e.g. wavelet filters for example. It will work for Square,
Square Root, Logarithm and Exponential.
Do you think it is possible to use the mathematical definitions of these filters and prior on the images used (possible range of values in the voxels according to type of image) to find an appropriate minimum in each case ?

Hi @TimZaragori, that's a very good question. The implementation/solution is not very straightforward, as it is more on the interpretation of what constitutes good practice in radiomic feature extraction. While there is something to be said for have more or less comparable bin ranges between patients, stuff like filters tends to make it a more difficult problem.
Even looking at the minimum value will not help, as it is no guarantee that this will also be the minimum intensity in the filter (even in a simple such as "absolute" filter). This is also why PyRadiomics doesn't have this fixed range implemented in the master. What PyRadiomics does do is ensure that the bins are aligned with 0 (I.e. the modulus of the edges will be 0). This enforces at least some similarity in the bins.
What is also important to consider here is that the discretized images are used in features that are less concerned in magnitude of the intensity and more in contrast between (neighboring) voxels. In the latter case it doesn't matter if the same intensities are discretized to different bins between patients, so long as the difference between 2 bins retains the same meaning/contrast (hence why we advise fixed bin width). In fact, many GLCM features are even insensitive to the offset of the discretized gray values (the only change you'll effectively get with the fixed bin range).
Anyway, those are my current views on the subject, though I wholeheartedly agree that this is an interesting topic which should be discussed in length. It may be a good idea to also brach this subject on IBSI's forum on Google groups.


Speed up webpack compile time

Hi Andrew,
First of all. Loving the package. It gave us a great kick-off for Craft CMS in Docker.
All is running great except the speed of the webpack compile proces. It takes at least 15 seconds on every change.
I can't imagin you can work like that so i'm probably missing something. I already gave docker more cpu (6) en more memory (8 GB) . But the result is the same. Some Googling led me too setting the volumes to cached/delegated but you've already set that in the package.
Do you have any other ideas?

I don't have an answer for you without significantly more information, but 15 seconds is a very long time. It should only be a few seconds in general.
I will say that Tailwind is quite slow at rebuilding, if it's CSS that you're changing. If it's JavaScript, it should HMR nicely.


fix(base64): disable base64 utils injections by default

Related issue: #13

 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.


Steps

Hey,
Had a couple of questions-

Does our pull request have to be accepted?
After open a PR, what's the next step? :)

I don't know if Microsoft will have different rules but, FWIW, official Hacktoberfest rules are that you must submit the pull requests -- they do not need to be accepted.

Yeah, I've been wanting to clarify that, I'm familiar with Hacktoberfest rules, not sure about the Microsoft section though

See my PR for the official rules on how to participate in Microsoft's own t-shirt giveaway. #9

Thanks @crweiner !

@thecodingaviator No problem!
Just to make things crystal clear, after you submit the PR you need to fill out their form here:
https://aka.ms/hacktoberfestshirt
They will email a special code and ordering instructions sometime at a later date. See #9 and the link I posted yesterday for the full details.


Couldn't run botfront on Ubuntu 16.04

I installed botfront using "npm install -g botfront", but I'm trying to start botfront using "botfront" cmd in the terminal and command not found msg is coming

I think this might be related to the fact you're installing with sudo.
For some reason, the link is not done correctly.
I guess you can still use the full path (line 2 in your screenshot)

Hi, if you have to use npm with sudo, it's probably that something in your installation of node is broken. Even if you use the full path, it probably has right only for root user.
Refer to this documentation on npm website to fix your node installation :
https://docs.npmjs.com/common-errors#resolving-eacces-permissions-errors-when-installing-packages-globally


DB drivers autoupdate

I think would be good point to add ability for autoupdate used DB drivers. Currently update drive possible only from driver properties.

Duplicate of #199


refactor!: strict configuration of app settings

Changes
Configure app settings using the app_settings argument for the azurerm_linux_web_app.this and azurerm_windows_web_app.this resources, instead of creating the azapi_update_resource.app_settings resource. This ensures that app settings configured outside of Terraform are removed, which prevents config drift. If app settings are to be configured outside of Terraform, you should use the Azure App Configuration service instead.
This is also a prerequisite for #166.
Breaking changes

Remove ignore changes for azurerm_linux_web_app.this.app_settings and azurerm_windows_web_app.this.app_settings. To migrate your project, configure app settings for your web app using the app_settings variable.

Checklist

[x] I've updated both the azurerm_linux_web_app and azurerm_windows_web_app resources.

TestVnetIntegrationExample currently fails. Investigating.

Tests pass 🎉


Every Tuesday at 5am central, send email

Using current SendGrid integration, send an HTML email of the news stories added in the last 14 days, and include the next 30 days of events.

@kentonh  How do you want to handle the scheduling of emails: with a background processor like delayed_job, rescue, sidekiq or just a cron job with a rake task ( whenever would be a good fit)  ?

I think Whenever looks like a good fit.

No one is working on this currently.


source(here(code_dir, "utils.R"))

Dear Brian, When I run get_vimp.R, I have the following error at the beginning. Can you help me with that? Thank you!
library("SuperLearner")
library("dplyr")
library("argparse")
library("here")
lib_paths <- .libPaths()
require<EMAIL_ADDRESS>or higher
if (is.na(Sys.getenv("RSTUDIO", unset = NA))) {
library("vimp", lib.loc = lib_paths[2])
code_dir <- ""
} else {
library("vimp")
code_dir <- "code"
}

source(here(code_dir, "utils.R"))

Error in file(filename, "r", encoding = encoding) :
cannot open the connection
In addition: Warning message:
In file(filename, "r", encoding = encoding) :
cannot open file '/Users/min/Documents/VarPro/code/utils.R': No such file or directory

Thanks for catching this typo -- I hadn't updated some of the directory structure in this repo to match the initial repo I used to run the code.
You'll want to make sure you're running this code (e.g., if you are using an R project) from within vimp_supplementary so that here can find the appropriate files.
This should be fixed in #e96370b, but let me know if you have further issues


Update delayInHours min value in codePush decorator

Issue: https://github.com/MicrosoftDocs/appcenter-docs/issues/1517/

#sign-off

I was told via support that you can set this as low as 1/60, was that not correct then?

You are right, the value of this parameter may be float number. I'll fix this in the documentation. Thank you for your attention!


Add database map and dump functions

I think

you shouldn't modify my python scripts with your format.
modal.py may be a spelling mistake, it should be models.py?

Actually, it is not my format, it's PEP8 style. model is a spelling mistake.


error TS2304: Cannot find name 'object' when using checkJs

TypeScript Version:  2.4.1
Code

tsconfig.json

{
  "compilerOptions": {
    "target": "es6",
    "module": "commonjs",
    "allowJs": true,
    "checkJs": true,
    "noEmit": true,
    "maxNodeModuleJsDepth": 0
  },
  "exclude": [
    "node_modules"
  ]
}

package.json

{
  "name": "ts-object-test",
  "version": "0.1.0",
  "description": "Typescript object test",
  "main": "lib/index.js",
  "scripts": {
    "start": "node lib/index",
    "check": "node_modules/.bin/tsc"
  },
  "devDependencies": {
    "@types/node": "^6.0.72",
    "typescript": "^2.4.1"
  }
}

lib/index.js

const util = require('util')

/**
 * Pretty-print an object
 *
 * @param {object} obj - The object to pretty print
 * @returns {void}
 */
function prettyPrint (obj) {
  console.log(util.inspect(obj))
}

prettyPrint({a: 'b'})

CLI

npm install
npm run check

Expected behavior:
Type checking reports no error
Actual behavior:
Type checking reports lib/index.js(6,12): error TS2304: Cannot find name 'object'.
Note that when using typescript 2.3, type checking behaves as expected.

I know boolean and string and number are primitives with corresponding capitalized boxed objects, but I didn't think that (little-"o") object was a primitive.  Does object (little-"o") actually exist?

It was introduced in TypeScript 2.2.


system memory usage increase surprisingly with headless chrome

Steps to reproduce
Tell us about your environment:

Puppeteer version<EMAIL_ADDRESS>Platform / OS version: Linux/CentOS 7.5.1804
Node.js version: v8.11.3

What steps will reproduce the problem?
Please include code that reproduces the issue.
1.launch 16 chromes
2.160 node processes connect 16 chromes randomly, so, 10 node process connect/ per chrome
3.every node process:
(async() => {
    const browser = await puppeteer.connect({
        browserWSEndpoint: browseradd,
        ignoreHTTPSErrors: true,
    });
    const page = await browser.newPage();
    await page.goto(url,{timeout: 12000}).then( (value) => {
    }).catch( (error) => {
    });
    rlt['content'] = await page.content();
    console.log(JSON.stringify(rlt));
    page.close();
   process.exit();
})();

system memory usage increase surprisingly with time goes by. Only kill the main process can solve the problem

@lexy0093 Two things:

await page.close so that you have a fine control on the amount of opened pages
try using browser context per new page.

@lexy0093 Two things:

await page.close so that you have a fine control on the amount of opened pages
try using browser context per new page.

you mean reuse the same page?

@aslushnikov you mean reuse the same page? or how to use browser context per new page?

I mean - you don't await your page.close call - this might result in a huge pile of pages being used.

@aslushnikov Are you suggesting to reuse browser object to save memory? This piece of code is running in a RabbitMQ consumer. Launching & closing browser for each use could be demanding, imo.
      const browser = await puppeteer.launch({
         args: [
           // Required for Docker version of Puppeteer
           '--no-sandbox',
           '--disable-setuid-sandbox',
           // This will write shared memory files into /tmp instead of /dev/shm,
           // because Docker’s default for /dev/shm is 64MB
           '--disable-dev-shm-usage'
        ]
    });
    const page = await browser.newPage();
    await page.setViewport(VIEWPORT);
    console.log('going to', myUrl);

    await page.goto(myUrl, { waitUntil: 'networkidle0', timeout: 60000, });
    const buffer = await page.screenshot({ fullPage: true });
    await browser.close();

     // Play with buffer...


Check for captive portal

One student yesterday accidentally connected to the JMU-Visitors network, behind a captive portal. When the config utility was run, it displayed a "not a valid branch" message when trying to reach GitHub. If we add a check for the Mozilla/Microsoft captive portal service, or validate the certificate for GitHub, we may be able to display a more intuitive error message.

I definitely want to avoid the difficulty of x509 parsing. So the GitHub cert option is out.
detectportal.firefox.com is nice because if body == 'success' then you're good. Otherwise you're not. Of course, that has the concern that maybe there are privacy issue's with using Mozilla's service. If that's acceptable I'll implement using that. Otherwise, detectportal.jmunixusers.org could always be an option.

We found in troubleshooting this that Firefox immediately makes that request anyways, so I don't think adding it to our wrapper script opens any additional privacy concerns. I still do not want to run infrastructure to support this.


Add support for default values in single choice questions in survey

Jira issue:
https://glia.atlassian.net/browse/MOB-2747
What was solved?
Default values weren't selected automatically in surveys that showed a single option. With this change, a new defaultOption is added to the survey and used in case the selected value is not there. Now this works as it should, and how it works in Android.
The reason why a default option was added and the default value is not just set as the selected one, is because the question view starts with props, and the prop is either selected or not. However, the question view wouldn't know if an option is selected because of user input or because of the default value. If the view is selected because of user input, then opt.select(opt) needs to be executed only on user interaction, but in case of default value, it needs to be run automatically as soon as the view is presented. I don't know how to make this distinction without having the default value separately.
Also, a snapshot test was added to ensure that when there's a default value, it's selected correctly.
Release notes:

[ ] Feature
[ ] Ignore
[x] Release notes (Is it clear from the description here?)
[ ] Migration guide (If changes are needed for integrator already using the SDK - what needs to be communicated? Add underneath please)

Additional info:

[x] Tests fixed, added? Unit, acceptance, snapshots?
[ ] Logging necessary for future troubleshooting of customer issues added?

Screenshots:

!squash


Plugin has no Browser support?

I am getting the ERROR Error: Uncaught (in promise): Missing Command Error when trying to .login() while  running Cordova on a browser.
Does this plugin have no browser support?

Cordova plugins won't work on browser. Check by installing on a device or emulator.


tests pass locally...

Lol, okay, I know why it's segfaulting. Silly mistake; it'll only segfault if the script guesses you have a single physical core or 1 thread, which is the case on CI...

A few nit-picks and some added functions not covered by tests (see codecov). Otherwise fine.

Fixed. We should get this in for the 0.2.1 release.


Finally "Azure Smart Spaces" or "Azure Digital Twins"?

I'm a bit confused. In text- search for "Azure Smart Spaces" on a screenshot - "Azure Digital Twins".
Please, make this article consistent and either update text or screenshot. I personally can't find Azure Smart Spaces API in our AAD

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

ID: 49f053b4-ce1b-5019-3ee5-a821a19ab643
Version Independent ID: 11b963b1-e007-f488-8d32-63ea24b195f7
Content: How to configure Postman for Azure Digital Twins
Content Source: articles/digital-twins/how-to-configure-postman.md
Service: digital-twins
GitHub Login: @KingdomOfEnds
Microsoft Alias: v-adgera

@SychevIgor  Thanks for the feedback and bringing this to our notice . At this time we are reviewing the feedback and will update the document as appropriate .

Duplicate of https://github.com/MicrosoftDocs/azure-docs/issues/39736

@SychevIgor Thanks for the feedback! I have assigned the issue to the content author to evaluate and update as appropriate.

@SychevIgor - Thank you for pointing out an area for improvement. While we do describe two AAD API id's to grant authentication they were a little confusing. I've updated and improved our documentation in light of your observations. Thanks again!

@SychevIgor Can you confirm your feedback is being addressed by this PR?

@Alberto-Vega-MSFT I don't see the PR associated with this request. I guess @KingdomOfEnds will do it in azure-docs-pr repo and after merge private repo with public repo- we will see this PR.

@SychevIgor - These changes will go live later today. Thanks!

@SychevIgor , @Alberto-Vega-MSFT - I wanted to verify that the issue had been addressed. Thanks!


August endgame

Endgame Schedule

August 28, Code freeze for the endgame
September 1, Endgame done

Monday, August 28

[x] Code freeze at 5pm PT
[x] Ensure we have a green build on all platforms at 5pm PT
[x] All test items are created (with "complexity" but not necessarily with full description) by 11pm ZRH time (2pm PT)
[x] All test items contain comprehensive test descriptions by 10pm PT
Testers who cannot participate in testing check-off from list below:

[x] @aeschli
[x] @alexandrudima
[ ] @auchenberg
[x] @bpasero
[x] @chrisdias
[x] @chrmarti
[x] @dbaeumer
[x] @egamma
[x] @isidorn
[x] @joaomoreno
[x] @jrieken
[ ] @kieferrm
[x] @mjbvz
[x] @ramya-rao-a
[x] @rebornix
[x] @roblourens
[x] @sandy081
[x] @seanmcbreen
[x] @tyriar
[x] @weinand

Tuesday, August 29

[x] Test plan items assigned
[x] All closed feature-requests either have a verification-needed or on-testplan tag
[x] Testing
[x] Verification needed

Wednesday, August 30

[x] Remind team members to assign issues that they intend to fix to the August milestone
[x] Testing
[x] Fixing (self-assigned, milestone assigned)
[x] Verification needed
[x] Verification

Thursday, August 31

[x] Fixing last issues
[x] Verification needed
[x] Verification
[x] Run OSS tool after merging shrink-wrap findings endgame master

The LCA review of the ThirdPartyNotices.txt files is not needed anymore
do not forget to update the distro attribute in the package.json with the commit ID of the distro repo.

[x] Check new OSS usage is entered into the OSS registry endgame master

new modules

Friday, September 1

Satellite modules/npm packages ready, version updated, smoke tested

[x] vscode @bpasero
[ ] yo generator @aeschli
[x] vsce @joaomoreno
[x] node-debugadapter-node @weinand
[x] node-debug @weinand
[ ] node-debug2 @roblourens

[x] Check translations (check i18n folder git history for latest translations, then build locally and see the amount of untranslated strings) @dbaeumer
[x] All issues verified
[x] Fixing (only critical bugs - no string changes)
Smoketest

[x] Windows - @isidorn
[x] OS X - @sandy081
[x] Linux - @joaomoreno

[ ] All release notes updated - release notes are collected in a file named Month_Year.md in this repo directory. This includes new features and notable fixes.

[x] @alexandrudima
[x] @weinand
[ ] @chrmarti
[x] @tyriar
[x] @dbaeumer
[x] @bpasero
[ ] @egamma
[x] @isidorn
[ ] @joaomoreno
[x] @jrieken
[ ] @kieferrm
[x] @aeschli
[ ] @rebornix
[ ] @ramya-rao-a
[ ] @roblourens
[x] @sandy081
[ ] @mjbvz

[ ] Acknowledge pull requests in release notes. We acknowledge PRs from outside the team. Use the thankyou tool to generate the initial contents of the section. owner

[x] vscode endgame master
[x] vscode-node-debug @weinand
[ ] vscode-node-debug2 @roblourens
[x] vscode-debugadapter-node @weinand
[x] vscode-filewatcher-windows @bpasero
[x] vscode-languageserver-node @dbaeumer
[x] language-server-protocol @dbaeumer
[ ] vscode-textmate @alexandrudima
[ ] vscode-loader @alexandrudima
[x] vscode-generator-code @aeschli
[x] vscode-vsce @joaomoreno
[ ] vscode-docs @gregvanl
[x] vscode-css-languageservice @aeschli
[x] vscode-json-languageservice @aeschli
[x] vscode-html-languageservice @aeschli
[x] jsonc-parser @aeschli
[ ] vscode-jscs @chrisdias
[ ] vscode-tslint @egamma
[x] vscode-eslint @dbaeumer
[ ] vscode-jshint @kieferrm
[x] vscode-recipes @weinand
[ ] localization @danyeh
[x] vscode-github-issues-prs @chrmarti

When done fixing/verifying and there are changes since last build at the end of day PT

[ ] Trigger new insider build and publish it manually @owner

Friday/Monday

[x] Disable continuous insider builds - endgame master
[x] Branch code to release/<x.y> and release master - endgame master
[x] Bump up the version in package.json - endgame master
[x] Announce master is open for business endgame master
[ ] Polish release notes @redmond

Monday - Wednesday

[ ] Polish release notes @redmond
[ ] Cherry-pick hand-picked and reviewed changes to release/<x.y> @owner
[ ] Build Insider from release/<x.y> endgame master
[ ] Manually release Insider endgame master
[ ] Documentation updated

[ ] @alexandrudima
[ ] @weinand
[ ] @chrmarti
[x] @tyriar
[ ] @dbaeumer
[x] @bpasero
[ ] @egamma
[ ] @isidorn
[ ] @joaomoreno
[ ] @jrieken
[ ] @kieferrm
[ ] @aeschli
[ ] @rebornix
[ ] @ramya-rao-a
[ ] @roblourens
[x] @sandy081
[ ] @mjbvz

Note: The Insiders build needs to be in the wild for 24 hours before we can enter the last phase of the endgame.

Thursday/Friday

[ ] Merge translations @zurich
[ ] Build stable for all platforms endgame master
[ ] Make rpm signing request @chrmarti
[ ] Sanity check of installable bits

[ ] Windows

[ ] signed installer @owner
[ ] zip @owner

[ ] OS X - @owner
[ ] Linux

[ ] deb package 32-bit @owner
[ ] deb package 64-bit @owner
[ ] rpm package 64-bit @owner
[ ] rpm package 32-bit @owner
[ ] archives @owner

[ ] Publish website @gregvanl
[ ] Publish to stable @owner
[ ] Publish deb and rpms to repositories manually @chrmarti
[ ] Add version with symbols to HockeyApp @Tyriar
[ ] Add a git tag to HEAD of release/<x.y> in format x.y.z endgame master
[ ] Enable scheduled insider builds endgame master
[ ] Twitter announcement @seanmcbreen

I think this statement is not correct anymore-

All release notes updated - release notes are collected in a file named Month_Year.md in this repo directory.

@gulshan I've fixed the release notes name.


Decimal floats not folding

Hello,
Firstly, thank you very much for this project. After starting to work with your extension, I don't think I can ever write monkey C without it again.
Upon inspection of the optimized code I found that literal expressions that contain floats in decimal form do not fold. Is this known or even anticipated? Since floats are used in many projects and probably have a great impact on the performance of the program this feature would be well received.
Example:
		function test(){
			const t = 10;
			const fl = 0.5;
			const c = 5;

			var test1 = t * fl * c;
			var test2 = t * c * fl;

			return test1 + test2;
		}
---------------------------------------------------
Optimized to:
    function test() {
      var test1 = 10 * 0.5 * 5;
      var test2 = 50 * 0.5;

      return test1 + test2;
    }
----------------------------------------------------
Expected:
    function test() {
      var test1 = 25;
      var test2 = 25;

      return test1 + test2;
    }

I was just a little conservative when I first wrote the constant folding code. It also turns out that none of my projects have any examples of this, so I've never been motivated to go back and fix it!
But yes, should be fairly straightforward. I'll try to get it into the next release.

Thank you very much, this is much appreciated!

Fixed by fa155792ff2e9a53a2a9dff0fe28ac16e1e074fd (the real fix was in @mark65/monkeyc-optimizer)


Refactor calculateClockOffset to fix overflow issues

CBMC proof run for Sntp_DeserializeResponse PR #15 flags overflow issue in the calculateClockOffset function when assignining negative value to an unsigned integer. This PR refactors the implementation to avoid overflow flagging by:

Storing only positive subtraction values in unsigned integers
Assigning a large unsigned integer (i.e. >= 0x80000000) to signed integer by first using its negative value and then inversing the negation after the assignment to obtain the correct value.

This PR also adds resiliency to the clock-offset calculation by adding check against overflow (i.e. when server and client times are more than 34 years apart) on the Client -> Server SNTP request send network path.

I'd like to keep this PR open for now so we can solicit further feedback.

The current subtraction routine is a big improvement over the previous iteration, but I think you could probably take it a bit farther. E.g. something like
bool trySubtract(uint32_t a, uint32_t b, int32_t* result) {
    int64_t big_a = a;
    int64_t big_b = b;
    int64_t big_result = big_a - big_b;
    if (big_result <= INT32_MAX && big_result >= INT32_MIN) {
        *result = big_result;
        return true;
    } else {
        return false;
    }
}

This gets rid of all the polarity and 2's complement stuff and is IMO easier to understand. IDK if this code makes MISRA happy, but I verified with clang's undefined behavior checker that it doesn't cause any overflows: https://paste.amazon.com/show/mcourage/1620948125.
Since the subtraction routine checks for overflow, you could also get rid of the bit twiddling in isEligibleForClockOffsetCalculation.

@courage Thank you for taking a look.
I agree that extending the integer width to safely accommodate overflows would also solve this issues.
My only (very minor) concern would be possible performance penalty: int64_t operations might be slower than int32_t on 32-bit platforms?
But as you said, this would be much cleaner and we could simply the isEligibleForClockOffsetCalculation and safeSignedSubtraction functions (perhaps even get rid of them).

Yes, my concern rests for use of int64_t as well for platforms that aren't 64 bit address based, which is why the clock-offset overflow requirement is representation of the value within 32 bits (i.e. 30 bits of absolute value and 2 sign bits).
The isEligibleForClockOffsetCalculation checks that the first order difference exists within 34 years (i.e. representable with 30 bits) in both polarities of subtraction so that the case when NTP time overflow (on 7 Feb 2036), and the server and client are in two different NTP eras (i.e. one before the overflow with a large NTP seconds value greater than INT32_MAX and the other with a small NTP seconds value) is supported.  In such a case, a simple single polarity subtraction does not yield the correct value.

The purpose of the code in isEligibleForClockOffsetCalculation is unclear to me even with several read-throughs, so I couldn't say with confidence that it's correct. The comments say that it's checking to see if the delta is less than 2^30 seconds (34 years), but the actual code seems to be doing a bunch of number encoding magic, and I don't understand why it's doing so. It kind of looks like it's trying to do signed arithmetic on a uint32_t, but the argument coming from calculateClockOffset is actually unsigned, so the 2's complement code doesn't make any sense to me.
Though I haven't read through the NTP spec on this subject, I'd be kind of surprised if this "fail when the difference is greater than 34 years" is intended. Is that really what's supposed to happen? I would expect that if my two timestamps are 0 and 0xFFFFFFFF, I should assume that there was a rollover, and that the difference is 1 second, rather than 68 years. calculateClockOffset looks like it would return a failure for that case.
Regarding efficiency of trySubtract, here's the code generated by gcc for 32-bit ARM (-Os):
trySubtract:
        subs    r1, r0, r1
        sbc     r3, r3, r3
        adds    r0, r1, #-2147483648
        adc     r3, r3, #0
        cmp     r3, #0
        moveq   r0, #1
        streq   r1, [r2]
        movne   r0, #0
        bx      lr

You'd really have to be doing a tremendous amount of subtraction for me to worry about the efficiency of this code, and even if you were, I'd tell you to favor simpler, clearer code until you had benchmark data showing a material difference.

I would expect that if my two timestamps are 0 and 0xFFFFFFFF, I should assume that there was a rollover, and that the difference is 1 second, rather than 68 years. calculateClockOffset looks like it would return a failure for that case.

Yes, the calculateClockOffset function does support rollover, and the logic within the isEligibleForClockOffsetCalculation performs 2's complement inversion to treat the difference of 0xFFFFFFFF as 1.
Here are the test cases that validate the support for overflow by the calculateClockOffset function: https://github.com/FreeRTOS/coreSNTP/pull/17/files#diff-c6d8814d59f0ac9dcfcb87a69e9802c3e31a09a1b3d4ee298b43dace48dd9777R448-R483


Emoji are displayed incorrectly when Tasks metadata fields are present

Describe the bug
Emoji are displayed incorrectly when Tasks metadata fields are present (see screenshot)
To Reproduce
Steps to reproduce the behavior:

Set TimeRuler and DataView
Create tasks as in the screenshot
See incorrectly displayed � instead of emoji.

Screenshots

Obsidian Version:

[x] Mobile
[x] Desktop

This is fixed in the upcoming release.


Fixes for python3 and missing required dependencies.

Fix installation on python3, add missing dependencies.

Thanks a lot for the PR -- looks good to me


Appease nightly clippy

error: first doc comment paragraph is too long
  --> aya/src/programs/raw_trace_point.rs:12:1
   |
12 | / /// A program that can be attached at a pre-defined kernel trace point, but also
13 | | /// has an access to kernel internal arguments of trace points, which
14 | | /// differentiates them from traditional tracepoint eBPF programs.
15 | | ///
16 | | /// The kernel provides a set of pre-defined trace points that eBPF programs can
   | |_
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_long_first_doc_paragraph

error: first doc comment paragraph is too long
  --> ebpf/aya-ebpf/src/helpers.rs:1:1
   |
1  | / //! This module contains kernel helper functions that may be exposed to specific BPF
2  | | //! program types. These helpers can be used to perform common tasks, query and operate on
3  | | //! data exposed by the kernel, and perform some operations that would normally be denied
4  | | //! by the BPF verifier.
5  | | //!
6  | | //! Here, we provide some higher-level wrappers around the underlying kernel helpers, but
   | |_
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_long_first_doc_paragraph

Known breakage on Mac.


365 inputs are sometimes disabled

Fixed feature

Remove selected component on room joined

Codecov Report

Merging #367 (93085ff) into master (cdd0dfb) will decrease coverage by 0.01%.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##           master     #367      +/-   ##
==========================================
- Coverage   16.33%   16.32%   -0.02%
==========================================
  Files         146      146
  Lines        4089     4092       +3
  Branches     2257     2260       +3
==========================================
  Hits          668      668
- Misses       2876     2879       +3
  Partials      545      545

Impacted Files
Coverage Δ

Client/ButtonAction.cpp
0.00% <0.00%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


contextlib.closing(response) is not enough when using sessions and stream = True

The requests documentation suggests using the following idiom to partially read response bodies (e.g. when stream = True):
from contextlib import closing

with closing(requests.get('http://httpbin.org/get', stream=True)) as r:
    # Do things with the response here.

I thought this would be applicable to sessions, but it seems it's not enough.
The following program reliably raises an exception (BadStatusLine) even while it uses contextlib.closing, and the only way to stop that from happening is to consume the whole response content:
import contextlib
import random
import requests

urls = [
    'http://reddit.com',
    'http://news.ycombinator.com',
    'http://github.com',
    'http://bitbucket.org',
]

try:
    session = requests.Session()

    while True:
        try:
            with contextlib.closing(session.get(random.choice(urls), stream = True)) as r:
                # uncomment the line below and the errors dissapear:
                # r.content
                pass

        except Exception as ex:
            print(str(ex))

except KeyboardInterrupt:
    pass

Is this the expected behavior or actually a bug? (to be fair the documentation doesn't actually say that the idiom is also applicable to requests coming from sessions).

I think this is expected, but it could arguably be worked around.
The problem is that urllib3 doesn't know whether we consumed the response, so it doesn't know that the socket has unread data in it. We should be able to support that case, I think.

Wait. I have a question.
In your first example, you have a comment "Do things with the response here". If you put that in your while loop with a "pass" statement, do you see the same behaviour? If so, this issue seems a bit misleading as it is currently presented.

Hi.

In your first example, you have a comment "Do things with the response here". If you put that in your while loop with a "pass" statement, do you see the same behaviour?

The errors disappear if:
...
# I just use requests.get instead of sessions:
with contextlib.closing(requests.get(random.choice(urls), stream = True)) as r:
    # no need to consume the whole content, no errors:
    pass

# I use sessions but I consume the whole response body:
with contextlib.closing(session.get(random.choice(urls), stream = True)) as r:
    r.content

In other words, the problem is that closing(requests.get(...), stream = True) is always safe regardless of the content, but closing(session.get(...), stream = True) is not, you must consume the response content.

Just so that everything is as clear as possible:
The documentation states that closing(requests.get(..., stream = True)) is safe. This works well, but it may lead an user to assume that closing(session.get(..., stream = True)) is also safe.
This is not true as can be seen by running the program in my first post. It eventually raises an exception with a BadStatusLine. When using a session, you have to consume the content, calling response.close() is not enough.
Unfortunately, this may lead to hard to reproduce bugs in user's code. You need a program like the one in the first post (or in my use case a multithreaded link crawler) to reproduce it consistently.
I can see two solutions:

Be explicit in the documentation and state that closing(session.get(...), stream = True) is unsafe.
Always consume the content when response.close() is called.

I think blindly consuming the content when response.close() is called is a bad idea, because it could potentially take an unbounded amount of time to complete. If response.close() is called without having drained the response, we should close the underlying connection instead.

Yeah, that seems a way better solution.

Fixed by #2610.


it will not work at all

so have every thing needed and i have a pic but when i run the com it does nothing
says nothing does nothing

i have tired naming it gay.png and jpg and it still didnt work

First thing, I'm guessing your command should end with +GLOW instead of GLOW. Check the documentation for a detailed explanation.
And now, the usual questions:

What server are you running? SpigotMC, Bukkit, PaperMC, etc.
What Minecraft version are you on? 1.19.2, 1.19.3, etc.
What version of ProtocolLib are you using? 4.8.0, 5.0.0-SNAPSHOT-b608, etc.
What server logs are you getting when running the command? Make sure to enable "verbose" mode.

1.19.2 spigot MC and the newts protocoilib and ill try enable

i don't know what verbose and or how my stuff logged i have not touch that

1.19.2 spigot MC and the newts protocoilib and ill try enable

What version of ProtocolLib are you using? Please give the version number, not just "the latest".

i don't know what verbose and or how my stuff logged i have not touch that

You can enable Yamipa's verbose by modifying the "plugins/YamipaPlugin/config.yml" file as explain in this link.
Without your server logs there's no way for me to debug the cause of the bug :/
You should be able to see those at your server's console or terminal.

2022-10-13-1.log.txt
2022-10-13-2.log.txt

2022-12-26-1.log.txt

sorry for the late replay


Twitter banner not retrieving for sfd11 democraticclub (@sfd11dems) | Twitter

Yow, first possible clue:
https://developer.twitter.com/en/apps
Apps owned by this Twitter account are listed below. You cannot create additional apps because your developer account was rejected or suspended. You may still manage your existing apps here, though further action may be taken if any of them violates our policies.
App icon
We Vote Social Voter Guide
App ID
9433049

Verified, thank you!


Fix constraint for the atomic: Only assignment is supported for CodegenAtomicStatement

See the https://github.com/BlueBrain/nmodl/pull/645#issuecomment-1095075632:
libc++abi: terminating with uncaught exception of type std::runtime_error:
              Error: only assignment is supported for CodegenAtomicStatement

The reason is that mech->ion_ina[ion_ina_id] += mech->ina[id] uses + with CodegenAtomicStatement.

As mentioned there, a += b can be written as  a = a + b, and hence this error is not quite right.
Currently, we have to write verbose code due to this error message. Maybe this could be fixed with minimum effort?

By the way, this is not a blocker!


Update Avatar

Update Avatar widget.
Iimage accessing path using Yii::getAlias('@web/avatars/') to access uploaded image in web/avatars

Thanks!


DD:stressDistFac

I noticed that the generated description for DD:stressDistFac no longer includes text about how J is interpolated from the given data (as done in the original case study).  I like how all of the entries from the equation are defined, but there is more to the description than this.  I'm assuming this a temporary situation as the Drasil language grows and changes?  I noticed that the same thing is done in several of the other data definitions and in some of the other case studies.  It is great to de-embed and automate, but we don't want to lose information in the process.

Yes, due to de-embedding and automation, it does seem that information is being lost. Potential (temporary?) actions:

Update the constructor currently creating DataDefs (i.e. mkDataDef) to take an extra argument that would just be a Sentence (for now, even though it is "dead knowledge"?) that'd be tacked on to the end of the automatically generated Descriptions.
Create a new constructor for instances like this, where the description will be passed in and will be output verbatim. Perhaps a pattern can be recognized after such an implementation.

(Although, I'm not sure if the DataDefs generation is being updated to take the additional description information into account (as @szymczdm stated that DataDefs is in the process of being overhauled (comment of commit edaea0c)).)

Or would it be better to attach the additional information to the actual concept chunk? For example, for strDisFac
, where stressDistFac is
, would be alterred so that there is an additional obtainedFrom parameter that would hold something to the effect of "interpolating data shown in Figure 7".

Thank you for the clarification @niazim3 .  I do not know the best way to keep knowledge as we go forward, but I think it is important to keep it, even if it is an "ugly" solution.  Once the information is lost, it is hard to get it back.  This is why some of the original "manual" case study SRSs do not match.  A previous author deleted a section, and then the next author just started from what the previous one left.  The information stayed "lost."  We should see what @szymczdm and @JacquesCarette recommend for the best way to keep information that doesn't currently fit nicely into the patterns that we've currently identified.

Below is a rough overview of what is missing from the data definitions in GlassBR (just to see if a pattern can be apparent enough to come up with a solution). It seems that mostly, references to other parts of the document, some definitions, and constraints on some concepts are missing.
DD1 :

a > b
h is the true thickness, which is based on the nominal thickness as shown in (ref DD2)
LDF (ref DD3)
J   (ref DD4)
DD2:
h is the MINIMUM thickness
DD4:
obtained by interpolating from data shown in (ref figure 7)
dimensionless load (ref DD7)
a > b
DD5:
a > b
h (ref DD2)
tolerable load (ref DD8)
DD7:
q (definition?:) is the 3 second equivalent pressure, as given in (ref IM3)
a > b
h (ref DD2)
GTF (ref DD6)
DD8:
qHatTol is the tolerable pressure which is obtained from (ref figure 7) using jTol and aspect ratio (a/b) as parameters using interpolation. Calculation of jTol is defined in (ref DD9).
DD9:
a > b
h (ref DD2)
LDF (ref DD3)
pbTol is entered by the user

In the case of the constraints though (i.e. the instances where "a > b" is stated), the current output
()
says the same thing as the original pdf
(), so I suppose the wording being different isn't significant enough to be considered "lost information" (especially since "b<a" is a physical constraint)? Or should the constraint be repeated in every DD that a and b are present? @smiths

Great work @niazim3.  Your summary of "lost" information was the exact right thing to do.  Another item of lost information is the "Source" field in the different definitions.  (The source is important information for traceability and it is difficult to recover after the fact.)  A pattern that emerges for me is that the information that is left out is connecting to those features of Drasil that have not been implemented.  I think the question for @szymczdm and @JacquesCarette is how far we are away from having references and citations fully working.  The follow up question for them is: if we cannot get these features working, what is the best way to fake it?
As far as repeating a > b in different places, I'm afraid that this is something I think we need to do.  The SRS is not a document that will be read from start to finish like a novel, or even like a journal paper; the SRS is a reference document.  It will be referred to with the goal of answering a specific question.  That is why I like each of the pieces to be as self-contained and as complete as possible.  That is why we repeat the meaning and units of so many of the symbols.  This information is in the Table of Symbols, but we don't want people to have to constantly refer to this table.  With document generation repeating information like this is essentially free and because of the generation we know that it will be correct.  The information that a>b is critical for the definition of a and b, otherwise, there is no way to tell which dimension is the length and which is the width.  It is an arbitrary decision, but it is a necessary decision to make the document unambiguous.

Yes, mkDataDefs needs to be modified to allow such extra information to be un-lost.
We will need to figure out what this 'lost' information really means, so that it is not 'dead'.  But first we should make sure it is at least present in the document.

In commit 723c369, a mkDataDef' constructor was added.
Unfortunately, since the DataDefinitions' descriptions are automatically generated (using descLines and buildDDDescription from Import.hs and toVC from Extract.hs), I don't believe there is currently a way to add the extra information (maybe @szymczdm could clarify please?); for now, I'll add the missing information as sentences to the QDefinitions and keep this issue open...

Hmm, this is another important issue. We definitely need to come back to this one.

Yup, we need to discuss this one. I have a feeling this is where Attributes might come into play a bit more, but that depends on the types of information we're trying to keep (and what they "mean").
If we want to display constraints (ie. things like a > b) then we need to know why those particular constraints are important in this context, since we're likely ignoring (not displaying) some other constraints.
I'll also need to think about how to generate the references in the description, since I think there'll be some problems there.

Update
The overview I commented on Jul 18, 2017 (please see above) still holds. The only main things I want to add are:

LDF is no longer a data definition in the generated version of GlassBR, but it is still present in the caseStudies repo

The data definition for GTF is missing the descriptions for the elements in the mapped set in the generated version. This is the manual version
 and this is currently generated
. I believe this may end up being related to the potential solution of recursively describing the symbols that appear in a model/definition (see smiths/swhs/issues/35 for that discussion)
DD8 in stable has the label "Tolerable Pressure" whereas the generated data definition is labelled "Tolerable Load"... we should probably stick to one to reduce ambiguity. @smiths, is there a preference for one or the other?
DD9 is also missing that "J_tol is calculated with reference to P_btol"
There is a data definition for stand off distance in the manual version of the SRS:
, but not in the generated one. @smiths, should someone be assigned to add this missing information?

With the addition of a Notes field for the data definitions (done in b032040), a lot of this information can be re-captured. Should this issue be closed after all the missing information is added, even though the Notes field may end up being a temporary solution to the missing information? @szymczdm @JacquesCarette

There is a lot of different kinds of missing information documented in this one issue. I think it should be splits into many small issues, so that most can be dealt with quickly. Some of them may require more substantial work (like 2. in the update above).

Thanks @JacquesCarette!
The comment has been updated to include only the type of missing information related to the ones from earlier comments.
Actually adding the missing information back into Drasil will need to be held off until the new DataDefinition type is ready for use (#747).


Add support for rendering records from Zenodo to collections

Description
This PR solves issue SS-965. Now the collections model has a field for a Zenodo community ID. If this ID is present, list of 30 most recent entries from that community will be rendered on the collection page. I decided to go for entirely client-side rendering since these entries are not in any way connected to our backend.
Checklist
If you're unsure about any of the items below, don't hesitate to ask. We're here to help!
This is simply a reminder of what we are going to look for before merging your code.

[x] This pull request is against develop branch (not applicable for hotfixes)
[x] I have included a link to the issue on GitHub or JIRA (if any)
[x] I have included migration files (if there are changes to the model classes)
[x] I have included, reviewed and executed tests (unit and end2end) to complement my changes
[x] I have updated the related documentation (if necessary)
[x] I have added a reviewer for this pull request
[x] I have added myself as an author for this pull request
[ ] In the case I have modified settings.py, then I have also updated the studio-settings-configmap.yaml file in serve-charts

Further comments
Anything else you think we should know before merging your code!

Some kind of UI feedback that community content is being fetched would be nice, since fetching this can take a few seconds or even more.

Great suggestion! I now added info that it's loading while the user is waiting.


Add JavaScript unit tests for page slug generation

This change adds JS unit tests for the Wagtail admin cleanForSlug function that generates page slugs from page titles. This function is called in two ways: once to use (a copy of) the Django URLify function, and once to use a more basic regex-based slug generation.
This PR adds the new JS unit tests written by @jjanssen for PR #4884 (and modified slightly here to work with the existing logic). This brings in those tests independently from the behavior change implemented on that PR, to serve as a baseline and a nice example for similar JS tests in future.

Merged as part of #4884


Network module signal inconsistent with iwconfig

Describe the issue
I was a bit confused that the value of signal variable of network section is not good when I have a good WiFi reception.
For example, when the output from iwconfig is
Link Quality=62/70  Signal level=-48 dBm

I expect signal to be consistent with this output like showing 88 (from 62 * 10 / 7) but the real value is 57 which indicates a not so good reception intuitively.
In the code, I found signal is calculated based on a range from -90 to -20. (code)
I believe there was a reason for this. But have things changed because of the transition to libnl and now the signal range is between -110 to -40? (some discussion, code). It seems the Link Quality of iwconfig is simply calculated based on this (62 = -48 + 110).
Expected behavior:
WiFi signal value be consistent with other tools, for example, iwconfig.
Actual behavior:
The signal is not consistent with other tools.
Was it working before?
N/A
To Reproduce
A minimal but complete config with which the problem occurs:
[bar/primary_bar]
modules-right = wlan

[module/wlan]
type = internal/network
interface = ${env:WIFI:}
interval = 1
format-connected = <label-connected>
label-connected = %signal%

Polybar Log
N/A
Screenshots
N/A
Environment:

WM: N/A
Distro: N/A
Output of polybar -vvv:

$ polybar -vvv
polybar 3.3.1

Features: +alsa +curl +i3 +mpd +network(libnl) +pulseaudio +xkeyboard

X extensions: +randr (+monitors) -render -damage -sync +composite +xkb +xrm +xcursor

Build type: RelWithDebInfo
Compiler: /usr/bin/clang++
Compiler flags:  -Wall -Wextra -Werror -pedantic -pedantic-errors -Wno-error=parentheses-equality -Wno-zero-length-array
Linker flags:

Additional context
N/A

As far as I can tell there is no "right" way to get a percentage from your signal level. iwconfig, polybar, iwinfo that you linked, i3status and NetworkManager  all use linear interpolation.
iwconfig and iwinfo go from -110 to -40, i3status and NetworkManager go from -120 to -20.
There is no way to be consistent with all of these. Also, if we set the max at -40dBm, you would get numbers over 100% when you are close to the access point. If you set the min as low as -110 or -120 you still get relatively percentage (around 30%) for -90dBm, where you generally barely even can connect (1, 2).


Stop packaging integrations for Python 2

What does this PR do?

Motivation

Additional Notes

Review checklist (to be filled by reviewers)

[ ] Feature or bugfix MUST have appropriate tests (unit, integration, e2e)
[ ] Changelog entries must be created for modifications to shipped code
[ ] Add the qa/skip-qa label if the PR doesn't need to be tested during QA.
[ ] If you need to backport this PR to another branch, you can add the backport/<branch-name> label to the PR and it will automatically open a backport PR once this one is merged

I think I was too hasty with this PR, it broke a bunch of stuff. Will open a new one.


Server Routes doesn't work

📚 What are you trying to do?
I tried going into Server Routes and i got this:

Until today everything was working normally, the problem suddenly appeared and I do not know what is causing it. I didn't update anything or do anything.
🔍 What have you tried?
No response
ℹ Additional context

Operating System: Windows_NT
Node Version:     v16.17.0
Nuxt Version:     3.6.3
Nitro Version:    2.5.2
Package Manager<EMAIL_ADDRESS>Builder:          vite
User Config:      ssr, devtools, modules, css, colorMode, experimental, nitro, runtimeConfig, delayHydration, routeRules, app
Runtime Modules<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>Build Modules:    -

It seems that the problem occurs when I send too many requests to the API that does not return any data, because it does not work. The API returned a 404, I was making changes to the code because I was trying to fix it, and at some query this error appears. What I will say is that if I clear the project cache and the .nuxt folder it won't fix it, but to fix it, just clone the project anew from github, but let's not kid ourselves, this is not a solution to the problem.

@ReferTV Can you share your projects link or a small reproduction? Thank you

Generally it is unlikely to do anything, because as I say. This problem occurs randomly. When I cloned my project anew the problem disappeared, only that after a few days it suddenly returned when I was coding some new API file, after deleting this file the problem does not disappear, also as in the image attached above, maybe it is due to the fact that somewhere some key is saved, and after deleting the API file it remains?