downloadFormats does not contain tracks that contain both audio AND video

Other libraries for NodeJS such as https://github.com/fent/node-ytdl-core are somehow able to return URLs that contain both audio and video info (and they support range requests, making downloading them very fast since we can request ranges in parallel).
But here downloadFormats only seems to contain either video or audio tracks.
Do you know how this could be solved?
Thank you!

Hello, thanks for your interest in YouTubeKit! I’m already currently working on the implementation of range requests for the download formats! (It should be added soon)

Other libraries for NodeJS such as https://github.com/fent/node-ytdl-core are somehow able to return URLs that contain both audio and video info (and they support range requests, making downloading them very fast since we can request ranges in parallel).
But here downloadFormats only seems to contain either video or audio tracks.
Do you know how this could be solved?
Thank you!

But if you only want to download in parts without having the need of knowing the video time interval their data represent, you can use (for example) the code of this answer that works well for the download formats provided by YouTubeKit.

I’m going to investigate about formats that have both audio and video data, during that time, you can create an AVMutableComposition that contains both tracks, and then download it (or download the 2 then merge them together).

@b5i ok but why is it that the ytdl library seems to be able to retrieve a downloadable video+audio? Why would we have to download each track independently and merge them? I didn't see merging happening in their source code. Could it be that they use a special User-Agent https://github.com/fent/node-ytdl-core/blob/9e15c7381f1eba188aba8b536097264db6ad3f7e/lib/info.js#L57C7-L58C6 that makes YouTube server somehow return different streamingData?

@b5i ok but why is it that the ytdl library seems to be able to retrieve a downloadable video+audio? Why would we have to download each track independently and merge them? I didn't see merging happening in their source code. Could it be that they use a special User-Agent https://github.com/fent/node-ytdl-core/blob/9e15c7381f1eba188aba8b536097264db6ad3f7e/lib/info.js#L57C7-L58C6 that makes YouTube server somehow return different streamingData?

They might be using the default formats of YouTube (the non-adaptative ones), I’m going to check if those actually have both audio and video data and then implement the scrapping of those into the concerned responses.

@b5i yes that's it! Now the downloadFormats usually contains 2 entries in mp4: one 360p and one 720p. And like you said, these are fast to download with range requests!
May I add a further request: the ability to get the width and height in the struct, so we can sort and return the resolution we want?

May I add a further request: the ability to get the width and height in the struct, so we can sort and return the resolution we want?

Isn't this already available in the VideoDownloadFormat struct?

@b5i yes you're right, I just had to cast DownloadFormat down to VideoDownloadFormat and I could find the width and height. Too me a little time to figure out the trick. Thank you for this amazing lib, the videos found in the new defaultFormats are indeed downloading fast and contain audio+video tracks. Fantastic!


Add CSS custom property for  unchecked box color

The box for the unchecked checkbox is black so unsuitable for dark theme,

Thumbs up!
And perhaps the same enhancement dit the  ✓ and - ?


Knex insert hangs and increases CPU load considerably.

I'm trying to insert an object into my postgres database. I created the table using Knex migrations and everything worked fine, which means the connection to the DB works properly. Now I'm executing a simple insert statement in my app, it hangs and increases my notebook's temperature considerably. I'm using TypeScript.

After debugging for a while I realized that my problem was that I tried to establish a connection with a nonexistent database. However, I find it strange that instead of throwing an error, knex would simply increase the CPU load and hang.

Maybe reconnecting or something like that goes to busyloop... will fix if I'm able to reproduce.

which dialect were you using?

Looks like knex needs to be less aggressive with trying to reconnect, maybe few seconds. Also some warning message is needed to tell that there was connection problem and maybe even to throw an error if db is responding, but credentials or something else is failing and connection couldn't been acquired because of that.

Hard thing there is to not to fail in that case if there are just too many connections made to DB which causes acquire connection to fail.

problem was that pools create callback must never reject or pool tries to get the resource until acquireConnectionTimeout is triggered.


Project designations are limited

Is your feature request related to a problem? Please describe.
I was adding Mohit Sharma to the Glific project but there was no suitable designation.
Describe the solution you'd like
Two solutions I can suggest:

Either add more designations like QA
Give an option for the project manager to add more designations as required

@bohraji can you add the designations that need to be in the system? Please modify the issue description accordingly.
I think can skip the dynamically creating designations feature for now.

This seems like not needed. Closing.

@abhishek-pokhriyal please re-open in case you see this needs some work.


Custom Domain Address / User

Custom Domain :
Address can be disabled, but cannot be deleted.
Actual Behavior

User created custom domain i.e protoncustomdomain.com.

User had trouble understanding adding address / adding user.

User added new address i.e<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>

Furthermore the user started to migrate existing emails from a Gmail demo account over to one of the ProtonMail user accounts the created. Using the import/export guide completed the process. Moreover, using the ProtonMail import/export tool, imported emails to<EMAIL_ADDRESS>

Import complete- Under Folders/Labels.

User later realized that "addresses" were added instead of intended "users".

User made corrections by deleting the addresses, however<EMAIL_ADDRESS>cannot be deleted with pop up message "Address cannot be deleted while messages associated with this address exist".

User cleared all mails pertaining to<EMAIL_ADDRESS>however pop message keeps appearing failing to delete the address.

Expected behavior
Address has to be deleted on command.
Desktop :

OS: Mac OS
Browser [Chrome, Safari]
Resolution [e.g. 1440x900]
URL [e.g. mail.protonmail.com]

Did the user empty the trash? I cannot reproduce on live with my custom domain.

Hey Valentin,
Trash has been cleared. Alex and I made sure that no emails pertaining to the Bruce Wayne address exists.
LvL
Sent from ProtonMail Mobile
On Thu, May 9, 2019 at 7:33 PM, Valentin BONNEAUD<EMAIL_ADDRESS>wrote:

Did the user empty the trash? I cannot reproduce on live with my custom domain.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.


Refactor Phalcon\Db

Refactor Phalcon\Db

Resolved in https://github.com/phalcon/phalcon/pull/301


Fix handling of null values + upstream bug fixes in embulk-base-restclient

Greetings!
This PR does three things:

It updates the embulk-base-restclient to 0.5.5, which fixes handling of null values for numeric and boolean types. Additionally, it allows proper output of null values (instead of treating nulls as undefined).

It uses proper null handling for output, so null values will be outputed to elasticsearch as null, not undefined (e.g. being omitted entirely). Elasticsearch expects and handles null values, so this should be the default, IMHO.

It adds a set of unit tests, which ensure that proper null value handling is being achieved.

Please review and let me know if there's anything else I can do.
Thanks again,
-Kevin

See also: https://github.com/embulk/embulk-base-restclient/pull/102

@kfitzgerald Thanks for your PR.
I've considered about backward compatibility and added new accept_null_value option and set false as a default.
https://github.com/kfitzgerald/embulk-output-elasticsearch/pull/1
Could you take a look?
@muga I'm still wondering if we should set true as a default or not.
I think it's possible to change behavior by announcing major update of this plugin.
What do you think about?

@sakama Merged! I agree, having an option to preserve the old functionality would be best.
@sakama @muga I think in the case of elasticsearch, I would be in favor of defaulting to true. Understandably, there may be some users who are affected, but chances are the impact would be low, since when queried, they would be excluded anyway. There's a chance that aggregations could be affected, but I would suspect that overall impact would be low.
I am not strongly advocating this way, since new usages of the output plugin could turn this on, or if exposed through a web interface (e.g. TD's connectors ui) the ui-default could set this to true for new connections, preventing issues with older existing scheduled jobs.

Merged.
I'll release new version soon.


[#183045327] Allow user to specify a maintenance window

What
Allow users to specify a maintenance window when creating or updating a redis service
How to review

Code Review
Deploy to a dev environment (Currently deployed to dev02)

Create with a specific window

Provision a service with a specified maintenance window: -c '{"preferred_maintenance_window": "mon:11:11-wed:10:10"}' (or some similar time)
Ensure that the service is created with this maintenance window with cloudfoundry: cf service $SERVICE_NAME --params
Ensure that the service is created with this maintenance window using the AWS console

Update to new window

Update the service, specifying a new window: -c '{"preferred_maintenance_window": "fri:11:11-fri:13:13"}' (or some similar time)
Ensure that the service is updated with this maintenance window with cloudfoundry: cf service $SERVICE_NAME --params
Ensure that the service is updated with this maintenance window using the AWS console

:noice:
Now we just have to convince concourse...


Publish 7.4.1-20220310000218+0000

Publish 7.4.1-20220310000218+0000

@bot-gradle test and merge

OK, I've already triggered a build for you.


TypeError: requests.api.get() got multiple values for keyword argument 'auth' (in version 2.8.0)

Running my code with version 2.8.0 instead of 2.7.0 fails with the following error message. Is there some change I need to do when transferring to the new version?
Traceback (most recent call last):
  File "/opt/scripts/create_layers.py", line 104, in <module>
    main(
  File "/opt/scripts/create_layers.py", line 29, in main
    datastores = geo.get_datastores(workspace=workspace)
  File "/usr/local/lib/python3.10/dist-packages/geo/Geoserver.py", line 478, in get_datastores
    r = self._requests("get", url, auth=(self.username, self.password))
  File "/usr/local/lib/python3.10/dist-packages/geo/Geoserver.py", line 171, in _requests
    return requests.get(url, auth=(self.username, self.password), **kwargs, **self.request_options)
TypeError: requests.api.get() got multiple values for keyword argument 'auth'

This is the code snippet that fails (at the last line). It works when I switch back to 2.7.0 but I would like to use the request_options (commented now).
    geo = Geoserver(
        url, username=username, password=password,
        # request_options={'timeout': timeout}
    )

    # create workspace
    workspaces = geo.get_workspaces()
    if workspace not in workspaces.keys():
        print('create workspace')
        geo.create_workspace(workspace=workspace)

    # create store
    datastores = geo.get_datastores(workspace=workspace)

Thank you @pesekon2 for reporting this issue. Yes, I just saw this issue in our code block. Please install v2.8.1 to fix this issue.

@iamtekson: Yes, tested and works now. Thank you.


[BACKLOG-32437] Delegate PVFS file cache to specific vfs provider

:white_check_mark: Build finished in 14m 32s
Build command:
mvn clean verify -B -e -Daudit -amd -pl core

:ok_hand: All tests passed!
Tests run: 4732, Failures: 0, Skipped: 7    Test Results

:information_source:  This is an automatic message

:white_check_mark: Build finished in 13m 39s
Build command:
mvn clean verify -B -e -Daudit -amd -pl core

:ok_hand: All tests passed!
Tests run: 4732, Failures: 0, Skipped: 7    Test Results

:information_source:  This is an automatic message

:white_check_mark: Build finished in 13m 42s
Build command:
mvn clean verify -B -e -Daudit -amd -pl core

:ok_hand: All tests passed!
Tests run: 4732, Failures: 0, Skipped: 7    Test Results

:information_source:  This is an automatic message

:white_check_mark: Build finished in 19m 22s
Build command:
mvn clean verify -B -e -Daudit -amd -pl core

:ok_hand: All tests passed!
Tests run: 4732, Failures: 0, Skipped: 7    Test Results

:information_source:  This is an automatic message

:white_check_mark: Build finished in 19m 40s
Build command:
mvn clean verify -B -e -Daudit -amd -pl core

:ok_hand: All tests passed!
Tests run: 4732, Failures: 0, Skipped: 7    Test Results

:information_source:  This is an automatic message


Not Working, ballyregan.core.exceptions.NoProxiesFound: Could not find any proxies

Describe the bug
I cant get any proxies, i think something is wrong
To Reproduce
Steps to reproduce the behavior:
just doing this:
fetcher = ProxyFetcher(debug=True)
proxiese = fetcher.get_one()
print(proxiese)
Expected behavior
get a proxy
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):

OS: [e.g. iOS]
Browser [e.g. chrome, safari]
Version [e.g. 22]

Smartphone (please complete the following information):

Device: [e.g. iPhone6]
OS: [e.g. iOS8.1]
Browser [e.g. stock browser, safari]
Version [e.g. 22]

Additional context
Add any other context about the problem here.

Hi,
NoProxiesFound exception is intentionally raised when no valid proxies could be found by the fetcher (the validator, returned empty list after validating the proxies).
I ran your code and it's working for me, so I assume the problem is with your internet connection (poor connection).
Please try again connected to another network.
If it still doesn't work, provide some more details about your infrastructure and I'll investigate it.
Hope it helped you.


Use private-vars.yml for push-views playbook as database config is in there

@robertkowalski PTAL

+1 good work


[API] expose code search (if indexing is enabled)

as title make an api endpoint to search throu the code and get ...

text fragments
repos
...

+1
Need API endpoint for existing GUI feature /<user/org>//search?q=myseaarchterm


panCloseMask is not defined

With 2.0 and setting panCloseMask={0.35} to the drawer

#153 has the fix you probably need, but it hasn't been merged so far.

ok thanks i'll wait next version

@bartvtende thanks

@sylvainbaronnet
Note that if you don't want to wait, you can temporarily use the following command to install directly from GitHub:
npm install https://github.com/root-two/react-native-drawer --save

I will cut a new release today as soon as I get the tapToClose issue sorted


marshal.Unmarshal(): introduce omitempty and original support

marshal.Unmarshal(): introduce omitempty and original support
Fixes #2795
Fixes #2796

done, ptal

Diff Coverage
File Path

•••••••••• 100%
go/marshal/decode.go

•••••••••• 100%
go/marshal/encode.go

No coverage report found for master at a67bb9b.

Powered by Codecov. Last update a67bb9b...633d82a


Can we transmit 2 DMX Universe ?

Hello, great work. I have a question.  Can we transmit 2 DMX universe using different UART of ESP32 ?

Thanks for the kind words! Yes, this library can use multiple UART ports to transmit more than one DMX universe. The first argument of nearly all functions in this library is the dmx_num which specifies which UART port to use.
Let me know if you have any other questions!

Thank you so much for your quick response. please further clearify that by using this library will be able to transmit two different DMX universe simultaneously on two different UARTs of ESP32. how to use "dmx_num" to achieve it.

The dmx_num I'm referring to identifies which UART port on the ESP32 to use. The ESP32 has several UART ports. The base ESP32 has 3. By default, UART0 is allocated for the serial monitor on your computer. This is how the ESP32 logs messages back to your computer. UART1 and UART2 are unallocated so you are able to use them as DMX ports.
When you install your DMX driver on UART1, you call the function dmx_driver_install(DMX_NUM_1, DMX_DEFAULT_INTR_FLAGS). To install an additional DMX driver on UART2, you can call dmx_driver_install(DMX_NUM_2, DMX_DEFAULT_INTR_FLAGS).
This pattern follows with the remaining functions in the API. To send a packet of DMX data on UART1, you would call dmx_send(DMX_NUM_1, DMX_PACKET_SIZE). To send on UART2, you would call dmx_send(DMX_NUM_2, DMX_PACKET_SIZE).
Hope this helps!

Thank-you so much for your kind guidance. i will try it.


WIP: Enable more regression test

Signed-off-by: Sophia Guo<EMAIL_ADDRESS>

Is there a way to template the common XML config?

Yes and no. We are sharing the same general xml template between this openjdk tests(jtreg) and all other FV tests(testNG). Probably later also for SV tests, PERF tests. That means we don't have a specific template for the jtreg tests. If this becomes a general requirement we can enhance the test framework to support this.


Plugin version

Current plugin version is displayed as 1.3 but this is first release of this plugin.
Expected at least 1.0.

Changed to 1.0


Tether/USDT

Hi, can you please add validation for Tether/USDT?

@simonestic tether is not a blochchain by itself it lives on etherium, bitcoin and a few other blockchains. So you should just look at blockchains' validators


gulp build issues

Upgrading to beta10 and gulp is not building the app.bundle.js
If we run the exact same code in beta9 the file is correctly created.
I have traced it to do with "ionic-gulp-browserify-typescript"
If there is an error in your typescript EG:
TypeScript error: /app/pages/home/home.ts(25,42): Error TS2304: Cannot find name 'cordova'.
We are using the current ionic-native file plugin so we have to access "cordova.file.applicationDirectory" directly.
So when running ionic serve, no error seems to be returned apart from the warnings generated by the TypeScript error: (these have always been there prior to beta 10) the JS is not correctly compiled to /build/js/app.bundle.js
If we open "ionic-gulp-browserify-typescript/index.js" and comment line 29
onError: function(err){
    console.error(err.toString());
//    this.emit('end');
},

The app still shows the errors on the console but correctly creates the /build/js/app.bundle.js

I'm having the same issue. Simple test:

Create a new ionic 2 project using —TS option
Add following lines to app/pages/home/home.ts:

  ionViewWillEnter() {
  document.getElementsByTagName('ion-navbar-section')[0].style.display = 'none';
}

Serve app via ionic serve

==> TypeScript complains about: Error TS2339: Property 'style' does not exist on type 'Element'. and /build/js/app.bundle.js is not generated.
Before the update the app.bundle.js was still generated (and working) even though TS is sometimes complaining about some stuff.

@ratt use declare var cordova: any; above your first '@' element

@ZiFFeL1992 Thanks, The issue still exits with other aspects of code as per @flavordaaave  comments. Here is an example
let video = document.querySelectorAll('video');
if(video){
for(let x =0; x < video.length; x++){
video[x].pause();
}
}
}
Which generates the following
TypeScript error: ..../app/pages/engine/base-page.ts(456,26): Error TS2339: Property 'pause' does not exist on type 'Element'.

@ratt Try let video: any = ...

@ZiFFeL1992 The problem is that the build process fails with any TypeScript "error" and in my code I still have a lot of them because sometimes TypeScript just not works as expected or I don't have all the Definitions for a library I'm using.

I can confirm if we clean up all Typescript errors, and put external libraries in the typings/index.d.ts
EG:
declare var config: any;

// Cordova
declare var cordova: any;

// lowdash
declare var _: any;

Then the app compiles again correctly

Thanks @ZiFFeL1992
I think perhaps a better way to explain this issue or references on how to fix may help new ionic 2/typescript devs

Hello all! While the build is actually working as expected right now we are discussing this to see the best way for our build to handle typescript errors. I will keep this issue open so that i can update you guys on what we come up with. Thanks for using Ionic!

Hello all! At this time we are not planning on making any changes with how this works. Thanks for using Ionic! If anything changes I will reopen this issue.


Added docker-compose example and reformatted documentation.

Hey Prashanth (@P7h),
I enjoyed the simplicity of your repo greatly when trying to decide how to best run spark locally. I felt the repo could benefit from a docker-compose example.
I also made a couple edits to the README to put the getting started section first. Let me know what you think.

Seems pretty useful!

@nvictor I have not configured hive yet; something I am considering though.


Question on how to construct NodePaths

I'm trying to simplify a piece of code. The code looks like this:
if (true) {
  console.log("true");
else {
  console.log("false");
}

The easiest way of implementing this would be to use the evaluateTruthy function from the utilities but that will only take a path. Is there any way of reusing that code for my purposes?

Thank you! :)

I was using consequent instead of alternate in else. I updated the code to fix that.


Wrong notification and indication order

Summary
I have two notification observables and one indication observable. When I receive any byte array I convert the header to get the message number.
In my example I send a command to the device and receive indication about the command status (success, for example) and then after 1-2 milliseconds (as in the logs) notification about a change in device status.
The trouble is that if I have RxBleLogs with logLevel at least Info then everything is fine, but if I just coment out the code snippet for logging I will get the wrong messages order.
Library version
1.10.1
Preconditions
Pixel 3, Android 9.0 or 10.0. It shouldn't matter.
Steps to reproduce actual result
1. Comment out RxBleLog options
2. Establish ble connection
3. Setup notification and indication
4. Subscribe to observables
5. Send any command
Actual result
NEW_NOTIFICATION in the log, then NEW_INDICATION (in 0-1 milliseconds on my phone).
Expected result
NEW_INDICATION in the log, then NEW_NOTIFICATION (in 1-2 milliseconds on my phone).
Minimum code snippet reproducing the issue
bleDevice.establishConnection(false)
      .delay(Constants.DELAY_FOR_SETUP_INDICATION, TimeUnit.MILLISECONDS)
      .flatMap(
        {
          it.setupNotification(UUID.fromString(BluetoothConstants.PTLS_LOCK_READ_NOTIFICATION_CHARACTERISTIC))
        },
        { bleConnection, ptlsNotifications ->
          ConnectionData(bleConnection, ptlsNotifications.map { convertHeader(it) })
        })
      .flatMap(
        {
          it.rxBleConnection.setupNotification(UUID.fromString(BluetoothConstants.LOCK_READ_NOTIFICATION_CHARACTERISTIC))
        },
        { connectionData, lockNotifications ->
          connectionData.apply {
            this.lockNotifications = lockNotifications.map {
              Timber.e("NEW_NOTIFICATION = " + System.currentTimeMillis())
              convertHeader(it)
            }
          }
        })
      .flatMap(
        {
          it.rxBleConnection.setupIndication(UUID.fromString(BluetoothConstants.LOCK_NOTIFICATION_CHARACTERISTIC))
        },
        { connectionData, lockIndications ->
          connectionData.apply {
            this.lockIndications = lockIndications.map {
              Timber.e("NEW_INDICATION = " + System.currentTimeMillis())
              convertHeader(it)
            }
          }
        })
      .doOnError {
        Timber.e(it)
        if (it !is BleAlreadyConnectedException) {
          wrapperListener.onConnectionChanged(false)
          ptlsHelper?.closeConnection()
          ptlsHelper = null
          session = null
        }
      }
      .retryWhen {
        it.takeWhile { remaining.getAndIncrement() != MAX_RETRY_ATTEMPTS_ON_CONNECTION_ERROR }
          .flatMap { error ->
            Timber.e("retry ${remaining.get()} time")
            Timber.e("${bleDevice.macAddress} : ${error.localizedMessage}")
            Observable.timer(5, TimeUnit.SECONDS)
          }
      }
      .doOnNext { remaining.lazySet(0) }
      .subscribeOn(Schedulers.io())
      .observeOn(AndroidSchedulers.mainThread())
      .subscribe(
        { onConnected(it) },
        { wrapperListener.onConnectionChanged(false) }
      ).addTo(compositeDisposable)

    RxBleLog.updateLogOptions(
      LogOptions.Builder()
        .setMacAddressLogSetting(LogConstants.MAC_ADDRESS_FULL)
        .setShouldLogAttributeValues(true)
        .setUuidsLogSetting(LogConstants.UUIDS_FULL)
        .setLogLevel(LogConstants.INFO)
        .build()
    )

Hello,
I see no actionable data here. All notifications/indications are serialised as soon as possible to mitigate such situations. Android however may dispatch notifications on arbitrary threads which can cause some subtle race conditions — this the library tries to avoid as mentioned above.
You have not added logs as you mention that everything seems to work. You could show logs with and without library logs and there is a chance that notification callback logs from the OS will still show something.
It would be best if you could provide a unit test-case that is failing right now due to race conditions so it could be fixed. Even better if you would fix the issue on your own and make a PR. I just doubt that there is anything more we could do at this moment as some Android OS implementations are extremely sensitive for timing/threading of BluetoothGattCallback callbacks — this makes BLE to break on older versions.
Anyway you should be able to change your code to accommodate uncertainty of order of notifications.

I will try to test it better, and then I will answer what I achieve.

I found the trouble. Inside RxBleGattConnect there is such a method:
@Override
        public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) {
            LoggerUtil.logCallback("onCharacteristicChanged", gatt, characteristic, true);
            nativeCallbackDispatcher.notifyNativeChangedCallback(gatt, characteristic);
            super.onCharacteristicChanged(gatt, characteristic);

            /*
             * It is important to call changedCharacteristicSerializedPublishRelay as soon as possible because a quick changing
             * characteristic could lead to out-of-order execution since onCharacteristicChanged may be called on arbitrary
             * threads.
             */
            if (changedCharacteristicSerializedPublishRelay.hasObservers()) {
                changedCharacteristicSerializedPublishRelay.accept(
                        new CharacteristicChangedEvent(
                                characteristic.getUuid(),
                                characteristic.getInstanceId(),
                                characteristic.getValue()
                        )
                );
            }
        }

It is called on separate Binder thread by android. Here the accept method is called on PublishRelay.
PublishRelay is obtained by 'NotificationAndIndicationManager' from here:
    public Observable<CharacteristicChangedEvent> getOnCharacteristicChanged() {
        return Observable.merge(
                disconnectionRouter.<CharacteristicChangedEvent>asErrorOnlyObservable(),
                changedCharacteristicSerializedPublishRelay
        )
                .observeOn(callbackScheduler);
    }

Then, in the 'NotificationAndIndicationManager' class, it is called:
    @NonNull
    private static Observable<byte[]> observeOnCharacteristicChangeCallbacks(RxBleGattCallback gattCallback,
                                                                             final CharacteristicNotificationId characteristicId) {
        return gattCallback.getOnCharacteristicChanged()
                .filter(new Predicate<CharacteristicChangedEvent>() {
                    @Override
                    public boolean test(CharacteristicChangedEvent notificationIdWithData) {
                        return notificationIdWithData.equals(characteristicId);
                    }
                })
                .map(new Function<CharacteristicChangedEvent, byte[]>() {
                    @Override
                    public byte[] apply(CharacteristicChangedEvent notificationIdWithData) {
                        return notificationIdWithData.data;
                    }
                });
    }

I mean, when we get a new CharacteristicChangedEvent, then filter and map are called.
For example we have two subscribers.
When PublishRelay receives a CharacteristicChangedEvent, the first subscriber receives this event in the filter, and then the second. But when the PublishRelay receives two events one after the other with a slight delay, sometimes due to the race condition the first subscriber receives these two events in the filter, and only then the second subscriber receives them. In my case, if the first event must be processed by the second subscriber, and the second event by the first subscriber, I get the wrong order, because the first subscriber will receive the second event faster than the second subscriber will receive the first event. This trouble occurs due to the call to 'observeOn(callbackScheduler)' in the getOnCharacteristicChanged () method. As far as I understand, rxJava has its own message queue, and it does not work the way I expect, not the way it works in the message queue inside the Executor.
There are several possible solutions:
First:
1. Remove 'observeOn(callbackScheduler)' in the getOnCharacteristicChanged () method.
2. Call it inside observeOnCharacteristicChangeCallbacks after calling filter.
Second:
We need to call accept in a new thread and delete 'observeOn(callbackScheduler)'. We can use the existing Scheduler or Executor for this purpose.
Below is a snippet that may help to understand and test these solutions.
import android.annotation.SuppressLint
import android.os.Bundle
import android.util.Log
import android.widget.Button
import androidx.appcompat.app.AppCompatActivity
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import io.reactivex.subjects.PublishSubject
import java.util.concurrent.Executors
import kotlin.concurrent.thread

class MainActivity : AppCompatActivity() {

    private lateinit var button: Button

    private val executor = Executors.newSingleThreadExecutor()
    private val scheduler = Schedulers.from(executor)
    private val subject = PublishSubject.create<Int>()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        button = findViewById(R.id.button)
        button.setOnClickListener {
            thread(name = "My thread") {
                //executor.submit {
                //scheduler.scheduleDirect {
                Log.e("start", "Start" + '\n' + "Thread = ${Thread.currentThread().name}")
                subject.onNext(2)
                subject.onNext(1)
//             }
//             }
            }
        }
        setupListeners(1)
        setupListeners(2)
    }

    @SuppressLint("CheckResult")
    private fun setupListeners(int: Int) {
        subject
            .observeOn(scheduler)
            .filter {
                Log.e(
                    "filter",
                    "subscriber = $int filter = $it Thread = ${Thread.currentThread()}"
                )
                Thread.sleep(100)
                it == int
            }
//            .observeOn(scheduler)
            .map {
                Log.e("map", "subscriber = $int map = $it Thread = ${Thread.currentThread()}")
                it
            }
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe {
                Log.e(
                    "subscribe",
                    "subscriber = $int subscribe = $it Thread = ${Thread.currentThread()}"
                )
            }
    }
}

This is not a unit test, but that may be enough.

When I tried to call accept on a new thread using the existing callbackScheduler, I got the wrong behavior. I decided to use observeOn(callbackScheduler) inside observeOnCharacteristicChangeCallbacks after calling filter.

Actually, since observeOnCharacteristicChangeCallbacks() is static, I added observeOn to the setupServerInitiatedCharacteristicRead().
...
final Observable<Observable<byte[]>> newObservable = setCharacteristicNotification(bluetoothGatt, characteristic, true)
                            .andThen(ObservableUtil.justOnNext(observeOnCharacteristicChangeCallbacks(gattCallback, id)))
                            .observeOn(callbackScheduler)
                            .compose(setupModeTransformer(descriptorWriter, characteristic, enableNotificationTypeValue, setupMode))
...

Hello again, I am back from holiday (that is why I was silent)
Thank you for your investigation.
You have provided an example but have not included logs of result. Also you did not include logs (actual/expected) as per my request from the actual app you use. Having a log of what is actually happening with the notifications you receive and how they are processed could help me understand the issue.
It seems that you want to use several .subscribe() statements which do not give you any promises about sequence between them. If you want a resilient flow you should use a single .subscribe() for the computation.

Each time I call rxBleConnection.setupNotification or rxBleConnection.setupIndication, a new observer for the subject is created inside your library. There are different UUIDs, and for this reason you use filter.
I subscribe to one notification and one indication.
I added some logs to show you what happened.
@Override
    public void onCharacteristicChanged(BluetoothGatt gatt,
        BluetoothGattCharacteristic characteristic) {
      >>> Log.e("onCharacteristicChanged", characteristic.getUuid().toString());
      LoggerUtil.logCallback("onCharacteristicChanged", gatt, characteristic, true);
      nativeCallbackDispatcher.notifyNativeChangedCallback(gatt, characteristic);
      super.onCharacteristicChanged(gatt, characteristic);

      /*
       * It is important to call changedCharacteristicSerializedPublishRelay as soon as possible because a quick changing
       * characteristic could lead to out-of-order execution since onCharacteristicChanged may be called on arbitrary
       * threads.
       */
      if (changedCharacteristicSerializedPublishRelay.hasObservers()) {
        changedCharacteristicSerializedPublishRelay.accept(
            new CharacteristicChangedEvent(
                characteristic.getUuid(),
                characteristic.getInstanceId(),
                characteristic.getValue()
            )
        );
      }
    }

@NonNull
  private static Observable<byte[]> observeOnCharacteristicChangeCallbacks(
      RxBleGattCallback gattCallback,
      final CharacteristicNotificationId characteristicId) {
    return gattCallback.getOnCharacteristicChanged()
        .filter(new Predicate<CharacteristicChangedEvent>() {
          @Override
          public boolean test(CharacteristicChangedEvent notificationIdWithData) {
           >>> Log.e("filter", "notificationIdWithData = " + notificationIdWithData.first.toString()
                + " characteristicId = " + characteristicId.first.toString());
            return notificationIdWithData.equals(characteristicId);
          }
        })
        .map(new Function<CharacteristicChangedEvent, byte[]>() {
          @Override
          public byte[] apply(CharacteristicChangedEvent notificationIdWithData) {
            >>> Log.e("map", "notificationIdWithData = " + notificationIdWithData.first.toString()
                + " characteristicId = " + characteristicId.first.toString());
            return notificationIdWithData.data;
          }
        });
  }

Actual result
2019-10-28 14:43:08.493 E/onCharacteristicChanged: 00000501...
2019-10-28 14:43:08.493 E/onCharacteristicChanged: 00000101...
2019-10-28 14:43:08.494 D/LockBtApiInteractor$setupSubscriber: closeLock()::onSuccess()
2019-10-28 14:43:08.494 E/filter: notificationIdWithData = 00000501... characteristicId = 00000101...
2019-10-28 14:43:08.494 E/filter: notificationIdWithData = 00000101... characteristicId = 00000101...
2019-10-28 14:43:08.494 E/map: notificationIdWithData = 00000101... characteristicId = 00000101...
2019-10-28 14:43:08.495 D/DoorLockConnectionWrapper current message number = 14
2019-10-28 14:43:08.495 E/filter: notificationIdWithData = 00000501... characteristicId = 00000501...
2019-10-28 14:43:08.495 E/map: notificationIdWithData = 00000501... characteristicId = 00000501...
2019-10-28 14:43:08.495 D/DoorLockConnectionWrapper current message number = 13
2019-10-28 14:43:08.495 E/filter: notificationIdWithData = 00000101... characteristicId = 00000501...
Expected result
E/onCharacteristicChanged: 00000501...
E/onCharacteristicChanged: 00000101...
D/LockBtApiInteractor$setupSubscriber: closeLock()::onSuccess()
E/filter: notificationIdWithData = 00000501... characteristicId = 00000101...
E/filter: notificationIdWithData = 00000501... characteristicId = 00000501...
E/map: notificationIdWithData = 00000501... characteristicId = 00000501...
D/DoorLockConnectionWrapper current message number = 13
E/filter: notificationIdWithData = 00000101... characteristicId = 00000101...
E/map: notificationIdWithData = 00000101... characteristicId = 00000101...
D/DoorLockConnectionWrapper current message number = 14
E/filter: notificationIdWithData = 00000101... characteristicId = 00000501...

The code you provided does not show how you consume the API and has no info about threads. Could you add those?

private fun connect() {
    val remaining = AtomicInteger()
    bleDevice.establishConnection(false)
      .delay(Constants.DELAY_FOR_SETUP_INDICATION, TimeUnit.MILLISECONDS)
      .flatMap(
        {
          it.setupNotification(UUID.fromString(BluetoothConstants.PTLS_LOCK_READ_NOTIFICATION_CHARACTERISTIC))
        },
        { bleConnection, ptlsNotifications ->
          ConnectionData(bleConnection, ptlsNotifications.map { convertHeader(it) })
        })
      .flatMap(
        {
          it.rxBleConnection.setupNotification(UUID.fromString(BluetoothConstants.LOCK_READ_NOTIFICATION_CHARACTERISTIC))
        },
        { connectionData, lockNotifications ->
          connectionData.apply {
            this.lockNotifications = lockNotifications.map { convertHeader(it) }
          }
        })
      .flatMap(
        {
          it.rxBleConnection.setupIndication(UUID.fromString(BluetoothConstants.LOCK_NOTIFICATION_CHARACTERISTIC))
        },
        { connectionData, lockIndications ->
          connectionData.apply { this.lockIndications = lockIndications.map { convertHeader(it) } }
        })
      .doOnError {
        Logger.err(it, "Error in connection to ${bleDevice.macAddress}")
        if (it !is BleAlreadyConnectedException) {
          wrapperListener.onConnectionChanged(false)
          ptlsHelper?.closeConnection()
          ptlsHelper = null
          session = null
        }
      }
      .retryWhen {
        it.flatMap { error ->
          if (remaining.getAndIncrement() != MAX_RETRY_ATTEMPTS_ON_CONNECTION_ERROR
            && bleClient.state == RxBleClient.State.READY
          ) {
            Timber.e("retry connect to lock: ${remaining.get()} time")
            Timber.e("${bleDevice.macAddress} : ${error.localizedMessage}")
            Observable.timer(5, TimeUnit.SECONDS)
          } else {
            Observable.error(ConnectionWasDeadError())
          }
        }
      }
      .doOnNext { remaining.lazySet(0) }
      .observeOn(AndroidSchedulers.mainThread())
      .subscribe(
        { onConnected(it) },
        {
          when (it) {
            is ConnectionWasDeadError -> wrapperListener.onConnectionDead()
            else ->  wrapperListener.onConnectionChanged(false)
          }
        }
      ).addTo(compositeDisposable)
  }

  private fun onConnected(connectionData: ConnectionData) {
    rxBleConnection = connectionData.rxBleConnection
    ptlsEstablishNotifications = connectionData.ptlsEstablishNotifications
    lockNotifications = connectionData.lockNotifications
    lockInteractor = LockBtApiInteractor(connectionData.rxBleConnection)
    lockNotifications
      .observeOn(AndroidSchedulers.mainThread())
      .subscribe(
        { onNotificationCharacteristic(it) },
        { Timber.e(it) }
      ).addTo(compositeDisposable)
    connectionData.lockIndications
      .observeOn(AndroidSchedulers.mainThread())
      .subscribe(
        { onIndicationCharacteristic(it) },
        { Timber.e(it) }
      ).addTo(compositeDisposable)

    establishPtlsConnection()
  }

And about onNotificationCharacteristic / onIndicationCharacteristic?

  private fun convertHeader(byteArray: ByteArray): ByteArray {
    Timber.d("Lock ${bleDevice.macAddress} current message number = ${(byteArray.first().toInt() shr (4)) + 8}")
    return byteArray.apply { this[0] = first() and 0xF }
  }

  private fun onNotificationCharacteristic(incomingMessage: ByteArray) {
    if (incomingMessage.first() == BluetoothConstants.PTLS_DATA_ENCRYPTED) {
      session?.read(
        SecurityData(incomingMessage.copyOfRange(1, incomingMessage.size),
          {
            it?.also { message ->
              Logger.ble(LoggerUtils.mapLockNotification(bleDevice.macAddress, message))
              wrapperListener.onNotificationChanged(message)
            }
          })
      )
    } else if (incomingMessage.first() == BluetoothConstants.PTLS_DATA_NOT_ENCRYPTED) {
      val message = incomingMessage.copyOfRange(1, incomingMessage.size)
      Logger.ble(LoggerUtils.mapLockNotification(bleDevice.macAddress, message))
      wrapperListener.onNotificationChanged(message)
    }
  }

  private fun onIndicationCharacteristic(incomingMessage: ByteArray) {
    if (incomingMessage.first() == BluetoothConstants.PTLS_DATA_ENCRYPTED) {
      session?.read(
        SecurityData(incomingMessage.copyOfRange(1, incomingMessage.size),
          { byteArray ->
            byteArray?.also { message ->
              Logger.ble(LoggerUtils.mapLockCommand(bleDevice.macAddress, message))
              wrapperListener.onIndicationChanged(message)
            }
          })
      )
    } else if (incomingMessage.first() == BluetoothConstants.PTLS_DATA_NOT_ENCRYPTED) {
      val message = incomingMessage.copyOfRange(1, incomingMessage.size)
      Logger.ble(LoggerUtils.mapLockCommand(bleDevice.macAddress, message))
      wrapperListener.onIndicationChanged(message)
    }
  }

And again — down the rabbit hole. wrapperListener.on*

          override fun onNotificationChanged(message: ByteArray) {
            if (message.isEmpty()) return
            notificationSubject.onNext(message)
            when (message.first()) {
              BluetoothConstants.NOTIFICATION_LOCK_STATUS_CHANGE -> {
                updateLockStatus(deviceToConnect.macAddress, message[1], message[2])
              }
            }
          }

          override fun onIndicationChanged(message: ByteArray) {
            indicationSubject.onNext(message)
          }

It doesn't matter what's next. As I said, the main problem is that in our case, the FIFO order is not used for observation. Just try running my simple example that I posted above.

Could you add info about threading (it looks like 16516-16516 in logcat)?
2019-10-28 14:43:08.493 E/onCharacteristicChanged: 00000501...
2019-10-28 14:43:08.493 E/onCharacteristicChanged: 00000101...
2019-10-28 14:43:08.494 D/LockBtApiInteractor$setupSubscriber: closeLock()::onSuccess()
2019-10-28 14:43:08.494 E/filter: notificationIdWithData = 00000501... characteristicId = 00000101...
2019-10-28 14:43:08.494 E/filter: notificationIdWithData = 00000101... characteristicId = 00000101...
2019-10-28 14:43:08.494 E/map: notificationIdWithData = 00000101... characteristicId = 00000101...
2019-10-28 14:43:08.495 D/DoorLockConnectionWrapper current message number = 14
2019-10-28 14:43:08.495 E/filter: notificationIdWithData = 00000501... characteristicId = 00000501...
2019-10-28 14:43:08.495 E/map: notificationIdWithData = 00000501... characteristicId = 00000501...
2019-10-28 14:43:08.495 D/DoorLockConnectionWrapper current message number = 13
2019-10-28 14:43:08.495 E/filter: notificationIdWithData = 00000101... characteristicId = 00000501...

I am trying to understand the problem you are trying to solve. The proposed solution of moving .observeOn() around can potentially break a lot of working applications either by doing too much work on the Android BLE callback threads or by changing behaviour of code consuming notification emissions.
The funny thing is how RxJava handles two different .subscribe() observers. From the logs you pasted it looks like both of them are correctly called in the same sequence as the notifications arrived. There is a good chance that if you would rewrite the flow to use only a single .subscribe() the problem would be solved.

2019-10-28 22:21:49.005 16845-16878 E/onCharacteristicChanged: 00000501...
2019-10-28 22:21:49.005 16845-16878 E/onCharacteristicChanged: 00000101...
2019-10-28 22:21:49.005 16845-16991 D/LockBtApiInteractor$setupSubscriber: openLock()::onSuccess()
2019-10-28 22:21:49.005 16845-16991 E/filter: notificationIdWithData = 00000501... characteristicId = 00000101...
2019-10-28 22:21:49.006 16845-16991 E/filter: notificationIdWithData = 00000101... characteristicId = 00000101...
2019-10-28 22:21:49.006 16845-16991 E/map: notificationIdWithData = 00000101... characteristicId = 00000101...
2019-10-28 22:21:49.006 16845-16991 D/DoorLockConnectionWrapper current message number = 11
2019-10-28 22:21:49.006 16845-16991 E/filter: notificationIdWithData = 00000501... characteristicId = 00000501...
2019-10-28 22:21:49.006 16845-16991 E/map: notificationIdWithData = 00000501... characteristicId = 00000501...
2019-10-28 22:21:49.006 16845-16991 D/DoorLockConnectionWrapper current message number = 10
2019-10-28 22:21:49.007 16845-16991 E/filter: notificationIdWithData = 00000101... characteristicId = 00000501...

I use only one subscriber for notification and one for indication. I can use Observable.merge() to have one subscriber but it doesn't solve the problem. If I change the subscription order, it will help me, but if I receive notification and indication in a different order I will have the same problem. You need to understand that using observeOn() before filter() with your Executor can change the message order. There is Schedulers.trampoline() for keeping the order of messages, but it does not matter as it does not change the thread.
I call rxBleConnection.setupNotification() and rxBleConnection.setupIndication() for different uuids. This means that two observables are created inside the library in NotificationAndIndicationManager in
setupServerInitiatedCharacteristicRead(@NonNull final BluetoothGattCharacteristic characteristic,
final NotificationSetupMode setupMode, final boolean isIndication)

In my logs you can see that first I receive characteristic with uuid 00000501..., then with uuid 00000101... But after filter() they are swapped, because first map() is called for 00000101... and then for 00000501... Different observables are created inside the library for different characteristics, but you use one subject for all of them. Then you use filter() to separate messages for different characteristics.
  public Observable<CharacteristicChangedEvent> getOnCharacteristicChanged() {
    return Observable.merge(
        disconnectionRouter.<CharacteristicChangedEvent>asErrorOnlyObservable(),
        changedCharacteristicSerializedPublishRelay
    )
        .observeOn(callbackScheduler);
  }

    @NonNull
    private static Observable<byte[]> observeOnCharacteristicChangeCallbacks(RxBleGattCallback gattCallback,
                                                                             final CharacteristicNotificationId characteristicId) {
        return gattCallback.getOnCharacteristicChanged()
                .filter(new Predicate<CharacteristicChangedEvent>() {
                    @Override
                    public boolean test(CharacteristicChangedEvent notificationIdWithData) {
                        Log.e("filter", "notificationIdWithData = " + notificationIdWithData.first.toString()
                            + " characteristicId = " + characteristicId.first.toString());
                        return notificationIdWithData.equals(characteristicId);
                    }
                })
                .map(new Function<CharacteristicChangedEvent, byte[]>() {
                    @Override
                    public byte[] apply(CharacteristicChangedEvent notificationIdWithData) {
                        Log.e("map", "notificationIdWithData = " + notificationIdWithData.first.toString()
                            + " characteristicId = " + characteristicId.first.toString());
                        return notificationIdWithData.data;
                    }
                });
    }

For example I have ten observables with different uuid and for all of them I call subscribe(). All code runs in a single thread. I receive ten CharacteristicChangedEvents with different uuid at the same time. changedCharacteristicSerializedPublishRelay.accept is called, then filter() is called in observeOnCharacteristicChangeCallbacks method for subscribers/Observables that were created in the library in setupServerInitiatedCharacteristicRead method. My subscribers receive first CharacteristicChangedEvent in the order in which I called subscribe(). Filter() is called for the first subscriber with the first event. Then for the second subscriber with the first event. Then for the third subscriber with the first event, etc. If the fifth subscriber has the same uuid as the CharacteristicChangedEvent then map() is called. When the chain call for my fifth subscriber is finished the sixth subscriber receives CharacteristicChangedEvent in the filter() with the first event. When the first event is processed by all subscribers, the second event begins to be processed, etc.
But what happenes if we call observeOn() before the filter() as in the library? The first subscriber will receive the first event in filter(). Then the first subscriber will receive the second event in filter(). Then the first subscriber will receive the third event in filter(), etc. In the end, we have the wrong order of messages due to the fact that messages are processed in the subscription order, and not in the order in which my application received them.
There are two possible solutions.
First:
you can delete observeOn() in this method
  public Observable<CharacteristicChangedEvent> getOnCharacteristicChanged() {
    return Observable.merge(
        disconnectionRouter.<CharacteristicChangedEvent>asErrorOnlyObservable(),
        changedCharacteristicSerializedPublishRelay
    )
        .observeOn(callbackScheduler);
  }

and call changedCharacteristicSerializedPublishRelay.accept in a new thread.
Second:
you can call observeOn() after calling filter(). For example you can make
@NonNull
    private static Observable<byte[]> observeOnCharacteristicChangeCallbacks(RxBleGattCallback gattCallback,
                                                                             final CharacteristicNotificationId characteristicId)

non-static and call observeOn() right after the filter().

Also you can add observeOn() here:
Observable<Observable<byte[]>> setupServerInitiatedCharacteristicRead(
            @NonNull final BluetoothGattCharacteristic characteristic, final NotificationSetupMode setupMode, final boolean isIndication
    ) {
        return Observable.defer(new Callable<ObservableSource<Observable<byte[]>>>() {
            @Override
            public ObservableSource<Observable<byte[]>> call() {
                synchronized (activeNotificationObservableMap) {

                    ...

                    final Observable<Observable<byte[]>> newObservable = setCharacteristicNotification(bluetoothGatt, characteristic, true)
                            .andThen(ObservableUtil.justOnNext(observeOnCharacteristicChangeCallbacks(gattCallback, id)))
>>>                         .observeOn(callbackScheduler)
                    ...

FYI ACK, investigating...

Thank you @ArtyomBasharkevich for your persistence — I have learned something. You can checkout the new PR and confirm if it helps your case.

@dariuszseweryn, I have two news:

first, I will not be able to answer next week;
second, I reviewed your fix and read your messages on the rx tracker, but my example and the actual project with a delay do not work as I expected (the message order is still changing). It’s strange for me that your example was fine. I have not tried your example, but I am sure that the problem is not solved. As far as I remember, when I researched the source code, I found the problem in Scheduler. That means it doesn't matter what function you call (but I was so surprised that delay() could solve the problem!). If you want to have a good example and know for sure that the solution works, add Thread.sleep(100) into the filter(). This ensures that all your messages are queued and there is no race condition.

I will explore it more deeply in a week.

In tests I have used a TestScheduler that is fully controllable and in RxBleGattCallbackTest all actions are triggered in testScheduler.triggerActions() which exposed the buggy behaviour from this issue. When I have switched to delay(0, TimeUnit.SECONDS, scheduler) the issue indeed seems to be fixed. I have also test it on your original code from here and it looks to be fixed. Feel free to retest it and report back.

Using your new RxBleGattCallback I checked this bug again. This is still not fixed.
Try this, you can change delay() to observeOn() and there will be no difference:
import android.annotation.SuppressLint
import android.os.Bundle
import android.util.Log
import android.widget.Button
import androidx.appcompat.app.AppCompatActivity
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import io.reactivex.subjects.PublishSubject
import java.util.concurrent.Executors
import java.util.concurrent.TimeUnit
import kotlin.concurrent.thread

class MainActivity : AppCompatActivity() {

    private lateinit var button: Button

    private val executor = Executors.newSingleThreadExecutor()
    private val scheduler = Schedulers.from(executor)
    private val subject = PublishSubject.create<Int>()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        button = findViewById(R.id.button)
        button.setOnClickListener {
            thread(name = "My thread") {
                for (x in 1..10) {
                    Log.e("start $x", "Start" + '\n' + "Thread = ${Thread.currentThread().name}")
                    subject.onNext(x)
                }
            }
        }
        for (x in 10 downTo 1) {
            setupListeners(x)
        }
    }

    @SuppressLint("CheckResult")
    private fun setupListeners(int: Int) {
        subject
            .delay(0, TimeUnit.SECONDS, scheduler)
//            .observeOn(scheduler)
            .filter {
                Log.e(
                    "filter",
                    "subscriber = $int filter = $it Thread = ${Thread.currentThread()}"
                )
                Thread.sleep(100)
                it == int
            }
            .map {
                Log.e("map", "subscriber = $int map = $it Thread = ${Thread.currentThread()}")
                it
            }
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe {
                Log.e(
                    "subscribe",
                    "subscriber = $int subscribe = $it Thread = ${Thread.currentThread()}"
                )
            }
    }
}

Hi. Try a single threaded scheduled executor for the delay(0).

@akarnokd you are right. Using Schedulers.single() sovles the problem, but why can't I use Executors.newSingleThreadExecutor()? What if I want to create my own single threaded scheduled executor?

newSingleThreadExecutor doesn't support timed scheduling so behind the scenes, Schedulers.single() is helping. If you mix timed and non timed execution on Schedulers.from, you can end up with time races based on the OS' timer resolution. Use newSingleThreadScheduledExecutor.

@akarnokd I already tried, it worked like newSingleThreadExecutor.
    private val executor = Executors.newSingleThreadScheduledExecutor()
    private val scheduler = Schedulers.from(executor)

It could mean you have a race somewhere else before the single-threaded funneling of events. You mentioned in a comment that the setup is driven by events that can be triggered from any thread. Neither PublishRelay nor PublishSubject serializes its input so if two threads signal to the same subject, you get a race. You serialize it and you can get an arbitrary reorder.
Could you post some project that demonstrates the issue so I can see what I can dig up from the internals of RxJava?

I created an example where there are no race conditions, try this
https://github.com/Polidea/RxAndroidBle/issues/628#issuecomment-554525711

This example only works correctly with private val scheduler = Schedulers.single() and using delayOn() instead of observeOn() (observeOn() is commented out in this example).

Okay, I see what you mean. Schedulers.from uses a trampoline so if you happen to submit a lot of work together, it will essentially batch them up for the underlying executor to work on them together. With single(), there is no such coalescing. Schedulers.from is to work with an arbitrary executor which could house any number of worker threads, therefore, to ensure the contract is held, it uses a trampoline that can exhibit this batching behavior.

Does this mean that the only solution to my problem is to use delay with Schedulers.single()?

Yes. In case you need many such single schedulers you can create more with RxJavaPlugins.createSingleScheduler officially or new SingleScheduler() unofficially.

@akarnokd, thank you very much! You helped me a lot!

@dariuszseweryn in this method
        @Provides
        @Named(NamedSchedulers.BLUETOOTH_CALLBACKS)
        @ClientScope
        static Scheduler provideBluetoothCallbacksScheduler(@Named(NamedExecutors.BLUETOOTH_CALLBACKS) ExecutorService service) {
            return Schedulers.from(service);
        }

you could use something like this:
return RxJavaPlugins.createSingleScheduler(RxThreadFactory("ANY YOUR NAME", Thread.NORM_PRIORITY, true));

Yup, I am watching this thread. I am also thinking whether there should be (at some time in the future) an option to switch between .delay(0) and .observeOn() implementations depending on user preference.

I think having a Executors.newSingleThreadScheduledExecutor() would be an equivalent

This new RxJavaPlugins.createSingleScheduler() should be shut down eventually? Correct me if I am wrong but Schedulers.from(Executor) does not handle .shutdown() correctly and the Executor should be shut down directly? — this question is for David I suppose

Yes, they need manual shutdown if you don't use daemon threads.

RxThreadFactory in the above example will use a daemon thread, as I understand it

Yes, but RxThreadFactory is an internal API thus shouldn't be relied upon this way. The create is public and you should provide your custom factory.

@ArtyomBasharkevich You can check the branch/PR now — it now has a SingleScheduler used
@akarnokd Again thank you for the help

@dariuszseweryn Excellent, now everything works


Return Something to Me!

Before jumping into Pr first comment for assign.All Problem from Edabit. Link is mandatory to add
Problem statement: Return Something to Me!
Problem Link: https://edabit.com/challenge/XXJbGFEkrMWCp8yFn

Before submitting a PR please Check some details.Check Edabit for problem task

[x] fileName formet should be in camelcase
example- returnTheNextNumber.py
[x]  Add label for Problem
[x]  In file there should be problem statement and link to probelm
example -

'''
    Probem Task : This program will add two numbers
    Problem Link : https://edabit.com/challenge/SFzHtm63XT6EYNHWY
'''
*/
def main():
    return a + b

This repository is vaild for HacktoberFest2020
Read before making PR - How to contribute on Github
Good Luck,

I want to solve this problem, please assign this to me. Thank you! :)

Please assign this problem to me, I have a solution ready :)

I have solved the problem . Please assign it to me so that i can merge my solution


[Bug]

Prerequisite

[X] I have searched Issues and Discussions but cannot get the expected help.
[X] I have read the FAQ documentation but cannot get the expected help.
[X] The bug has not been fixed in the latest version (dev) or latest version (1.x).

Task
I'm using the official example scripts/configs for the officially supported tasks/models/datasets.
Branch
master branch https://github.com/open-mmlab/mmdetection3d
Environment
torch                   1.9.0+cu102
torchaudio              0.9.0
torchvision             0.10.0+cu102
spconv-cu102            2.1.21
Reproduces the problem - code sample
python3 tools/test.py
configs/second/hv_second_secfpn_6x8_80e_kitti-3d-car.py
models/hv_second_secfpn_6x8_80e_kitti-3d-car_20200620_230238-393f000c.pth
--gpu-id 0
--eval mAP
Reproduces the problem - command or script
python3 tools/test.py
configs/second/hv_second_secfpn_6x8_80e_kitti-3d-car.py
models/hv_second_secfpn_6x8_80e_kitti-3d-car_20200620_230238-393f000c.pth
--gpu-id 0
--eval mAP
Reproduces the problem - error message
----------- AP11 Results ------------
Car<EMAIL_ADDRESS>0.70, 0.70:
bbox AP11:9.9299, 10.3669, 10.6121
bev  AP11:0.0433, 0.1324, 0.1343
3d   AP11:0.0366, 0.0930, 0.0924
aos  AP11:3.23, 4.70, 4.81
Car<EMAIL_ADDRESS>0.50, 0.50:
bbox AP11:9.9299, 10.3669, 10.6121
bev  AP11:0.1352, 0.3300, 0.3601
3d   AP11:0.1266, 0.3040, 0.2868
aos  AP11:3.23, 4.70, 4.81
----------- AP40 Results ------------
Car<EMAIL_ADDRESS>0.70, 0.70:
bbox AP40:1.3368, 1.9814, 2.3379
bev  AP40:0.0119, 0.0364, 0.0369
3d   AP40:0.0101, 0.0256, 0.0254
aos  AP40:0.51, 0.75, 0.90
Car<EMAIL_ADDRESS>0.50, 0.50:
bbox AP40:1.3368, 1.9814, 2.3379
bev  AP40:0.0743, 0.2669, 0.2871
3d   AP40:0.0680, 0.2434, 0.1577
aos  AP40:0.51, 0.75, 0.90
Additional information
python3 tools/test.py \
configs/second/hv_second_secfpn_6x8_80e_kitti-3d-3class.py \
models/hv_second_secfpn_6x8_80e_kitti-3d-3class_20210831_022017-ae782e87.pth \
--gpu-id 0 \
--eval mAP
The test of SECOND 3d-class is right, but the test result of SECOND 3d-car is error

To my knowledge, the checkpoint you used is trained before coord refactor, which means the version v0.x. For version v1.x, the checkpoints have not been fully updated.

Thanks, expect the new version checkpoint


Fix lint command usage by husky and required files

Fixes the husky pre-commit hook not using the tsdx lint command
Fixes tsdx lint without any input files failing with a help message instead of silently appearing to succeed.

Related to #7
@skvale also curious about your 👀 in case I missed something.

@allcontributors please add @bbugh for code, bugs


How can I choose a source on a per-dependency basis?

[x] I have searched the issues of this repo and believe that this is not a duplicate.
[x] I have searched the documentation and believe that my question is not covered.

Question

I would like to specify a source for a dependency on a per-dependency basis.
I would like to do this for a number of reasons:

PyPi is much faster than my private repository, so it makes sense to install all of my non-private dependencies from PyPi
I don't understand the semantics of specifying another source... Will that source be used for all dependencies, or just ones that are not found in PyPi? (If the latter, that is a security issue as someone could register our package's name on PyPi and have their code included in our app)

Therefore it seems to me that the way to have understandable semantics and the best installation speed is to support something like:
[[tool.poetry.source]]
name = "my-private-repo"
url = "http://<hostname>/simple/"

[tool.poetry.dependencies]
python = "^3.6"
my-private-package = { version = "^x.y.z", source = "my-private-repo }

For comparison's sake, the above is possible in Pipenv with this syntax:
[[source]]
url = "http://pypi.home.kennethreitz.org/simple"
name = "home"

[packages]
requests = {version="*", index="home"}
records = "*"

There was a prior request for this here as well.

I don't understand the semantics of specifying another source... Will that source be used for all dependencies, or just ones that are not found in PyPi? (If the latter, that is a security issue as someone could register our package's name on PyPi and have their code included in our app)

This is somehow by design in Python ecosystem. Indeed, this can be a security reason especially with the fact pip can silently fallback to the secondary index - it treats them all as mirrors.
We have done some work around this - see our provenance checks in the Thoth project. Currently we support Pipfile and Pipfile.lock style checks. In the future there is a plan for adding PEP-518 support.
See also Pipenv discussion on this in https://github.com/pypa/pipenv/issues/2159

@fridex awesome, thank you for the links--it appears the security issues remains in Pipenv even when specifying a specific index, which I had not realized.
It seems like currently the maximally safe way to use another source is to use that source instead of PyPi, not in addition to it. (In this case the source I want to use is pypicloud with passthrough to pypi; we're coming from pip-tools with --index-url at the top of the file so I think it's an easy migration path to poetry.)

Hmm... Though I don't see a way to use another repository instead of PyPi, only in addition to it; from the docs, emphasis mine:

From now on, Poetry will also look for packages in your private repository.

This is now available in the latest beta release (see #908 for more information).


Add profileId to WvPaymentDeviceInfo

removed public functions that weren't being used in the sdk because they are in a non-public class.

Did not merge due to all the checks failing


Gitignore update

Since commit 2709a34, generated c source files are created in the src directory, and this can make some git actions such as switching branches awkward. These files also create problems when running spellcheck in a local work area. These
commits just make working with git a little bit easier.

These files are generated in the source directory only if you are upgrading your current git build, because (I think) autotools somehow caches the location of these files and they are generated in the previous location. If you will distclean the project and regenerate everything from scratch, these files will not be generated in the source directory.
I've also seen these issue, but I did not add these files to gitignore, because I thought that it might be a "bug" only visible in case of "git pull". But maybe I'm wrong, because, to be honest, I do not know why these files are generated in the src dir... a cache thingy is only a wild guess...

Ah, thanks. So all I needed to do was make distclean. This PR is not needed, closing.


Benchmark

Brett, I really liked SansORM. Wondering if you have any performance benchmark comparing this against just plain old JDBC?

It is not much more than "plain old JDBC".  I can come up with a benchmark, give me a little time.  But my intuition, knowing the code, is that the difference in constructing and populating a single Java object between SansOrm vs. straight Java code is probably measured in single or double-digit microseconds.


Bashtech123 patch 4

solved issue of readme selection sort #74

Kindly explain what this Pull Request does?


Making navbar fixed

Issue Report
Title
Making navbar fixed
Description
Navbar is not visible after scrolling down which is not a good user expericence. so making it fixed enhances UI
Steps to Reproduce the Issue
To assist us in understanding and resolving the issue, please outline the steps you took that led to the problem:

Action 1: Scroll the home page

Feel free to be as detailed as necessary so we can replicate the issue accurately.
Expected Behavior
Navbar to be fixed to the top even after scrolling
Actual Behavior
Navbar is not fixed. Not visible on scrolling down
Please assign this to me

@govindumeesala Assigned

Thank you

@saurabhbakolia

i am getting this error while running frontend
can you please help me with this

@saurabhbakolia help it

@govindumeesala
Please pull the develop branch and try again. It should work now.

@saurabhbakolia
I tried agian after pulling the develop branch. Still the error is occuring
I also checked the error in stack overflow, but didn't find any useful solution ,
please help me with this

@govindumeesala what is the issue

Module not found: Error: Can't resolve './components/utils/ScrollToTop' in 'C:\Users\Govindu\Desktop\gssoc\SCROLLME--ECOMMERCE-WEBSITE\src'
ERROR in ./src/index.js 12:0-57
Module not found: Error: Can't resolve './components/utils/ScrollToTop' in 'C:\Users\Govindu\Desktop\gssoc\SCROLLME--ECOMMERCE-WEBSITE\src'
ERROR in ./src/pages/AllProducts.jsx 5:0-42
Module not found: Error: Can't resolve '../components/Navbar' in 'C:\Users\Govindu\Desktop\gssoc\SCROLLME--ECOMMERCE-WEBSITE\src\pages'
ERROR in ./src/pages/AllProducts.jsx 6:0-46
Module not found: Error: Can't resolve '../components/Products' in 'C:\Users\Govindu\Desktop\gssoc\SCROLLME--ECOMMERCE-WEBSITE\src\pages'
ERROR in ./src/pages/AllProducts.jsx 7:0-54
Module not found: Error: Can't resolve '../components/Announcement' in 'C:\Users\Govindu\Desktop\gssoc\SCROLLME--ECOMMERCE-WEBSITE\src\pages'
ERROR in ./src/pages/AllProducts.jsx 8:0-58
Module not found: Error: Can't resolve '../components/ProductGallery' in 'C:\Users\Govindu\Desktop\gssoc\SCROLLME--ECOMMERCE-WEBSITE\src\pages'
ERROR in ./src/pages/AllProducts.jsx 9:0-42
Module not found: Error: Can't resolve '../components/Footer' in 'C:\Users\Govindu\Desktop\gssoc\SCROLLME--ECOMMERCE-WEBSITE\src\pages'
ERROR in ./src/pages/AllProducts.jsx 10:0-50
Module not found: Error: Can't resolve '../components/Newsletter' in 'C:\Users\Govindu\Desktop\gssoc\SCROLLME--ECOMMERCE-WEBSITE\src\pages'
ERROR in ./src/pages/Cart.jsx 7:0-42
Module not found: Error: Can't resolve '../components/Navbar' in 'C:\Users\Govindu\Desktop\gssoc\SCROLLME--ECOMMERCE-WEBSITE\src\pages'
ERROR in ./src/pages/Cart.jsx 8:0-54
Module not found: Error: Can't resolve '../components/Announcement' in 'C:\Users\Govindu\Desktop\gssoc\SCROLLME--ECOMMERCE-WEBSITE\src\pages'
ERROR in ./src/pages/Cart.jsx 9:0-42
Module not found: Error: Can't resolve '../components/Footer' in 'C:\Users\Govindu\Desktop\gssoc\SCROLLME--ECOMMERCE-WEBSITE\src\pages'
ERROR in ./src/pages/Home.jsx 5:0-54
Module not found: Error: Can't resolve '../components/Announcement' in 'C:\Users\Govindu\Desktop\gssoc\SCROLLME--ECOMMERCE-WEBSITE\src\pages'
ERROR in ./src/pages/Home.jsx 6:0-50
Module not found: Error: Can't resolve '../components/Categories' in 'C:\Users\Govindu\Desktop\gssoc\SCROLLME--ECOMMERCE-WEBSITE\src\pages'
ERROR in ./src/pages/Home.jsx 7:0-42
Module not found: Error: Can't resolve '../components/Footer' in 'C:\Users\Govindu\Desktop\gssoc\SCROLLME--ECOMMERCE-WEBSITE\src\pages'
ERROR in ./src/pages/Home.jsx 8:0-42
Module not found: Error: Can't resolve '../components/Navbar' in 'C:\Users\Govindu\Desktop\gssoc\SCROLLME--ECOMMERCE-WEBSITE\src\pages'
ERROR in ./src/pages/Home.jsx 9:0-50
Module not found: Error: Can't resolve '../components/Newsletter' in 'C:\Users\Govindu\Desktop\gssoc\SCROLLME--ECOMMERCE-WEBSITE\src\pages'
ERROR in ./src/pages/Home.jsx 10:0-46
Module not found: Error: Can't resolve '../components/Products' in 'C:\Users\Govindu\Desktop\gssoc\SCROLLME--ECOMMERCE-WEBSITE\src\pages'
ERROR in ./src/pages/Product.jsx 6:0-42
Module not found: Error: Can't resolve '../components/Navbar' in 'C:\Users\Govindu\Desktop\gssoc\SCROLLME--ECOMMERCE-WEBSITE\src\pages'
ERROR in ./src/pages/Product.jsx 7:0-54
Module not found: Error: Can't resolve '../components/Announcement' in 'C:\Users\Govindu\Desktop\gssoc\SCROLLME--ECOM
Failed to compile.
Module not found: Error: Can't resolve './components/utils/ScrollToTop' in 'C:\Users\Govindu\Desktop\gssoc\SCROLLME--ECOMMERCE-WEBSITE\src'
WARNING in [eslint]
src\pages\Product.jsx
Line 14:10:  'tab' is defined but never used  no-unused-vars
ERROR in ./src/index.js 12:0-57
Module not found: Error: Can't resolve './components/utils/ScrollToTop' in 'C:\Users\Govindu\Desktop\gssoc\SCROLLME--ECOMMERCE-WEBSITE\src'
ERROR in ./src/pages/AllProducts.jsx 5:0-42
Module not found: Error: Can't resolve '../components/Navbar' in 'C:\Users\Govindu\Desktop\gssoc\SCROLLME--ECOMMERCE-WEBSITE\src\pages'
ERROR in ./src/pages/AllProducts.jsx 6:0-46
Module not found: Error: Can't resolve '../components/Products' in 'C:\Users\Govindu\Desktop\gssoc\SCROLLME--ECOMMERCE-WEBSITE\src\pages'
ERROR in ./src/pages/AllProducts.jsx 7:0-54
Module not found: Error: Can't resolve '../components/Announcement' in 'C:\Users\Govindu\Desktop\gssoc\SCROLLME--ECOMMERCE-WEBSITE\src\pages'
ERROR in ./src/pages/AllProducts.jsx 8:0-58
Module not found: Error: Can't resolve '../components/ProductGallery' in 'C:\Users\Govindu\Desktop\gssoc\SCROLLME--ECOMMERCE-WEBSITE\src\pages'
ERROR in ./src/pages/AllProducts.jsx 9:0-42
Module not found: Error: Can't resolve '../components/Footer' in 'C:\Users\Govindu\Desktop\gssoc\SCROLLME--ECOMMERCE-WEBSITE\src\pages'
ERROR in ./src/pages/AllProducts.jsx 10:0-50
Module not found: Error: Can't resolve '../components/Newsletter' in 'C:\Users\Govindu\Desktop\gssoc\SCROLLME--ECOMMERCE-WEBSITE\src\pages'
ERROR in ./src/pages/Cart.jsx 7:0-42
Module not found: Error: Can't resolve '../components/Navbar' in 'C:\Users\Govindu\Desktop\gssoc\SCROLLME--ECOMMERCE-WEBSITE\src\pages'
ERROR in ./src/pages/Cart.jsx 8:0-54
Module not found: Error: Can't resolve '../components/Announcement' in 'C:\Users\Govindu\Desktop\gssoc\SCROLLME--ECOMMERCE-WEBSITE\src\pages'
ERROR in ./src/pages/Cart.jsx 9:0-42
Module not found: Error: Can't resolve '../components/Footer' in 'C:\Users\Govindu\Desktop\gssoc\SCROLLME--ECOMMERCE-WEBSITE\src\pages'
ERROR in ./src/pages/Home.jsx 5:0-54
Module not found: Error: Can't resolve '../components/Announcement' in 'C:\Users\Govindu\Desktop\gssoc\SCROLLME--ECOMMERCE-WEBSITE\src\pages'
ERROR in ./src/pages/Home.jsx 6:0-50
Module not found: Error: Can't resolve '../components/Categories' in 'C:\Users\Govindu\Desktop\gssoc\SCROLLME--ECOMMERCE-WEBSITE\src\pages'
ERROR in ./src/pages/Home.jsx 7:0-42
Module not found: Error: Can't resolve '../components/Footer' in 'C:\Users\Govindu\Desktop\gssoc\SCROLLME--ECOMMERCE-WEBSITE\src\pages'
ERROR in ./src/pages/Home.jsx 8:0-42
Module not found: Error: Can't resolve '../components/Navbar' in 'C:\Users\Govindu\Desktop\gssoc\SCROLLME--ECOMMERCE-WEBSITE\src\pages'
ERROR in ./src/pages/Home.jsx 9:0-50
Module not found: Error: Can't resolve '../components/Newsletter' in 'C:\Users\Govindu\Desktop\gssoc\SCROLLME--ECOMMERCE-WEBSITE\src\pages'
ERROR in ./src/pages/Home.jsx 10:0-46
Module not found: Error: Can't resolve '../components/Products' in 'C:\Users\Govindu\Desktop\gssoc\SCROLLME--ECOMMERCE-WEBSITE\src\pages'
ERROR in ./src/pages/Product.jsx 6:0-42
Module not found: Error: Can't resolve '../components/Navbar' in 'C:\Users\Govindu\Desktop\gssoc\SCROLLME--ECOMMERCE-WEBSITE\src\pages'
ERROR in ./src/pages/Product.jsx 7:0-54
Module not found: Error: Can't resolve '../components/Announcement' in 'C:\Users\Govindu\Desktop\gssoc\SCROLLME--ECOMMERCE-WEBSITE\src\pages'
ERROR in ./src/pages/Product.jsx 8:0-50
Module not found: Error: Can't resolve '../components/Newsletter' in 'C:\Users\Govindu\Desktop\gssoc\SCROLLME--ECOMMERCE-WEBSITE\src\pages'
ERROR in ./src/pages/Product.jsx 17:0-42
Module not found: Error: Can't resolve '../components/Footer' in 'C:\Users\Govindu\Desktop\gssoc\SCROLLME--ECOMMERCE-WEBSITE\src\pages'
webpack compiled with 20 errors and 1 warning
After compilation of frontend i am getting these errors but all the imports are correct only

@saurabhbakolia


Typing z and pressing TAB should expand to an entry which exists in the current directory

Typing z and pressing TAB should expand to an directory which exists in the current directory.
Perhaps the "Last Accessed" or some other FileSystem metadata can be used to determine if it's a valid candidate.

Do you mean that the items in the current directory should precede other expansion candidates?

That is correct


Lightcleaner console error

Using the latest BKCommonLib and Lightcleaner build from https://ci.mg-dev.eu
Server version 1.14.4
Error: https://pastebin.com/AaDcnLE0

no such class: it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap

This was caused by paperspigot moving the path of the class, it was fixed in BKCommonLib since then


Feature - flag to remove chests from LCB

Increase this to no easy money ie Remove all chests from dungeons and towns?


Proposal: Add FrameworkSetting.LastDisplayDevice

I'd like to ask for feedback here before implementing it:
Currently the last window mode, size and relative position are saved across restarts, but not the display the window was last on.
For example: If I position my window in the top right corner of my right screen and then close and reopen the program, I will end up with a window in the top right corner of my the center (primary) screen.
This also affects fullscreen, which is even worse because you can't just drag a fullscreen window to another screen.
I am not entirely sure how to identify the display. Should it be via the numeric DisplayDevice ID, the screen bounds or maybe just the window center location?
I'll open this to discussion, please let me know what you think :)
See also: #1909

Resolved by the referencing PR.


Make find_path_prefixed configurable

This makes find_path_prefixed more configurable allowing one to choose whether it always returns absolute paths, self-prefixed paths or to ignore local imports when building the path.
The config names are just thrown in here, taking better names if they exist :)
This should fix #6131 as well?

bors r+
:+1:


Obsoletion request:GO:0031098 stress-activated protein kinase signaling cascade,  GO:0051403 stress-activated MAPK cascade and regulation children

Dear all,
The proposal has been made to obsolete the following terms:

GO:0031098 stress-activated protein kinase signaling cascade
GO:0051403 stress-activated MAPK cascade (replace by: GO:0000165 MAPK cascade)
GO:0032872 regulation of stress-activated MAPK cascade (replace by: GO:0043408 regulation of MAPK cascade)
GO:0070302 regulation of stress-activated protein kinase signaling cascade
GO:0032873 negative regulation of stress-activated MAPK cascade (replace by: GO:0043409 negative regulation of MAPK cascade)
GO:0070303 negative regulation of stress-activated protein kinase signaling cascade
GO:0032874 positive regulation of stress-activated MAPK cascade (replace by: GO:0043410 positive regulation of MAPK cascade)
GO:0070304 positive regulation of stress-activated protein kinase signaling cascade

The reason for obsoletion is that these terms represent protein names, and most/all of the protein annotated respond to stress, but also respond to other stimuli.
There are 159 annotations (including extensions) to these terms, see https://github.com/geneontology/go-annotation/issues/4930
Impacted groups:
BHF-UCL	7
CAFA	7
CGD	8
dictyBase	1
FlyBase	12
MGI	38
PomBase	12
RGD	12
SGD	3
UniProt	57
WB	1
For the above groups, no action is needed if you agree with the automated replacement.

1 Reactome mapping, 2 InterPro and 2 UniRule.

You can comment on the ticket:
Thanks, Pascale

Copy-pasting an e-mail exchange onto the ticket

I don’t think it is a good idea to obsolete these terms. The stress-activated signaling cascade is a well-known mechanism described in thousands of publications. It involves a specific family of protein kinases and it is really useful to build GO-CAM models.
We will definitively lose useful knowledge if we deprecate these terms. The stress response signaling are essential.
Thanks
Sylvain

I agree with Sylvain. Here is a case where a name that sounds protein-specific has been applied to a class, and we need the class, perhaps with additional comments on proper usage.
Peter

Thanks for the feedback. Can you point to a specific pathway that we could describe in the term definitions? I am happy to keep terms if they can be defined accurately. The current definition of stress-activated protein kinase signaling cascade is simply

The series of molecular signals in which a stress-activated protein kinase (SAPK) cascade relays a signal.

while other MAPK pathways are more more precise, for example: p38MAPK cascade:

A MAPK cascade containing at least the p38MAPK (MAPK14) MAP kinase, or Hog1 in yeast. It starts with the activation of a MAP3K, and the consecutive activation of a MPK2K and of p38MAPK. The cascade can also contain an additional tier: the upstream MAP4K. The kinases in each tier phosphorylate and activate the kinases in the downstream tier. The p38MAPK cascade is activated by stress signals, including hyperosmolarity, as well as by G protein-coupled receptors, growth factors, and cytokines, and results in cellular responses such as cell proliferation, cell differentiation, apoptosis and inflammation.

Also, looking at  annotations, it seems like SAPK often represents JNK, and there is a child of MAPK cascade that could be more appropriate: GO:0007254 JNK cascade. There are 67 EXP annotations to SAPK and stress-activated MAPK signaling, and at least 30 of these are to MAPK.
Again, I am happy to keep the term if we can clearly describe the pathway, and how it differs from the parent MAPK cascade.
Thanks, Pascale

I am removing the 'do not annotate' check on response to stress, to allow capturing this as an extension. After discussion we agreed that while this term is quite general, sometimes this describes the BP in which a protein is involved; more precise children would reflect the experimental details rather than the biology.

Annotation Review is out-of-date and was closed


add copy button to code example

Reorganization of the code to take into account the changes made by rehypePluginOptions so that the codeBlock is displayed in the same way as the others.

I would offset the button position vertically, it does not look aligned with the first line of code by default. I've added an example of a 4px negative margin-top attached.


Device buttons stopped working in latest Teams release

Previous behavior: Buttons on device could answer calls, end calls, mute/unmute both from Teams and device (status was synched between app and device)
Post release behavior: Device only works as microphone/camera, no interaction between buttons and app.
Logitech BCC950
Jabra PHS002W
Upgraded firmware on devices, no improvement.

@Bug-10, Could you please tell us which Teams build you are running on? Are you facing issue Teams desktop/Web or mobile?

Teams Desktop, two different users (each with one of the devices listed)
Both clients are running Microsoft Teams Version <IP_ADDRESS>67 (64-bit). It was last updated on 4/23/20 & 4/24/20.

@Bug-10 , Could you please try to update your Build version to latest , the build you are running is not latest one, Current public build for teams is running on Microsoft Teams Version <IP_ADDRESS>55 (64-bit) public ring. Or you can report a problem directly from help section

Microsoft Teams Version <IP_ADDRESS>58 (64-bit). It was last updated on 5/2/20
Confirmed that both devices are now working again.


Automated Github release in github actions

similar to #37 , when a release/ branch is merged into main, trigger a release of the artifact to Github Releases
the release tag, name, etc. should clearly indicate the build's version number, as pulled from version in build.gradle

closing because #45 was merged


Update dependency versions

Update dependency versions. Most notably a new version of retrofit (2.10.0)

No need to review these changes


services/horizon/internal/ingest: Move HistoryArchiveAdapter to internal horizon ingestion package

PR Checklist
PR Structure

[ ] This PR has reasonably narrow scope (if not, break it down into smaller PRs).
[ ] This PR avoids mixing refactoring changes with feature changes (split into two PRs
otherwise).
[ ] This PR's title starts with name of package that is most changed in the PR, ex.
services/friendbot, or all or doc if the changes are broad or impact many
packages.

Thoroughness

[ ] This PR adds tests for the most critical parts of the new functionality or fixes.
[ ] I've updated any docs (developer docs, .md
files, etc... affected by this change). Take a look in the docs folder for a given service,
like this one.

Release planning

[ ] I've updated the relevant CHANGELOG (here for Horizon) if
needed with deprecations, added features, breaking changes, and DB schema changes.
[ ] I've decided if this PR requires a new major/minor version according to
semver, or if it's mainly a patch change. The PR is targeted at the next
release branch if it's not a patch change.

What
Move HistoryArchiveAdapter to internal horizon ingestion package.
Why
As part of the effort for https://github.com/stellar/go/issues/3110 , we should try to make the public ingestion package easy to understand. The HistoryArchiveAdapter struct is just a tiny wrapper around historyarchive.ArchiveInterface. Having both historyarchive.Archive and HistoryArchiveAdapter is confusing.
It seems like the only reason HistoryArchiveAdapter is used is to make mocking GetState(ctx context.Context, sequence uint32) (io.ChangeReader, error) easy in the horizon ingestion unit tests.
For now, I have moved the HistoryArchiveAdapter implementations to the internal horizon ingestion package. But, I think we can get rid of the wrapper entirely and find some other way to inject a mock change reader into the horizon ingestion tests. I will leave that change for a future PR.
Known limitations
[N/A]

Could we move it to testing (_test.go) code?

Could we move it to testing (_test.go) code?

@2opremio the mock mockHistoryArchiveAdapter  implementation is in a _test.go file. historyArchiveAdapter is not in a _test.go file because it is still used by the ingestion system struct.

@2opremio the mock mockHistoryArchiveAdapter  implementation is in a _test.go file. historyArchiveAdapter is not in a _test.go file because it is still used by the ingestion system struct.


Implement ::set_matrix(), ::get_matrix() for Context and Pattern; also Context::transform()

Some functions I needed and that were not implemented yet.

👍 if cairo_pattern_get_matrix tested

Just a rebase/squash would have been ok. :-/


MNOWFREE Georgie Cooper Viral Leaks Video On Social Media X Twitter[1980K]

1 minute ago Georgie Cooper, MNOWFREE Georgie Cooper Viral Leaks Video On Social Media X Twitter[1980K]

Georgie Cooper's latest video has rapidly gained traction across various social media platforms, captivating audiences and igniting extensive discussions. This talented digital creator has garnered significant attention for her engaging content, particularly her recent Spiderman-themed video, which has gone viral. Viewers are actively seeking out where to watch the full video, with many turning to platforms like Instagram, Twitter (X), and Discord for access.
As the excitement surrounding Georgie Cooper continues to build, fans are sharing their reactions and enthusiasm online. The viral success of her video underscores the influential role social media plays in elevating creators to prominence. With her distinctive style and innovative approach, Katherinne has quickly established herself as a noteworthy figure in the digital arena, leaving audiences eager to learn more about her upcoming projects and content.

FG

vf

kjhkh

FG

vf

FG

vf

FG

vf

cxvxcvcxv


fix: Make DataGridColumn.Header and .HeaderTemplate a DirectProperty

What does the pull request do?
Change Header and HeaderTemplate to be a DirectProperty
What is the current behavior?
Both Properties are "normal" Propeties, so no Binding is supported
What is the updated/expected behavior with this PR?
Allow both Properties to be bindable
How was the solution implemented (if it's not obvious)?
Changed the properties to be a DirectProperty
Checklist

[ ] Added unit tests (if possible)?
[X] Added XML documentation to any related classes?
[ ] Consider submitting a PR to https://github.com/AvaloniaUI/Documentation with user documentation

Breaking changes
None
Obsoletions / Deprecations
None
Fixed issues
Fixes #7093

Hm, didn't thought that binding is useful here. But dynamic resource definitely is.

@maxkatz6 Binding is useful if you want to change the Header based on a Language which may change during runtime. At least for me it would be useful


Always train with GSE37418

Purpose: we need to force array study GSE37418 to always be in the training data set since our comparison tool (medulloPackage) uses it to train. We want to avoid data leakage! 💧
This PR:

adds a generic option for array or RNA-seq studies to force into training (utils/modeling.R)
when randomly assigning studies to train/test, get_train_test_samples() keeps the same parameter for proportion of studies going to train/test while also accounting for the forced training sets
includes "GSE37418" in training data in analysis_notebooks/baseline_models.Rmd

Questions I have:

What edge cases need to be accounted for?
What level of sanity check beyond what's already there is appropriate?

Thanks!

Thank you @jaclyn-taroni !


Hi all, how to add throwing object perturbation to mujoco simulation environment in order to train the stability of agents through reinforcement learning. Thank you everyone!

Hi, please feel free to open a post in the discussion forum with a better description of your problem.


Current Limitations

I am curious and would like to ask, what does the solution currently lack that can be found in other commercial step by step web services ?

there are several things! probably the easiest way to get a sample would be to look through the list of issues - a lot of the features there are features we want that already exist in other commercial step by step web services


Add scaladoc targeted at newcomers to type-derivation

As a fairly experienced programmer, but a newcomer to type-derivation and the terminology around Algebraic Data Types, I felt uncertain quite quickly when trying to use Magnolia, and would have found some Scaladoc helpful!
I'm not assuming that a developer would have to access rendered HTML scaladoc to get value from this additional documentation - for instance, the way I normally consume scaladoc is clicking through to the original library source code in my IDE, and reading the scaladoc next to the code.
In particular, I found these things puzzling as a newcomer, and have tried to provide explanation/context (which may be wrong!) on them:

What's the full list of methods needed to implement a derivation?
Why are they called join & split?
What would a typical way to implement them be - where are the examples of usage?

Some of the descriptions in the Scaladoc may look a little obvious or unnecessary to experienced users of the library - the wording may appear almost equivalent to the type signature of the method, but I do think spelling these things verbally is helpful to new users!

Awesome additions- thank you! :) We are definitely missing docs in other places as well, so if you see somewhere lacking, please let us know


Disallow illegal characters in chat

Description
This will disallow any illegal characters in chat.
It functions exactly the same as in the vanilla minecraft server, see net.minecraft.server.PlayerConnectiona(PacketPlayInChat packetplayinchat) net.minecraft.server.SharedConstants.isAllowedChatCharacter(char c0).

Testing
I tested by running "MinecraftClient.getInstance().player.networkHandler.sendChatMessage" on the client with ANSI escape codes, disallowed Unicode and '§'.

Checklist
Things need to be done before this Pull Request can be merged.

[x] Code is well-formatted and adheres to project style guidelines: cargo fmt
[x] Code does not produce any clippy warnings cargo clippy

Why should these be disabled? Can we have config for this?

@Bryntet Why should these be disabled? Can we have config for this?

They should be disabled because they can't be displayed and normally typed. Some like § are used for color formatting. Allowing \n will make it, so any player can clear the whole chat. Allowing ANSI escape codes and other codes could lead to compromise, see Weaponizing Plain Text: ANSI Escape Sequences as a Forensic Nightmare

@Bryntet Why should these be disabled? Can we have config for this?

They should be disabled because they can't be displayed and normally typed. Some like § are used for color formatting. Allowing \n will make it, so any player can clear the whole chat. Allowing ANSI escape codes and other codes could lead to compromise, see Weaponizing Plain Text: ANSI Escape Sequences as a Forensic Nightmare

Fair.

@Snowiiii Looks like you are working with an Outdated Minecraft source. I recommend using Fabric. There is no PlayerConnection and no SharedConstants.isAllowedChatCharacter

Updated my sources:
net.minecraft.server.SharedConstants.isAllowedChatCharacter(char c0) -> net.minecraft.SharedConstants.isAllowedChatCharacter(char p_136189_)
net.minecraft.server.PlayerConnectiona(PacketPlayInChat packetplayinchat) ->
net.minecraft.server.network.ServerGamePacketListenerImpl.handleChat(ServerboundChatPacket p_9841_)
nothing changed!
public static boolean isAllowedChatCharacter(char p_136189_) {
    return p_136189_ != 167 && p_136189_ >= ' ' && p_136189_ != 127;
}

@Snowiiii Looks like you are working with an Outdated Minecraft source. I recommend using Fabric. There is no PlayerConnection and no SharedConstants.isAllowedChatCharacter

Updated my sources:
net.minecraft.server.SharedConstants.isAllowedChatCharacter(char c0) -> net.minecraft.SharedConstants.isAllowedChatCharacter(char p_136189_)
net.minecraft.server.PlayerConnectiona(PacketPlayInChat packetplayinchat) -> net.minecraft.server.network.ServerGamePacketListenerImpl.handleChat(ServerboundChatPacket p_9841_)
nothing changed!
public static boolean isAllowedChatCharacter(char p_136189_) {
    return p_136189_ != 167 && p_136189_ >= ' ' && p_136189_ != 127;
}

Im pretty familiar with the Minecraft Code, And its pretty much looks like you still are using older sources than 1.21.3.
ServerGamePacketListenerImpl was renamed to ServerPlayNetworkHandler. The Methods you provided do not existi
Here are my Sources:
minecraft_version=1.21.3
yarn_mappings=1.21.3+build.2
loader_version=0.16.9
# Dependencies
# check this on https://modmuss50.me/fabric.html
fabric_version=0.108.0+1.21.3
``

Looks like its now in net.minecraft.util.StringHelper
 public static boolean isValidChar(char c) {
        return c != '\u00a7' && c >= ' ' && c != '\u007f';
}

Anyways. It does make sense. LGTM
Thanks @Commandcracker


Error: EPERM: operation not permitted, unlink puppeteer.dev_profile1\CrashpadMetrics-active.pma

Hello! I am testing out the puppeteer api, and the script I'm writing seems to crash partway through execution. Here is the error:
fs.js:1066
  return binding.unlink(pathModule._makeLong(path));
                 ^

Error: EPERM: operation not permitted, unlink 'puppeteer\.dev_profile1\CrashpadMetrics-ac
tive.pma'
    at Object.fs.unlinkSync (fs.js:1066:18)
    at fixWinEPERMSync (rimraf\rimraf.js:210:13)
    at rimrafSync (rimraf\rimraf.js:310:28)
    at rimraf\rimraf.js:341:5
    at Array.forEach (native)
    at rmkidsSync (rimraf\rimraf.js:340:26)
    at rmdirSync (rimraf\rimraf.js:333:7)
    at fixWinEPERMSync (rimraf\rimraf.js:208:5)
    at rimrafSync (rimraf\rimraf.js:310:28)
    at ChildProcess.chromeProcess.on (puppeteer\lib\Launcher.js:87:7)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR<EMAIL_ADDRESS>start: `node index.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR!      C:\Users\roshk\AppData\Roaming\npm-cache\_logs\2017-08-17T18_51_50_095Z-debug.log
PS D:\projects\okcupid-auto-unlike> node .\index.js
fs.js:1066
  return binding.unlink(pathModule._makeLong(path));
                 ^

Error: EPERM: operation not permitted, unlink 'puppeteer\.dev_profile1\CrashpadMetrics-ac
tive.pma'
    at Object.fs.unlinkSync (fs.js:1066:18)
    at fixWinEPERMSync (rimraf\rimraf.js:210:13)
    at rimrafSync (rimraf\rimraf.js:310:28)
    at rimraf\rimraf.js:341:5
    at Array.forEach (native)
    at rmkidsSync (rimraf\rimraf.js:340:26)
    at rmdirSync (rimraf\rimraf.js:333:7)
    at fixWinEPERMSync (rimraf\rimraf.js:208:5)
    at rimrafSync (rimraf\rimraf.js:310:28)
    at ChildProcess.chromeProcess.on (puppeteer\lib\Launcher.js:87:7)

I've tried removing the fs dependency from my project, that didn't work.
Smallest code snippet that shows the regression:
    var p = require("puppeteer");
    var fs = require("fs");
    p
      .launch({
        headless: false
      })
      .then(async browser => {
        try {
          let page = await browser.newPage();

          browser.close();
        } catch (e) {
          console.log("Error! ", e);
        }
      });

Looks like a duplicate of https://github.com/GoogleChrome/puppeteer/issues/298.


release: publish release artifact

GitHub's stability guarantee for the archive is iffy, and we want metrics on downloads. See https://github.com/bazel-contrib/SIG-rules-authors/issues/11#issuecomment-1412241948

oops, it's hard to remember to git add from the pool bar

I think you also need to change the path to the release snippet script in release.yml.