No more exposure checks are possible, limit is already reached

Avoid duplicates

[ ] Bug is not mentioned in the FAQ
[ ] Bug is specific for Android only, for general issues / questions that apply to iOS and Android please raise them in the documentation repository
[ ] Bug is not already reported in another issue

Technical details

Device name: Galaxy A40
Android version: 11
App version: 2.22.1
ENF version:<PHONE_NUMBER>0

Describe the bug

Hey!
A couple of days ago I opened the app after a long time of not using it. It now shows me that my last update was in June and whenever its trying to update I get a message about how i already reached the limit. This issue persisted over the last 3 days.
I also have discovered that I dont have the Google option under Settings > Google > ...   so I dont know how to send an exposure log.
Kind regards
Emi220

@Emi220
The FAQ https://www.coronawarn.app/en/faq/results/#API39508 discusses the problem, but it probably won't help you much.
You may need to reset the app. If it is saying the last update was in June, that is almost one year ago. It might be helpful if you could add a screenshot. Also check that the phone is currently showing the correct date/time.
I see that you also reported this problem in https://github.com/corona-warn-app/cwa-app-android/issues/1459#issuecomment-1126905868.

I also have discovered that I dont have the Google option under Settings > Google > ... so I dont know how to send an exposure log.

I'm not sure what you mean by this. Are you saying that there is no Google option under Settings? There is not a second option under "Google" which is also labelled "Google" . There should however be a "COVID-19 Exposure Notifications" option. Is that what you mean is missing? Normally you should be able to view the exposure checks through:
(Android) Settings > Google > COVID-19 Exposure Notifications > three-dot menu > Exposure checks

Heres the message I get when trying to update:

The details:

The date and time on my phone are set automatically.
I finally found out where to acess these exposure checks! Seems like I misunderstood the whole thing.
Here they are:
all-exposure-checks.txt

@Emi220
Thank you very much for the further details. That is very helpful.
Your Exposure checks log file shows one entry:
[{"timestamp":"26 June 2022, 18:37","keyCount":45898,"matchesCount":0,"appName":"Corona-Warn","hash":"\/Ax09xygNDVolr0LVCVxO+kOwPJ2pu+vRtx5slyhHM0="}]
The time stamp is 26 June 2022. That means that at some point your phone was running with an incorrect future date. This is known to cause a problem.
There is an open issue reported https://github.com/corona-warn-app/cwa-app-android/issues/4303 "Risk Warning stops after checking future dates" with the version 2.12.2 in October 2021.
Resetting the app is your best option at this time.

When you reset the app please note that all your stored certificates, as well as contact journal entries, registered test results and check ins will be deleted!

The problem is also described in the open issue https://github.com/corona-warn-app/cwa-app-android/issues/3629

To remove the exposure check with the wrong time-stamp you need to uninstall and re-install the app. I'm not sure if this is completely necessary to get working again, but it is the only clean solution.
We are still waiting for feedback from the developer team on these related issues.

Yep resetting the app works
Thanks guys!


Graph Explorer Stuck on "Loading..."

Describe the bug
https://developer.microsoft.com/en-us/graph/graph-explorer/
Whenever I press "Run query" it shows "Loading..." but never loads the resources for request or response, even when I get OK - 200 responses. I tried on Edge and Chrome on 2 different computers same issue. This is my first attempt to use the Graph Explorer.
Expected behavior
Shows request and response resources.
Screenshots

Desktop (please complete the following information):

OS: Windows 10
Browser [Chrome, Edge]
Version [Version 114.0.5735, Version 114.0.1823.51]

Additional context
I use the Graph Explorer while logged in with an organization account.

Hey @MAbdElRaouf. It seems you have some filters blocking Monaco editor downloads.
The same issue was reported here: https://github.com/microsoftgraph/microsoft-graph-explorer-v4/issues/2398
Let me know if that solution works for you

Hi @Onokaev, you are right turns out https://cdn.jsdelivr.net was recently censored in Egypt, along with other websites.

@MAbdElRaouf  thank you for reporting this issue - we are reviewing possible solutions internally and will revert as soon as possible.


Bug: Race condition during game loop rebuild

When you dynamically load assets it can happen that you end up with a slightly out of date version of the model.
The code that does the rebuild is horrid, and I've long meant to clean it up - now's the time!

Fixed. Tested on the roguelike.


expose git-commit-timestamp

part of https://issues.redhat.com/browse/APPSRE-2610
follow up on https://github.com/app-sre/qontract-validator/pull/23

Added tests in 4649c18

Can you take a new look? I've added a few things after the first LGTM :)

impressive typescript skills :)
lgtm!


Cycle by cycle

Adding cycle by cycle information in FlexPRET.

@lsk567 I think Youri accidentally added a bunch of files that shouldn't be added here. So just letting you know that Youri will clean up and send a new PR. :)

Accidentally opened


Use HEVC instead of H264

We can't do for now, as Chrome doesn't yet support it, and they have no plans to support it yet. Just opening this issue so we can do it eventually.

Related:
https://github.com/wulkano/kap/issues/220#issuecomment-359052563
For now we're discussing generating a low-res preview video using ffmpeg for the editor. We already support exporting HEVC because ffmpeg supports it, for the preview we can use its fast mode.
https://stackoverflow.com/questions/39473434/ffmpeg-command-for-faster-encoding-at-a-decent-bitrate-with-smaller-file-size
At the very least we should handle HEVC imports with an error message.


Problem using PostgreSQL database

Hi, I'm connecting to a remote PostgreSQL database using the following sqlpage.json file. Actual parameters are omitted but it connects normally:
{
    "database_url":	"postgres://<user>:<password>:<port>/<dbname>",
	"listen_on": "<IP_ADDRESS>:9001"
}

This is the index.json file:
SELECT 'hero' AS component,
    'Testing SQLPage' AS title,
    'connected to PostgreSQL' AS description_md;

SELECT 'list' AS component,
    'Users' AS title;
select a.name as title from assets a;

When launching sqlpage.exe from a command window it reports some warnings that seem to be related to the default "it works" page:
[2023-11-16T13:27:35Z INFO  sqlpage::webserver::database::connect] Connecting to database: postgres://<my_database>
[2023-11-16T13:27:35Z WARN  sqlpage::webserver::database::sql] Failed to prepare "SELECT 'hero' AS component, 'It works !' AS title, 'If you can see this, then SQLPage v' || CAST($1 AS TEXT) || ' is running correctly on your server. Congratulations! ' AS description": Failed to prepare SQL statement:
    SELECT 'hero' AS component, 'It works !' AS title, 'If you can see this, then SQLPage v' || CAST($1 AS TEXT) || ' is running correctly on your server. Congratulations! ' AS description: error returned from database: prepared statement "sqlx_s_1" already exists: prepared statement "sqlx_s_1" already exists
[2023-11-16T13:27:35Z WARN  sqlpage::webserver::database::sql] Failed to prepare "SELECT CAST($1 AS TEXT) AS contents, 1 AS code": Failed to prepare SQL statement:
    SELECT CAST($1 AS TEXT) AS contents, 1 AS code: error returned from database: prepared statement "sqlx_s_2" already exists: prepared statement "sqlx_s_2" already exists
[2023-11-16T13:27:35Z WARN  sqlpage::webserver::database::sql] Failed to prepare "SELECT 'You can customize your server''s [configuration](https://github.com/lovasoa/SQLpage/blob/main/configuration.md)\r\nby creating a file in `' || CAST($1 AS TEXT) || '/sqlpage/sqlpage.json`.' AS contents_md": Failed to prepare SQL statement:
    SELECT 'You can customize your server''s [configuration](https://github.com/lovasoa/SQLpage/blob/main/configuration.md): error returned from database: prepared statement "sqlx_s_2" already exists: prepared statement "sqlx_s_2" already exists
[2023-11-16T13:27:35Z INFO  sqlpage::webserver::database::migrations] Applying migrations from 'C:\Users\...\sqlpage/migrations'
[2023-11-16T13:27:35Z INFO  sqlpage::webserver::database::migrations] No migration found. You can specify database operations to apply when the server first starts by creating files in sqlpage/migrations/<VERSION>_<DESCRIPTION>.sql where <VERSION> is a number and <DESCRIPTION> is a short string.
[2023-11-16T13:27:35Z INFO  sqlpage] Starting server on <IP_ADDRESS>:9001
[2023-11-16T13:27:35Z INFO  actix_server::builder] starting 8 workers
[2023-11-16T13:27:35Z INFO  actix_server::server] Actix runtime found; starting in Actix runtime
[2023-11-16T13:27:35Z INFO  sqlpage] Server started successfully.
        SQLPage is now running on http://<IP_ADDRESS>:9001/
        You can write your website's code in .sql files in C:\Users\...\sqlpage-windows.

When I open the page (using Chrome) I see this error:
Error in query number 1:
Failed to execute SQL statement:
SELECT a.name AS title FROM assets AS a
Backtrace
error returned from database: prepared statement "sqlx_s_3" already exists
prepared statement "sqlx_s_3" already exists

What am I doing wrong?

Hi ! This indeed sounds like a bug ! Do you use pgbouncer ? Does the problem also occurs when connecting to the database directly ? SQLPage has its own connection pool.

If you are indeed connecting SQLPage to a connection pooler instead of directly to the database, can you try setting max_database_pool_connections to 0 and report whether or not the problem persists ?

The issue seems to have been fixed by setting max_database_pool_connections to 1 or greater. When I tried to set the value to 0 another error occurred:
thread 'main' panicked at C:\Users\runneradmin\.cargo\registry\src\index.crates.io-6f17d22bba15001f\crossbeam-queue-0.3.8\src\array_queue.rs:94:9:
capacity must be non-zero
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

Yes, I meant to 1, of course, sorry ! Are you indeed using pgbouncer ? Which version ? pgbouncer did not support prepared statement tracking until recently: https://github.com/pgbouncer/pgbouncer/pull/845

As far as I know I'm not using pgbouncer. The remote database is owned by a supplier which gave us access to create custom reports, I don't know if pgbouncer is running on server side.
Anyway, this morning the warnings came out again:
[2023-11-17T07:06:48Z WARN  sqlpage::webserver::database::sql] Failed to prepare "SELECT 'hero' AS component, 'It works !' AS title, 'If you can see this, then SQLPage v' || CAST($1 AS TEXT) || ' is running correctly on your server. Congratulations! ' AS description": Failed to prepare SQL statement:
    SELECT 'hero' AS component, 'It works !' AS title, 'If you can see this, then SQLPage v' || CAST($1 AS TEXT) || ' is running correctly on your server. Congratulations! ' AS description: error returned from database: prepared statement "sqlx_s_2" already exists: prepared statement "sqlx_s_2" already exists
[2023-11-17T07:06:48Z WARN  sqlpage::webserver::database::sql] Failed to prepare "SELECT CAST($1 AS TEXT) AS contents, 1 AS code": Failed to prepare SQL statement:
    SELECT CAST($1 AS TEXT) AS contents, 1 AS code: error returned from database: prepared statement "sqlx_s_3" already exists: prepared statement "sqlx_s_3" already exists
[2023-11-17T07:06:48Z WARN  sqlpage::webserver::database::sql] Failed to prepare "SELECT 'You can customize your server''s [configuration](https://github.com/lovasoa/SQLpage/blob/main/configuration.md)\r\nby creating a file in `' || CAST($1 AS TEXT) || '/sqlpage/sqlpage.json`.' AS contents_md": Failed to prepare SQL statement:
    SELECT 'You can customize your server''s [configuration](https://github.com/lovasoa/SQLpage/blob/main/configuration.md): error returned from database: prepared statement "sqlx_s_4" already exists: prepared statement "sqlx_s_4" already exists

the errors during query preparation appeared as well:
Error in query number 1:
Failed to execute SQL statement:
SELECT a.name AS title FROM assets AS a
Backtrace
error returned from database: prepared statement "sqlx_s_3" already exists
prepared statement "sqlx_s_3" already exists

After relaunching the program a couple of times now seems to be working, even if the warning messages reported above are still present

It indeed looks like an old pgbouncer that does not track prepared statements correctly. I'll see about adding an option not to use prepared statements. The performance would be worse, but you would get rid of these errors

I updated our postgres database driver to randomize prepared statement names, which should prevent name collisions when using a connection pooler. Can you try and confirm this fixes your issue ?
The easiest way to try the latest changes is by using the docker image with lovasoa/sqlpage:main

@vks2 : can you open a new issue, ideally with a way to reliably reproduce the problem, and the exact error message and logs ?


[W-11379845] - Fix final donation date

Technical Design Review
[Technical Design Review] W-11379845 - NPSP
Changes
Updated the Final Donation Date logic updating the getFinalDonations apex method from apex class RD2_ETableController.
Issues Closed
W-11379845

Thanks @gerardorodriguezsf, is there a reason why the changes in this and this PR #7013 were duplicated?

@voduyemi Sorry, I fixed the PR base.

Thanks @gerardorodriguezsf, is there a reason why the changes in this and this PR #7013 were duplicated?

In the old implementation there was an internal custom logic to cache the recurring donation record, and there was a lot of logic to get the final donation date, now it's more clear and it's avoiding the custom cache issue.

This PR has 80 changed files and many of them are completed unrelated to this work?

It wasn't from our side, we only updated 2 files in this PR, but this pull request added the other files. what should we do?

@gerardorodriguezsf @force2b The merge you mentioned was a standard merge into feature/240.  The large number of files from the merged PR are apparently in feature/240__fix_final_donation_date, but not in feature/240__payment_with_elevate.  It might be a good idea to check in the RelEng to help understand why.

@davidmreed @gerardorodriguezsf @force2b Not sure what is going on here, but something definitely seems amiss.  There are roughly 80 files identified as changed in this PR that were not originally a part of the PR, but that seems incorrect.
For example, check the changes flagged in STG_PanelRD.page.  The files appear to be identical in feature/240__payment_with_elevate and feature/240__fix_final_donation_date, yet they it is flagged as a change.  Both branches seem to have received the down merge from 240, but the comparison still seems to reflect the status before the down merge in feature/240__payment_with_elevate.
Recommendations??


Documentation for setting up D++ in CLion with CMake and vcpkg

Clear instructions on how to set up the D++ library by installation through vcpkg and then updating CLion project settings and CMakeLists.txt
Tested for ping/pong bot

You are directing the PR onto the wrong branch, please direct the dev branch.

You are directing the PR onto the wrong branch, please direct the dev branch.
Done.


Bug/add array to lookup kwargs

TLDR; bad indentation is a serious crime in python. fixed and added tests.


Add reverse transliteration ability

There is one transliteration schema with ability to reverse transliteration: ISO 9:1995 (https://dangry.ru/iuliia/#unambiguous)
That's the plan:

Add ability to mark certain schemas as 'reversible' (probably yaml config, schemas maintainer does not provide such info)
Add ability to reverse transliteration (basically pass Cyrillic string to .translit and get Latin string back)
Add specs for this implementation

hi
What do you think about adding .untranslit method?
In this method it would be possible to filter only supported reversed schemas.
this method could use only reversable schemas and with this method i will be possible to implement transliteration/untransliteration with external schemas in future.
something like this:
iuliia -t 'какой-то текст' --schema /path/to/schema.json
iuliia -u 'kakoy-to tekst' --schema /path/to/reversed_schema.json

.untranslit seems interesting. So will it throw an exception if no reversible schema used to reverse?
About external schemas, I'm not sure that will be that much of a needed feature, cause nalgeon maintain available schemas, and we just use schemas he provide. Sure we can add such feature, I'll think over it. In that issue let's target only reverse translit using existing schemas.

.untranslit seems interesting. So will it throw an exception if no reversible schema used to reverse?

Raising the exception when user specified incorrect schema is sure a good thing.
And someday it could become warning. We can try to untranslit non-reversable schemas with no guarantees warning.
But for current issue roadmap is:

Add ability to mark certain schemas as 'reversible' (probably yaml config, schemas maintainer does not provide such info)

Add ability to reverse transliteration (basically pass Cyrillic string to .untranslit and get Latin string back)

Add specs for this implementation

Also, it might be nice to add reversible_schemas method to return only reversible schemas.
Anyway, roadmap is fine.


Spring Guide recommends to use obsolete method

See document https://spring.io/guides/gs/rest-service-cors/#_enabling_cors
Code below tries to use deprecated WebMvcConfigurerAdapter, instead of inline interface implementation:
    @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurerAdapter() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/greeting-javaconfig").allowedOrigins("http://localhost:9000");
            }
        };
    }

https://jira.spring.io/browse/SPR-16790

This should be fixed by #19

This should be fixed by #19

Not fixed after almost 1 year, the guide still uses the deprecated WebMvcConfigurerAdapter.

#19 was never merged. Maybe one of the maintainers could have a look?


fix(tauri.js): api tauri import

What kind of change does this PR introduce? (check at least one)

[x] Bugfix
[ ] Feature
[ ] New Binding Issue #___
[ ] Code style update
[ ] Refactor
[ ] Build-related changes
[ ] Other, please describe:

Does this PR introduce a breaking change? (check one)

[ ] Yes. Issue #___
[ ] No

The PR fulfills these requirements:

[ ] It's submitted to the dev branch and not the master branch
[ ] When resolving a specific issue, it's referenced in the PR's title (e.g. fix: #xxx[,#xxx], where "xxx" is the issue number)

If adding a new feature, the PR's description includes:

[ ] A convincing reason for adding this feature (to avoid wasting your time, it's best to open a suggestion issue first and wait for approval before working on it)

Other information:
Seems a refactor forgot to reassign the import location of tauri.js

Sigh:
E: Failed to fetch http://azure.archive.ubuntu.com


Cant get two-way value syncing to work

How can i send the country key through the event and get the corresponding country selected.
right now it just gets overwritten to a string.
<template>
    <div>
        <multiselect
            :selected.sync="selected"
            :options="options"
            @update="updateSelected"
            :searchable="true",
            :close-on-select="true",
            :allow-empty="false",
            deselect-label="Can't remove this value"
            key="key"
            label="label"
            placeholder="Select Country">

        </multiselect>
    </div>
</template>

<script>
import Multiselect from 'vue-multiselect'
export default {
    components: { Multiselect },
    data () {
        return {
          selected: null,
          options: countries
        }
    },
    methods: {
        updateSelected (newSelected) {
          this.selected = newSelected
        //   console.log(this.key);
        }
    },
    events: {
        'changeSelected': function (selected) {
          this.selected = selected;
        }
    }
}

let countries = [
    {'key' : 'AF', 'label' : 'Afghanistan'},
    {'key' : 'AX', 'label' : 'Aland Islands'},
    {'key' : 'AL', 'label' : 'Albania'},
    {'key' : 'DZ', 'label' : 'Algeria'},
    {'key' : 'AS', 'label' : 'American Samoa'},
    {'key' : 'AD', 'label' : 'Andorra'},
    ...

That's because two-way binding is deprecated since 1.0 release. You need to
handle updating the selected value with the
@update="updateSelectedHandler". Please look into the docs for details.
W dniu sob., 20.08.2016 o 05:18 Luis Espinosa de los Monteros <
<EMAIL_ADDRESS>napisał(a):

How can i send the country key through the event and get the corresponding
country selected.
right now it just gets overwritten to a string.

That's because two-way binding is deprecated since 1.0 release. You need to
handle updating the selected value with the
@update="updateSelectedHandler"

event handler. Please look into the docs for details.

Thanks for answering ,but how to can i change the selected option from the parent sending the country key.
Parent
methods:{
    populateAddressFields(){
        this.$broadcast('changeSelected', this.countryKey);
    }
}

Multiselect
events: {
    'changeSelected': function (countryKey) {
        ???
    }
}

I guess you need to set the whole object not just the key. This is because the :selected prop expects an object it would find inside the :options prop. If there is no way to broadcast the whole object to the child, try using the find array method.
events: {
  'changeSelected' (countryKey) {
    this.selected = this.options.find(country => country.key === countryKey)
  }
}

Also if this is just a wrapper component, what about passing the selected value and countries as props and skipping the $broadcast? In Vue 2.0 $broadcast it is already deprecated as it is considered a bad design.
I guess one of the reasons for this is that you have to be very careful not to use the changeSelected event in any of the parent components.

Happy to help! :)


Option to not replace the trigger

Hello,
Is it possible to avoid the trigger replacement? So the final result is "@name" not "name".
I tried to change a little SZMentionsListener, but it just created bugs.
thanks!

I noticed you closed this shortly after opening the ticket. Just in case you were still curious about the answer (and for those who may end up at this issue when trying to solve a similar problem). The best answer is located here: https://github.com/szweier/SZMentionsSwift/issues/20#issuecomment-259135782


Consider using command arguments instead of environment variables

There is already a lot of undocumented options, with somehow inconsistent syntax.
Could we convert them to command arguments or is there a reason why we're using environment variables?

The options now are definitely going to need to be reworked, but I don't think my args; we have intentionally avoided using args around Istio because they make it hard to modify in Kubernetes. https://github.com/istio/ztunnel/issues/7 has some details but needs to be fleshed out; likely we will use a configmap as the primary means of config (possibly with env var override)

We are now reading from configmap/env var, aligning with how istio is configured in other components


Fix issue where we over-fed string reads

ArrayPool.Rent was returning a larger string than we actually needed, and the code pattern in question would cause stray \0's to end up in the generated string.

@NextTurn FYI, minor fix for your last PR.

Yes, this an important thing to keep in mind during code reviews, many people get it wrong initially when porting over to Span. I've come across that kind of bug in various projects already, array pooling is allowed to return larger arrays than requested (and commonly does so if one happens to be available). If that wasn't center of attention yet it may be worth to do a full review of all pooled array access.


Function wiring breaks for components that show/hide slot content using v-if

Vue.js version
2.0.0-rc.3
Reproduction Link
http://codepen.io/analog-nico/pen/dXBRBG
Steps to reproduce

Click the link "Open popup using v-if"
A badly designed popup opens
Click the "Close" link
For this first time the popup closes successfully
Click the link "Open popup using v-if" again
The popup opens again
Click the "Close" link

What is Expected?

Again, the popup closes successfully

What is actually happening?

Vue fails to call an internal function that got missing.
The closePopupUsingVIf function attached to the "Close" link's click event never gets called.
The popup does not close.

For reference the codepen contains the exact same implementation of the popup with the only difference that it uses v-show instead of v-if to show/hide the popup. v-show works perfectly.

The problem is that you are using v-if on component's root element inside its template.
Since the component itself is destroyed when v-if goes to false, its show() function cannot be called.
Related issue: https://github.com/vuejs/vue/commit/ce798c6f68624b156c484fea5f0e4e8abbee6d60
I guess vue should prohibit using v-if on component's root element..

Unfortunately, using v-if on an element other than the root element still doesn't work. See: http://codepen.io/analog-nico/pen/mEkraL

Using $refs for this won'T work as explained by @fnlctrl due to issue  #3455, but I would say this is not a recommended pattern anyway.
I would rather:
a) pass a show prop to the component, (https://jsfiddle.net/Linusborg/rwa5cfdm/)  or
b) use v-if on the component itself (https://jsfiddle.net/Linusborg/rwa5cfdm/1/)
if the popup component will have its own controls, i.e. a close button, $emit() an event from it and let the parent listen with @event="handler" on the component - then the parent can change the state value.
This has several advantages:

the parent knows about weither or not the popup is shown
We don't need to use tight coupling to the child components via $ref
the parent stays in control of when to acutally close the popup.

Closing this because #3455 takes care of this.

@LinusBorg The reproduction used rc.3, which was supposed to fix #3455 (release notes https://github.com/vuejs/vue/releases/tag/v2.0.0-rc.3), so I guess there's still some edge case uncovered.

wait, isn't it invalid component, as v-if version will have no root element when isShown is false? From what I know, a component should resolve to a root instance(or a fragment instance), but in this case there is not even a single element when isShown is false.

@prog-rajkamal That is a valid point which @fnlctrl also mentioned in his first response. However, the bug still occurs if I move v-if to a child div. See my updated codepen.


JMLL-924 Processor emails

Codecov Report

Merging #200 (eb4dbbe) into to-review (79c1368) will increase coverage by 0.37%.
The diff coverage is 69.71%.

@@              Coverage Diff              @@
##           to-review     #200      +/-   ##
=============================================
+ Coverage      74.17%   74.55%   +0.37%
=============================================
  Files            180      181       +1
  Lines           6695     7069     +374
=============================================
+ Hits            4966     5270     +304
- Misses          1729     1799      +70

Impacted Files
Coverage Δ

config/settings/base.py
93.60% <ø> (-0.81%)
:arrow_down:

leavers/views/security_team.py
33.21% <0.00%> (-2.13%)
:arrow_down:

leavers/utils/emails.py
18.70% <12.00%> (+0.40%)
:arrow_up:

leavers/utils/leaving_request.py
52.00% <33.33%> (ø)

leavers/views/line_manager.py
53.39% <38.46%> (-0.62%)
:arrow_down:

leavers/models.py
80.97% <40.42%> (-13.31%)
:arrow_down:

core/utils/sre_messages.py
37.50% <42.85%> (-0.44%)
:arrow_down:

leavers/workflow/tasks.py
57.31% <71.83%> (+7.48%)
:arrow_up:

leavers/types.py
95.52% <91.66%> (-4.48%)
:arrow_down:

leavers/settings.py
95.83% <95.83%> (ø)

... and 7 more

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


Interest Accrual

Description
This PR adds the minimum interest accrual logic needed for the MCP mainnet fork infrastructure.

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

1 of 1 (100.0%)  changed or added relevant line in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.004%) to 90.744%

Totals

Change from base Build<PHONE_NUMBER>8:
0.004%

Covered Lines:
2245

Relevant Lines:
2474

💛  - Coveralls


Segmentation fault (core dumped)

Issue summary
When running Vinardo scoring only, I get the following error :
*** Aborted at<PHONE_NUMBER> (unix time) try "date -d @1675757726" if you are using GNU date ***
PC: @                0x0 (unknown)
*** SIGSEGV (@0x0) received by PID 4051559 (TID 0x7f8648b02040) from PID 0; stack trace: ***
    @     0x7f8648442520 (unknown)
    @     0x7f864859d97d (unknown)
    @     0x7f86488f445c std::string::compare()
    @           0x46cfea string_to_smina_type()
    @           0x5210ad OutputAtom()
    @           0x523eb5 OutputTree()
    @           0x4c810e GninaConverter::convertParsing()
    @           0x4c829d GninaConverter::convertParsing()
    @           0x4eee48 MolGetter::readMoleculeIntoModel()
    @           0x42fb3d main
    @     0x7f8648429d90 (unknown)
    @     0x7f8648429e40 __libc_start_main
    @           0x44bd8d (unknown)
    @                0x0 (unknown)
Segmentation fault (core dumped)

This happens only using Vinardo, other scoring such as AutoDock4 works fine. I can provide the protein file, autobox ligand file and the library I am trying to rescore (please suggest a suitable way to share the files in that case). The command syntax I am using is as follows :
vinardo_cmd = 'cd '+software+' && ./gnina -r '+protein_file+' -l '+sdf+' --autobox_ligand '+ref_file+' -o '+results+' --score_only --scoring vinardo --cnn_scoring none'
subprocess.call(vinardo_cmd, shell=True)

Where : software is the path to the directory containing the gnina executable, the rest of the variables should be self explanatory.
Steps to reproduce
Attached files as a .zip: Issue 180.zip
RMSD_clustered.sdf is the ligand library to be rescored
crystal_ligand_protoss.sdf is the reference ligand for the pocket definition
receptor_protoss_prepared.pdb is the receptor file
Your system configuration
Operating system: Ubuntu 22
Compiler: using precompiled executable
CUDA version (if applicable):
CUDNN version (if applicable):
Python version: 3.8

Please upload the files to this issue as a zip.

Thanks for your answer, there is a now a link to the required files in the 'Steps to reproduce' section

I've pushed a fix for this problem.  If you'd like a workaround that doesn't involve rebuilding, filter out all the molecules with unspecified elements in them (look at CHEMBL371307_PLANTS_09 for an example of what I mean - it has an atom with element *).


Add URL to homicide report page for each card

Each record includes a "slug" which can be converted a URL on the site so the slug "baby-blanche" can be inserted like so http://homicide.latimes.com/post/baby-blanche/

Added slug hyperlinks


Translate i18n texts to Portuguese #105

Pull request template

I translated the document to Portuguese at pt.messages.json, as well as exported the messages in this file to be auto-loaded.
Motivation and context

Now the site has a Portuguese version to display.

[ ] Dependencies. If any, specify:
[ ] Open issue. If applicable, link:

Type of change

[ ] Bug fix (non-breaking change that fixes an issue)
[X] New feature (non-breaking change that adds functionality)
[ ] Breaking change (fix or feature that causes existing functionality to not work as expected)
[ ] Change requires a documentation update

What is the destination branch of this PR?

[X] Main
[ ] Other. Specify:

How has this been tested?

Running the project locally, and accessing http://localhost:8080/?lang=pt it was possible to apply translated texts.
Checklist:

[X] My code follows the style guidelines of this project.
[X] I have performed a self-review on my own code.
[X] I have commented my code, particularly in hard-to-understand areas.
[X] I have made corresponding changes to the documentation.
[X] My changes generate no new warnings.
[ ] I have added tests that prove my fix is effective or that my feature works.
[ ] New and existing unit tests pass locally with my changes.

Hello, can you accept my PR with the hacktoberfest tag? please

Hello, can you accept my PR with the hacktoberfest tag? please

Do you mean just to place #Hacktoberfest in the comment when we approve the PR?

Morning!! #Hacktoberfest

@ClaraSantosmf could ypu have a look to @mavmaf comment?
For some reason you didn't update your branch properly. Thanks!


[Docs] Internationalized html files (for SEO)?

Can react-static build pages in different languages?
Without javascript enabled, a react-static page just shows the i18n IDs, not any translated text. Is that normal? I cross-checked with docusaurus to try another static site generator, and it generates HTML files for every language (so it can be indexed by search engines like Bing that don't usually crawl JS-rendered content). Is there a way to have react-static generate different HTML files for different languages?
I see a concept proposed  here for pages listed manually in static.config.js, but it seems from other comments that there are still quite a few open questions (like how to make this work with react-static-plugin-source-filesystem). Internationalization tends to be a common feature of most SSGs and it would be helpful to have a working solution in the docs, or at least be clear what react-static can and cannot do.

Addin some i18n library doesn't magically create the pages. You'll need to manually list them in config.js. Then they would be statically generated. Still would need some way to serve the right page to the right people.

Exactly. Nextjs and Gatsby have great docs for how to implement routing with localized content. If localization is something react-static wants to support, there might be some documentation ideas there. react-static-plugin-localized could also be worth a mention.


Documentation need more clarity

The documentation can be made bit more clear, especially if we can separate the prerequisites and steps required for building and deploying a module from a dev machine, and the prerequisites and steps required on the device to get the iotedge runtime configured and running. Currently, the way document is written, it's hard to separate out the two parts which sometimes leads to confusion.

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

ID: 181d5562-f8d7-9c59-85ea-09efbe397f3e
Version Independent ID: dbedd952-a050-286e-c951-4529ec8e87b8
Content: Azure IoT Edge C# module
Content Source: articles/iot-edge/tutorial-csharp-module.md
Service: iot-edge
GitHub Login: @kgremban
Microsoft Alias: kgremban

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

Hi @ajaybha and thank you for the feedback. I'm also interested in improving the clarity for the tutorials. The article that you link to here should have almost no steps taking place on the IoT Edge device itself. Once you set up the device in the quickstart, everything should be handled from your dev machine or the cloud.
You specifically mention that the prerequisites are confusing. Would it help if I added a line to the prerequisites section saying that you need an IoT hub and your IoT Edge device, but that everything else listed is for the dev machine?

@ajaybha following up to see if you can provide more clarity around your feedback.

Hi Kelly,
I think the original comments I made below were for the articles that have now been modified significantly. Around a month back both the “deploy code to Windows device” and “Develop and deploy IOT Edge Module” articles had iotedgectl python module being used to setup & orchestrate the edge runtime on device and while following those steps, there was certain ambiguity on where those steps were to be executed.
There is lot more clarity in the new version, but even now, if you see the quick start article herehttps://docs.microsoft.com/en-us/azure/iot-edge/quickstart, one need to look carefully to make out that the “Install & Start the IoT Edge Runtime” steps need to be executed on the deice, the “Deploy a Module” from dev machine and “View Generated Data” on the device again. Moreover, the “View Generated Data” part can be done through VS Code also (in which case it would be from the dev machine).
Hope this helps.
Thanks
Ajay
From: Kelly Gremban<EMAIL_ADDRESS>Sent: Friday, July 13, 2018 4:12 AM
To: MicrosoftDocs/azure-docs<EMAIL_ADDRESS>Cc: Ajay Bhandari<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [MicrosoftDocs/azure-docs] Documentation need more clarity (#10530)
Hi @ajaybhahttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fajaybha&data=02|01|ajaybh%40microsoft.com|1fae0c7ccd82485d9da708d5e848bb8a|72f988bf86f141af91ab2d7cd011db47|1|0|636670321441855685&sdata=OSPgyvMRxyNYuXGt943iPxjnJis69HuNCPsEmCuYk38%3D&reserved=0 and thank you for the feedback. I'm also interested in improving the clarity for the tutorials. The article that you link to here should have almost no steps taking place on the IoT Edge device itself. Once you set up the device in the quickstart, everything should be handled from your dev machine or the cloud.
You specifically mention that the prerequisites are confusing. Would it help if I added a line to the prerequisites section saying that you need an IoT hub and your IoT Edge device, but that everything else listed is for the dev machine?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FMicrosoftDocs%2Fazure-docs%2Fissues%2F10530%23issuecomment-404673073&data=02|01|ajaybh%40microsoft.com|1fae0c7ccd82485d9da708d5e848bb8a|72f988bf86f141af91ab2d7cd011db47|1|0|636670321441865693&sdata=j9eErRTQO7bTx6a%2FuOJ7wCw%2FjJ6y7txvpImTbg2J1Y8%3D&reserved=0, or mute the threadhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAL4bKl7bLkhyVrSQ771iv8PZZwZc8eKOks5uF9DOgaJpZM4UxcFV&data=02|01|ajaybh%40microsoft.com|1fae0c7ccd82485d9da708d5e848bb8a|72f988bf86f141af91ab2d7cd011db47|1|0|636670321441875697&sdata=YKqmfxgzREP9UlACsikqXib%2F6uPat3R0cdxbZoz%2F6ek%3D&reserved=0.

@ajaybha Yes, IoT Edge became generally available at the end of June, and the 'iotedgectl' program was replaced with just 'iotedge.' That changed help make the product itself easier to use, along with improvements around the VS Code extension, and a simpler product experience leads to simpler documentation :)
If I understand your most recent comment, you think that the article that you originally opened this issue for (The C# module tutorial) has improved in clarity but you think that there are still more improvements to be made in the quickstarts? Since this issue is about the C# tutorial, though, can you take another pass through that tutorial and close this issue if you think that your original feedback was addressed or let me know if there are more improvements to be made?


HSEARCH-4099 Allow option for setting Elasticsearch connection information via full URIs

https://hibernate.atlassian.net/browse/HSEARCH-4099

Thanks for review.
I might have applied the suggestions.

Merged, thanks


Issue #36 - add approx price

Checklist:

[x] Test your work and double check you didn't break anything
[X] Update any relevant READMEs and docs

Description:
Added approximate price to UI using Cryptonator.

Ugh; won't get to the resolution of these conflicts today - will have to be on Monday.

https://github.com/webpack/webpack-cli/issues/296


Expose scss file in "style" field of package.json

Hello,
I am trying use bootstrap-sass via npm, node-sass and the sass-module-importer. The importer documents this lookup strategy:
1. Set a SCSS/Sass/CSS file on the "main" field of their package.json/bower.json
2. Set a SCSS/Sass/CSS file on the "style" field of their package.json/bower.json
3. Have a index.css file on the root of their module

If I look at the bootstrap npm package, it uses the style field in package.json. It seems this field is becoming a de facto standard.
Is it possible to get a similar setup and expose the main scss file in the style field of package.json?

We should also add a "sass" field for consistency with https://github.com/twbs/bootstrap/blob/ac1ea8c26ccb4b65d14bf207974854ca993ea4e5/package.json#L25


Lambda@Edge with pre-provided zips

Describe the Feature
If would be nice if the Lambda@Edge code could be provided as a zip rather than a piece of plain-text code.
Use Case
Some Lambda@Edge functions might require more files to run (e.g. node_modules).
If a zip could be provided, this would make it possible to run such scripts as well.
Describe Ideal Solution
Add two new variables:

create_package - boolean, defaults to true
local_existing_package - Path to the existing package to upload

@syphernl thanks for the feature request!
Yes, I think that is a good idea. As the person who implemented the lambda@edge submodule I can say that this was the original idea, but plain text code was faster so I implemented that as an first iteration.
I will take a look!

@korenyoni Not sure whether you are aware of it but I discovered that work has started on a terraform-aws-lambda-function module as well very recently.
Perhaps this submodule contents can be moved to that module instead?
I read that you implemented it the way it is now because of the Lambda@Edge needs to live in us-east-1.
But since it is possible to pass along providers to modules, it probably would make sense to consolidate the Lambda/Lambda@Edge code into a single module?


scripts: Fix twisterlib for ruff

Twisterlib files are often changed and having them under ruff's linting would be useful.
This brings them up to ruff's standards and updates relevant tests.

I appreciate the effort! Just wondering if pushing it as a single commit is a good idea?

I appreciate the effort! Just wondering if pushing it as a single commit is a good idea?

Whoops. Didn't really check the diff size while in-progress. When doing the first few files, it seemed unnecessary, as in practice most commits would be for a single file. But now, with the diff size ballooning to c. 3k LOC, I think separating them would be prudent, even if just to make the review easier.
I mostly pushed it here to verify blackboxes in CI and will start the separation after fixing them, if necessary.

I'd suggest to split test changes from code changes to reduce risk of regressions when both are changes simultaneously,
IMO better to ruff Twister tests in a separate PR first.

I appreciate the effort! Just wondering if pushing it as a single commit is a good idea?

@LukaszMrugala  i think @pdgendt  meant a commit per "violation", not a commit per file :-)

I'd suggest to split test changes from code changes to reduce risk of regressions when both are changed simultaneously, IMO better to ruff Twister tests in a separate PR first.

I do not agree with doing the tests first. Currently, before we change tests, they serve as an indicator when changing the main Twister code. If we change tests first, we introduce uncertainty into our twisterlib changes for no reason.
Test changes should be coupled with the twisterlib changes that necessitate them, so no commit introduces broken code (code that fails tests).

I do not agree with doing the tests first. Currently, before we change tests, they serve as an indicator when changing the main Twister code. If we change tests first, we introduce uncertainty into our twisterlib changes for no reason.

This ruff change in Twister is a sort of refactoring without functionality changes, right ?
When you change both Twister tests and Twister code in the same (this) PR, there is risk of false positive (a bug in both simultaneously), so it is less secure.

This ruff change in Twister is a sort of refactoring without functionality changes, right ? When you change both Twister tests and Twister code in the same (this) PR, there is risk of false positive (a bug in both simultaneously), so it is less secure.

It should be just refactoring, but some changes are not NOPs. Take for example B006 - mutable argument default. To fix it, you need to change the code. Not to mention the biggest culprit - using context managers for file handling, which completely dissolved two whole functions.
Additionally, unit tests often directly mock functions used by the function under test. If I change that function, how would you have it so both the test passes and is not changed?

Needs a rebase to resolve conflict

This breaks testing on my on my Windows installation:
west twister --device-testing --device-serial COM3 --device-serial-baud 115200 -p disco_l475_iot1  -T .
Traceback (most recent call last):
  File "C:\Users\glenn\zephyrproject\.venv\Lib\site-packages\west\commands.py", line 546, in __call__
    mod = _commands_module_from_file(self.py_file)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\glenn\zephyrproject\.venv\Lib\site-packages\west\commands.py", line 701, in _commands_module_from_file
    spec.loader.exec_module(mod)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\Users\glenn\zephyrproject\zephyr\scripts\west_commands\twister_cmd.py", line 21, in <module>
    from twisterlib.twister_main import main
  File "C:\Users\glenn\zephyrproject\zephyr\scripts\pylib\twister\twisterlib\twister_main.py", line 20, in <module>
    from twisterlib.runner import TwisterRunner
  File "C:\Users\glenn\zephyrproject\zephyr\scripts\pylib\twister\twisterlib\runner.py", line 26, in <module>
    from domains import Domains
ModuleNotFoundError: No module named 'domains'

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

Traceback (most recent call last):
  File "C:\Users\glenn\zephyrproject\.venv\Lib\site-packages\west\app\main.py", line 505, in run_command
    self.run_extension(args.command, argv)
  File "C:\Users\glenn\zephyrproject\.venv\Lib\site-packages\west\app\main.py", line 623, in run_extension
    self.cmd = self.extensions[name].factory()
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\glenn\zephyrproject\.venv\Lib\site-packages\west\commands.py", line 548, in __call__
    raise ExtensionCommandError(
west.commands.ExtensionCommandError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "C:\Users\glenn\zephyrproject\.venv\Scripts\west.exe\__main__.py", line 7, in <module>
  File "C:\Users\glenn\zephyrproject\.venv\Lib\site-packages\west\app\main.py", line 1085, in main
    app.run(argv or sys.argv[1:])
  File "C:\Users\glenn\zephyrproject\.venv\Lib\site-packages\west\app\main.py", line 244, in run
    self.run_command(argv, early_args)
  File "C:\Users\glenn\zephyrproject\.venv\Lib\site-packages\west\app\main.py", line 549, in run_command
    self.handle_extension_command_error(ece)
  File "C:\Users\glenn\zephyrproject\.venv\Lib\site-packages\west\app\main.py", line 412, in handle_extension_command_error
    self.cmd.err(msg, fatal=True)
    ^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'err'


Add Sub-Row

Issue Type

[x] Enhancement Request
[x] Question

Sub Row
Hey, first thanks for this nice repo!
Is there a possibility to add a "Sub-Row" somehow? This is the only feature I currently missing from your repo. Or did I miss something?
Here is what I mean: (taken from datatable)

@appinteractive this is currently not possible in vue-good-table. I'll chalk this up as an enhancement.


Create the json_uint_t type that is mapping to unsigned long long.

Use it when loading a JSON number and json_strtoint returns ERANGE and the number is positive.
Only falling back on the new type as a last resort only before issuing a parsing error
ensure minimal breakage in backward compatibility.

I am sure that if the pull request is viable, few more things would need to be added. I just added the bare minimum that I needed to fix my problem and for testing the water for the interest for the idea.

I feel this is a cumbersome approach to get essentially one more bit of integer precision. Maybe we should finally land on some way to handle arbitrary precision ints (and floats?).

Petri,
no problem. I understand. At least, I'm happy to see that this jansson limitation starts to become increasingly annoying is under your radar.
I'm looking forward how you are going to address it in a hopefully near future release.
Greetings,


operators [O] grafana-operator (4.0.1)

This is a backport of https://github.com/grafana-operator/grafana-operator/pull/611
New Submissions

[ ] Are you familiar with our contribution guidelines?
[ ] Have you packaged and deployed your Operator for Operator Framework?

[ ] Have you tested your Operator in all supported installation modes?
[ ] Have you considered whether you want use semantic versioning order?
[ ] Is your submission signed?
[ ] Is operator icon set?

Updates to existing Operators

[ ] Did you create a ci.yaml file according to the update instructions?
[ ] Is your new CSV pointing to the previous version with the replaces property if you chose replaces-mode via the updateGraph property in ci.yaml?
[ ] Is your new CSV referenced in the appropriate channel defined in the package.yaml or annotations.yaml ?
[ ] Have you tested an update to your Operator when deployed via OLM?
[x] Is your submission signed?

Your submission should not

[x] Modify more than one operator
[ ] Modify an Operator you don't own
[x] Rename an operator - please remove and add with a different name instead
[x] Modify any files outside the above mentioned folders
[x] Contain more than one commit. Please squash your commits.

Operator Description must contain (in order)

[ ] Description about the managed Application and where to find more information
[ ] Features and capabilities of your Operator and how to use it
[ ] Any manual steps about potential pre-requisites for using your Operator

Operator Metadata should contain

[ ] Human readable name and 1-liner description about your Operator
[ ] Valid category name1
[ ] One of the pre-defined capability levels2
[ ] Links to the maintainer, source code and documentation
[ ] Example templates for all Custom Resource Definitions intended to be used
[ ] A quadratic logo

/merge possible

Was included in #466.
/close


Remove transient field Queue.hashCode

We do not need to cache the hashCode of Queue because Queue is backed by front and rear Lists, which can be assumed to be optimal regarding hashCode calculation (because they are part of the Javaslang lib).

Already fixed...

no - not fixed...

We can't rely on front and rear because these are equal queues (same type, same elements in the right order): ((1, 2, 3),(6, 5, 4)) equals ((1, 2, 3, 4)(6, 5)). Therefore we do not remove the transient field hashCode.


Intended way to use callback functions?

How do you intend users to implement callback functions?
The shortest I could come up with is:
public static void Main()
{
    SDL_SetEventFilter(new FnPtr_VoidPtr_SDLEventPtr_Int { Pointer = &NativeFilter }, null);
}

[UnmanagedCallersOnly]
private static int NativeFilter(void* userdata, SDL_Event* e)
{
    // do work
    return 1;
}

which includes one implicit cast, so the actual complied code is
SDL_SetEventFilter(
    new SDL_EventFilter
    {
        Data = new FnPtr_VoidPtr_SDLEventPtr_Int
        {
            Pointer = &NativeFilter
        }
    },
    null);

The ideal situation would be just this, identical how this would be written in C:
SDL_SetEventFilter(&NativeFilter, null);

Ideally it can be done like you mentioned if your target is C#8 or above.
I have support for not using C#8 function pointers to which the code takes a delegate. The type FnPtr_X is useful in this situation. I didn't remove it or favor of removing the type altogether when adding support because function pointes were added after and didn't get around to it.


Option to exclude from pruning based on number of pulls

It would be nice if there was an option to exclude containers from pruning if they were pulled more than some threshold. Perhaps controlled by an integer input skip-if-pulled-more-than or something similar.

I totally agree that it would be a good feature to have, I just had a look at it.
Unfortunately, GitHub doesn't expose that information in their API as far as I can see (cf. List package versions for a package owned by an organization). I checked by calling the API directly and the documentation is accurate, there's nothing relating to number of pulls in there.
So as it stands and until such time this becomes exposed by the GitHub API, sadly this is not an option I can add to the action.

@vlaurin the PackageVersion object has a field statistics which is a PackageVersionStatistics that contains the count.

Thank you for pointing that out, I'll have a look at it.

I'm hoping to use this feature to delete all my old images with zero or one pulls.


Fix json data in upgrade sql.

Fix json data in upgrade sql.

Make sure that:

[x] You have read the contribution guidelines.
[x] You submit test cases (unit or integration tests) that back your changes.
[x] Your local test passed ./mvnw clean install -Dmaven.javadoc.skip=true.

Codecov Report

Merging #4374 (13aad90) into master (43230a4) will decrease coverage by 0.02%.
The diff coverage is 69.73%.

@@             Coverage Diff              @@
##             master    #4374      +/-   ##
============================================
- Coverage     68.33%   68.32%   -0.02%
+ Complexity     7515     7510       -5
============================================
  Files          1020     1020
  Lines         28801    28802       +1
  Branches       2568     2564       -4
============================================
- Hits          19681    19678       -3
- Misses         7580     7587       +7
+ Partials       1540     1537       -3

Impacted Files
Coverage Δ

...disruptor/subscriber/ApiDocExecutorSubscriber.java
27.27% <0.00%> (+4.19%)
:arrow_up:

.../apache/shenyu/admin/listener/etcd/EtcdClient.java
59.25% <0.00%> (ø)

...va/org/apache/shenyu/admin/model/bean/DocInfo.java
90.00% <ø> (ø)

...ache/shenyu/admin/model/dto/CreateResourceDTO.java
100.00% <ø> (+26.92%)
:arrow_up:

...che/shenyu/admin/model/entity/DashboardUserDO.java
67.41% <0.00%> (+0.74%)
:arrow_up:

.../shenyu/admin/service/impl/AppAuthServiceImpl.java
77.45% <0.00%> (ø)

.../java/org/apache/shenyu/admin/utils/HttpUtils.java
10.16% <0.00%> (ø)

...a/org/apache/shenyu/common/constant/Constants.java
66.66% <ø> (ø)

...yu/common/dto/convert/selector/ZombieUpstream.java
82.05% <ø> (-0.88%)
:arrow_down:

...a/org/apache/shenyu/admin/model/vo/RoleEditVO.java
20.00% <50.00%> (-0.59%)
:arrow_down:

... and 28 more

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


Add all meta stuff from apps

duplicate of https://github.com/BostonGlobe/elections-2016/issues/286


Move link sanitizer into core

This makes the link library more secure by default by sanitizing links using default library logic. Users can provider their own sanitizer overrider or pass explicit null to disable sanitization altogether.

@zurfyx

Have we considered sanitization rules at a plugin level?

Yes, that means no protection for non-React users. If React can do this in the core, so can we.

there's repetition every time you want to toggle a link

Sure, good thinking

Additionally, I think that this function is doing too much, it's a setter and a toggle, perhaps we should revisit this in the future.

Sure

Having reviewed the internal context around the criticality of having this by default, I can extend my review to say:

It's very hard to catch all malicious sites with a sanitizer that works for everybody - internally we use a shimming approach that will kick in when moving to external non-Meta owned sites. Other people may be OK without a shimmer.
Sanitizer can be bypassed as it's a client-side module, on Collab this means that all users can be impacted

I believe that the best solution is a curated platform-specific solution around Shimming. However, I also agree that React's link validation (ban javascript:) is lightweight and works for 99% of the users. Given that Lexical is heavily inspired in React I think it's good having this built-in.
So I'd suggest something like this
<LinkPlugin disableJavaScriptURLs={true} />
And this can work in 2 different ways. 1) URL overwritten 2) Overwritting click handler. Preferably the first.

<LinkPlugin disableJavaScriptURLs={true} />

This won't work for non-React users

We can consider either putting this in LinkNode.createDOM or in the reconciler.


RuntimeError: The size of tensor a (1000) must match the size of tensor b (10) at non-singleton dimension 0

Hi, I want to fine tune BigGAN on my own dataset which has 10 classes. I have modified num_classess and made sure that the checkpoint can be loaded into the model, but when I run it, it gave me this Error. I cannot figure out what else config maybe left out. Do I need to modify the number of classes of inception_v3 model?
1/488 (  0.00%) Traceback (most recent call last):
File "../train.py", line 228, in
main()
File "../train.py", line 224, in main
run(config)
File "../train.py", line 184, in run
metrics = train(x, y)
File "/cache/code/BigGAN-PyTorch/train_fns.py", line 58, in train
D.optim.step()
File "/root/miniconda3/lib/python3.6/site-packages/torch/optim/adam.py", line 93, in step
exp_avg.mul_(beta1).add_(1 - beta1, grad)
RuntimeError: The size of tensor a (1000) must match the size of tensor b (10) at non-singleton dimension 0

I explained how to train with a dataset of a different number of classes in this issue.
https://github.com/ajbrock/BigGAN-PyTorch/issues/43#issuecomment-559071781


feat: upgrade tf-plan action to v3

Summary | Résumé
This brings in the new Terraform Summarize functionality which provides a short summary using tf-summarize of the changes to your code so you can see at a high level what's changing without reviewing the plan.
Example here:

It's still recommended to view the plan.

Thanks @CalvinRodo , can I merge this?


Wrong URLs for Safebooru

Hey.
Something broke with Safebooru, it doesn't seem to be fetching the right URLs. No images or thumbnails load at all, terminal gives the problem right away:
Error while downloading thumbnail http://safebooru.org//safebooru.org/thumbnails/1919/thumbnail_0cb8d7abc5140263a2c3ddf8a0d8dff088aa12c4.png    HTTP response code said error
I'm using Ubuntu 16.04 LTS. Everything working fine for other boorus.

Looks like they added the domain to the file urls in their api.

Is there any way to fix this on our end?

This is done on gelbooru now, too.
And... it was also being done on sites like rule34.xxx since long ago.


CLIENT ID

Hi Matt,
Firstly awesome work you do here!  I thought i would throw my hat at trying to get flash news going,  (it will require small changes from your code from binge or kayo i said to myself thinking its also using streammotion......)
What exactly does the CLIENT ID do on your scripts when logging into stream motion  ( i am assuming this is unique per service eg Binge different to Kayo which is different to FlashNews   ?  where do you source it from ?
Thanks for any advice.

pretty sure thats what identities which service it is to streammotion.
if i recall, i couldn't find the clientid for flash due to no android-tv app.


Extension fails to work for new rooms on beta.crunchyroll.com

Just wanting to report that the extension is not working as intended on beta.crunchyroll.com.  This is likely a temporary issue until they go live with it but I wanted to let you know.
The beta can join an in-progress room, just there is no button to create a room.

Thank you for your feedback!
I just merged a commit that's supposed to fix that issue.
Can you update the extension to version 2.9.1 and confirm if the issue persists?

Hello.  I updated the extension and not it does not appear to load on either the normal site nor the beta site.

Could you please provide the full url (both normal and beta) of the episode where you are trying to use the extension.

https://beta.crunchyroll.com/watch/GN7UDZXWX/Divide
and
https://www.crunchyroll.com/rwby/episode-1-divide-798820
In both cases clicking on the RT icon only displays the Roll Together extension menu, no ability to create a Room.  Previous to 2.9.1 the www.crunchyroll.com URI would properly show the Create a Room option.

The extension is activated using a regex expression and both URLs that you sent passed when testing, so it shouldn't have any problem with showing the Create Room button properly. Both I and @samuraiexx have tried without success to reproduce this issue using Chrome for Windows x64. Are you using another browser? I would ask you to also try to reinstall the extension and reaccept the permission and see if works.

I'm using Microsoft Edge Chromium.  I'll try re-installing the extension and report back.

Ok... re-install found the extension working on www.crunchyroll.com:

beta.crunchyroll.com:

note that extension installation only mentions www.crunchyroll.com (not sure if that matters):

I think my previous issue with www.crunchyroll.com was with in-private/incognito session trying to test non-beta site before I figured out I could switch back and forth easily.  So it would seem the regex isn't yet properly loading the extension on the beta site for some reason.

@JeromySt thank you very much, that was a really complete description.
I'll start testing it on Edge as well and try to understand why you had to reinstall it but nice to know that people also use this extension on Edge.
If you are interested in the bug:

To make it easier to know when you can create a room, we do not show the "Create" option depending on your current URL and on the existence of an IFrame# with id #vilos-player.
My guess, now that allowing all Crunchyroll subdomains didn't work, is that on beta the IFrame Id is not vilos-player so instead of querying that, I changed to query the IFrame source that's for sure still static.crunchyroll - thanks to your comment that ensured that it was still working, even though no room was being created.

I'll wait for @hsnavarro to take a look at my PR and if everything is fine I'll deploy and let you know here when the new version is released.
Again, thank you =]

I have exported the source for an example beta site video so you folks can look through it and tailor your fix.
source.zip

Just commenting that I have validated 2.9.2 fixes the extension for beta.crunchyroll.com.  Thank you for spending the time to fix this!

Thanks for the help providing the information needed to find a solution for your problem.


 This makes it easy to commit changes, import into any editor, and build. Also makes it so the jcolor dependency dosen't have to have its code in this repo and be compiled each time you compile jpizza.
Other changes: I also edited some stuff so gradlew run works, though it is weird because of how gradle outputs stuff on top of tasks. But it works. gradlew jar and gradlew build also generate a jar correctly.


Fixes #275 when navbar subviews are hidden

Fixes bug when updateNavbarAlpha() method was not working correctly when there is a modally presented view controller.

Solid. Thanks 👍

@andreamazz can you, please, apply it onto swift3 branch too? Thank you

Done.

Thanks


Switch output display

I know similar questions have been asked, but non of the proposed solutions have worked for me so far.
My use case is, I have a PC in my living room, connected to my stereo and my video projector. The PC is running Linux and Kodi. I tried using Kodi on X11, but that didn't work well (was difficult to get windows in fullscreen, flickering with menus and dialogs). I started using Kodi on Wayland using cage, and that works fine!
My problem now is that if I start the PC and the video projector is not connected, the HDMI output will be disabled. This frequently happens if I just want to listen to music. Then, kodi crashes and cage exits until systemd stops to restart the unit. I guessed that the problem was that no output was connected. I tried adding a headless output using WLR_HEADLESS_OUTPUT=1 and that works, now everything starts up even if the projector is not on! However, now I'm stuck on the fact that if the HDMI output turns on, I have two outputs! Whatever configuration I choose, Kodi will either only be rendered to HDMI partially, or with a border.

It seems to be impossible to remove the headless output at runtime
It seems to be impossible to disable the headless output at runtime
Applying custom modes with wlr-randr works, but not with kanshi
kanshi generally seems to not work well with headless outputs https://todo.sr.ht/~emersion/kanshi/82#event-228848

So I'm back to square one. Other ideas I had are

Try to detect when the HDMI display is connected and only then start kodi, seems to be there is no default way of doing this?
Try to report the kodi crash when no display is connected, not sure that can be fixed

Did I miss any obvious possibilities to handle this kind of situation?

Looks like wlroots 0.17 might add the option to disable headless backends at runtime. https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4236
Cage does not compile for me with this version though.

Then, kodi crashes and cage exits until systemd stops to restart the unit.

Weird. Is it a Cage issue? Which version have you tried?

cage (master) no longer exits when the last monitor is disconnected.

I tried adding a headless output using WLR_HEADLESS_OUTPUT=1 and that works, now everything starts up even if the projector is not on!

I find this surprising, WLR_HEADLESS_OUTPUT=1 is only picked up when only the headless backend is running (without the DRM backend).

Sorry for the long delay. A bit more information. I'm on Arch Linux, just updated everything. Kodi is version 20.2-4 and cage is version 0.1.5-1.
When I start it without the beamer attached (no DRM monitor) and without headless I get
Oct 06 18:32:08 htpc (cage)[481]: pam_unix(login:session): session opened for user kodi(uid=972) by kodi(uid=0)
...
Oct 06 18:32:10 htpc cage[504]: terminate called after throwing an instance of 'std::runtime_error'
Oct 06 18:32:11 htpc cage[504]:   what():  No outputs received from compositor
...
Oct 06 18:32:11 htpc systemd-coredump[528]: [🡕] Process 504 (kodi.bin) of user 972 dumped core.

                                            Stack trace of thread 504:
                                            #0  0x00007f49c491c83c n/a (libc.so.6 + 0x8e83c)
                                            #1  0x00007f49c48cc668 raise (libc.so.6 + 0x3e668)
                                            #2  0x00007f49c48b44b8 abort (libc.so.6 + 0x264b8)
                                            #3  0x00007f49c409ca6f _ZN9__gnu_cxx27__verbose_terminate_handlerEv (libstdc++.so.6 + 0x9ca6f)
                                            #4  0x00007f49c40b011c _ZN10__cxxabiv111__terminateEPFvvE (libstdc++.so.6 + 0xb011c)
                                            #5  0x00007f49c40b0189 _ZSt9terminatev (libstdc++.so.6 + 0xb0189)
                                            #6  0x00007f49c40b03ed __cxa_throw (libstdc++.so.6 + 0xb03ed)
                                            #7  0x0000557d70cdf7c8 n/a (kodi.bin + 0x7ab7c8)
                                            #8  0x0000557d71bdb404 _ZN4KODI9WINDOWING7WAYLAND27CWinSystemWaylandEGLContext19InitWindowSystemEGLEii (kodi.bin + 0x16a7404)
                                            #9  0x0000557d71bdb4e1 _ZN4KODI9WINDOWING7WAYLAND29CWinSystemWaylandEGLContextGL16InitWindowSystemEv (kodi.bin + 0x16a74e1)

...

Oct 06 18:32:11 htpc systemd[1]<EMAIL_ADDRESS>Deactivated successfully.
Oct 06 18:32:11 htpc cage[499]: /usr/bin/kodi: line 181:   504 Aborted                 (core dumped) ${KODI_BINARY} $SAVED_ARGS

That's probably not very helpful.
So I add
WLR_BACKENDS=headless,drm,libinput
WLR_HEADLESS_OUTPUTS=1

to the environment in which kodi & cage is started.
Then kodi starts fine, but then I also have two outputs once I start the beamer and then Kodi is streched across them :( I think I'll probably just wait for a newer version of cage that links agains the latest wlroots and try again.

@maufl
The logs definitely show that Kodi is crashing, not Cage. Apparently, "no output" is not a case managed by Kodi. You could open an issue there to discuss such a choice.
To workaround the issue right now, maybe you could disable the headless output using wlr-randr or equivalent tool when the DRM output is up.

@joggee-fr Sorry if I was not clear in my first post. This exactly what I too think the problem is. Kodi is crashing because there is no monitor, cage exists when Kodi exits. I agree that it would be good to open an issue with Kodi but I don't think that this will be fixed on their side soon, which is why I wanted to search for workarounds.
Disabling the headless output using wlr-randr doesn't work either, because it seems that wltroots doesn't support this for headless outputs at all (in the version that cage currently uses). The next version of wlroots does seem to support it though.
So I'll report it with Kodi and wait for a new cage version and see what comes first.
Since there seems to not exist a workaround for this right now, I'll close this issue again.

@maufl
If you open an issue in the Kodi porject, please add a link here just for curiosity.
An other workaround may be to play with output position using wlr-randr for example. By default, new outputs are added to the right side to create an extended "viewport". If you force the DRM output to be positioned at 0,0 and check size also, it could be good.

I found a somewhat ok solution to my problem. I can't find a way to detect when the beamer is turned on and only then start cage+kodi, but I realized I could start cage and then use wlr-randr to wait for the HDMI display. So now I have small script that is run by cage and which will itself start kodi once the HDMI output is available.
#!/bin/bash

while ! wlr-randr --output HDMI-A-1 2 > /dev/null 2>&1;
do
  sleep 1s
done

wlr-randr --output HDMI-A-1 --mode 1920x1080@60

/bin/bash -c "$@"


the caculation of unit pass

In the class MapStrategyEyeriss,
'dim_flpeset = PhyDim2(util.idivc(self.dim_lpeset.h, self.fold.h),util.idivc(self.dim_lpeset.w, self.fold.w))'
and  flpesets in a unitpass = fold.h,
so,as far as i consider,lpeset means batch processing unit_pass fold.w times.
In function _calc_unitpass，  I think the total accessed size of ITCN is the row size (FIL,IFM,OFM) in one PE × folded PE array size × the number of flpesets in a unitpass .
I don't understand why using lpeset caculate the accessed size of ITCN (eg:access[me.ITCN][de.FIL] = acclayer.wfil * self.dim_lpeset.size() * flpesets_per_unitpass) instead of flpesets,and Does it cause duplicates to multiply by fold.h?
Can you solve my problem ?
THANKS .

I think you are right. When I look at the code now, I cannot find a reason why I used lpeset size there. What you said makes more sense. So I fixed it in commit f176a25dc46fdd4d0d9ee2a06610fe251e1fed2c.


Modernize the theme for the Glimmer header in Discourse

I work on the Discourse Team.
This PR modernizes the theme to use the Glimmer header in Discourse. See Discourse Meta/Upcoming Header Changes - Preparing Themes and Plugins.
The widget header will be removed from Discourse Core soon. This PR needs to be merged before that to avoid the theme crashing the site.

Hi @rafaelfranca @fxn (as recent committers to this repo) - any chance we can get this merged? The relevant changes in Discourse core will be landing in the next few weeks, so it's important we get this merged to avoid problems on discuss.rubyonrails.org.
Thanks in advance! Let us know if you have any questions.


vectorized support time_to_sec function

Proposed changes
Issue Number: close #xxx
Problem summary
Describe your changes.
Checklist(Required)

[ ] Does it affect the original behavior
[ ] Has unit tests been added
[ ] Has document been added or modified
[ ] Does it need to update dependencies
[ ] Is this PR support rollback (If NO, please explain WHY)

Further comments
If this is a relatively large or complex change, kick off the discussion at<EMAIL_ADDRESS>by explaining why you chose the solution you did and what alternatives you considered, etc...

run buildall

run buildall

can't create a column the type is time, if use current_time write regression test, the result is unstable

run buildall

run buildall

run p0

run p0


Android: failing to connect when native pair modal not pressed in time

Describe the bug
Whenever I call the BleClient.Connect function, this will trigger a native modal on an android device where you need to press 'pair' or 'deny'. Whenever the user takes too long to press pair, the connect method will trigger its disconnected function and the rest of my flow fails. This is not what I expect, shouldn't the connect method have some type of waiting mechanism for this modal?
To Reproduce

Call BleClient.connect()
Wait a couple of seconds
Press pair

Expected behavior
I expect to succeed the connection, even when pair is not pressed inmediately
Plugin version:

@capacitor-community/bluetooth-le: 3.1.0

Desktop (please complete the following information):

OS: Android

Smartphone (please complete the following information):

Device: One plus 10pro
OS: Android version 14

You are right, currently the connect call does not wait for the pairing process.
As a workaround you can set the timeout of the connect call to something longer than the default (10000 ms).

@pwespi tried the workaround but the promise directly resolves when the connection is established, so the pairing dialog always occurs afterwards. any other idea?


Optimize  AutoSwitchHAConnection HandShake's data  protocol

when Broker master received Broker master handshake data, then Broker master will send back the handshake data to broker slave.

EpochStartOffset and Additional not need in handshake. So need to remove  two fieds to reduce data transfer.and Keep it consistent with the documentation

Please tell us about your environment:
branch: develop

/assigned

/assigned

@misselvexu  I will fix it


I have a question, why is there a strong political color in your panel video?

 Seeing these two screenshots made me angry. I believe that Chinese people who love technology will decisively abandon the one you recommend after seeing these two screenshots in your video.

I strongly support the makers of technology to be open about their political beliefs. Telling a creator to get back in their lane is a very strong political statement with a long history in racist and xenophobic speach control.
For context, I am Australian. We have had a number of years of Chinese political leaders attempting to control the Australia, both with implicit and explicit threats against both Australian exports and with threats against Australia directly.

wooow woow wow, Guys, That's not him. Many may be using the pixorama.live, At that moment he had that and he did a screenshot. And moreover, please make this community toxic-free. This is a pointless question/discussion to happen.

 Seeing these two screenshots made me angry. I believe that Chinese people who love technology will decisively abandon the one you recommend after seeing these two screenshots in your video.

That tech you have seen in the video is a demo, So please make sure you use it and update us on the drawbacks you find. So we ca improve this framework together. @superorange


[WIP] Fix nsmd crash in createRemoteNSMRequest

Signed-off-by: denis-tingajkin<EMAIL_ADDRESS>
Description
https://github.com/networkservicemesh/networkservicemesh/issues/1130
Motivation and Context

How Has This Been Tested?

[ ] Covered by existing integration testing
[ ] Added integration testing to cover
[ ] Tested locally
[ ] Have not tested

Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)

Checklist:

[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.

@denis-tingajkin is this good to go?  If so could you remove the WIP?

@denis-tingajkin if method createRemoteNSMRequest accepts existingConnection with dst equals to nil, we should return error rather then structure without Id

@lobkovilya +1


core: adding promise support

Waiting on #1665

@callmehiphop should we close #1142?

@stephenplusplus I think this is the cleanest route to promisifiy our library. PTAL a let me know what you think about this basic implementation.
Assuming there are no red flags with the implementation, my next question would be in regards to system tests - do we want to write a system test for every method that can leverage promises? I think this would almost double the number of system tests.

should we close #1142?

Actually this PR is requesting to merge into that branch :)

Ah, fancy.
I think this implementation looks good. For system tests, I would say we don't have to system test, but we do need to smoke test / docs test. I think we're already planning on showing "@examples" that use both callbacks and promises, right?

I think we're already planning on showing "@examples" that use both callbacks and promises, right?

Sure do, I plan to handle them in the same fashion as we used to document streams.

That should be good enough for me then to show that our promises work.

@stephenplusplus I've updated a few of the examples, WDYT?
How do you want me to organize all the things?  Or should I put the common stuff in a separate PR?

How do you want me to organize all the things?  Or should I put the common stuff in a separate PR?

Whatever is easiest for your workflow.

I wonder if we can always return a single argument and make apiResponse accessible in a different way

There will still be scenarios where we have to return multiple arguments (autoPaginate: false). However we could either make the api response the context of the callback or we could make it a property of whatever we pass in? I think this is how we planned on handling errors.
bigquery.getDatasets()
  .then(function(datasets) {
    console.log(datasets.apiResponse);
  })
  .catch(function(err) {
    console.log(err.apiResponse);
  });

WDYT?

err.apiResponse is okay. I think we already have response available on ApiError objects, so we should stick with that for custom errors.
I don't want to collide any extra properties like apiResponse with the returned argument, as that might conflict with other data / unintentionally be logged/printed/looped over by the user.
Keeping in mind this is describing the less common use case of manual pagination & needing the apiResponse, I think this would be the best separation.
bigquery
  .getDatasets({ autoPaginate: false })
  .then(function(datasets) {
    var apiResponse = this.request.response
    var nextQuery = this.request.nextQuery

    if (nextQuery) {
      return bigquery.getDatasets(nextQuery)
    }
  })

So we're fighting between good UX for the common case or good UX for the uncommon. If multiple args combined in one object is completely fine and expected in an average promise workflow, then just ignore me on all of this. That does bother me, because "getDatasets()" sounds like it's going to return "datasets", not an object that has datasets. But the other bother is that we'll have some methods that return single and others that return multiple.

If multiple args combined in one object is completely fine and expected in an average promise workflow, then just ignore me on all of this.

I think it is pretty common to take that approach, however we had previously decided that using Arrays + destructuring would be the way to go. Then in the event that a user is using Bluebird in some fashion, they can take advantage of the spread() method.
bigquery.getDatasets()
  .then(function([datasets, apiResponse]) {});

bigquery.getDatasets()
  .spread(function(datasets, apiResponse) {});

The only downside of this of course is that 0.12.x users still have to access items via index, however I'm not sure if object notation is really much better.

Okay, that makes sense. I forgot about destructuring making the lives of devs on modern stacks easier. It looks like we didn't get votes on arrays vs objects in that linked post. Can you show what the spread workflow looks like for someone using Bluebird? Also, why would they be using Bluebird in the first place-- does it do something we aren't doing with our promise support that is required to conform to a promise spec-- or is it just for features like spread that aren't supported by native promises?

Can you show what the spread workflow looks like for someone using Bluebird

All spread does is transform an Array returned from an earlier call it separate parameters, very similarly to the spread operator. So assuming a user makes Bluebird the global Promise object (I don't think that's very uncommon).
global.Promise = require('bluebird');

bigquery.getDatasets({ autoPaginate: false })
  .spread(function(datasets, nextQuery, apiResponse) {});

however, even if they don't re-assign the Promise object, it's still plausible they'll use some of their convenience methods.
Bluebird.delay(1000)
  .then(function() {
    return bigquery.getDatasets({ autoPaginate: false });
  })
  .spread(function(datasets, nextQuery, apiResponse) {
    // ...
  });

Also, why would they be using Bluebird in the first place-- does it do something we aren't doing with our promise support that is required to conform to a promise spec-- or is it just for features like spread that aren't supported by native promises?

I would guess the latter. It's also possible that they aren't using Bluebird with our library specifically, but perhaps with another as it offers promisify() methods of it's own.

Ah, okay. So would you lean towards using the array syntax instead of the boxed in object so that Bluebird users are happy?

So would you lean towards using the array syntax instead of the boxed in object so that Bluebird users are happy?

I think that's fair to say. If you think we're better off with the object syntax, I think I'll be pretty easily swayed. It's still destructurable and perhaps slightly better for users who can't take advantage of that feature yet.
However I think this is going to be a bit trickier to implement because we'll need to map each returned item to a specific key.

we'll need to map each returned item to a specific key.

Can you elaborate on that? I'm not sure I follow.

Can you elaborate on that? I'm not sure I follow.

Certainly! I think what I'm trying to say is that using an object format will require more code changes. Our methods would probably have to resemble something like this..
BigQuery.prototype.getDatasets = function(query, callback) {
  var that = this;

  if (is.fn(query)) {
    callback = query;
    query = {};
  }

  query = query || {};

  this.request({
    uri: '/datasets',
    qs: query
  }, function(err, resp) {
    var response = {
      apiResponse: resp
    };

    if (err) {
      callback(err, response);
      return;
    }

    response.nextQuery = null;

    if (resp.nextPageToken) {
      response.nextQuery = extend({}, query, {
        pageToken: resp.nextPageToken
      });
    }

    response.datasets = (resp.datasets || []).map(function(dataset) {
      var ds = that.dataset(dataset.datasetReference.datasetId);
      ds.metadata = dataset;
      return ds;
    });

    callback(null, response);
  });
};

Because we have no way of mapping objects to an appropriate key (datasets, nextQuery) otherwise.

Oh, right. Thanks :) Arrays it is! Seems to benefit the most amount of people.

I've been looking through a lot of promisify libraries, seeing if any of them suited our needs and a common theme among them is specifying whether or not you want multiple arguments.
I think we can all agree that for older Node users who do not use some kind of Promise#spread convenience code, returning an Array is annoying, which makes me a little trepidatious to do so.
I think in majority of cases, the user is generally only going to care about the first argument. On rare occasion they may wish to control pagination themselves, but otherwise I can't really think of a scenario when they'll want multiple args. That being said, I think we should offer a similar parameter within our methods that would enhance the user experience.
bigquery.createDataset('my-dataset')
  .then(function(dataset) {});

bigquery.createDataset('my-dataset', { multiArgs: true })
  .then(function([dataset, apiResponse]) {});

In most cases we assign the apiResponse as the metadata field on the objects being returned, so I can't really think of a single scenario where the user would actually want to do this.
In the cases of paginated lists, we could treat autoPaginate: false in the same fashion.
bigquery.getDatasets()
  .then(function(datasets) {});

bigquery.getDatasets({ autoPaginate: false })
  .then(function([datasets, nextQuery, apiResponse]) {});

The only place this doesn't feel quite right is for APIs that return operations. However, I think those APIs may be changing sometime in future to return operations directly from a method as opposed to from within a callback. (https://github.com/GoogleCloudPlatform/google-cloud-node/issues/1306)
Thoughts?
/cc @jgeewax @omaray @jmdobry

In most cases we assign the apiResponse as the metadata field on the objects being returned, so I can't really think of a single scenario where the user would actually want to do this.

There are API calls like "query", "detectText", etc. where apiResponse is very useful to the power users because we "shut out" or simplify certain bits of the raw API response. Some users need that other stuff, which is why we have apiResponse at all. Historically, we implemented it after receiving "Hey, where's the ___ property?" then a month later "Okay, what about the ___ property?" It was easiest just to return the whole thing, untouched.
I'm 100% with multiArgs as an option and autoPaginate: false === multiArgs: true. I think it would be amazing if we figured out how to handle operations at the same time we're landing promise support. I think what we really want is to eliminate operations altogether and just execute the then callbacks when the operation is done.

We're going to make the event emitter a property of the promise right? In that case we need to return the promise regardless of whether the user provides a callback, because a user who passes callbacks might still want to access the event emitter, e.g. to cancel the request.

That's definitely relevant, because we've really just been thinking of the non-gapic APIs. I'm not sure what @callmehiphop thinks, but if we have to do something goofy with the UX just to return the event emitter, I'm still okay with not offering the EE through the handwritten layer.

I don't think we'd have to do anything goofy. If I recall the plan is for @jmuk to change gax-nodejs to return the promise with the event emitter attached.

I don't think a multiArgs option here is a good user experience. You should be consistent with what you return. If apiResponse can sometimes be useful, then it should always be returned. If you don't like returning an array of arguments, you could always return an object, although I would strongly urge you to optimize for destructuring, many consumers are already on Node.js 6 and can take advantage of it. In reality, most consumers will be using Bluebird anyways, so they'll have Promise#spread even though they don't have destructuring.
Another approach could be to have a dedicated API to get the apiResponse. You could either embed the apiResponse in the dataset with a Symbol:
bigquery.getApiResponse = x => x[Symbol.ApiResponse];

bigquery.getApiResponse(dataset);
//=> the API response

Or use a Weak Map (probably best solution):
// the key is the `dataset` itself
bigquery.getApiResponse = x => bigquery._someApiResponseWeakMap.get(dataset);

bigquery.getApiResponse(dataset);
//=> the API response

If apiResponse can sometimes be useful, then it should always be returned.

Agreed 👍
My vote is for:
// callback, this will continue to work for current users
bigquery.getDatasets({ autoPaginate: false }, (datasets, nextQuery, apiResponse) => {
  // ...
});

// destructuring, we don't have promises yet, so it's okay
// for us to say "this is how it will work when we do"
bigquery.getDatasets({ autoPaginate: false })
  .then(([datasets, nextQuery, apiResponse]) => {
    // ...
  });

// spread, thanks Bluebird! (unless we want to just polyfill Promise.prototype.spread)
bigquery.getDatasets({ autoPaginate: false })
  .spread((datasets, nextQuery, apiResponse) => {
    // ...
  });

My vote is also for always returning the promise so the user can access the event emitter, regardless of whether the user passed a callback or not. In gax-nodejs, the promise is always  returned. If the user provides a callback, then it is called in addition to the promise being resolved/rejected. Once @jmuk updates gax-nodejs to return the promise with the event emitter attached, handwritten portions of this library will easily be able to just forward that promise to the user.

Sounds good to me. It sounds always returning an array is the conventional approach.
options.promise
Should we accept a "promise" option, where a user provides their Promise library for us to use internally? Or do we just use global.Promise, and the user just wraps our library with Bluebird?

My vote is also for always returning the promise so the user can access the event emitter, regardless of whether the user passed a callback or not.

This only applies to the APIs with a generated library, but will introduce inconsistencies with the others, e.g. BigQuery, Storage.
@callmehiphop how would this work behind the scenes, i.e., how many callbacks get executed / is there a "winner"?:
pubsub.getTopics(function(err, topics) {})
  .then(function(topics) {})
  .catch(function(err) {});

As I understand it, these are the features the EE provides:

Listening to the response event

This should be the same thing we return as apiResponse

Canceling a request

We don't have this currently and I don't expect the majority of our users needing to cancel their requests. It sounds like promises themselves will be cancelable someday (only going on what I've heard). At that time, I imagine it will be possible to wait for the cancel event from the promise and send it up to the EE's cancel function.

I know this is getting old, but I'm still not convinced that we need to provide the EE through the handwritten layer at all, even in promise mode. It's a useful feature to a subset of the users, and it will be available if they use the generated library directly, which we provide. It's causing a bit too many downsides for what I think it's worth:

We have to return a promise when a user is providing a callback (expected: undefined)
We will have inconsistencies between generated libraries and HTTP APIs
The EE has to be "caught" from the returned promise before the promise is chained. This isn't a pattern I've seen or used before. It feels like we're trying to squeeze it in somewhere, which we are. This would require good documentation, which is another liability: a repeated message in every method's docs where we return a promise through a generated library

Regarding our API being different than gax's; I think gax should provide all the features it can, as it is positioned as a generated, low-level dependency as opposed to an opinionated one, such as google-cloud-node. It's up to consumers of gax (in this case, us) to determine where the value is for its users. What we think is important might not be the same for another library. I think it's okay to be different, given this architecture.
callback -> promise vs. promise -> callback
@callmehiphop in the generated libraries, we'll eventually be interacting with promises through gax, as opposed to collecting results with service.request() method calls. Will we need a method like "callbackify()" to match "promisify()" for these methods?

Should we accept a "promise" option, where a user provides their Promise library for us to use internally?

SGTM

how would this work behind the scenes, i.e., how many callbacks get executed / is there a "winner"?:

At least in gax-nodejs, the promise always gets resolved or rejected. If the user provides a callback, it will be called as callback(null, response) in addition to the promise being resolved, or as callback(err) in addition to the promise being rejected. The promise gets resolved or rejected either way. If a user decides to pass a callback and consume the promise with .then or .catch, then the callback function will be called first due to the forced asynchronous nature of the promise.
This is how Bluebird's .asCallback/.nodeify methods work (used for creating dual promise-callback APIs, see the Bluebird author's recommendation): the promise is always returned, and always resolved or rejected. If a callback is provided it will be called in addition to the promise being resolved/rejected. I used this very pattern (using Bluebird.js) nearly 3 years ago in an open-source Node.js library of mine. I don't think we'd going against the grain if we use that pattern here. A consistent return value is less surprising than a conditionally present return value.
Setting aside whether we want to user to be able to access the event emitter from the handwritten layer, I think always returning a consistent return value (the promise) has merit on its own. The promise becomes the expected API, the callback an optional fallback.

I think always returning a consistent return value (the promise) has merit on its own. The promise becomes the expected API, the callback an optional fallback.

I do like how simple that sounds. I definitely want to do what is conventional, avoiding having any quirks or extra things that need to be learned with our API. If it's normal to return a promise from a method you're invoking with a callback, then we should do that. I'd still welcome feedback from others on if they're familiar with that pattern as well.

A consistent return value is less surprising than a conditionally present return value.

I agree with this, principle of least surprise applies here.

A big +1 to having a consistent return value here.  Mutating the return value type based on passed parameters would be pretty surprising to me.  I'm really excited to see promise support land in this API folks.

Will we need a method like "callbackify()" to match "promisify()" for these methods?

@stephenplusplus Yes, that would be correct. I was looking into making promises the normal way we handle things but it would require a significantly larger time investment since we would need to refactor every single method, which in turn would require us to refactor every single system test, unit test and doc snippet. I'm trepidatious to make such a large volume of changes if we're going to eventually move everything over to gapic anyways. IMO we should just hold out on refactoring all the things and instead tackle one API at a time while making the switch to gapic.
WDYT?

I was looking into making promises the normal way we handle things but it would require a significantly larger time investment since we would need to refactor every single method, which in turn would require us to refactor every single system test, unit test and doc snippet.

Yeah, it's basically a whole new library at that point. Maybe it'll come down to a managerial decision on where our effort should be spent, but I still want our library to be the easiest to understand for future maintainers / contributors. So I'm +1 to supporting promises the easiest way now, then refactoring later... as long as we actually refactor later.

if we're going to eventually move everything over to gapic anyways.

[ ] Google BigQuery
[x] Google Cloud Bigtable
[x] Google Cloud Datastore
[ ] Google Cloud DNS
[x] Google Cloud Pub/Sub
[ ] Google Cloud Storage
[ ] Google Compute Engine
[ ] Google Prediction API
[ ] Google Translate API
[x] Google Cloud Natural Language (Beta)
[ ] Google Cloud Resource Manager (Beta)
[x] Google Cloud Speech (Beta)
[x] Google Cloud Vision (Beta)
[x] Stackdriver Logging (Beta)

Only half of our APIs are gapic-compatible. Just wanted to call that out, so we still show love to the other half of the codebase ❤

@jgeewax @jmdobry @omaray
Do you guys think we should show error handling in our example docs, e.g.:
If the callback is omitted, we'll return a Promise.

bigquery.createDataset('my-dataset')
  .then(function(data) {
    var dataset = data[0];
    var apiResponse = data[1];
  })
  .catch(function(err) {
    // err is an API error if one occurred.
  });

IMO I think it's implied that if an error occurs it will be catchable via catch(func) or then(null, func).

Do settings like maxApiCalls and maxRetries still work when using promises?

Do settings like maxApiCalls and maxRetries still work when using promises?

Sure do, I can add a system test or two for good measure/peace of mind.

Sure do, I can add a system test or two for good measure/peace of mind.

That's good news! I suppose that wouldn't hurt, since we randomly test stream functionality in places.

@stephenplusplus I just pushed some updates.

A few system tests (they live in BigQuery)
Removed filter function in favor of exclude array.
Updated logic/examples to always return arrays as opposed to single arguments.


Project changed  code is incorrectly highligted

Hello.
I'm just having some fun with jazz, following the tutorial, and I noticed this in the docs (see screenshot):

As you can see, only the useState line is highlighted, where in reality also the parsing of the url and the coerce need to change in order for the example to work.
Great library, keep up the good work.

Hey, thanks for catching this and glad you're enjoying Jazz. Will close this once fixed.