Problem with   firebase_admob: ^0.9.0+3

Hi guys we are having issue with the firebase_admob because of incompatibility of the library to AndroidX
here is the log of our build
flutter build apk --verbose

[ +360 ms] Running Gradle task 'assembleRelease'... (completed in 56.7s)
[        ] *******************************************************************************************
[        ] The Gradle failure may have been because of AndroidX incompatibilities in this Flutter app.
[        ] See https://goo.gl/CP92wY for more information on the problem and how to fix it.
[        ] *******************************************************************************************
[  +20 ms] "flutter apk" took 60,162ms.
[        ] "flutter apk" took 60,162ms.
Gradle task assembleRelease failed with exit code 1

#0      throwToolExit (package:flutter_tools/src/base/common.dart:28:3)
#1      _buildGradleProjectV2 (package:flutter_tools/src/android/gradle.dart:507:5)
#2      _asyncThenWrapperHelper. (dart:async-patch/async_patch.dart:77:64)
#3      _rootRunUnary (dart:async/zone.dart:1132:38)
#4      _CustomZone.runUnary (dart:async/zone.dart:1029:19)
#5      _FutureListener.handleValue (dart:async/future_impl.dart:126:18)
#6      Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:639:45)
#7      Future._propagateToListeners (dart:async/future_impl.dart:668:32)
#8      Future._complete (dart:async/future_impl.dart:473:7)
#9      _SyncCompleter.complete (dart:async/future_impl.dart:51:12)
#10     _AsyncAwaitCompleter.complete (dart:async-patch/async_patch.dart:28:18)
#11     _completeOnAsyncReturn (dart:async-patch/async_patch.dart:294:13)
#12     runCommandAndStreamOutput (package:flutter_tools/src/base/process.dart)
#13     _asyncThenWrapperHelper. (dart:async-patch/async_patch.dart:77:64)
#14     _rootRunUnary (dart:async/zone.dart:1132:38)
#15     _CustomZone.runUnary (dart:async/zone.dart:1029:19)
#16     _FutureListener.handleValue (dart:async/future_impl.dart:126:18)
#17     Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:639:45)
#18     Future._propagateToListeners (dart:async/future_impl.dart:668:32)
#19     Future._completeWithValue (dart:async/future_impl.dart:483:5)
#20     Future._asyncComplete. (dart:async/future_impl.dart:513:7)
#21     _rootRun (dart:async/zone.dart:1124:13)
#22     _CustomZone.run (dart:async/zone.dart:1021:19)
#23     _CustomZone.runGuarded (dart:async/zone.dart:923:7)
#24     _CustomZone.bindCallbackGuarded. (dart:async/zone.dart:963:23)
#25     _microtaskLoop (dart:async/schedule_microtask.dart:41:21)
#26     _startMicrotaskLoop (dart:async/schedule_microtask.dart:50:5)
#27     _runPendingImmediateCallback (dart:isolate-patch/isolate_patch.dart:116:13)
#28     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:173:5)

My Flutter doctor result
[✓] Flutter (Channel stable, v1.7.8+hotfix.4, on Mac OS X 10.14.5 18F132, locale en-PH)
[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
[✓] Xcode - develop for iOS and macOS (Xcode 10.2.1)
[✓] iOS tools - develop for iOS devices
[✓] Android Studio (version 3.4)
[✓] IntelliJ IDEA Ultimate Edition (version 2018.3.4)
[✓] VS Code (version 1.36.1)
[!] Connected device
! No devices available
! Doctor found issues in 1 category.
I hope someone already resolve this issue. I'm also willing to contribute to resolve this.

Switch to androidx

@miyoyo I already switched to androidx. The problem here is that firebase_admob is not yet compatible with androidx.

Thanks @miyoyo  created new project and it works!


@ giacomoni

Please explain the steps to install the INET as very brief is there in the Read Me of your project raynet; and the bash file which is provided where I have to run in the python environment or directly in omnet++ Ned file
Ray 1.13.0 is to install how, please share the steps.
Please share the info asap, and can you please share your email as this will be easy to contact you, I am in learning phase and
your this raynet project is fascinating :)

Hi @smohitm ,
I will resume development of this project in the coming weeks. As you correctly mentioned, the Readme needs updating and I will do that ASAP.
In the meantime, here is a description of the sytem in more detail: https://arxiv.org/abs/2302.04519
You can reach out at<EMAIL_ADDRESS>

Hi Luca,
Could you please share an update on the queries I have mailed you on<EMAIL_ADDRESS>Much obliged


[meta issue] FE E2E Testing

Detailed Description
We would like to have better E2E testing coverage for the Quartz Solar UI. Up until now, we have been using a tick list and human eyes to check the UI's functionality. It's time to automate!
We'd like to add E2E testing using Cypress tests for the following pages in the Quartz UI:

National & GSP PV Forecast
Delta View
Sites View
Dashboard Mode
4-hour View Mode

Context
Our FE has been lacking E2E testing and we are trying to catch up on the backlog and put in place a system for writing Cypress tests as we add new features.
Possible Implementation
It would be helpful to convert our current UAT list into E2E Cypress Tests.
General

[ ] does the page load?
[ ] is the version visible?
[ ] has the version been bumped?
[ ] Does the feedback button work?
[ ] Is the legend visible
[ ] Is the database stable, check on AWS

Auth

[ ] Can I log on with Auth?
[ ] Can i log out?

Quartz-specific points

[ ] Does the logo link to the new Quartz website?
[ ] Is the OCF logo present in the logo area?
[ ] Does the OCF logo link to the OCF website?
[ ] Does the Documentation link go to the new Quartz docs?

PV Forecast View
National

[ ] Does PV live estimate show on the plot? (black dashed)
[ ] Does PV live updated show on the plot? (black solid)
[ ] Does OCF forecast show up on plot? (yellow)
[ ] For OCF forecast, is the future a dashed line?
[ ] Can I hover on the plot to show the values on the plot?
[ ] Clicking on a GSP makes the GSP plot show up?
[ ] Clicking on a GSP when already selected, makes the GSP plot go away?
[ ] Can I click on a time in the national plot which then updates the map?
[ ] Can I click on a past time in the GSP plot which then updates the map?
[ ] Can I click on a future time in the GSP plot which then updates the map? – [expected; PVnet only runs 8h ahead for GSPs]
[ ] Check that map shading reflects PV data accurately.

Time

[ ] Is time now in Europe London time? It should be to the nearest 30 minute, rounded up.
[ ] Is the hover time in Europe London time?
[ ] Are the X axis in Europe London time?

Header

[ ] Is this the title clear it is National data?
[ ] Does the headline current estimated PV figure display?
[ ] Does it show the current Forecasted value?
[ ] Does the next forecast figure display?
[ ] Are the units GW?

Probabilistic Charts

[ ] Shading appears around the lines.
[ ] Plevel values in the tooltip are 0.0 or above.

GSP

[ ] Does PV live estimate show on the plot? (dashed black)
[ ] Does PV live updated show on the plot? (solid black)
[ ] Does OCF forecast show up on plot? (yellow)
[ ] For OCF forecast, is the future a dashed line?
[ ] Can I hover on the plot to show the values on the plot?

Time

[ ] Is time now in Europe London time?
[ ] Is the hover time in Europe London time?
[ ] Are the X axis in Europe London time?

Header

[ ] Does the GSP name show up?
[ ] Is the current estimated PV visible?
[ ] Is the next forecast figure visible?
[ ] Are the above figures in MW?

Probabilistic Charts

[ ] Shading appears around the lines.
[ ] Plevel values in the tooltip are 0.0 or above.

Map

[ ] Does a map of the UK show up?
[ ] Are the GSP boundaries displayed?
[ ] Can I click on '%', 'MW' and 'Capacity'
[ ] on 'Capacity' view, is there very little power in Scotland, and Melksham a shining beacon of renewables?

Four Hour View
National & GSP

[ ] Does the "4hr forecast" toggle show in the Profile Dropdown menu?
Toggle on

[ ] Does the 4hr forecast show up on the plot? (orange)
[ ] Does the 4hr future forecast show up on the plot? (dashed orange)
[ ] Does the 4hr forecast not show on the chart or tooltip when switched off?

Toggle off

[ ] Does the 4hr forecast not show on the chart or tooltip when switched off?
[ ] Does the 4hr future forecast not show on the chart or tooltip when switched off?

[ ] Does the 4hr forecast toggle persist across refreshes/logouts using cookie?
[ ] Do the 4hr forecast values show in the hover tooltip?

Delta View
National

[ ] Does PV live estimate show on the plot? (black dashed)
[ ] Does PV live updated show on the plot? (black solid)
[ ] Does OCF forecast show up on plot? (yellow)
[ ] For OCF forecast, is the future a dashed line?
[ ] Does the 4-hour forecast not show on the chart or tooltip when switched off?
[ ] Does the 4-hour future forecast not show on the chart or tooltip when switched off?
[ ] Does the 4-hour forecast show on the chart and tooltip when switched on?
[ ] Can I hover on the plot to show the values on the plot?

GSP

[ ] Clicking on a GSP makes the GSP plot show up?
[ ] Clicking on a GSP when already selected, makes the GSP plot go away?
[ ] Can I click on a time in the national plot which then updates the map?
[ ] Can I click on a time in the GSP plot which then updates the map?
[ ] Are values higher on the map in the middle of the day, compare to early morning?

Time

[ ] Is time now in Europe London time? It should be 30minute, but rounded up.
[ ] Is the hover time in Europe London time?
[ ] Are the X axis in Europe London time?
[ ] Does the data show yesterday as well?

Header

[ ] Is this the title clear it is National data?
[ ] Does the headline current estimated PV figure display?
[ ] Does it show the current Forecasted value?
[ ] Does the next forecast figure display?
[ ] Are the units GW?

Probabilistic Charts

[ ] Shading appears around the lines.
[ ] Plevel values in the tooltip are 0.0 or above.

GSP

[ ] Does PV live estimate show on the plot? (dashed black)
[ ] Does PV live updated show on the plot? (solid black)
[ ] Does OCF forecast show up on plot? (yellow)
[ ] For OCF forecast, is the future a dashed line?
[ ] Can I hover on the plot to show the values on the plot?
[ ] Does the data look like solar profiles?

Time

[ ] Is time now in Europe London time?
[ ] Is the hover time in Europe London time?
[ ] Are the X axis in Europe London time?

Title

[ ] Does the GSP name show up?
[ ] Is the latest forecast figure visible?
[ ] Is the next forecast figure visible? [not currently shown for space reasons]
[ ] Is the current GSP delta figure visible?
[ ] Are the above figures in MW?
[ ] Is the Delta block background colour correct, i.e. pos/neg delta colour scheme?

Map

[ ] Does a map of the UK show up?
[ ] Are the GSP boundaries displayed?
[ ] Where Deltas are available, do the correct colours for the GSP delta buckets display and match the table?

Combined views

[ ] Does selectedGSP persist when switching between PV Forecast and Delta Views
[ ] Does selectedTime persist when switching between PV Forecast and Delta Views
[ ] Does map location/zoom persist when switching between PV Forecast and Delta Views

Dashboard Mode

[ ] Does the Dashboard Mode toggle show in the Profile Dropdown menu?
[ ] Does the Dashboard Mode toggle persist across refreshes/logouts using cookie?

National

[ ] Do the National title and forecast values show in large font?
[ ] Are the lines on the chart thicker?

GSP

[ ] Do the GSP title and forecast values show in large font?
[ ] Are the lines on the chart thicker?

Legend

[ ] Is the legend larger?
[ ] Do the legend items space nicely?

Map

[ ] Is the map legend larger?
[ ] Are the MW/%/Capacity buttons larger?
[ ] Are the date/time larger?

Refresh

[ ] After 10 mins, does the forecast update?
[ ] After 10 mins, does the forecast creation time update? - No

Sites View

[ ]

Outside the Cypress testing scope
National Chart

[ ] Does the data look like solar profiles?
[ ] Does the data show yesterday as well?
[ ] Does the data show tomorrow as well?

GSP Chart

[ ] Does the data look like solar profiles?
[ ] Does the data show yesterday as well?
[ ] Does the data show tomorrow as well?

Delta Chart

[ ] Does the data look like solar profiles?
[ ] Does the data show yesterday as well?
[ ] Does the data show tomorrow as well?

Sites Chart

[ ] Does the data look like solar profiles?
[ ] Does the data show yesterday as well?
[ ] Does the data show tomorrow as well?

Possible Implementation
Write tests.

Here's how we can add it to CI, might need to create a .env from some repo secrets

did we managed to get cypress testing on development?


Upgrade helm chart fails

Describe the bug
Weave Helm Operator appears to be attempting an install when it should be attempting an upgrade.
To Reproduce
I have a Helm chart installed via a HelmRelease, referenced via a GitHub url. Works fine.
I updated the chart in GitHub to include an additional service/deployment.  I modified the values.yaml file.
When I look at the logs, Weave Helm Operator appears to attempt to install the new chart over the existing one. I expected it to attempt to upgrade the chart.  Consequently, since the helm release name is the same, I get the
a release named foo already exists.\\nRun: helm ls --all foo

error message.
Expected behavior
Upgrade the chart in place.
Logs
If applicable, please provide logs of fluxd or the helm-operator. In a standard stand-alone installation of Flux, you'd get this by running kubectl logs -n default deploy/flux.
Additional context
Add any other context about the problem here, e.g

Flux version: docker.io/weaveworks/flux:1.12.0
Helm Operator version: docker.io/weaveworks/helm-operator:0.8.0
Kubernetes version: v1.11.8-eks-7c34c0
Git provider: GitHub
Container registry provider: DockerHub

What is the status of the Helm release (helm status <release>)? My suspicion is that it failed and therefore Flux chooses to install rather than upgrade.

Ah. I see.
If I make a change to a helm chart that breaks the install, Weave Helm Operator does not revert the change.  So, the helm installation is left is a FAILED state.
I think that is not the desirable behavior.

We do this because rollbacks for stateful deployments can be dangerous, an enhancement has been described in #1960 and will be implemented in the future.

That would be great. Thanks

Is it okay if I close this issue and we continue tracking it in the one I mentioned above?

Yes thx
On Apr 26, 2019, 12:28 PM -0700, Hidde Beydals<EMAIL_ADDRESS>wrote:

Is it okay if I close this issue and we continue tracking it in the one I mentioned above?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.


Fine-tuning Script

Congratulations to DeepSeek for the wonderful work. I wonder if there is a script for fine-tuning DeepSeek-VL? Thanks!

Hi, thank you for your interest. We are currently busy iterating DeepSeek-VL. The community has already started supporting DeepSeek-VL (#10 ). Have fun!
https://github.com/modelscope/swift/blob/main/docs/source/Multi-Modal/deepseek-vl最佳实践.md

@RERV It seems as if swift does not support finetuning of the vision encoder.
Given that you are internally training deepseek VL somehow, could you provide training code snippets so that the community can work on an LLM and vision encoder finetuning script?

@RERV It seems as if swift does not support finetuning of the vision encoder (it seems that way from my quick glance over the source code, I hope I'm wrong)
Given that you are internally training deepseek VL somehow, could you provide training code snippets so that the community can work on an LLM and vision encoder finetuning script?

Internally we train DeepSeek-VL with hai-llm (as mentioned in the paper), which is a closed source training framework. We do hope to open source it someday, but that is a really big project, involving out training cluster configuration/management and other internal libraries. I'm afraid that we don't have any bandwidth working on it.

@soloice Hi, I see, thanks. Would it be possible to just release the backprop code of the vision encoder, no framework around it, no clustering, just a starting point for the community to work upon?

@soloice Hi, I see, thanks. Would it be possible to just release the backprop code of the vision encoder, no framework around it, no clustering, just a starting point for the community to work upon?

Well, I can describe how to do this briefly. Basically you don't need to write backprop code, because torch will take care of everything. Just set the requires_grad attribute will work:
for p in visual_encoder.parameters():
    p.requires_grad = True

What you really need to care about is distributed strategy. If you are using DDP or 3D parallel with TP=1, the above code is all you need; If you are using 3D parallel with TP>1, you will need to average the gradient of visual encoders on all tp ranks with an NCCL call looks like dist.all_reduce(p.grad, group=tensor_parallel_group) to make sure all tp ranks having the same gradient.

@soloice Thank you very much for the information!
Given the PyTorch grad, how would you go about training? In our use-case we need to add a bit of grounding by implementing a cursor as an output.
How would that look like high- and low level? Thank you for helping out

https://github.com/modelscope/swift/issues/543
Jintao-Huang implemented it!!! :D


feat: align player record rows

Align player record search view.
Before:

After:

seems good

should be online now


version dont update ./bin/deploy

Hi I was able to set up this web with al-folio thank you very much.
https://grjd.github.io/
But it is being a very tortuous process, when I modified pages they didnt update, ruby error messages  etc. This is most likely a problem with my own installation but now I am stuck and asking for help.
I have 3 branches in my github for this repo gh-pages, master and old-state (not sure if i need this at all). When I call to deploy i select source as old-state and destination gh-pages, so in old-state is where the "complete" site is. This is the public repo with the 3 branches  https://github.com/grjd/grjd.github.io/tree/gh-pages
But local in my com,puter it is left with this

I want to get in my local computer what it is in https://grjd.github.io/
and continue from that point.
I think maybe the ./bin/deploy messes things up, I am a bit confused.
Thank you!
Jaime

Not sure I understand the question and/or what is going on. I recommend re-installing the theme from scratch from the master branch since it was upgraded this past weekend. Then, carefully go through the Getting Started guide. If you have additional questions, please ask on gitter chat. Thanks.


Add dependency installation to notebook

for Blip Diffusion

i signed the Salesforce Inc. Contributor License Agreement, why i can't merge?
When i signed it, i got this: https://i.imgur.com/TgkTxpm.png
But when I refreshed the signing page i got this: https://i.imgur.com/Cs4lUuU.png
But the GitHub bot says that i need to sign it: https://i.imgur.com/crzcDul.png
What the hell is going on? When can you fix it?


Extract Services out in their own modules so they can be plugged-in as needed

Currently, services are part of the bigger core module. It would be beneficial to extract each of them in their own separate modules so they can be plugged-in as needed.
Example use case - Some services like PeriodicWorkService are needed if Disk Buffering is used (to export spans stored in disk to backend). If users/ vendors implement their own disk buffering mechanism, they do not need this service.
There are mainly 4 services (AppLifecycle, VisibleScreenService, CurrentNetworkProvider, PeriodicWorkService) and 2 classes (CacheStorage and Preferences). Objects are created from the 2 classes and the objects can be obtained from the service interface but they're not really services.

CacheStorage is also only used for disk buffering. I think this can perhaps to moved to the module hosting disk buffering related stuff (under persistence which hosts DiskManager which is the only place it is used right now in).
Preferences can be provided as a generic utility class maybe via the common module. Right now  it is used only in DiskManager for storage and retrieval of  MAX_FOLDER_SIZE_KEY),

Following bullets cover what instrumentations rely on what services for more clarity, so we know not all instrumentations require all services

ANR -> AppLifecycle
Activity / Fragment Lifecycle -> VisibleScreenService
NetworkChangeMonitor -> AppLifecycle and CurrentNetworkProvider

Currently, services are housed under core -> internal -> services
Changes proposal:

Preferences can be made a generic utility class instead of being a service. It can be moved from core -> internal -> services -> Preferences.java to  core -> Preferences.java or  core -> common -> Preferences.java. It's creation can be done directly from the two places from where ServiceManager.initialize is called - OpentelemetryRumBuilder.build() and OpentelemetryRumBuilder when Sdk is Pre Configured (This should probably be moved inside the SdkPreConfiguredRumBuilder class itself). Preferences.java can provide a singleton Preferences object wherever needed.

CacheStorage: Same as above. It can also be moved to core -> internal -> features -> persistence where DiskManager lives, if we don't perceive it would be required in common module for wider usage.

ServiceManager : ServiceManger, ServiceManagerImpl can be housed in a new module under root: service - > service-manager. I think we can expose ServiceManger and ServiceManagerImpl as well for the users who want all 3 services. The android-instrumentation module proposed in the linked issue will depend on this as InstallationContext needs the ServiceManager.

Startable interface: It need to be housed separately to service-manager as otherwise it would lead to a circular dependency - as all services implement the Startable interface and will depend on this module, but if it were housed inside service-manager which also needs to depend on individual services for the getXService() functions, that leads to a circular dependency. May be we can house this under service -> common. ServiceManager also implements the Startable interface

New modules for all 3 services - AppLifecycle, VisibleScreenService, CurrentNetworkProvider can be housed under service -> app-lifecycle; service -> visible-screen; service -> network-provider.

NOTE - One major problem in the above approach is: All instrumentations need InstallationContext (new android-instrumentation module), that module needs service-manager module due to the 3rd argument in InstallationContext  of ServiceManager. And service-manager needs dependence on all services due to the getXService() functions. So, in turn anyway all instrumentations depend on all services. So, I think the solution here could be to define another AutoService interface for these services and then we can load and get services without actual class names in the ServiceManager. Similar style to AndroidInstrumentationLoader -  getInstrumentationByType() or getAllInstrumentation() methods.
Some other classes from core that are used in these services and any other improvements:

RumConstants - It lives in core -> common folder right now, that can be made a module. or just a common module in root.
Slow rendering depends on VisibleScreenService just for the DefaultingActivityLifecycleCallbacks class. May be instead of this, directly the super class can be implemented in slow rendering itself.
I also noticed, some modules depend on common-api module un-necessarily like the slow rendering one.

This is an initial draft. Would be thinking through if it fits all our use cases and refining it more as needed. Do share your feedback on any of it.

A lot of what's mentioned here makes a lot of sense, although before making any final decisions on the matter, I'd like to point out some aspects of "services" to clarify how they are supposed to help us in general, hoping that we can come up with a solution that would still allow us to rely on them for future use cases.
What are Services and why we need them

Services are helper classes that do either very common tasks or that need to access Android SDK apis. Since Android SDK apis change quite often, and we need to support a wide range of OS versions, having a single place we can make calls to whenever we need to access those apis, such as a service, gives us a lot of flexibility and stability, since we wouldn't have to change many places in our code whenever a new API change is available (because all of them would be done in the service only), while we can still create our own functionality to cover use cases that aren't supported on older OS versions in a way that's the rest of our codebase wouldn't need to even know which OS it is running on, reducing the amount of code repetition and probably even device's resources, in case a service makes use of an API that requires storing some value in memory and/or if we can use memoization to reduce the amount of OS API calls needed to get the same result, such as the network connectivity status for example.
The term "service" might be a bit confusing since it could be interpreted as a long-running process that needs to be started/stopped and that is constantly consuming resources to keep itself running. However, for most of them, that's not the case. They are essentially reusable helper classes, the idea of using the term "service" was to align with Android's "global tools" also called services. You can find more info on those here. In any case, if using "service" provides a wrong idea of them not being lightweight or the like, then I'm open to find a new "grouping term" for them.

Potential issues we should avoid when doing the refactor
Difficult to reuse
Services are meant to be reused, for different reasons which can vary depending on the scope of each service, so I think we need to try and take a look at how we can easily reuse them for future cases.
For example, let's consider PeriodicWorkService. This service is helpful to manage a queue of background work that can be repeated, in a way that reduces the amount of resources that might be needed should we needed to do this from different parts of our agent. For now, it's only used to run periodic exports from the disk by the disk buffering tool, however, most likely in the future we will also require to run periodic network requests to fetch the real time from an NTP server so that distributed tracing works well. If we can reuse PeriodicWorkService for that purpose, not only we wouldn't have to come up with a custom mechanism each time we need to run these kinds of tasks in the background, but also we would be managing the agent's resources better as we can decide from a single place how many secondary threads we would like it to spawn at a time.
For the same use-case of the previous example, we might also need to use the Preferences service, to store the current NTP time and avoid making too many requests to fetch it if it's not needed.
Based on the above, one of my concerns with some of the proposed changes would be that we might move some of the services code, or full classes, to the places where they are needed right now, making it difficult to reuse those tools for future cases.
Easy to overlook
Having the available services in a single place is useful to get an idea of what's available at any time, kind of having a toolbox when working on a DIY project. I think this can still be accomplished when splitting services into micro-modules, so long as those modules are placed in a single dir. Failing to somehow provide visibility to existing services might cause issues in the future where people start reinventing the wheel in the best case and consuming resources unnecessarily in the worst.
Difficult to escalate and maintain
If we decide to place each service in its own micro-module, we might eventually run into a scenario where we get too many modules to maintain, maybe it won't be too much trouble since we use gradle file conventions, though I think it's worth mentioning it just to make sure there's no problem with that, or if maybe we can alternatively group some services if needed to reduce the amount of modules. Also, if it's needed to create a new module just to add a new service I'd be concerned about people deciding to quickly write the code they need in the module they're working on to avoid having to set up a full module, a process that requires creating a set of dirs and files that maybe some people aren't familiarized with. If that ends up happening, then we would lose the benefits of keeping our tools in a single place.
Final thoughts
I think there's a lot of room for improvement for services and I'm up to make changes to them as needed as long as they can still provide the benefits of sharing global tools easily. Probably one way to start could be by trying to see what future usages we might need for them and making sure that those will be easy to accomplish, and for those which we can't think of future usages for now, I think we should come up with a well-documented process of how to make them "globally accessible" if needed in the future.

Thanks @LikeTheSalad for your detailed review of the proposal and for explaining the points so clearly! :)
A few take-a-ways and some additional thoughts to carry our discussion forward:

I think the 1st and easy step (if there isn’t a better approach in the short-term) could be taking services directory out as-is as a separate module under root, core depends on it, all instrumentation depend on it.
Renaming “service” word and associated terminologies wherever applicable in these. May be reduce the two steps of create and start in these services to just one, if possible?
Conditional start/initialization of these services based on whether they’re needed or not in core to reduce any unnecessary overload. For example - If I do not enable network change detection instrumentation and don’t need current network attributes in any of my spans, I shouldn’t start the CurrentNetworkProviderService.

Open questions:

How to strike a balance between too many micro-modules vs having to depend on additional services even if you do not utilize them, while avoiding the issues @LikeTheSalad has mentioned in prior comment?

Can dependency injection tools like Dagger/ Hilt help here? I have not worked with those but will look into how they work.

The idea I got from the latest SIG meeting was that, as a nice first step, we could extract all services into their own module. Also, we should ensure that services are lazily initialized, preventing unnecessary initialization for environments where they'll never be used. Plus, we should try and keep all the services internal to avoid having to maintain them as a public API.

Building on top of what we've discussed so far here and in the sig meeting:

Keep ServiceManagerImpl as a public API (rename it to perhaps SharedUtilsService /  SharedUtilsProvider). This would be the shared utility object provider. Utility objects will be lazily created (we do not need a separate start step) when getXUtil() method is called and stored in a mutable map for later access.
We don't need ServiceManger interface as we're not exposing these utils as public APIs and don't expect any other implementation of them or the SharedUtilsProvider
All util packages are in the internal folder in the new module. SharedUtilsProvider would be the only class outside the internal  folder.
InstallationContext contains a SharedUtilsProvider object. All instrumentations call the relevant getXUtil() method on that object.

Let me know what you all think!

Per what we talked about during the SIG meeting, I summarized my thoughts on this in #702.
tl;dr, I think we should support using the instrumentation independently, but do it in such a way that we don't expose any public API or use the service locator pattern to allow apps to provide their own implementation of services.


Release a first version for notation core go

It's time to release a first version for Notation core go

[x] Decide on main commit for this release
[x] Decide on a tag name for this release
[x] Cut branch named with the tag name based on agreed upon main commit
[x] Cut a tag

@gokarnm @iamsamirzon @dtzar @SteveLasker @FeynmanZhou @shizhMSFT

notation-core-go v0.1.0-alpha.1 released. https://github.com/notaryproject/notation-core-go/releases/tag/v0.1.0-alpha.1


Can I watch my pin change with streaming?

watch :pin => 21 do
end
It seems to be "event type"
example)
1
0
1
0
but I want to use "streaming type"
like this...
1
1
1
1
1
0
0
1
1
1
1
1
can you help me?

Hi rubyon,
as it seems to be a bit resource heavy, you can achieve this by looping with a file.read. You should take inspiration in Platform#pin_wait_trigger
      def pin_wait_trigger(pin, trigger)
        fd = File.open(pin_value_path(pin), "r")
        pin_set_edge(pin, :both)

        value = pin_read(pin)
        loop do
          fd.read
          IO.select(nil, nil, [fd], nil)
          last_value = value
          value = pin_read(pin)
          if last_value != value
            next if trigger == :rising and value == 0
            next if trigger == :falling and value == 1
            break
          end
        end
      end

but you will get a new bit (or byte) sychroneously with the internal clock (a few MHz)


Add keynote speaker titles & abstracts

https://docs.google.com/document/d/103w9q7N3qz6qEz_BgyRROA7G5mg7u3rOm6yvMFy-eXI/edit#

The available keynote speaker title & abstracts have been added. Will leave this open until the remaining get added and are updated.

@briangow Danielle's title and abstract are now available:
Title:
Understanding Heterogeneity as a Route to Understanding Health
Abstract:
Machine learning presents an opportunity to understand the patient journey over high dimensional data in the clinical context. This is aligned to one of the foundational issues of machine learning for healthcare:  how do you represent a patient state. Improving state representations allows us to (i) visualise/cluster deteriorating patients, (ii) understand the patient journey and thus heterogeneous pathways to improvement or clinical deterioration which encompasses different data modalities; and thus (iii) more quickly identify situations for intervention. In this talk, I present motivating examples of understanding heterogeneity as a route towards understanding health and personalising healthcare interventions.


.primaryKey() isn't picked up when updating an existing table.

Creating a new table on our schema:
export const testTable = pgTable("test", {
  id: uuid("id")
    .default(sql`extensions.uuid_generate_v4()`)
    .notNull()
    .primaryKey(),
  name: text("name"),
});

Correctly generates the sql migration (With PRIMARY KEY):
CREATE TABLE IF NOT EXISTS "test" (
	"id" uuid PRIMARY KEY DEFAULT extensions.uuid_generate_v4() NOT NULL,
	"name" text
);

But if I start with the following schema
export const testTable = pgTable("test", {
  name: text("name"),
});

And then add the id property, I get the following migration (Nothing about the primary key):
ALTER TABLE "test" ADD COLUMN "id" uuid DEFAULT extensions.uuid_generate_v4() NOT NULL;

I would expect the sql migration to also set id as the primary key, but I had to manually add the following SQL statement to our migration:
ALTER TABLE "test" ADD PRIMARY KEY ("id");

Sharing it here so that others can be aware of it, and hopefully be fixed!
Environment:

Adapter drizzle-orm/pg-core
Command: drizzle-kit generate:pg
drizzle-kit: v0.19.12
drizzle-orm: v0.27.2

can't reproduce it on latest(0.30.0+), if you still see this issue, please reopen this ticket


Error: "TypeError: window.location.toString is not a function"

The issue has been reproduced here:
https://github.com/jsnanigans/hammerhead_testcafe_error
What is your Test Scenario?
Speculation: A iframe is focused, the iframe sends a message to the main window, the main window closes the iframe before testcafe can focus the main window.

A Iframe is opened where the user enters some data and clicks on submit, then the iframe is redirected with 307 to where some javascript sends a postMessage to our host window which closes the iframe. After the iframe is closed and this error occurs something in the redux dispatch or in the react core breaks and the state is not updated/the app is not re-rendered.
After some debugging we found that it might have something to do with hammerhead.js internals and some focus method.
Important things to note here are that this happens if the iframe has a src (like in this example) or has no src attribute (like in our application)

What is the Current behavior?
error is thrown and prevents react from rendering
What is the Expected behavior?
the main window is focused in testcafe and continues as usual
What is your web application and your TestCafe test code?
The issue has been reproduced here:
https://github.com/jsnanigans/hammerhead_testcafe_error
Steps to Reproduce:

clone repo: https://github.com/jsnanigans/hammerhead_testcafe_error
run npm install
run npm start to start the local server on port 3000.
run testcafe -c 1 chrome tests/Sample.ts --skip-js-errors to start testcafe.
when the test stops for debugging, open the console in the browser, there you will see the error.

Your Environment details:

testcafe version:                   1.6.1
node.js version:                    v12.11.1
command-line arguments:  testcafe -c 1 chrome tests/Sample.ts --skip-js-errors
browser name and version:  Google Chrome Version 78.0.3904.87 (Official Build) (64-bit)
platform and version:          macOS 10.14.6 (18G103)

Hello @jsnanigans ,
Thank you for submitting the issue. I've managed to reproduce it. We will research it and update this thread as soon as we have any results.


Analyze Code Action scenarios for performance issues

One performance related scenario we are looking into is Lightbulb scenarios for Razor.  For the various types of lightbulbs, please analyze (profile/etc.) the runtime of it looking for hotspots.  The key result here is a list of issues that could be fixed in future iterations, in particular with some understanding of how bad each issues is relative to the overall scenario.

Took the liberty of renaming this to match what they're called in LSP 😁

Benchmarks and improvements were made in #8133


Get pi_website online

Dynamically get ngrok url
Since the enhancement of incorporating ngrok into the pi website code it comes with a problem of how to dynamically get the ngrok auto generated url online without much hassle.
Therefore, there is a need to find a solution on how to get the ngrok auto generated url from the server side online for use to be able to see for them to access the server

Idea 1
send post request to github to try to get it online?

Idea 2 :)
Create a script which has a function that read and write the url into readme file and push readme file changes to github to display new url to github

Idea 2 :)
Create a script which has a function that read and write the url into readme file and push readme file changes to github to display new url to github

create auto update to readme
made a script to auto update the dynamic url when server have a fresh start to dynamically place it in readme file.
Things left to do:

Write a script to automatically send the updated read me file to github to update github with new readme file with the updated url.


Memcached and unicode

With SELECT2_MEMCACHE_HOST enabled I get error "memcache.MemcachedStringEncodingError: Keys must be str()'s, not unicode.  Convert your unicode strings using mystring.encode(charset)!"

@TheDeadOne I think that bug was introduced with python3 support. Do you feel comfortable enough to write a fix?

@TheDeadOne you can check out the cache branch. Which is the version 5 draft. I resolved the caching issue there. But I must remind you this is still experimental.


OSO-49 architecture refactor

It's a big PR with complete architecture refactor using hexagonal architecture pattern. It will allow to extend system more easily in the future and development should be cleaner and more effective.

Coverage remained the same at 100.0% when pulling 8adc64029f9c0d0ac71c7c4ddaf736b0fc30d40d on OSO-49-architecture_refactor into aa25af20d25058cf574c579cc96b57035a7df17f on dev.


Images in assets/img not displaying in content

Steps to reproduce

Download image to use to src/assets/img folder (example: login.svg)
Import logo using import LogSvg from<EMAIL_ADDRESS>Run yarn dev and import extension to Chrome
Logo not loaded properly - shows broken image as it is trying to fetch the image from the webpage instead

Hello @ShaunLWM,
I don't think it's a boilerplate problem. Rather a lack of documentation. Let's dive into the problem:
First of all, contentscript should understand that we want an image from our extension and not from a page. For that we should use chrome.runtime.getURL() function. It looks like this:
import logo from<EMAIL_ADDRESS>...
<img src={chrome.runtime.getURL(logo)} alt="logo" />

Oops, still not working. Check the errors in chrome-extension page and discover the line saying our image should be listed under web_accessible_resources in manifest. All right, let's do it. Open the manifest.ts file in our root directory and add this:
web_accessible_resources: [
    {
      resources: [
        ...
        'assets/svg/*.svg',
    }
]

After that, reload the extension and you should see your image.
TLDR:
You want to wrap your image imports in chrome.runtime.getURL() and list the folder with images in your manifest.ts under web_accessible_resources.
P.S. Mind that if you will try to import a png or jpg, you should add something like 'assets/png/*.png' to the list of resources.

Understood. Will have a look. Thank you so much for the detailed explanation, appreciate it.

how about other resources like a pdfs or so? I get compilation erros for those files.

                                         ^
2: 7H7@ݶ��6,7���P%7l7`♥��>7�7�↨��c7�7�5�S5�5,���67���k6�6�8��6►7���8↔7d7��1�2@�7�7 L�ئ7�7 ����7�7Ё�@�6.7�Ŷ�+7r7��↑7R7@��x7�7�F��Z7�7�,���6(7���`�7��� �6�6�z���67��� �6$7��0     7:7�Ͷ�*7h7♥�@�6↑7����6�6A���6�6]�@k6�61���6�6�����6�6�I���6�6s���6♦7���8�7�7p��H�7�7�v��47p7�♠��7<7Ѷ�j7�7�3��97r7 ♣� �7�7�<��7�7@m��♣7.7@����7�70��y7�7�,���7�*8�·<�7�79���7§8`��P�6∟7����4�4��  5`5д4��►6H6۵��5 6���$6h6�v5�5:�05@���5�5�����4�����������A6�6� n6�6�/���506���J6�6§��4�2`§6X6۵��6�6�F�►�6�6i��6�6�D�`�6�6t���43��22[8@�8(♣���7�8►�6@6ѵ�[6�6$��W6�6!��46p6��@
3: 686ϵ�26�6♣�@-6h6☻��)6`6���!6X6�@R6�6∟�@M6�6↑���6�6�a�@�6�6l� �6�6D��6�6�>��6�6�����67�����6�6C�@6�6���6�6X��w6�6�7��d6�6*��6�6�a�Ч6�6x��K6�6�▬�@26x6�♦��m6�60�p4�4P��4�4h��45H��4�4h��4�4���45p��45H��4�4H��45X�P4�4@��45���4@5��j4�4@��45��x4�4@�Z4�4↑�v4�48��4 5���4�4h��45`��45h��4�4H��4�4p�<45�d4�4P�X4�4 F7@ն��67���►�6
transforming (4259) node_modules\lodash\_hashDelete.js

index.js:38     GET chrome-extension://bcjighfjikochhpeopamggdmdjcbfdid/assets/js/index.js net::ERR_FILE_NOT_FOUND
dynamicImport @ index.js:38
(anonymous) @ index.js:39
preload @ index.js:8
(anonymous) @ index.js:37
Show 4 more frames
Show less
/:1 Uncaught (in promise) TypeError: Failed to fetch dynamically imported module: chrome-extension://bcjighfjikochhpeopamggdmdjcbfdid/assets/js/index.js

@Zaniyar
Have you added the PDF extension to your resources?

@Jonghakseo I ended up using the vite plugin-url https://www.npmjs.com/package/@rollup/plugin-url to load binary files

@all-contributors please add @Araneline for question


Make catalogue view publicly accessible

It has been requested that people be allowed to browse the API Catalog without an account. Remove account checking method from API Catalog. Also, add a link to the Catalogue view from the front page.

@kyyberi We are selecting this task to sprint 18 as a step towards implementing #629.


Track expense - Categorize it - Email result shows up and it leads to not here page

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number: 1.4.63-6
Reproducible in staging?: Y
Reproducible in production?: N
Found when executing PR : https://github.com/Expensify/App/pull/38709
Logs: https://stackoverflow.com/c/expensify/questions/4856
Issue reported by: Applause-Internal team
Action Performed:

Go to staging.new.expensify.com
Go to FAB > Track expense.
Create a track manual expense.
Select Categorize it from the whisper.
Enter email in the search field.
Click on the email result.

Expected Result:
No result should show up when searching via email because this is only limited to workspace chat.
Actual Result:
Email result shows up and it leads to not here page when user clicks on it.
Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

Screenshots/Videos
https://github.com/Expensify/App/assets/115492554/7b4c8b46-78e6-4e84-a7ea-4de5c3ead3b5

View all open jobs on GitHub

@jliexpensify I haven't added the External label as I wasn't 100% sure about this issue. Please take a look and add the label if you agree it's a bug and can be handled by external contributors.

@ishpaul777 @shubham1206agra @thienlnam Are you able to look into this one?

I think this is #vsb, as it deals with tracking expenses.

I also have a fix up that should fix this as well, it's the reportPreview to use the passed parameters


Added start/stop capabilities through http

Small enhancement to add express to enable a start/stop mechanism for the simulators through a small web page.

@jdurnwald: I think we need to discuss the overall goals you want to reach here:

Once deployed on CF, stopping or starting the simulator is a matter of starting or stopping the app;
Doing actions on a running simulated CS need to use the UI service already implemented.

The purpose of the current UI is to avoid CLI usage for local simulator usage?

The simulator is being used to assist in demonstrations of the E-Mobility solution to customers by any number of our presales community. The challenge is that they may not have access to the admin level of the app in BTP in order to stop and start it. So, the question is why they would need to do that? There is a root problem that hasn't been resolved in that the simulator will stop pushing data after a period of time (unsure of the amount the time it takes) when running in BTP

The automatic transaction generator (ATG) is configurable at charging station template level:
"AutomaticTransactionGenerator": {
    "enable": false,
    "minDuration": 60,
    "maxDuration": 80,
    "minDelayBetweenTwoTransactions": 15,
    "maxDelayBetweenTwoTransactions": 30,
    "probabilityOfStart": 1,
    "stopAfterHours": 0.3,
    "stopOnConnectionFailure": true,
    "requireAuthorize": true
  }

If the issue is that the stopAfterHours is reached, then it needs to be configured to 3650 for 10 years, or something like an unlimited ATG run feature need to be added.
If the issue is something else, it needs to be reported here as an issue to be analysed and fixed.

and the only current manner to mitigate that is to restart the app itself. This is being done manually by our demo team several times a day. If this were to be resolved, then a restart mechanism would not be necessary.

The workaround is acceptable if the main issue is too difficult to fix. But an exhaustive bug report need to done first, so the project have a chance to fix the root cause.
Thanks.

The simulator is being used to assist in demonstrations of the E-Mobility solution to customers by any number of our presales community. The challenge is that they may not have access to the admin level of the app in BTP in order to stop and start it. So, the question is why they would need to do that? There is a root problem that hasn't been resolved in that the simulator will stop pushing data after a period of time (unsure of the amount the time it takes) when running in BTP

The automatic transaction generator (ATG) is configurable at charging station template level:
"AutomaticTransactionGenerator": {
    "enable": false,
    "minDuration": 60,
    "maxDuration": 80,
    "minDelayBetweenTwoTransactions": 15,
    "maxDelayBetweenTwoTransactions": 30,
    "probabilityOfStart": 1,
    "stopAfterHours": 0.3,
    "stopOnConnectionFailure": true,
    "requireAuthorize": true
  }

If the issue is that the stopAfterHours is reached, then it needs to be configured to 3650x24 for 10 years, or something like an unlimited ATG run feature need to be added. If the issue is something else, it needs to be reported here as an issue to be analysed and fixed.

and the only current manner to mitigate that is to restart the app itself. This is being done manually by our demo team several times a day. If this were to be resolved, then a restart mechanism would not be necessary.

The workaround is acceptable if the main issue is too difficult to fix. But an exhaustive bug report need to be done first, so the project have a chance to fix the root cause.
Thanks.

After talking again with the team, when demonstrating the solution, the presenter will sometimes want to stop the simulator to mimic unexpected downtime (blackouts) and how the solution responds to that.  So, again, the presenter will not have admin access to BTP to do that and this is the point of the manual restart capability.
Hope this helps to clarify.
Jeff.

After talking again with the team, when demonstrating the solution, the presenter will sometimes want to stop the simulator to mimic unexpected downtime (blackouts) and how the solution responds to that. So, again, the presenter will not have admin access to BTP to do that and this is the point of the manual restart capability.
Hope this helps to clarify.

That PR can merged even if to reach that goal, the proper way to do it is to use the UI service under development.
But for the merge to happen, you have to:

address review comments;
fix merge conflicts;
fix GitHub CI actions issues.

Thanks for the merge.  Are the CI failures minimal?


winch: Ensure correct handling of libcalls

This commit fixes a fuzz bug where modules involving known libcalls would fail to compile given that they were unconditionally treated as colocated libcalls.
This bug is only reproducible in non sse41 environments, given that some operations like floor default to libcalls in this case. The use_colocated_libcalls setting is not configurable within Wasmtime and as such, they should be loaded into a register prior to emitting the call. This will also ensure that the right 8-byte absolute relocation is used.

I'm unsure if there's an additional way to test this one aside from the filetests.


Wish list

[ ] Clear cache to remove objects drawn in previous sessions, which seem to load in new windows, I just fired up a new window and had these objects sat there, how to remove?

[ ] Slightly nicer aesthetics + padding, worthwhile if possible
[ ] Instructions

Would a trash can tool on the right help?

Yes, the problem with relying on clicking on unwanted objects is that they can be hard to find.

Should we change the "Save" / "Delete" style in the bottom form to be more prominent?

Not sure, worth a try!

Do you want a way to "clear" the entire map? The danger there is that the user might lose all their work, so maybe we need to prompt them first and remind them to save to geojson

Good point. A warning saying "Remove all data. Are you sure?" should solve that.

I've added a "Start over" button. Instructions and padding have also been improved, so closing this for now.


Function names cannot be keywords

Summary
A function name must be a T_STRING token (or whatever its equivalent is in this parser).
Sample code:
function empty() {}
Expected
Parse error: syntax error, unexpected 'empty' (T_EMPTY), expecting '('
Actual
No error.

You may not redeclare global function.

https://3v4l.org/90mgr
It is still a parse error which should be detected. To contrast,  function strlen($s) {} would not be a parse error, but evaluation would result in a PHP error at runtime.
Also to note: empty is a valid name for a class method in PHP 7

@jens1o empty is a language construct, not a function

Nice catch :)


Style: New fonts in OpenPype style

Description
Current main font of OpenPype style does not work properly in Qt.
Changes

removed fonts: Spartan, Montserrat, RobotoMono
added new fonts: Noto Sans, Noto Sand Mono
replaced usage of removed fonts with new ones

The new fonts are much better, especially in terms of alignments, however, all text is now quite a bit smaller. It's to the point of being uncomfortable. I think we should bump the sizes up a bit

.


Please help me to figure out how to connect to huawei switches using scrapli

Hello Carl,
the normal login to a huawei switch 5720 looks like:
14:23 $ ssh<EMAIL_ADDRESS>User Authentication
Password:

Info: The max number of VTY users is 20, and the number
      of current VTY users on line is 1.
      The current login time is 2020-05-26 16:33:54+03:00.
<shab-4a-stack1>
<shab-4a-stack1>system-view
Enter system view, return user view with Ctrl+Z.
[shab-4a-stack1]

first prompt <shab-4a-stack1> is exec or privilege_exec level
and the second prompt [shab-4a-stack1] is configuration level
in the tweets you suggested to use IOSXEDriver with custom privilege levels.
I read the docs and all the examples but didn't find the way privilege_levels could be augmented.
then I opened up the IOSXEDriver code and have found the privilege_levels property. So I'm trying to play with it. But with no luck.
this is my code
import logging
import time
from scrapli.driver import GenericDriver
from scrapli.driver.core import IOSXEDriver
from scrapli.driver.network_driver import PrivilegeLevel
logging.basicConfig(filename="scrapli.log", level=logging.DEBUG)
logger = logging.getLogger("scrapli")

def main():
    PRIVS = {
    "exec": (PrivilegeLevel(r"^[<a-z0-9.\-@()/:]{1,48}[#>$]\s*$", "exec", "", "", "", False, "",)),
    "privilege_exec": (
        PrivilegeLevel(
            r"^[<a-z0-9.\-@()/:]{1,48}[#>$]\s*$",
            "privilege_exec", "exec", "disable", "enable", True, "Password:", )),
    "configuration": (
        PrivilegeLevel(
            r"^\[[a-z0-9.\-@/:]{1,32}\]$",
            "configuration", "privilege_exec", "quit", "system-view", False, "", )),
    }

    mydevice = {
        "host": "<IP_ADDRESS>",
        "auth_username": "ansible",
        "auth_password": "ansible",
        "auth_strict_key": False,
        "ssh_config_file": True,
        "timeout_socket": 20,
        "timeout_transport": 20,
        "privilege_levels": PRIVS
    }

    conn = IOSXEDriver(**mydevice)
    conn.open()
    print(conn.get_prompt())
    print(conn.send_command("display version").result)
    conn.close()

if __name__ == "__main__":
    main()

The Error:
Exception has occurred: EOFError
End Of File (EOF). Exception style platform.
  File "/home/nryzhkov/rocket/branch/rocket.bot/backend/huascrapli.py", line 40, in main
    conn.open()
  File "/home/nryzhkov/rocket/branch/rocket.bot/backend/huascrapli.py", line 47, in <module>
    main()

and the scrapli.log output:
INFO:driver:Opening connection to <IP_ADDRESS>
INFO:transport:Attempting to authenticate to <IP_ADDRESS>
INFO:transport:Attempting to open session with the following command: ['ssh', '<IP_ADDRESS>', '-p', '22', '-o', 'ConnectTimeout=20', '-o', 'ServerAliveInterval=20', '-l', 'ansible', '-o', 'StrictHostKeyChecking=no', '-o', 'UserKnownHostsFile=/dev/null', '-F', '/etc/ssh/ssh_config']
DEBUG:transport:Session to host <IP_ADDRESS> spawned
DEBUG:transport:Attempting to authenticate. Read: b"Warning: Permanently added '<IP_ADDRESS>' (RSA) to the list of known hosts.\r\r\n"
DEBUG:transport:Attempting to authenticate. Read: b'User Authentication\r\r\nPassword: '
INFO:transport:Found password prompt, sending password
DEBUG:transport:Attempting to determine if PTY authentication was successful
DEBUG:transport:Attempting validate authentication. Read: b'\r\n'
DEBUG:transport:Cannot determine if authenticated,
        Read: b'\n'
DEBUG:transport:Attempting validate authentication. Read: b'Received disconnect from <IP_ADDRESS> port 22:2: The connection is closed by SSH server\r\n\r\nDisconnected from <IP_ADDRESS> port 22\r\n'
DEBUG:transport:Cannot determine if authenticated,
        Read: b'\nReceived disconnect from <IP_ADDRESS> port 22:2: The connection is closed by SSH server\n\nDisconnected from <IP_ADDRESS> port 22\n'

No success and I'm not sure I'm moving in the right durection
Please can you help me to understand what am I doing wrong?

I think the overall approach you have going looks pretty reasonable, but it doesn't look like we are even getting far enough for the privilege levels to matter yet. But just as an FYI here is an example privilege level -- its a lot clearer with keyword arguments I think:
    "privilege_exec": (
        PrivilegeLevel(
            pattern=r"^[a-z0-9.\-@/:]{1,32}#$",
            name="privilege_exec",
            previous_priv="exec",
            deescalate="disable",
            escalate="enable",
            escalate_auth=True,
            escalate_prompt=r"^[pP]assword:\s?$",
        )
    ),

so for your "privilege exec" privilege level, I think you would probably want system-view instead of enable based on your output above -- this "escalate" argument is basically the command to send for scrapli to actually escalate into the targeted privilege level.
But unfortunately I dont think we are even getting that far yet.
'Received disconnect from <IP_ADDRESS> port 22:2: The connection is closed by SSH server\r\n\r\nDisconnected from <IP_ADDRESS> port 22\r\n' <- this makes me wonder a little bit what's going on... the server is clearly booting scrapli out but I'm not sure why. My first thought would be that auth is actually failing and the server just boots us out instead of re-prompting for a password or something, but without any Huawei experience thats really just a guess.
Does the prompt take a long time to show up after entering the password? Is it possible to test with ssh key auth instead of user/password so we can eliminate that portion of things just for testing?
Unfortunately I dont have any Huawei devices handy to test on, or any experience on them really at all so this may be a bit tough to troubleshoot.

I made an experiment by putting a wrong password. The result differs
Traceback (most recent call last):
  File "/home/nryzhkov/python/rocket.bot/backend/huascrapli.py", line 57, in <module>
    main()
  File "/home/nryzhkov/python/rocket.bot/backend/huascrapli.py", line 50, in main
    conn.open()
  File "/usr/local/lib/python3.6/dist-packages/scrapli/driver/driver.py", line 577, in open
    self.transport.open()
  File "/usr/local/lib/python3.6/dist-packages/scrapli/transport/systemssh.py", line 320, in open
    raise ScrapliAuthenticationFailed(msg)
scrapli.exceptions.ScrapliAuthenticationFailed: Authentication to host <IP_ADDRESS> failed

LOG:
INFO:driver:Opening connection to <IP_ADDRESS>
INFO:transport:Attempting to authenticate to <IP_ADDRESS>
INFO:transport:Attempting to open session with the following command: ['ssh', '<IP_ADDRESS>', '-p', '22', '-o', 'ConnectTimeout=20', '-o', 'ServerAliveInterval=20', '-l', 'ansible', '-o', 'StrictHostKeyChecking=no', '-o', 'UserKnownHostsFile=/dev/null', '-F', '/home/nryzhkov/.ssh/config']
DEBUG:transport:Session to host <IP_ADDRESS> spawned
DEBUG:transport:Attempting to authenticate. Read: b"Warning: Permanently added '<IP_ADDRESS>' (RSA) to the list of known hosts.\r\r\n"
DEBUG:transport:Attempting to authenticate. Read: b'User Authentication\r\r\n'
DEBUG:transport:Attempting to authenticate. Read: b'Password: '
INFO:transport:Found password prompt, sending password
DEBUG:transport:Attempting to determine if PTY authentication was successful
DEBUG:transport:Attempting validate authentication. Read: b'\r\n\r\n'
DEBUG:transport:Cannot determine if authenticated,
        Read: b'\n\n'
DEBUG:transport:Attempting validate authentication. Read: b'User Authentication\r\r\nPassword: '
CRITICAL:transport:Found `password:` in output, assuming password authentication failed
CRITICAL:transport:Authentication to host <IP_ADDRESS> failed

This time scrapli have found Password in the input. And have exited for a reason.

I've made another experiment - using a telnet transport
I'd say it was a success if I could use telnet in my application :)
The Code:
    priv_exec_pattern = r"^[<a-z0-9.\-@()/:]{1,48}[#>$]\s*$"
    config_level_pattern = r"^\[[a-z0-9.\-@/:]{1,32}\]$"
    PRIVS = {
    "privilege_exec": (
        PrivilegeLevel(priv_exec_pattern, "privilege_exec", "", "", "", False, "", )),
    "configuration": (
        PrivilegeLevel(config_level_pattern, "configuration", "privilege_exec", "quit", "system-view", False, "", )),
    }

    def huawei_disable_paging(conn):
        conn.channel.send_input(channel_input="screen-length 0 temporary")

    mydevice = {
        "host": "<IP_ADDRESS>",
        "auth_username": "ansible",
        "auth_password": "ansible",
        "privilege_levels": PRIVS,
        "transport": "telnet",
        "port": 23,
        "on_open": huawei_disable_paging,
    }

    conn = IOSXEDriver(**mydevice)

    conn.open()
    print(conn.get_prompt())
    print(conn.send_command("display version").result)
    conn.close()

LOG:
INFO:driver:Opening connection to <IP_ADDRESS>
DEBUG:transport:Session to host <IP_ADDRESS> spawned
DEBUG:transport:Attempting to determine if telnet authentication was successful
DEBUG:transport:PTY fd not ready yet...
..............................................
...almost 1700 lines with the same content....
..............................................
DEBUG:transport:PTY fd not ready yet...
DEBUG:transport:Authenticated to host <IP_ADDRESS> with password
INFO:channel:Attempting to send input: screen-length 0 temporary; strip_prompt: True
DEBUG:channel:Write: 'screen-length 0 temporary'
DEBUG:channel:Read: b'\n<shab-4a-stack1>'
DEBUG:channel:Read: b''
DEBUG:channel:Read: b's'
DEBUG:channel:Read: b''
DEBUG:channel:Read: b'c'
DEBUG:channel:Read: b''
DEBUG:channel:Read: b'r'
DEBUG:channel:Read: b''
DEBUG:channel:Read: b'e'
DEBUG:channel:Read: b''
DEBUG:channel:Read: b'e'
DEBUG:channel:Read: b''
DEBUG:channel:Read: b'n'
DEBUG:channel:Read: b''
DEBUG:channel:Read: b'-'
DEBUG:channel:Read: b''
DEBUG:channel:Read: b'l'
DEBUG:channel:Read: b''
DEBUG:channel:Read: b'e'
DEBUG:channel:Read: b''
DEBUG:channel:Read: b'n'
DEBUG:channel:Read: b''
DEBUG:channel:Read: b'g'
DEBUG:channel:Read: b''
DEBUG:channel:Read: b't'
DEBUG:channel:Read: b''
DEBUG:channel:Read: b'h'
DEBUG:channel:Read: b''
DEBUG:channel:Read: b' '
DEBUG:channel:Read: b''
DEBUG:channel:Read: b'0'
DEBUG:channel:Read: b''
DEBUG:channel:Read: b' '
DEBUG:channel:Read: b''
DEBUG:channel:Read: b't'
DEBUG:channel:Read: b''
DEBUG:channel:Read: b'e'
DEBUG:channel:Read: b''
DEBUG:channel:Read: b'm'
DEBUG:channel:Read: b''
DEBUG:channel:Read: b'p'
DEBUG:channel:Read: b''
DEBUG:channel:Read: b'o'
DEBUG:channel:Read: b''
DEBUG:channel:Read: b'r'
DEBUG:channel:Read: b''
DEBUG:channel:Read: b'a'
DEBUG:channel:Read: b''
DEBUG:channel:Read: b'r'
DEBUG:channel:Read: b'y'
INFO:channel:Read: b'\n<shab-4a-stack1>screen-length 0 temporary'
DEBUG:channel:Write (sending return character): '\n'
DEBUG:channel:Read: b''
DEBUG:channel:Read: b'\nInfo: The configuration takes effect on the curr'
DEBUG:channel:Read: b'ent user terminal interface only.'
DEBUG:channel:Read: b''
DEBUG:channel:Read: b'\n<shab-4a-stack1>'
INFO:channel:Read: b'\nInfo: The configuration takes effect on the current user terminal interface only.\n<shab-4a-stack1>'
INFO:driver:Connection to <IP_ADDRESS> opened successfully
DEBUG:channel:Write (sending return character): '\n'
DEBUG:channel:Read: b''
DEBUG:channel:Read: b'\n<shab-4a-stack1>'
INFO:driver:Attempting to acquire `privilege_exec` privilege level
DEBUG:channel:Write (sending return character): '\n'
DEBUG:channel:Read: b''
DEBUG:channel:Read: b'\n<shab-4a-stack1>'
DEBUG:driver:Current privilege level could be `privilege_exec`
DEBUG:driver:Determined current privilege level is one of `['privilege_exec']`
INFO:driver:Acquired requested privilege level `privilege_exec`
INFO:channel:Attempting to send input: display version; strip_prompt: True
DEBUG:channel:Write: 'display version'
DEBUG:channel:Read: b''
DEBUG:channel:Read: b'display v'
DEBUG:channel:Read: b'ersi'
DEBUG:channel:Read: b'o'
DEBUG:channel:Read: b'n'
INFO:channel:Read: b'display version'
DEBUG:channel:Write (sending return character): '\n'
DEBUG:channel:Read: b''
DEBUG:channel:Read: b'\nHuawei Versatile Routing Platform Software\nVRP '
DEBUG:channel:Read: b'(R) software, Version 5.160 (S5720 V200R008C00SPC5'
DEBUG:channel:Read: b'00)\nCopyright (C) 2000-2015 HUAWEI TECH CO., LTD'
DEBUG:channel:Read: b'\nHUAWEI S5720-52X-PWR-SI-ACF Routing Switch uptime'
DEBUG:channel:Read: b' is 188 weeks, 4 days, 2 hours, 19 minutes\n\nES5D'
DEBUG:channel:Read: b'2V52S003 0(Master) : uptime is 187 weeks, 4 days, '
DEBUG:channel:Read: b'4 hours, 38 minutes'
DEBUG:channel:Read: b'\n512M bytes DDR Memory\n241M bytes FLASH'
DEBUG:channel:Read: b''
DEBUG:channel:Read: b'\nPcb      Version :  VER.B\nBasic  BootROM  Versi'
DEBUG:channel:Read: b'on : 0208.0001 Compiled at Oct 20 2015, 09:23:09\n'
DEBUG:channel:Read: b'BootLoad  Version : 0208.0001 Compiled at Oct 29 2'
DEBUG:channel:Read: b'015, 21:49:52\nCPLD   Version : 010f \nSoftware Ve'
DEBUG:channel:Read: b'rsion : VRP (R) Software, Version 5.160 (V200R008C'
DEBUG:channel:Read: b'00SPC500)\nPWR1 information\nPcb      Version : PW'
DEBUG:channel:Read: b'R VER.A\nPWR2 information\nPcb      Version : PWR '
DEBUG:channel:Read: b'VER.A\n\nES5D2V52S003 1(Slave) : uptime is 187 wee'
DEBUG:channel:Read: b'ks, 4 days, 2 hours, 1 minute\n512M bytes DDR Memo'
DEBUG:channel:Read: b'ry\n241M bytes FLASH\nPcb      Version :  VER.B\nB'
DEBUG:channel:Read: b'asic  BootROM  Version : 0208.0001 Compiled at Oct'
DEBUG:channel:Read: b' 20 2015, 09:23:09\nBootLoad  Version : 0208.0001 '
DEBUG:channel:Read: b'Compiled at Oct 29 2015, 21:49:52\nCPLD   Version '
DEBUG:channel:Read: b': 010f \nSoftware Version : VRP (R) Software, Vers'
DEBUG:channel:Read: b'ion 5.160 (V200R008C00SPC500)\nPWR1 information\nP'
DEBUG:channel:Read: b'cb      Version : PWR VER.A\nPWR2 information\nPcb'
DEBUG:channel:Read: b'      Version : PWR VER.A\n\nES5D2V52S003 2(Slave)'
DEBUG:channel:Read: b' : uptime is 100 weeks, 2 days, 3 hours, 12 minute'
DEBUG:channel:Read: b's\n512M bytes DDR Memory\n241M bytes FLASH\nPcb   '
DEBUG:channel:Read: b'   Version :  VER.B\nBasic  BootROM  Version : 020'
DEBUG:channel:Read: b'8.0001 Compiled at Oct 20 2015, 09:23:09\nBootLoad'
DEBUG:channel:Read: b'  Version : 0208.0001 Compiled at Oct 29 2015, 21:'
DEBUG:channel:Read: b'49:52\nCPLD   Version : 010f \nSoftware Version : '
DEBUG:channel:Read: b'VRP (R) Software, Version 5.160 (V200R008C00SPC500'
DEBUG:channel:Read: b')\nPWR1 information\nPcb      Version : PWR VER.A'
DEBUG:channel:Read: b'\nPWR2 information\nPcb      Version : PWR VER.A\n'
DEBUG:channel:Read: b'\nES5D2V52S003 3(Slave) : uptime is 187 weeks, 5 da'
DEBUG:channel:Read: b'ys, 6 hours, 18 minutes\n512M bytes DDR Memory\n24'
DEBUG:channel:Read: b'1M bytes FLASH\nPcb      Version :  VER.B\nBasic  '
DEBUG:channel:Read: b'BootROM  Version : 0208.0001 Compiled at Oct 20 20'
DEBUG:channel:Read: b'15, 09:23:09\nBootLoad  Version : 0208.0001 Compil'
DEBUG:channel:Read: b'ed at Oct 29 2015, 21:49:52\nCPLD   Version : 010f'
DEBUG:channel:Read: b' \nSoftware Version : VRP (R) Software, Version 5.'
DEBUG:channel:Read: b'160 (V200R008C00SPC500)\nPWR1 information\nPcb    '
DEBUG:channel:Read: b'  Version : PWR VER.A\nPWR2 information\nPcb      '
DEBUG:channel:Read: b'Version : PWR VER.A\n\nES5D2V52S003 4(Slave) : upt'
DEBUG:channel:Read: b'ime is 187 weeks, 4 days, 4 hours, 38 minutes'
DEBUG:channel:Read: b''
DEBUG:channel:Read: b'\n512M bytes DDR Memory\n241M bytes FLASH'
DEBUG:channel:Read: b''
DEBUG:channel:Read: b'\nPcb      Version :  VER.B\nBasic  BootROM  Versi'
DEBUG:channel:Read: b'on : 0208.0001 Compiled at Oct 20 2015, 09:23:09\n'
DEBUG:channel:Read: b'BootLoad  Version : 0208.0001 Compiled at Oct 29 2'
DEBUG:channel:Read: b'015, 21:49:52\nCPLD   Version : 010f \nSoftware Ve'
DEBUG:channel:Read: b'rsion : VRP (R) Software, Version 5.160 (V200R008C'
DEBUG:channel:Read: b'00SPC500)\nPWR1 information\nPcb      Version : PW'
DEBUG:channel:Read: b'R VER.A\nPWR2 information\nPcb      Version : PWR '
DEBUG:channel:Read: b'VER.A\n'
DEBUG:channel:Read: b''
DEBUG:channel:Read: b'\nES5D2V52S003 5(Slave) : uptime is 187 weeks, 4 d'
DEBUG:channel:Read: b'ays, 2 hours, 21 minutes\n512M bytes DDR Memory\n2'
DEBUG:channel:Read: b'41M bytes FLASH'
DEBUG:channel:Read: b''
DEBUG:channel:Read: b'\nPcb      Version :  VER.B\nBasic  BootROM  Versi'
DEBUG:channel:Read: b'on : 0208.0001 Compiled at Oct 20 2015, 09:23:09\n'
DEBUG:channel:Read: b'BootLoad  Version : 0208.0001 Compiled at Oct 29 2'
DEBUG:channel:Read: b'015, 21:49:52\nCPLD   Version : 010f \nSoftware Ve'
DEBUG:channel:Read: b'rsion : VRP (R) Software, Version 5.160 (V200R008C'
DEBUG:channel:Read: b'00SPC500)\nPWR1 information\nPcb      Version : PW'
DEBUG:channel:Read: b'R VER.A\nPWR2 information\nPcb      Version : PWR '
DEBUG:channel:Read: b'VER.A\n\nES5D2V52S003 6(Standby) : uptime is 100 w'
DEBUG:channel:Read: b'eeks, 2 days, 2 hours, 42 minutes'
DEBUG:channel:Read: b'\n512M bytes DDR Memory\n241M bytes FLASH'
DEBUG:channel:Read: b''
DEBUG:channel:Read: b'\nPcb      Version :  VER.B\nBasic  BootROM  Versi'
DEBUG:channel:Read: b'on : 0208.0001 Compiled at Oct 20 2015, 09:23:09\n'
DEBUG:channel:Read: b'BootLoad  Version : 0208.0001 Compiled at Oct 29 2'
DEBUG:channel:Read: b'015, 21:49:52\nCPLD   Version : 010f \nSoftware Ve'
DEBUG:channel:Read: b'rsion : VRP (R) Software, Version 5.160 (V200R008C'
DEBUG:channel:Read: b'00SPC500)\nPWR1 information\nPcb      Version : PW'
DEBUG:channel:Read: b'R VER.A\n<shab-4a-stack1>'
INFO:channel:Read: b'\nHuawei Versatile Routing Platform Software\nVRP (R) software, Version 5.160 (S5720 V200R008C00SPC500)\nCopyright (C) 2000-2015 HUAWEI TECH CO., LTD\nHUAWEI S5720-52X-PWR-SI-ACF Routing Switch uptime is 188 weeks, 4 days, 2 hours, 19 minutes\n\nES5D2V52S003 0(Master) : uptime is 187 weeks, 4 days, 4 hours, 38 minutes\n512M bytes DDR Memory\n241M bytes FLASH\nPcb      Version :  VER.B\nBasic  BootROM  Version : 0208.0001 Compiled at Oct 20 2015, 09:23:09\nBootLoad  Version : 0208.0001 Compiled at Oct 29 2015, 21:49:52\nCPLD   Version : 010f \nSoftware Version : VRP (R) Software, Version 5.160 (V200R008C00SPC500)\nPWR1 information\nPcb      Version : PWR VER.A\nPWR2 information\nPcb      Version : PWR VER.A\n\nES5D2V52S003 1(Slave) : uptime is 187 weeks, 4 days, 2 hours, 1 minute\n512M bytes DDR Memory\n241M bytes FLASH\nPcb      Version :  VER.B\nBasic  BootROM  Version : 0208.0001 Compiled at Oct 20 2015, 09:23:09\nBootLoad  Version : 0208.0001 Compiled at Oct 29 2015, 21:49:52\nCPLD   Version : 010f \nSoftware Version : VRP (R) Software, Version 5.160 (V200R008C00SPC500)\nPWR1 information\nPcb      Version : PWR VER.A\nPWR2 information\nPcb      Version : PWR VER.A\n\nES5D2V52S003 2(Slave) : uptime is 100 weeks, 2 days, 3 hours, 12 minutes\n512M bytes DDR Memory\n241M bytes FLASH\nPcb      Version :  VER.B\nBasic  BootROM  Version : 0208.0001 Compiled at Oct 20 2015, 09:23:09\nBootLoad  Version : 0208.0001 Compiled at Oct 29 2015, 21:49:52\nCPLD   Version : 010f \nSoftware Version : VRP (R) Software, Version 5.160 (V200R008C00SPC500)\nPWR1 information\nPcb      Version : PWR VER.A\nPWR2 information\nPcb      Version : PWR VER.A\n\nES5D2V52S003 3(Slave) : uptime is 187 weeks, 5 days, 6 hours, 18 minutes\n512M bytes DDR Memory\n241M bytes FLASH\nPcb      Version :  VER.B\nBasic  BootROM  Version : 0208.0001 Compiled at Oct 20 2015, 09:23:09\nBootLoad  Version : 0208.0001 Compiled at Oct 29 2015, 21:49:52\nCPLD   Version : 010f \nSoftware Version : VRP (R) Software, Version 5.160 (V200R008C00SPC500)\nPWR1 information\nPcb      Version : PWR VER.A\nPWR2 information\nPcb      Version : PWR VER.A\n\nES5D2V52S003 4(Slave) : uptime is 187 weeks, 4 days, 4 hours, 38 minutes\n512M bytes DDR Memory\n241M bytes FLASH\nPcb      Version :  VER.B\nBasic  BootROM  Version : 0208.0001 Compiled at Oct 20 2015, 09:23:09\nBootLoad  Version : 0208.0001 Compiled at Oct 29 2015, 21:49:52\nCPLD   Version : 010f \nSoftware Version : VRP (R) Software, Version 5.160 (V200R008C00SPC500)\nPWR1 information\nPcb      Version : PWR VER.A\nPWR2 information\nPcb      Version : PWR VER.A\n\nES5D2V52S003 5(Slave) : uptime is 187 weeks, 4 days, 2 hours, 21 minutes\n512M bytes DDR Memory\n241M bytes FLASH\nPcb      Version :  VER.B\nBasic  BootROM  Version : 0208.0001 Compiled at Oct 20 2015, 09:23:09\nBootLoad  Version : 0208.0001 Compiled at Oct 29 2015, 21:49:52\nCPLD   Version : 010f \nSoftware Version : VRP (R) Software, Version 5.160 (V200R008C00SPC500)\nPWR1 information\nPcb      Version : PWR VER.A\nPWR2 information\nPcb      Version : PWR VER.A\n\nES5D2V52S003 6(Standby) : uptime is 100 weeks, 2 days, 2 hours, 42 minutes\n512M bytes DDR Memory\n241M bytes FLASH\nPcb      Version :  VER.B\nBasic  BootROM  Version : 0208.0001 Compiled at Oct 20 2015, 09:23:09\nBootLoad  Version : 0208.0001 Compiled at Oct 29 2015, 21:49:52\nCPLD   Version : 010f \nSoftware Version : VRP (R) Software, Version 5.160 (V200R008C00SPC500)\nPWR1 information\nPcb      Version : PWR VER.A\n<shab-4a-stack1>'
INFO:driver:Closing connection to <IP_ADDRESS>
INFO:driver:Attempting to acquire `privilege_exec` privilege level
DEBUG:channel:Write (sending return character): '\n'
DEBUG:channel:Read: b''
DEBUG:channel:Read: b'\n<shab-4a-stack1>'
INFO:driver:Acquired requested privilege level `privilege_exec`
DEBUG:transport:Channel to host <IP_ADDRESS> closed
INFO:driver:Connection to <IP_ADDRESS> closed successfully

Thanks for getting some more data!
The first test with the failed password is "good" -- in that scrapli does what it is supposed to do, of course not great we still dont have it working though!
I'm still wondering why we got the initial The connection is closed by SSH server error in the first post. Can you post the output of ssh'ing to the device with the following command:
'ssh <IP_ADDRESS> -p 22 -o ConnectTimeout=20 -o ServerAliveInterval=20 -l ansible -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -F /etc/ssh/ssh_config' -vv

^ this is the command scrapli runs (plus adding -vv to see if we get any other interesting output).
I'd also be curious if you could try to use paramiko transport to test, and if possible use ssh-key authentication as a separate test. I think logs from those ++ the output from the manual ssh command may help us figure out next steps.
If you know how/where I can get a vrp image to run in vrnetlab I can probably get this working this weekend -- a quick search didnt turn up anything that a non-customer could download :(

First test: SSH -vv
LOG:
10:55 $ ssh <IP_ADDRESS> -p 22 -o ConnectTimeout=20 -o ServerAliveInterval=20 -l ansible -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -F /etc/ssh/ssh_config -vv
OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n  7 Dec 2017
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 20: Applying options for 192.168.98.*
debug1: /etc/ssh/ssh_config line 40: Applying options for *
debug2: resolving "<IP_ADDRESS>" port 22
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to <IP_ADDRESS> [<IP_ADDRESS>] port 22.
debug2: fd 3 setting O_NONBLOCK
debug1: fd 3 clearing O_NONBLOCK
debug1: Connection established.
debug1: key_load_public: No such file or directory
debug1: identity file /home/nryzhkov/.ssh/id_rsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/nryzhkov/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/nryzhkov/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/nryzhkov/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/nryzhkov/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/nryzhkov/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/nryzhkov/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/nryzhkov/.ssh/id_ed25519-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.3
debug1: Remote protocol version 2.0, remote software version -
debug1: no match: -
debug2: fd 3 setting O_NONBLOCK
debug1: Authenticating to <IP_ADDRESS>:22 as 'ansible'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug2: local client KEXINIT proposal
debug2: KEX algorithms: diffie-hellman-group1-sha1,ext-info-c
debug2: host key algorithms: ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@ope
nssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa
debug2: ciphers ctos: chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc
debug2: ciphers stoc: chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc
debug2: MACs ctos: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-
256,hmac-sha2-512,hmac-sha1
debug2: MACs stoc: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-
256,hmac-sha2-512,hmac-sha1
debug2: compression ctos: none,zlib@openssh.com,zlib
debug2: compression stoc: none,zlib@openssh.com,zlib
debug2: languages ctos:
debug2: languages stoc:
debug2: first_kex_follows 0
debug2: reserved 0
debug2: peer server KEXINIT proposal
debug2: KEX algorithms: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: host key algorithms: ssh-dss,ssh-rsa
debug2: ciphers ctos: aes256-ctr,aes128-ctr,aes256-cbc,aes128-cbc,3des-cbc
debug2: ciphers stoc: aes256-ctr,aes128-ctr,aes256-cbc,aes128-cbc,3des-cbc
debug2: MACs ctos: hmac-sha2-256,hmac-sha2-256-96,hmac-sha1,hmac-sha1-96,hmac-md5,hmac-md5-96
debug2: MACs stoc: hmac-sha2-256,hmac-sha2-256-96,hmac-sha1,hmac-sha1-96,hmac-md5,hmac-md5-96
debug2: compression ctos: none,zlib
debug2: compression stoc: none,zlib
debug2: languages ctos:
debug2: languages stoc:
debug2: first_kex_follows 0
debug2: reserved 0
debug1: kex: algorithm: diffie-hellman-group1-sha1
debug1: kex: host key algorithm: ssh-rsa
debug1: kex: server->client cipher: aes128-ctr MAC: hmac-sha2-256 compression: none
debug1: kex: client->server cipher: aes128-ctr MAC: hmac-sha2-256 compression: none
debug1: sending SSH2_MSG_KEXDH_INIT
debug2: bits set: 498/1024
debug1: expecting SSH2_MSG_KEXDH_REPLY
debug1: Server host key: ssh-rsa SHA256:9uOtKI629byW6Fb8S7lr0/xp1rtK0H/bnfMZWWGlveg
Warning: Permanently added '<IP_ADDRESS>' (RSA) to the list of known hosts.
debug2: bits set: 528/1024
debug2: set_newkeys: mode 1
debug1: rekey after<PHONE_NUMBER> blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug2: set_newkeys: mode 0
debug1: rekey after<PHONE_NUMBER> blocks
debug2: key: /home/nryzhkov/.ssh/id_rsa ((nil))
debug2: key: /home/nryzhkov/.ssh/id_dsa ((nil))
debug2: key: /home/nryzhkov/.ssh/id_ecdsa ((nil))
debug2: key: /home/nryzhkov/.ssh/id_ed25519 ((nil))
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,keyboard-interactive,password
debug1: Next authentication method: publickey
debug1: Trying private key: /home/nryzhkov/.ssh/id_rsa
debug1: Trying private key: /home/nryzhkov/.ssh/id_dsa
debug1: Trying private key: /home/nryzhkov/.ssh/id_ecdsa
debug1: Trying private key: /home/nryzhkov/.ssh/id_ed25519
debug2: we did not send a packet, disable method
debug1: Next authentication method: keyboard-interactive
debug2: userauth_kbdint
debug2: we sent a keyboard-interactive packet, wait for reply
debug2: input_userauth_info_req
User Authentication
debug2: input_userauth_info_req: num_prompts 1
Password:
debug1: Authentication succeeded (keyboard-interactive).
Authenticated to <IP_ADDRESS> ([<IP_ADDRESS>]:22).
debug1: channel 0: new [client-session]
debug2: channel 0: send open
debug1: Entering interactive session.
debug1: pledge: network
debug2: channel_input_open_confirmation: channel 0: callback start
debug2: fd 3 setting TCP_NODELAY
debug2: client_session2_setup: id 0
debug2: channel 0: request pty-req confirm 1
debug1: Sending environment.
debug1: Sending env LC_MEASUREMENT = ru_RU.UTF-8
debug2: channel 0: request env confirm 0
debug1: Sending env LC_PAPER = ru_RU.UTF-8
debug2: channel 0: request env confirm 0
debug1: Sending env LC_MONETARY = ru_RU.UTF-8
debug2: channel 0: request env confirm 0
debug1: Sending env LANG = ru_RU.UTF-8
debug2: channel 0: request env confirm 0
debug1: Sending env LC_NAME = ru_RU.UTF-8
debug2: channel 0: request env confirm 0
debug1: Sending env LC_ADDRESS = ru_RU.UTF-8
debug2: channel 0: request env confirm 0
debug1: Sending env LC_NUMERIC = ru_RU.UTF-8
debug2: channel 0: request env confirm 0
debug1: Sending env LC_TELEPHONE = ru_RU.UTF-8
debug2: channel 0: request env confirm 0
debug1: Sending env LC_IDENTIFICATION = ru_RU.UTF-8
debug2: channel 0: request env confirm 0
debug1: Sending env LC_TIME = ru_RU.UTF-8
debug2: channel 0: request env confirm 0
debug2: channel 0: request shell confirm 1
debug2: channel_input_open_confirmation: channel 0: callback done
debug2: channel 0: open confirm rwindow 131072 rmax 32768
debug2: channel_input_status_confirm: type 99 id 0
debug2: PTY allocation request accepted on channel 0
debug2: channel_input_status_confirm: type 99 id 0
debug2: shell request accepted on channel 0

Info: The max number of VTY users is 20, and the number
      of current VTY users on line is 1.
      The current login time is 2020-05-29 10:55:34+03:00.
<shab-4a-stack1>

Now quit:
<shab-4a-stack1>quit
Info: The max number of VTY users is 20, and the number
      of current VTY users on line is 0.debug2: channel 0: rcvd close
debug2: channel 0: output open -> drain
debug2: channel 0: close_read
debug2: channel 0: input open -> closed
debug2: channel 0: obuf empty
debug2: channel 0: close_write
debug2: channel 0: output drain -> closed
debug2: channel 0: almost dead
debug2: channel 0: gc: notify user
debug2: channel 0: gc: user detached
debug2: channel 0: send close
debug2: channel 0: is dead
debug2: channel 0: garbage collecting
debug1: channel 0: free: client-session, nchannels 1
Connection to <IP_ADDRESS> closed.
Transferred: sent 2720, received 2032 bytes, in 4.9 seconds
Bytes per second: sent 552.5, received 412.8
debug1: Exit status -1

Next test: using ssh-key
(note: for farther experiments I have moved to another switch. Identical to the first one.)
Code:
def main():
    priv_exec_pattern = r"^[<a-z0-9.\-@()/:]{1,48}[#>$]\s*$"
    config_level_pattern = r"^\[[a-z0-9.\-@/:]{1,32}\]$"
    PRIVS = {
    "privilege_exec": (
        PrivilegeLevel(priv_exec_pattern, "privilege_exec", "", "", "", False, "", )),
    "configuration": (
        PrivilegeLevel(config_level_pattern, "configuration", "privilege_exec", "quit", "system-view", False, "", )),
    }

    def huawei_disable_paging(conn):
        conn.channel.send_input(channel_input="screen-length 0 temporary")

    mydevice = {
        "host": "<IP_ADDRESS>",
        "auth_username": "scrapli",
        "auth_private_key": "scrapli_rsa.key",
        "auth_strict_key": False,
        "ssh_config_file": True,
        "privilege_levels": PRIVS,
        "on_open": huawei_disable_paging,
    }

    conn = IOSXEDriver(**mydevice)

    conn.open()
    print(conn.get_prompt())
    print(conn.send_command("display version").result)
    conn.close()

Trace:
14:15 $ /usr/bin/python3 /home/nryzhkov/rocket/branch/rocket.bot/backend/huascrapli.py
Traceback (most recent call last):
  File "/home/nryzhkov/rocket/branch/rocket.bot/backend/huascrapli.py", line 48, in <module>
    main()
  File "/home/nryzhkov/rocket/branch/rocket.bot/backend/huascrapli.py", line 41, in main
    conn.open()
  File "/usr/local/lib/python3.6/dist-packages/scrapli/driver/driver.py", line 579, in open
    self.on_open(self)
  File "/home/nryzhkov/rocket/branch/rocket.bot/backend/huascrapli.py", line 24, in huawei_disable_paging
    conn.channel.send_input(channel_input="screen-length 0 temporary")
  File "/usr/local/lib/python3.6/dist-packages/scrapli/channel/channel.py", line 269, in send_input
    channel_input=channel_input, strip_prompt=strip_prompt
  File "/usr/local/lib/python3.6/dist-packages/scrapli/decorators.py", line 78, in timeout_wrapper
    return future.result()
  File "/usr/lib/python3.6/concurrent/futures/_base.py", line 425, in result
    return self.__get_result()
  File "/usr/lib/python3.6/concurrent/futures/_base.py", line 384, in __get_result
    raise self._exception
  File "/usr/lib/python3.6/concurrent/futures/thread.py", line 56, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/usr/local/lib/python3.6/dist-packages/scrapli/channel/channel.py", line 295, in _send_input
    self._read_until_input(channel_input=bytes_channel_input)
  File "/usr/local/lib/python3.6/dist-packages/scrapli/channel/channel.py", line 184, in _read_until_input
    output += self._read_chunk()
  File "/usr/local/lib/python3.6/dist-packages/scrapli/channel/channel.py", line 146, in _read_chunk
    new_output = self.transport.read()
  File "/usr/local/lib/python3.6/dist-packages/scrapli/decorators.py", line 78, in timeout_wrapper
    return future.result()
  File "/usr/lib/python3.6/concurrent/futures/_base.py", line 425, in result
    return self.__get_result()
  File "/usr/lib/python3.6/concurrent/futures/_base.py", line 384, in __get_result
    raise self._exception
  File "/usr/lib/python3.6/concurrent/futures/thread.py", line 56, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/usr/local/lib/python3.6/dist-packages/scrapli/transport/systemssh.py", line 653, in read
    return os.read(self._stdout_fd, read_bytes)
OSError: [Errno 5] Input/output error

LOG:
INFO:driver:Opening connection to <IP_ADDRESS>
INFO:transport:Attempting to authenticate to <IP_ADDRESS>
INFO:transport:Attempting to open session with the following command: ['ssh', '<IP_ADDRESS>', '-p', '22', '-o', 'ConnectTimeout=5', '-o', 'ServerAliveInterval=10', '-i', 'scrapli_rsa.key', '-l', 'scrapli', '-o', 'StrictHostKeyChecking=no', '-o', 'UserKnownHostsFile=/dev/null', '-F', '/etc/ssh/ssh_config', '-v', '-o', 'BatchMode=yes']
DEBUG:transport:Session to host <IP_ADDRESS> spawned
DEBUG:transport:Authenticated to host <IP_ADDRESS> with public key
INFO:channel:Attempting to send input: screen-length 0 temporary; strip_prompt: True
DEBUG:channel:Write: 'screen-length 0 temporary'

Previous test have failed on on_open function
so I tried to run it with on_open being disabled
Trace:
14:24 $ /usr/bin/python3 /home/nryzhkov/rocket/branch/rocket.bot/backend/huascrapli.py
Traceback (most recent call last):
  File "/home/nryzhkov/rocket/branch/rocket.bot/backend/huascrapli.py", line 46, in <module>
    main()
  File "/home/nryzhkov/rocket/branch/rocket.bot/backend/huascrapli.py", line 39, in main
    conn.open()
  File "/usr/local/lib/python3.6/dist-packages/scrapli/driver/driver.py", line 579, in open
    self.on_open(self)
  File "/usr/local/lib/python3.6/dist-packages/scrapli/driver/core/cisco_iosxe/driver.py", line 21, in iosxe_on_open
    conn.acquire_priv(desired_priv=conn.default_desired_privilege_level)
  File "/usr/local/lib/python3.6/dist-packages/scrapli/driver/network_driver.py", line 339, in acquire_priv
    current_prompt=self.channel.get_prompt()
  File "/usr/local/lib/python3.6/dist-packages/scrapli/decorators.py", line 78, in timeout_wrapper
    return future.result()
  File "/usr/lib/python3.6/concurrent/futures/_base.py", line 425, in result
    return self.__get_result()
  File "/usr/lib/python3.6/concurrent/futures/_base.py", line 384, in __get_result
    raise self._exception
  File "/usr/lib/python3.6/concurrent/futures/thread.py", line 56, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/usr/local/lib/python3.6/dist-packages/scrapli/channel/channel.py", line 240, in get_prompt
    output += self._read_chunk()
  File "/usr/local/lib/python3.6/dist-packages/scrapli/channel/channel.py", line 146, in _read_chunk
    new_output = self.transport.read()
  File "/usr/local/lib/python3.6/dist-packages/scrapli/decorators.py", line 78, in timeout_wrapper
    return future.result()
  File "/usr/lib/python3.6/concurrent/futures/_base.py", line 425, in result
    return self.__get_result()
  File "/usr/lib/python3.6/concurrent/futures/_base.py", line 384, in __get_result
    raise self._exception
  File "/usr/lib/python3.6/concurrent/futures/thread.py", line 56, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/usr/local/lib/python3.6/dist-packages/scrapli/transport/systemssh.py", line 653, in read
    return os.read(self._stdout_fd, read_bytes)
OSError: [Errno 5] Input/output error

LOG:
INFO:driver:Opening connection to <IP_ADDRESS>
INFO:transport:Attempting to authenticate to <IP_ADDRESS>
INFO:transport:Attempting to open session with the following command: ['ssh', '<IP_ADDRESS>', '-p', '22', '-o', 'ConnectTimeout=5', '-o', 'ServerAliveInterval=10', '-i', 'scrapli_rsa.key', '-l', 'scrapli', '-o', 'StrictHostKeyChecking=no', '-o', 'UserKnownHostsFile=/dev/null', '-F', '/etc/ssh/ssh_config', '-v', '-o', 'BatchMode=yes']
DEBUG:transport:Session to host <IP_ADDRESS> spawned
DEBUG:transport:Authenticated to host <IP_ADDRESS> with public key
INFO:driver:Attempting to acquire `privilege_exec` privilege level
DEBUG:channel:Write (sending return character): '\n'

Seems it crushes on any input
probably it's a feature of the huawei's family of processing inputs

Finally, the Paramiko test:
Using paramiko I've found out the pattern the switch returns:
DEBUG:transport:Channel to host <IP_ADDRESS> opened
INFO:channel:Attempting to send input: screen-length 0 temporary; strip_prompt: True
DEBUG:channel:Write: 'screen-length 0 temporary'
DEBUG:channel:Read: b'\nInfo: The max number of VTY users is 10, and the number\n      of current VTY users on line is 1.'
DEBUG:channel:Read: b'\n      The current login time is 2020-05-29 20:49:12+00:00.'
DEBUG:channel:Read: b'\n<OOB_switch2>'

\n<OOB_switch2>
So I modified the privilege levels pattern to

r"^(\\n)?<.+>$"

and suddenly my script starts working as expected :)
LOG:
INFO:driver:Non-core transport `paramiko` selected
INFO:driver:Opening connection to <IP_ADDRESS>
DEBUG:transport:Socket to host <IP_ADDRESS> opened
DEBUG:paramiko.transport:starting thread (client mode): 0xfa7c6128
DEBUG:paramiko.transport:Local version/idstring: SSH-2.0-paramiko_2.7.1
DEBUG:paramiko.transport:Remote version/idstring: SSH-2.0--
INFO:paramiko.transport:Connected (version 2.0, client -)
DEBUG:paramiko.transport:kex algos:['diffie-hellman-group-exchange-sha1', 'diffie-hellman-group14-sha1', 'diffie-hellman-group1-sha1'] server key:['ssh-dss', 'ssh-rsa'] client encrypt:['aes256-ctr', 'aes128-ctr', 'aes256-cbc', 'aes128-cbc', '3des-cbc'] server encrypt:['aes256-ctr', 'aes128-ctr', 'aes256-cbc', 'aes128-cbc', '3des-cbc'] client mac:['hmac-sha2-256', 'hmac-sha2-256-96', 'hmac-sha1', 'hmac-sha1-96', 'hmac-md5', 'hmac-md5-96'] server mac:['hmac-sha2-256', 'hmac-sha2-256-96', 'hmac-sha1', 'hmac-sha1-96', 'hmac-md5', 'hmac-md5-96'] client compress:['none', 'zlib'] server compress:['none', 'zlib'] client lang:[''] server lang:[''] kex follows?False
DEBUG:paramiko.transport:Kex agreed: diffie-hellman-group-exchange-sha1
DEBUG:paramiko.transport:HostKey agreed: ssh-rsa
DEBUG:paramiko.transport:Cipher agreed: aes128-ctr
DEBUG:paramiko.transport:MAC agreed: hmac-sha2-256
DEBUG:paramiko.transport:Compression agreed: none
DEBUG:paramiko.transport:Got server p (2048 bits)
DEBUG:paramiko.transport:kex engine KexGex specified hash_algo <built-in function openssl_sha1>
DEBUG:paramiko.transport:Switch to new keys ...
DEBUG:paramiko.transport:userauth is OK
INFO:paramiko.transport:Authentication (publickey) successful!
DEBUG:transport:Authenticated to host <IP_ADDRESS> with public key auth
DEBUG:paramiko.transport:[chan 0] Max packet in: 32768 bytes
DEBUG:paramiko.transport:[chan 0] Max packet out: 32768 bytes
DEBUG:paramiko.transport:Secsh channel 0 opened.
DEBUG:paramiko.transport:[chan 0] Sesch channel 0 request ok
DEBUG:paramiko.transport:[chan 0] Sesch channel 0 request ok
DEBUG:transport:Channel to host <IP_ADDRESS> opened
INFO:channel:Attempting to send input: screen-length 0 temporary; strip_prompt: True
DEBUG:channel:Write: 'screen-length 0 temporary'
DEBUG:channel:Read: b'\nInfo: The max number of VTY users is 10, and the number\n      of current VTY users on line is 1.'
DEBUG:channel:Read: b'\n      The current login time is 2020-05-29 21:44:28+00:00.'
DEBUG:channel:Read: b'\n<OOB_switch2>'
DEBUG:channel:Read: b's'
DEBUG:channel:Read: b'c'
DEBUG:channel:Read: b'r'
DEBUG:channel:Read: b'e'
DEBUG:channel:Read: b'n'
DEBUG:channel:Read: b'-'
DEBUG:channel:Read: b'l'
DEBUG:channel:Read: b'e'
DEBUG:channel:Read: b'n'
DEBUG:channel:Read: b'g'
DEBUG:channel:Read: b't'
DEBUG:channel:Read: b'h'
DEBUG:channel:Read: b' '
DEBUG:channel:Read: b'0'
DEBUG:channel:Read: b' '
DEBUG:channel:Read: b't'
DEBUG:channel:Read: b'e'
DEBUG:channel:Read: b'm'
DEBUG:channel:Read: b'p'
DEBUG:channel:Read: b'o'
DEBUG:channel:Read: b'r'
DEBUG:channel:Read: b'a'
DEBUG:channel:Read: b'r'
DEBUG:channel:Read: b'y'
INFO:channel:Read: b'\nInfo: The max number of VTY users is 10, and the number\n      of current VTY users on line is 1.\n      The current login time is 2020-05-29 21:44:28+00:00.\n<OOB_switch2>screen-length 0 temporary'
DEBUG:channel:Write (sending return character): '\n'
DEBUG:channel:Read: b'\nInfo: The configuration takes effect on the current user terminal interface only.'
DEBUG:channel:Read: b'\n<OOB_switch2>'
INFO:channel:Read: b'\nInfo: The configuration takes effect on the current user terminal interface only.\n<OOB_switch2>'
INFO:driver:Connection to <IP_ADDRESS> opened successfully
DEBUG:channel:Write (sending return character): '\n'
DEBUG:channel:Read: b'\n<OOB_switch2>'
INFO:driver:Attempting to acquire `privilege_exec` privilege level
DEBUG:channel:Write (sending return character): '\n'
DEBUG:channel:Read: b'\n<OOB_switch2>'
DEBUG:driver:Current privilege level could be `privilege_exec`
DEBUG:driver:Determined current privilege level is one of `['privilege_exec']`
INFO:driver:Acquired requested privilege level `privilege_exec`
INFO:channel:Attempting to send input: display version; strip_prompt: True
DEBUG:channel:Write: 'display version'
DEBUG:channel:Read: b'd'
DEBUG:channel:Read: b'i'
DEBUG:channel:Read: b's'
DEBUG:channel:Read: b'p'
DEBUG:channel:Read: b'l'
DEBUG:channel:Read: b'a'
DEBUG:channel:Read: b'y'
DEBUG:channel:Read: b' '
DEBUG:channel:Read: b'v'
DEBUG:channel:Read: b'e'
DEBUG:channel:Read: b'r'
DEBUG:channel:Read: b's'
DEBUG:channel:Read: b'i'
DEBUG:channel:Read: b'o'
DEBUG:channel:Read: b'n'
INFO:channel:Read: b'display version'
DEBUG:channel:Write (sending return character): '\n'
DEBUG:channel:Read: b'\nHuawei Versatile Routing Platform Software\nVRP (R) software, Version 5.160 (S5720 V200R008C00SPC500)\nCopyright (C) 2000-2015 HUAWEI TECH CO., LTD\nHUAWEI S5720-52X-PWR-SI-AC Routing Switch uptime is 201 weeks, 3 days, 2 hours, 5 minutes'
DEBUG:channel:Read: b'\n'
DEBUG:channel:Read: b'\nES5D2V52S003 0(Master) : uptime is 201 weeks, 3 days, 2 hours, 4 minutes'
DEBUG:channel:Read: b'\n512M bytes DDR Memory\n241M bytes FLASH'
DEBUG:channel:Read: b'\nPcb      Version :  VER.B\nBasic  BootROM  Version : 0208.0001 Compiled at Oct 20 2015, 09:23:09\nBootLoad  Version : 0208.0001 Compiled at Oct 29 2015, 21:49:52\nCPLD   Version : 010f \nSoftware Version : VRP (R) Software, Version 5.160 (V200R008C00SPC500)'
DEBUG:channel:Read: b'\nPWR1 information\nPcb      Version : PWR VER.A'
DEBUG:channel:Read: b'\nPWR2 information\nPcb      Version : PWR VER.A'
DEBUG:channel:Read: b'\n<OOB_switch2>'
INFO:channel:Read: b'\nHuawei Versatile Routing Platform Software\nVRP (R) software, Version 5.160 (S5720 V200R008C00SPC500)\nCopyright (C) 2000-2015 HUAWEI TECH CO., LTD\nHUAWEI S5720-52X-PWR-SI-AC Routing Switch uptime is 201 weeks, 3 days, 2 hours, 5 minutes\n\nES5D2V52S003 0(Master) : uptime is 201 weeks, 3 days, 2 hours, 4 minutes\n512M bytes DDR Memory\n241M bytes FLASH\nPcb      Version :  VER.B\nBasic  BootROM  Version : 0208.0001 Compiled at Oct 20 2015, 09:23:09\nBootLoad  Version : 0208.0001 Compiled at Oct 29 2015, 21:49:52\nCPLD   Version : 010f \nSoftware Version : VRP (R) Software, Version 5.160 (V200R008C00SPC500)\nPWR1 information\nPcb      Version : PWR VER.A\nPWR2 information\nPcb      Version : PWR VER.A\n<OOB_switch2>'
INFO:driver:Closing connection to <IP_ADDRESS>
INFO:driver:Attempting to acquire `privilege_exec` privilege level
DEBUG:channel:Write (sending return character): '\n'
DEBUG:channel:Read: b'\n<OOB_switch2>'
INFO:driver:Acquired requested privilege level `privilege_exec`
DEBUG:paramiko.transport:[chan 0] EOF sent (0)
DEBUG:transport:Channel to host <IP_ADDRESS> closed
DEBUG:transport:Socket to host <IP_ADDRESS> closed
INFO:driver:Connection to <IP_ADDRESS> closed successfully

Of course I've tried to change to the default transport but have got the old result

Awesome logs/troubleshooting!
@dmfigol on slack mentioned that he recalls that some platforms close a connection after a single command is sent via a pty... that could be what's happening here.
When we use system transport and authenticate via key based auth we shouldn't be forcing a pty though -- did you test using key based auth with the updated privilege pattern as well?
Hopefully in the short term the paramiko transport will be enough to keep you going.. it may be a while before I am able to test and resolve this. Thanks again for all the detailed notes and testing!

Ah thanks, I missed that! you can join the ntc (networktocode) slack workspace here -- I should be easy to find there just search for Carl Montanari!
Ill close this for now but ive got a todo list for scrapli and I'll add a link to this issue there so I dont forget about it.
Carl


Fixed #31769 -- Improved default naming of merged migrations.

https://code.djangoproject.com/ticket/31769

Thanks for the review. I applied the suggestions.

Edits lgtm. Thanks @felixxm!