Bluetooth GATT specification and implementation correspondence (IDFGH-10671)

Answers checklist.

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

General issue report
This might be because I am not familiar with the ESP-IDF Bluetooth stack, but it seems the relationship with the GATT specification concept and implementation are somewhat vague and unspecified.
I have reviewed the examples and guides in /esp-idf/examples/bluetooth/. And could not figure out the clear relationship between BLE GATT specification and implementation.
GATT has concepts of;

profile: A set of services
service: A set of characteristics
characteristics: (definition, value, optional descriptors)

In implementation

Profile table ~ profiles
Profile instance ~ profile
Service ~ ?
Attribute table ~ ?
Attribute
Callback functions

I guess a  profile table is to support multiple profiles, so basically a list of profiles.
A profile instance consists of a callback function, attributes, app id, gatt_if, conn_id, which apparently represent a profile.
However, it is not clear what is representing a service. It seems like esp_ble_gatts_create_attr_tab could be used instead of esp_ble_gatts_create_service and vice versa. This makes the attribute table corresponds to "a" service. However ,when creating the table the example refersto  an app_id, which corresponds to an application of profile. This make the list of attributes meant to represent a profile or multiple services. However, can't find such an example.
So my question is what is the idiomatic way to represent a service in ESP-IDF Bluetooth stack?
Is it a list of attributes that should be used for a service?  In this case what happens to the secondary, and includes the service of GATT specification? They should major and auxiliary functionality of a "device" per SIG specification. So are they should be in different lists in the same profile(device)? or one. How should they register? Is only the primary handle or all the service handles?
Otherwise, there is no such structure in ESP-IDF Bluetooth stack and a list of attributes should be used to represent a profile or multiple services. If this is the case, what should be the construction of the list? (svc decls, chars... or svc decl, chars..., svc decl, chars... ) Also, if this is the case, how do the services should be registered???

1- A profile can correspond to one or more services, for example, in the example "esp-idf/examples/bluetooth/bluedroid/ble/gatt_server," one profile corresponds to two services.
2- ESP-IDF supports two methods for creating services:

Using a table-like data structure to define the server services and characteristics (ref: esp-idf/examples/bluetooth/bluedroid/ble/gatt_server_service_table)

esp_ble_gatts_create_attr_tab: Create a service. When service creation is done, a callback event ESP_GATTS_CREATE_EVT is called to report status and service ID to the profile.
esp_ble_gatts_start_service: Start a service.

Adding services and characteristics one by one (esp-idf/examples/bluetooth/bluedroid/ble/gatt_server)

@zhp0406
Thank you for the reply. I have checked out both of the examples and they still don't give a answer.

With this approach, there is no fixed form to specify a profile, but it is implement-specific.
You said esp_ble_gatts_create_attr_tab is for a service. Is that mean, if one goes with 2nd approach of multiple services, one should call multiple esp_ble_gatts_create_attr_tab at an ESP_GATTS_REG_EVT event and start the corresponding service on ESP_GATTS_CREAT_ATTR_TAB_EVT??

@cwahn
you are right，If you want to create multiple services, you need to call esp_ble_gatts_create_attr_tab and esp_ble_gatts_start_service multiple times.

Let me explain again,
A Profile includes one or more Services, and each Service contains one or more Characteristics.
For example, if we have a health monitoring device, it can support two Profiles: "Health Status" and "Heart Rate Monitoring." Each Profile includes different Services; for instance, the "Health Status" Profile may contain two Services, "Step Count" and "Sleep Quality," while the "Heart Rate Monitoring" Profile may include two Services, "Heart Rate Measurement" and "Sensor Location."
In practical use, the client only discovers some services provided by the server. It is up to the client to determine which profile a specific service belongs to.

Hello! I just started to learn/try Ble on esp32s3 and documentation or examples really not enought to understand How to create Profile:
[service1: char1, char2],
[service2: char11, char22]
in the example "esp-idf/examples/bluetooth/bluedroid/ble/gatt_server," one profile corresponds to two services. Tutorial says two profiles with one service in each

So, if I  want to create two services in one profile by gatt service table, i need:

create one profile

#define PROFILE_NUM 1
#define COMMON_PROFILE_APP_IDX 0
static struct gatts_profile_inst gl_profile_tab[PROFILE_NUM] = {
    [COMMON_PROFILE_APP_IDX] = {
        .gatts_cb = gatts_common_event_handler,
        .gatts_if = ESP_GATT_IF_NONE,
    },
};

create two enums, two tables and two **_gat_db[..]={...} for each service

enum first_service_idx
{
    IDX_SRV1_SERVICE,
    IDX_SRV1_CHAR1,
    IDX_SRV1_CHAR2,
    SRV1_NUMB_OF_IDX,
};
static const esp_gatts_attr_db_t first_gatt_db[SRV1_NUMB_OF_IDX] =
{
    //Service 1
    [IDX_SRV1_SERVICE]        =
    {
        {ESP_GATT_AUTO_RSP},
        {
            ESP_UUID_LEN_16,
            (uint8_t *)&primary_service_uuid,
            ESP_GATT_PERM_READ,
            sizeof(uint16_t),                   /
            sizeof(GATTS_COM_SERVICE_UUID),
            (uint8_t *)&GATTS_COM_SERVICE_UUID
        }
    },
    // Characteristic1 Declaration
    [IDX_SRV1_CHAR1]     =
    {
        {ESP_GATT_AUTO_RSP},
        {
            ESP_UUID_LEN_16,
            (uint8_t *)&character_declaration_uuid,
            ESP_GATT_PERM_READ,
            CHAR_DECLARATION_SIZE,
            CHAR_DECLARATION_SIZE,
            (uint8_t *)&char_prop_read_write_notify
        }
    },
	// Characteristic2 Declaration
	[IDX_SRV1_CHAR2]     =
    {
        {ESP_GATT_AUTO_RSP},
        {
            ESP_UUID_LEN_16,
            (uint8_t *)&character_declaration_uuid,
            ESP_GATT_PERM_READ,
            CHAR_DECLARATION_SIZE,
            CHAR_DECLARATION_SIZE,
            (uint8_t *)&char_prop_read_write_notify
        }
    }
}

enum second_service_idx
{
    IDX_SRV2_SERVICE,
    IDX_SRV2_CHAR11,
	IDX_SRV2_CHAR22,
    SRV2_NUMB_OF_IDX,
};
static const esp_gatts_attr_db_t second_gatt_db[SRV2_NUMB_OF_IDX] =
{
    //Service 2
    [IDX_SRV2_SERVICE]        =
    {
        {ESP_GATT_AUTO_RSP},
        {
            ESP_UUID_LEN_16,
            (uint8_t *)&primary_service_uuid,
            ESP_GATT_PERM_READ,
            sizeof(uint16_t),                   /
            sizeof(GATTS_COM_SERVICE_UUID),
            (uint8_t *)&GATTS_COM_SERVICE_UUID
        }
    },
    // Characteristic11 Declaration
    [IDX_SRV2_CHAR11]     =
    {
        {ESP_GATT_AUTO_RSP},
        {
            ESP_UUID_LEN_16,
            (uint8_t *)&character_declaration_uuid,
            ESP_GATT_PERM_READ,
            CHAR_DECLARATION_SIZE,
            CHAR_DECLARATION_SIZE,
            (uint8_t *)&char_prop_read_write_notify
        }
    },
	// Characteristic2 Declaration
	[IDX_SRV2_CHAR22]     =
    {
        {ESP_GATT_AUTO_RSP},
        {
            ESP_UUID_LEN_16,
            (uint8_t *)&character_declaration_uuid,
            ESP_GATT_PERM_READ,
            CHAR_DECLARATION_SIZE,
            CHAR_DECLARATION_SIZE,
            (uint8_t *)&char_prop_read_write_notify
        }
    }
}
uint16_t first_handle_table[SRV1_NUMB_OF_IDX];
uint16_t second_handle_table[SRV2_NUMB_OF_IDX];

in event ESP_GATTS_REG_EVT: call twice  esp_ble_gatts_create_attr_tab

esp_err_t create_attr_ret = esp_ble_gatts_create_attr_tab(first_gatt_db, gatts_if, SRV1_NUMB_OF_IDX, 1);
esp_err_t create_attr_ret = esp_ble_gatts_create_attr_tab(second_gatt_db, gatts_if, SRV2_NUMB_OF_IDX, 2);

in case ESP_GATTS_CREAT_ATTR_TAB_EVT: call twice  esp_ble_gatts_start_service

memcpy(first_handle_table, param->add_attr_tab.handles, sizeof(first_handle_table)); esp_ble_gatts_start_service(first_handle_table[IDX_SRV1_SERVICE]);
memcpy(second_handle_table, param->add_attr_tab.handles, sizeof(second_handle_table));
esp_ble_gatts_start_service(second_handle_table[IDX_SRV2_SERVICE]);

In other events check both services

That's right?

in case ESP_GATTS_CREAT_ATTR_TAB_EVT: call twice esp_ble_gatts_start_service
if(param->add_attr_tab.svc_inst_id == SRV1_NUMB_OF_IDX){
	//...
	//esp_ble_gatts_start_service SRV1_NUMB_OF_IDX
}
if(param->add_attr_tab.svc_inst_id == IDX_SRV1_SERVICE){
	//...
	//esp_ble_gatts_start_service IDX_SRV1_SERVICE
}

if(param->add_attr_tab.svc_inst_id == IDX_SRV1_SERVICE){
//...
//esp_ble_gatts_start_service IDX_SRV1_SERVICE
}

if I make two enums
enum first_service_idx
{
    IDX_SRV1_SERVICE, // here will be default 0
    IDX_SRV1_CHAR1,   // and 1
    IDX_SRV1_CHAR2,   // 2
    SRV1_NUMB_OF_IDX, // 3
};

and
enum second_service_idx
{
    IDX_SRV2_SERVICE, // here will be default 0 too!
    IDX_SRV2_CHAR11,
	IDX_SRV2_CHAR22,
    SRV2_NUMB_OF_IDX,
};

the code
f(param->add_attr_tab.svc_inst_id == IDX_SRV1_SERVICE){
	//...
	//esp_ble_gatts_start_service IDX_SRV1_SERVICE
}
if(param->add_attr_tab.svc_inst_id == IDX_SRV2_SERVICE){
	//...
	//esp_ble_gatts_start_service IDX_SRV2_SERVICE
}

will be similar
f(param->add_attr_tab.svc_inst_id == 0){
	//...
	//esp_ble_gatts_start_service IDX_SRV1_SERVICE
}
if(param->add_attr_tab.svc_inst_id == 0){
	//...
	//esp_ble_gatts_start_service IDX_SRV2_SERVICE
}

May be, if I call
esp_err_t create_attr_ret = esp_ble_gatts_create_attr_tab(first_gatt_db, gatts_if, SRV1_NUMB_OF_IDX, 1); - here id of srv1=1
esp_err_t create_attr_ret = esp_ble_gatts_create_attr_tab(second_gatt_db, gatts_if, SRV2_NUMB_OF_IDX, 2);  - here id of srv1=2

will be better:
#define srv1_ID 1
#define srv2_ID 2
esp_err_t create_attr_ret = esp_ble_gatts_create_attr_tab(first_gatt_db, gatts_if, SRV1_NUMB_OF_IDX, srv1_ID );
esp_err_t create_attr_ret = esp_ble_gatts_create_attr_tab(second_gatt_db, gatts_if, SRV2_NUMB_OF_IDX, srv2_ID );

f(param->add_attr_tab.svc_inst_id == srv1_ID ){
	//...
	//esp_ble_gatts_start_service IDX_SRV1_SERVICE
}
if(param->add_attr_tab.svc_inst_id == srv2_ID ){
	//...
	//esp_ble_gatts_start_service IDX_SRV2_SERVICE
}

Thanks for reporting, feel free to reopen.


add corresponding close call for HostMemoryOutputStream

Signed-off-by: Bobby Wang<EMAIL_ADDRESS>

given Jason's comment it's irrelevant but technically you want close inside a finally block, maybe using withResource

build

build

build


Fix applicaiton links in README

The steal and LemonWM links didnt point to the correct location. This PR fixes that.

Thanks for fixing that!


Unable to determine DNS management tool. Linux Mint

For Linux Mint you can run
 sudo /etc/init.d/dns-clean start
to run it automaticlly.

Thanks @Lusitaniae.  It looks like this would work on Ubuntu as well.

Should I make a pull request? Is it only a matter of creating another block like this? https://github.com/StevenBlack/hosts/blob/master/updateHostsFile.py#L456

Sure!  Become a contributor!
Consider amending the Linux section of readme_template.md too.

I was reading a bit further on the issue, and it seems that Ubuntu (and thus, Mint) doesn't cache DNS by default. So the command I run above at most is refreshing a cache of 0 on dnsmasq.
It might be a better option to do something else in this case, instead of displaying an error.
So if running nscd fails on Ubuntu because is not found, just conclude running the script.
http://askubuntu.com/a/435379

@Lusitaniae thanks for looking into this.
I'm leaning toward adding a command that doesn't fail on mint and be done with it.


opensync: Add channel & band info in voicevideo events

Add channel and band (2G 5GL 5GU) in the voice/video detect
protobuf messages.
Signed-off-by: Chaitanya Kiran Godavarthi<EMAIL_ADDRESS>

this PR adds a 10000 line patch. somehow I think that this can't be correct.
@RickSommerville please also have a look

The huge patch is updating some auto-generated files that change when the statistics prototype definition changes.  This is necessary for now - the code to automatically regenerate this during the build is part of the nets branch currently in staging from Sartura.  I am not sure why there is no pull-request for the Sartura change yet.

The change to the compiled files should not be a part of this commit.  The build tool was updated on Sept 30th in 'pending' branch 2912821 so that the files are automatically built as part of the build process.
@chaitanyagodavarthi

merged into pending, Thanks !


https://nginxproxymanager.com/ is down

Hi,
i found issue https://github.com/NginxProxyManager/nginx-proxy-manager/issues/1188 as beeing closed. However, i tried for >2 days to access https://nginxproxymanager.com/ - it is continuously down....
Awesome piece of  software you provide, thanks for your work!
Best
Michael

the website is back again

It's still down :(


Front seats heating status in automatic mode

hi, is there a way to know the status of the Tesla's front seats heating sensors when they are in automatic mode?, i.e. when they automatically switch to low, mid or high? if it were possible to know the status of the front seats heating in automatic mode (high, medium or low) I would connect them in a nedered node in order to make the rear seats automatic too :).

Just checked my data, and the answer appears to be no. My drive seat is set to auto and I can see in history that (apart from when I turned off the climate control and it appeared as off) it just reports auto regardless of if it was doing low, medium or high


Exemplo de ordenação de listas

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the master branch of freeCodeCamp.
[x] None of my changes are plagiarized from another source without proper attribution.
[x] My article does not contain shortened URLs or affiliate links.

If your pull request closes a GitHub issue, replace the XXXXX below with the issue number.
Closes #XXXXX

Closed and Reopened this PR to attempt to resolve a specific Travis build failure.

Thank you for  creating this PR.  However, since it was created, the underlying document has changed.  Can you please review and resolve the current merge conflicts?  It could be the changes to the underlying document are so significant that your changes are no longer relevant.  If the latter is the case, it might be easier to just close this PR and create a new PR with any changes you still feel are important to make.
If you need any assistance or have questions about resolving the merge conflicts, please reply back or contact someone in the Contributors Room on Gitter.
Thank you.

Hi @kmmelcher
As there has been no response from your end for a while, we are closing this PR.
Feel free to request this PR to be reopened or create a new PR, if you still wish to make the changes you originally added plus any additional change requests asked of you.  Also, remember to update your fork, so you have the latest version of master in case it has changed significantly.
Happy Coding!


Update gas public demo - data and ddl

Build succeeded (check pipeline).

https://checklist.intgdc.com/job/gooddata-public-demos/job/gooddata-public-demos-validation/103/ : SUCCESS in 12s
https://checklist.intgdc.com/job/compliance/job/gooddata-public-demos-oss-check/109/ : SUCCESS in 4s

Sonar scan result

No issue found. Congratulations!

More detail, see in https://sonarqube-gate.intgdc.com/dashboard?id=gooddata-public-demos-gate-PR52
To scan for vulnerabilities in dependencies and run unit tests (to get coverage report in sonar) please comment your PR with 'extended check sonar'.

Build succeeded (gate pipeline).

https://checklist.intgdc.com/job/gooddata-public-demos/job/gooddata-public-demos-validation/104/ : SUCCESS in 9s
https://checklist.intgdc.com/job/compliance/job/gooddata-public-demos-merge-compliance-check/48/ : SUCCESS in 13s
https://checklist.intgdc.com/job/compliance/job/gooddata-public-demos-sonarqube-scan-zuul-gate/46/ : SUCCESS in 40s
https://checklist.intgdc.com/job/compliance/job/gooddata-public-demos-fossa-scanning-zuul/9/ : SUCCESS in 1m 40s (non-voting)


ARROW-2657: [Python] Import TensorFlow python extension before pyarrow to avoid segfault

This is now ready for review! This is only tested on linux, where are the mac wheels being built?

Codecov Report

Merging #2210 into master will increase coverage by <.01%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master    #2210      +/-   ##
==========================================
+ Coverage   86.52%   86.52%   +<.01%
==========================================
  Files         244      244
  Lines       41893    41903      +10
==========================================
+ Hits        36246    36256      +10
  Misses       5647     5647

Impacted Files
Coverage Δ

python/pyarrow/__init__.py
63.63% <100%> (+6.49%)
:arrow_up:

Continue to review full report at Codecov.

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

Do you anticipate this fix breaking in any cases?

@robertnishihara So I think the current version should be pretty robust and cover the corner cases (there might be some corner cases where it might incur the full TensorFlow loading time, but in most cases it will be fast)

This should now be ready to merge, let me know if there are other comments! I plan to merge it later tonight/early tomorrow morning if there are none.

Yeah, the primary failure mode that I'm thinking of is somebody modifies sys.path to include tensorflow after pyarrow as been imported. There will probably be other issues, but we'll see.

+1. Will merge once the builds complete


PDF view in beaker://view-source is broken

Operation System: macOS 10.12.5
Beaker Version: 0.7.2
I just noticed when you are in the beaker://view-source/ view clicking on a PDF renders it like so:

Should this load the chrome://pdf-viewer/ in this context?

I also noticed that the UI doesn't reflect which file is currently selected. Although, that's definitely a secondary issue.

Thanks for filing!
On Thu, Jun 8, 2017 at 10:03 AM, Tod Robbins<EMAIL_ADDRESS>wrote:

I also noticed that the UI doesn't reflect which file is currently
selected. Although, that's definitely a secondary issue.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/beakerbrowser/beaker/issues/515#issuecomment-307131554,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABNhUy6M1kYkXwsgUIWmMITEqqu9mzPGks5sCA1fgaJpZM4N0Mwy
.

Fixed this just by having the PDF give a link you can click to open the pdf in another page


improve the navbar

Description
In the current navbar, the contents seem to be crouched in the centre, in my proposed solution, I wish to make the navbar links to be on the left side and add some more spacing to them and the logo to the left.
Furthermore, I will be adding some hover effects to the link.
Lastly, I will be making the navbar sticky and the container in which the navbar links and logo are, I will make it translucent with some box shadow to make it look prominent.
Screenshots
No response
Additional information
No response

I would like to work on this issue under gssoc'23

good approach bro, but its already in progress


tf.raw_ops.FakeQuantWithMinMaxArgs loses extra precision with certain inputs

Click to expand!
Issue Type
Bug
Source
binary
Tensorflow Version
2.9.2
Custom Code
No
OS Platform and Distribution
Colab
Mobile device
No response
Python version
3.7.15
Bazel version
No response
GCC/Compiler version
No response
CUDA/cuDNN version
11.2.152, 8.1.1
GPU model and memory
No response
Current Behaviour?
With same settings as docs (min=-6, max=6, num_bits=8, narrow_range=False, name=None), applying `tf.raw_ops.FakeQuantWithMinMaxArgs` to the number 2 will produce 1.9764706 on GPU but 2.0235295 on CPU. Both GPU and CPU get -1.9764706 for -2. It looks like CPU is losing precision especially for positive 2.

Standalone code to reproduce the issue
with tf.device("/cpu:0"):
  input = np.array([-6., -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6])
  output = tf.raw_ops.FakeQuantWithMinMaxArgs(inputs=input, min=-6, max=6, num_bits=8, narrow_range=False, name=None)
  print(output)

with tf.device("/gpu:0"):
  input = np.array([-6., -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6])
  output = tf.raw_ops.FakeQuantWithMinMaxArgs(inputs=input, min=-6, max=6, num_bits=8, narrow_range=False, name=None)
  print(output)

Relevant log output
tf.Tensor(
[-5.9764705 -4.9882355 -4.        -3.0117648 -1.9764706 -0.9882353
  0.         0.9882353  2.0235295  3.0117648  4.         4.9882355
  5.9764705], shape=(13,), dtype=float32)
tf.Tensor(
[-5.9764705 -4.9882355 -4.        -3.0117648 -1.9764706 -0.9882353
  0.         0.9882353  1.9764706  3.0117648  4.         4.9882355
  5.9764705], shape=(13,), dtype=float32)

@sachinprasadhs,
I was able to reproduce the issue on tensorflow v2.9, v2.10 and nightly. Kindly find the gist of it here.

After some deep digging, you're getting different answers because of the use of compiler-generated fused-multiply-adds (FMA).  It's a compiler optimization that actually makes the GPU kernel slightly more accurate.
The GPU kernel is built with FMA enabled by default (generally, not specific to TF):

--fmad=true for nvcc docs
-ffp-contract=fast for clang docs

The CPU kernel is not built with FMA by default, though you can enable it by specifically enabling fma via compile flag -mfma.
If you explicitly enable FMA in both cases you get the same values (the GPU values you report - mostly - except potentially for some tail-end values, depending on how the compiler decides to fuse some operations).  If you explicitly disable FMA in both cases, you get the same values again (but this time the CPU values you report).
Welcome to the wonderful world of floating-point arithmetic and compiler optimizations.


adapt to ledgerjs 4.0.0 API changes

Upstream change: https://github.com/cardano-foundation/ledgerjs-hw-app-cardano/blob/master/CHANGELOG.md#400---october-27th-2021

Hey, @yushih tested sending and staking, so far working good, tomorrow after some rewards I'll be testing the withdraw and the deregistration.


how to create my own group

how to create my own group rather than using group "other" with id "5c03119e-3074-46fd-976b-c60198311f70" ? thanks

You're probably referring to the preconfiguredEntries groupId. That's reserved for pre-defined group ids.
If you want your own group, use "group", see below the example from https://docs.microsoft.com/en-us/sharepoint/dev/spfx/web-parts/guidance/simplify-adding-web-parts-with-preconfigured-entries
...json
"preconfiguredEntries": [{
"groupId": "1edbd9a8-0bfb-4aa2-9afd-14b8c45dd489", // Discover
"group": { "default": "Under Development" },
...
}]
...

Just to clarify the groupId has to be one in the existing list from the article linked and these groups map to the headings in the screen shot below. The group attribute is for classic pages only.
Is there any plan to provide people with a way to get a custom group in modern pages in the future?

Yes, I also indeed need this functionality and it seems not working in modern experience

a very wanted feature

Any update for this ?

Still no option for create our own web parts group in modern enviroment? Any update please? Thanks...

No - at this point there is no option for creating your own groups.  As this isn't really a "bug", I'm going to close this.


Restricted marker transfer over ibc (#1158)

initial setup of the ibc transfer

Update proto to reuse ibc transfer

remove telemetry

wire in ibc send

Add tx command for ibc transfer

add todo for tx command

moving to ibc-testing tag.

Fixes to cli and msg server.

changing signer of ibc message.

setup ibc transfer keeper before marker keeper

refactor ibc-transfer command, setup first test for ibc-transfer cli

add a few more cli tests

Updating proto comments.

Add change log entry

add spec

add msg test

update ibc-go tag

Co-authored-by: arnabmitra<EMAIL_ADDRESS>
Description

closes: #XXXX

Before we can merge this PR, please make sure that all the following items have been
checked off. If any of the checklist items are not applicable, please leave them but
write a little note why.

[ ] Targeted PR against correct branch (see CONTRIBUTING.md)
[ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work.
[ ] Wrote unit and integration tests
[ ] Updated relevant documentation (docs/) or specification (x/<module>/spec/)
[ ] Added relevant godoc comments.
[ ] Added a relevant changelog entry to the Unreleased section in CHANGELOG.md
[ ] Re-reviewed Files changed in the Github PR explorer
[ ] Review Codecov Report in the comment section below once CI passes

This looks like #1167 ... what is different?

Didn't realize @SpicyLemon was already on it.  Closing.


Make release buildType actually build

Add constructor function to AndroidBuildToolVersions in buildSrc
Add DI setup for release variant
Bump AGP compile SDK from v30 to v31
Add debug version of app to googleservices.json
Use gradle java toolchain configuration to set Java/Kotlin source compatibility
Switch deprecated AGP dsl functions to new versions
Enable gradle build cache
Correct KtLint style issues
Use refreshVersions notations instead of strings in root and app build.gradle.kts
Enable gradle configure on demand
Use com.autonomousapps.dependency-analysis gradle plugin in root project to diagnose unused dependencies
Remove unused dependencies
Switch dependencies to compileOnly where recommended by dependency analysis plugin
Update to latest ktLint. Update Android Studio code style to that used by ktLint
Update detekt rules to allow TODO comments if they have an issue number attached
Remove unused dependencies from versions.properties
Reformat with ktLint
Disable argument-list-wrapping ktLint experimental rule
Replace useless kotlin-dsl plugin with kotlin-jvm in buildSrc build.gradle.kts
Sync continuation indent size with ktLint
Add property to AndroidBuildToolVersions for Java language version Rename AndroidBuildToolVersions to BuildVersions
Prevent lints from breaking build
Force all subprojects using kotlin and/or android to use the same java language version
Remove unused layout
Reformat according to ktLint

Closes #19


Exclusive OR operation and others for registry.

It just occurred to me that one could in principle enhance the registry.has<...>(...) and registry.any<...>(...) methods with all the basic logic operations. I admit XOR seems to me to be the most convenient, but in theory all apply.
bool hasExclusivelyOneComponent = registry.XOR<component1, component2, component3, ...>(entity);

The holy grail would of course be able to generate views with more expressive logical conditions. But that might have other performance trade-offs.
Also, build times may suffer...

The holy grail would of course be able to generate views with more expressive logical conditions.

How do you envision them? each returns references to actual objects. You cannot return references to things that don't exist. How do you imagine the API for that?

Maybe something like:
registry.view<C1>(entt::exclude<C2, entt::xor<C3,C4>>);

I'm not sure if such is possible in practice.

No, I mean, how you would use it? The only way I see is to allow only range-for and iterators since each would be tricky to implement.
Another possibility is to turn the or in an std::variant.

You could pass multiple functions to each. Similar to the way std::visit works. BTW, xor is a reserved keyword.

consider
registry.view<C1>(entt::exclude<C2, entt::xor<C3,C4>>).each(...);

as an alternative to
registry.view<C1>(entt::exclude<C2>).each([](auto entity, auto comp){
if (!registry.XOR<C3,C4>(entity))
	// do something
}
);

The holy grail would of course be able to generate views with more expressive logical conditions.

How do you envision them? each returns references to actual objects. You cannot return references to things that don't exist. How do you imagine the API for that?

I think that's a very valid point. I think it would be fine if it happened only in the context of entt::exclude.

The major use-case I see is when you have a bunch of empty flag-type components and you effectively want to generate a filtered view.

No, well, thank you for sharing your guesses.
I'm not sure it's possible (or at least easy to implement) but I'll look into this and let you know. :+1:
I'll try to give you a feedback as soon as possible.

Awesome, thanks!

The logical XOR operator isn't really defined for more than two operands. It might make more sense to generalize this to counting how many of the given components are attached. Then to check if only one of a list of components is attached, you'd do something like registry.count<A, B, C>(entity) == 1.

XOR is commutative and associative, so it’s trivial to generalize to any number of inputs. I was thinking that the template fold expressions could be used for this feature I proposed

When you generalize XOR for more than two operands, you don't get the desired behaviour. You take XOR to mean "one and only one" but this truth table says different.

a
b
c
a XOR b
(a XOR b) XOR c

0
0
0
0
0

0
0
1
0
1

0
1
0
1
1

0
1
1
1
0

1
0
0
1
1

1
0
1
1
0

1
1
0
0
0

1
1
1
0
1

If you chain XOR like this, you end up checking for odd parity.

True, that was a mistake on my part. I’ll correct the name of the bool.
I still think the larger point is that it would be very nice to be able to generate pre-filtered views, and as you say groups. And there I’d say both your count proposal and basic logic operations look very useful to me.
Regarding performance in views, I was basing my assumption of the related fact that you should prefer view.get to registry.get

I modified the name of the issue given the direction the discussion has taken. I hope you don't mind.

We already have registry.has<A, B, C>(entity) for A AND B AND C and registry.any<A, B, C>(entity) for A OR B OR C. What else is there?

We already have registry.has<A, B, C>(entity) for A AND B AND C and registry.any<A, B, C>(entity) for A OR B OR C. What else is there?

Those are the only ones I know about. Which is why I opened this issue.

In theory these could also be enhanced this way:
registry.has<A, entt::XOR<B, C>>(entity)

and
registry.has<A, entt::NOT<B>>(entity)

That sounds like a lot of complex templates for very little gain. I think
registry.has<A>(entity) && registry.count<B, C>(entity) == 1

and
registry.has<A>(entity) && !registry.has<B>(entity)

are more readable. C++ already has logical operators. I don't see the point in reinventing them with templates.

I was trying to get both data with a single read. But given how EnTT works, it's probably for nothing.

C++ already has logical operators. I don't see the point in reinventing them with templates.

Don't get me wrong, I'd far rather prefer this:
registry.view<C1>(entt::filter<!C2 & (C3 ^ C4)>).each(...);

to what I proposed ;). Sadly I don't think that's valid C++.

The best you can probably do in C++ is entt::filter<~(c<C2> & (c<C3> ^ c<C4>))> where cis a variable template. I still think this is a lot of templates for no good reason.

I still think this is a lot of templates for no good reason.

The AND case is already implemented. I don't know how hard it is to generalize. I still believe it would be very nice to be able to pre-filter views more expressively.
But yes, definitely lots of templates.

The best you can probably do in C++ is registry.view<C1>(~(c<C2> & (c<C3> ^ c<C4>))) where c is a variable template. I still think this is a lot of templates for no good reason.

I think what you describe is very close to what is already there. Consider:
registry.view<C1>(entt::exclude<C2> && entt::include<C3,C4>>);

What I don't understand is: if you want to iterate all entities that have A and B, not C and either D or E, you can already do that with two views that don't overlap or even better with two partial groups (on D and E) that would have by far better performance than any other view based solution.
My concern is that here we risk to add something that all in all isn't that useful performance wise and will quickly become only a maintenance burden.
Why using two views/groups isn't acceptable? I missed the point, sorry.

ATM I'm doing exactly that, generating multiple views.

 But if I could express them in a single view I'd get:
[X,X, , , ,X,X, , , , , , , ,X,X,X,X, , , ,X, , , , , ,X]

And I'd iterate once over these. Wouldn't this be faster because of better cache usage?

On maintenance
If I generate multiple views I need to be careful that the logic of every view is exactly complementary to that one of the others. Maintaining the logical coherence of different complementary queries is in my experience also a non-trivial maintenance burden. Especially if you want the order of the views not to matter.

Wouldn't this be faster because of better cache usage?

The way views work is way more complex.
A view uses the shortest pool internally, so most likely D and E in my example. Therefore, you iterate two disjoint sets of entities and all them are returned to the caller in both cases.
A partial owning group would even get rid of the test to know if the entity is valid since it's so by construction.

Maintaining the logical coherence of different complementary queries is in my experience also a non-trivial maintenance burden

Wouldn't be a problem as well if you get entities that have D and entities that have E interleaved with no apparent logic?
I usually prefer to elaborate the two sets separately since there is a reason for which they are so.

Wouldn't be a problem as well if you get entities that have D and entities that have E interleaved with no apparent logic?

Maybe, I guess this one is subjective.
Anyway, thanks for all the interesting feedback. It's always quite interesting to think about the best ways to use this library :).

Yeah, sure, this issue turned out to something interesting, so thank you for participating! :wink:

I just found another case in my code where this feature might be useful 😉
// f(A&, B&) and g(A&, B&)

reg.view<A, B>(entt::any<C, D>).each(f);

reg.view<A, B>(entt::exclude<C, D>).each(g);

I like the idea that I don't need to add the unused filter types to the function signatures.

The expected result for entt::any<C, D> is that you receive an entity also when it has both C and D?
I cannot figure out the api of an each for this particular case tbh. An std::optional isn't suitable since it wouldn't be enough when the entity has both the components. So... a series of pointers that are eventually null? You would add a filter as well thus defeating the purpose.
What else?

The expected result for entt::any<C, D> is that you receive an entity also when it has both C and D?

When it has either C or D. Thus the combinations of both views iterates over all <A, B> pairs.
—-
Again I think I’m misunderstanding something. I never care to access C or D types, I simply want to filter the view based on whether they exist. So as a user I would never be exposed to any null pointers.

Oh. So something like this?
reg.view<A, B>(entt::any<C, D>).each([](A &a, B &b) { ... });

I missed this point. I thought all time you wanted to receive instances also for C and D.

Oh. So something like this?

Yes exactly this!
The point is that C and D are just empty structs that work as flags. Therefore I never care to get them. And this is also the reason why I think it's nice to remove them from the view's template parameters because you are exactly stating "I want my view to be created based on the existence of C and D but I never want to access them". Which is nice because it expresses which components you actually want to access.

Oh. So something like this?
reg.view<A, B>(entt::any<C, D>).each([](A &a, B &b) { ... });

I missed this point. I thought all time you wanted to receive instances also for C and D.

You want something similar to how ranges work in C++20 then.
That is: reg.view<A, B>() is my view, let's filter it somehow. It would be similar to this in C++20:
for (auto entity: reg.view<A, B>() | std::views::filter(entt::any<C, D>)) {
    std::cout << i << ' ';
}

While the each based iteration could be something like:
view.filter(entt::any<C, D>(registry)).each([](auto entity, A &a, B &b) { ... }

Or even:
view.filter(reg.view<C>(), reg.view<D>()).each([](auto entity, A &a, B &b) { ... }

Since it's not different from:
regi.vew<A, B>().each([c = reg.view<C>(), d = reg.view<D>()](auto entity, A &a, B &b) {
    if(c.has(entity) && d.has(entity) { ... }
});

You want something similar to how ranges work in C++20 then.

Exactly. How the interface looks I didn't much about yet.

Since it's not different from:
regi.vew<A, B>().each([c = reg.view<C>(), d = reg.view<D>()](auto entity, A &a, B &b) {
    if(c.has(entity) && d.has(entity)) { ... }
});

Does this work already? 😄 I never thought of this.
The only disadvantage of this interface is that you couple your function object to the view filtering. If it's somehow the view's functionality you're more flexible with reusing lambdas.

If only forward iterators didn't have the retarded constraint of returning actual references, this could be easily implementable using a range-like approach.
Unfortunately, all we can do in that case is returning entities rather than tuple of elements. Btw maybe it's even reasonable in this case but... you'd like to have this filter during an each and not during a range-for loop, right? :smile:

exactly...

reg.view<A, B>(entt::any<C, D>).each([](A &a, B &b) { ... });

I suggested this form because it's essentially how exclude works.

From the gitter channel. Probably, this is something doable (even though it would be a breaking change):
reg.group<A, B>(entt::filter<entt::all<C>, entt::any<D, E>, entt::none<F>>)

Similarly for views:
reg.view<A, B>(entt::filter<entt::any<C, D>, entt::none<E>>)

Where the first <...> means own for groups and reg.view<A>() is equivalent to reg.view(entt::filter<entt::all<A>>) here.
Another option:
reg.group<A, B>(entt::all<C> | entt::any<D, E> | entt::none<F>)

Rather than:
reg.group<A, B>(entt::filter<entt::all<C>, entt::any<D, E>, entt::none<F>>)

That is, a more range-ish approach. Similarly, for views we would have:
reg.view<A, B>(entt::any<C, D> | entt::none<E>)

Or equivalently:
reg.view(entt::all<A, B> | entt::any<C, D> | entt::none<E>)

Looks all very cool. Maybe something for the 4.0 release. 😉

I think we can have a smooth transition with deprecated functions.
@Kerndog73 do you like this version more? It looks good actually and it doesn't add much complexity probably.

@skypjack I'm all for mimicking the standard library and ranges is no exception

If only forward iterators didn't have the retarded constraint of returning actual references, this could be easily implementable using a range-like approach.

Now we have iterable objects for views and groups. So, this:
reg.view<A, B>().each([c = reg.view<C>(), d = reg.view<D>()](auto entity, A &a, B &b) {
    if(c.has(entity) && d.has(entity)) { ... }
});

Becomes:
for(auto &&[entt, a, b]: reg.view<A, B>().each()) {
    if(registry.any<C, D>(entity)) {
        // ...
    }
}

And you can easily reuse your lambdas, members, whatever if you want.
Moreover, the object returned by each is suitable for using with C++20 ranges. Something like:
for(auto &&[entt, a, b]: reg.view<A, B>().each() | std::views::filter([&reg](auto curr) { return reg.any<C, D>(std::get<0>(curr)); })) {
    // ...
}

I haven't tried it, the code is out of my mind but it should be something similar to that.
So, all in all, imho there is nothing else to do here. Am I wrong?

This is very nice, thanks.

You're welcome. I'm closing the issue then.
Feel free to reopen it if you spot any error or missing feature. Thanks.


Port in OpenCV contrib

I have finally found the time to integrate this into OpenCV. See:
https://github.com/opencv/opencv_contrib/tree/master/modules/rapid
Here, I ended up rewriting most of the code, but having your code for comparison was a nice help nevertheless.
I found some bugs, which I wanted to note though (Off the top of my head)

sometimes the search-lines were reversed, which led to mismatches
your LOS implementation was using the background class for tracking
you were initialising memory very inefficiently, which hampered runtime

Fixing these allows using the non-robust OpenCV pose-estimator instead of levmar with tuckey.
The version that is now in OpenCV is about 2-3x faster, while being more precise.
On the plus side, the non-robust estimator showcases the difference between GOS and LOS better.

Thank you for your work.
I briefly browse the code, your implementation is very short and effective.
I will study and review it.


[AutoPR adhybridhealthservice/resource-manager] Swagger Spec for Microsoft.ADHybridHealthService

Created to sync https://github.com/Azure/azure-rest-api-specs/pull/2989

Codecov Report

Merging #2504 into restapi_auto_adhybridhealthservice/resource-manager will not change coverage.
The diff coverage is n/a.

@@                                 Coverage Diff                                  @@
##           restapi_auto_adhybridhealthservice/resource-manager    #2504   +/-   ##
====================================================================================
  Coverage                                                55.12%   55.12%
====================================================================================
  Files                                                     6369     6369
  Lines                                                   141224   141224
====================================================================================
  Hits                                                     77848    77848
  Misses                                                   63376    63376

Continue to review full report at Codecov.

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

@AutorestCI regenerate


Rancher server starts new kubernetes-ingress-lb instance, for each ingress resource being added.

Rancher Version:
Server v1.2.0 Agent v1.1.0
Docker Version:
1.11.2
OS and where are the hosts located? (cloud, bare metal, etc):
Ubuntu14.04 VMware
Setup Details: (single node rancher vs. HA rancher, internal DB vs. external DB)
Single node rancher with two hosts
Environment Type: (Cattle/Kubernetes/Swarm/Mesos)
Kuberenetes
Steps to Reproduce:
Create few namespaces. For example: test1, test2, test3
Add ingress resource to each namespace like this one:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-name
spec:
  rules:
  - host: ${HOSTNAME}
    http:
      paths:
      - path: /ws
        backend:
          serviceName: ws
          servicePort: 7000
      - path: /store
        backend:
          serviceName: store
          servicePort: 6000
      - backend:
          serviceName: front
          servicePort: 8080

Results:
Rancher will start new kubernetes-ingress-lb instance for each Ingress resource being added.
Each of my hosts ended running instance of kubernetes-ingress-lb. Then i tried to add ingress resource to third name space i end up with this error:
 (Failed to allocate instance [container:1i629]: Bad instance [container:1i629] in state [error]: Scheduling failed: host needs ports 80/tcp available)

Expected:
I expect from rancher to update configuration of exiting kubernetes-ingress-lb instances and not start new one. Like Nginx Ingress Controller for example.

Hi
It is exactly the main issue we encounter with Rancher that prevents us to use it in production. There are some discussions related to:

#6344 : Feature Request: Support kubernetes.io/ingress.class annotation
#5999 : How to properly disable rancher-ingress-controller

And I tried to open a discussion on Rancher forum (https://forums.rancher.com/t/rancher-ingress-and-traefik/3930) without reaction.
My use case is nearly the same than yours. Multiple namespaces with ingress (host/path based rules) on the same port.

@LoicMahieu I end up using Traefik as ingress controller.
Deployed Traefik as a Daemon set.
Also i cloned rancher-catalog to local git and changed docker-compose file by deleting rancher-ingress-controller from k8s infra template and feed it as -e DEFAULT_CATTLE_CATALOG_URL='library=http://local-git.local/rancher-catalog.git' to rancher server.
So far so good.

+1

With the release of Rancher 2.0, development on v1.6 is only limited to critical bug fixes and security patches.


Switching to Kotlin

This will be included progressively in the application.
One part at a time, to reduce risks of introducing bugs and have smaller changesets.


Issues with rest-framework automatic documentation

It looks as if the Django rest framework OpenAPI documentation is only intended to be served from one place. Currently, the api-devel branch is saying this on startup:
(urls.W005) URL namespace 'api-docs' isn't unique. You may not be able to reverse all URLs in this namespace

but automatically finds everything worth documenting - both /transport/api/docs/ and /api/docs/ are showing the same thing.
Where should we put the Docs?
Now that there's more than one 'thing' being documented the names of the various endpoints start to look a bit odd: aq_read, aq_read_0, parking > history > list, etc.:

Is there anything we can do to tidy this?
There also seems to be a bug, with the coreapi examples saying, e.g.
$ coreapi action api aq > read -p station_id=...

when I think that should be
$ coreapi action api aq read -p station_id=...

#131 merged


features needed

import of text files
import of zip file which contains text files
full text search option
highlight the text in search results

@passionate2023 thank you for feature requests. i will make an import feature and a search feature.


Mark PipelineRun completed after binded PVCs are deleted

Feature request
Background
Today, the pvcs created from PipelineRun's VolumeClaimTemplate is not automatically deleted at PipelineRun completion time by default. We have a user request to allow PVC to be deleted when a PipelineRun is completed. In TEP-0135, we have enforced such PVCs to be deleted at the PipelineRun's completion time in the new Affinity Assistant mode (i.e. coschedule: pipelineruns).
The pvcs are currently deleted in a "fire and forget" manner. The PipelineRun is marked as completed right after we call the APIServer to delete the pvcs (without checking if the pvcs are successfully deleted or not).
Proposal
@lbernick suggested that one potential improvement is to mark the PipelineRun completed after validating the pvcs are successfully deleted (i.e. we made another API call to try to get the pvcs)
Use case
Pros

There is no uncertainty of the pvc state when the owning PipelineRun is completed
Reduce test flakiness when validating pvc state after a PipelineRun is completed in our integration test

(We saw flakiness when pvcs are not yet deleted due to slow nodes after the PipelineRun is marked completed, which causes tests to fail)

Cons

Increasing PipelineRun completion latency
Potential PipelineRun timeout due to slow nodes to delete pvcs
What is the right state of the PipelineRun if the pvc deletion is failed?

This issue is created to collect more feedbacks from community, please let me know!

/remove-lifecycle stale


Add cookstyle for Chef Ruby

When writing Chef cookbooks, the best practice is to use the "cookstyle" gem instead of upstream "rubocop". This gem locks rubocop at a specific version and changes that make sense for Chef cookbooks. It would be awesome to have this as an option for a Ruby linter.

Done, thanks to @pfuender. :+1:


[HOLD] Updated to latest minor release of webpack-dev-server.

Codecov Report

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

@@          Coverage Diff          @@
##           master   #502   +/-   ##
=====================================
  Coverage     100%   100%
=====================================
  Files          54     54
  Lines        1724   1724
  Branches      257    257
=====================================
  Hits         1724   1724

Flag
Coverage Δ

#builder
100% <ø> (ø)
:arrow_up:

#runtime
100% <ø> (ø)
:arrow_up:

#srcapp
100% <ø> (ø)
:arrow_up:

Continue to review full report at Codecov.

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

Closing due to inactivity


Add tests for access and storage statistics

We've had a couple of regressions recently -- paste due time to add some tests.

+1 to close this and eqc testing might be future work or we totally update from scratch.


Fog problem

Mod Version:
1.16.5-<IP_ADDRESS>
Forge Version:
1.16.5-36.2.39 + OptiFine_1.16.5_HD_U_G8
Description:
When this mod is installed, the fog settings are always at the farthest distance, regardless of what is set in the game settings.
It also breaks its display in another way - there is fog only in the center and objects in the distance are displayed strangely

Okay, I found out how to configure this mod and removed the fog and everything became beautiful.  I really liked the color of the fog depending on the biome. I hope that the developer will share these concepts and it will be possible to use vanilla/optifine fog and its colors from DS


require('image!somePng') broken on Android for 0.14.0

I have an issue for RN 0.14.0 that cannot import a static asset image.
However, npm install react-native from github master branch and gradle compile from maven local build works fine.
There must be some wrong from 0.14.0 however, there are too much changes between 0.14.0 and master.
Are there any hints if I can solve this?
Thanks.

require(./somePng.png),try it

Hi @Kudo, 0.14 changed the way you can manage your images for both iOS and Android. It's like requiring .js files. Check here: http://facebook.github.io/react-native/docs/images.html#content

Thank you guys. However how if I would require images from Android project drawables (i.e. android/app/src/main/res/drawable-*/ ) ?

It can automatically find the directory

https://github.com/52myu/react-native/commit/1019cc3aef56ef0d105b6781f3d5dd5342243172

My test for 0.14.0.
js file at ${ProjectRoot}/src/containers/App.js
      <View style={styles.container}>
        <ToolbarAndroid
          style={styles.toolbar}
          navIcon={require('./ic_menu_white_24dp.png')}
          titleColor='#fff'
          title={'Toolbar'}
        />
        <Text>foo</Text>
      </View>

Output of files at find ${ProjectRoot}/ -name '*ic_menu_white_24dp.png'
./android/app/build/intermediates/res/merged/debug/drawable-hdpi/ic_menu_white_24dp.png
./android/app/build/intermediates/res/merged/debug/drawable-mdpi/ic_menu_white_24dp.png
./android/app/build/intermediates/res/merged/debug/drawable-xhdpi/ic_menu_white_24dp.png
./android/app/build/intermediates/res/merged/debug/drawable-xxhdpi/ic_menu_white_24dp.png
./android/app/build/intermediates/res/merged/debug/drawable-xxxhdpi/ic_menu_white_24dp.png
./android/app/src/main/res/drawable-hdpi/ic_menu_white_24dp.png
./android/app/src/main/res/drawable-mdpi/ic_menu_white_24dp.png
./android/app/src/main/res/drawable-xhdpi/ic_menu_white_24dp.png
./android/app/src/main/res/drawable-xxhdpi/ic_menu_white_24dp.png
./android/app/src/main/res/drawable-xxxhdpi/ic_menu_white_24dp.png

Did I have anything wrongs?

From Android resources the right way to use the drawable is
<View style={styles.container}>
        <ToolbarAndroid
          style={styles.toolbar}
          navIcon={{ uri: 'ic_menu_white_24dp' }}
          titleColor='#fff'
          title={'Toolbar'}
        />
        <Text>foo</Text>
      </View>

"ic_menu_white_24dp" must be in your drawables ;)

@sarriaroman the syntax works fine, thank you.
I guess we should update the UIExplorer sample code if require('image!...') is not work or going to deprecate.

@Kudo I tried require(./somePng.png) and {{ uri: 'ic_menu_white_24dp' }},both of them can't work well.What's your solution?

Oh,I tyied new Image Resources System, all fail.Require is OK but I can't see image.Why?

@marsprince Any further information such as your code snippet, image file structure and error log ?
For my worked solution is just to use navIcon={{ uri: 'ic_menu_white_24dp' }}.

I have the same problem

@Kudo The problem is no any error.Everything right but it showed null.DId you use github master branch instead of npm branch to make it work?

@marsprince Where did you put your my-icon.png?
I think you should put my-icon.png in the same folder as the JS file for your case. (I.e. not in Android drawable folder)
BTW, regarding the "Failed propType", please try to remove the double quotes from the width/height value.

@Kudo thank you,guys.If I put my pictures in a wrong folder,packager will throw a ERROR.However I didn't get it.Maybe other fault.

@marsprince I only have this issue in debug JS mode as #3989
You may try to inspect the element if the element is constructed.
and further add console.log to https://github.com/facebook/react-native/blob/v0.14.1/Libraries/Image/Image.android.js#L143 and check the imageProps content.
You can check the console.log output from Xcode console, adb logcat, or Chrome devtool is you are in debugging JS mode.
There might be a "src" field, which has the image URL, check if you can view the image by the URL in your simulator or real device.
This is just my way to find #3989's problem, just for your reference if it may helps.

@Kudo  Thank you,guys! I will try it.

I am using 0.14.0
I tried
navIcon={{ uri: 'ic_menu_white_24dp' }}

and
navIcon={{ uri: "ic_menu_white_24dp", isStatic: true }}

and
navIcon={require('./ic_menu_white_24dp.png')}

all of those ways didn't work.

@atom992 You may try the way https://github.com/facebook/react-native/issues/3943#issuecomment-155139757 to troubleshooting.  I guess the issue may relate to your environment.

I am going to close this issue that the problem is solved for @sarriaroman's help. Thank you guys.
For RN 0.14, to use hybrid app's resource, we should follow http://facebook.github.io/react-native/docs/images.html#images-from-hybrid-app-s-resources.
If there are further questions which are not real issues, maybe we could follow up on stackoverflow?


download plugin for local data

Following discussion https://github.com/CS-SI/eodag/discussions/454, create a new download plugin that would copy local products or create a symlink to them

My goal is to add a dag.download_all() at the end of this tutorial 😅
(you'll see my usecase there too)


License update

Hi,
I was wondering when/if the license will follow React's (removing PATENTS) and moving over to MIT.
Sorry for using the issue system for this.
Thanks,
Istvan

React Native (including Metro, Fresco, and Yoga) has also been relicensed as MIT.
https://github.com/facebook/react-native/commit/26684cf3adf4094eb6c405d345a75bf8c7c0bf88


TResNet models

add 3 TResNet models:
tresnet_m: 80.8% on input resolution 224, inference speed faster than resnet50
tresnet_l: 81.5% on input resolution 224
tresnet_xl: 82.0% on input resolution 224
the models need the InPlaceABN package.

@mrT23 thanks for the PR. Does the model work with the train script in this repo? You might need to eat a few extra args like global pool selection. Could you check, you don't need to hook them up, but I would like training to run without crash. I am not at computer for a few days now otherwise would check.  Thx

Nevermind, you don't pass the kwargs through. I'll merge.

just for the record:   :-)

i ran validate.py on all models and made sure i reproduce results
i ran train.py and saw that training is running.
with JSD and some lr fine-tuning, we should surpass the 80.8% for tresnet_m, but it is to be proven

thanks


fix isElement function

Motivation
In Chrome the isElement function is not working as the HTMLElement is not an object there.
Changelog
🐞 fix isElement function to support also Chrome

In Chrome the isElement function is not working as the HTMLElement is not an object there.

Can you please elaborate on “is not working”? What’s your expected and actual result?
I ask because as per MDN: “The HTMLElement interface represents any HTML element” and “[it] inherits properties from its parent, Element.”
There’s also a difference between typeof and instanceof in JavaScript. I think the
typeof HTMLElement === 'object'

will always be false because HTMLElement is a constructor (i.e. function) on Chrome, Firefox, and Safari:
> typeof HTMLElement
< "function"

I also think the code should work. Maybe we have an issue in our downstream code that the element isn't from the same window and therefore a different HTMLElement instance?

I'd rather check typeof obj && obj instanceof obj.ownerDocument?.defaultView?.HTMLElement

I also think the code should work. Maybe we have an issue in our downstream code that the element isn't from the same window and therefore a different HTMLElement instance?
The code work, I just added the update from stackoverflow (where the existing code is coming from) to test. Yes, it is from a different window. As we have added with this code a dependency to the window. So we have added with that a breaking change. I will check what we can do with the spellcheck.

Just the example which is not working.
`const createElement = (html, win = window) => {
const el = win.document.createElement('div')
el.innerHTML = html
return el.firstElementChild
}
var ifrm = window.document.createElement("iframe")
window.document.body.append(ifrm)
const spanElement = createElement('test', ifrm.contentWindow)
spanElement.setAttribute('data-editable', 'ui-unwrap')
spanElement.setAttribute('data-highlight', 'something')
spanElement instanceof HTMLElement`  // --> false

:tada: This PR is included in version 3.0.7 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Add method that creates link to Slack Bot Builder

I got the idea from here:
https://github.com/ASU-CodeDevils/slack-blockkit#online-message-blocks
I already wrote the code with tests and documentation, the function is essentially

def create_block_kit_builder_url(block_kit_like_object):
    """
    Takes block_kit_like_object like element, component, surfaces, and objects
    block_kit_like_object can be built (build()) or unbuilt, see example
    """
    block_kit_builder_url = "https://app.slack.com/block-kit-builder/#"
    try:
        block_dump = dumps(block_kit_like_object.build())
    except AttributeError as attribute_error:
        if str(attribute_error) == "'dict' object has no attribute 'build'":
            block_dump = dumps(block_kit_like_object)
        else:
            raise AttributeError
    except Exception as e:
        raise e from None
    final_url = block_kit_builder_url + block_dump
    final_url_safe = quote(final_url, safe='/:?=&#')
    msg = "Block kit builder example/validation:  \n\t" + final_url_safe
    print(msg)

Please grant me write access to branches so I may make a pull request

That's a great idea! Please create a fork of the repo and make a pull request from it.

Gotcha, yeah this is my first time contributing to Open Source :)


Version Code: 16
Version Name: 0.7.4
Device Info: TCL A509DL A509DL

This is only my newest phone

I have to buy phones left and right because I get totally locked out in viruses completely filled however I've been lucky so far in


Display exact token balances

Overview
As mentioned in #449, users of the wallet do not have an intuitive way to view their entire token balance.
We currently handle this in Explorer by displaying the exact balance in yoctoN in a tooltip, but this approach has limitations (and is currently quite difficult to understand).
Goals

Keep the balance readable by default (10.54 N rather than 10.539823823 N)
Provide a view of the full balance (via tooltip, CTA, etc)
Communicate the utility of small balances (<0.00001 N can be used for small number of TXs)

Closing as issue is outdated


Need more examples about how to use user own statistical tests function.

Hi.
I want to use own statistical tests function with evidently dashboard.
I added my function to stattest_func argument in DataDriftOptions.
I got an error but solving is not easy for me. I don't know the correct usage.
So, I tried to find detail docs or example but I couldn't.
Can I have some guide?

Hi @KevinRyu,
Can you provide the error you got there?
Statistical test function should meet several requirements:

signature (reference_data: pd.Series, current_data: pd.Series) -> float
return value in range from 0.0 to 1.0
Here an example with custom stattest function examples/how_to_questions/drift_dashboard_with_options_california_housing.ipynb

Hi.
Thanks a lot. I got off work today.
I will check and give you feedback.
2022년 2월 8일 (화) 오후 6:58, Vyacheslav Morov @.***>님이 작성:

Hi @KevinRyu https://github.com/KevinRyu,
Can you provide the error you got there?
Statistical test function should meet several requirements:

signature (reference_data: pd.Series, current_data: pd.Series) ->
float
return value in range from 0.0 to 1.0
Here an example with custom stattest function examples/how_to_questions/drift_dashboard_with_options_california_housing.ipynb

https://github.com/evidentlyai/evidently/blob/main/examples/how_to_questions/drift_dashboard_with_options_california_housing.ipynb
—
Reply to this email directly, view it on GitHub
https://github.com/evidentlyai/evidently/issues/143#issuecomment-1032421433,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AG43MBJALUL72PNZ2IFZR43U2DSLZANCNFSM5NZ5KM6Q
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you were mentioned.Message ID:
@.***>

We implemented many statistical tests, here is a full list of available tests: https://docs.evidentlyai.com/user-guide/customization/options-for-statistical-tests May be on of them will suit straight away.
And here is an example of the custom stat test usage: https://github.com/evidentlyai/evidently/blob/main/examples/how_to_questions/drift_dashboard_with_options_california_housing.ipynb


Auto-complete not working for basic-demo

for basic-demo autocomplete part is not working. I am using the same code but the autocomplete dropdown is not coming.

I'm having the same problem, did you find out a solution ?

Hi all, any solution to this? @nethore did you solve it? @ambikesh9  did you?
Thanks!!


gzip if necessary

Feature
Add the ability to gzip input files
Envisioned steps to use

Call splitseq_run.sh and supply 2 uncompressed fastq files

Current behavior
Since gzip input is required, to run the script without error, you have to gzip the 2 fastq input files if they are not already gzipped, which means you have to wait and launch the script after the long gzipping process.
Expected behavior
Add a conditional to gzip the files before running split-seq.
Suggested Change
Check whether each file ends with .gz.  If not, gzip the file and update the variable holding the file name.
Comment
I was running samples I downloaded using fastq-dump.  Normally, the files will be gzipped off the sequencer.
I forget the error you get when you try to supply an ungzipped input, but it doesn't work.

Merged to master


Active Tab Background Color

It is difficult to find out which is the active tab in this theme.
When we switch to the 'pmahomme' theme. Active tabs are easy to find.
Change the background color of tab active state.

Okay thanks, i'll change it 👍


check OpenURL before launching browser in offline mode

Fixes #117. This check is necessary otherwise when parameters 'offline':true and 'open':false are passed to fig2plotly, plotly still tries to open up the browser.

Thanks for the fix @imatlab-helper

Cheers! Thanks for the fast turnaround and for working on such an immensely valuable tool. The impact on the educational and scientific communities is tremendous. Please keep it up!


⚠ File access (beta) has degraded performance

In c6e7141, File access (beta) (https://beta.fyle.uk/file/fish) experienced degraded performance:

HTTP code: 200
Response time: 6901 ms

Resolved: File access (beta) performance has improved in 88a1756.


ASP.NET Core

Hi, is it possible to use asp.net core and the mobile app packages to create my .net backend? Is this being planned in the future? Thanks.

It's under consideration.  See #97 for the tracking issue.
Closing for dup.

I'd like to see this too!


Adding support to different linux platform  by passing extra paramete…

…r as from_image_name , So that this changes  will support to  create elasticsearch docker image for other linux base os images well, By default if there is no parameter passed then it will create for centos.
Initial changes were supporting only for base centos image.  New changes can support for different linux base os images.  If support we pass the command like 'make build from_image_name="registry.access.redhat.com/rhel7.3" then it will create the elasticsearch docker image for "registry.access.redhat.com/rhel7.3" this base image.  this way we can pass any other base linux os image name on which we can create docker image.   New code still supporting for centos as default os if no parameter is passed like "make build".
Does this PR include tests?  No
elasticsearch-docker is developed under a test-driven workflow, so please refrain from submitting patches without test coverage. If you are not familiar with testing in Python, please raise an issue instead.

Can one of the admins verify this patch?

Can one of the admins verify this patch?

Hello,
I'm afraid this patch would require a huge explosion in test coverage. It's a lot of working just keeping up with tests for a single OS base. We don't generally accept features into the master branch that have no test coverage. That's why we specifically ask in the PR template "Does this PR include tests?".


[release-v1.9] Migrate to use hack/generate tool to generate images.yaml

Port of https://github.com/openshift-knative/eventing/pull/157 to 1.9

/assign @creydr


Find and replace: don't put a focus on replace input by default

I think it's useless and dangerous to do that.

Just for the records, Visual Code is putting auto focus in find input when it is empty and replace input when else.

Sublime is always putting focus into find.

It totally makes sense in case of visual studio code. You can select
something, then do find and replace and it will fill find with selected
string while everything is left to put replace string. Maybe we should do
it as well...
On Wed, 19 Sep 2018, 23:10 Oliver Buchtala<EMAIL_ADDRESS>wrote:

Sublime is always putting focus into find.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/substance/texture/issues/902#issuecomment-422941497,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AALG-uOB-AWOCNMAG1sGhrWTJN9qK3GVks5ucqSrgaJpZM4Ww32L
.

Ah, ok. I didn't undertstand this. So if you open the dialog for replace with a selection, it pre-populates the find input and let's you enter the replace input.
I feel, that it does not make so much sense without the initial selection, though.

Changed the description according to the above discussion.

@Integral if you want, I leave this one to you. :) (but lo-prio)


Pass logger into Callback{} so that logs are printed consistently

Pass the db's logger into Callback{} so that the same logger is used for callback registration and removal.
[Fixes #1825]

Codecov Report

Merging #2435 into master will increase coverage by <.01%.
The diff coverage is 90%.

@@            Coverage Diff             @@
##           master    #2435      +/-   ##
==========================================
+ Coverage   80.15%   80.15%   +<.01%
==========================================
  Files          24       24
  Lines        3431     3432       +1
==========================================
+ Hits         2750     2751       +1
  Misses        578      578
  Partials      103      103

Impacted Files
Coverage Δ

main.go
83.04% <100%> (ø)
:arrow_up:

callback.go
90.99% <88.88%> (+0.08%)
:arrow_up:

Continue to review full report at Codecov.

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

Thanks @j16r!


[Footer] Incorrect alignment and size of 'Eco news' link and Twitter icon on the footer

Environment: macOS High Sierra 10.13, Google Chrome 81.0.4044.129 (64-bit)
Reproducable: always
Build found: commit a101c84
Steps to reproduce

Open Eco news page https://ita-social-projects.github.io/GreenCityClient/#/news;
Scroll to the footer of the page;

Actual result:

Size of link 'Eco news' on the footer is 60.7-22
Twitter icon on the footer is 16-14
Incorrect alignment "Follow us" and icons

Expected result:

Size of link 'Eco news' on the footer is 61-19
Twitter icon on the footer is 15-12,19
Alignment "Follow us" and icons according to mockup

User story: #384

Bug was not fixed
Eco news

Twitter

Wrong size of "Follow us"
Environment: Windows 10 Pro, Google Chrome 87.0.4280.66 (64-bit)
Reproducable: always
Build found: 26.11.2020
Steps to reproduce
Open Eco news page https://ita-social-projects.github.io/GreenCityClient/#/news;
Scroll to the footer of the page;
Actual result:
Size of 'Follow us' is 156.03x24.

Expected result:
Size of 'Follow us' is 158x20.

Defect is not fixed
size Twitter icon on the footer is 16-16
Size of link 'Eco news' on the footer is 60,56 - 16
Size of 'Follow us' is 156.03x24. is 540 -17,25

Defect is not fixed
size Twitter icon on the footer is 16-16
Size of link 'Eco news' on the footer is 60,56 - 16
Size of 'Follow us' is 156.03x24. is 540 -17,25


Add a video

We need to include a video to describe the project and how it works

The video is: https://vimeo.com/ibmwatson/review/130135196/ededb6b90f

Thanks !!
Been bit busy and missed your mail. This comes to my gmail. Will buzz you
in evening. Need some small help.
Regards
Sudhee
On Fri, Jul 3, 2015 at 4:34 AM, German Attanasio Ruiz <
<EMAIL_ADDRESS>wrote:

Closed #1 https://github.com/ssudheen/Watson-Rover/issues/1.
—
Reply to this email directly or view it on GitHub
https://github.com/ssudheen/Watson-Rover/issues/1#event-346849108.

--
Cheers
Sudhee
http://www.linkedin.com/in/sudhee

YOu can add your picture, name and ibm email address to your github account so that it get linked to your github account


Code guides appear in comment textareas

As reported in https://greasyfork.org/en/forum/discussion/11754/x; filing here to ease tracking of resolution :-)

Ok, code guides no longer appear inside of textareas.

Cool, thanks - confirming that worked!


Migrate to V2 version

Only for public dashboard and charts

https://app.web3go.xyz/#/MoonbeamPublicDashboard

[X] Dapp Activity

https://app.web3go.xyz/#/MoonriverPublicDashboard

[x] Dapp Activity

In progress moonriver

Finished moonriver


Removing reference plots

Since the plotting reference tests have become a bit tedious to maintain, this PR goes a different direction by removing the reference comparisons. Instead, the tests will check if the figure data is making it into the matplotlib internals.
This follows the approach outlined in this post: https://stackoverflow.com/questions/27948126/how-can-i-write-unit-tests-against-code-that-uses-matplotlib/27950953#27950953. That is, we trust that matplotlib will take care of actually plotting the figure, and just test that the data/titles/legend/etc make it into the pyplot objects. This should make the test more robust to stylistic changes that happen from time to time in matplotlib.
Note that these tests aren't comprehensive. I don't think I've added checks for every element, and in some cases I only check a row or column of a much larger matrix plot. Also, since some plots are probabilistic, most data comparisons involve somewhat arbitrary tolerances (but that was also true with the reference plot scheme).

👍 yea maintaining them is too painful - maybe we will return to it in the future!


node-notifier within node-webkit

Hi I am trying to use node-notifier within node-webkit and it doesn't work.
When I test the app with nodewebkit module it works perfecty, therefore when I pack my app it doesn't work anymore and I get this from my WebKit Console:
Command failed: /bin/sh: /Users/jacopodaeli/Desktop/PublipingTrainer.app/Contents/Resources/app.nw/node_modules/node-notifier/vendor/terminal-notifier.app/Contents/MacOS/terminal-notifier: Permission denied
My App is based on Node-WebKit 0.8.6 and it runs over Mac OS X 10.9.
Anyone can help me with this problem?

Just in case this may help anyone else, the solution to this kind of problem is basically to adjust your file permissions. Most likely, the file /Users/jacopodaeli/Desktop/PublipingTrainer.app/Contents/Resources/app.nw/node_modules/node-notifier/vendor/terminal-notifier.app/Contents/MacOS/terminal-notifier is not executable by the user/runner of the script. What you can do is to cd to the directory /Users/jacopodaeli/Desktop/PublipingTrainer.app/Contents/Resources/app.nw/node_modules/node-notifier/vendor/terminal-notifier.app/Contents/MacOS/ and check ls -l for the permissions of terminal-notifier. Most likely, you'll be missing an x in the 4th position, in other words, you don't have executable permissions for this file. run sudo chmod o+x terminal-notifier to give the owner executable permissions. This should solve this problem

Very good! Thanks for clearing that up.

I'm trying to work with it my self.
When i set my customPath to terminal-notifier.app i get this error:

vendor-48a50c1e.js:25881 Error: spawn EACCES
at exports._errnoException (util.js:1022:11)
at ChildProcess.spawn (internal/child_process.js:313:11)
at exports.spawn (child_process.js:387:9)
at Object.exports.execFile (child_process.js:148:15)

I tried to chmod the file, and even copying the original terminal-notifier.app which comes with node-notifier(which works fine with out customPath)
Any ideas?

EACCES refers to a file being unable to be run, executed or found.
When you try to set customPath, are you proving terminal-notifier.app,
or are you giving it terminal-notifier.app/Contents/MacOS/terminal-notifier?
(The 2nd one is the correct one)

10x @kurisubrooks, you were right...
I haven't seen something pointing at this in the docs but i will relook... 10x!
Now i have a different problem, the 'click' event stopped working. Am i missing something again?

Didn't realise this wasn't in the docs, i'll add it soon.
I'll respond to your second question in the appropriate issue.

Thank you very much!

Added to the docs in 346763c

Good 👍 It can also be an absolute path, maybe that should be specified also.

I'll update it now.


Add WebSocket channel auto-resubscription

@bennycode Here is a rough draft of #421. I've not written tests or even run the code yet. I just didn't want to go through full validation of it without getting your input on the architecture I've gone with. Could you take a look at what I have so far and give me any direction on changes you'd like to see?
In essence I've created a hashmap by channel name and keep the WebSocketChannel product IDs updated as subscribe and unsubscribe functions are called. If disconnect is called or the connection drops, the default behavior is to remember the previous subscriptions and re-subscribe to them when the connection comes back up. I added an optional parameter to the disconnect function to intentionally forget subscriptions if desired.

@bennycode I added tests and updated the code to fix some bugs I had in my original version. If you would like changes or improvements in the API of this PR, I'm happy to make the changes and re-submit.
Also, you'll notice that the code coverage is failing because of some branches missing. However, I'm not sure how to fix that because I don't understand why those lines are failing branch coverage. Could you give me some direction on that?

After looking further into the code coverage issues, it appears that these are edge cases that nyc can't identify correctly. In one case where I use hasOwnProperty, that's a known scenario where it's not accurate. In the other, the product_ids property should never be undefined because we wouldn't have gotten to that code if it was. However, we still must use the ?. operator which I think is what it doesn't like.
On a different note, I was wondering if we should add either a constructor parameter to designate whether or not we want WebSocketClient to automatically resubscribe...
constructor(baseURL: string, private readonly signRequest: (setup: RequestSetup) => Promise<SignedRequest>, autoResubscribe: boolean = true)

...or maybe add it as an option in the connect function:
connect(reconnectOptions?: Options & { autoResubscribe: boolean }): ReconnectingWebSocket

...or, have it default to resubscribe but add a function called disableResubscribe() that can be called anytime during the WebSocketClient's lifecycle.
Each has merit, but I probably lean toward the disableResubscribe() option. Anyway, interested in your thoughts. Sorry for being so prolific!

Hi @hjoelr. No need to be sorry! I am very happy that you put so much thought in this library. Can you exchange ?. with !.? I am infavor of adding a param to connect to decide if we should re-subscribe or not. Thus users do not have to commit themselves from the beginning and can change their re-subscription easily on a second connect.

@bennycode Okay, I made those tweaks as you suggested. I'm running up against another code coverage issue that I don't know how to solve. Any ideas why it's saying line 405 isn't covering a branch and how I can fix it?
Also, I was trying to write a test to make sure it doesn't actually resubscribe upon reconnect. However, I couldn't figure out how to do it since I'm basically needing to test something like "make sure the subscription callback doesn't run more than once". I'm not sure how to do that. Any ideas?

Is this line 405 that you want to test?
https://github.com/bennycode/coinbase-pro-node/blob/48d4dbc04754c5ed28acb95feb8fe3506703f99d/src/client/WebSocketClient.ts#L405
If yes, then the coverage tool wants you to test the positive case and the negative case for that if-condition. When you test only one of the two, then it will complain with "isn't covering a branch".
Regarding the subscription callback... Can you work with something like once? https://nodejs.org/api/events.html#emitteronceeventname-listener

@bennycode This PR is ready for final review. Please let me know if there's anything else you think I should do on it.

Can you rebase it with the "main" branch? I will try to review it then next week (I am off for the weekend).

@bennycode I've had to set this project aside for a while, which is why I've been a little silent here. Also, I've been contemplating if this change is actually beneficial. I was finding in my case that I would have to keep a separate store of requested subscriptions anyway as I want to have a way to identify which part of my program is requesting to subscribe/unsubscribe and only actually unsubscribe from a product if every part in my program that requested to subscribe also requested to unsubscribe. This means I need to store some token to identify which part of the program requested the subscribe. The PR as it stands doesn't currently support something like this.
This PR could be reworked to include such functionality, but then it makes me wonder if that's really outside the scope of this library. Anyway, I'd be interested if you have any thoughts on that.

Hi @hjoelr, unfortunately I didn't check your PR as expected. Is it still relevant? Can we move portions of it into new PRs to merge it bit-by-bit without breaking any API contract?

Closing this because of inactivity. 😶🌫
@hjoelr just tell me if you plan to get back to it and I will take the time to support you. 💪


Invalid Bundle in TestFlight

Describe the bug
My App can run on simulator and My iPhone.
But when upload the archive to App Store Connect, I got the error: "invalid binary file".
To Reproduce
Steps to reproduce the behavior:

Add the line to Podfile

platform :ios, '15.0'
target 'MyTarget' do
  use_frameworks!
  pod 'MicrosoftCognitiveServicesSpeech-iOS', '1.18.0'
end

Archive and upload to App Store Connect

Expected behavior
upload to App Store Connect without error.
Version of the Cognitive Services Speech SDK
1.18.0
Platform, Operating System, and Programming Language

IDE: Xcode 13.1
Hardware - MacBook Pro (15-inch, 2018)
Programming language: Swift (SwiftUI)

Additional context
error message in my mail:
ITMS-90562: Invalid Bundle - One or more dynamic libraries that are referenced by your app are not present in the dylib search path.
ITMS-90562: Invalid Bundle - There's an issue with the app's bitcode compilation. Rebuild the app using the current public (GM) version of Xcode and upload it again.
ITMS-90562: Invalid Bundle - The app submission can not be successfully recompiled from bitcode due to missing symbols during linking. You can try to reproduce and diagnose such issues locally by following the instructions from: https://developer.apple.com/library/archive/technotes/tn2432/_index.html

If I disable "Include bitcode for iOS content", the upload will be success without error. But this action will also disable dSYM files for debugging.
I also fine the same issue here:
https://github.com/Azure-Samples/cognitive-services-speech-sdk/issues/1141

@CheShengSu Thanks for the report. We have fixed bitcode issue in 1.19.0 version of Speech SDK. Could you please upgrade to that ? NOTE: currently you need a workaround for 1.19.0 when building for generic iOS device, see this https://github.com/Azure-Samples/cognitive-services-speech-sdk/issues/1320#issuecomment-988836381

Thanks.  I have tried '1.19.0' before but got "module not found" error when archiving. I will report a new issue for '1.19.0'.

In MicrosoftCognitiveServicesSpeech-iOS 1.19.0, this issue also exists!!

@tomasgreen In https://github.com/Azure-Samples/cognitive-services-speech-sdk/issues/1209 you informed there was no bitcode issues anymore on 1.19.0, could you confirm this ? Any ideas what might be the reason here?

@tomasgreen Related to #1209 you informed in email there was no bitcode issues anymore on 1.19.0, could you confirm this ? Any ideas what might be the reason here ? Thanks for help!

Hi! No I haven't had any issues since the 1.19.0 release but then I'm using Swift Package Manager and not CocoaPods.
@CheShengSu try dropping CocoaPods and use SPM instead.  I'm attaching some quick and dirty code that should do the trick!
Once you've included the framework you can simply use SPMMicrosoftCognitiveServicesSpeech as an import in your code.
Btw @jhakulin, where's Microsofts official spm package? 😉
// swift-tools-version:5.5
// The swift-tools-version declares the minimum version of Swift required to build this package.

import PackageDescription

let package = Package(
    name: "SPMMicrosoftCognitiveServicesSpeech",
    platforms: [.iOS(.v13)],
    products: [
        .library(
            name: "SPMMicrosoftCognitiveServicesSpeech",
            targets: ["SPMMicrosoftCognitiveServicesSpeech"]),
        .library(
            name: "MicrosoftCognitiveServicesSpeech",
            targets: ["MicrosoftCognitiveServicesSpeech"])
    ],
    targets: [
        .target(
            name: "SPMMicrosoftCognitiveServicesSpeech",
            dependencies: ["MicrosoftCognitiveServicesSpeech"]),
        .binaryTarget(
            name: "MicrosoftCognitiveServicesSpeech",
            url: "https://csspeechstorage.blob.core.windows.net/drop/1.19.0/MicrosoftCognitiveServicesSpeech-XCFramework-1.19.0.zip",
            checksum: "077cf2c2ff5d70c62d4ada90b80c0fc3b8bc59818b4eeaae5b1b28c48e4ddab4"
        )
    ]
)

@tomasgreen Thank you for the help! I have not yet exact plan to move to SPM, however that looks like a correct thing to do. Will let you know once we have more information. @CheShengSu Were you able to see the issue when using SPM as instructed above?

@jhakulin and @tomasgreen , thank you a lot. But My Xcode seems to have bug that can't using SPM to add package. I will try the SPMMicrosoftCognitiveServicesSpeech method when I can use SPM.

@jhakulin sound good, although there is no need to "move" to anything. You might already be familiar with this but you can support both SPM, CocoaPods etc at the same time. You can create a separate repo or just add a Package.swift file to this repo.
The above instructions works just fine but I was a bit preoccupied yesterday and there's an even simpler syntax:
// swift-tools-version:5.5
// The swift-tools-version declares the minimum version of Swift required to build this package.

import PackageDescription

let package = Package(
    name: "MicrosoftCognitiveServicesSpeech",
    platforms: [.iOS(.v13)],
    products: [
        .library(
            name: "MicrosoftCognitiveServicesSpeech",
            targets: ["MicrosoftCognitiveServicesSpeech"])
    ],
    targets: [
        .binaryTarget(
            name: "MicrosoftCognitiveServicesSpeech",
            url: "https://csspeechstorage.blob.core.windows.net/drop/1.19.0/MicrosoftCognitiveServicesSpeech-XCFramework-1.19.0.zip",
            checksum: "077cf2c2ff5d70c62d4ada90b80c0fc3b8bc59818b4eeaae5b1b28c48e4ddab4"
        )
    ]
)

For each new version of framework you need to change the url to the zip-file and change the checksum using shasum -a 256 MicrosoftCognitiveServicesSpeech.xcframework.zip. Lastly you might want to manage versions by tagging the repo, this is optional but preferred.
I might be kicking in open doors here and if so I apologise for the verbose answer 🙂

@CheShengSu did you update to Xcode 13.2? If so you might want to follow this thread https://developer.apple.com/forums/thread/696504, there's a few (me including) outraged developers out there 🙂
I managed to get Xcode back on track this morning by downloading the app from the developer site, but as I understand it hans't worked for everyone. Downgrading to 13.1 is always an option.

Yes, my Xcode version is 13.2, I will try downgrading to 13.1. Thank you!

Yes, my Xcode version is 13.2, I will try downgrading to 13.1. Thank you!

I hope it works out!
P.S It might be a good idea to look at the material in https://developer.apple.com/library/archive/technotes/tn2432/_index.html, it's actually quite helpful to rebuild the app from Bitcode locally (in case you haven't already tried it).

I downgraded my Xcode to 13.1, after add local SPM "MicrosoftCognitiveServicesSpeech", Xcode can't compile at the import:
import MicrosoftCognitiveServicesSpeech. The message is
"No such module 'MicrosoftCognitiveServicesSpeech'".
I don't know why.

I downgraded my Xcode to 13.1, after add local SPM "MicrosoftCognitiveServicesSpeech", Xcode can't compile at the import:
import MicrosoftCognitiveServicesSpeech. The message is
"No such module 'MicrosoftCognitiveServicesSpeech'".
I don't know why.

Did you add the framework to your targets "General"->"Frameworks, Libraries, and Embedded content"?

I added from "project", "package Dependencies", "+", "Add Local...", the folder MicrosoftCognitiveServicesSpeech containing Package.swift.
In "targets", "General", "Frameworks, Libraries, and Embedded content", "+", I can't find MicrosoftCognitiveServicesSpeech.

I added from "project", "package Dependencies", "+", "Add Local...", the folder MicrosoftCognitiveServicesSpeech containing Package.swift.
In "targets", "General", "Frameworks, Libraries, and Embedded content", "+", I can't find MicrosoftCognitiveServicesSpeech.

I actually haven't seen that button before, using it the way you described didn't work for me either for some reason. I guess it's another amazing Xcode bug 🙂
Instead of doing it that way just drag your local package folder over to the project root. Wait for it to resolve which might take some time and you might get failures in the meantime, but just hold on until it's completed, the errors will go away.
Once it's resolved you should find a framework available to be added in "Frameworks, Libraries, and Embedded content".

I still can't successfully add a local package to my project.
I got some other task to do that I prefer to wait for the pod version or official package of MicrosoftCognitiveServicesSpeech.
Thanks for your kindly help very much!

Finally I successfully uploaded my app to TestFlight!
I just add local package MicrosoftCognitiveServicesSpeech 1.19.0 , add this package to my target, and archive and upload to TestFlight.
Thanks for your help!

Finally I successfully uploaded my app to TestFlight!
I just add local package MicrosoftCognitiveServicesSpeech 1.19.0 , add this package to my target, and archive and upload to TestFlight.
Thanks for your help!

@CheShengSu Thanks for info. Did you use Swift package manager or Cocoapod? I am curious if there was some reason the upload did not work before ?

@CheShengSu Thanks for info. Did you use Swift package manager or Cocoapod? I am curious if there was some reason the upload did not work before ?

I mainly use Cocopod in my App for other libraries, but for MicrosoftCognitiveServicesSpeech library, I manually add local package.


Is there a loading state available?

First thanks for the time and effort done on mantaining this package. I appreciate it a lot.
Just I would like to know if there is a loading state available?
Thanks :)

I see under FileBrowserProps => files
  /**
   * List of files that will be displayed in the main container. The provided value
   * **must** be an array, where each element is either `null` or an object that
   * satisfies the `FileData` type. If an element is `null`, a loading placeholder
   * will be displayed in its place.
   */
  files: FileArray;

So, pass a list of null to files to show a loading indicator.
:)


Binaries?

don't have enough space on laptop for visual studio to compile, can someone link me a binary?

No binaries.


[Bug] create 0.5.1g-h crash on start up

Describe the bug
crash in startup
To Reproduce
Steps to reproduce the behavior:

load encased and create 0.5.1g-h
crash

Expected behavior
load
Desktop (please complete the following information):

OS: Windows
Minecraft Version 1.20.1
Forge Version 47.2.17
Mod Version 1.6.1-fix2

Additional context
latest.log
crash-2024-09-03_13.46.34-fml.txt

Duplicate of #89


OAS version mismatch

Hi
There is currently a mismatch between the OAS versions in the project
Current: openAPIv3.ts = 3.0.0 and openAPIv3_1.ts = 3.0.3
Expected: openAPIv3.ts = 3.0.3 and openAPIv3_1.ts = 3.1.0

Should be sorted with v0.3.0


What about upgrade domains?

When reading the documentation and comparing to the functionality of Availability sets, it's clear that Availabilty zones are similar or better than the Fault domains in Availability sets. But there is no no mention of Upgrade domains. Can you confirm that Availability zones will be in different Upgrade Domains?

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

ID: cca70845-100f-2cfd-aba3-34b7fa4a5264
Version Independent ID: 475b26e5-9e23-f769-3bd5-cbc4a678dbf0
Content: What are Azure Availability Zones?
Content Source: articles/availability-zones/az-overview.md
Service: azure
GitHub Login: @iainfoulds
Microsoft Alias: iainfou

Thanks for the feedback! We are currently investigating and will update you shortly.

@JensPeterC you are correct. Each AV zone will have update domains and fault domains. The premise is exactly the same as Availability sets but rather than all those being in a single data center they are spread over multiple centers in the same region.

Thanks, that sounds great. I think you should update the documentation so that this becomes obvious to everyone.
Thanks again.

@JensPeterC sure no problem. I will assign to author to review and see if we can make it a bit more clear :)
@iainfoulds can you take a look?

@JensPeterC Thanks for reaching out. I've created a PR that adds information on fault and update domains.
An Availability Zone in an Azure region is a combination of a fault domain and an update domain. For example, if you create three or more VMs across three zones in an Azure region, your VMs are effectively distributed across three fault domains and three update domains. The Azure platform recognizes this distribution across update domains to make sure that VMs in different zones are not updated at the same time.

@iainfoulds In your statement:

For example, if you create three or more VMs across three zones in an Azure region, your VMs are effectively distributed across three fault domains and three update domains.  The Azure platform recognizes this distribution across update domains to make sure that VMs in different zones are not updated at the same time

If an AZ is isolated from each other with their own UD\FD how Azure knows that my VMs deployed in different UD across these AZ shouldn't be updated at the same time? What prevent this?
I assume that if it does one by one for the entire region it would take ages to complete!


Numpy Minimum Version Mismatch in 1.1.8?

Describe the bug
I suspect a numpy version mismatch in cvxpy==1.1.8 caused by this commit:
https://github.com/cvxgrp/cvxpy/commit/71fa8221d5903f78f8273eaa7a222e571c493117
Would this cause a mismatch with the setup.py min version of 1.15?
To Reproduce
Build the following Dockerfile:
# syntax=docker/dockerfile:experimental
FROM python:3.7-slim-buster
RUN apt-get update -yqq \
    && apt-get install -yqq --no-install-recommends \
        build-essential \
        python3-dev
RUN pip install numpy==1.14.5
RUN pip install cvxpy==1.1.8

Output
Some build dependencies for cvxpy==1.1.8 from https://files.pythonhosted.org/packages/e6/3b/6a6650ed48503c4e4b2f497ce40517fe427f3cfacfc8fb43ff52f89bc4c8/cvxpy-1.1.8.tar.gz#sha256=444068d4eda9ffcd43578895174489d4cef36b28ba7ae8a96ab9ef9571d2b4ff conflict with the backend dependencies: numpy==1.14.5 is incompatible with numpy>=1.15.

Expected behavior
It should install just fine like cvxpy==1.1.7 does:
# syntax=docker/dockerfile:experimental
FROM python:3.7-slim-buster
RUN apt-get update -yqq \
    && apt-get install -yqq --no-install-recommends \
        build-essential \
        python3-dev
RUN pip install numpy==1.14.5
RUN pip install cvxpy==1.1.7

Version

OS: Docker python:3.7-slim-buster
CVXPY Version: 1.1.8 vs 1.1.7

Additional Context
Both 1.1.7 and 1.1.8 require numpy>=1.15 but only 1.1.8 throws an error. This is an issue for projects with many moving dependencies each that require numpy in some way and numpy 1.14.5 could get installed, but we want to have the min version that works for all dependencies. Is this error new in 1.1.8 and by design?

I've also noticed this issue. Downgrading pip to 18.1 fixed it, but that's not ideal in the long-term as that's very out-of-date now.

Thanks for the detailed report! This is a known issue. We're working on it. (https://github.com/cvxgrp/cvxpy/pull/1234#issuecomment-772887993, #1229)

@edjeffery this should be fixed with cvxpy 1.1.9 and higher.
If anyone continues to have this problem with cvxpy >= 1.1.9, please leave a comment here. If no one has problems for a week then I'll close the issue.

Can confirm this now works in cvxpy 1.1.9. Thanks!

Looks like 1.1.9 installs just fine on our project now, thank you for the quick fix!


Expose flag for critical extensions

Description
Changes the API to enable creating X.509 CSRs with critical extensions. Fixes https://github.com/ARMmbed/mbedtls/issues/4055
Status
READY
Requires Backporting
NO
Additional comments
I didn't find any test cases for mbedtls_x509write_csr_set_extension so I'm not sure if this is needed.

Thank you for your contribution! This feature makes sense to me, and the code is ok.
This is an API change: any code currently using mbedtls_x509write_csr_set_extension will no longer compile. We don't do API changes in Mbed TLS except when there's a major version change. Fortunately, we're getting ready to go from Mbed TLS 2.x to Mbed TLS 3.0, so if this can be merged in the next couple of weeks, the API change is ok.
A changelog entry and a migration guide entry are required. See ChangeLog.d/00README.md and docs/3.0-migration-guide.md.
It would be better to have tests, but given the preexisting lack of tests for mbedtls_x509write_csr_set_extension I won't insist on it. A contribution of unit tests for CSR creation with both critical and non-critical extensions would be appreciated though.

@gilles-peskine-arm I have added the changelog and migration guide parts.


Links to kuma documentation 404 when using Kong Mesh 1.8.2

What happened?
Kong Mesh 1.8.2 running in k8s/kind on my laptop in standalone mode
When I click the "Check your mesh!" button, all of the documentation links in the modal window give a 404 when clicked. For example, the Traffic Metrics link goes here: https://kuma.io/docs/1.8.2/policies/traffic-metrics/
The version seems to be incorrect since the Kuma version and Kong Mesh version are not the same.
Expectation: links go to the correct documentation pages and do not 404

I’m pretty sure this issue was fixed in https://github.com/kumahq/kuma-gui/pull/340 which was merged a few days after 1.8.2 was released.

Indeed

To elaborate on this: going forward, the documentation URLs used in the Kong Mesh UI will be generated with version strings of the underlying Kuma. Previously, the UI just knew about one version: for Kuma GUI that’s the underlying Kuma version; for Kong Mesh GUI, that’s the underlying Kong Mesh version.


GraphRAG for extraction(community summaries) and retrieval(using global and local search)

any idea?


Compatibility with V5

Is this compatible with Ghost v5?
I haven't upgraded yet but just curious if this has been looked into before I investigate.
Thanks

@Luen yes, it is compatible with Ghost v5 👍


FIX: make base Signal.get permissive

@klauer was right

Well, you sure know how to get me to click the merge button, don't you @tacaswell?