converted bart model is slower than the original one during inference time

hi there,
I have a project to use facebook bart for news summerization. In order to make the inference faster, we are trying to convert part of the model to tensorrt and then interegerated into the original model.
Via this repo, I have successfully converted facebook bart decoder layers to tensorrt model,  and successfully integerated, however, the total inference time of generated tokens of the new bart model(i.e. the model integerated with converted tensorrt decoder layer) is 2 times slower than the original one,  so, I tried to find why, and finally I found that the new bart model itself is faster than the original one, see code below, line1 is faster than before after changing with new bart model,
but is became much slower after line2,
line1:            outputs = self(model_inputs, return_dict=True)
line2:            next_token_logits = outputs.logits[:, -1, :]
line3:            next_token_logits = self.adjust_logits_during_generation(
line4:            next_token_logits, cur_len=cur_len, max_length=max_length)
below you can find the comparing speed of new bart model and original one (corresponding to  comparing results of code  line1 above),

below you can find the comparing speed of new bart model and original one(corresponding to  comparing results of code  after line2 above)

Does anyone knows why it became slow after line1 code above?

Hi
Could you please provide the model, data and test script?

Hi
Could you please provide the model, data and test script?

hi grimoire,
I made some investigation into this problem and found that there are some gpu to cpu operation during the inference time (i.e. during beam search time), these operations make the whole process slow, some operations like tensor.tolist or some boolean operation in if statement (like if tensor: .......),
I have pushed one demo project here,
https://github.com/zangyuchen2008/trt_issue
and my env is as below:
tensorrt.__version__  <IP_ADDRESS>
torch.__version: 1.3.0```

you can test by running python issue.py directly, and  you should see outputs as below, as you could see , if tensorrt model is run directly, it's faster than original model, if it follows some gpu to cpu operation, it becomes much slower than the original model, how should I solve this problem?
<img width="592" alt="Capture" src="https://user-images.githubusercontent.com/13851442/106578339-62076780-657a-11eb-82a7-f0a2d70a1760.PNG">
if you need more information, please let me know.

Ok, I will let you know when I found something.  It is better to add torch.cuda.sychronize() when you measure inference time on gpu.

Ok, I will let you know when I found something.  It is better to add torch.cuda.sychronize() when you measure inference time on gpu.

ok, thanks for your suggestion, I will try and do more investigation in the mean time.

Ok, I will let you know when I found something.  It is better to add torch.cuda.sychronize() when you measure inference time on gpu.

I have also updated the method I used to convert to tensorrt in the demo project, in issue.py file, method name: decoderlayer_convertor_dynamic

Are you using this repo to accelerate decoder?
FP16 mode can bonus speed by 2.7 times, but the results are different. I want to dig into it. Where is the forward() of decoder?

Are you using this repo to accelerate decoder?
yes
FP16 mode can bonus speed by 2.7 times, but the results are different. I want to dig into it. Where is the forward() of decoder?
The decoder layer is in this file trt_issue/transformers/models/bart/modeling_bart.py  in class BartDecoderLayer(nn.Module)

The different between output of fp16 and fp32 might be Inevitable. Significand precision of fp16 is 10 bit and exponent is 5 bit. That would limit the precision of model.
I tested the fp16 convertor on a model with single fc layer:
        self.q_proj.bias = None
        query_states = self.q_proj(hidden_states) #* self.scaling
        query_states = query_states * 10
        return query_states

q_proj is the linear layer comes from BartAttention. output multi 10 to enlarge the diff(for visualize). fp32(pytorch) and fp16 results below.
max_diff: tensor(0.5802, device='cuda:0')
torch max: tensor(144.1834, device='cuda:0')  torch_min: tensor(-145.8305, device='cuda:0')
trt_max: tensor(144.3750, device='cuda:0') trt_min: tensor(-145.7500, device='cuda:0')

5 bit exponent can not given enough precision.
The precision is OK in most CV task, cause intermediate value is very small (I guess).
Still working on it.

The different between output of fp16 and fp32 might be Inevitable. Significand precision of fp16 is 10 bit and exponent is 5 bit. That would limit the precision of model.
I tested the fp16 convertor on a model with single fc layer:
        self.q_proj.bias = None
        query_states = self.q_proj(hidden_states) #* self.scaling
        query_states = query_states * 10
        return query_states

q_proj is the linear layer comes from BartAttention. output multi 10 to enlarge the diff(for visualize). fp32(pytorch) and fp16 results below.
max_diff: tensor(0.5802, device='cuda:0')
torch max: tensor(144.1834, device='cuda:0')  torch_min: tensor(-145.8305, device='cuda:0')
trt_max: tensor(144.3750, device='cuda:0') trt_min: tensor(-145.7500, device='cuda:0')

5 bit exponent can not given enough precision.
The precision is OK in most CV task, cause intermediate value is very small (I guess).
Still working on it.

hello grimoire,
Do you have any progress on this issue, I have been investigatting these days, but still stuck.

Sorry, I still do not have any solution.

And, by the way, have you tried to increase max_workspace_size? Some tactic need more workspace to perform accelerate.

And, by the way, have you tried to increase max_workspace_size? Some tactic need more workspace to perform accelerate.

hello grimoire,
I made some test, increase workspace_size gain some accelerate but very little, please check the results below,
max_workspace_size|acceleration
0 | 0.52
10241024 | 0.52
1610241024 | 0.614
3210241024 | 0.617
6410241024 | 0.682
12810241024 | 0.667
102410241024 | 0.669
2102410241024 | 0.666
410241024*1024 | 0.665

I set the max_workspace_size=1<<30 and mesure time as below:

    num_test = 100

    # raw test
    ## warmup
    if first_token:
        y = decoder_layer(
            decoder_layer_hidden_states,
            encoder_hidden_states=de_encoder_hidden_states,
            encoder_attention_mask=de_encoder_layer_attention_mask)
    else:
        y = decoder_layer(
            decoder_layer_hidden_states,
            encoder_hidden_states=de_encoder_hidden_states,
            encoder_attention_mask=de_encoder_layer_attention_mask,
            attention_mask=decoder_layer_attention_mask)
    for _ in range(num_test):
        start = time.time()
        torch.cuda.synchronize(device)
        with torch.no_grad():
            if first_token:
                y = decoder_layer(
                    decoder_layer_hidden_states,
                    encoder_hidden_states=de_encoder_hidden_states,
                    encoder_attention_mask=de_encoder_layer_attention_mask)
            else:
                y = decoder_layer(
                    decoder_layer_hidden_states,
                    encoder_hidden_states=de_encoder_hidden_states,
                    encoder_attention_mask=de_encoder_layer_attention_mask,
                    attention_mask=decoder_layer_attention_mask)
        torch.cuda.synchronize(device)
        end = time.time()
        raw_time = end - start
        raw_times.append(raw_time)

    # trt_test
    ## warmup
    if first_token:
        y_trt = decoder_layer_tensorrt(decoder_layer_hidden_states,
                                       de_encoder_hidden_states,
                                       de_encoder_layer_attention_mask)
    else:
        y_trt = decoder_layer_tensorrt(decoder_layer_hidden_states,
                                       de_encoder_hidden_states,
                                       de_encoder_layer_attention_mask,
                                       decoder_layer_attention_mask)
    for _ in range(num_test):
        start = time.time()
        torch.cuda.synchronize(device)
        with torch.no_grad():
            if first_token:
                y_trt = decoder_layer_tensorrt(
                    decoder_layer_hidden_states, de_encoder_hidden_states,
                    de_encoder_layer_attention_mask)
            else:
                y_trt = decoder_layer_tensorrt(
                    decoder_layer_hidden_states, de_encoder_hidden_states,
                    de_encoder_layer_attention_mask,
                    decoder_layer_attention_mask)
        torch.cuda.synchronize(device)
        end = time.time()
        tensorrt_time = end - start
        tensorrt_times.append(tensorrt_time)

    times = [raw_time/tensorrt_time for raw_time,tensorrt_time in zip(raw_times, tensorrt_times)]

This give me:
(base) amirstan@grimoire:~/space/tmp/trt_issue$ python decoder_test.py
### load model
### decoderlayer_convertor_dynamic
### convert model
### begin test
raw model time is 0.0041730904579162596
tesnorrt model time is 0.003737857341766357
coresponding tensorrt model is 1.1178166823058437 times faster
diff: tensor(1.5676e-05, device='cuda:0')
tensor(3.7592, device='cuda:0') tensor(-6.1854, device='cuda:0')
tensor(3.7592, device='cuda:0') tensor(-6.1854, device='cuda:0')
(base) amirstan@grimoire:~/space/tmp/trt_issue$ python decoder_test.py
### load model
### decoderlayer_convertor_dynamic
### convert model
### begin test
raw model time is 0.0041653323173522945
tesnorrt model time is 0.0043683481216430665
coresponding tensorrt model is 0.9556406460135142 times faster
diff: tensor(3.2518e-05, device='cuda:0')
tensor(4.2255, device='cuda:0') tensor(-6.7358, device='cuda:0')
tensor(4.2255, device='cuda:0') tensor(-6.7358, device='cuda:0')

nearly 1:1, as expected.


home: Add report-only content security policy

This adds a report-only CSP with a semi-conservative policy that uses
nonce for scripts and sets the default-src to self (requiring
whitelisting of third-party embeds). It could be locked down a bit more,
particularly the img-src rule, but that's something we can circle back
to at a later date.
It should also probably be applied to pages other than home (for
instance, the login page), but that can also be added later.
This also changes the /report/csp_violations endpoint to not assume that
a browser will provide a well-formed report, since current Chromium does
not conform to the format that it expected, and it's better to err on
the side of accepting some garbage that we filter later, rather than
missing real error reports.
This is based on, and hence supersedes #9065.
Testing plan: Clicked around in the dev server and checked the console for violations. Running this in prod will get us a much wider report of potential problems.

@andersk do you think this is safe to deploy on chat.zulip.org now, or should we test in a smaller prod environment first?


gateway-api: support ISTIO_MUTUAL  connection to in-mesh gateway

Please provide a description of this PR:

Added DNM to wait for https://github.com/kubernetes-sigs/gateway-api/pull/2721 which looks like it will land soon.

@frankbu: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

gencheck_istio
46b18f5df88168bec5cc41cacd5a377ad3b2c5c6
link
true
/test gencheck

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@frankbu: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

gencheck_istio
46b18f5df88168bec5cc41cacd5a377ad3b2c5c6
link
true
/test gencheck

unit-tests-arm64_istio
46b18f5df88168bec5cc41cacd5a377ad3b2c5c6
link
true
/test unit-tests-arm64

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@frankbu: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

gencheck_istio
46b18f5df88168bec5cc41cacd5a377ad3b2c5c6
link
true
/test gencheck

unit-tests-arm64_istio
46b18f5df88168bec5cc41cacd5a377ad3b2c5c6
link
true
/test unit-tests-arm64

unit-tests_istio
46b18f5df88168bec5cc41cacd5a377ad3b2c5c6
link
true
/test unit-tests

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.


Support for Laravel 5.4

Laravel 5.4 is ready to go live next week. Can you please add a support for it?

Pull request would be gladly accepted.

At the risk of pointing out the obvious, a pull request was submitted for this.
+1 on the need for 5.4 compatability

+1 from me also

+1

v 0.7.1 release with 5.4 support.


Update README.md

Adding in basic information to begin 'Toolbag' environment.

Here it is first Commit


[OTHER] OnHover on social links on footer is not aligned well

What would you like to share?

It should be like, on hover the twitter icon should be in the center. Moreover colors of all icons should be same.
🥦 Browser
Brave
Checklist ✅

[X] I checked and didn't find similar issue
[X] I have read the Contributing Guidelines
[X] I am willing to work on this issue (blank for no)

This can be a good fix !
You can go ahead and make a PR whenever done 🚀


Wrong method name in documentation

I am trying to use the following method
Branch.GetInstance().GetLatestReferringParams()
to get the current session parameters. But I can't find any method named "GetLatestReferringParams". I am using the latest package from nuget(4.0.5).
Is GetLastReferringParams does the same as GetLatestReferringParams?

@monirul-hemal yes, GetLastReferringParams is the same as GetLatestReferringParams, sorry for wrong naming.


very_good command fail to run

I'm on Ubuntu 20.04.
When I run very_good from terminal I get:
/home/michal/.pub-cache/bin/very_good: 8: dart: not found
But if I run:
dart "/home/michal/.pub-cache/global_packages/very_good_cli/bin/very_good.dart-2.13.0-30.0.dev.snapshot"
I get proper output about using A Very Good Command Line Interface
Not sure what I'm doing wrong.

Hi @mivoligo 👋
Would you mind running dart --version and flutter doctor on your terminal and share with me the output? It should look something like this:
➜  ~ dart --version
Dart SDK version: 2.10.5 (stable) (Tue Jan 19 13:05:37 2021 +0100) on "macos_x64"
➜  ~ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 1.22.6, on macOS 11.2.1 20D74 darwin-x64, locale en-US)
[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
[✓] Xcode - develop for iOS and macOS (Xcode 12.4)
[✓] Android Studio (version 4.0)
[✓] VS Code (version 1.53.2)
[!] Connected device
    ! No devices available

! Doctor found issues in 1 category.

I believe there's something going on with how Dart is installed in your system; comparing outputs should point us in the right direction.
Thanks!

Thanks for quick reply @jorgecoca
This is my output:
michal@michal-laptop:~$ dart --version
Dart SDK version: 2.13.0-30.0.dev (dev) (Fri Feb 12 04:33:47 2021 -0800) on "linux_x64"
michal@michal-laptop:~$ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel master, 1.27.0-5.0.pre.73, on Linux, locale pl_PL.UTF-8)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
[✗] Chrome - develop for the web (Cannot find Chrome executable at
    google-chrome)
    ! Cannot find Chrome. Try setting CHROME_EXECUTABLE to a Chrome executable.
[✓] Linux toolchain - develop for Linux desktop
[✓] Android Studio
[✓] IntelliJ IDEA Community Edition (version 2020.3)
[✓] Connected device (1 available)

! Doctor found issues in 1 category.
michal@michal-laptop:~$

Mmmm 🤔  would you mind switching to the beta channel and give it a try?
https://github.com/VeryGoodOpenSource/very_good_cli#-very_good-create

Sadly, same issue: dart not found.
Output from dart --version and flutter doctor:
michal@michal-laptop:~$ dart --version
Dart SDK version: 2.12.0-259.12.beta (beta) (Fri Feb 12 11:00:34 2021 +0100) on "linux_x64"
michal@michal-laptop:~$ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel beta, 1.26.0-17.6.pre, on Linux, locale pl_PL.UTF-8)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
[✗] Chrome - develop for the web (Cannot find Chrome executable at
    google-chrome)
    ! Cannot find Chrome. Try setting CHROME_EXECUTABLE to a Chrome executable.
[✓] Android Studio
[✓] IntelliJ IDEA Community Edition (version 2020.3)
[!] Connected device
    ! No devices available

! Doctor found issues in 2 categories.

@mivoligo can you try deactivating and reactivating the package and sharing the output?
$ dart pub global deactivate very_good_cli
$ dart pub global activate very_good_cli

Here you go:
michal@michal-laptop:~$ dart pub global deactivate very_good_cli
Deactivated package very_good_cli 0.1.2.
michal@michal-laptop:~$ dart pub global activate very_good_cli
Resolving dependencies... (1.3s)
+ args 1.6.0 (2.0.0 available)
+ charcode 1.2.0
+ checked_yaml 1.0.4
+ collection 1.15.0
+ http 0.12.2 (0.13.0 available)
+ http_parser 3.1.4 (4.0.0 available)
+ io 0.3.4
+ json_annotation 3.1.1 (4.0.0 available)
+ mason 0.0.1-dev.26
+ meta 1.3.0
+ mustache_template 1.0.0+1
+ path 1.8.0
+ pedantic 1.10.0
+ recase 3.0.1
+ source_span 1.8.1
+ string_scanner 1.1.0
+ term_glyph 1.2.0
+ typed_data 1.3.0
+ usage 3.4.2 (4.0.0 available)
+ very_good_analysis 1.0.4
+ very_good_cli 0.1.2
+ yaml 2.2.1 (3.0.0 available)
Precompiling executables... (2.6s)
Precompiled very_good_cli:very_good.
Installed executable very_good.
Activated very_good_cli 0.1.2.
michal@michal-laptop:~$ very_good
/home/michal/.pub-cache/bin/very_good: 8: dart: not found

I'm starting to think the problem could be related to the way I have Flutter SDK installed. I'll try to check some things and let you know.

So I "fixed" this temporarily by changing #!/usr/bin/env sh to  #!/usr/bin/bash in very_good file.

@mivoligo are you having the same issue with other global pub packages? For example, can you activate a package like stagehand?
dart pub global activate stagehand
stagehand --help

If this is also failing for you I would recommend opening an issue on pub since the file you're editing is generated by pub.

@felangel it's the same issue.
I've got Flutter SDK installed locally and set PATH in .profile file. For some reason sh doesn't recognize it but bash does. So the issue is on my side. I'll close this bag.

I found my issue. Turns out dash (sh) doesn't recognise ~ in PATH. I had to change it to $HOME and after logging off and on again, everything works fine.


[AutoRelease] t2-loadtestservice-2022-10-13-00551(Do not merge)

https://github.com/Azure/sdk-release-request/issues/3264
Live test success
https://dev.azure.com/azure-sdk/internal/_build?definitionId=3474
BuildTargetingString
azure-mgmt-loadtestservice
Skip.CreateApiReview
true

issue link:https://github.com/Azure/sdk-release-request/issues/3264


Various fixes and cleanups

I have been working on-and-off on implementing 'blacklisting' as described here, and in anticipation of that, but also just from having to re-familiarize after a while away from the code, I found various improvements/fixes/clarifications which I am bundling in a PR rather than driving you nuts with a string of PRs. If any commit-messages are not self-explanatory enough let me know.

Oops, sorry about that. I had done semistandard testing, but not at the end after the last changes. Serves me right for opening a PR late at night while half-asleep. I fixed the two changes you pointed out (thanks) and also noticed that part of the jsdoc-comment I'd added for the new function should have just been an internal devel-comment, so changed that too.

I just sneakily added 4 more small "general cleanup/readability" commits to this PR. These are the last pre-blacklisting-functionality commits. In a moment I will open the blacklisting PR separately, but based against the HEAD of this branch rather than present development-HEAD, so there is no unnecessary rebasing back-and-forth.

Whoops, run my tests but forgot to report back.
I run the script on all my contacts, but while many of them caused a 404 error due to invalid IDs (I think they are old accounts now deleted or something similar) none of them caused the API to return null.
Having fixed this problem I think we can merge this, right?

At present in 0f74a9a, I've just changed the other mentioned fetch/exception/null case to be the same (i.e. wrapped in try-catch, with the error-throw if null). I suspect the check for null might be a leftover of copy-pasta from invocations of LocalCache.retrieve(url, retry) because that returns null after there have been retry number of failed retries. It seems for the sake of this PR it would be safer for now to just leave the null-checks in place because at worst they will be redundant.
Looking ahead however, I noticed while checking on this that there are various "fetch from API" and "parse from raw input" points in the code with similar-but-different variations on the exception/error/null-handling (see snippets at the bottom of this comment). I suggest it would be good to standardize use of LocalCache.retrieve() for some of these, and standardize the error/exception-handling within that, to be more DRY, to make the code more readable/intuitive (e.g. reasoning behind the null-check), and of course to speed up any repeat-retrievals due to caching. For example the function-signatures of retrieve() and fetch() could be changed as follows (you can use the "default arg" syntax in ES6 so I guess that is OK in Google Apps Script, otherwise we use one of the slightly less concise solutions for it shown at that stackoverflow question).
Change from:
//// definition
LocalCache.prototype.fetch = function (url, retry) {...}
LocalCache.prototype.retrieve = function (url, retry) {...}

//// usage
// [1] (using cache)
inlineImages['contact-img-' + imgCount] = cache.retrieve(self.data.getProp('photoURL')).getBlob().setName('contact-img-' + imgCount);
// [2] (not yet using cache)
googleContact = ContactsApp.getContactById('http://www.google.com/m8/feeds/contacts/' + encodeURIComponent(settings.user.googleEmail) + '/base/' + encodeURIComponent(contactId));
// [3] (not yet using cache)
response = JSON.parse(response);

Change to:
//// definition
LocalCache.prototype.fetch = function (url, retry, getFunc=UrlFetchApp.fetch) {...}
LocalCache.prototype.retrieve = function (url, retry, getFunc=UrlFetchApp.fetch) {...}

//// usage
// [1] (using cache, same as before)
inlineImages['contact-img-' + imgCount] = cache.retrieve(self.data.getProp('photoURL')).getBlob().setName('contact-img-' + imgCount);
// [2] (using cache, specifying custom function & 2 "tries")
googleContact = cache.retrieve('http://www.google.com/m8/feeds/contacts/' + encodeURIComponent(settings.user.googleEmail) + '/base/' + encodeURIComponent(contactId), 2, ContactsApp.getContactById);
// [3] (using cache, specifying custom function & 1 "try")
response = cache.retrieve(response, 1, JSON.parse);

Please let me know if you agree. If so, I will open a separate PR to do that. Of course some points in the code are probably better off not being cached if there will be so many different requests that the cache-object would fill up the process memory.

Here are the "various snippets" mentioned above:
//////// at line 241 - in LocalCache.fetch() which is used internally by LocalCache.retrieve()
    try {
      response = UrlFetchApp.fetch(url);
      if (response.getResponseCode() !== 200) {
        throw new Error('');
      }
      // Break the loop if the fetch was successful.
      break;
    } catch (error) {
      errors.push(error);
      response = null;
      Utilities.sleep(1000);
    }

//////// at line 400
  try {
    googleContact = ContactsApp.getContactById('http://www.google.com/m8/feeds/contacts/' + encodeURIComponent(settings.user.googleEmail) + '/base/' + encodeURIComponent(contactId));
    if (googleContact === null) {
      throw new Error('');
    }
  } catch (err) {
    log.add('Invalid Google Contact ID or error retrieving data for ID: ' + contactId, Priority.INFO);
    return;
  }

//////// at line 489
  try {
    gPlusProfile = Plus.People.get(gPlusProfileId);
    if (gPlusProfile === null) {
      throw new Error('');
    }
  } catch (err) {
    log.add('Invalid GPlus Profile ID or error retrieving data for ID: ' + gPlusProfileId, Priority.INFO);
    return;
  }

//////// at line 631
        try {
          // Get the default profile image from the cache.
          inlineImages['contact-img-' + imgCount] = cache.retrieve(self.data.getProp('photoURL')).getBlob().setName('contact-img-' + imgCount);
          line.push('<img src="cid:contact-img-' + imgCount + '" style="height:1.4em;margin-right:0.4em" />');
        } catch (err) {
          log.add('Unable to get the profile picture with URL ' + self.data.getProp('photoURL'), Priority.WARNING);
        }

//////// at line 1744
  try {
    response = cache.retrieve(baseGitHubApiURL + 'releases/latest');
    if (response === null) {
      throw new Error('');
    }
  } catch (err) {
    log.add('Unable to get the latest version number', Priority.WARNING);
    return false;
  }

//////// at line 1754
  try {
    response = JSON.parse(response);
    if (typeof response !== 'object') {
      throw new Error('');
    }
  } catch (err) {
    log.add('Unable to get the latest version number: failed to parse the API response as JSON object', Priority.WARNING);
    return false;
  }

//////// at line 1773
  try {
    return (version).compare(new SimplifiedSemanticVersion(latestVersion)) === -1;
  } catch (err) {
    log.add(err.message, Priority.WARNING);
    return false;
  }

//////// at line 1869
  try {
    if (Calendar.Calendars.get(settings.user.calendarId) === null) {
      throw new Error('');
    }
  } catch (err) {
    log.add('Your user.eventSource setting is invalid!', Priority.FATAL_ERROR);
  }

//////// at line 1984
  try {
    eventCalendar = Calendar.Calendars.get(calendarId);
    if (eventCalendar === null) {
      throw new Error('');
    }
  } catch (err) {
    log.add('The calendar with ID "' + calendarId + '" is not accessible: check your calendarId value!', Priority.FATAL_ERROR);
  }

//////// at line 1994
  try {
    startDate = Utilities.formatDate(eventDate, eventCalendar.timeZone, 'yyyy-MM-dd\'T\'HH:mm:ss\'Z\'');
    endDate = Utilities.formatDate(new Date(eventDate.getTime() + 1 * 60 * 60 * 1000), eventCalendar.timeZone, 'yyyy-MM-dd\'T\'HH:mm:ss\'Z\'');
    log.add('Looking for contacts events on ' + eventDate + ' (' + startDate + ' / ' + endDate + ')', Priority.INFO);
  } catch (err) {
    log.add(err.message, Priority.FATAL_ERROR);
  }

This opens a whole new can of worms

I agree that fetch/exception/null handling is quite messy right now and we should adopt a standard to deal with it.
As far as I know Google Scripts runs on an ES5 Javascript engine, so we are not allowed to use ES6 syntax. Copying that example function from Stack Overflow and placing it in the code will trigger an error when saving since it will not be recognized as valid code. Like you said, however, that's not a problem since we can use the ES5 syntax for default parameters (we actually already use it in various places such as LocalCache.prototype.fetch definition).
I am not too sure that adapting the LocalCache.retrieve() for all those cases you listed would be the best idea; I would keep the LocalCache strictly as a (string ResourceURL) -> (Object data) (or at least (string ResourceID) -> (Object data), I'll explain more about this later). I think using it in the context of JSON.parse() is a bit of a strech, but I'd like to hear a more detailed explaination from you since I have the feeling I am probably missing some crucial part of your reasoning.
I have an alternative proposal regarding this whole LocalCache/fetch/error/null management which would probably better discussed in its own issue since this PR is becoming a little too broad in scope and this change would be quite important both in terms of size and functionality. If you agree I would merge this PR and open a new issue to discuss this new topic more thoroughly (or if you feel like this PR should wait until we have sorted this new problem out we can simply leave it open until then).

I agree it is better to merge this PR and resolve the remaining issue separately, also because merging this PR as-is allows merging the "event blacklisting" without rebasing.
Just to clarify what I was suggesting on this thread anyway though, I suggest just adding an optional third argument to LocalCache.prototype.fetch() (and identically to LocalCache.prototype.retrieve()) so that with 2 arguments both methods perform exactly the same as before, but when there is a 3rd argument it overrides UrlFetchApp.fetch as the "fetch function". The nice thing about the "fetch calls" in those snippets is that they all take one argument (see below), so whenever we want to cache one of them (not necessarily always, as you pointed out) we could just inject the LocalCache.prototype.retrieve() method in its place, passing the existing function as third argument (and a second argument - retries - of 1 if just a one-shot, perhaps 2 or 3 for API calls). For the places where it is silly or counterproductive to do actual caching, it just means we have to clean up the exception/error-handling similarly in each place (at the cost of a little repetition), and for the ones worth caching we only need to cleanup the code in one place in those LocalCache methods.
Another approach could be to add a 4th argument, which is a boolean to disable actually storing the result in cache. This would allow making all get/fetch/parse requests go through the same method, optionally leveraging the same retries functionality and the write-once-use-always error/exception/null-handling. Of course, then it starts to have some semantic drift when you use a cache object to do a "no cache" fetch...
The following all take one arg and return one var so could have the caching injected where desired for those. Of course it is probably not worth caching some of them, but we can decide that as we go:
response = UrlFetchApp.fetch(url)
// ----v
response = cache.retrieve(url) // default function, no need for additional args

googleContact = ContactsApp.getContactById(
  'http://www.google.com/m8/feeds/contacts/' + encodeURIComponent(settings.user.googleEmail) + '/base/' + encodeURIComponent(contactId)
)
// ----v
googleContact = cache.retrieve(
  'http://www.google.com/m8/feeds/contacts/' + encodeURIComponent(settings.user.googleEmail) + '/base/' + encodeURIComponent(contactId),
  2,
  ContactsApp.getContactById
)

gPlusProfile = Plus.People.get(
  gPlusProfileId
)
// ----v
gPlusProfile = cache.retrieve(
  gPlusProfileId,
  2,
  Plus.People.get
)

response = JSON.parse(
  response
)
// ----v
response = cache.retrieve(
  response,
  1,
  JSON.parse
)

eventCalendar = Calendar.Calendars.get(
  calendarId
)
// ----v
eventCalendar = cache.retrieve(
  calendarId,
  2,
  Calendar.Calendars.get
)


Mongoose adapter

Hi there!
I love all the stuff this project has and I would like to congratulate you on it and to tell you to keep up the good work!
I would also love the api you got here going to be available to use with mongoose/mongo. The expected behaviour should be absolutely the same one but translated to mongo queries:
foo/?name__contains=foo&role__in=admin,common&age__gte=18&page=3&limit=10

should translate to mongo like the following:
{
    name: {
           $regex: /foo/gi
    },
    role: {
          $in: ['admin', 'common']
    },
    age: {
         $gte: 18
    },
    $skip: 20,
    $limit: 10
}

Then use it in your express like the following
 app.get('/foo', (req, res) => {
  const queryBuilder = new QueryBuilder(req.query); // => Parsed into req.query
  const built = queryBuilder.build();
})

And also use it with Nest like the following:
import { createParamDecorator } from '@nestjs/common';
//should rename this
import { QueryBuilder } from 'express-query-builder';

export const MongooseQuery = createParamDecorator(_$, req => {
    //pass into the constructor the driver to use: 'typeorm', 'mongoose'
    return new QueryBuilder(req.query, 'mongoose').build();
});

And into the controller like the following:
import { Controller, Get } from '@nestjs/common';
import { CAT_MODEL, Cat } from "./users.schema";
import { InjectModel } from "@nestjs/mongoose";
import { Model } from "mongoose";

@Controller('cats')
export class CatsController {
    constructor(
        @InjectModel(CAT_MODEL) private readonly catModel: Model<Cat>
    ){}

    @Get()
    async getCats(@MongooseQuery() query: any):Promise<Cat[]>{
         //maybe... not sure about this part
          return await this.catModel.collection.aggregate([query]);
    }
}

Not sure how aggregate works with mongoose and maybe how to pass in a raw query. Let me know if I can help you with it.
Thanks a lot!

Hi @rgolea thanks for your interest!
Good feature! But for now is out of scope. I started this project to solve the problem for TypeORM.
Nevertheless, I'm interested to that point. The problem is that it requires a big refactor & rethink.
Sharing my thoughts & Roadmap:

Support issues
Adding features below:

Queries for nested entities (NoSQL) & joins (SQL)
OR operator (not trivial if I want use req.query as an input for QueryBuilder)

BIG REFACTOR: Refactor using Strategy Pattern  to make it pluggable & support multiple startegies & configurations.
Writing multiple adapters for different purposes & ORM's (TypeORM, mongoose, ...)

In the following weeks, I'll be working alone to stabilize & improve quality of codebase.
When it be ready, I will notice you to contribute on mongoose adapter 😃


Branch v1.2 addlog

Fixes #54
Summary of changes:

Added Log and UniqueLogList classes, with UniqueLogList encapsulated by a Person and containing Logs.
Updated storage component to support storage of Logs in JSON format, by adding JsonAdaptedLog class and updating other relevant storage classes.
Implemented AddLogCommand, AddLogCommandParser classes to support addlog feature, and updated relevant associated classes.
Wrote and updated unit and integration tests and test cases.
Updated UserGuide.md to reflect changed formatting of addlog command format.

Main design points to take note:
1. Logs

Logs are considered identical if they have the same title, and a UniqueLogList cannot have two identical Log objects.
Logs are considered equal if they have the same title AND description.
The default description for a Log if no description is provided is an empty string.

2. UniqueLogList
The unique log list is intended to be pointed to by a Person object, such that each person has a list of logs. In this PR, basic list functionalities of add, set, remove, contains have been added.
3. Person class now contains Log objects using a UniqueLogList
Self explanatory. Encapsulation allows for clean and safe usage, creation and deletion of Log objects.
4. AddLogCommand and AddLogDescriptor helper class
To support the addlog feature, three classes have been implemented:

AddLogCommand class
AddLogCommand.AddLogDescriptor class
AddLogCommandParser class

The inclusion of the three classes integrates nicely into the existing Command interface framework. A notable design choice was to use a static innerAddLogCommand.AddLogDescriptor class, and the rationale was to follow the analogous design in the EditCommand class, since it was easily extendible and helped with cleaner encapsulation.
At a high level, how it works is as follows:

AddLogCommandParser parses an input string --> TITLE and DESCRIPTION fields are wrapped by a AddLogDescriptor class, and then wrapped by a AddLogCommand object.
when .execute() is called, the AddLogDescriptor object creates a list of Log objects that contains previous logs contained by the Person, as well as the new Log.
A new Person object is created with this new list and all the other old, unchanged details, and passed to Model to handle writing to the data state.

Codecov Report

Merging #74 (39751cd) into master (844e647) will increase coverage by 2.24%.
The diff coverage is 86.60%.

@@             Coverage Diff              @@
##             master      #74      +/-   ##
============================================
+ Coverage     72.15%   74.40%   +2.24%
- Complexity      399      458      +59
============================================
  Files            70       77       +7
  Lines          1232     1422     +190
  Branches        125      159      +34
============================================
+ Hits            889     1058     +169
- Misses          311      320       +9
- Partials         32       44      +12

Impacted Files
Coverage Δ

.../seedu/address/logic/parser/EditCommandParser.java
92.30% <ø> (ø)

...rc/main/java/seedu/address/model/ModelManager.java
100.00% <ø> (ø)

.../java/seedu/address/model/util/SampleDataUtil.java
25.00% <14.28%> (+5.00%)
:arrow_up:

...java/seedu/address/model/person/UniqueLogList.java
81.57% <81.57%> (ø)

...ain/java/seedu/address/storage/JsonAdaptedLog.java
81.81% <81.81%> (ø)

...java/seedu/address/logic/commands/EditCommand.java
95.89% <87.50%> (-1.13%)
:arrow_down:

...eedu/address/logic/parser/AddLogCommandParser.java
88.00% <88.00%> (ø)

...va/seedu/address/logic/commands/AddLogCommand.java
89.47% <89.47%> (ø)

src/main/java/seedu/address/model/person/Log.java
90.00% <90.00%> (ø)

...c/main/java/seedu/address/model/person/Person.java
98.03% <92.30%> (+0.42%)
:arrow_up:

... and 7 more

Continue to review full report at Codecov.

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


The first preview uses the wrong GitHub commit?

Ref test here: https://github.com/vendanor/PvmApp/pull/247
To reproduce:

commit some changes
trigger preview with "add-preview" comment on PR
the latest commit is not used by build?

Maybe a bug here?:
https://github.com/vendanor/preview-pull-request/blob/3fd5c7813f9d1de715cb2b4b757f8840d795b8fe/src/deploy-preview.ts#L24-L30

When a preview is triggered by a issue_comment, it does indeed use the wrong commit when building and deploying a preview. The next push will use the correct one. More details: https://github.com/actions/checkout/issues/331


Error running on Azure

This code works fine running locally in Visual Studio 2022, but fails to retrieve the list of users when deployed to Azure (.NET 8 Early Access).  The error is not browser specific, but seems to be the hosting at issue. Exception is on the users.razor page:
Exception: Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer[100]
      Unhandled exception rendering component: ConstructorContainsNullParameterNames, System.Collections.Generic.KeyValuePair`2[System.String,System.String]
System.NotSupportedException: ConstructorContainsNullParameterNames, System.Collections.Generic.KeyValuePair`2[System.String,System.String]
   at System.Text.Json.ThrowHelper.ThrowNotSupportedException_ConstructorContainsNullParameterNames(Type )

The issue would appear to be with System.Text.Json not supporting KeyValuePair deserialization.
So far I've tried replacing the KeyValuePair with a List<KeyValueClass> and again works fine locally to display a list of users with claims on the users.razor page, but fails gain when deployed to Azure.
The replacement class used to retrieve a user record:
record User(Guid Id, string Email, string LockedOut, string[] Roles, List<KeyValueClass> Claims, string DisplayName, string UserName);
public class KeyValueClass
{
  [JsonProperty("Key")]
  public string Key { get; set; }
  [JsonProperty("value")]
  public string Value { get; set; }
}

Targeting the api directly from the browser (and postman) also returns perfectly good json, ie.:
https://??????????????????.azurewebsites.net/api/identity/userlist?skip=0&limit=10
Returned Raw Data example:
{
   "total":2,
   "data":[
      {
         "id":"319690b5-cad9-4fff-9ceb-ccc824a0e5b8",
         "email":"auser@email",
         "lockedOut":"",
         "roles":[
            "Administrator"
         ],
         "claims":[
            {
               "key":"Name",
               "value":"auser"
            }
         ],
         "displayName":"auser",
         "userName":"auser@email"
      },
      {
         "id":"c77bf450-e898-409d-b938-e51f2e9f15cc",
         "email":"admin@email",
         "lockedOut":"",
         "roles":[
            "Administrator"
         ],
         "claims":[
            {
               "key":"Name",
               "value":"Thenew Administrator"
            },
            {
               "key":"Country",
               "value":"England"
            }
         ],
         "displayName":"Thenew Administrator",
         "userName":"admin@email"
      }
   ]
}

In both cases (VS2022 local, and Azure deployment) the data is coming from the same Azure SQL Database.
Anyone else getting the same issue?

Maybe related to A published blazor wasm app throws a serialization error "Unhandled exception rendering component: ConstructorContainsNullParameterNames".

Hi, yes have tried all of the recommendations due to trimming issues. Do you have this code working from Azure?

This issue does appear to be related to generic KeyValuePair, I tried non-generic DictionaryEntry and it worked fine.
Try changing from
record User(Guid Id, string Email, string LockedOut, string[] Roles, KeyValuePair<string, string>[] Claims, string DisplayName, string UserName);
To the following
record User(Guid Id, string Email, string LockedOut, string[] Roles, System.Collections.DictionaryEntry[] Claims, string DisplayName, string UserName);
You will also have to unbox the string values from the DictionaryEntry in ChangeUser method to get it working.
This problem was also raised in blazor wasm throwing deserialization exception when published with an example.

I made the DictionaryEntry[]  change. Again works fine locally in VS2022.  Published to Azure and the api/identity/userlist?skip=0&limit=10 again returns perfectly good json.
Unfortunately, navigating to the 'Users.razor' page deployed to Azure now returns the following error:

All seems to be working OK in debug and release mode in VS2022.  Inspecting objects at breakpoints shows everything as it should be when running on the local machine.  I've not yet looked into this error, but have a suspicion that it is caused by the .0.0 that follows the 8
So, no solution yet :-(

Try enabling detailed runtime logging with the following:
import { dotnet } from './dotnet.js'
await dotnet
  .withDiagnosticTracing(true) // enable JavaScript tracing
  .withConfig({environmentVariables: {
    "MONO_LOG_LEVEL":"debug", //enable Mono VM detailed logging by
    "MONO_LOG_MASK":"all", // categories, could be also gc,aot,type,...
  }})
  .run();

Taken from Runtime logging and tracing for WASM.

Yes, your suggestions are good and setting <WasmNativeStrip>false</WasmNativeStrip> in a property group in your csproj should also help.


Order of entries in generated 'enums' is not stable

E.g., see: https://github.com/GoogleCloudPlatform/google-cloud-python/pull/6015/files.
The order should match the order in the .proto file, except that they might be collected from more than one:  if that case in general, then sort them.

Another example today:  https://github.com/GoogleCloudPlatform/google-cloud-python/pull/6109/files

@JustinBeckwith, @theacodes per today's call.

@lukesneeringer @andreamlin any more information we can provide here?

Any update here?

Hey folks, one question: Is the order non-deterministic or did the order remain deterministic and change?
I think this change may have been caused by some work done to sort other components (not specific to Python).

Thanks for reporting this.
Forewarning: I'm not a Python expert.

for PR https://github.com/GoogleCloudPlatform/google-cloud-python/pull/6015/files, I can't see what the change is, besides that the order of class defs is swapped. Does this matter, given that the classes don't reference each other?

For the requirement that "The order should match the order in the .proto file, except that they might be collected from more than one: if that case in general, then sort them.":
Assuming the class order does matter, wouldn't it be a breaking change to introduce a new protofile when there was only one protofile before? The order would get rearranged because now they're being sorted.

Talked to Luke offline.

Confirming that the PRs are annoying changes, but this isn't a semantic change?

@vam-google Would https://github.com/googleapis/googleapis/blame/master/google/bigtable/admin/v2/BUILD.bazel have to do with this? Since that explicitly lists out the order in which the proto files are given to gapic-generator.

Would it be possible to update this specific Bazel build file to match what was in the legacy configuration (which would theoretically revert the enum sort order in Bigtable)?

Talked to @vam-google and it can't be related because that BUILD file was pushed after this issue was filed.
I've been looking at how we generate the enum classes, and it seems to come from the order the proto files are passed in. This seems like a deterministic order. However, as Luke mentioned, we have been going through some refactorings that change the the order of surface entities in the clients. This churn should settle down in a while.

This is not a case of one-time changes:  I've seen multiple autosynth-driven PRs which do nothing more than change enum order:  approving one doesn't make the problem go away.  When I run synthtool on my machine, I have gotten a different order than the one in the autosynth PR.
Note that I don't really care about any specific order, only that it be stable over time.

This mornings autosynth runs still have this issue:

https://github.com/googleapis/google-cloud-python/pull/6474
https://github.com/googleapis/google-cloud-python/pull/6475
https://github.com/googleapis/google-cloud-python/pull/6476

@andreamlin I don't know how to tell if the change from #2418 has actually been rolled out to the artman image:  is there some way to check locally using synthtool?

I believe this issue is now closed, although, like Ahrnuld, "I'll be back!" if it pops up again in future autosynth runs.

Sigh.

New incidences today:

https://github.com/googleapis/google-cloud-python/pull/6636
https://github.com/googleapis/google-cloud-python/pull/6637
https://github.com/googleapis/google-cloud-python/pull/6638
https://github.com/googleapis/google-cloud-python/pull/6639

@andreamlin Is there a way we could just sort the top-level enums / messages by name, and sort the enums within messages by name?  I can't see a way to get that done, looking at transformer/py/PythonGapicSurfaceTransformer.java or transformer/GrpcElementDocTransformer.java.

@tseaver Sure, if we're fine with a one-time change to the surface that orders all existing enums. I can give it a shot

@tseaver See https://github.com/googleapis/gapic-generator/pull/2453 for a fix and https://github.com/googleapis/google-cloud-python/pull/6707 for an example of what happens after that PR is applied.


NuGetPublisher, explicitly pass parameters to GetConnectionDataAsync

This is a fix for #1402

Hi @pspill, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!

It looks like you're a Microsoft contributor (Peter Spillman). If you're full-time, we DON'T require a Contribution License Agreement. If you are a vendor, please DO sign the electronic Contribution License Agreement. It will take 2 minutes and there's no faxing! https://cla.microsoft.com.

TTYL, MSBOT;

@pspill when someone from our team can review this, I'll accept the PR

:shipit:


NO_AP_FOUND_IN_AUTHMODE_THRESHOLD while threshold's condition is respected (IDFGH-12863)

Answers checklist.

[X] I have read the documentation ESP-IDF Programming Guide and the issue is not addressed there.
[X] I have updated my IDF branch (master or release) to the latest version and checked that the issue is present there.
[X] I have searched the issue tracker for a similar issue and not found a similar issue.

IDF version.
v5.2.1
Espressif SoC revision.
ESP32-C6 v0.0
Operating System used.
Windows
How did you build your project?
VS Code IDE
If you are using Windows, please specify command line type.
None
Development Kit.
ESP32-C6-WROOM-1
Power Supply used.
USB
What is the expected behavior?
I expect the ESP32 STA to connect to the AP, as the STA threshold is set to WIFI_AUTH_WPA2 and the AP's authmode is set to >WPA2.
What is the actual behavior?
I am getting NO_AP_FOUND_IN_AUTHMODE_THRESHOLD, while the authmode.threshold in the STA is greater than AP's one.
No matter what threshold i put in authmode.threshold, the only AP configuration that it will connect to is WPA3
Steps to reproduce.

Set station config's authmode.threshold to anything/don't set it
Connect to a wifi network with a security inferior to WPA3

Debug Logs.
SCAN RESULT : SSID=TestReseau, AUTHMODE=3

I (241251) http_server: POST /connect.json
I (241261) http_server: ssid: TestReseau, password: Password1!
I (241261) wifi_manager: MESSAGE: ORDER_CONNECT_STA
I (241271) wifi_manager: wifi_sta_config: ssid:TestReseau password:Password1!
I (241281) wifi_manager: wifi_sta_config: sta_authmode 3
I (241291) wifi_manager: wifi_sta_config: RM enabled 1
I (241291) wifi_manager: wifi_sta_config: BTM enabled 1
I (241301) wifi_manager: wifi_sta_config: MBO enabled 1
I (241311) wifi_manager: wifi_sta_config: FT enabled 1
I (241311) wifi_manager: wifi_sta_config: OWE enabled 1
I (241321) wifi_manager: wifi_sta_config: PMF capable enabled 1
I (241331) wifi_manager: wifi_sta_config: PMF required enabled 0
I (241341) wifi_manager: wifi_sta_config: transition_disable enabled 0
I (244171) wifi_manager: WIFI_EVENT_STA_DISCONNECTED
I (244171) wifi_manager: MESSAGE: EVENT_STA_DISCONNECTED with Reason code: 211
I (244181) wifi_manager: MESSAGE: EVENT_STA_DISCONNECTED with rssi: -128
I (244181) wifi_manager: Set STA IP String to: <IP_ADDRESS>

### More Information.

I have tried setting OWE to 1 in the STA config, and also setting transition_disable to 1 in the STA config.
Ultimately, the STA will only connect to the AP if the security of the AP is set to WPA3

Hi @evoon
Could you please enable WIFI debug print and share the log?
CONFIG_WPA_DEBUG_PRINT=y
CONFIG_MBEDTLS_DEBUG=y
CONFIG_MBEDTLS_DEBUG_LEVEL_VERBOSE=y
CONFIG_MBEDTLS_DEBUG_LEVEL=4
CONFIG_LOG_DEFAULT_LEVEL_DEBUG=y
CONFIG_LOG_DEFAULT_LEVEL=4


consider using cuda_wrap_srcs instead of cuda_add_library

cuda_wrap_srcs is more flexible than cuda_add_library.
Basically, we can use it to create an object lib for the nvcc compilation results, and then use that with the normal CMake add_library.
This is the approach we took in Strawman (https://github.com/llnl/strawman)
https://github.com/LLNL/strawman/blob/develop/src/strawman/CMakeLists.txt
It doesn't fix the overall issues with not being able to set specific properties for cuda targets after they are create, but it would help us create a clean solution to issues like #74  and #60
@davidbeckingsale what do you think?

@cyrush , is there a PR with this implemented? I'm having trouble compiling CUDA under BLT (#136), and would like to see if alternative implementations would work.

Not yet ...

Closed due to removal of FindCUDA

We technically still use FindCUDA to detect the location of the CUDA libraries. Do we know if CMake's native CUDA support works for object libraries?


getObjectsUnderPoint() returns wrong value (html5 & neko)

Sample code:
    // in Main (document class)

    public function new() {
        super();
        addEventListener(Event.ADDED_TO_STAGE, added);
    }

    function added()
    {
        var shape = new Shape();
        shape.graphics.beginFill(0);
        shape.graphics.drawCircle(0, 0, 2);
        this.addChild(shape);

        shape = new Shape();
        shape.graphics.beginFill(0);
        shape.graphics.drawCircle(0, 0, 2);
        this.addChild(shape);

        trace('numChildren is ' + this.numChildren);
        trace('this objects under point count ' + this.getObjectsUnderPoint(new Point()).length);
        trace('stage objects under point count ' + stage.getObjectsUnderPoint(new Point()).length);

        stage.addEventListener(Event.ENTER_FRAME, onFrame);
    }
	function onFrame(e:Event):Void
	{
		stage.removeEventListener(Event.ENTER_FRAME, onFrame);
		trace('After frame event----------------------------');
		trace('this objects under point count ' + this.getObjectsUnderPoint(new Point()).length);
		trace('stage objects under point count ' + stage.getObjectsUnderPoint(new Point()).length);
	}

Flash output
Main.hx:171: this numChildren : 2
Main.hx:172: this objects under point count 2
Main.hx:173: stage objects under point count 2
Main.hx:183: After frame event----------------------------
Main.hx:184: this objects under point count 2
Main.hx:185: stage objects under point count 2

HTML5 canvas output
"this numChildren : 2"
"this objects under point count 1"
"stage objects under point count 0"
"After frame event----------------------------"
"this objects under point count 1"
"stage objects under point count 3"

Neko output
Main.hx:171: this numChildren : 2
Main.hx:172: this objects under point count 0
Main.hx:173: stage objects under point count 0
Main.hx:185: After frame event----------------------------
Main.hx:186: this objects under point count 2
Main.hx:187: stage objects under point count 2

I tried to find a way to get correct value and I found ENTER_FRAME solution. But html5 still returns wrong count of objects.
openfl v 2.1.6

I made tests in the debug mode, so TextField for trace() is not included.
Just some results for html5-canvas target with new fixes.

var shape:Shape = null;
for (i in 0...5)
{
	shape = new Shape();
	shape.graphics.beginFill(0, 1);
	shape.graphics.drawCircle(0, 0, 10 );
	shape.x = shape.y = 100;

	this.addChild(shape);
}

trace('under stage (100,100) : ' + stage.getObjectsUnderPoint(new Point(100, 100)).length);

for (i in 0...5)
{
	shape = new Shape();
	shape.graphics.beginFill(0, 1);
	shape.graphics.drawCircle(0, 0, 10 );
	shape.x = shape.y = 0;

	this.addChild(shape);
}

trace('under stage (100,100) : ' + stage.getObjectsUnderPoint(new Point(0, 0)).length);
trace('-------------------');

before enter_frame
"under stage (100,100) : 0"
"under stage (0,0) : 0"

after enter_frame
"under stage (100,100) : 0"
"under stage (0,0) : 10"

I made tests in the debug mode, so TextField for trace() is not included.
Just some results for html5-canvas target with new fixes.

var shape:Shape = null;
for (i in 0...5)
{
	shape = new Shape();
	shape.graphics.beginFill(0, 1);
	shape.graphics.drawCircle(0, 0, 10 );
	shape.x = shape.y = 100;

	this.addChild(shape);
}

trace('under stage (100,100) : ' + stage.getObjectsUnderPoint(new Point(100, 100)).length);

for (i in 0...5)
{
	shape = new Shape();
	shape.graphics.beginFill(0, 1);
	shape.graphics.drawCircle(0, 0, 10 );
	shape.x = shape.y = 0;

	this.addChild(shape);
}

trace('under stage (100,100) : ' + stage.getObjectsUnderPoint(new Point(0, 0)).length);
trace('-------------------');

before enter_frame
"under stage (100,100) : 0"
"under stage (0,0) : 0"

after enter_frame
"under stage (100,100) : 0"
"under stage (0,0) : 10"

Thank you :smile:
Your new test revealed a different issue. While the getObjectsUnderPoint list was much more accurate after the fixes, the coordinates for the shapes were not being calculated properly in the hit test, unless the ENTER_FRAME had occurred after they were created. The transform matrix for Sprite and Shape graphics was not being updated if a render had not occurred. This has been fixed.
I also found a better way to handle the main class, so that we don't have to wait for the ENTER_FRAME. Now instead of hardcoding "stage" to work, I actually have the main class being added to the stage before it's super () function is called. Native v2 still needs the render in order for getObjectsUnderPoint to work properly, but now HTML5 and native "next" return the same values before or after. It's the same as Flash now, except Flash still has the extra TextField, you can see it if you trace stage.getObjectsUnderPoint(new Point(0, 0)) rather than only checking the length :smile:

Thank you :smile:
Your new test revealed a different issue. While the getObjectsUnderPoint list was much more accurate after the fixes, the coordinates for the shapes were not being calculated properly in the hit test, unless the ENTER_FRAME had occurred after they were created. The transform matrix for Sprite and Shape graphics was not being updated if a render had not occurred. This has been fixed.
I also found a better way to handle the main class, so that we don't have to wait for the ENTER_FRAME. Now instead of hardcoding "stage" to work, I actually have the main class being added to the stage before it's super () function is called. Native v2 still needs the render in order for getObjectsUnderPoint to work properly, but now HTML5 and native "next" return the same values before or after. It's the same as Flash now, except Flash still has the extra TextField, you can see it if you trace stage.getObjectsUnderPoint(new Point(0, 0)) rather than only checking the length :smile:

Thank you for fixing it for html5. But it still does not work for Neko - is need to use enter_frame trick as usual. I had to say about that in the previous message.
And there is the new bug! And the new issue here https://github.com/openfl/openfl/issues/448.


fourseven:scss conflict with angular2-compilers package

Hi Guys,
I'm new to meteor and angular2 development. I have this app that I will use foundation(zurb) and angular2 framework. But when I install the foundation using this command (meteor add zurb:foundation-sites) and run the app I got a package conflict See the error messages:

While determining active plugins:
_   error: conflict: two packages included in the app (fourseven:scss and angular2-compilers) are both trying to handle *.scss_
_   error: conflict: two packages included in the app (fourseven:scss and angular2-compilers) are both trying to handle *.sass_

_   While determining active plugins:_
_   error: conflict: two packages included in the app (fourseven:scss and angular2-compilers) are both trying to handle *.scss_
_   error: conflict: two packages included in the app (fourseven:scss and angular2-compilers) are both trying to handle *.sass_

I tried to remove the fourseven:scss package but it also gives me an error "fourseven:scss is not a direct dependency in this project."
Is there a way to remove either of the 2 sass compilers?
Thanks in advance!

That looks more like a Meteor "issue" (not a Foundation / Angular one).
Note that GitHub issues aren't generally the good place for help / support (most open-source projects use GitHub issues for bugs and feature requests).
I see that you already opened a topic on the Meteor forum, you will have more chance there!
And if not already done, check their documentation.

Ah yes, I thought this is from meteor packages repo. I will close this issue now.thanks


[Create New Issue]: Find largest sum contigous subarray

Description
Find largest sum contigous subarray.
Domain
DSA
Type of Contribution
Documentation
Code of Conduct

[X] I follow Contributing Guidelines & Code of conduct of this project.

/assign

/assign


Decompiler produces incorrect code for 80C51 variant

Describe the bug
The decompiler ignores a lot of pin assignments for the following firmware.
firmware.zip

To Reproduce
Steps to reproduce the behavior:

load firmware; select 8051/default/default for language
go to address 0x0000 and hit 'd' to start disassembly
jump to address 0x6907

Expected behavior
A lot of the assembly instructions should be included in the decompilation. The repeated setting and clearing of P1.5, for example, toggles a pin on the microcontroller.
Environment (please complete the following information):

OS: Ubuntu 20.04
Java Version: openjdk 11.0.11 2021-04-20
Ghidra Version: 9.2 as well as 10.0_DEV
Ghidra Origin: built from git sources

See my comments in #1276 about this  - quick workaround is to edit the memory areas to set "SFR-BITS" to volatile.

The bytes at the bit locations are not seen by the decompiler as affecting anything.  So the value is trimmed as not needed.
It is an easy manual fix.  You can go to the P1.1-P1.7 bit locations, create a byte at each location and then change the data settings mutability to "volatile".
You can also set the volatile flag on an entire memory block.
The volatile attribute can be set in the processor specification .pspec file if the location should always be considered volatile, say a write only output register, a memory mapped IO port, or a timer register.
There is a really nice new improvement to the decompiler in the master branch and coming out soon in the next Ghidra release.
the read_volatile() and write_volatile() have been changed to normal C assignment syntax.  The volatile accesses are colored to indicate the volatile nature of the read/write.  With this change, putting volatile in any of the above ways is more palatable, as it doesn't munge up the data flow.
After setting the volatility flag as I've described, the function looks like this:

in 10.1.5 there would be many read_volatile(P1.x) and write_volatile(P1.x, value) pseudo function calls.

Cool, looking forward to try that.
I would argue that for 8051 and many other mcus, the .pspec files should by default have this kind of IO reg as volatile. I can't see any scenario where it makes sense for them not to be volatile, whether reading or writing...

Cool, looking forward to try that. I would argue that for 8051 and many other mcus, the .pspec files should by default have this kind of IO reg as volatile. I can't see any scenario where it makes sense for them not to be volatile, whether reading or writing...

I want to say thank you @emteere for that very helpful post.
And I want to second the point of making volatile the default.

I think this change makes it an easier choice to specify what IO registers should be marked volatile.  Previously it could make a mess of the decompiler output and data flow and was used sparingly.
Right now you can only make large address space areas volatile by address range, not individual register, or manually as described above.
There is an in progress change to allow a volatile tag on each individual entry in the .pspec file, so it would be good to wait until that change makes into into the baseline to make suggestions/PR.  This one area that someone who knows the processor would know best what should be volatile and what should not and add these tags to the .pspec file, either as an entire range, or individually.

We can leave this open until after 10.2 goes out and the volatile tag is added.  Then please feel free to submit a PR that tags the registers volatile individually, or a range or registers as it makes sense to do so.

In the current 10.2.x version you can also edit your 8051.pspec file from:
  <volatile outputop="write_volatile" inputop="read_volatile">
    <range space="SFR" first="0x0" last="0xFF"/>
  </volatile>

to:
  <volatile outputop="write_volatile" inputop="read_volatile">
    <range space="SFR" first="0x0" last="0xFF"/>
    <range space="BITS" first="0x80" last="0xFF"/>
  </volatile>

We'll make this change in patch.  It doesn't seem that making this change causes issues, unless there is a register in the group that should be non-volatile.
The changes in a new release will allow you to set a range of locations to volatile as above, and then set individual locations in the .pspec file to non-volatile, or to set locations individually to volatile if there are only a few instead of a range.

We'll make this change in patch.

Can you confirm, do you already have an internal ticket# tracking this or are you waiting for a PR here ?

The work on this ticket is complete.  See the above commit associated with the ticket closing.

Ah yes, missed that. Thanks !


Add notice on sub-charting cert-manager

A short but powerful notice not to use cert-manager as a sub-chart with Helm

/lgtm

@james-w can you retry

/lgtm


git-scm redesign: review app

the deploy failed. Does this mean anything to you @jasonlong ? I can try to have a look tomorrow
-----> Ruby app detected
-----> Compiling Ruby/Rails
-----> Using Ruby version: ruby-2.4.2
-----> Installing dependencies using bundler 1.15.2
       Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin -j4 --deployment
       Warning: the running version of Bundler (1.15.2) is older than the version that created the lockfile (1.16.1). We suggest you upgrade to the latest version of Bundler by running `gem install bundler`.
       Fetching gem metadata from https://rubygems.org/........
       Fetching version metadata from https://rubygems.org/..
       Fetching dependency metadata from https://rubygems.org/.

       Gems in the groups development and test were not installed.
       Bundled gems are installed into ./vendor/bundle.
       Post-install message from tire:
       ================================================================================
       Please check the documentation at <http://karmi.github.com/retire/>.
       --------------------------------------------------------------------------------
       IMPORTANT CHANGES LATELY:
       19e524c [ACTIVEMODEL] Exposed the response from `MyModel#.update_index` as the `response` method on return value
       bfcde21 [#916] Added support for the Suggest API (@marc-villanueva)
       710451d [#857] Added support for the Suggest API (@fbatista)
       See the full changelog at <http://github.com/karmi/tire/commits/v0.6.2>.
       --------------------------------------------------------------------------------
       Bundle completed (56.20s)
       Cleaning up the bundler cache.
       Warning: the running version of Bundler (1.15.2) is older than the version that created the lockfile (1.16.1). We suggest you upgrade to the latest version of Bundler by running `gem install bundler`.
       The latest bundler is 1.16.1, but you are currently running 1.15.2.
       To update, run `gem install bundler`
-----> Installing node-v6.11.1-linux-x64
-----> Installing yarn-v1.0.2
-----> Detecting rake tasks
-----> Preparing app for Rails asset pipeline
       Running: rake assets:precompile
       ** Invoke assets:precompile (first_time)
       ** Invoke assets:environment (first_time)
       ** Execute assets:environment
       ** Invoke environment (first_time)
       ** Execute environment
       ** Execute assets:precompile
       rake aborted!
       LoadError: cannot load such file -- sass
       /tmp/build_5454b5f10037b11085e2bde14a744056/git-git-scm.com-678fa76/vendor/bundle/ruby/2.4.0/gems/activesupport-4.2.10/lib/active_support/dependencies.rb:274:in `require'
       /tmp/build_5454b5f10037b11085e2bde14a744056/git-git-scm.com-678fa76/vendor/bundle/ruby/2.4.0/gems/activesupport-4.2.10/lib/active_support/dependencies.rb:274:in `block in require'
       /tmp/build_5454b5f10037b11085e2bde14a744056/git-git-scm.com-678fa76/vendor/bundle/ruby/2.4.0/gems/activesupport-4.2.10/lib/active_support/dependencies.rb:240:in `load_dependency'
       /tmp/build_5454b5f10037b11085e2bde14a744056/git-git-scm.com-678fa76/vendor/bundle/ruby/2.4.0/gems/activesupport-4.2.10/lib/active_support/dependencies.rb:274:in `require'
       /tmp/build_5454b5f10037b11085e2bde14a744056/git-git-scm.com-678fa76/vendor/bundle/ruby/2.4.0/gems/sprockets-3.7.1/lib/sprockets/autoload/sass.rb:1:in `<top (required)>'
       /tmp/build_5454b5f10037b11085e2bde14a744056/git-git-scm.com-678fa76/vendor/bundle/ruby/2.4.0/gems/activesupport-4.2.10/lib/active_support/dependencies.rb:274:in `require'
       /tmp/build_5454b5f10037b11085e2bde14a744056/git-git-scm.com-678fa76/vendor/bundle/ruby/2.4.0/gems/activesupport-4.2.10/lib/active_support/dependencies.rb:274:in `block in require'
       /tmp/build_5454b5f10037b11085e2bde14a744056/git-git-scm.com-678fa76/vendor/bundle/ruby/2.4.0/gems/activesupport-4.2.10/lib/active_support/dependencies.rb:240:in `load_dependency'
       /tmp/build_5454b5f10037b11085e2bde14a744056/git-git-scm.com-678fa76/vendor/bundle/ruby/2.4.0/gems/activesupport-4.2.10/lib/active_support/dependencies.rb:274:in `require'
       /tmp/build_5454b5f10037b11085e2bde14a744056/git-git-scm.com-678fa76/vendor/bundle/ruby/2.4.0/gems/sprockets-3.7.1/lib/sprockets/sass_compressor.rb:44:in `initialize'
       /tmp/build_5454b5f10037b11085e2bde14a744056/git-git-scm.com-678fa76/vendor/bundle/ruby/2.4.0/gems/sprockets-3.7.1/lib/sprockets/sass_compressor.rb:24:in `new'
       /tmp/build_5454b5f10037b11085e2bde14a744056/git-git-scm.com-678fa76/vendor/bundle/ruby/2.4.0/gems/sprockets-3.7.1/lib/sprockets/sass_compressor.rb:24:in `instance'
       /tmp/build_5454b5f10037b11085e2bde14a744056/git-git-scm.com-678fa76/vendor/bundle/ruby/2.4.0/gems/sprockets-3.7.1/lib/sprockets/sass_compressor.rb:28:in `call'
       /tmp/build_5454b5f10037b11085e2bde14a744056/git-git-scm.com-678fa76/vendor/bundle/ruby/2.4.0/gems/sprockets-3.7.1/lib/sprockets/processor_utils.rb:75:in `call_processor'
       /tmp/build_5454b5f10037b11085e2bde14a744056/git-git-scm.com-678fa76/vendor/bundle/ruby/2.4.0/gems/sprockets-3.7.1/lib/sprockets/processor_utils.rb:57:in `block in call_processors'
       /tmp/build_5454b5f10037b11085e2bde14a744056/git-git-scm.com-678fa76/vendor/bundle/ruby/2.4.0/gems/sprockets-3.7.1/lib/sprockets/processor_utils.rb:56:in `reverse_each'
       /tmp/build_5454b5f10037b11085e2bde14a744056/git-git-scm.com-678fa76/vendor/bundle/ruby/2.4.0/gems/sprockets-3.7.1/lib/sprockets/processor_utils.rb:56:in `call_processors'
       /tmp/build_5454b5f10037b11085e2bde14a744056/git-git-scm.com-678fa76/vendor/bundle/ruby/2.4.0/gems/sprockets-3.7.1/lib/sprockets/loader.rb:134:in `load_from_unloaded'
       /tmp/build_5454b5f10037b11085e2bde14a744056/git-git-scm.com-678fa76/vendor/bundle/ruby/2.4.0/gems/sprockets-3.7.1/lib/sprockets/loader.rb:60:in `block in load'
       /tmp/build_5454b5f10037b11085e2bde14a744056/git-git-scm.com-678fa76/vendor/bundle/ruby/2.4.0/gems/sprockets-3.7.1/lib/sprockets/loader.rb:317:in `fetch_asset_from_dependency_cache'
       /tmp/build_5454b5f10037b11085e2bde14a744056/git-git-scm.com-678fa76/vendor/bundle/ruby/2.4.0/gems/sprockets-3.7.1/lib/sprockets/loader.rb:44:in `load'
       /tmp/build_5454b5f10037b11085e2bde14a744056/git-git-scm.com-678fa76/vendor/bundle/ruby/2.4.0/gems/sprockets-3.7.1/lib/sprockets/cached_environment.rb:20:in `block in initialize'
       /tmp/build_5454b5f10037b11085e2bde14a744056/git-git-scm.com-678fa76/vendor/bundle/ruby/2.4.0/gems/sprockets-3.7.1/lib/sprockets/cached_environment.rb:47:in `load'
       /tmp/build_5454b5f10037b11085e2bde14a744056/git-git-scm.com-678fa76/vendor/bundle/ruby/2.4.0/gems/sprockets-3.7.1/lib/sprockets/base.rb:66:in `find_asset'
       /tmp/build_5454b5f10037b11085e2bde14a744056/git-git-scm.com-678fa76/vendor/bundle/ruby/2.4.0/gems/sprockets-3.7.1/lib/sprockets/base.rb:73:in `find_all_linked_assets'
       /tmp/build_5454b5f10037b11085e2bde14a744056/git-git-scm.com-678fa76/vendor/bundle/ruby/2.4.0/gems/sprockets-3.7.1/lib/sprockets/manifest.rb:134:in `block in find'
       /tmp/build_5454b5f10037b11085e2bde14a744056/git-git-scm.com-678fa76/vendor/bundle/ruby/2.4.0/gems/sprockets-3.7.1/lib/sprockets/manifest.rb:133:in `each'
       /tmp/build_5454b5f10037b11085e2bde14a744056/git-git-scm.com-678fa76/vendor/bundle/ruby/2.4.0/gems/sprockets-3.7.1/lib/sprockets/manifest.rb:133:in `find'
       /tmp/build_5454b5f10037b11085e2bde14a744056/git-git-scm.com-678fa76/vendor/bundle/ruby/2.4.0/gems/sprockets-3.7.1/lib/sprockets/manifest.rb:185:in `compile'
       /tmp/build_5454b5f10037b11085e2bde14a744056/git-git-scm.com-678fa76/vendor/bundle/ruby/2.4.0/gems/sprockets-rails-3.2.1/lib/sprockets/rails/task.rb:68:in `block (3 levels) in define'
       /tmp/build_5454b5f10037b11085e2bde14a744056/git-git-scm.com-678fa76/vendor/bundle/ruby/2.4.0/gems/sprockets-3.7.1/lib/rake/sprocketstask.rb:147:in `with_logger'
       /tmp/build_5454b5f10037b11085e2bde14a744056/git-git-scm.com-678fa76/vendor/bundle/ruby/2.4.0/gems/sprockets-rails-3.2.1/lib/sprockets/rails/task.rb:67:in `block (2 levels) in define'
       /tmp/build_5454b5f10037b11085e2bde14a744056/git-git-scm.com-678fa76/vendor/bundle/ruby/2.4.0/gems/rake-12.3.0/exe/rake:27:in `<top (required)>'
       Tasks: TOP => assets:precompile
       (See full trace by running task with --trace)
 !
 !     Precompiling assets failed.
 !
 !     Push rejected, failed to compile Ruby app.
 !     Push failed

The sass and asset pipeline clues make me think it has to do with the changes @tarebyte helped put into place maybe?

@pedrorijo91 I totally forgot to open the PR for this branch. Would you prefer I open one so that I can keep the original comment body updated with the ongoing changes?

feel free to do as you find it easier/better @jasonlong :)

Ok, since the deployment doesn't work anyhow, I'll go ahead and close this and open a new one with some placeholder content that I'll keep updated along the way.


Update Dockerfiles to follow best practices

Update to the build image to the latest version of Go 1.12.x.
Ensures all build commands must execute successfully.
Removes APK index cache from final image, which reduces the final image size by ~2MB.
Uses UID for nobody in order to work with the Kubernetes Pod securityContext runAsNonRoot as it cannot resolve the user ID.
Adds "mini" to the mini Dockerfile image tag.
Formatting and style changes.

/assign @raffo

/approve
/lgtm

@taharah Thank you :+1:


GFM

Todo:

[x] Multiple underscores in words (covered by em converter)
[ ] Auto-linking
[x] Strikethrough
[ ] Fenced code blocks
[ ] Syntax highlighting(?)
[x] Tables

Source: https://help.github.com/articles/github-flavored-markdown/

[ ] Newlines
[x] Task lists
[ ] References

Source: https://help.github.com/articles/writing-on-github

:+1:


[Feature] Toggle pilot information on systems

Request:
Allow for permanent expanded pilot list on a system by single clicking it rather the a temporary mouse over expansion.

+1 for this. could be a nice feature.

I have found a way to do it !
In js/app/map/map.js i have edited :
https://github.com/exodus4d/pathfinder/blob/master/js/app/map/map.js#L44
systemBodyItemHeight: '100%',
https://github.com/exodus4d/pathfinder/blob/master/js/app/map/map.js#L276
height: config.systemBodyItemHeight
https://github.com/exodus4d/pathfinder/blob/master/js/app/map/map.js#L296
height: 0 + config.systemBodyItemHeight,
To remove the arrow, in the same file :
https://github.com/exodus4d/pathfinder/blob/master/js/app/map/map.js#L219
width: '0px'
https://github.com/exodus4d/pathfinder/blob/master/js/app/map/map.js#L511
class: ['fa',config.systemHeadExpandClass].join(' ')
then i used gulp to build the js and it work well for me.

Ill think over a way to make it configurable. Because some people don´t want to show all the names (including me) :)


Update to ruby 2.4.5

This bumps the ruby version to 2.4.5 (2.4 is the oldest currently supported ruby). This is also now declared in a .ruby-version file (instead of only in .travis.yml) so it can be used by both developers and Travis.
This version will likely get bumped again soon, but this gets the CI back to green with a supported ruby.

@johnsja There is no version spec for that dependency. The Gemfile.lock changes were the result of a bundle update therubyracer.


Error with Detectron2

Hi,
I used byol.yaml to train resnet50 backbone with BYOL and custom dataset. When I converted the trained model to detectron2 model and used it with train_object_detection.py and coco_R_50_C4_2x.yaml, I got error that GT data does not have gt masks. However, I wanted to train this and use FRCNN as my work and not MRCNN which requires mask data.
How can I solve this error?

I figured it out! You need to switch the mask flag in the config files to False so it is using Faster RCNN

I figured it out! You need to switch the mask flag in the config files to False so it is using Faster RCNN


Micro change

test text

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


⚠ Bofrost.it has degraded performance

In d0036d6, Bofrost.it (https://www.bofrost.it) experienced degraded performance:

HTTP code: 200
Response time: 3445 ms

Resolved: Bofrost.it performance has improved in 5559019 after 18 minutes.


Move to the preview.8 SDK

Fixes #377 - Dlls get a bunch of new metadata from the compiler
Unblocks #330 @Kahbazi - I think there was a bug in the preview 6 SDK about the Pipes library on 3.1. Can you rebase after this is merged and try again?
Blocked: We need the CI agents to be updated to VS 16.8.0 Preview 2 to unblock the build.

/azp run

/azp run

/azp run

/azp run


Fix deprecated symbol literals

Symbol literals 'example  will actually invoke Symbol("example"). With 2.13 they are deprecated.
Related to #671

Codecov Report

Merging #718 into develop will decrease coverage by 0.11%.
The diff coverage is 100%.

@@             Coverage Diff             @@
##           develop     #718      +/-   ##
===========================================
- Coverage    89.67%   89.56%   -0.12%
===========================================
  Files          112      112
  Lines         8938     8938
  Branches       325      325
===========================================
- Hits          8015     8005      -10
- Misses         923      933      +10

Impacted Files
Coverage Δ

...in/scala/com/twitter/algebird/BaseProperties.scala
97.61% <100%> (ø)
:arrow_up:

...ala/com/twitter/algebird/ApproximateProperty.scala
72% <0%> (-10%)
:arrow_down:

...src/main/scala/com/twitter/algebird/Interval.scala
81.73% <0%> (-3.48%)
:arrow_down:

...re/src/main/scala/com/twitter/algebird/QTree.scala
78.23% <0%> (-1.18%)
:arrow_down:

.../main/scala/com/twitter/algebird/BloomFilter.scala
94.24% <0%> (-0.45%)
:arrow_down:

.../main/scala/com/twitter/algebird/Approximate.scala
90.32% <0%> (+1.61%)
:arrow_up:

.../main/scala/com/twitter/algebird/Applicative.scala
61.76% <0%> (+2.94%)
:arrow_up:

Continue to review full report at Codecov.

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


G2在火狐浏览器中无法运行

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

Reproduction link
https://g2.antv.vision/zh/examples/case/line#line1
Steps to reproduce
演示代码报错，请检查
'block' member of ScrollIntoViewOptions 'nearest' is not a valid value for enumeration ScrollLogicalPosition.

Environment
Info

g2
4.1.13

System
win10

Browser
火狐 13.0.1

网站兼容性上的问题，我们继续跟进一下。你可以先切换使用 chrome 查看。

已经处理了兼容性。https://g2.antv.vision/zh/docs/manual/faq/#浏览器兼容性


Enable --add-printers in reasonbuild

This will create printers for user-defined types by default.

@tekknolagi Do you think we should make this as a default behavior, or do you think we should make this as an option and make it default once we think this is stable enough?

@yunxing Fair point. What's the best way to make this an option?

@tekknolagi We don't control ocamlbuild so I don't think we can add a command line option to it. Maybe here we can use a environment variable?
This will be temporary for people to try out before we switch this into a default behavior so I'm not too worried about it.

Would it be reasonable to have an extra entrypiont rebuildwithprint while we test it out?

@jordwalke Implementation-wise, reusing the same command would be much easier.

Environment variable is kind of gross but if it's definitely only temporary then I can do that.

Since this is based on ocamlbuild using a tag might make sense.  That would make it easy for users to apply the flag per-file.
Also, if there's a generic feature here which is generally useful in ocamlbuild Gabriel Scherer is usually very open to PRs for the project.

@hcarty What do you mean exactly?

ocamlbuild uses tags, either specified on the command line, in a _tags file or myocamlbuild.ml, to specify most compilation flags.  It's possible (and somewhat common) to specify custom tags.
So a user could have a tags file which says:
true: add_type_printers

to add show_* functions for all of their types in all of their files, for example.  Or:
src/lib.re: add_type_printers

to only add printers for the types in src/lib.re.
Some documentation is available: https://github.com/ocaml/ocamlbuild/blob/master/manual/manual.adoc#tags-and-the-code-_tags-code-file and https://github.com/ocaml/ocamlbuild/blob/master/manual/manual.adoc#flag-declarations - the rest of the ocamlbuild manual may be helpful too.
For examples of tag implementations you can see https://github.com/ygrek/mybuild and https://github.com/hcarty/ocamlbuild-plugins.  https://github.com/hcarty/ocamlbuild-plugins/tree/master/tests/static is a relatively simple example of defining and using a new tag.

Looks like right now the easiest non-PR way to do this would be to add the tag pp(refmt --print binary --add-printers) to files they want to add printers to.

@hcarty @yunxing @jordwalke if anybody has feedback on how we might approach this with parametrized flags (ie reason(add_printers ...)), please let me know.

@yunxing I think we can just ship as-is for now.

This is good to merge. I don't think the CI is currently testing rebuild.


Bump CHaP and remove most constraints from the cabal file

I revised a bunch of things in CHaP and the constraints are not needed
any more.

Perhaps @newhoggy could review.

Maybe @disassembler ?

bors r+


Splittest fixture requestClient/user mismatch

Under certain circumstances (User is assigned a fixture A, then switches to a different client which is assigned fixture B) a user's client may be assigned a different fixture than the user himself.
This leads to two problems.

If you alternately use the same splittest based on user and based on client, as done in https://github.com/cargomedia/sk/pull/902, the variations of the feature you want to test will be mixed, depending on which fixture is used, the user's or the client's.
Conversion always uses the user's variation, not the client's. A user may have been assigned variation A while having most of his user experience under variation B, which leads to incorrect conversion.

The number of users affected by this is probably low, since it can only happen if you switch clients, deliberately delete cookies or use a client that doesn't store cookies, e.g. chrome in incognito mode.
Thoughts @njam, @fauvel?

Makes sense. Some call similar to the existing setUserForRequestClient() in CM_Session::setUser().
One concern I have is that we currently never change a variation fixture after it has been assigned. We need to be careful to not have inconsistent data.
@fauvel you have some more thoughts maybe?

Makes sense. Some call similar to the existing setUserForRequestClient() in CM_Session::setUser().
One concern I have is that we currently never change a variation fixture after it has been assigned. We need to be careful to not have inconsistent data.
@fauvel you have some more thoughts maybe?

I rekon we have developed this together @njam, and I already had the same concerns than @alexispeter. We've opted for this solution for performance reasons.

We've also had a look at usage data (number of clients per user, based on GA data if I remember correctly), and considered that this issue was not statistically relevant.

IMO we ignore it then.
@alexispeter please close if you agree.

I guess...


Remove skips not used by any lane

We previously had a lot of trouble with a lane running on "kubernetes in docker" (kind).
The only remaining use for it is the SR-IOV lane, that only runs a subset of tests.
Remove no longer relevant skips - the issues referenced by the skip are already closed.
Release note:

NONE

EDIT: Can you perhaps just try to remove these?

Please unhold if it does not work.
/hold

/hold
Sending a cautious email to kubevirt-dev and waiting 2 weeks before merging.

Apparently that file comes from kubevirtci.

Fixed merge conflict.
Will abuse this almost-no-changes pull request to test an optional lane before enabling it. Sorry for the noise.
/test pull-kubevirt-e2e-k8s-1.20-rook-ceph

/test pull-kubevirt-e2e-k8s-1.20-rook-ceph

No replies, assuming it's fine.
/hold cancel


Ringo's unzip doesn't handle symlinks

i ran into this when installing a ringo package with symbolic links in it - ringo creates the symlinks as empty files.
i found out that this kind of info is stored in extra fields per ZipEntry, which - afaict - we can't access with java.util.zip. github's zip files do contain that extra info: the symbolic links are created correctly if i unzip with "UnZip 6.00 of 20 April 2009, by Debian."
apache ant's zip tools also seems to handle them http://www.jajakarta.org/ant/ant-1.6.1/docs/ja/manual/api/org/apache/tools/zip/AsiExtraField.html
i guess this issue is more of a caveat than fixable.

For the record, there's a byte[] getExtra() method in java.util.zip.ZipEntry:
http://docs.oracle.com/javase/7/docs/api/java/util/zip/ZipEntry.html#getExtra()
But the returned byte array seems to have a different format than the one specified in the apache ant documentation linked above. The first two bytes are 85 and 84 (0x5554) instead of 117 and 110 (0x756e).

I’m closing this issue because it has been inactive for a long time. This probably means that it is not reproducible or it has been fixed in a newer version. If it’s an enhancement and hasn’t been taken on for so long, then it seems no one has the time to implement this / there is no interest in it.
Please reopen if you still encounter this issue with the current master version or there is a need to address this issue.


Remove unued settings.

Codecov Report

Merging #109 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #109   +/-   ##
=======================================
  Coverage   27.85%   27.85%
=======================================
  Files          49       49
  Lines        1260     1260
  Branches       40       40
=======================================
  Hits          351      351
  Misses        909      909

Continue to review full report at Codecov.

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


Reduce CI times to under 10 minutes

CI currently takes about 30 minutes to complete. I'm optimistic that with some more deliberate caching, use of pre-built containers, and perhaps a smarter incremental/build test strategy we might be able to achieve significant improvements here.

(This is a more or less arbitrary target time :)

Getting closer!

If we can split the integrations to run them in parallel, I think we can nearer to 5 minutes.


Add threads

https://github.com/cazala/coin-hive/issues/7
I think we should refactor the options thing instead (might be easier to add some with a small refactor)

will do a cleaner pull request ;)


Updated Notebooks Documentation to remove Data Splitter. For issue #432

RandomSplitter is now passed by default. Therefore, I have updated the notebooks, in the notebooks folder.
1- The following line is removed:
Randomly split our data into train/valid
data_splitter = RandomSplitter([0.8, 0.2])
2- The following line is modified: removed data_splitter from the parser.parse() call
Before:
train_records, valid_records = parser.parse(data_splitter)
After:
train_records, valid_records = parser.parse()

Your first PR has already been merged here #433. If you wish you can work on this issue: #432 (You already fixed the issue #431).