You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@texera.apache.org by "SarahAsad23 (via GitHub)" <gi...@apache.org> on 2026/06/23 06:52:48 UTC
[PR] feat: Make Python Virtual Environment Persistent: Install Persistent Environment in Computing Unit [texera]
SarahAsad23 opened a new pull request, #5901:
URL: https://github.com/apache/texera/pull/5901
<!--
Thanks for sending a pull request (PR)! Here are some tips for you:
1. If this is your first time, please read our contributor guidelines:
[Contributing to Texera](https://github.com/apache/texera/blob/main/CONTRIBUTING.md)
2. Ensure you have added or run the appropriate tests for your PR
3. If the PR is work in progress, mark it a draft on GitHub.
4. Please write your PR title to summarize what this PR proposes, we
are following Conventional Commits style for PR titles as well.
5. Be sure to keep the PR description updated to reflect all changes.
-->
### What changes were proposed in this PR?
<!--
Please clarify what changes you are proposing. The purpose of this section
is to outline the changes. Here are some tips for you:
1. If you propose a new API, clarify the use case for a new API.
2. If you fix a bug, you can clarify why it is a bug.
3. If it is a refactoring, clarify what has been changed.
3. It would be helpful to include a before-and-after comparison using
screenshots or GIFs.
4. Please consider writing useful notes for better and faster reviews.
-->
This PR adds support for installing persistent Python Virtual Environments into a Computing Unit. All PVEs associated with a user are displayed within the CU management interface, allowing users to select and install an environment when it is needed for workflow execution.
When a PVE is installed, Texera recreates the environment inside the CU using the package information stored in the database. Once installation completes, the environment becomes available for Python UDF execution within that CU.
### Any related issues, documentation, discussions?
<!--
Please use this section to link other resources if not mentioned already.
1. If this PR fixes an issue, please include `Fixes #1234`, `Resolves #1234`
or `Closes #1234`. If it is only related, simply mention the issue number.
2. If there is design documentation, please add the link.
3. If there is a discussion in the mailing list, please add the link.
-->
Closes #5361.
### How was this PR tested?
<!--
If tests were added, say they were added here. Or simply mention that if the PR
is tested with existing test cases. Make sure to include/update test cases that
check the changes thoroughly including negative and positive cases if possible.
If it was tested in a way different from regular unit tests, please clarify how
you tested step by step, ideally copy and paste-able, so that other reviewers can
test and check, and descendants can verify in the future. If tests were not added,
please describe why they were not added and/or why it was difficult to add.
-->
Tested Manually and test cases in PveResourceSpec.
### Was this PR authored or co-authored using generative AI tooling?
<!--
If generative AI tooling has been used in the process of authoring this PR,
please include the phrase: 'Generated-by: ' followed by the name of the tool
and its version. If no, write 'No'.
Please refer to the [ASF Generative Tooling Guidance](https://www.apache.org/legal/generative-tooling.html) for details.
-->
Co-authored using: Claude Code
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@texera.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] feat: Make Python Virtual Environment Persistent: Install Persistent Environment in Computing Unit [texera]
Posted by "kunwp1 (via GitHub)" <gi...@apache.org>.
kunwp1 commented on code in PR #5901:
URL: https://github.com/apache/texera/pull/5901#discussion_r3487153642
##########
frontend/src/app/workspace/component/power-button/computing-unit-selection.component.ts:
##########
@@ -755,23 +764,115 @@ export class ComputingUnitSelectionComponent implements OnInit {
}
}
- addEnvironment(): void {
+ showPVEmodalVisible(): void {
+ this.pveModalVisible = true;
+ this.getPVEs();
+ this.refreshAvailableDbPves();
+ }
+
+ isSavedPveInstalledInCu(name: string): boolean {
+ const trimmed = name.trim();
+ return this.pves.some(p => p.isLocked && p.name.trim() === trimmed);
+ }
+
+ private refreshAvailableDbPves(): void {
+ this.workflowPveService
+ .listUserPves()
+ .pipe(untilDestroyed(this))
+ .subscribe({
+ next: records => {
+ this.availableDbPves = records;
+ },
+ error: (err: unknown) => {
+ console.error("Failed to fetch saved Python environments", err);
+ this.availableDbPves = [];
+ },
+ });
+ }
+
+ // Triggered when the user picks a saved PVE in the picker. Builds a new
+ // env card from its name + packages and starts CU install flow
+ // (createVirtualEnvironment), so pip output streams into the same panel.
+ installFromSavedPve(veid: number): void {
+ const saved = this.availableDbPves.find(p => p.veid === veid);
+ if (!saved) return;
+
+ const trimmedName = saved.name.trim();
+ const dbRows = this.parseDbPackages(saved.packages);
+
+ const existingIndex = this.pves.findIndex(p => p.isLocked && p.name.trim() === trimmedName);
+ if (existingIndex !== -1) {
+ this.applySavedPveAsUpdate(existingIndex, saved.name, dbRows);
+ return;
+ }
+
this.pves.push({
- name: "",
+ name: saved.name,
userPackages: [],
- newPackages: [],
+ newPackages: dbRows,
deletingPackages: [],
pipOutput: "",
prettyPipOutput: "",
expanded: true,
isInstalling: false,
isLocked: false,
});
+
+ const newIndex = this.pves.length - 1;
+
+ setTimeout(() => this.createVirtualEnvironment(newIndex), 0);
}
- showPVEmodalVisible(): void {
- this.pveModalVisible = true;
- this.getPVEs();
+ private parseDbPackages(packages: Record<string, string> | null | undefined): PveUserPackageRow[] {
+ return Object.entries(packages ?? {}).map(([name, raw]) => {
+ const match = raw?.match?.(/^(==|>=|<=)(.*)$/);
+ return {
+ name,
+ versionOp: (match ? match[1] : "==") as "==" | ">=" | "<=",
+ version: match ? match[2] : raw ?? "",
+ };
+ });
+ }
+
+ // Computes the diff between the saved DB record and the locked card's
+ // current user packages, then triggers the existing update path
+ private applySavedPveAsUpdate(index: number, displayName: string, dbRows: PveUserPackageRow[]): void {
+ const existing = this.pves[index];
+
+ const dbByName = new Map(dbRows.map(p => [p.name.trim().toLowerCase(), p]));
+ const existingByName = new Map(existing.userPackages.map(p => [p.name.trim().toLowerCase(), p]));
+
+ const toInstall: PveUserPackageRow[] = [];
+ const toDelete: { name: string; version: string }[] = [];
+
+ dbByName.forEach((db, key) => {
+ const cur = existingByName.get(key);
+ if (!cur) {
+ toInstall.push({ name: db.name, versionOp: db.versionOp, version: db.version });
+ } else if ((cur.version ?? "").trim() !== (db.version ?? "").trim()) {
+ toDelete.push({ name: cur.name, version: (cur.version ?? "").trim() });
+ toInstall.push({ name: db.name, versionOp: db.versionOp, version: db.version });
+ }
Review Comment:
Okay makes sense.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@texera.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] feat: Make Python Virtual Environment Persistent: Install Persistent Environment in Computing Unit [texera]
Posted by "kunwp1 (via GitHub)" <gi...@apache.org>.
kunwp1 merged PR #5901:
URL: https://github.com/apache/texera/pull/5901
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@texera.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] feat: Make Python Virtual Environment Persistent: Install Persistent Environment in Computing Unit [texera]
Posted by "kunwp1 (via GitHub)" <gi...@apache.org>.
kunwp1 commented on code in PR #5901:
URL: https://github.com/apache/texera/pull/5901#discussion_r3484907647
##########
frontend/src/app/workspace/component/power-button/computing-unit-selection.component.ts:
##########
@@ -755,23 +764,115 @@ export class ComputingUnitSelectionComponent implements OnInit {
}
}
- addEnvironment(): void {
+ showPVEmodalVisible(): void {
+ this.pveModalVisible = true;
+ this.getPVEs();
+ this.refreshAvailableDbPves();
+ }
+
+ isSavedPveInstalledInCu(name: string): boolean {
+ const trimmed = name.trim();
+ return this.pves.some(p => p.isLocked && p.name.trim() === trimmed);
+ }
+
+ private refreshAvailableDbPves(): void {
+ this.workflowPveService
+ .listUserPves()
+ .pipe(untilDestroyed(this))
+ .subscribe({
+ next: records => {
+ this.availableDbPves = records;
+ },
+ error: (err: unknown) => {
+ console.error("Failed to fetch saved Python environments", err);
+ this.availableDbPves = [];
+ },
+ });
+ }
+
+ // Triggered when the user picks a saved PVE in the picker. Builds a new
+ // env card from its name + packages and starts CU install flow
+ // (createVirtualEnvironment), so pip output streams into the same panel.
+ installFromSavedPve(veid: number): void {
+ const saved = this.availableDbPves.find(p => p.veid === veid);
+ if (!saved) return;
+
+ const trimmedName = saved.name.trim();
+ const dbRows = this.parseDbPackages(saved.packages);
+
+ const existingIndex = this.pves.findIndex(p => p.isLocked && p.name.trim() === trimmedName);
+ if (existingIndex !== -1) {
+ this.applySavedPveAsUpdate(existingIndex, saved.name, dbRows);
+ return;
+ }
+
this.pves.push({
- name: "",
+ name: saved.name,
userPackages: [],
- newPackages: [],
+ newPackages: dbRows,
deletingPackages: [],
pipOutput: "",
prettyPipOutput: "",
expanded: true,
isInstalling: false,
isLocked: false,
});
+
+ const newIndex = this.pves.length - 1;
+
+ setTimeout(() => this.createVirtualEnvironment(newIndex), 0);
}
- showPVEmodalVisible(): void {
- this.pveModalVisible = true;
- this.getPVEs();
+ private parseDbPackages(packages: Record<string, string> | null | undefined): PveUserPackageRow[] {
+ return Object.entries(packages ?? {}).map(([name, raw]) => {
+ const match = raw?.match?.(/^(==|>=|<=)(.*)$/);
+ return {
+ name,
+ versionOp: (match ? match[1] : "==") as "==" | ">=" | "<=",
+ version: match ? match[2] : raw ?? "",
+ };
+ });
+ }
+
+ // Computes the diff between the saved DB record and the locked card's
+ // current user packages, then triggers the existing update path
+ private applySavedPveAsUpdate(index: number, displayName: string, dbRows: PveUserPackageRow[]): void {
+ const existing = this.pves[index];
+
+ const dbByName = new Map(dbRows.map(p => [p.name.trim().toLowerCase(), p]));
+ const existingByName = new Map(existing.userPackages.map(p => [p.name.trim().toLowerCase(), p]));
+
+ const toInstall: PveUserPackageRow[] = [];
+ const toDelete: { name: string; version: string }[] = [];
+
+ dbByName.forEach((db, key) => {
+ const cur = existingByName.get(key);
+ if (!cur) {
+ toInstall.push({ name: db.name, versionOp: db.versionOp, version: db.version });
+ } else if ((cur.version ?? "").trim() !== (db.version ?? "").trim()) {
+ toDelete.push({ name: cur.name, version: (cur.version ?? "").trim() });
+ toInstall.push({ name: db.name, versionOp: db.versionOp, version: db.version });
+ }
Review Comment:
I don't understand this part. Is changing a constraint from `==1.26.0` to `>=1.26.0` (same number, different operator) treated as no change and not reinstalled? What's the logic behind this decision?
##########
frontend/src/app/workspace/component/power-button/computing-unit-selection.component.spec.ts:
##########
Review Comment:
Please use a different venv name that follows your new validation check.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@texera.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] feat: Make Python Virtual Environment Persistent: Install Persistent Environment in Computing Unit [texera]
Posted by "SarahAsad23 (via GitHub)" <gi...@apache.org>.
SarahAsad23 commented on code in PR #5901:
URL: https://github.com/apache/texera/pull/5901#discussion_r3486858224
##########
frontend/src/app/workspace/component/power-button/computing-unit-selection.component.ts:
##########
@@ -755,23 +764,115 @@ export class ComputingUnitSelectionComponent implements OnInit {
}
}
- addEnvironment(): void {
+ showPVEmodalVisible(): void {
+ this.pveModalVisible = true;
+ this.getPVEs();
+ this.refreshAvailableDbPves();
+ }
+
+ isSavedPveInstalledInCu(name: string): boolean {
+ const trimmed = name.trim();
+ return this.pves.some(p => p.isLocked && p.name.trim() === trimmed);
+ }
+
+ private refreshAvailableDbPves(): void {
+ this.workflowPveService
+ .listUserPves()
+ .pipe(untilDestroyed(this))
+ .subscribe({
+ next: records => {
+ this.availableDbPves = records;
+ },
+ error: (err: unknown) => {
+ console.error("Failed to fetch saved Python environments", err);
+ this.availableDbPves = [];
+ },
+ });
+ }
+
+ // Triggered when the user picks a saved PVE in the picker. Builds a new
+ // env card from its name + packages and starts CU install flow
+ // (createVirtualEnvironment), so pip output streams into the same panel.
+ installFromSavedPve(veid: number): void {
+ const saved = this.availableDbPves.find(p => p.veid === veid);
+ if (!saved) return;
+
+ const trimmedName = saved.name.trim();
+ const dbRows = this.parseDbPackages(saved.packages);
+
+ const existingIndex = this.pves.findIndex(p => p.isLocked && p.name.trim() === trimmedName);
+ if (existingIndex !== -1) {
+ this.applySavedPveAsUpdate(existingIndex, saved.name, dbRows);
+ return;
+ }
+
this.pves.push({
- name: "",
+ name: saved.name,
userPackages: [],
- newPackages: [],
+ newPackages: dbRows,
deletingPackages: [],
pipOutput: "",
prettyPipOutput: "",
expanded: true,
isInstalling: false,
isLocked: false,
});
+
+ const newIndex = this.pves.length - 1;
+
+ setTimeout(() => this.createVirtualEnvironment(newIndex), 0);
}
- showPVEmodalVisible(): void {
- this.pveModalVisible = true;
- this.getPVEs();
+ private parseDbPackages(packages: Record<string, string> | null | undefined): PveUserPackageRow[] {
+ return Object.entries(packages ?? {}).map(([name, raw]) => {
+ const match = raw?.match?.(/^(==|>=|<=)(.*)$/);
+ return {
+ name,
+ versionOp: (match ? match[1] : "==") as "==" | ">=" | "<=",
+ version: match ? match[2] : raw ?? "",
+ };
+ });
+ }
+
+ // Computes the diff between the saved DB record and the locked card's
+ // current user packages, then triggers the existing update path
+ private applySavedPveAsUpdate(index: number, displayName: string, dbRows: PveUserPackageRow[]): void {
+ const existing = this.pves[index];
+
+ const dbByName = new Map(dbRows.map(p => [p.name.trim().toLowerCase(), p]));
+ const existingByName = new Map(existing.userPackages.map(p => [p.name.trim().toLowerCase(), p]));
+
+ const toInstall: PveUserPackageRow[] = [];
+ const toDelete: { name: string; version: string }[] = [];
+
+ dbByName.forEach((db, key) => {
+ const cur = existingByName.get(key);
+ if (!cur) {
+ toInstall.push({ name: db.name, versionOp: db.versionOp, version: db.version });
+ } else if ((cur.version ?? "").trim() !== (db.version ?? "").trim()) {
+ toDelete.push({ name: cur.name, version: (cur.version ?? "").trim() });
+ toInstall.push({ name: db.name, versionOp: db.versionOp, version: db.version });
+ }
Review Comment:
The logic is based on whether the currently installed version satisfies the updated constraint. For example, if the requirement changes from ==1.26.0 to >=1.26.0 and 1.26.0 is already installed, the new constraint is already satisfied, so no reinstallation is needed.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@texera.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] feat: Make Python Virtual Environment Persistent: Install Persistent Environment in Computing Unit [texera]
Posted by "kunwp1 (via GitHub)" <gi...@apache.org>.
kunwp1 commented on code in PR #5901:
URL: https://github.com/apache/texera/pull/5901#discussion_r3478604785
##########
frontend/src/app/workspace/component/power-button/computing-unit-selection.component.ts:
##########
Review Comment:
In the previous PR, your `user-venv.component.ts` checks the virtual environment name as non-empty only but here the name that are not alphanumeric strings are rejected. The check logic needs to be consistent. Otherwise, I can imagine the case where the user saves an env with `_` in the dashboard and install the env to the CU and gets an error.
##########
frontend/src/app/workspace/component/power-button/computing-unit-selection.component.spec.ts:
##########
Review Comment:
Please add the test that covers `parseDbPackages` and `refreshAvailableDbPves`. Also, please add more tests with the venv names to validate `installFromSavedPve`)
##########
frontend/src/app/workspace/component/power-button/computing-unit-selection.component.ts:
##########
Review Comment:
Reset `availableDbPves` here.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@texera.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] feat: Make Python Virtual Environment Persistent: Install Persistent Environment in Computing Unit [texera]
Posted by "github-actions[bot] (via GitHub)" <gi...@apache.org>.
github-actions[bot] commented on PR #5901:
URL: https://github.com/apache/texera/pull/5901#issuecomment-4776535652
<!-- texera-reviewer-suggestion -->
### Automated Reviewer Suggestions
Based on the `git blame` history of the changed files, we recommend the following reviewers:
- No candidates found from `git blame` history.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@texera.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] feat: Make Python Virtual Environment Persistent: Install Persistent Environment in Computing Unit [texera]
Posted by "codecov-commenter (via GitHub)" <gi...@apache.org>.
codecov-commenter commented on PR #5901:
URL: https://github.com/apache/texera/pull/5901#issuecomment-4776575458
## [Codecov](https://app.codecov.io/gh/apache/texera/pull/5901?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) Report
:x: Patch coverage is `6.25000%` with `30 lines` in your changes missing coverage. Please review.
:white_check_mark: Project coverage is 54.07%. Comparing base ([`8803d08`](https://app.codecov.io/gh/apache/texera/commit/8803d084cd68fc98c06c782aa7a56450e7ddc9ee?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache)) to head ([`50ca0bf`](https://app.codecov.io/gh/apache/texera/commit/50ca0bf186c9eed4f9b45a30ba8dcdbb3f287edd?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache)).
| [Files with missing lines](https://app.codecov.io/gh/apache/texera/pull/5901?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | Patch % | Lines |
|---|---|---|
| [...power-button/computing-unit-selection.component.ts](https://app.codecov.io/gh/apache/texera/pull/5901?src=pr&el=tree&filepath=frontend%2Fsrc%2Fapp%2Fworkspace%2Fcomponent%2Fpower-button%2Fcomputing-unit-selection.component.ts&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#diff-ZnJvbnRlbmQvc3JjL2FwcC93b3Jrc3BhY2UvY29tcG9uZW50L3Bvd2VyLWJ1dHRvbi9jb21wdXRpbmctdW5pdC1zZWxlY3Rpb24uY29tcG9uZW50LnRz) | 11.11% | [16 Missing :warning: ](https://app.codecov.io/gh/apache/texera/pull/5901?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
| [...wer-button/computing-unit-selection.component.html](https://app.codecov.io/gh/apache/texera/pull/5901?src=pr&el=tree&filepath=frontend%2Fsrc%2Fapp%2Fworkspace%2Fcomponent%2Fpower-button%2Fcomputing-unit-selection.component.html&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#diff-ZnJvbnRlbmQvc3JjL2FwcC93b3Jrc3BhY2UvY29tcG9uZW50L3Bvd2VyLWJ1dHRvbi9jb21wdXRpbmctdW5pdC1zZWxlY3Rpb24uY29tcG9uZW50Lmh0bWw=) | 0.00% | [14 Missing :warning: ](https://app.codecov.io/gh/apache/texera/pull/5901?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
<details><summary>Additional details and impacted files</summary>
```diff
@@ Coverage Diff @@
## main #5901 +/- ##
============================================
- Coverage 54.11% 54.07% -0.05%
Complexity 2819 2819
============================================
Files 1103 1103
Lines 42650 42675 +25
Branches 4588 4591 +3
============================================
- Hits 23079 23075 -4
- Misses 18226 18258 +32
+ Partials 1345 1342 -3
```
| [Flag](https://app.codecov.io/gh/apache/texera/pull/5901/flags?src=pr&el=flags&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | Coverage Δ | | *Carryforward flag |
|---|---|---|---|
| [access-control-service](https://app.codecov.io/gh/apache/texera/pull/5901/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `70.44% <ø> (ø)` | | Carriedforward from [8803d08](https://app.codecov.io/gh/apache/texera/commit/8803d084cd68fc98c06c782aa7a56450e7ddc9ee?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
| [agent-service](https://app.codecov.io/gh/apache/texera/pull/5901/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `34.36% <ø> (ø)` | | Carriedforward from [8803d08](https://app.codecov.io/gh/apache/texera/commit/8803d084cd68fc98c06c782aa7a56450e7ddc9ee?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
| [amber](https://app.codecov.io/gh/apache/texera/pull/5901/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `55.64% <ø> (ø)` | | Carriedforward from [8803d08](https://app.codecov.io/gh/apache/texera/commit/8803d084cd68fc98c06c782aa7a56450e7ddc9ee?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
| [computing-unit-managing-service](https://app.codecov.io/gh/apache/texera/pull/5901/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `1.65% <ø> (ø)` | | Carriedforward from [8803d08](https://app.codecov.io/gh/apache/texera/commit/8803d084cd68fc98c06c782aa7a56450e7ddc9ee?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
| [config-service](https://app.codecov.io/gh/apache/texera/pull/5901/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `57.35% <ø> (ø)` | | Carriedforward from [8803d08](https://app.codecov.io/gh/apache/texera/commit/8803d084cd68fc98c06c782aa7a56450e7ddc9ee?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
| [file-service](https://app.codecov.io/gh/apache/texera/pull/5901/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `58.59% <ø> (ø)` | | Carriedforward from [8803d08](https://app.codecov.io/gh/apache/texera/commit/8803d084cd68fc98c06c782aa7a56450e7ddc9ee?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
| [frontend](https://app.codecov.io/gh/apache/texera/pull/5901/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `48.03% <6.25%> (-0.10%)` | :arrow_down: | |
| [pyamber](https://app.codecov.io/gh/apache/texera/pull/5901/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `90.20% <ø> (ø)` | | Carriedforward from [8803d08](https://app.codecov.io/gh/apache/texera/commit/8803d084cd68fc98c06c782aa7a56450e7ddc9ee?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
| [python](https://app.codecov.io/gh/apache/texera/pull/5901/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `90.76% <ø> (ø)` | | Carriedforward from [8803d08](https://app.codecov.io/gh/apache/texera/commit/8803d084cd68fc98c06c782aa7a56450e7ddc9ee?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
| [workflow-compiling-service](https://app.codecov.io/gh/apache/texera/pull/5901/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `58.69% <ø> (ø)` | | Carriedforward from [8803d08](https://app.codecov.io/gh/apache/texera/commit/8803d084cd68fc98c06c782aa7a56450e7ddc9ee?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
*This pull request uses carry forward flags. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) to find out more.
</details>
[:umbrella: View full report in Codecov by Harness](https://app.codecov.io/gh/apache/texera/pull/5901?dropdown=coverage&src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache).
:loudspeaker: Have feedback on the report? [Share it here](https://about.codecov.io/codecov-pr-comment-feedback/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache).
<details><summary> :rocket: New features to boost your workflow: </summary>
- :package: [JS Bundle Analysis](https://docs.codecov.com/docs/javascript-bundle-analysis): Save yourself from yourself by tracking and limiting bundle sizes in JS merges.
</details>
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@texera.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org