Improve speed of queries process

Now that we have hundreds of thousands of data points (~145000), a fast processing for saving the data in the hdf5 file/s is crucial.
I’m using a single node and 96 cpus-per-task, but it’s taking more than 15 hours to generate the hdf5 files for the residue level (for the atomic level would be much worst).
I run some tests to understand where the bottleneck is.

As can be seen from the image below, the phase in which the pdbs and the pssms are listed and the Query objects are created and added to the QueryCollection is not a bottleneck. It takes slightly more than one hour, but considering the number of data points, I think it's acceptable.

Then what happens in the process has to be the bottleneck. On average, the entire process phase for each query takes ~24 seconds (ProteinProteinInterfaceResidueQuery taken as example test). In _process_one_query:
In the build method, on average:

0.1 s for _load_structure
0.2 s for get_residue_contact_pairs and few other lines before building the actual graph
20.2 s for build_residue_graph and _set_graph_targets
3.1 s for calling add_features on all features modules

After having built the graph: 0.4 s for write_to_hdf5

It's clear then that the bottleneck is the graph building.

I noticed that the most time is consumed in the build_residue_graph, at this for loop: https://github.com/DeepRank/deeprank-core/blob/bc02f790da92883c87ad692967412daf94cee59f/deeprankcore/utils/graph.py#L286

deeprank-core/deeprankcore/utils/graph.py

But then the position feature will be important for CNNs, right?

Is the problem here
positions = np.empty((len(atoms), 3))
for atom_index, atom in enumerate(atoms):
      positions[atom_index] = atom.position

or in the second loop, here?
node1.features[Nfeat.POSITION] = atom1.position
node2.features[Nfeat.POSITION] = atom2.position

@cbaakman

@gcroci2
after closer inspection, the problem seems not to be the position node feature calculation, but the amount of times it's repeated. That is, the for loop repeats it too many times.
I can speed up the residue-based graph building by moving some of the functionality to numpy. For the atom-based graphs however, this is not a solution.

@gcroci2 after closer inspection, the problem seems not to be the position node feature calculation, but the amount of times it's repeated. That is, the for loop repeats it too many times.
I can speed up the residue-based graph building by moving some of the functionality to numpy. For the atom-based graphs however, this is not a solution.

Let's start from there :)

After edits in PR #274, these are the new timings:

On average, the entire process phase for each query takes ~4.5 seconds (before 24 seconds). In _process_one_query:
In the build method, on average:

0.02 s for _load_structure (before 0.1 s)
0.2 s for get_residue_contact_pairs and few other lines before building the actual graph
0.9 s for build_residue_graph and _set_graph_targets (before 20.2 s)
3.1 s for calling add_features on all features modules

After having built the graph: 0.4 s for write_to_hdf5

Great improvements!


"Resilience Score" no longer exists ot is no longer accessible as described

The "Resilience Score" report discussed on this page no longer seems to exist, or at least is no longer accessible as defaulted on this page.

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

ID: fd8426b2-dbe5-9a46-4045-55cc26806641
Version Independent ID: 99eef6e6-7978-1008-4d6f-a5ae566a6305
Content: Diagnostics and solve tool - Azure App Service
Content Source: articles/app-service/overview-diagnostics.md
Service: app-service
GitHub Login: @cephalin
Microsoft Alias: cephalin

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

@yunjchoi for Diagnose and Solve

#reassign:msangapu-msft

Thank you for your feedback. We've added this to our backlog to prioritize. #please-close


[Event Change Request] - CheckCreditLimit.Page.al - OnBeforeShowWarning

We like to request the following event change:
Object: CheckCreditLimit.Page.al
ToDo: add parameter NewCustNo, NewOrderAmountLCY2, OldOrderAmountLCY2
Where is the event placed:
procedure ShowWarning(NewCustNo: Code[20]; NewOrderAmountLCY2: Decimal; OldOrderAmountLCY2: Decimal; CheckOverDueBalance: Boolean) Result: Boolean
var
    CustCheckCrLimit: Codeunit "Cust-Check Cr. Limit";
    ExitValue: Integer;
    IsHandled: Boolean;
begin
    IsHandled := false;
    OnBeforeShowWarning(Rec, NewCustNo, NewOrderAmountLCY, NewOrderAmountLCY2, OldOrderAmountLCY, OldOrderAmountLCY2, OrderAmountTotalLCY, ShippedRetRcdNotIndLCY, CustCreditAmountLCY, DeltaAmount, CheckOverDueBalance, Heading, Result, IsHandled, NotificationId);
    if IsHandled then
        exit(Result);

    if NewCustNo = '' then
        exit;
    CustNo := NewCustNo;
    NewOrderAmountLCY := NewOrderAmountLCY2;
    OldOrderAmountLCY := OldOrderAmountLCY2;
    Get(CustNo);
    SetRange("No.", "No.");
    Cust2.Copy(Rec);
    ...
end;

Event Code:
[IntegrationEvent(false, false)]
local procedure OnBeforeShowWarning(var Customer: Record Customer; var NewCustNo: Code[20]; var NewOrderAmountLCY: Decimal; NewOrderAmountLCY2: Decimal; OldOrderAmountLCY: Decimal; OldOrderAmountLCY2: Decimal; OrderAmountTotalLCY: Decimal; ShippedRetRcdNotIndLCY: Decimal; CustCreditAmountLCY: Decimal; DeltaAmount: Decimal; CheckOverDueBalance: Boolean; var Heading: Text[250]; var Result: Boolean; var IsHandled: Boolean; var NotificationId: Guid);
begin
end;

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.


fix(publick8s/public-ingress) ensure external LBs are SingleStack to prevent errors trying to create unused IPv6s

Related to https://github.com/jenkins-infra/helpdesk/issues/4206
This PR fixes the 2 errors related to Authorization Failures with IPv6 Public IP deprecated and being reused (trying to) by the LB.
The root causes are the same: using DualStack LBs instead of 2 SingleStack LBs.

Fixing the Nginx ingress LB  using helm chart values specifying the SingleStack IPv4
Fixing the custom IPv6 LB using its new 1.0.1 (fixed) chart from https://github.com/jenkins-infra/helm-charts/pull/1251

Merging as it was applied manually


Bumping version to 1.0-beta.3

Changes Unknown when pulling 2469c371161be98182886df3ad6022bb50624e17 on coverage/1.0-beta.3 into ** on master**.


Add blocking clusterx subcommand "bmigrate"

Search before asking

[X] I had searched in the issues and found no similar issues.

Motivation
For now the command to migrate slot clusterx migrate works asynchronously. It will return "OK" right after the migration has started. If the client wants to know the result of the migration, it has to constantly use "cluster info" to get the state.
However, once the migration has been completed, the target slot will be forbidden, and the client (cluster manager) has to actively change the topology as soon as possible, in order to make the cluster continue to work.
In summary, the current clusterx migrate has two shortcuts:

The client cannot get the result soon enough.
The "polling" approach to get the migration result is not efficient enough.

Solution
I propose to leave the old clusterx migrate command intact, and add a new clusterx bmirate command, which works like other blocking commands (e.g. blpop). The server will block the connection and return "OK" (if succeed) or other error message (if failed) to the client only after the migration has completed.
The command shall be like:
clusterx bmirate ${SLOT} ${TARGET_NODEID} ${TIMEOUT}

Are you willing to submit a PR?

[X] I'm willing to submit a PR!

Hi @ellutionist @xiaobiaozhao
How about adding the optional timeout for the current migrate command? For example:

timeout is missing or 0 means async migration which keep the same with the current behavior
timeout is -1(<0) means blocking until the process was finished
timeout is greater than 0 means the blocking time

I agree.

Thanks to @git-hulk  and @xiaobiaozhao . This is a good workaround to not create a new subcommand and to provide backward compatibility.
However, I have to mention this: the "OK" returned by migrate without timeout argument means "migration started". It differs from the "OK" returned by mirate with timeout which means "migration finished". Such inconsitency may cause confusion to our users, especially who is new to Kvrocks.
If this is acceptable, then I am ready to implement it.

@ellutionist Thanks for your points. To be clear, we can also explicitly add the ASYNC|SYNC flag to identify the mode? And the timeout is only meaningful when the SYNC flag is exists.
How do you think?

To see other folks have any comments. @xiaobiaozhao @PragmaTwice @torwig @ShooterIT @caipengbo

As I think, an ASYNC|SYNC flag is best choice and will be using in some other commands, like BACKUP.

I respect the reasoning about introducing a separate command for a blocking version of the command: it's clearer, descriptive and consistent with some naming conventions of Redis (e. g. POP/BPOP).
On the other hand, if I use the blocking version of the MIGRATE command by specifying the proper options, it's obvious (at least for me) that it will block and the OK return value means "blocking operation is completed" (in other words, migration completed).
 They are harder to implement and test. So, maybe sometimes (but I'm not 100% sure that this case is the one), instead of introducing 2-3 additional options, we can create a new command.

I agree with @torwig . A new subcommand is a more clear and more "redis" solution to me.

I prefer to use SYNC|ASYNC flag instead of another command which has similar arguments check and logic.
in new redis version, they don't want to add more commands, such as flush command, it has ASYNC option.
For lpop and blpop, they operate data space, different commands have different flags so redis can distinguish which command can execute in scripts env  easily.

As I think, an ASYNC|SYNC flag is best choice and will be using in some other commands, like BACKUP.

Agree with it.

I prefer to use SYNC|ASYNC flag instead of another command which has similar arguments check and logic. in new redis version, they don't want to add more commands, such as flush command, it has ASYNC option.
For lpop and blpop, they operate data space, different commands have different flags so redis can distinguish which command can execute in scripts env easily.

+1

vote for the SYNC|ASYNC flag

Looks like the option of SYNC|ASYNC flag got more votes. If there is no further advice, I will implement the new feature as following:
clusterx migrate ${SLOT} ${NODE_ID} [SYNC|ASYNC] ${TIMEOUT}

If the ASYNC is given or the flag is missing, the command will act in the old way.
If the SYNC flag is given:

If the timeout is missing or "0", the command will block until the migration finish.
If the timeout comes as a positive integer, it means the max duration (of seconds) for which the command will block.

I recommend that bmirate support bulk slot migration

I think it is unrelated to this PR. Besides, it is better to implement these two different features in two separate PRs.


Allow users to put their own limit on channels

Allow users to create their own "meeting rooms"

Users would join if they have a certain role, and the meeting would "close" when the last member leaves the call


A stack overflow in task sys_evt has been detected (IDFGH-2977)

Environment

Development Kit:      [ESP32-Wrover-Kit|

Kit version (for WroverKit/): [v4]

Module or chip used:  [|ESP32-WROVER-B|

IDF version :: v4.2-dev-701-g0ae960f2f

Build System:         [|CMake & idf.py]

Compiler version  xtensa-esp32-elf-gcc (crosstool-NG esp-2019r2) 8.2.0

Operating System:     [|Linux|]

Using an IDE?: [|Yes  eclipse & idf.py from command line

Power Supply:         [USB|

Problem Description
Ive using the existing event loops
Im publishing some test data to a mqtt broker
when the WIFI connection disconnets then the MQTT broker should shutdown and restart
also the task which is created should also shutdown.
The program crashes
Expected Behavior
The list of all the running tasks are shown
Actual Behavior
Rebooting...
ets Jun  8 2016 00:22:57

rst:0xc (SW_CPU_RESET),boot:0x1e (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:4
load:0x3fff0034,len:6884
load:0x40078000,len:13720
load:0x40080400,len:3920
entry 0x40080680
I (29) boot: ESP-IDF v4.2-dev-701-g0ae960f2f 2nd stage bootloader
I (29) boot: compile time 13:29:11
I (29) boot: chip revision: 1
I (33) boot_comm: chip revision: 1, min. bootloader chip revision: 0
I (40) boot.esp32: SPI Speed      : 40MHz
I (45) boot.esp32: SPI Mode       : DIO
I (50) boot.esp32: SPI Flash Size : 4MB
I (54) boot: Enabling RNG early entropy source...
I (60) boot: Partition Table:
I (63) boot: ## Label            Usage          Type ST Offset   Length
I (70) boot:  0 nvs              WiFi data        01 02 00009000 00006000
I (78) boot:  1 phy_init         RF data          01 01 0000f000 00001000
I (85) boot:  2 factory          factory app      00 00 00010000 00100000
I (93) boot: End of partition table
I (97) boot_comm: chip revision: 1, min. application chip revision: 0
I (104) esp_image: segment 0: paddr=0x00010020 vaddr=0x3f400020 size=0x1e134 (123188) map
I (160) esp_image: segment 1: paddr=0x0002e15c vaddr=0x3ffb0000 size=0x01ebc (  7868) load
I (163) esp_image: segment 2: paddr=0x00030020 vaddr=0x400d0020 size=0x8c0ec (573676) map
I (383) esp_image: segment 3: paddr=0x000bc114 vaddr=0x3ffb1ebc size=0x01a50 (  6736) load
I (386) esp_image: segment 4: paddr=0x000bdb6c vaddr=0x40080000 size=0x00400 (  1024) load
I (390) esp_image: segment 5: paddr=0x000bdf74 vaddr=0x40080400 size=0x14f5c ( 85852) load
I (447) boot: Loaded app from partition at offset 0x10000
I (447) boot: Disabling RNG early entropy source...
I (448) cpu_start: Pro cpu up.
I (451) cpu_start: Application information:
I (456) cpu_start: Project name:     wifi_station
I (461) cpu_start: App version:      1
I (466) cpu_start: Compile time:     Mar 27 2020 13:29:10
I (472) cpu_start: ELF file SHA256:  43cbe0faf4facc14...
I (478) cpu_start: ESP-IDF:          v4.2-dev-701-g0ae960f2f
I (484) cpu_start: Starting app cpu, entry point is 0x400811b0
I (477) cpu_start: App cpu up.
I (495) heap_init: Initializing. RAM available for dynamic allocation:
I (502) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
I (508) heap_init: At 3FFB94E0 len 00026B20 (154 KiB): DRAM
I (514) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (520) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (527) heap_init: At 4009535C len 0000ACA4 (43 KiB): IRAM
I (533) cpu_start: Pro cpu start user code
I (551) spi_flash: detected chip: generic
I (552) spi_flash: flash io: dio
I (552) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
I (560) wifi station: [APP] Startup..
I (560) wifi station: [APP] Free memory: 261344 bytes
I (570) wifi station: [APP] IDF version: v4.2-dev-701-g0ae960f2f
I (610) wifi station: ESP_WIFI_MODE_STA
I (620) wifi:wifi driver task: 3ffd7300, prio:23, stack:3584, core=0
I (620) system_api: Base MAC address is not set
I (620) system_api: read default base MAC address from EFUSE
I (640) wifi:wifi firmware version: d76a2dd
I (640) wifi:config NVS flash: enabled
I (640) wifi:config nano formating: disabled
I (650) wifi:Init dynamic tx buffer num: 32
I (650) wifi:Init data frame dynamic rx buffer num: 32
I (650) wifi:Init management frame dynamic rx buffer num: 32
I (660) wifi:Init management short buffer num: 32
I (660) wifi:Init static rx buffer size: 1600
I (670) wifi:Init static rx buffer num: 10
I (670) wifi:Init dynamic rx buffer num: 32
I (770) phy: phy_version: 4180, cb3948e, Sep 12 2019, 16:39:13, 0, 0
I (770) wifi:mode : sta (bc:dd:c2:d1:c0:88)
I (770) wifi station: wifi_init_sta finished***ERROR*** A stack overflow in task sys_evt has been detected.
abort() was called at PC 0x4008fbb4 on core 0

ELF file SHA256: 43cbe0faf4facc1452c5f2ac9a26d6d0ceb5423569e8689f77bed0299aa6fc62

Backtrace: 0x4008f809:0x3ffd1120 0x4008fb9d:0x3ffd1140 0x4008fbb4:0x3ffd1160 0x400933aa:0x3ffd1180 0x40094e94:0x3ffd11a0 0x40094e4a:0xe0a718ac |<-CORRUPTED

Rebooting...
ets Jun  8 2016 00:22:57

Steps to reproduce
Run the code in the zip
station.zip

@rebeliousconformist Thanks for reporting, we will look into.

Hi @rebeliousconformist
Please note that the handlers registered for WiFi and network (WIFI_EVENT, IP_EVENT) are called from system_event task, which has a limited stack size. Seems like your code trying to use most of that stack for local variables:
static void event_handler(void* arg, esp_event_base_t event_base,
                                int32_t event_id, void* event_data)
{
       ...
    	char stats_buffer[16384];
    	vTaskList(stats_buffer);
    	printf("%s\n", stats_buffer);
     ...
}

while the sdkconfig in your project says CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=16384 .
In that setup the stack overflow in task sys_evt is expected.
You can use either static or dynamic allocation to address the issue, possibly prefixing the buffer definition with static  should fix the issue.

@rebeliousconformist Thanks for reporting. Would you please help share if any updates or details for this issue? Thanks.

@david-cermak understood makes sense. would like to close it


Add reason code to conversation.hand_off events

#13  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @nlathia and the rest of your teammates on  Graphite


Changed package versions to beta2

@Tratcher

Hi @kichalla, I'm your friendly neighborhood Microsoft Open Technologies, Inc. Pull Request Bot (You can call me MSOTBOT). Thanks for your contribution!

In order for us to evaluate and accept your PR, we ask that you sign a contribution license agreement. It's all electronic and will take just minutes. I promise there's no faxing. https://cla2.msopentech.com.

TTYL, MSOTBOT;

@kichalla Why is this required? All our repos contains *.

This is for beta2 and master branch. Basically we want to lock the package versions for releases.


Add more inspiring quotes to celebrate Origins above 11,333 ft.

Life is like a cigarette, smoke it to the butt. - Harvie Krumpet
Life is now. There was never a time when your life was not now, nor will there ever be.   - William Shakespeare
The primary cause of unhappiness is never the situation, but your thoughts about it. - Eckhart Tolle

... my all-time favorites, quotes that guide me through life, and let it live alive!
Cheers, Pipo

Hmm - not sure about a couple of these 😅


Add example to Slider.range() doc

Was a bit hard to work out what to pass to the .range(...) method, so added an example to clarify

Thank you!


fix missing margin on mobile

Bug - Enterprise Issue 4502 (o-sidebar-breakout eliminates necessary margin on mobile between columns)

o-sidebar-breakout is used on three pages:
https://www.consumerfinance.gov/about-us/careers/
https://www.consumerfinance.gov/find-a-housing-counselor/
https://www.consumerfinance.gov/rules-policy/
At mobile, there is a border between the items that stack at mobile, however, on two of these pages (housing counselor seems ok) block__flush-top is also applied, the margin is negated and the border sits against the block above it.

Note: CSS class "block__flush-top" is negating top margin at all times with the use of an !important tag. With flush-top removed, top margin is still applied via class .content-l_col.
To test:
yarn build
visit previous urls and verify margin on mobile and no margin on desktop for element in question "aside.0-sidebar-breakout_col"
http://localhost:8000/about-us/careers/
http://localhost:8000/rules-policy/

This is the before/after I see:
Before:

After:

In the before, the link border and breakout-sidebar border are squashed together and create an erroneous thickened border. In the after the bottom border of the breakout-sidebar is spaced away from the link border (the dotted border). This organizationally makes sense, but design-wise it looks odd to me, as if it has a double border divider between sections. @natalia-fitzgerald Do you have guidance on how we should handle a situation like this?

@BrewCityBoy FYI you're linking to the public issue 4502. Our usual reference convention for GHE would look like https://[GHE]/CFGOV/platform/issues/4502

After connecting with @natalia-fitzgerald, the additional container border (.o-sidebar-breakout_col:last-child) was removed. However, I ended up leaving the padding and I would like to get approval for the spacing. Here are the changes with and without the additional padding. Thoughts @jenn-franklin ?
Remove padding but leave padding:
![Screenshot 2023-08-23 at 11 28 45 AM](https://github.com/cfpb/consumerfinance.gov/assets/130792942/4c50f109-3725-491a-bde5-c6d588a35

bd3)

Remove padding and border:

Hi! First off, I realize y’all work in different measurements than pixels, so I apologize for what I’m about to write. 🙂 Designers think about spacing in increments of 30px, but I’ve thinking lately there may be a disconnect with what happens in code, and maybe we should redefine how designers/devs talk about spacing.
I love the removal of the lines! I think the spacing between each element should be 60px. I like the idea of keeping spacing tight (like even 30px) on mobile, but our standard is to use 60px between distinct elements/components to signify that you’re looking at a new thing and are not within the same section. I scrolled through some pages on our site on mobile just to double check my understanding, and I am seeing that we pretty consistently use about 60px between distinct patterns/sections (and 30px between related patterns of a section).
So that would play out like this:

Let me know if anything I wrote seems confusing/weird. Thanks for working on this!


my_gatt_service2.dart super.hashCode parameter preventing to compile.

Can you provide more details about this compile error, such as error logs or screenshot, and which platform this error occured.

Sorry about this, It's an unexpected version resolve, I have retracted the wrong versions.
To fix this, you need delete your project's pubspec.lock file, then run flutter pub get again, the error should gone after that.
#27

Fixed


安装Secretflow使用方式 1: 从pypi报错

Issue Type
Build/Install
Source
source
Secretflow Version
secretlow 0.7.7b1
OS Platform and Distribution
CentOS 7
Python version
Python 3.8.13
Bazel version
No response
GCC/Compiler version
No response
What happend and What you expected to happen.
(base) [root@localhost ~]# conda create -n sf python=3.8
WARNING: A conda environment already exists at '/usr/lib64/anaconda3/envs/sf'
Remove existing environment (y/[n])? y

Collecting package metadata (current_repodata.json): done
Solving environment: done

==> WARNING: A newer version of conda exists. <==
  current version: 4.8.2
  latest version: 4.14.0

Please update conda by running

    $ conda update -n base -c defaults conda

## Package Plan ##

  environment location: /usr/lib64/anaconda3/envs/sf

  added / updated specs:
    - python=3.8

The following NEW packages will be INSTALLED:

  _libgcc_mutex      pkgs/main/linux-64::_libgcc_mutex-0.1-main
  _openmp_mutex      pkgs/main/linux-64::_openmp_mutex-5.1-1_gnu
  ca-certificates    pkgs/main/linux-64::ca-certificates-2022.07.19-h06a4308_0
  certifi            pkgs/main/linux-64::certifi-2022.9.14-py38h06a4308_0
  ld_impl_linux-64   pkgs/main/linux-64::ld_impl_linux-64-2.38-h1181459_1
  libffi             pkgs/main/linux-64::libffi-3.3-he6710b0_2
  libgcc-ng          pkgs/main/linux-64::libgcc-ng-11.2.0-h1234567_1
  libgomp            pkgs/main/linux-64::libgomp-11.2.0-h1234567_1
  libstdcxx-ng       pkgs/main/linux-64::libstdcxx-ng-11.2.0-h1234567_1
  ncurses            pkgs/main/linux-64::ncurses-6.3-h5eee18b_3
  openssl            pkgs/main/linux-64::openssl-1.1.1q-h7f8727e_0
  pip                pkgs/main/linux-64::pip-22.1.2-py38h06a4308_0
  python             pkgs/main/linux-64::python-3.8.13-h12debd9_0
  readline           pkgs/main/linux-64::readline-8.1.2-h7f8727e_1
  setuptools         pkgs/main/linux-64::setuptools-63.4.1-py38h06a4308_0
  sqlite             pkgs/main/linux-64::sqlite-3.39.2-h5082296_0
  tk                 pkgs/main/linux-64::tk-8.6.12-h1ccaba5_0
  wheel              pkgs/main/noarch::wheel-0.37.1-pyhd3eb1b0_0
  xz                 pkgs/main/linux-64::xz-5.2.5-h7f8727e_1
  zlib               pkgs/main/linux-64::zlib-1.2.12-h5eee18b_3

Proceed ([y]/n)? y

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate sf
#
# To deactivate an active environment, use
#
#     $ conda deactivate

(base) [root@localhost ~]# conda activate sf
(sf) [root@localhost ~]# pip install -U secretflow
Collecting secretflow
  Using cached secretflow-0.7.7b1-cp38-cp38-manylinux2014_x86_64.whl (1.1 MB)
Collecting pandas==1.4.0
  Using cached pandas-1.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.7 MB)
Collecting absl-py==1.0.0
  Using cached absl_py-1.0.0-py3-none-any.whl (126 kB)
Collecting networkx~=2.8
  Using cached networkx-2.8.6-py3-none-any.whl (2.0 MB)
Collecting loguru==0.6.0
  Using cached loguru-0.6.0-py3-none-any.whl (58 kB)
Collecting flax==0.4.1
  Using cached flax-0.4.1-py3-none-any.whl (184 kB)
Collecting matplotlib==3.5.2
  Using cached matplotlib-3.5.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl (11.3 MB)
Collecting validator.py==1.3.0
  Using cached validator.py-1.3.0-py2.py3-none-any.whl (8.2 kB)
Collecting numpy==1.22.3
  Using cached numpy-1.22.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (16.8 MB)
Collecting dgl>=0.9.0
  Using cached dgl-0.9.1-cp38-cp38-manylinux1_x86_64.whl (4.9 MB)
Collecting protobuf==3.19.4
  Using cached protobuf-3.19.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB)
Collecting torchvision==0.11.2
  Using cached torchvision-0.11.2-cp38-cp38-manylinux1_x86_64.whl (23.3 MB)
Collecting torchmetrics==0.9.2
  Using cached torchmetrics-0.9.2-py3-none-any.whl (419 kB)
Collecting cloudpickle==2.0.0
  Using cached cloudpickle-2.0.0-py3-none-any.whl (25 kB)
Collecting psutil==5.9.0
  Using cached psutil-5.9.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (283 kB)
Collecting six==1.16.0
  Using cached six-1.16.0-py2.py3-none-any.whl (11 kB)
Collecting unittest-xml-reporting
  Using cached unittest_xml_reporting-3.2.0-py2.py3-none-any.whl (20 kB)
Collecting coverage
  Using cached coverage-6.4.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (213 kB)
Collecting cachetools==5.2.0
  Using cached cachetools-5.2.0-py3-none-any.whl (9.3 kB)
Collecting jax==0.3.7
  Using cached jax-0.3.7.tar.gz (944 kB)
  Preparing metadata (setup.py) ... done
Collecting dill==0.3.4
  Using cached dill-0.3.4-py2.py3-none-any.whl (86 kB)
Collecting tqdm==4.62.3
  Using cached tqdm-4.62.3-py2.py3-none-any.whl (76 kB)
Collecting scikit-learn==1.0.2
  Using cached scikit_learn-1.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (26.7 MB)
Collecting spu==0.2.4b1
  Using cached spu-0.2.4b1-cp38-cp38-manylinux_2_17_x86_64.whl (14.7 MB)
Collecting statsmodels==0.13.2
  Using cached statsmodels-0.13.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (9.9 MB)
Collecting jaxlib==0.3.7
  Using cached jaxlib-0.3.7-cp38-none-manylinux2014_x86_64.whl (68.5 MB)
Collecting tensorflow-datasets==4.5.2
  Using cached tensorflow_datasets-4.5.2-py3-none-any.whl (4.2 MB)
Collecting sf-heu==0.2.0b0
  Using cached sf_heu-0.2.0b0-cp38-abi3-manylinux2014_x86_64.whl (860 kB)
Collecting tensorflow==2.7.1
  Using cached tensorflow-2.7.1-cp38-cp38-manylinux2010_x86_64.whl (495.1 MB)
Collecting secretflow-ray==2.0.0.dev1
  Using cached secretflow_ray-2.0.0.dev1-cp38-cp38-manylinux2014_x86_64.whl (29.5 MB)
Collecting pyarrow
  Using cached pyarrow-9.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (35.3 MB)
Collecting s3fs==2022.1.0
  Using cached s3fs-2022.1.0-py3-none-any.whl (25 kB)
Collecting torch==1.10.1
SystemError: deallocated bytearray object has exported buffers
ERROR: Exception:
Traceback (most recent call last):
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_internal/cli/base_command.py", line 167, in exc_logging_wrapper
    status = run_func(*args)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_internal/cli/req_command.py", line 205, in wrapper
    return func(self, options, args)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_internal/commands/install.py", line 341, in run
    requirement_set = resolver.resolve(
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_internal/resolution/resolvelib/resolver.py", line 94, in resolve
    result = self._result = resolver.resolve(
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_vendor/resolvelib/resolvers.py", line 481, in resolve
    state = resolution.resolve(requirements, max_rounds=max_rounds)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_vendor/resolvelib/resolvers.py", line 373, in resolve
    failure_causes = self._attempt_to_pin_criterion(name)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_vendor/resolvelib/resolvers.py", line 213, in _attempt_to_pin_criterion
    criteria = self._get_updated_criteria(candidate)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_vendor/resolvelib/resolvers.py", line 204, in _get_updated_criteria
    self._add_to_criteria(criteria, requirement, parent=candidate)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_vendor/resolvelib/resolvers.py", line 172, in _add_to_criteria
    if not criterion.candidates:
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_vendor/resolvelib/structs.py", line 151, in __bool__
    return bool(self._sequence)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 155, in __bool__
    return any(self)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 143, in <genexpr>
    return (c for c in iterator if id(c) not in self._incompatible_ids)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 47, in _iter_built
    candidate = func()
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_internal/resolution/resolvelib/factory.py", line 215, in _make_candidate_from_link
    self._link_candidate_cache[link] = LinkCandidate(
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 291, in __init__
    super().__init__(
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 161, in __init__
    self.dist = self._prepare()
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 230, in _prepare
    dist = self._prepare_distribution()
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 302, in _prepare_distribution
    return preparer.prepare_linked_requirement(self._ireq, parallel_builds=True)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_internal/operations/prepare.py", line 428, in prepare_linked_requirement
    return self._prepare_linked_requirement(req, parallel_builds)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_internal/operations/prepare.py", line 473, in _prepare_linked_requirement
    local_file = unpack_url(
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_internal/operations/prepare.py", line 155, in unpack_url
    file = get_http_url(
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_internal/operations/prepare.py", line 96, in get_http_url
    from_path, content_type = download(link, temp_dir.path)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_internal/network/download.py", line 133, in __call__
    resp = _http_get_download(self._session, link)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_internal/network/download.py", line 116, in _http_get_download
    resp = session.get(target_url, headers=HEADERS, stream=True)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_vendor/requests/sessions.py", line 542, in get
    return self.request('GET', url, **kwargs)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_internal/network/session.py", line 456, in request
    return super().request(method, url, *args, **kwargs)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_vendor/requests/sessions.py", line 529, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_vendor/requests/sessions.py", line 645, in send
    r = adapter.send(request, **kwargs)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_vendor/cachecontrol/adapter.py", line 48, in send
    cached_response = self.controller.cached_request(request)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_vendor/cachecontrol/controller.py", line 155, in cached_request
    resp = self.serializer.loads(request, cache_data, body_file)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_vendor/cachecontrol/serialize.py", line 95, in loads
    return getattr(self, "_loads_v{}".format(ver))(request, data, body_file)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_vendor/cachecontrol/serialize.py", line 186, in _loads_v4
    cached = msgpack.loads(data, raw=False)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_vendor/msgpack/fallback.py", line 128, in unpackb
    ret = unpacker._unpack()
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_vendor/msgpack/fallback.py", line 592, in _unpack
    ret[key] = self._unpack(EX_CONSTRUCT)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_vendor/msgpack/fallback.py", line 592, in _unpack
    ret[key] = self._unpack(EX_CONSTRUCT)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_vendor/msgpack/fallback.py", line 546, in _unpack
    typ, n, obj = self._read_header()
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_vendor/msgpack/fallback.py", line 488, in _read_header
    obj = self._read(n)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_vendor/msgpack/fallback.py", line 407, in _read
    ret = self._buffer[i : i + n]
MemoryError

Reproduction code to reproduce the issue.
(sf) [root@localhost ~]# pip install -U secretflow
Collecting secretflow
  Using cached secretflow-0.7.7b1-cp38-cp38-manylinux2014_x86_64.whl (1.1 MB)
Collecting pandas==1.4.0
  Using cached pandas-1.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.7 MB)
Collecting absl-py==1.0.0
  Using cached absl_py-1.0.0-py3-none-any.whl (126 kB)
Collecting networkx~=2.8
  Using cached networkx-2.8.6-py3-none-any.whl (2.0 MB)
Collecting loguru==0.6.0
  Using cached loguru-0.6.0-py3-none-any.whl (58 kB)
Collecting flax==0.4.1
  Using cached flax-0.4.1-py3-none-any.whl (184 kB)
Collecting matplotlib==3.5.2
  Using cached matplotlib-3.5.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl (11.3 MB)
Collecting validator.py==1.3.0
  Using cached validator.py-1.3.0-py2.py3-none-any.whl (8.2 kB)
Collecting numpy==1.22.3
  Using cached numpy-1.22.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (16.8 MB)
Collecting dgl>=0.9.0
  Using cached dgl-0.9.1-cp38-cp38-manylinux1_x86_64.whl (4.9 MB)
Collecting protobuf==3.19.4
  Using cached protobuf-3.19.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB)
Collecting torchvision==0.11.2
  Using cached torchvision-0.11.2-cp38-cp38-manylinux1_x86_64.whl (23.3 MB)
Collecting torchmetrics==0.9.2
  Using cached torchmetrics-0.9.2-py3-none-any.whl (419 kB)
Collecting cloudpickle==2.0.0
  Using cached cloudpickle-2.0.0-py3-none-any.whl (25 kB)
Collecting psutil==5.9.0
  Using cached psutil-5.9.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (283 kB)
Collecting six==1.16.0
  Using cached six-1.16.0-py2.py3-none-any.whl (11 kB)
Collecting unittest-xml-reporting
  Using cached unittest_xml_reporting-3.2.0-py2.py3-none-any.whl (20 kB)
Collecting coverage
  Using cached coverage-6.4.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (213 kB)
Collecting cachetools==5.2.0
  Using cached cachetools-5.2.0-py3-none-any.whl (9.3 kB)
Collecting jax==0.3.7
  Using cached jax-0.3.7.tar.gz (944 kB)
  Preparing metadata (setup.py) ... done
Collecting dill==0.3.4
  Using cached dill-0.3.4-py2.py3-none-any.whl (86 kB)
Collecting tqdm==4.62.3
  Using cached tqdm-4.62.3-py2.py3-none-any.whl (76 kB)
Collecting scikit-learn==1.0.2
  Using cached scikit_learn-1.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (26.7 MB)
Collecting spu==0.2.4b1
  Using cached spu-0.2.4b1-cp38-cp38-manylinux_2_17_x86_64.whl (14.7 MB)
Collecting statsmodels==0.13.2
  Using cached statsmodels-0.13.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (9.9 MB)
Collecting jaxlib==0.3.7
  Using cached jaxlib-0.3.7-cp38-none-manylinux2014_x86_64.whl (68.5 MB)
Collecting tensorflow-datasets==4.5.2
  Using cached tensorflow_datasets-4.5.2-py3-none-any.whl (4.2 MB)
Collecting sf-heu==0.2.0b0
  Using cached sf_heu-0.2.0b0-cp38-abi3-manylinux2014_x86_64.whl (860 kB)
Collecting tensorflow==2.7.1
  Using cached tensorflow-2.7.1-cp38-cp38-manylinux2010_x86_64.whl (495.1 MB)
Collecting secretflow-ray==2.0.0.dev1
  Using cached secretflow_ray-2.0.0.dev1-cp38-cp38-manylinux2014_x86_64.whl (29.5 MB)
Collecting pyarrow
  Using cached pyarrow-9.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (35.3 MB)
Collecting s3fs==2022.1.0
  Using cached s3fs-2022.1.0-py3-none-any.whl (25 kB)
Collecting torch==1.10.1
SystemError: deallocated bytearray object has exported buffers
ERROR: Exception:
Traceback (most recent call last):
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_internal/cli/base_command.py", line 167, in exc_logging_wrapper
    status = run_func(*args)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_internal/cli/req_command.py", line 205, in wrapper
    return func(self, options, args)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_internal/commands/install.py", line 341, in run
    requirement_set = resolver.resolve(
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_internal/resolution/resolvelib/resolver.py", line 94, in resolve
    result = self._result = resolver.resolve(
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_vendor/resolvelib/resolvers.py", line 481, in resolve
    state = resolution.resolve(requirements, max_rounds=max_rounds)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_vendor/resolvelib/resolvers.py", line 373, in resolve
    failure_causes = self._attempt_to_pin_criterion(name)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_vendor/resolvelib/resolvers.py", line 213, in _attempt_to_pin_criterion
    criteria = self._get_updated_criteria(candidate)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_vendor/resolvelib/resolvers.py", line 204, in _get_updated_criteria
    self._add_to_criteria(criteria, requirement, parent=candidate)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_vendor/resolvelib/resolvers.py", line 172, in _add_to_criteria
    if not criterion.candidates:
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_vendor/resolvelib/structs.py", line 151, in __bool__
    return bool(self._sequence)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 155, in __bool__
    return any(self)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 143, in <genexpr>
    return (c for c in iterator if id(c) not in self._incompatible_ids)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 47, in _iter_built
    candidate = func()
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_internal/resolution/resolvelib/factory.py", line 215, in _make_candidate_from_link
    self._link_candidate_cache[link] = LinkCandidate(
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 291, in __init__
    super().__init__(
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 161, in __init__
    self.dist = self._prepare()
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 230, in _prepare
    dist = self._prepare_distribution()
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 302, in _prepare_distribution
    return preparer.prepare_linked_requirement(self._ireq, parallel_builds=True)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_internal/operations/prepare.py", line 428, in prepare_linked_requirement
    return self._prepare_linked_requirement(req, parallel_builds)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_internal/operations/prepare.py", line 473, in _prepare_linked_requirement
    local_file = unpack_url(
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_internal/operations/prepare.py", line 155, in unpack_url
    file = get_http_url(
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_internal/operations/prepare.py", line 96, in get_http_url
    from_path, content_type = download(link, temp_dir.path)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_internal/network/download.py", line 133, in __call__
    resp = _http_get_download(self._session, link)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_internal/network/download.py", line 116, in _http_get_download
    resp = session.get(target_url, headers=HEADERS, stream=True)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_vendor/requests/sessions.py", line 542, in get
    return self.request('GET', url, **kwargs)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_internal/network/session.py", line 456, in request
    return super().request(method, url, *args, **kwargs)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_vendor/requests/sessions.py", line 529, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_vendor/requests/sessions.py", line 645, in send
    r = adapter.send(request, **kwargs)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_vendor/cachecontrol/adapter.py", line 48, in send
    cached_response = self.controller.cached_request(request)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_vendor/cachecontrol/controller.py", line 155, in cached_request
    resp = self.serializer.loads(request, cache_data, body_file)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_vendor/cachecontrol/serialize.py", line 95, in loads
    return getattr(self, "_loads_v{}".format(ver))(request, data, body_file)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_vendor/cachecontrol/serialize.py", line 186, in _loads_v4
    cached = msgpack.loads(data, raw=False)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_vendor/msgpack/fallback.py", line 128, in unpackb
    ret = unpacker._unpack()
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_vendor/msgpack/fallback.py", line 592, in _unpack
    ret[key] = self._unpack(EX_CONSTRUCT)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_vendor/msgpack/fallback.py", line 592, in _unpack
    ret[key] = self._unpack(EX_CONSTRUCT)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_vendor/msgpack/fallback.py", line 546, in _unpack
    typ, n, obj = self._read_header()
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_vendor/msgpack/fallback.py", line 488, in _read_header
    obj = self._read(n)
  File "/usr/lib64/anaconda3/envs/sf/lib/python3.8/site-packages/pip/_vendor/msgpack/fallback.py", line 407, in _read
    ret = self._buffer[i : i + n]
MemoryError

MemoryError看起来是内存不足，可能你需要扩大内存再试试。


DS-3184: Add Aqua GHA

What this PR does / why we need it:
Expands the workflow with aqua GHA and refactors it a bit.
Which issue(s) this PR fixes (optional)
Closes #DS-3184

![redgreen](https://user-images.githubusercontent.com/21265304/204544305-5be14514-524e

-4c95-918b-ff9a8e422e16.png)

Rerequesting @jsimonps due to valuable points. Hopefully I fixed it :sweat_smile: . Added new tag due to incompatible changes.


CUDA Libraries is not detected,then Setup WSL Environment,Report the following error.

Information: validate-env[o]
05:04:17.77 IsCudaRuntimeInstalled : False
Debug: validate-env[o]
05:04:17.77 ExecuteAsync Completed Elapsed:0:00:1
7700138
[2023-12-18T09:04:17.776Z] [INFO] Validation outcome prer
eqsmet: false
[2023-12-18T09:04:17.776Z] [INFO]
Initialize WebView pane
[2023-12-18T09:04:17.777Z]
[INFO] Navigating view to reqt
irements page
[2023-12-18T09:4:18.893Z] [INFO]
telemetry event:activat
e extension sent
[2023-12-18T99:04:18.893Z]
[INFO] telemetry event:require
ments needed sent
[2023-12-18T9:04:19.22Z]
[INFO] Navigation to loadPrere
quisiteCheck was successful: true
[2023-12-18T09:04:19.023Z]
[INFO]
Loading View: loadPrere
quisiteCheck
[2023-12-18T99:04:19.029Z] [INFO] Extenension: Invoking
alidateEnvironement for: conda
Debug: validate-env[o]
95:04:19.19 ExecuteAsync
Started

windows 11 sub system Ubuntu 22

The plugin doesn't give any feedback why CUDA or Conda installation fails. In my case Conda doesn't install. So to prepare the environment I run the script directly inside the WSL instance. If anything fails there will be better feedback while running the scripts manually.
Look inside C:\Users\<username>\.vscode\extensions\ms-windows-ai-studio.windows-ai-studio-0.2.1-win32-x64\bin\Scripts and copy nvidia_cuda_install.sh to WSL and execute it. If the script runs okay next time you run the plugin it will detect CUDA as available.

nvidia_cuda_install.sh
#!/usr/bin/env bash

export DEBIAN_FRONTEND=noninteractive

set -e

# Clean up
rm -rf /var/lib/apt/lists/*

INSTALL_CUDNN=false
INSTALL_CUDNNDEV=false
INSTALL_NVTX=false
INSTALL_TOOLKIT=false
CUDA_VERSION=11.8
CUDNN_VERSION=<IP_ADDRESS>

if [ "$(id -u)" -ne 0 ]; then
    echo -e 'Script must be run as root. Use sudo, su, or add "USER root" to your Dockerfile before running this script.'
    exit 1
fi

apt_get_update()
{
    if [ "$(find /var/lib/apt/lists/* | wc -l)" = "0" ]; then
        echo "Running apt-get update..."
        apt-get update -y
    fi
}

# Checks if packages are installed and installs them if not
check_packages() {
    if ! dpkg -s "$@" > /dev/null 2>&1; then
        apt_get_update
        apt-get -y install --no-install-recommends "$@"
    fi
}

check_packages wget ca-certificates

# Add NVIDIA's package repository to apt so that we can download packages
# Always use the ubuntu2004 repo because the other repos (e.g., debian11) are missing packages
NVIDIA_REPO_URL="https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64"
KEYRING_PACKAGE="cuda-keyring_1.0-1_all.deb"
KEYRING_PACKAGE_URL="$NVIDIA_REPO_URL/$KEYRING_PACKAGE"
KEYRING_PACKAGE_PATH="$(mktemp -d)"
KEYRING_PACKAGE_FILE="$KEYRING_PACKAGE_PATH/$KEYRING_PACKAGE"
wget -O "$KEYRING_PACKAGE_FILE" "$KEYRING_PACKAGE_URL" 2>&1
apt-get install -yq "$KEYRING_PACKAGE_FILE"
apt-get update -yq

# Ensure that the requested version of CUDA is available
cuda_pkg="cuda-libraries-${CUDA_VERSION/./-}"
nvtx_pkg="cuda-nvtx-${CUDA_VERSION/./-}"
toolkit_pkg="cuda-toolkit-${CUDA_VERSION/./-}"
if ! apt-cache show "$cuda_pkg"; then
    echo "The requested version of CUDA is not available: CUDA $CUDA_VERSION"
    exit 1
fi

echo "Installing CUDA libraries..."
apt-get install -yq "$cuda_pkg"

if [ "$INSTALL_CUDNN" = "true" ]; then
    # Ensure that the requested version of cuDNN is available AND compatible
    cudnn_pkg_version="libcudnn8=${CUDNN_VERSION}-1+cuda${CUDA_VERSION}"
    if ! apt-cache show "$cudnn_pkg_version"; then
        echo "The requested version of cuDNN is not available: cuDNN $CUDNN_VERSION for CUDA $CUDA_VERSION"
        exit 1
    fi

    echo "Installing cuDNN libraries..."
    apt-get install -yq "$cudnn_pkg_version"
fi

if [ "$INSTALL_CUDNNDEV" = "true" ]; then
    # Ensure that the requested version of cuDNN development package is available AND compatible
    cudnn_dev_pkg_version="libcudnn8-dev=${CUDNN_VERSION}-1+cuda${CUDA_VERSION}"
    if ! apt-cache show "$cudnn_dev_pkg_version"; then
        echo "The requested version of cuDNN development package is not available: cuDNN $CUDNN_VERSION for CUDA $CUDA_VERSION"
        exit 1
    fi

    echo "Installing cuDNN dev libraries..."
    apt-get install -yq "$cudnn_dev_pkg_version"
fi

if [ "$INSTALL_NVTX" = "true" ]; then
    echo "Installing NVTX..."
    apt-get install -yq "$nvtx_pkg"
fi

if [ "$INSTALL_TOOLKIT" = "true" ]; then
    echo "Installing CUDA Toolkit..."
    apt-get install -yq "$toolkit_pkg"
fi

# Clean up
rm -rf /var/lib/apt/lists/*

echo "Done!"

Thank you, it can work now.

scripts are in C:\Users\[user]\.vscode\extensions\ms-windows-ai-studio.windows-ai-studio-0.2.1-win32-x64\bin\Scripts as of 12/29/2023


Half Finished Block?

So I found this
https://gyazo.com/c3ba75a2f070e6468ea52dffc762a036
https://gyazo.com/a143031a8a8a570187d14d5ce5ee41cd

Alice
DragonTechMC

Looks like the model isn't loading for some reason, I'll have a look.


Add overhead cost details to offer PDF printout

The offer PDF printout item overview shall contain a detailed listing of the overhead costs. Ideally the printout displays the overhead costs below the relevant service products (i.e. an intermediate cost sum + overheads).

Overhead Costs are now shown correctly in subtotal tables in Offer PDF


Have a message confirming saves

When we select the word Save from the menu, maybe the file is saved. Well it would be clearer if there was a message on the screen that says "saved successfully".

In Emacs' messages buffer:

Saving file /tmp/z...
Wrote /tmp/z
Saving file /tmp/z...
Wrote /tmp/z

So I would, in addition to your dot, have a "toast": Wrote /tmp/z.

The project is open source go make your own toast. 😂


new-pnpterm requires LCID "1033", documentation missing

In order to use new-pnpterm, I had to use the option
-LCID "1033"
which is not included in the documentation. I think that it should be mentioned, since if don't use such flag, command wont work.

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

ID: 9c537bdf-b8fc-9735-1870-355e757b531a
Version Independent ID: 68d5bb2b-9256-601f-7f44-14c447293c91
Content: New-PnPTerm (sharepoint-pnp)
Content Source: sharepoint/sharepoint-ps/sharepoint-pnp/New-PnPTerm.md
GitHub Login: @techwriter40
Microsoft Alias: kirks

@officedocsbot assign @yogkumgit

Hello @holylander  ! thanks for your feedback!
I need to kindly redirect you to this specific repo where you can either open an issue there or propose a PR directly into the source code of the cmdlet which has the documentation that is reflected later in the article.
Thank You

@get-itips Thank you very much for sharing this explanation. @holylander  Hope this comment is helpful for you. These repos are all open source and the community would welcome to contribute. Thanks for taking out some time to open the issue. Appreciate and encourage you to follow the suggested links.


[FEATURE] Types for users and roles in opensearchapi

Hello,
As I can see, currently there is no support for the users/roles API in opensearchapi. Could you please include this API to the client?

At the moment there are no clients with first-class support for the OpenSearch security plugin, which is where the users/roles live. This would be a good project for anyone to start working on.
Does anyone have any concerns with this functionality in the client?

@dblock @VachaShah Are there any requirements given for implementing the security plugin to the opensearch-go lib?
I would make it an extra package as security is a plugin with a custom API and it also has a different error response.
I also created a first Draft on how this could look like for USERS (missing PATCH).
I am not quite sure if I should return the full response like in the opensearchapi package in addition to the custom type for folks that want to do special/custom stuff.

I think that's a good start. We want support for all these plugins here.
Please note that eventually we'd like to generate the client code from API specs, and support multiple versions of the server (s) in the same client without hard-coding all this stuff. @Xtansia care to copy-paste some interesting links about what you're doing in java here?

Here is a draft for security role mappings.
I added it to the opensearchapi directory, but could follow the same path of @Jakob3xD and create a new directory.

I used the OpenAPI spec to generate a client that supports most/all plugins: https://github.com/jgillich/opensearch-client-go
Example:
ctx = context.WithValue(context.Background, opensearch.ContextBasicAuth, opensearch.BasicAuth{
    UserName: "admin",
    Password: "password",
})

client := opensearch.NewAPIClient(&opensearch.Configuration{
    Servers: opensearch.ServerConfigurations{
        {
            URL: "http://yourserver:9200",
        },
    },
}).DefaultAPI

hash, err := bcrypt.GenerateFromPassword("example", bcrypt.DefaultCost)
if err != nil {
    return  err
}

if _, _, err := client.CreateUser(ctx, indexPrefix.Name).User(opensearch.User{
    Hash: pointer.String(string(hash)),
}).Execute(); err != nil {
    return fmt.Errorf("create user: %w", err)
}

I am running into an issue with creating roles though, the payload is exactly what's in the docs but the server returns:
{"status":"error","reason":"Invalid configuration","invalid_keys":{"keys":"index_permission,cluster_permission"}}

All the relevant code to generate this is at .github/workflows/generate.yaml if someone wants to take this as a basis for an official client

@davidlago or @peternied do you know anything about these? ^

@jgillich
Hello, seems like you're using singular form of key names:

index_permission
cluster_permission

But them have to be plural:

index_permissions
cluster_permissions

Example in docs: https://opensearch.org/docs/latest/security/access-control/api/#roles

Yup, I've already fixed these and a few other issues in the OpenAPI spec repo (https://github.com/opensearch-project/opensearch-api-specification/pull/153/), it's working great now.

@dblock I am currently writing code to implement the security plugin and had issue with testing.
Right now we have a matrix of opensearch versions and secure plugin enabled or disabled. Handling this with build tags is annoying as every integration tests that currently exists would need the additional tag !secure, as we only test the opensearchapi functions against opensearch without security.
So to prevent this my suggestion is to create a helper function that creates a client depending on security enabled or not, and skipping security tests when running opensearch without security. So all opensearchapi test would also run on a secure opensearch in addition with security tests and if security is disabled they get skipped and are displayed as skipped by go.
Any concerns with that?

Any concerns with that?

No concerns.
Generally I prefer declarative ways of doing things in the configuration rather than code, but that's a high level handwavy statement ;)


cannot create events in namespace: no RBAC policy matched

While running a single namespace deploy in OKD 3.11, I received this error:
I1206 16:36:51.435611       1 event.go:218] Event(v1.ObjectReference{Kind:"Route", Namespace:"sean-test", Name:"acme-test", UID:"9c7f323c-f1c3-11e8-8f91-005056a1102f", APIVersion:"route.openshift.io", ResourceVersion:"11119402", FieldPath:""}): type: 'Normal' reason: 'AcmeCertificateProvisioned' Successfully provided new certificate
E1206 16:36:51.437391       1 event.go:200] Server rejected event '&v1.Event{TypeMeta:v1.TypeMeta{Kind:"", APIVersion:""}, ObjectMeta:v1.ObjectMeta{Name:"acme-test.156dcbb1b935bc84", GenerateName:"", Namespace:"sean-test", SelfLink:"", UID:"", ResourceVersion:"", Generation:0, CreationTimestamp:v1.Time{Time:time.Time{wall:0x0, ext:0, loc:(*time.Location)(nil)}}, DeletionTimestamp:(*v1.Time)(nil), DeletionGracePeriodSeconds:(*int64)(nil), Labels:map[string]string(nil), Annotations:map[string]string(nil), OwnerReferences:[]v1.OwnerReference(nil), Initializers:(*v1.Initializers)(nil), Finalizers:[]string(nil), ClusterName:""}, InvolvedObject:v1.ObjectReference{Kind:"Route", Namespace:"sean-test", Name:"acme-test", UID:"9c7f323c-f1c3-11e8-8f91-005056a1102f", APIVersion:"route.openshift.io", ResourceVersion:"11119402", FieldPath:""}, Reason:"AcmeCertificateProvisioned", Message:"Successfully provided new certificate", Source:v1.EventSource{Component:"openshift-acme-controller", Host:""}, FirstTimestamp:v1.Time{Time:time.Time{wall:0xbefa71e8d9ec1e84, ext:178333914359, loc:(*time.Location)(0x18fe500)}}, LastTimestamp:v1.Time{Time:time.Time{wall:0xbefa71e8d9ec1e84, ext:178333914359, loc:(*time.Location)(0x18fe500)}}, Count:1, Type:"Normal"}': 'events is forbidden: User "system:serviceaccount:sean-test:openshift-acme" cannot create events in the namespace "sean-test": no RBAC policy matched' (will not retry!)

I looked into this after posting the original issue, and I think I know why they didn't include that in the role.
The default 'admin' rbac role only allows admins to view events.   rbac only allows you to assign roles when you have all the privileges in the role, which means admins can't assign a role that involves creating or editing events.
In order to make the role change above work, you need a cluster admin to assign the role for you (which doesn't scale well), or have cluster admins edit the default admin role to allow for event creation.
Given this, I'd like to change this to request that openshift-acme not log the event creation error when its in a single namespace deployment, and to document the lack of single namespace events.

From top of my head I don't see a reason why the project admin doesn't have permission to create namespace level events, might worth to poke the default permissions first with kube/openshift.

/remove-lifecycle stale
/lifecycle frozen

@tnozicka any news about that? I can confirm the bug.

I looked into this a few months ago.  IIRC, the upstream kubernetes code does not include creating/editing events in the default admin role, which has the side effect of not allowing users with the admin role to grant that access to another user.


update example making it use stackplots and create Petroff colors objects

Thanks for addressing this promptly! I'm having a look at https://github.com/cms-cat/cmsstyle/blob/5046b07f6193e01789d4c119a23ac64f954faa7c/tests/pdfs/example_rectangle_pos0.pdf and see that the legend is the wrong way round. Data should be on top, then signal since it's above background.

Fixed

Thanks again, much improved!
One remaining issue is that the legend of the lower panel in the ratio plots overlaps with the curves, see e.g. https://github.com/cms-cat/cmsstyle/blob/86e48a1052648a66203e12082b552001e30be6d7/tests/pdfs/example_rectangle_pos0_ratio.pdf

done

We can also merge this now and address this separately, as you prefer.


Doppler shift, need to add a "blue" offset

chan->f_carr = -rhorate / LAMBDA_L1 - 0.84
Then much more accurate
P.S.
However there are still minor inaccuracies

Hi Ivan,
first: I am no maintainer of this project, just curious :-)
how did you derive your correction parameter for the doppler shift? (Calculation/Simulation/Testing)
I think it would be very beneficial to add this in a comment if adopted in the source code. Magic numbers are always confusing and future improvements on the number will be easier if one knows how it was derived :-)
Cheers!

Hi Ivan,
first: I am no maintainer of this project, just curious :-)
how did you derive your correction parameter for the doppler shift? (Calculation/Simulation/Testing)
I think it would be very beneficial to add this in a comment if adopted in the source code. Magic numbers are always confusing and future improvements on the number will be easier if one knows how it was derived :-)
Cheers!

using u-blox N8T GPS receiver to receive see "pseudorange residual" in u-center
precise correction : -15.7542 Hz
#define DELTA_DOPPLER_FREQ (-15.7542)
chan->f_carr = -rhorate / LAMBDA_L1 + DELTA_DOPPLER_FREQ ;

using u-blox N8T GPS receiver to receive see "pseudorange residual" in u-center
precise correction : -15.7542 Hz
#define DELTA_DOPPLER_FREQ (-15.7542)
chan->f_carr = -rhorate / LAMBDA_L1 + DELTA_DOPPLER_FREQ ;

Hi Ivan,
strangely I no longer see your reply to this thread, but thanks anyways!
I think the relevant part of your answer was:
using u-blox N8T GPS receiver to receive see "pseudorange residual" in u-center
but then you came up with a much different value for being more precise. I think I'll check the value myself next time I use u-center, I just wondered if it maybe isn't time stable?

Hi Ivan,
strangely I no longer see your reply to this thread, but thanks anyways!
I think the relevant part of your answer was:
using u-blox N8T GPS receiver to receive see "pseudorange residual" in u-center
but then you came up with a much different value for being more precise. I think I'll check the value myself next time I use u-center, I just wondered if it maybe isn't time stable?

strangely I no longer see your reply to this thread,

the exact value "blue" offset is the top secret of the USA
so i deleted the message

I just wondered if it maybe isn't time stable?

for HackRF I use external generator
http://mxtal.ru/ru/products/?S=76&C=89&I=201
have better temperature stability and phase noise compared to the Rb standard.
and very precise frequency setting
such generator is three times more expensive than HackRF

strangely I no longer see your reply to this thread,

the exact value "blue" offset is the top secret of the USA
so i deleted the message

I just wondered if it maybe isn't time stable?

for HackRF I use external generator
http://mxtal.ru/ru/products/?S=76&C=89&I=201
have better temperature stability and phase noise compared to the Rb standard.
and very precise frequency setting
such generator is three times more expensive than HackRF

@lenhart
I upgraded my hackrf's with an OCXO DOC020F-010.0M.
https://www.digikey.de/product-detail/de/connor-winfield/DOC020F-010.0M/CW722-1-ND/2619615
This one has +-20ppb (1ppb = 1/10^9 = 10^-9) but is available down to +-1.5ppb. Just depends on what your spendings.

@lenhart
I upgraded my hackrf's with an OCXO DOC020F-010.0M.
https://www.digikey.de/product-detail/de/connor-winfield/DOC020F-010.0M/CW722-1-ND/2619615
This one has +-20ppb (1ppb = 1/10^9 = 10^-9) but is available down to +-1.5ppb. Just depends on what your spendings.

the exact value "blue" offset is the top secret of the USA
so i deleted the message
You don't want to bit the hand that feeds you, right?

the exact value "blue" offset is the top secret of the USA
so i deleted the message
You don't want to bit the hand that feeds you, right?

the exact value "blue" offset is the top secret of the USA
so i deleted the message

You don't want to bit the hand that feeds you, right?

following  top secret
https://github.com/osqzss/gps-sdr-sim/issues/270

I generated and transmitted the signal with HackRf. My recorded range for successful spoofing is 2 feet max. Is there a way to improve the range? I have come across that there is a 20db attenuator in the code. Can we disable it for improving the range?

the exact value "blue" offset is the top secret of the USA
so i deleted the message

You don't want to bit the hand that feeds you, right?

following  top secret
https://github.com/osqzss/gps-sdr-sim/issues/270

I generated and transmitted the signal with HackRf. My recorded range for successful spoofing is 2 feet max. Is there a way to improve the range? I have come across that there is a 20db attenuator in the code. Can we disable it for improving the range?


Add docs for configuration flags and env vars

Added some missing documentation surrounding etcdctl to hopefully save other people some time in the future (esp. for the environment variables)!
ping @robszumski

Looks great! Thank you for putting this together.

LGTM, too. @xiang90 is there any reason we should not merge?

(@xiang90 and company are reviewing for completeness prior to merge)

@joshix Just checked. LGTM

@Timer Can you change the commit message to etcdctl: add docs for configuration flags and env vars? I will merge this after you change the commit message. Thanks!

Sure @xiang90.

@xiang90: rebased and reworded

Thanks!


Add Hexlet courses (ru)

What does this PR do?
Add resources
For resources
Description
Why is this valuable (or not)?
These are good free courses by a well known company.
How do we know it's really free?
Their website says so and I finished some of them.
For book lists, is it a book? For course lists, is it a course? etc.
Yes.
Checklist:

[x] Read our contributing guidelines.
[x] Search for duplicates.
[x] Include author(s) and platform where appropriate.
[x] Put lists in alphabetical order, correct spacing.
[ ] Add needed indications (PDF, access notes, under construction).
[x] Used an informative name for this pull request.

Thanks, and welcome to free-programming-books!


ISSUE #7: Handle crashes of sxvi on recreation of preview image in …

…obsolete versions still in use in some distros.

@SebastianMeisel Thank you!

Thank you for this amazing project.
Am So., 9. Feb. 2020 um 20:40 Uhr schrieb Siddharth Dushantha <
<EMAIL_ADDRESS>
@SebastianMeisel https://github.com/SebastianMeisel Thank you!
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/sdushantha/fontpreview/pull/21?email_source=notifications&email_token=ALURSNMONT7WREGDJRCYI23RCBL4DA5CNFSM4KSD3FY2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOELGV5UY#issuecomment-583884499,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ALURSNL52AXAXBUQ4RQBVFLRCBL4DANCNFSM4KSD3FYQ
.


Fix panic dialogue when handling a message

The crash dialogue is not triggered when a panic happens when handling a message because the instances refcell is borrowed and so cannot be borrowed again in order to get the JsEditorHandle and display the dialogue. This caused the panic handler to panic.
This MR splits JsEditorHandles and rust Editors into separate refcells to fix this (testable currently by pressing delete while drawing with pen tool).
Fixes #574

Looks perfect now! Ready to merge when CI finishes.


How to completely remove?

Can you provide some uninstallation instructions, please?

docker-compose down

That just stops docker, though.  It doesn't remove either docker or the containers or images.

Remove all docker images: docker system prune -a
Uninstalling docker.


Fixing XDK version number in VSO build scripts

@jasonsandlin,
Thanks for your contribution as a Microsoft full-time employee or intern. You do not need to sign a CLA.
Thanks,
Microsoft Pull Request Bot


Fix tools=no compile when vsproj=yes

editor_sources was being added to the vs_project when godot is compiled with tools=no, which caused the build to fail. Changed to only add editor_sources to vs_project if compiled with tools=yes

Thanks!


docs: fix wrong url of quick-start

fix wrong url of quick-start from /zh/docs/tutorialgetting-started to /zh/docs/tutorial/getting-started

Description
the right url is  /zh/docs/tutorial/getting-started, but unfortunately in this file, it was /zh/docs/tutorialgetting-started

Motivation and Context

Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)
[ ] Enhancement (changes that improvement of current feature or performance)
[ ] Refactoring (changes that neither fixes a bug nor adds a feature)
[ ] Test Case (changes that add missing tests or correct existing tests)
[ ] Code style optimization (changes that do not affect the meaning of the code)
[x] Docs (changes that only update documentation)
[ ] Chore (changes that don't modify src or test files)

Self Check before Merge

[x] My code follows the code style of this project.
[x] My change requires a change to the documentation.
[x] I have updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.
[x] I have added tests to cover my changes.
[x] All new and existing tests passed.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 0.0%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
0

Relevant Lines:
0

💛  - Coveralls

首先感谢你在周末时间付出，这里有一个小的问题，commit 信息应该以 docs:开头。

已经修改了，🙏


Re-do our gradle setup

Move dependency versions to separate file

Test this at WireGuard-KT-47-b6dc559fc6c66e6420b6cf24dbe7efd2d529fb50.apk.
This is an automatically posted message from Travis-CI


API Server Logging

Closes #241
Code Changes

[x] Add configuration options for log leveling, output destination, and serialization
[x] Document the above new configuration options
[x] Add the loguru dependency
[x] Implement a custom logging.Handler to be used globally
[x] Replace calls to print with logging, within fidesapi/
[x] Add new logging where appropriate

Steps to Confirm

[ ] Run the API server by every possible means, and ensure it runs without errors
[ ] Send requests to every endpoint, and ensure no new errors are returned
[ ] Attempt to set many combinations of log_level, log_destination, and log_serialization via fidesctl.toml and ENV variables, and ensure the log output is generated as desired

Pre-Merge Checklist

[ ] All CI Pipelines Succeeded
[ ] Documentation Updated

Description Of Changes
The new means of sending log messages within fidesapi/ looks like:
from loguru import logger as log

log.info(f"Insert your {message} here!")

# You can also bind log fields (a psuedo-structured log entry) with .bind() or .contextualize():
log.bind(key=value).error(f"{something} has gone horribly wrong!")
# or
with log.contextualize(key=value):
	log.error(f"{something} has gone horribly wrong!")

At the moment, there is no custom API wrapping the log methods (.debug(), .info(), .warning(), .error(), etc.), because we have no other code that should execute upon any of these calls. If, for example, we decide in the future that we want to send telemetry for any error-level logs, we can create a custom logger that wraps Loguru's.

@PSalant726 i found a bug, but I don't think its one we can fix easily. If you run fidesctl -f <config> webserver stuff breaks, and it would be extremely complicated to thread that config through everything so we might have to leave it as-is and document that that command doesn't work with the config flag
additionally the graphs for visualization aren't working, its throwing a 500 but nothing shows in the logs (i guess that is the log-swallowing you were talking about)

@PSalant726 i made a few small changes, please give them a quick review and feel free to merge if they look good (or fix, but hopefully that won't be needed)
the main thing was just trying to simplify how the app starts up


Make it possible to know about "unknown" keys that might be set in [project] table

Inspired by https://github.com/pypa/flit/issues/505.

Actually, we should go one step further and try to detect typos like in https://github.com/pypa/build/blob/96f9188ad181907fbd3e0efdf32dd3dc959d39c3/src/build/init.py#L177.

As long as the caller is able to control how these would be presented, it'd satisfy my usecases!
The use case: In https://github.com/pradyunsg/sphinx-theme-builder, all output is piped through a ui.log function for stylizing and prefixing it, and all errors are presented as an instance of a rich-renderable exception).

Well, I intended to raise a warning, like pypa/build. You can specify your own custom warning handler by overwriting warnings.showwarning to decide how the warnings are presented to the user (see https://github.com/pypa/build/blob/96f9188ad181907fbd3e0efdf32dd3dc959d39c3/src/build/main.py#L64). I think this provides all the control needed for your use-case, right?

Sounds good to me!

Thinking about this a bit more... I think it would be great if the warning object has the "unknown" keys accessible directly as an attribute.

Based on a more recent usecase and "interaction with the real world", I would prefer that this be a validation error instead; since a build-backend should error out if it gets metadata here that's not declared properly.
If we want to allow for permissive parsing, I don't imagine folks would be using this library for that.

The main worry there would be due to backwards compatibility in [project] table, as it would prevent projects that use new keys that we currently don't know about from building.
Looking into this a bit more, I think a reasonable compromise would be to keep it a warning, but to add a filter to promote it to error by default. This way it would result in an error under normal situations, but still allow users to use -Wdefault or PYTHONWARNINGS=default (or ignore) to override it.
What do you think?

That sounds reasonable to me. In most libraries adding a filter by default would be frowned, but it shouldn't matter here because usages of pyproject-metadata are quite short-lived.
It seems difficult to introduce new keys in [project] and hence fairly unlikely to happen any time soon; an escape hatch can't hurt though.

IMO, unlike build, which has to process any backend, this is mostly used by backends. So if a key isn't recognized, then it's not being handled, because we are the ones handling it. For example, on the new PEP 639 license fields: we current don't handle it, so users (scikit-build-core, meson-python, and pdm.backend) can't use it in combination with pyproject-metadata. Setting license to string throws an error. And setting license-files to anything doesn't put it into the RFC metadata.
And typos are very common. I found thousands of typos in my download of all pyproject.tomls on PyPI.
If a build backend wants to support new fields, they can pre-process the input. That way they can manually handle some new field without having it
I think just making this an error is fine. Though we could have build backends opt-in by calling a validate_tables function or similar. We could have errors for the top level and for build-system as well. Unlike project, though, any future additions there could be unrelated to project metadata, while everything in project is supposed to affect the metadata for the project.

Also, the current state is inconsistent: arbitrary keys like project.stuff pass, but project.readme.stuff does not; existing entries can be modified too (license was just changed to allow a string), so if this was just for future safety, then why are sub tables checked specifically?


Strange, random extension crash

I don't know if this is an iOS 17-specific error, but I've started noticing problems where the keyboard extension starts crashing at launch, both when the keyboard is installed via Xcode or TestFlight.
I currently have such a crash in an Xcode build of a keyboard app. Debugging the app makes the keyboard crash every time it's opened, but debugging the keyboard extension somehow fixes the problem.
Since we can't debug the extension, I have installed KeyboardKit as a local package, to be able to disable all KeyboardKit-specific code and then enable it piece by piece until the crash appears.
I have tested this thoroughly, and have this sequence to help highlight the very strange nature of this crash:

Debug the main app from Xcode - the keyboard crashes
Remove KeyboardKit and just have class KeyboardViewController: UIInputViewController {} - still crashes
Disable Full Access - works
Re-enable Full Access - works
Re-add all KeyboardKit code - crash
Repeat step 3-6 - crash
Re-install the TestFlight app - works
Debug the main app from Xcode - crash
Re-install the TestFlight app - crash
Disable Full Access - works
Re-enable Full Access - works
...then random results for repeating the sequence

So, removing the KeybordKit framework import and ALL KeyboardKit code doesn't help. It's also very strange that installing the TestFlight app sometimes fixes the problem, but not always...and the same for Full Access.
I will focus on this next week, but any information you find would be of great help.

See #675 for even more strange behaviors.

I'm live streaming this bug hunt today:
https://twitch.com/danielsaidi
I just did a Twitch session where I first looked for memory leaks (no leaks in KeyboardKit) and tried to understand why the keyboard extension crashes after being displayed once.
I have removed all KeyboardKit linking, imports and code from the KeyboardKit app's keyboard, to rule out any KeyboardKit based reasons for the crash.
To sum up, showing the keyboard once may work. If not, toggling Full Access on/off kills the process, after which it's once again possible to show the keyboard...mostly.
However, if we then deploy the app from Xcode, the extension will once more start crashing at launch. Doing the Full Access maneuver makes it work...mostly.
The error log shows a bunch of errors (I replaced the bundle ID of my extension with com.xxx), for instance:
[u FAED32EA-0D37-40FE-918D-75FACBBF2D30:m ] [com.xxx(2.4.1)] Failed to start plugin; plugin is already activating

[u FAED32EA-0D37-40FE-918D-75FACBBF2D30:m ] [com.xxx(2.4.1)] Failed to start plugin; pkd returned an error: Error Domain=PlugInKit Code=4 "RBSLaunchRequest error trying to launch plugin com.xxx(FAED32EA-0D37-40FE-918D-75FACBBF2D30): Error Domain=RBSRequestErrorDomain Code=5 "Launch failed." UserInfo={NSLocalizedFailureReason=Launch failed., NSUnderlyingError=0x7acdc5ef0 {Error Domain=NSPOSIXErrorDomain Code=111 "Unknown error: 111" UserInfo={NSLocalizedDescription=Launchd job spawn failed}}}" UserInfo={NSLocalizedDescription=RBSLaunchRequest error trying to launch plugin com.xxx(FAED32EA-0D37-40FE-918D-75FACBBF2D30): Error Domain=RBSRequestErrorDomain Code=5 "Launch failed." UserInfo={NSLocalizedFailureReason=Launch failed., NSUnderlyingError=0x7acdc5ef0 {Error Domain=NSPOSIXErrorDomain Code=111 "Unknown error: 111" UserInfo={NSLocalizedDescription=Launchd job spawn failed}}}}

Plugin <id<PKPlugIn>: 0x157f22900; core = <[u FAED32EA-0D37-40FE-918D-75FACBBF2D30] [com.xxx(2.4.1)],[d 6D82DCED-06E7-4422-851A-07682868277E] [/private/var/containers/Bundle/Application/56E42C13-6DDF-4C17-B363-36C0BF5A2AA4/KeyboardKit.app/PlugIns/Keyboard.appex]>, instance = [(null)], state = 3, useCount = 0> must have pid! Extension request will fail

Failed to acquire assertion for plugin: <id<PKPlugIn>: 0x157f22900; core = <[u FAED32EA-0D37-40FE-918D-75FACBBF2D30] [com.xxx(2.4.1)],[d 6D82DCED-06E7-4422-851A-07682868277E] [/private/var/containers/Bundle/Application/56E42C13-6DDF-4C17-B363-36C0BF5A2AA4/KeyboardKit.app/PlugIns/Keyboard.appex]>, instance = [(null)], state = 3, useCount = 0> pid: 0

Unable to acquire process assertion in beginUsing: with plugin identifier: com.xxx, killing plugin

begin extension request <EXExtensionRequest: 0x282359ff0> Request PK UUID: 40E96D77-4481-42BD-BFEC-17A912AC60C3 with item count 0 complete with error: Error Domain=PlugInKit Code=4 "RBSLaunchRequest error trying to launch plugin com.xxx(FAED32EA-0D37-40FE-918D-75FACBBF2D30): Error Domain=RBSRequestErrorDomain Code=5 "Launch failed." UserInfo={NSLocalizedFailureReason=Launch failed., NSUnderlyingError=0x7acdc5ef0 {Error Domain=NSPOSIXErrorDomain Code=111 "Unknown error: 111" UserInfo={NSLocalizedDescription=Launchd job spawn failed}}}" UserInfo={NSLocalizedDescription=RBSLaunchRequest error trying to launch plugin com.xxx(FAED32EA-0D37-40FE-918D-75FACBBF2D30): Error Domain=RBSRequestErrorDomain Code=5 "Launch failed." UserInfo={NSLocalizedFailureReason=Launch failed., NSUnderlyingError=0x7acdc5ef0 {Error Domain=NSPOSIXErrorDomain Code=111 "Unknown error: 111" UserInfo={NSLocalizedDescription=Launchd job spawn failed}}}}

PlugInKit error in beginUsing: with plugin identifier: com.xxx, killing plugin

CAReportingClient.mm:532 Attempted to remove a reporter not created by this client { careporter_id=66 894 115 635 204 }

If I try to attach the debugger to the keyboard, nothing happens, since the extension itself fails to launch.
SO...this does not seem to be related to KeyboardKit at all, but it's imperative that we find the cause of the problem, since it will affect MANY people using keyboard extensions.
I will do a System Update to iOS 17.2 and macOS 14.2 to see if it starts behaving better.

I can verify that updating to iOS 17.2 fixes the problem.
It's unfortunate that we have to somehow inform users on iOS 17.0 and 17.1, but I'm personally relieved that this doesn't seem to originate from KeyboardKit.
Best of luck in informing your users bout how to solve this crash.

I'm keeping this open for a week or so, to give others with the same problem a chance to see it.

Happened to me on 17.3.1 os version. Disabling full access and re-enabling fixed it.

Happened to me on 17.3.1 os version. Disabling full access and re-enabling fixed it.

But only until the next launch, right? When this happens and I toggle full access, it only works once.

Is anyone else experiencing this now? I haven't had this crash in quite some time.

I'm closing this since I haven't seen this in a while. We can always reopen it if anyone experience this again.


Swap real/imag constants for negative G2 generator

The G2_NEG constants have the imaginary and real components switched.
This commit brings the G2_NEG_* constants into conformance with
https://eips.ethereum.org/EIPS/eip-197
It also ensures G2_NEG is on the curve.

Hi @nikeshnazareth ! Thanks for discovering it!
Do you mind rebasing the pull request with the master branch?
I just merged some changes that fix the failing checks.


chore(egen): Adds note to the deprecated notebook

This PR, adds a note to the deprecated notebooks and performs linter test.
REQUIRED: Fill out the below checklists or remove if irrelevant

If you are opening a PR for Official Notebooks under the notebooks/official folder, follow this mandatory checklist:

[ ] Use the notebook template as a starting point.
[ ] Follow the style and grammar rules outlined in the above notebook template.
[ ] Verify the notebook runs successfully in Colab since the automated tests cannot guarantee this even when it passes.
[x] Passes all the required automated checks. You can locally test for formatting and linting with these instructions.
[ ] You have consulted with a tech writer to see if tech writer review is necessary. If so, the notebook has been reviewed by a tech writer, and they have approved it.
[ ] This notebook has been added to the CODEOWNERS file under the Official Notebooks section, pointing to the author or the author's team.
[ ] The Jupyter notebook cleans up any artifacts it has created (datasets, ML models, endpoints, etc) so as not to eat up unnecessary resources.

/gcbrun


Af2 pdb file feature

What type of PR is this?
Remove the categories that do not apply

🎮 Feature: template and fasta input simultaneously

Description
Please provide a brief description of the changes here. Include why they are needed, if applicable.
Any demonstrations of the changes (Loom, gif, etc.) may also go here.
Related Tickets & Documents
Reference as needed.
Steps to Test
A list of steps a reviewer can walk through to test the changes.
Relevant GIF
Required 🐔

PR is ready for review and merge.
Tested successfully on staging and prod. Tool is called sokrypton/ColabFold v4.0 BETA TEST on both platforms. You can input both a fasta and pdb file at the same time. Use input_sequences.fasta and protein_complex.pdb as examples.


Postfix snippets not shown or shown too late

I created some postfix snippets.
I noticed that they always correctly expand, but they are either not shown in the completion list or are only shown if they fully written out. I have not yet been able to figure out when one or the other happens.
I don't have this problem with non-postfix snippets.
My config https://github.com/pogopaule/dotfiles/blob/master/nvim/lua/pogopaule/plugins/luasnip.lua

Let me look into this :)

I managed to narrow down the probable cause. A postfix snippet not appearing in the list only happens when my tmux source is active. So either the tmux source itself is the problem or that fact that the tmux source provides many many completion entries.
But what is not explained by the tmux source is the fact that I need to write out the full postfix snippet name to make it appear as a suggestion. This seems to be a problem independent of the "tmux source problem". This problem disappears if luasnip is my only source.
Example: The snippet's name is .log
With only .lo this happens

With .log

Now I disable all sources expect for luasnip and .l is sufficient to make the snippet appear.

Oh btw, are you using manual or auto-completion? It works for me with manual, but haven't tried auto

What do you mean by auto-completion? I guess I use manual because I have to manually expand snippets and can't recall that I have configured something related to it.

What do you mean by auto-completion?

Oh, just whether it's always on or if you have to press some key to invoke nvim-cmp.
Yup, I have the nvim_lsp-source :/ Are they only not listed with that one, or does any other source do it?

It is always on. The cmp list refreshes as I type.
I have these sources. If only luasnip, bufferand path are active --> no problem. If I activate tmux and/or nvim_lsp --> problem.

Oh does the order of the sources make a difference?

No, that does not matter. I tried a couple of variations.
But what I have noticed again is that the list of suggestions is populated with the postfix snippets for a blink of an eye and the kind of get overridden with the suggestions from other sources.

Mhmm, I guess you'd have to take a look at cmp's issues and find similar ones, maybe see what kind of debugging-steps are taken (is there a quick way to check when the postfix-snippet is overridden?)
Maybe there is some heuristic in cmp to recognize specific items, and postfix-snippets trigger just that (starting with a dot..)

May have something to do with keyword_pattern?
For me, postsnip completion worked for vim, while could not work for cpp.

Maybe, but it sounds a bit more complicated then that (source and filetype affect postfix snippets showing up, while keyword pattern stays the same the entire time)

Hi, any workaround for this problem?


fix: Added animation support for visible prop

The issue affects Banner component
Problem:

When you activate the "visible" prop, It won´t do anything. It should appear or disappear with an animation.

Fix:

Pass a function to save status to updaters startCollapse and startExpand on updaters.js.
Added usePreviousStatus hook to save previous status state and follow component logic.
Pass a function to save status to updaters switch on BannerAnimator.js.
Added new validation to collapse Banner after the visible is disabled.

@DevFoncy applied eslint changes


When I use new feature about multi-gpu in different servers, carla crash down.

The Primary server run:  ./CarlaUE4.sh --nullrhi
It can run as usual.
But when the Secondary server run: ./CarlaUE4.sh -carla-rpc-port=3000 -carla-primary-host= " the primary server ip" -ini:[/Script/Engine.Renderer
Settings]:r.GraphicsAdapter=0
The secondary server start up but can not load the map(all black) , meanwhile the primary server crash down, can not move the viewpoint.
Hoping someone could answer my question, thanks.

Hi, one question. The different servers are running in the same computer?
If you are using the same computer for all the servers, please check the GPU memory, because each server loads the map by itself.
About the black screen, by design, the secondary servers will never display anything, as they are only targeted to process sensors. So, they are setup automatically in no rendering mode. That is why you see nothing on those servers.
Regards,
Bernat

Hi, one question. The different servers are running in the same computer? If you are using the same computer for all the servers, please check the GPU memory, because each server loads the map by itself.
About the black screen, by design, the secondary servers will never display anything, as they are only targeted to process sensors. So, they are setup automatically in no rendering mode. That is why you see nothing on those servers.
Regards, Bernat

Thanks for your reply.
I got different servers running in different computers(local network). Can this work?
Another question is: When secondary server connect to the primary server, the primary server stucks with no reply. How can I slove it?

Hi，
I am also concerned about this issue.I have two PC:
PC1:Linux, run Primary server and Secondary servers
PC2:windows, run another Secondary servers
I want to configure 8 camera to ego car, every secondary server render 4 camera .But I find PC2 can't connect to Primary server.Should I must use Linux?
Another question ,how can I assign camera to which Secondary servers?

Hi， I am also concerned about this issue.I have two PC: PC1:Linux, run Primary server and Secondary servers PC2:windows, run another Secondary servers I want to configure 8 camera to ego car, every secondary server render 4 camera .But I find PC2 can't connect to Primary server.Should I must use Linux? Another question ,how can I assign camera to which Secondary servers?

About Q1, I think you can try to check firewall. Maybe the firewall block tcp messages. You can use telnet command to test the port is open or not.
And for Q2, I have no idea either. Maybe it assigns automatically.

I got different servers running in different computers(local network). Can this work?

It should work fine, but the ideal setup is to have all servers in the same computer with several GPU, because you don´t add the delay of the network transmission to each frame. But it should work fine.

Another question is: When secondary server connect to the primary server, the primary server stucks with no reply. How can I slove it?

What happens is that the multi-gpu setup only works on synchronous mode, because primary and secondaries needs to be synchronized each frame. That means that when the primary server detects a secondary connection, it becomes automatically in synchronous mode, and then, unless a client script has a loop doing tick(), all seems to be paused, but that is normal behavior.

I want to configure 8 camera to ego car, every secondary server render 4 camera .But I find PC2 can't connect to Primary server.Should I must use Linux?

No, it should work fine. Check the firewall rules please, as zmz0130 commented.

Another question ,how can I assign camera to which Secondary servers?

Right now the distribution of sensors goes in sequence between all the secondary servers. So, first sensor created goes to first secondary server, and second sensor to the next secondary, and so on. We don't have an API function to manage that, because for the point of view of a client the setup of servers is transparent and unknown. That could change in the future.

I got different servers running in different computers(local network). Can this work?

It should work fine, but the ideal setup is to have all servers in the same computer with several GPU, because you don´t add the delay of the network transmission to each frame. But it should work fine.

Another question is: When secondary server connect to the primary server, the primary server stucks with no reply. How can I slove it?

What happens is that the multi-gpu setup only works on synchronous mode, because primary and secondaries needs to be synchronized each frame. That means that when the primary server detects a secondary connection, it becomes automatically in synchronous mode, and then, unless a client script has a loop doing tick(), all seems to be paused, but that is normal behavior.

It works! Thank you so much.

@bernatx :
If different servers(secondary server) running in different computers(local network).How does the sensor data transmit between different servers(secondary server) ?
Secondary servers will finished this ,and carla client just run callback function. Or we should write some function to finished sensor data transmit between different servers(secondary server).

How does the sensor data transmit between different servers(secondary server) ?
Secondary servers will finished this ,and carla client just run callback function. Or we should write some function to finished sensor data transmit between different servers(secondary server).

From the client side you don't need to do anything specific for multi-gpu. The sensors data is transmitted the same way and directly from the secondary server that is processing each specific sensor, so there are no in the middle servers, the connection is from client to secondary server. The difference is that now the client can connect to different secondary servers for each sensor.

It works! Thank you so much.

Great

And by the way, another question. Could this multi-gpu feature run on compiled Carla Version? If so, how can I use it?

There are some flags you can use when you run Carla, they seems to run fine in Linux but not always in Windows. You can try these commands:
make launch-only ARGS="--editor-flags=\"-game -carla-rpc-port=3000 -carla-primary-host=<IP_ADDRESS>\""

Hi @bernatx can you help me with this problem in Carla multi-gpu feature. Detail post is here

@bernatx
I am running primary and secondary on the same GPU (its not full eben though i run two servers) as soon as i run the scenario runner secondary server crashes and it closes the window (fatal Error). can you help me with this one.


Blog-only BTC address

Make a blog-only btc address from a paper wallet.

Fixed in 9ff83eb4de3408fdf4c2175dcbadc9ae45bb752f


added en and jp text

Native payment text update (create a payment section)

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.Suresh Hosur seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


fix MySQL end-of-line comments parser

see #4545

Codecov Report

Merging #5601 (0590b8b) into master (c9c32ba) will increase coverage by 0.00%.
The diff coverage is 74.35%.

Additional details and impacted files

@@            Coverage Diff            @@
##             master    #5601   +/-   ##
=========================================
  Coverage     58.71%   58.71%
- Complexity    27640    27650   +10
=========================================
  Files          1323     1323
  Lines        127097   127115   +18
  Branches      23928    23935    +7
=========================================
+ Hits          74623    74641   +18
+ Misses        43202    43200    -2
- Partials       9272     9274    +2

Files
Coverage Δ

.../sql/dialect/mysql/visitor/MySqlOutputVisitor.java
59.80% <100.00%> (+0.02%)
:arrow_up:

...id/sql/dialect/mysql/parser/MySqlSelectParser.java
74.81% <50.00%> (-0.10%)
:arrow_down:

...aba/druid/sql/dialect/mysql/parser/MySqlLexer.java
71.33% <88.23%> (+2.52%)
:arrow_up:

...alibaba/druid/sql/visitor/SQLASTOutputVisitor.java
68.91% <61.11%> (-0.03%)
:arrow_down:

... and 7 files with indirect coverage changes

Continue to review full report in Codecov by Sentry.

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