You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by po...@apache.org on 2026/03/09 15:31:09 UTC
(airflow) branch v2-11-test updated: Upgrade airflow UI to latest reasonable dependencies. (#63158)
This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch v2-11-test
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/v2-11-test by this push:
new f9ac51ef20a Upgrade airflow UI to latest reasonable dependencies. (#63158)
f9ac51ef20a is described below
commit f9ac51ef20a226e7c8d5a314c6c6f9c5b7152cd4
Author: Dependabot [bot] <49...@users.noreply.github.com>
AuthorDate: Mon Mar 9 16:31:01 2026 +0100
Upgrade airflow UI to latest reasonable dependencies. (#63158)
- Bump 56 npm dependencies in airflow/www (React 18→19, ESLint 9 flat config migration,
stylelint 13→17, echarts 5→6, framer-motion 6→12, etc.)
- Migrate ESLint from .eslintrc to flat config (eslint.config.mjs) with FlatCompat shim
- Add jest-globals-setup.js for React 19 compatibility
- Update webpack, jest, and alias-rest-types configs for new dependency versions
- Adapt all www source files for React 19 API changes and updated library APIs
- Bump uv from 0.10.7 to 0.10.9 across Dockerfiles, breeze, and CI scripts
- Bump prek from 0.3.2 to 0.3.5 to fix stylelint hook failing to resolve
additional_dependencies with peer deps
- Update node version from 22.2.0 to 22.13.0 in pre-commit config
- Remove legacy UI/API label checks from selective checks (we only have
legacy ui)
- Add Apache license header to new eslint.config.mjs
- Update .stylelintrc rules for stylelint 17 compatibility
Co-authored-by: dependabot[bot] <49...@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <no...@anthropic.com>
---
.github/actions/install-prek/action.yml | 4 +-
.github/boring-cyborg.yml | 6 +-
.pre-commit-config.yaml | 10 +-
Dockerfile | 2 +-
Dockerfile.ci | 4 +-
RELEASE_NOTES.rst | 1 +
airflow/reproducible_build.yaml | 4 +-
airflow/www/.eslintignore | 7 -
airflow/www/.eslintrc | 67 -
airflow/www/.stylelintrc | 23 +-
airflow/www/alias-rest-types.js | 22 +-
airflow/www/changes_in_2_11_dependencies.rst | 348 +
airflow/www/changes_in_2_11_dependencies.txt | 86 -
airflow/www/eslint.config.mjs | 154 +
airflow/www/jest-globals-setup.js | 62 +
airflow/www/jest-setup.js | 5 +-
airflow/www/jest.config.js | 31 +-
airflow/www/package.json | 116 +-
airflow/www/static/css/bootstrap-theme.css | 47 +-
airflow/www/static/css/chart.css | 1 -
airflow/www/static/css/graph.css | 12 +-
airflow/www/static/js/api/useClearRun.ts | 4 +-
airflow/www/static/js/api/useClearTask.ts | 2 +-
airflow/www/static/js/api/useClearTaskDryRun.ts | 4 +-
airflow/www/static/js/api/useCreateDatasetEvent.ts | 4 +-
airflow/www/static/js/api/useDagCode.ts | 4 +-
airflow/www/static/js/api/useDagDetails.ts | 6 +-
airflow/www/static/js/api/useDagRuns.tsx | 2 +-
airflow/www/static/js/api/useDags.tsx | 2 +-
airflow/www/static/js/api/useDataset.ts | 2 +-
airflow/www/static/js/api/useDatasetEvents.ts | 2 +-
airflow/www/static/js/api/useDatasets.ts | 2 +-
airflow/www/static/js/api/useDatasetsSummary.ts | 2 +-
airflow/www/static/js/api/useEventLogs.tsx | 2 +-
airflow/www/static/js/api/useExtraLinks.ts | 12 +-
airflow/www/static/js/api/useGraphData.ts | 2 +-
airflow/www/static/js/api/useGridData.ts | 6 +-
airflow/www/static/js/api/useHealth.ts | 2 +-
.../www/static/js/api/useHistoricalMetricsData.ts | 2 +-
airflow/www/static/js/api/useMappedInstances.ts | 2 +-
airflow/www/static/js/api/useMarkFailedRun.ts | 2 +-
airflow/www/static/js/api/useMarkFailedTask.ts | 2 +-
airflow/www/static/js/api/useMarkSuccessRun.ts | 2 +-
airflow/www/static/js/api/useMarkSuccessTask.ts | 2 +-
airflow/www/static/js/api/useMarkTaskDryRun.ts | 2 +-
airflow/www/static/js/api/usePools.ts | 2 +-
airflow/www/static/js/api/useQueueRun.ts | 2 +-
airflow/www/static/js/api/useRenderedK8s.ts | 4 +-
airflow/www/static/js/api/useSetDagRunNote.ts | 4 +-
.../www/static/js/api/useSetTaskInstanceNote.ts | 14 +-
airflow/www/static/js/api/useTIHistory.ts | 2 +-
.../www/static/js/api/useTaskFailedDependency.ts | 4 +-
airflow/www/static/js/api/useTaskInstance.ts | 8 +-
airflow/www/static/js/api/useTaskLog.ts | 2 +-
airflow/www/static/js/api/useTaskXcom.ts | 6 +-
.../www/static/js/api/useUpstreamDatasetEvents.ts | 2 +-
.../historical-metrics/PieChart.tsx | 4 +-
.../www/static/js/cluster-activity/index.test.tsx | 12 +-
airflow/www/static/js/cluster-activity/index.tsx | 2 +-
.../js/cluster-activity/live-metrics/DagRuns.tsx | 4 +-
.../js/cluster-activity/live-metrics/Pools.tsx | 2 +-
.../www/static/js/cluster-activity/useFilters.tsx | 4 +-
.../www/static/js/components/Clipboard.test.tsx | 2 +-
airflow/www/static/js/components/Clipboard.tsx | 4 +-
.../www/static/js/components/DatasetEventCard.tsx | 2 +-
.../static/js/components/InstanceTooltip.test.tsx | 10 +-
.../www/static/js/components/InstanceTooltip.tsx | 2 +-
.../www/static/js/components/LinkButton.test.tsx | 2 +-
.../www/static/js/components/NewTable/NewTable.tsx | 6 +-
.../js/components/NewTable/createSkeleton.tsx | 4 +-
.../js/components/NewTable/searchParams.test.ts | 6 +-
.../static/js/components/NewTable/searchParams.ts | 8 +-
.../js/components/NewTable/useTableUrlState.ts | 6 +-
airflow/www/static/js/components/ReactMarkdown.tsx | 11 +-
.../static/js/components/SourceTaskInstance.tsx | 4 +-
.../www/static/js/components/TabWithTooltip.tsx | 2 +-
.../www/static/js/components/Table/CardList.tsx | 2 +-
.../www/static/js/components/Table/Table.test.tsx | 16 +-
airflow/www/static/js/components/Table/index.tsx | 2 +-
airflow/www/static/js/components/Time.test.tsx | 6 +-
airflow/www/static/js/components/Tooltip.tsx | 6 +-
.../www/static/js/components/TriggeredDagRuns.tsx | 2 +-
airflow/www/static/js/components/ViewTimeDelta.tsx | 2 +-
airflow/www/static/js/components/utils.test.ts | 2 +-
airflow/www/static/js/components/utils.ts | 2 +-
airflow/www/static/js/connection_form.js | 20 +-
airflow/www/static/js/context/autorefresh.tsx | 8 +-
airflow/www/static/js/context/containerRef.tsx | 1 -
airflow/www/static/js/context/timezone.tsx | 4 +-
airflow/www/static/js/dag.js | 8 +-
airflow/www/static/js/dag/Main.tsx | 18 +-
.../static/js/dag/details/NotesAccordion.test.tsx | 8 +-
.../www/static/js/dag/details/NotesAccordion.tsx | 2 +-
airflow/www/static/js/dag/details/dag/Calendar.tsx | 4 +-
airflow/www/static/js/dag/details/dag/Dag.tsx | 10 +-
.../www/static/js/dag/details/dag/RunDuration.tsx | 2 +-
.../static/js/dag/details/dag/RunDurationChart.tsx | 6 +-
.../static/js/dag/details/dagCode/CodeBlock.tsx | 2 +-
.../www/static/js/dag/details/dagRun/ClearRun.tsx | 8 +-
.../js/dag/details/dagRun/DatasetTriggerEvents.tsx | 2 +-
.../www/static/js/dag/details/dagRun/MarkRunAs.tsx | 4 +-
airflow/www/static/js/dag/details/gantt/Row.tsx | 8 +-
airflow/www/static/js/dag/details/gantt/index.tsx | 4 +-
.../static/js/dag/details/graph/DagNode.test.tsx | 6 +-
airflow/www/static/js/dag/details/graph/index.tsx | 12 +-
airflow/www/static/js/dag/details/graph/utils.ts | 4 +-
airflow/www/static/js/dag/details/index.tsx | 13 +-
.../static/js/dag/details/task/AllTaskDuration.tsx | 2 +-
.../static/js/dag/details/task/TaskDuration.tsx | 6 +-
.../details/taskInstance/DatasetUpdateEvents.tsx | 2 +-
.../static/js/dag/details/taskInstance/Details.tsx | 8 +-
.../js/dag/details/taskInstance/Logs/LogBlock.tsx | 4 +-
.../dag/details/taskInstance/Logs/LogLink.test.tsx | 12 +-
.../js/dag/details/taskInstance/Logs/LogLink.tsx | 6 +-
.../dag/details/taskInstance/Logs/index.test.tsx | 87 +-
.../js/dag/details/taskInstance/Logs/index.tsx | 14 +-
.../dag/details/taskInstance/Logs/utils.test.tsx | 20 +-
.../js/dag/details/taskInstance/Logs/utils.ts | 10 +-
.../dag/details/taskInstance/MappedInstances.tsx | 4 +-
.../www/static/js/dag/details/taskInstance/Nav.tsx | 4 +-
.../js/dag/details/taskInstance/Xcom/XcomEntry.tsx | 2 +-
.../taskInstance/taskActions/MarkInstanceAs.tsx | 2 +-
airflow/www/static/js/dag/grid/dagRuns/Bar.tsx | 8 +-
.../www/static/js/dag/grid/dagRuns/index.test.tsx | 18 +-
airflow/www/static/js/dag/grid/index.test.tsx | 20 +-
.../www/static/js/dag/grid/renderTaskRows.test.tsx | 6 +-
airflow/www/static/js/dag/index.tsx | 2 +-
airflow/www/static/js/dag/nav/FilterBar.tsx | 4 +-
airflow/www/static/js/dag/nav/LegendRow.test.tsx | 8 +-
airflow/www/static/js/dag/useFilters.test.tsx | 8 +-
airflow/www/static/js/dag/useFilters.tsx | 10 +-
airflow/www/static/js/dag_dependencies.js | 6 +-
airflow/www/static/js/dags.js | 20 +-
.../www/static/js/datasets/CreateDatasetEvent.tsx | 2 +-
airflow/www/static/js/datasets/DatasetDetails.tsx | 2 +-
airflow/www/static/js/datasets/DatasetEvents.tsx | 2 +-
.../www/static/js/datasets/DatasetsList.test.tsx | 4 +-
airflow/www/static/js/datasets/DatasetsList.tsx | 2 +-
airflow/www/static/js/datasets/Graph/index.tsx | 4 +-
airflow/www/static/js/datasets/Main.tsx | 6 +-
airflow/www/static/js/datasets/index.tsx | 2 +-
airflow/www/static/js/datetime_utils.js | 4 +-
airflow/www/static/js/main.js | 8 +-
airflow/www/static/js/task_instances.js | 6 +-
airflow/www/static/js/ti_log.js | 18 +-
airflow/www/static/js/trigger.js | 6 +-
airflow/www/static/js/types/api-generated.ts | 4831 ++++++++-----
.../www/static/js/types/react-table-config.d.ts | 45 +-
airflow/www/static/js/utils/graph.ts | 10 +-
airflow/www/static/js/utils/index.test.ts | 12 +-
airflow/www/static/js/utils/index.ts | 8 +-
airflow/www/static/js/utils/useKeysPress.ts | 6 +-
airflow/www/webpack.config.js | 23 +-
airflow/www/yarn.lock | 7416 ++++++++------------
dev/breeze/doc/ci/02_images.md | 4 +-
dev/breeze/doc/ci/04_selective_checks.md | 1 -
.../commands/release_management_commands.py | 4 +-
dev/breeze/src/airflow_breeze/global_constants.py | 2 +-
.../src/airflow_breeze/utils/selective_checks.py | 51 +-
dev/breeze/tests/test_selective_checks.py | 118 -
dev/breeze/uv.lock | 402 +-
scripts/ci/install_breeze.sh | 2 +-
.../ci/pre_commit/update_installers_and_prek.py | 2 +-
163 files changed, 7501 insertions(+), 7222 deletions(-)
diff --git a/.github/actions/install-prek/action.yml b/.github/actions/install-prek/action.yml
index 0d7129f53c1..8ee3b5e22a0 100644
--- a/.github/actions/install-prek/action.yml
+++ b/.github/actions/install-prek/action.yml
@@ -24,10 +24,10 @@ inputs:
default: "3.10"
uv-version:
description: 'uv version to use'
- default: "0.10.7" # Keep this comment to allow automatic replacement of uv version
+ default: "0.10.9" # Keep this comment to allow automatic replacement of uv version
prek-version:
description: 'prek version to use'
- default: "0.3.2" # Keep this comment to allow automatic replacement of prek version
+ default: "0.3.5" # Keep this comment to allow automatic replacement of prek version
runs:
using: "composite"
steps:
diff --git a/.github/boring-cyborg.yml b/.github/boring-cyborg.yml
index 0e118fa3ee3..8b8f45bb727 100644
--- a/.github/boring-cyborg.yml
+++ b/.github/boring-cyborg.yml
@@ -571,8 +571,7 @@ labelPRBasedOnFilePath:
- .pre-commit-config.yaml
- .rat-excludes
- .readthedocs.yml
- - airflow/www/.eslintignore
- - airflow/www/.eslintrc
+ - airflow/www/eslint.config.mjs
- airflow/www/.stylelintignore
- airflow/www/.stylelintrc
@@ -592,8 +591,7 @@ labelPRBasedOnFilePath:
area:UI:
- airflow/www/static/**/*
- airflow/www/templates/**/*
- - airflow/www/.eslintignore
- - airflow/www/.eslintrc
+ - airflow/www/eslint.config.mjs
- airflow/www/.stylelintignore
- airflow/www/.stylelintrc
- airflow/www/package.json
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 7a647960395..b1631172846 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -18,8 +18,8 @@
default_stages: [pre-commit, pre-push]
default_language_version:
python: python3
- node: 22.2.0
-minimum_prek_version: '0.3.2'
+ node: 22.13.0
+minimum_prek_version: '0.3.5'
exclude: ^.*/.*_vendor/
repos:
- repo: meta
@@ -244,7 +244,7 @@ repos:
name: Check XML files with xmllint
- id: trailing-whitespace
name: Remove trailing whitespace at end of line
- exclude: ^docs/apache-airflow/img/.*\.dot|^dev/breeze/doc/images/output.*$
+ exclude: ^docs/apache-airflow/img/.*\.dot|^dev/breeze/doc/images/output.*$|^airflow/www/static/js/types/api-generated\.ts$
- id: pretty-format-json
name: Format JSON files
args:
@@ -732,11 +732,11 @@ repos:
exclude: ^dev/breeze/autocomplete/.*$
- id: lint-css
name: stylelint
- entry: "stylelint"
+ entry: bash -c 'stylelint --config-basedir "$(dirname "$(which stylelint)")/../lib" "$@"' --
language: node
files: ^airflow/www/.*\.(css|sass|scss)$
# Keep dependency versions in sync w/ airflow/www/package.json
- additional_dependencies: ['stylelint@13.3.1', 'stylelint-config-standard@20.0.0', 'stylelint-config-prettier@9.0.5']
+ additional_dependencies: ['stylelint@17.4.0', 'stylelint-config-standard@40.0.0']
- id: compile-www-assets
name: Compile www assets (manual)
language: node
diff --git a/Dockerfile b/Dockerfile
index dc05d17fc7c..3f3dcd41151 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -55,7 +55,7 @@ ARG PYTHON_BASE_IMAGE="python:3.9-slim-bookworm"
# Also use `force pip` label on your PR to swap all places we use `uv` to `pip`
ARG AIRFLOW_PIP_VERSION=26.0.1
# ARG AIRFLOW_PIP_VERSION="git+https://github.com/pypa/pip.git@main"
-ARG AIRFLOW_UV_VERSION=0.10.7
+ARG AIRFLOW_UV_VERSION=0.10.9
ARG AIRFLOW_USE_UV="false"
ARG UV_HTTP_TIMEOUT="300"
ARG AIRFLOW_IMAGE_REPOSITORY="https://github.com/apache/airflow"
diff --git a/Dockerfile.ci b/Dockerfile.ci
index 0cd350201ac..ca912e79ef5 100644
--- a/Dockerfile.ci
+++ b/Dockerfile.ci
@@ -1261,9 +1261,9 @@ COPY --from=scripts common.sh install_packaging_tools.sh install_additional_depe
# Also use `force pip` label on your PR to swap all places we use `uv` to `pip`
ARG AIRFLOW_PIP_VERSION=26.0.1
# ARG AIRFLOW_PIP_VERSION="git+https://github.com/pypa/pip.git@main"
-ARG AIRFLOW_UV_VERSION=0.10.7
+ARG AIRFLOW_UV_VERSION=0.10.9
# TODO(potiuk): automate with upgrade check (possibly)
-ARG AIRFLOW_PREK_VERSION="0.3.2"
+ARG AIRFLOW_PREK_VERSION="0.3.5"
ENV AIRFLOW_PIP_VERSION=${AIRFLOW_PIP_VERSION} \
AIRFLOW_UV_VERSION=${AIRFLOW_UV_VERSION} \
diff --git a/RELEASE_NOTES.rst b/RELEASE_NOTES.rst
index 4609bc951f0..8c4442f6fb3 100644
--- a/RELEASE_NOTES.rst
+++ b/RELEASE_NOTES.rst
@@ -41,6 +41,7 @@ Bug Fixes
Updated dependencies
""""""""""""""""""""
+- Upgrade airflow UI to latest reasonable dependencies. (#63158)
- Bump the core-ui-package-updates group across 1 directory with 87 updates (#61091)
- bump filelock (#62952)
- Limit Celery Provider to not install 3.17.0 as it breaks airflow 2.11 (#63046)
diff --git a/airflow/reproducible_build.yaml b/airflow/reproducible_build.yaml
index e28ff747419..516ff0f5eb0 100644
--- a/airflow/reproducible_build.yaml
+++ b/airflow/reproducible_build.yaml
@@ -1,2 +1,2 @@
-release-notes-hash: 647fdaa1d742db7f83fc191ca1a82e71
-source-date-epoch: 1773003042
+release-notes-hash: 2a113e5130206b6093f308203895c73b
+source-date-epoch: 1773064768
diff --git a/airflow/www/.eslintignore b/airflow/www/.eslintignore
deleted file mode 100644
index f70244c96f6..00000000000
--- a/airflow/www/.eslintignore
+++ /dev/null
@@ -1,7 +0,0 @@
-**/*{.,-}min.js
-**/*.sh
-**/*.py
-jqClock.min.js
-coverage/**
-static/dist/*
-static/docs/*
diff --git a/airflow/www/.eslintrc b/airflow/www/.eslintrc
deleted file mode 100644
index 29914c0cd84..00000000000
--- a/airflow/www/.eslintrc
+++ /dev/null
@@ -1,67 +0,0 @@
-{
- "extends": ["airbnb", "airbnb/hooks", "prettier"],
- "parser": "@babel/eslint-parser",
- "parserOptions": {
- "babelOptions": {
- "presets": [
- "@babel/preset-env",
- "@babel/preset-react",
- "@babel/preset-typescript"
- ],
- "plugins": ["@babel/plugin-transform-runtime"]
- }
- },
- "plugins": ["html", "react"],
- "rules": {
- "no-param-reassign": 1,
- "react/prop-types": 0,
- "react/jsx-props-no-spreading": 0,
- "import/extensions": [
- "error",
- "ignorePackages",
- {
- "js": "never",
- "jsx": "never",
- "ts": "never",
- "tsx": "never"
- }
- ],
- "import/no-extraneous-dependencies": [
- "error",
- {
- "devDependencies": true,
- "optionalDependencies": false,
- "peerDependencies": false
- }
- ],
- "react/function-component-definition": [
- 0,
- {
- "namedComponents": "function-declaration"
- }
- ]
- },
- "settings": {
- "import/resolver": {
- "node": {
- "extensions": [".js", ".jsx", ".ts", ".tsx"]
- }
- }
- },
- // eslint that apply only to typescript files
- "overrides": [
- {
- "files": ["*.ts", "*.tsx"],
- "extends": ["airbnb-typescript", "prettier"],
- "parser": "@typescript-eslint/parser",
- "plugins": ["@typescript-eslint"],
- "parserOptions": {
- "project": "./tsconfig.json"
- },
- "rules": {
- "react/require-default-props": 0,
- "@typescript-eslint/no-explicit-any": 1
- }
- }
- ]
-}
diff --git a/airflow/www/.stylelintrc b/airflow/www/.stylelintrc
index 2e8ff5864a4..cbbc1d5c369 100644
--- a/airflow/www/.stylelintrc
+++ b/airflow/www/.stylelintrc
@@ -1,3 +1,24 @@
{
- "extends": ["stylelint-config-standard", "stylelint-config-prettier"]
+ "extends": ["stylelint-config-standard"],
+ "rules": {
+ "alpha-value-notation": null,
+ "color-function-alias-notation": null,
+ "color-function-notation": null,
+ "declaration-property-value-no-unknown": null,
+ "function-url-quotes": null,
+ "media-feature-range-notation": null,
+ "number-max-precision": null,
+ "property-no-deprecated": null,
+ "property-no-vendor-prefix": null,
+ "selector-class-pattern": null,
+ "selector-id-pattern": null,
+ "selector-not-notation": null,
+ "value-keyword-case": null,
+ "value-no-vendor-prefix": null,
+ "at-rule-no-vendor-prefix": null,
+ "selector-no-vendor-prefix": null,
+ "media-feature-name-no-vendor-prefix": null,
+ "declaration-block-no-redundant-longhand-properties": null,
+ "keyframes-name-pattern": null
+ }
}
diff --git a/airflow/www/alias-rest-types.js b/airflow/www/alias-rest-types.js
index c2767acca6e..3d7d7df04b3 100644
--- a/airflow/www/alias-rest-types.js
+++ b/airflow/www/alias-rest-types.js
@@ -64,14 +64,14 @@ const generateVariableAliases = (node, operationPath, operationName) => {
node,
"requestBody",
"content",
- "application/json"
+ "application/json",
);
if (hasPath) variableTypes.push(`${operationPath}['parameters']['path']`);
if (hasQuery) variableTypes.push(`${operationPath}['parameters']['query']`);
if (hasBody)
variableTypes.push(
- `${operationPath}['requestBody']['content']['application/json']`
+ `${operationPath}['requestBody']['content']['application/json']`,
);
if (variableTypes.length === 0) return "";
@@ -79,7 +79,7 @@ const generateVariableAliases = (node, operationPath, operationName) => {
return [
typeName,
`export type ${typeName} = CamelCasedPropertiesDeep<${variableTypes.join(
- " & "
+ " & ",
)}>;`,
];
};
@@ -91,14 +91,14 @@ const generateAliases = (rootNode, writeText, prefix = "") => {
// Response Data Types
if (ts.isInterfaceDeclaration(node) && node.name?.text === "components") {
const schemaMemberNames = findNode(node, "schemas").type.members.map(
- (n) => n.name?.text
+ (n) => n.name?.text,
);
const types = schemaMemberNames.map((n) => [
`${n}`,
`export type ${n} = CamelCasedPropertiesDeep<${prefixPath(
prefix,
- "components"
+ "components",
)}['schemas']['${n}']>;`,
]);
if (types.length) {
@@ -122,8 +122,8 @@ const generateAliases = (rootNode, writeText, prefix = "") => {
generateVariableAliases(
findNode(path, m),
`${prefixPath(prefix, "paths")}['${path.name?.text}']['${m}']`,
- `${path.name.text}${toPascalCase(m)}`
- )
+ `${path.name.text}${toPascalCase(m)}`,
+ ),
);
types.push(...methodTypes.filter((m) => !!m));
});
@@ -148,8 +148,8 @@ const generateAliases = (rootNode, writeText, prefix = "") => {
generateVariableAliases(
operation,
`${prefixPath(prefix, "operations")}['${operation.name.text}']`,
- operation.name.text
- )
+ operation.name.text,
+ ),
);
if (types.length) {
writeText.push(["comment", `Types for operation variables ${prefix}`]);
@@ -164,7 +164,7 @@ const generateAliases = (rootNode, writeText, prefix = "") => {
generateAliases(
external.type,
writeText,
- `external['${external.name.text}']`
+ `external['${external.name.text}']`,
);
});
}
@@ -198,7 +198,7 @@ function generate(file) {
const writeText = [];
writeText.push(["block", license]);
writeText.push(["comment", "eslint-disable"]);
- // eslint-disable-next-line quotes
+
writeText.push([
"block",
`import type { CamelCasedPropertiesDeep } from 'type-fest';`,
diff --git a/airflow/www/changes_in_2_11_dependencies.rst b/airflow/www/changes_in_2_11_dependencies.rst
new file mode 100644
index 00000000000..9af5bb2b5a1
--- /dev/null
+++ b/airflow/www/changes_in_2_11_dependencies.rst
@@ -0,0 +1,348 @@
+ .. Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ .. http://www.apache.org/licenses/LICENSE-2.0
+
+ .. Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+Airflow 2.11.2rc1 — Frontend Dependency Changes
+================================================
+
+Full summary of all upgrades grouped by risk level.
+Based on actual ``package.json`` diff between 2.11.1 and 2.11.2rc1.
+
+
+HIGH RISK — Major version bumps with known breaking changes
+-----------------------------------------------------------
+
++------------------------------+------------+------------+----------------------------------------------------------------+
+| Package | Old | New | Breaking Changes |
++==============================+============+============+================================================================+
+| react / react-dom | ^18.0.0 | ^19.2.4 | Major upgrade to React 19. New hooks (use, useActionState, |
+| | | | useFormStatus, useOptimistic), ref as prop, async transitions, |
+| | | | Suspense changes, removal of legacy APIs (forwardRef less |
+| | | | needed, string refs removed, defaultProps deprecated for |
+| | | | function components). react-dom/client changes. |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| react-router-dom | ^6.3.0 | ^7.13.1 | Major v7 upgrade. Route definition API changes, loader/action |
+| | | | patterns changed, new framework mode, createBrowserRouter |
+| | | | recommended over BrowserRouter. |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| echarts | ^5.4.2 | ^6.0.0 | Breaking API changes in chart options, deprecated configs |
+| | | | removed, default themes changed. May silently render charts |
+| | | | differently. |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| framer-motion | ^6.0.0 | ^11.18.2 | API overhaul across 5 major versions. AnimatePresence exit |
+| | | | animations changed, useAnimation -> useAnimationControls, |
+| | | | layout animation API changed. |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| eslint | ^8.6.0 | ^9.27.0 | Flat config is now the default. .eslintrc files deprecated in |
+| | | | favor of eslint.config.js. Many plugin/config APIs changed. |
+| | | | --ext and --ignore-path removed. |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| jest | ^27.3.1 | ^30.2.0 | Complete rewrite. Test globals imported differently, |
+| | | | jest.config.js format changes, timer mocking API changes, |
+| | | | snapshot format changed. |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| typescript | ^4.6.3 | ^5.9.3 | Enum behavior changes, decorator support changes, |
+| | | | moduleResolution defaults changed. May surface new type |
+| | | | errors. |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| swagger-ui-dist | 4.1.3 | 5.32.0 | CSS class names changed, rendering differences, bundled CSS |
+| | | | restructured. |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| react-markdown | ^8.0.4 | ^10.1.0 | Major v9 and v10. Moved to ESM-only, plugin API changes, |
+| | | | remark/rehype ecosystem alignment, component prop changes. |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| d3-shape | ^2.1.0 | ^3.2.0 | d3.line().curve() defaults changed, some curve types renamed. |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| moment-timezone | ^0.5.43 | ^0.6.0 | Timezone data format changed, some edge-case parsing |
+| | | | differences. |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| elkjs | ^0.7.1 | ^0.11.1 | Layout algorithm changes -- graph layouts may render |
+| | | | differently. |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| color | ^4.2.3 | ^5.0.3 | Major v5. API changes in color manipulation methods. |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| camelcase-keys | ^7.0.0 | ^10.0.2 | Major v8/v9/v10. ESM-only since v8, API surface changes. |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| type-fest | ^2.17.0 | ^5.4.4 | Major v3/v4/v5. Type definitions changed/renamed/removed |
+| | | | across versions. |
++------------------------------+------------+------------+----------------------------------------------------------------+
+
+
+MEDIUM RISK — Dev/build tooling or breaking changes less likely to affect runtime
+---------------------------------------------------------------------------------
+
+Testing & code quality
+^^^^^^^^^^^^^^^^^^^^^^
+
++------------------------------+------------+------------+----------------------------------------------------------------+
+| Package | Old | New | Breaking Changes |
++==============================+============+============+================================================================+
+| @typescript-eslint/* | ^5.x | ^8.56.1 | New rules enabled by default, some rules removed/renamed, |
+| | | | stricter defaults. Many new lint errors likely. |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| @testing-library/react | ^13.0.0 | ^16.3.2 | renderHook now exported from main, cleanup behavior changed, |
+| | | | act() wrapping changes. Requires React 18+. |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| @testing-library/jest-dom | ^5.16.0 | ^6.9.1 | Matchers now use @jest/expect instead of jest-jasmine2. Some |
+| | | | matchers renamed. |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| prettier | ^2.8.4 | ^3.8.1 | Trailing commas now default to all, different formatting for |
+| | | | various constructs. Will change code formatting. |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| openapi-typescript | ^5.4.1 | ^7.13.0 | Generated types may have different structure. |
+| | | | generate-api-types script output may change. |
++------------------------------+------------+------------+----------------------------------------------------------------+
+
+UI libraries
+^^^^^^^^^^^^
+
++------------------------------+------------+------------+----------------------------------------------------------------+
+| Package | Old | New | Breaking Changes |
++==============================+============+============+================================================================+
+| react-syntax-highlighter | ^15.5.0 | ^16.1.1 | Theme/style import paths may have changed. |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| remark-gfm | ^3.0.1 | ^4.0.1 | Major v4. ESM-only, unified/remark ecosystem v11 alignment. |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| @chakra-ui/react | 2.4.2 | 2.10.9 | Minor within v2, but large jump. Theme token changes, |
+| | | | component API additions, some deprecations. |
++------------------------------+------------+------------+----------------------------------------------------------------+
+
+Webpack loaders & plugins
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
++--------------------------------+------------+------------+--------------------------------------------------------------+
+| Package | Old | New | Breaking Changes |
++================================+============+============+==============================================================+
+| webpack-cli | ^4.0.0 | ^6.0.1 | CLI argument changes, config resolution changes. |
++--------------------------------+------------+------------+--------------------------------------------------------------+
+| copy-webpack-plugin | ^6.0.3 | ^14.0.0 | Config format changes, pattern/globOptions API may differ. |
++--------------------------------+------------+------------+--------------------------------------------------------------+
+| css-loader | 5.2.7 | 7.1.4 | Major v6/v7. modules option defaults changed, url() handling |
+| | | | changes. |
++--------------------------------+------------+------------+--------------------------------------------------------------+
+| css-minimizer-webpack-plugin | ^4.0.0 | ^8.0.0 | Multiple major bumps. Configuration API changes. |
++--------------------------------+------------+------------+--------------------------------------------------------------+
+| style-loader | ^1.2.1 | ^4.0.0 | Major v2/v3/v4. injectType option changes, esModule default |
+| | | | changed. |
++--------------------------------+------------+------------+--------------------------------------------------------------+
+| imports-loader | ^1.1.0 | ^5.0.0 | Syntax and configuration API changes. |
++--------------------------------+------------+------------+--------------------------------------------------------------+
+| mini-css-extract-plugin | ^1.6.2 | ^2.10.0 | Major v2. experimentalUseImportModule removed, config |
+| | | | changes. |
++--------------------------------+------------+------------+--------------------------------------------------------------+
+| webpack-manifest-plugin | ^4.0.0 | ^6.0.1 | Output format and seed option changes. |
++--------------------------------+------------+------------+--------------------------------------------------------------+
+| babel-loader | ^9.1.0 | ^10.0.0 | Major v10. Requires Babel 7.12+, config resolution changes. |
++--------------------------------+------------+------------+--------------------------------------------------------------+
+| clean-webpack-plugin | ^3.0.0 | ^4.0.0 | Output cleaning behavior changes. |
++--------------------------------+------------+------------+--------------------------------------------------------------+
+
+Linting & formatting
+^^^^^^^^^^^^^^^^^^^^
+
++------------------------------+------------+------------+----------------------------------------------------------------+
+| Package | Old | New | Breaking Changes |
++==============================+============+============+================================================================+
+| stylelint | ^15.10.1 | ^17.4.0 | Major v16/v17. Config format changes, rule renames, stricter |
+| | | | defaults. |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| stylelint-config-standard | ^20.0.0 | ^40.0.0 | Rule changes and additions tracking stylelint. |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| eslint-config-airbnb-ts | ^17.0.0 | ^18.0.0 | Updated peer deps and rule changes. |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| eslint-config-prettier | ^8.6.0 | ^10.1.8 | Some removed rules, adapted for ESLint 9 flat config. |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| eslint-plugin-html | ^6.0.2 | ^8.1.4 | ESLint 9 flat config support. |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| eslint-plugin-promise | ^4.2.1 | ^7.2.1 | Rule renames and additions, ESLint 9 support. |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| eslint-plugin-react-hooks | ^4.5.0 | ^7.0.1 | Stricter rules, new violations detected. |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| eslint-plugin-standard | ^4.0.1 | ^5.0.0 | Some rules removed or renamed. |
++------------------------------+------------+------------+----------------------------------------------------------------+
+
+Other
+^^^^^
+
++------------------------------+------------+------------+----------------------------------------------------------------+
+| Package | Old | New | Breaking Changes |
++==============================+============+============+================================================================+
+| tsconfig-paths | ^3.14.2 | ^4.2.0 | Major v4. Path resolution behavior changes. |
++------------------------------+------------+------------+----------------------------------------------------------------+
+
+
+LOW RISK — Minor/patch-level or backwards-compatible changes
+------------------------------------------------------------
+
++--------------------+--------------+--------------+------------------------------------------+
+| Package | Old | New | Notes |
++====================+==============+==============+==========================================+
+| axios | ^1.6.0 | ^1.13.6 | Minor within v1, backwards compatible |
++--------------------+--------------+--------------+------------------------------------------+
+| webpack | ^5.94.0 | ^5.105.4 | Minor within v5 |
++--------------------+--------------+--------------+------------------------------------------+
+| react-icons | ^5.2.1 | ^5.6.0 | Minor within v5 |
++--------------------+--------------+--------------+------------------------------------------+
+| url-loader | 4.1.0 | 4.1.1 | Patch bump |
++--------------------+--------------+--------------+------------------------------------------+
+
+
+New packages added
+------------------
+
++------------------------------+------------+----------------------------------------------------------------+
+| Package | Version | Notes |
++==============================+============+================================================================+
+| @eslint/eslintrc | ^3.3.1 | Compatibility layer for eslintrc configs in ESLint 9 flat |
+| | | config |
++------------------------------+------------+----------------------------------------------------------------+
+| @testing-library/dom | ^10.0.0 | New direct dependency (was likely transitive before) |
++------------------------------+------------+----------------------------------------------------------------+
+| eslint-import-resolver-ts | ^4.4.3 | TypeScript import resolution for eslint-plugin-import |
++------------------------------+------------+----------------------------------------------------------------+
+| globals | ^17.4.0 | Global variable definitions for ESLint 9 flat config |
++------------------------------+------------+----------------------------------------------------------------+
+| jest-environment-jsdom | ^30.2.0 | jsdom environment for Jest 30 (now a separate package) |
++------------------------------+------------+----------------------------------------------------------------+
+
+
+Packages removed
+----------------
+
++------------------------------+---------------------------------------------------------+
+| Package | Notes |
++==============================+=========================================================+
+| stylelint-config-prettier | No longer needed with stylelint 17 + prettier 3 |
++------------------------------+---------------------------------------------------------+
+
+
+Script changes
+--------------
+
+- ``lint`` command: removed ``--ignore-path=.eslintignore`` ``--ext .js,.jsx,.ts,.tsx`` flags
+ (not supported in ESLint 9)
+- ``lint`` command: removed ``tsc`` step (was: ``eslint ... && tsc``, now: ``eslint ...`` only)
+
+
+Key areas to manually verify
+-----------------------------
+
+1. **React 19** — THE BIGGEST CHANGE. All components should be tested. ``forwardRef`` patterns,
+ string refs, ``defaultProps`` on function components, legacy context, and many deprecated APIs
+ are removed. ``ReactDOM.render`` is gone (must use ``createRoot``).
+2. **react-router-dom v7** — Route definitions, navigation hooks, and loader/action patterns may
+ have changed.
+3. **echarts 6** — All charts should be visually verified; rendering defaults changed.
+4. **framer-motion 11** — Animation components should be visually checked; API changed across
+ 5 major versions.
+5. **ESLint 9 (flat config)** — ``.eslintrc`` must be migrated to ``eslint.config.js``. The
+ ``@eslint/eslintrc`` compat layer is added.
+6. **swagger-ui-dist 5** — The API docs page styling may look different.
+7. **prettier 3** — Running ``yarn format`` will reformat many files (trailing commas, etc.).
+8. **jest 30** — The test config (``jest.config.js``, ``babel.config.js``) may need updates.
+ ``jest-environment-jsdom`` now separate.
+9. **react-markdown 10** — Markdown rendering in the UI should be verified. Plugin API changed.
+10. **Webpack build pipeline** — Many loaders and plugins jumped multiple major versions. Build
+ may need config adjustments.
+
+
+Impact Assessment
+-----------------
+
+.. note::
+
+ This excludes build and lint issues already verified and fixed.
+
+
+HIGH IMPACT (will likely cause build/test/runtime failures)
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+**1. React 19** (``^18`` → ``^19.2.4``) — Impact: **LOW** despite being a major bump
+
+- The codebase is clean: all functional components, hooks-only, no class components
+- No ``defaultProps``, no string refs, no legacy context, no ``ReactDOM.render``
+- 5 files use ``forwardRef`` — still works in React 19 (just no longer required)
+- ``@types/react`` jumped to ``^19.2.14`` which may surface type errors on ``children`` prop
+ (no longer implicit)
+- **Verdict:** Runtime likely fine, but TypeScript compilation may break on implicit ``children``
+
+**2. Jest 30** (``^27`` → ``^30``) — Impact: **MEDIUM-HIGH**
+
+- ``jest.config.js`` exists and uses ``testEnvironment: "jsdom"`` — now requires separate
+ ``jest-environment-jsdom`` package (added)
+- ``jest-globals-setup.js`` already patches React 19 ``AggregateError`` — someone has partially
+ adapted
+- ``babel-jest`` jumped to ``^30.2.0`` to match
+- Snapshot format changes may cause all snapshot tests to fail on first run (fixable with
+ ``--updateSnapshot``)
+
+
+MEDIUM IMPACT (may cause visual or functional differences)
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+**3. echarts 6** — Impact: **MEDIUM** (4 files)
+
+- Used in ``ReactECharts.tsx``, ``RunDurationChart.tsx``, ``Calendar.tsx``,
+ ``AllTaskDuration.tsx``
+- Uses ``init()``, ``setOption()``, ``on()``, ``dispose()`` — core APIs, likely stable
+- Chart rendering defaults may change — visual verification needed
+
+**4. react-router-dom v7** (``^6`` → ``^7``) — Impact: **LOW** despite major bump
+
+- Only 13 files use it, all with basic patterns: ``useSearchParams``, ``BrowserRouter``,
+ ``MemoryRouter``
+- No ``Routes``/``Route`` components, no ``useNavigate``, no ``useParams``, no loaders/actions
+- v7 is largely backward-compatible with v6 patterns for these basic APIs
+- **Verdict:** Likely works without changes
+
+**5. react-markdown 10** (``^8`` → ``^10``) — Impact: **MEDIUM** (1 file)
+
+- ``ReactMarkdown.tsx`` uses ``Components`` type and ``ReactMarkdownOptions`` from
+ ``react-markdown/lib/react-markdown``
+- The internal import path ``react-markdown/lib/react-markdown`` will almost certainly break
+ in v10
+- Plugin API (``remarkPlugins``) and ``components`` prop may have changed
+
+**6. elkjs 0.11** (``^0.7`` → ``^0.11``) — Impact: **LOW-MEDIUM** (4 files)
+
+- Uses ``new ELK()``, ``elk.layout()``, layout options — core API likely stable
+- Layout algorithm changes may render DAG graphs differently — visual verification needed
+
+**7. framer-motion 11** (``^6`` → ``^11``) — Impact: **LOW** (1 file only)
+
+- Only ``Tooltip.tsx`` uses it: ``motion.div``, ``AnimatePresence``, ``variants``,
+ ``initial``/``animate``/``exit``
+- These core APIs survived across versions
+- Should work but worth a visual check on tooltip animations
+
+
+LOW IMPACT
+^^^^^^^^^^
+
+- **color v5** — 2 files, simple ``.hex()`` calls, likely compatible
+- **camelcase-keys v10** — 1 file, uses ``camelcaseKeys(data, { deep, stopPaths })`` — API
+ likely stable but ESM-only since v8
+- **prettier 3** — Will reformat files on ``yarn format`` (trailing commas). Not a runtime issue
+- **swagger-ui-dist 5** — Not imported in source code (served statically). CSS may look different
+- **d3-shape v3** — Not actually used in source code despite being installed
+- **moment-timezone 0.6** — Not directly imported in source code
+- **type-fest v5** — Types only, may cause compilation errors
+
+
+Recommended verification order
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Visual check: echarts charts, DAG graph layouts (elkjs), tooltip animations, swagger API docs page
diff --git a/airflow/www/changes_in_2_11_dependencies.txt b/airflow/www/changes_in_2_11_dependencies.txt
deleted file mode 100644
index 45f280b1cc1..00000000000
--- a/airflow/www/changes_in_2_11_dependencies.txt
+++ /dev/null
@@ -1,86 +0,0 @@
-Here's the full summary of all upgrades that made it into the commit, grouped by risk level:
-
- HIGH RISK — Major version bumps with known breaking changes
-
- ┌─────────────────┬─────────┬──────────┬───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
- │ Package │ Old │ New │ Breaking Changes │
- ├─────────────────┼─────────┼──────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
- │ jquery │ >=3.5.0 │ >=4.0.0 │ Dropped IE support, removed deprecated APIs ($.isFunction, $.isArray, $.trim, $.isWindow), removed jQuery.cssNumber, jQuery.type(). .focus()/.blur() no longer trigger native events. │
- ├─────────────────┼─────────┼──────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
- │ framer-motion │ ^6.0.0 │ ^12.34.3 │ Complete API overhaul across 6 major versions. AnimatePresence exit animations changed, useAnimation → useAnimationControls, layout animation API changed, motion.div prop changes. │
- ├─────────────────┼─────────┼──────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
- │ echarts │ ^5.4.2 │ ^6.0.0 │ Breaking API changes in chart options, deprecated configs removed, default themes changed. May silently render charts differently. │
- ├─────────────────┼─────────┼──────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
- │ d3-shape │ ^2.1.0 │ ^3.2.0 │ d3.line().curve() defaults changed, some curve types renamed. │
- ├─────────────────┼─────────┼──────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
- │ typescript │ ^4.6.3 │ ^5.9.3 │ enum behavior changes, decorator support changes, moduleResolution defaults changed. May surface new type errors. │
- ├─────────────────┼─────────┼──────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
- │ jest │ ^27.3.1 │ ^30.2.0 │ Complete rewrite. Test globals (expect, describe, it) now imported differently, jest.config.js format changes, timer mocking API changes, snapshot format changed. │
- ├─────────────────┼─────────┼──────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
- │ swagger-ui-dist │ 4.1.3 │ 5.31.2 │ CSS class names changed, rendering differences, bundled CSS restructured. │
- ├─────────────────┼─────────┼──────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
- │ moment-timezone │ ^0.5.43 │ ^0.6.0 │ Timezone data format changed, some edge-case parsing differences. │
- ├─────────────────┼─────────┼──────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
- │ elkjs │ ^0.7.1 │ ^0.11.0 │ Layout algorithm changes — graph layouts may render differently. │
- └─────────────────┴─────────┴──────────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
-
- MEDIUM RISK — Breaking changes less likely to affect this codebase
-
- ┌───────────────────────────┬─────────┬─────────┬───────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
- │ Package │ Old │ New │ Breaking Changes │
- ├───────────────────────────┼─────────┼─────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
- │ @testing-library/jest-dom │ ^5.16.0 │ ^6.9.1 │ Matchers now use @jest/expect instead of jest-jasmine2. Some matchers renamed. │
- ├───────────────────────────┼─────────┼─────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
- │ @testing-library/react │ ^13.0.0 │ ^16.3.2 │ renderHook now exported from main, cleanup behavior changed, act() wrapping changes. │
- ├───────────────────────────┼─────────┼─────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
- │ @typescript-eslint/* │ ^5.x │ ^7.18.0 │ New rules enabled by default, some rules removed/renamed, stricter defaults. May flag new lint errors. │
- ├───────────────────────────┼─────────┼─────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
- │ prettier │ ^2.8.4 │ ^3.8.1 │ Trailing commas now default to all, different formatting for various constructs. Will change code formatting. │
- ├───────────────────────────┼─────────┼─────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
- │ openapi-typescript │ ^5.4.1 │ ^7.13.0 │ Generated types may have different structure. generate-api-types script output may change. │
- ├───────────────────────────┼─────────┼─────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
- │ webpack-cli │ ^4.0.0 │ ^6.0.1 │ CLI argument changes, config resolution changes. │
- ├───────────────────────────┼─────────┼─────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
- │ react-syntax-highlighter │ ^15.5.0 │ ^16.1.0 │ Theme/style import paths may have changed. │
- ├───────────────────────────┼─────────┼─────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
- │ @chakra-ui/react │ 2.4.2 │ 2.4.2 │ Not upgraded (kept at base) — but note the pinned chakra-react-select@4.0.3 is fragile. │
- └───────────────────────────┴─────────┴─────────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
-
- LOW RISK — Minor/patch-level or backwards-compatible changes
-
- ┌───────────────────────┬──────────────┬────────────┬────────────────────────────────────────┐
- │ Package │ Old │ New │ Notes │
- ├───────────────────────┼──────────────┼────────────┼────────────────────────────────────────┤
- │ @babel/* │ ^7.24.x │ ^7.28-29.x │ Minor bumps, backwards compatible │
- ├───────────────────────┼──────────────┼────────────┼────────────────────────────────────────┤
- │ axios │ ^1.6.0 │ ^1.13.5 │ Minor within v1, backwards compatible │
- ├───────────────────────┼──────────────┼────────────┼────────────────────────────────────────┤
- │ @emotion/* │ ^11.9.x │ ^11.14.x │ Minor within v11 │
- ├───────────────────────┼──────────────┼────────────┼────────────────────────────────────────┤
- │ @tanstack/react-table │ ^8.13.2 │ ^8.21.3 │ Minor within v8 │
- ├───────────────────────┼──────────────┼────────────┼────────────────────────────────────────┤
- │ react / react-dom │ ^18.0.0 │ ^18.3.1 │ Minor within v18, backwards compatible │
- ├───────────────────────┼──────────────┼────────────┼────────────────────────────────────────┤
- │ react-query │ ^3.39.1 │ ^3.39.3 │ Patch bump │
- ├───────────────────────┼──────────────┼────────────┼────────────────────────────────────────┤
- │ react-router-dom │ ^6.3.0 │ ^6.30.3 │ Minor within v6, backwards compatible │
- ├───────────────────────┼──────────────┼────────────┼────────────────────────────────────────┤
- │ reactflow │ ^11.7.4 │ ^11.11.4 │ Minor within v11 │
- ├───────────────────────┼──────────────┼────────────┼────────────────────────────────────────┤
- │ lodash │ ^4.17.21 │ ^4.17.23 │ Patch bump │
- ├───────────────────────┼──────────────┼────────────┼────────────────────────────────────────┤
- │ webpack │ ^5.94.0 │ ^5.105.2 │ Minor within v5 │
- ├───────────────────────┼──────────────┼────────────┼────────────────────────────────────────┤
- │ redoc │ ^2.0.0-rc.72 │ ^2.5.2 │ Now a stable release instead of RC │
- ├───────────────────────┼──────────────┼────────────┼────────────────────────────────────────┤
- │ validator │ ^13.9.0 │ ^13.15.26 │ Minor within v13 │
- └───────────────────────┴──────────────┴────────────┴────────────────────────────────────────┘
-
- Key areas to manually verify
-
- 1. jQuery 4 — Any legacy JS templates using deprecated jQuery APIs ($.isFunction, $.trim, etc.) will break silently
- 2. framer-motion 12 — All animation components should be visually checked; the API changed significantly across 6 major versions
- 3. echarts 6 — All charts should be visually verified; rendering defaults changed
- 4. swagger-ui-dist 5 — The API docs page styling may look different
- 5. prettier 3 — Running yarn format will reformat many files (trailing commas, etc.)
- 6. jest 30 — The test config (jest.config.js, babel.config.js) may need updates if CI reveals issues beyond what we've fixed
diff --git a/airflow/www/eslint.config.mjs b/airflow/www/eslint.config.mjs
new file mode 100644
index 00000000000..59d788781c2
--- /dev/null
+++ b/airflow/www/eslint.config.mjs
@@ -0,0 +1,154 @@
+/*!
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import { FlatCompat } from "@eslint/eslintrc";
+import path from "node:path";
+import { fileURLToPath } from "node:url";
+import globals from "globals";
+
+const compat = new FlatCompat({
+ baseDirectory: path.dirname(fileURLToPath(import.meta.url)),
+});
+
+export default [
+ {
+ ignores: [
+ "**/*{.,-}min.js",
+ "**/*.sh",
+ "**/*.py",
+ "jqClock.min.js",
+ "coverage/**",
+ "static/dist/**",
+ "static/docs/**",
+ ],
+ },
+ ...compat.config({
+ extends: ["airbnb", "airbnb/hooks", "prettier"],
+ parser: "@babel/eslint-parser",
+ parserOptions: {
+ babelOptions: {
+ presets: [
+ "@babel/preset-env",
+ "@babel/preset-react",
+ "@babel/preset-typescript",
+ ],
+ plugins: ["@babel/plugin-transform-runtime"],
+ },
+ },
+ plugins: ["html", "react"],
+ rules: {
+ "no-param-reassign": 1,
+ "react/prop-types": 0,
+ "react/jsx-props-no-spreading": 0,
+ "no-unused-vars": [
+ "error",
+ {
+ vars: "all",
+ args: "after-used",
+ argsIgnorePattern: "^_",
+ caughtErrorsIgnorePattern: "^_",
+ ignoreRestSiblings: true,
+ },
+ ],
+ "import/extensions": [
+ "error",
+ "ignorePackages",
+ {
+ js: "never",
+ jsx: "never",
+ ts: "never",
+ tsx: "never",
+ },
+ ],
+ "import/no-extraneous-dependencies": [
+ "error",
+ {
+ devDependencies: true,
+ optionalDependencies: false,
+ peerDependencies: false,
+ },
+ ],
+ "react/function-component-definition": [
+ 0,
+ {
+ namedComponents: "function-declaration",
+ },
+ ],
+ },
+ settings: {
+ "import/resolver": {
+ typescript: {
+ project: "./tsconfig.json",
+ },
+ node: {
+ extensions: [".js", ".jsx", ".ts", ".tsx"],
+ },
+ },
+ },
+ overrides: [
+ {
+ files: ["*.ts", "*.tsx"],
+ parser: "@typescript-eslint/parser",
+ plugins: ["@typescript-eslint"],
+ parserOptions: {
+ project: "./tsconfig.json",
+ },
+ extends: ["prettier"],
+ rules: {
+ "react/require-default-props": 0,
+ "@typescript-eslint/no-explicit-any": 1,
+ // Allow JSX in .tsx files
+ "react/jsx-filename-extension": [
+ "error",
+ { extensions: [".jsx", ".tsx"] },
+ ],
+ // TypeScript handles these natively
+ "no-undef": "off",
+ "no-unused-vars": "off",
+ "@typescript-eslint/no-unused-vars": [
+ "error",
+ {
+ vars: "all",
+ args: "after-used",
+ argsIgnorePattern: "^_",
+ caughtErrorsIgnorePattern: "^_",
+ ignoreRestSiblings: true,
+ },
+ ],
+ "no-shadow": "off",
+ "@typescript-eslint/no-shadow": "error",
+ "no-use-before-define": "off",
+ "@typescript-eslint/no-use-before-define": "error",
+ "no-redeclare": "off",
+ "@typescript-eslint/no-redeclare": "error",
+ },
+ },
+ ],
+ }),
+ // Environment globals for specific files
+ {
+ files: ["jest-globals-setup.js", "jest-setup.js", "jest.config.js"],
+ languageOptions: {
+ globals: {
+ ...globals.node,
+ globalThis: "readonly",
+ },
+ },
+ },
+];
diff --git a/airflow/www/jest-globals-setup.js b/airflow/www/jest-globals-setup.js
new file mode 100644
index 00000000000..e24035ade93
--- /dev/null
+++ b/airflow/www/jest-globals-setup.js
@@ -0,0 +1,62 @@
+/*!
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+const { TextEncoder, TextDecoder } = require("util");
+
+if (typeof globalThis.TextEncoder === "undefined") {
+ globalThis.TextEncoder = TextEncoder;
+}
+if (typeof globalThis.TextDecoder === "undefined") {
+ globalThis.TextDecoder = TextDecoder;
+}
+
+// Mock window.matchMedia for Chakra UI's useMediaQuery
+if (typeof globalThis.window !== "undefined" && !globalThis.window.matchMedia) {
+ // eslint-disable-next-line func-names
+ globalThis.window.matchMedia = function (query) {
+ return {
+ matches: false,
+ media: query,
+ onchange: null,
+ addListener() {},
+ removeListener() {},
+ addEventListener() {},
+ removeEventListener() {},
+ dispatchEvent() {
+ return false;
+ },
+ };
+ };
+}
+
+// Unwrap React 19 AggregateError for readable test failure messages
+const OrigAggregateError = globalThis.AggregateError;
+if (OrigAggregateError) {
+ const patchedAE = function AggregateError(errors, message) {
+ const ae = new OrigAggregateError(errors, message);
+ if (errors && errors.length > 0) {
+ ae.message = `${message || "AggregateError"}\n Caused by:\n${errors
+ .map((e) => ` - ${e.stack || e.message || e}`)
+ .join("\n")}`;
+ }
+ return ae;
+ };
+ patchedAE.prototype = OrigAggregateError.prototype;
+ globalThis.AggregateError = patchedAE;
+}
diff --git a/airflow/www/jest-setup.js b/airflow/www/jest-setup.js
index ecf79db5cb1..28d60495622 100644
--- a/airflow/www/jest-setup.js
+++ b/airflow/www/jest-setup.js
@@ -1,5 +1,5 @@
// We need this lint rule for now because these are only dev-dependencies
-/* eslint-disable import/no-extraneous-dependencies */
+
/*!
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@@ -24,10 +24,9 @@ import axios from "axios";
import { setLogger } from "react-query";
import "jest-canvas-mock";
-// eslint-disable-next-line import/no-extraneous-dependencies
import moment from "moment-timezone";
-axios.defaults.adapter = require("axios/lib/adapters/http");
+axios.defaults.adapter = "http";
axios.interceptors.response.use((res) => res.data || res);
diff --git a/airflow/www/jest.config.js b/airflow/www/jest.config.js
index 333a061268c..8097ddf3f0a 100644
--- a/airflow/www/jest.config.js
+++ b/airflow/www/jest.config.js
@@ -23,6 +23,7 @@ const config = {
"^.+\\.[jt]sx?$": "babel-jest",
},
testEnvironment: "jsdom",
+ setupFiles: ["./jest-globals-setup.js"],
setupFilesAfterEnv: ["./jest-setup.js"],
moduleDirectories: ["node_modules"],
moduleNameMapper: {
@@ -30,34 +31,8 @@ const config = {
"^src/(.*)$": "<rootDir>/static/js/$1",
},
transformIgnorePatterns: [
- `node_modules/(?!${[
- // specify modules that needs to be transformed for jest. (esm modules)
- "ansi_up",
- "axios",
- "bail",
- "ccount",
- "character-entities",
- "comma-separated-tokens",
- "decode-named-character-reference",
- "escape-string-regexp",
- "hast",
- "is-plain-obj",
- "markdown-table",
- "mdast",
- "micromark",
- "property-information",
- "react-markdown",
- "remark-gfm",
- "remark-parse",
- "remark-rehype",
- "space-separated-tokens",
- "trim-lines",
- "trough",
- "unified",
- "unist",
- "vfile",
- "vfile-message",
- ].join("|")})`,
+ // Many dependencies are ESM-only, so we transform all node_modules via babel-jest.
+ "/node_modules/.cache/",
],
};
diff --git a/airflow/www/package.json b/airflow/www/package.json
index 1a33b804869..2cfcae5ae39 100644
--- a/airflow/www/package.json
+++ b/airflow/www/package.json
@@ -7,8 +7,8 @@
"dev": "NODE_ENV=development webpack --watch --progress --devtool eval-cheap-source-map --mode development",
"prod": "NODE_ENV=production node --max_old_space_size=4096 ./node_modules/webpack/bin/webpack.js --mode production --progress",
"build": "NODE_ENV=production webpack --progress --mode production",
- "lint": "eslint --ignore-path=.eslintignore --max-warnings=0 --ext .js,.jsx,.ts,.tsx .",
- "lint:fix": "eslint --fix --ignore-path=.eslintignore --ext .js,.jsx,.ts,.tsx .",
+ "lint": "eslint --max-warnings=0 .",
+ "lint:fix": "eslint --fix .",
"format": "yarn prettier --write .",
"generate-api-types": "npx openapi-typescript \"../api_connexion/openapi/v1.yaml\" --output static/js/types/api-generated.ts && node alias-rest-types.js static/js/types/api-generated.ts"
},
@@ -48,58 +48,62 @@
"@babel/preset-env": "^7.24.7",
"@babel/preset-react": "^7.24.7",
"@babel/preset-typescript": "^7.24.7",
- "@testing-library/jest-dom": "^5.16.0",
- "@testing-library/react": "^13.0.0",
- "@types/color": "^3.0.3",
+ "@eslint/eslintrc": "^3.3.1",
+ "@testing-library/dom": "^10.0.0",
+ "@testing-library/jest-dom": "^6.9.1",
+ "@testing-library/react": "^16.3.2",
+ "@types/color": "^4.2.0",
"@types/json-to-pretty-yaml": "^1.2.1",
- "@types/react": "^18.0.12",
- "@types/react-dom": "^18.0.5",
+ "@types/react": "^19.2.14",
+ "@types/react-dom": "^19.2.3",
"@types/react-syntax-highlighter": "^15.5.6",
"@types/react-table": "^7.7.12",
- "@typescript-eslint/eslint-plugin": "^5.13.0",
- "@typescript-eslint/parser": "^5.0.0",
- "babel-jest": "^27.3.1",
- "babel-loader": "^9.1.0",
- "clean-webpack-plugin": "^3.0.0",
- "copy-webpack-plugin": "^6.0.3",
- "css-loader": "5.2.7",
- "css-minimizer-webpack-plugin": "^4.0.0",
- "eslint": "^8.6.0",
+ "@typescript-eslint/eslint-plugin": "^8.56.1",
+ "@typescript-eslint/parser": "^8.56.1",
+ "babel-jest": "^30.2.0",
+ "babel-loader": "^10.0.0",
+ "clean-webpack-plugin": "^4.0.0",
+ "copy-webpack-plugin": "^14.0.0",
+ "css-loader": "7.1.4",
+ "css-minimizer-webpack-plugin": "^8.0.0",
+ "eslint": "^9.27.0",
"eslint-config-airbnb": "^19.0.4",
- "eslint-config-airbnb-typescript": "^17.0.0",
- "eslint-config-prettier": "^8.6.0",
- "eslint-plugin-html": "^6.0.2",
+ "eslint-config-airbnb-typescript": "^18.0.0",
+ "eslint-config-prettier": "^10.1.8",
+ "eslint-import-resolver-typescript": "^4.4.3",
+ "eslint-plugin-html": "^8.1.4",
"eslint-plugin-import": "^2.27.5",
"eslint-plugin-jsx-a11y": "^6.5.0",
"eslint-plugin-node": "^11.1.0",
- "eslint-plugin-promise": "^4.2.1",
+ "eslint-plugin-promise": "^7.2.1",
"eslint-plugin-react": "^7.30.0",
- "eslint-plugin-react-hooks": "^4.5.0",
- "eslint-plugin-standard": "^4.0.1",
+ "eslint-plugin-react-hooks": "^7.0.1",
+ "eslint-plugin-standard": "^5.0.0",
"file-loader": "^6.0.0",
- "imports-loader": "^1.1.0",
- "jest": "^27.3.1",
+ "globals": "^17.4.0",
+ "imports-loader": "^5.0.0",
+ "jest": "^30.2.0",
"jest-canvas-mock": "^2.5.1",
- "mini-css-extract-plugin": "^1.6.2",
+ "jest-environment-jsdom": "^30.2.0",
+ "mini-css-extract-plugin": "^2.10.0",
"moment": "^2.29.4",
"moment-locales-webpack-plugin": "^1.2.0",
- "openapi-typescript": "^5.4.1",
- "prettier": "^2.8.4",
- "style-loader": "^1.2.1",
- "stylelint": "^15.10.1",
- "stylelint-config-prettier": "^9.0.5",
- "stylelint-config-standard": "^20.0.0",
- "terser-webpack-plugin": "<5.0.0",
- "typescript": "^4.6.3",
- "url-loader": "4.1.0",
+ "openapi-typescript": "^7.13.0",
+ "prettier": "^3.8.1",
+ "style-loader": "^4.0.0",
+ "stylelint": "^17.4.0",
+ "stylelint-config-standard": "^40.0.0",
+ "terser-webpack-plugin": "<6.0.0",
+ "typescript": "^5.9.3",
+ "url-loader": "4.1.1",
"web-worker": "^1.2.0",
- "webpack": "^5.94.0",
- "webpack-cli": "^4.0.0",
+ "webpack": "^5.105.4",
+ "webpack-cli": "^6.0.1",
"webpack-license-plugin": "^4.2.1",
- "webpack-manifest-plugin": "^4.0.0"
+ "webpack-manifest-plugin": "^6.0.1"
},
"dependencies": {
- "@chakra-ui/react": "2.4.2",
+ "@chakra-ui/react": "2.10.9",
"@emotion/cache": "^11.9.3",
"@emotion/react": "^11.9.3",
"@emotion/styled": "^11",
@@ -107,42 +111,42 @@
"@visx/group": "^2.10.0",
"@visx/shape": "^2.12.2",
"ansi_up": "^6.0.2",
- "axios": "^1.6.0",
+ "axios": "^1.13.6",
"bootstrap-3-typeahead": "^4.0.2",
- "camelcase-keys": "^7.0.0",
+ "camelcase-keys": "^10.0.2",
"chakra-react-select": "^4.0.0",
"codemirror": "^5.59.1",
- "color": "^4.2.3",
+ "color": "^5.0.3",
"d3": "^3.4.4",
"d3-selection": "^3.0.0",
- "d3-shape": "^2.1.0",
+ "d3-shape": "^3.2.0",
"d3-tip": "^0.9.1",
"dagre-d3": "^0.6.4",
- "echarts": "^5.4.2",
- "elkjs": "^0.7.1",
+ "echarts": "^6.0.0",
+ "elkjs": "^0.11.1",
"eonasdan-bootstrap-datetimepicker": "^4.17.47",
- "framer-motion": "^6.0.0",
+ "framer-motion": "^11.18.2",
"jquery": ">=3.5.0",
"jshint": "^2.13.4",
"json-to-pretty-yaml": "^1.2.2",
"lodash": "^4.17.21",
- "moment-timezone": "^0.5.43",
- "react": "^18.0.0",
- "react-dom": "^18.0.0",
- "react-icons": "^5.2.1",
+ "moment-timezone": "^0.6.0",
+ "react": "^19.2.4",
+ "react-dom": "^19.2.4",
+ "react-icons": "^5.6.0",
"react-json-view": "^1.21.3",
- "react-markdown": "^8.0.4",
+ "react-markdown": "^10.1.0",
"react-query": "^3.39.1",
- "react-router-dom": "^6.3.0",
- "react-syntax-highlighter": "^15.5.0",
+ "react-router-dom": "^7.13.1",
+ "react-syntax-highlighter": "^16.1.1",
"react-table": "^7.8.0",
"react-textarea-autosize": "^8.3.4",
"reactflow": "^11.7.4",
"redoc": "^2.0.0-rc.72",
- "remark-gfm": "^3.0.1",
- "swagger-ui-dist": "4.1.3",
- "tsconfig-paths": "^3.14.2",
- "type-fest": "^2.17.0",
+ "remark-gfm": "^4.0.1",
+ "swagger-ui-dist": "5.32.0",
+ "tsconfig-paths": "^4.2.0",
+ "type-fest": "^5.4.4",
"url-search-params-polyfill": "^8.1.0",
"validator": "^13.9.0"
},
diff --git a/airflow/www/static/css/bootstrap-theme.css b/airflow/www/static/css/bootstrap-theme.css
index 94e1ee58877..73caa181b05 100644
--- a/airflow/www/static/css/bootstrap-theme.css
+++ b/airflow/www/static/css/bootstrap-theme.css
@@ -1887,17 +1887,24 @@ output {
border-radius: 4px;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
- -webkit-transition: border-color ease-in-out 0.15s,
+ -webkit-transition:
+ border-color ease-in-out 0.15s,
+ box-shadow ease-in-out 0.15s;
+ -o-transition:
+ border-color ease-in-out 0.15s,
+ box-shadow ease-in-out 0.15s;
+ transition:
+ border-color ease-in-out 0.15s,
box-shadow ease-in-out 0.15s;
- -o-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
- transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
}
.form-control:focus {
border-color: #66afe9;
outline: 0;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075),
+ -webkit-box-shadow:
+ inset 0 1px 1px rgba(0, 0, 0, 0.075),
0 0 8px rgba(102, 175, 233, 0.6);
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075),
+ box-shadow:
+ inset 0 1px 1px rgba(0, 0, 0, 0.075),
0 0 8px rgba(102, 175, 233, 0.6);
}
.form-control::-moz-placeholder {
@@ -2123,8 +2130,12 @@ select[multiple].form-group-lg .form-control {
}
.has-success .form-control:focus {
border-color: #366f4c;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
+ -webkit-box-shadow:
+ inset 0 1px 1px rgba(0, 0, 0, 0.075),
+ 0 0 6px #67b168;
+ box-shadow:
+ inset 0 1px 1px rgba(0, 0, 0, 0.075),
+ 0 0 6px #67b168;
}
.has-success .input-group-addon {
color: #1b8e49;
@@ -2153,8 +2164,12 @@ select[multiple].form-group-lg .form-control {
}
.has-warning .form-control:focus {
border-color: #66512c;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
+ -webkit-box-shadow:
+ inset 0 1px 1px rgba(0, 0, 0, 0.075),
+ 0 0 6px #c0a16b;
+ box-shadow:
+ inset 0 1px 1px rgba(0, 0, 0, 0.075),
+ 0 0 6px #c0a16b;
}
.has-warning .input-group-addon {
color: #8a6d3b;
@@ -2183,8 +2198,12 @@ select[multiple].form-group-lg .form-control {
}
.has-error .form-control:focus {
border-color: #843534;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
+ -webkit-box-shadow:
+ inset 0 1px 1px rgba(0, 0, 0, 0.075),
+ 0 0 6px #ce8483;
+ box-shadow:
+ inset 0 1px 1px rgba(0, 0, 0, 0.075),
+ 0 0 6px #ce8483;
}
.has-error .input-group-addon {
color: #e43921;
@@ -3637,9 +3656,11 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
padding: 10px 15px;
border-top: 1px solid transparent;
border-bottom: 1px solid transparent;
- -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1),
+ -webkit-box-shadow:
+ inset 0 1px 0 rgba(255, 255, 255, 0.1),
0 1px 0 rgba(255, 255, 255, 0.1);
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1),
+ box-shadow:
+ inset 0 1px 0 rgba(255, 255, 255, 0.1),
0 1px 0 rgba(255, 255, 255, 0.1);
margin-top: 8px;
margin-bottom: 8px;
diff --git a/airflow/www/static/css/chart.css b/airflow/www/static/css/chart.css
index b7968d55ca3..9fc68c9255d 100644
--- a/airflow/www/static/css/chart.css
+++ b/airflow/www/static/css/chart.css
@@ -43,7 +43,6 @@ rect.state {
.tooltip.in {
opacity: 1;
- filter: alpha(opacity=100);
}
.axis path,
diff --git a/airflow/www/static/css/graph.css b/airflow/www/static/css/graph.css
index f175a7e025d..beb00b1f44d 100644
--- a/airflow/www/static/css/graph.css
+++ b/airflow/www/static/css/graph.css
@@ -25,7 +25,9 @@ svg {
stroke: #51504f;
stroke-width: 1px;
fill: #fff;
- transition: stroke 0.2s ease-in-out, opacity 0.2s ease-in-out;
+ transition:
+ stroke 0.2s ease-in-out,
+ opacity 0.2s ease-in-out;
}
.node rect[data-highlight="highlight"] {
@@ -53,7 +55,9 @@ svg {
stroke: #51504f;
stroke-width: 1px;
fill: none;
- transition: stroke 0.2s ease-in-out, opacity 0.2s ease-in-out;
+ transition:
+ stroke 0.2s ease-in-out,
+ opacity 0.2s ease-in-out;
}
.edgePath[data-highlight="fade"],
@@ -70,7 +74,9 @@ svg {
stroke: none !important;
fill: #51504f;
stroke-width: 0 !important;
- transition: fill 0.2s ease-in-out, opacity 0.2s ease-in-out;
+ transition:
+ fill 0.2s ease-in-out,
+ opacity 0.2s ease-in-out;
}
.edgePath[data-highlight="highlight"] .arrowhead {
diff --git a/airflow/www/static/js/api/useClearRun.ts b/airflow/www/static/js/api/useClearRun.ts
index 8835b3caec3..fabbcc5b16d 100644
--- a/airflow/www/static/js/api/useClearRun.ts
+++ b/airflow/www/static/js/api/useClearRun.ts
@@ -36,6 +36,7 @@ export default function useClearRun(dagId: string, runId: string) {
["dagRunClear", dagId, runId],
({
confirmed = false,
+ // eslint-disable-next-line camelcase
only_failed = false,
}: {
confirmed: boolean;
@@ -44,6 +45,7 @@ export default function useClearRun(dagId: string, runId: string) {
const params = new URLSearchParamsWrapper({
csrf_token: csrfToken,
confirmed,
+ // eslint-disable-next-line camelcase
only_failed,
dag_id: dagId,
dag_run_id: runId,
@@ -63,6 +65,6 @@ export default function useClearRun(dagId: string, runId: string) {
}
},
onError: (error: Error) => errorToast({ error }),
- }
+ },
);
}
diff --git a/airflow/www/static/js/api/useClearTask.ts b/airflow/www/static/js/api/useClearTask.ts
index b4f80e5a7bf..e7f663d9ee0 100644
--- a/airflow/www/static/js/api/useClearTask.ts
+++ b/airflow/www/static/js/api/useClearTask.ts
@@ -112,6 +112,6 @@ export default function useClearTask({
onError: (error: Error, { confirmed }) => {
if (confirmed) errorToast({ error });
},
- }
+ },
);
}
diff --git a/airflow/www/static/js/api/useClearTaskDryRun.ts b/airflow/www/static/js/api/useClearTaskDryRun.ts
index 33986a9b486..570aff2b00f 100644
--- a/airflow/www/static/js/api/useClearTaskDryRun.ts
+++ b/airflow/www/static/js/api/useClearTaskDryRun.ts
@@ -101,10 +101,10 @@ const useClearTaskDryRun = ({
headers: {
"Content-Type": "application/x-www-form-urlencoded",
},
- }
+ },
);
},
- { enabled }
+ { enabled },
);
export default useClearTaskDryRun;
diff --git a/airflow/www/static/js/api/useCreateDatasetEvent.ts b/airflow/www/static/js/api/useCreateDatasetEvent.ts
index f14b35ee375..feb206b3997 100644
--- a/airflow/www/static/js/api/useCreateDatasetEvent.ts
+++ b/airflow/www/static/js/api/useCreateDatasetEvent.ts
@@ -43,13 +43,13 @@ export default function useCreateDatasetEvent({ datasetId, uri }: Props) {
{
dataset_uri: uri,
extra: extra || {},
- }
+ },
),
{
onSuccess: () => {
queryClient.invalidateQueries(["datasets-events", datasetId]);
},
onError: (error: Error) => errorToast({ error }),
- }
+ },
);
}
diff --git a/airflow/www/static/js/api/useDagCode.ts b/airflow/www/static/js/api/useDagCode.ts
index c6856cd7433..c6f562af182 100644
--- a/airflow/www/static/js/api/useDagCode.ts
+++ b/airflow/www/static/js/api/useDagCode.ts
@@ -32,7 +32,7 @@ export default function useDagCode() {
const fileToken = dagData?.fileToken || "";
const dagSourceApiUrl = getMetaValue("dag_source_api").replace(
"_FILE_TOKEN_",
- fileToken
+ fileToken,
);
return axios.get<AxiosResponse, string>(dagSourceApiUrl, {
headers: { Accept: "text/plain" },
@@ -40,6 +40,6 @@ export default function useDagCode() {
},
{
enabled: !!dagData?.fileToken,
- }
+ },
);
}
diff --git a/airflow/www/static/js/api/useDagDetails.ts b/airflow/www/static/js/api/useDagDetails.ts
index 16c8e4397ce..57b6ff2cd92 100644
--- a/airflow/www/static/js/api/useDagDetails.ts
+++ b/airflow/www/static/js/api/useDagDetails.ts
@@ -29,7 +29,7 @@ const dagDetailsApiUrl = getMetaValue("dag_details_api");
const combineResults = (
dagData: DAG,
- dagDetailsData: DAGDetail
+ dagDetailsData: DAGDetail,
): Omit<DAGDetail, "defaultView"> => ({ ...dagData, ...dagDetailsData });
const useDagDetails = () => {
@@ -39,13 +39,13 @@ const useDagDetails = () => {
() => axios.get<AxiosResponse, API.DAGDetail>(dagDetailsApiUrl),
{
enabled: !!dagData,
- }
+ },
);
return {
...dagDetailsResult,
data: combineResults(
dagData || {},
- dagDetailsResult.data ? dagDetailsResult.data : {}
+ dagDetailsResult.data ? dagDetailsResult.data : {},
),
};
};
diff --git a/airflow/www/static/js/api/useDagRuns.tsx b/airflow/www/static/js/api/useDagRuns.tsx
index 5bc1a437488..5af0ecaf53a 100644
--- a/airflow/www/static/js/api/useDagRuns.tsx
+++ b/airflow/www/static/js/api/useDagRuns.tsx
@@ -43,7 +43,7 @@ const useDagRuns = ({
}),
{
refetchInterval: (autoRefreshInterval || 1) * 1000,
- }
+ },
);
};
diff --git a/airflow/www/static/js/api/useDags.tsx b/airflow/www/static/js/api/useDags.tsx
index 8939da21d96..3052bfa0c69 100644
--- a/airflow/www/static/js/api/useDags.tsx
+++ b/airflow/www/static/js/api/useDags.tsx
@@ -34,7 +34,7 @@ const useDags = ({ paused }: API.GetDagsVariables) =>
}),
{
refetchInterval: (autoRefreshInterval || 1) * 1000,
- }
+ },
);
export default useDags;
diff --git a/airflow/www/static/js/api/useDataset.ts b/airflow/www/static/js/api/useDataset.ts
index 4793464fac3..146ed7d6ed5 100644
--- a/airflow/www/static/js/api/useDataset.ts
+++ b/airflow/www/static/js/api/useDataset.ts
@@ -31,7 +31,7 @@ export default function useDataset({ uri }: Props) {
return useQuery(["dataset", uri], () => {
const datasetUrl = getMetaValue("dataset_api").replace(
"__URI__",
- encodeURIComponent(uri)
+ encodeURIComponent(uri),
);
return axios.get<AxiosResponse, API.Dataset>(datasetUrl);
});
diff --git a/airflow/www/static/js/api/useDatasetEvents.ts b/airflow/www/static/js/api/useDatasetEvents.ts
index 30e4670a87d..03dd0183ef8 100644
--- a/airflow/www/static/js/api/useDatasetEvents.ts
+++ b/airflow/www/static/js/api/useDatasetEvents.ts
@@ -76,7 +76,7 @@ const useDatasetEvents = ({
{
keepPreviousData: true,
...options,
- }
+ },
);
return {
...query,
diff --git a/airflow/www/static/js/api/useDatasets.ts b/airflow/www/static/js/api/useDatasets.ts
index db46415062c..8a0a5de17fe 100644
--- a/airflow/www/static/js/api/useDatasets.ts
+++ b/airflow/www/static/js/api/useDatasets.ts
@@ -44,6 +44,6 @@ export default function useDatasets({ dagIds, enabled = true }: Props) {
},
{
enabled,
- }
+ },
);
}
diff --git a/airflow/www/static/js/api/useDatasetsSummary.ts b/airflow/www/static/js/api/useDatasetsSummary.ts
index 6f902946f62..8c90bf5f24c 100644
--- a/airflow/www/static/js/api/useDatasetsSummary.ts
+++ b/airflow/www/static/js/api/useDatasetsSummary.ts
@@ -76,7 +76,7 @@ export default function useDatasetsSummary({
},
{
keepPreviousData: true,
- }
+ },
);
return {
...query,
diff --git a/airflow/www/static/js/api/useEventLogs.tsx b/airflow/www/static/js/api/useEventLogs.tsx
index 4b5cc92ce59..f7d231d8d2c 100644
--- a/airflow/www/static/js/api/useEventLogs.tsx
+++ b/airflow/www/static/js/api/useEventLogs.tsx
@@ -80,6 +80,6 @@ export default function useEventLogs({
{
refetchInterval: isRefreshOn && (autoRefreshInterval || 1) * 1000,
keepPreviousData: true,
- }
+ },
);
}
diff --git a/airflow/www/static/js/api/useExtraLinks.ts b/airflow/www/static/js/api/useExtraLinks.ts
index e4140d7d4c8..0a861925997 100644
--- a/airflow/www/static/js/api/useExtraLinks.ts
+++ b/airflow/www/static/js/api/useExtraLinks.ts
@@ -52,13 +52,13 @@ export default function useExtraLinks({
const tryNumberParam =
tryNumber !== undefined ? `&try_number=${tryNumber}` : "";
const url = `${extraLinksUrl}?task_id=${encodeURIComponent(
- taskId
+ taskId,
)}&dag_id=${encodeURIComponent(
- dagId
+ dagId,
)}&execution_date=${encodeURIComponent(
- executionDate
+ executionDate,
)}&link_name=${encodeURIComponent(
- link
+ link,
)}&map_index=${definedMapIndex}${tryNumberParam}`;
try {
const datum = await axios.get<AxiosResponse, LinkData>(url);
@@ -74,9 +74,9 @@ export default function useExtraLinks({
url: "",
};
}
- })
+ }),
);
return data;
- }
+ },
);
}
diff --git a/airflow/www/static/js/api/useGraphData.ts b/airflow/www/static/js/api/useGraphData.ts
index e7a94156ef2..82f747c098b 100644
--- a/airflow/www/static/js/api/useGraphData.ts
+++ b/airflow/www/static/js/api/useGraphData.ts
@@ -54,7 +54,7 @@ const useGraphData = () => {
[FILTER_DOWNSTREAM_PARAM]: filterDownstream,
};
return axios.get<AxiosResponse, GraphData>(graphDataUrl, { params });
- }
+ },
);
};
diff --git a/airflow/www/static/js/api/useGridData.ts b/airflow/www/static/js/api/useGridData.ts
index 6bed9dfd71c..16f88ed8cf7 100644
--- a/airflow/www/static/js/api/useGridData.ts
+++ b/airflow/www/static/js/api/useGridData.ts
@@ -122,13 +122,13 @@ const useGridData = () => {
// If the run id cannot be found in the response, try fetching it to see if its real and then adjust the base date filter
try {
const selectedRun = await axios.get<AxiosResponse, API.DAGRun>(
- dagRunUrl
+ dagRunUrl,
);
if (selectedRun?.executionDate) {
onBaseDateChange(selectedRun.executionDate);
}
// otherwise the run_id isn't valid and we should unselect it
- } catch (e) {
+ } catch (_e) {
onSelect({ taskId });
}
}
@@ -160,7 +160,7 @@ const useGridData = () => {
throw error;
},
select: formatOrdering,
- }
+ },
);
return {
...query,
diff --git a/airflow/www/static/js/api/useHealth.ts b/airflow/www/static/js/api/useHealth.ts
index ab86698507c..d34de9ea005 100644
--- a/airflow/www/static/js/api/useHealth.ts
+++ b/airflow/www/static/js/api/useHealth.ts
@@ -31,7 +31,7 @@ const useHealth = () =>
async () => axios.get<AxiosResponse, API.HealthInfo>(healthUrl),
{
refetchInterval: (autoRefreshInterval || 1) * 1000,
- }
+ },
);
export default useHealth;
diff --git a/airflow/www/static/js/api/useHistoricalMetricsData.ts b/airflow/www/static/js/api/useHistoricalMetricsData.ts
index d14ce13fb69..1a0dfefa8c3 100644
--- a/airflow/www/static/js/api/useHistoricalMetricsData.ts
+++ b/airflow/www/static/js/api/useHistoricalMetricsData.ts
@@ -34,7 +34,7 @@ const useHistoricalMetricsData = (startDate: string, endDate: string) =>
}),
{
refetchInterval: (autoRefreshInterval || 1) * 1000,
- }
+ },
);
export default useHistoricalMetricsData;
diff --git a/airflow/www/static/js/api/useMappedInstances.ts b/airflow/www/static/js/api/useMappedInstances.ts
index 0d76e70305c..bdb268f9dba 100644
--- a/airflow/www/static/js/api/useMappedInstances.ts
+++ b/airflow/www/static/js/api/useMappedInstances.ts
@@ -51,6 +51,6 @@ export default function useMappedInstances({
refetchInterval: isRefreshOn && (autoRefreshInterval || 1) * 1000,
// staleTime should be similar to the refresh interval
staleTime: (autoRefreshInterval || 1) * 1000,
- }
+ },
);
}
diff --git a/airflow/www/static/js/api/useMarkFailedRun.ts b/airflow/www/static/js/api/useMarkFailedRun.ts
index 11a94e4264d..c071bee6ffc 100644
--- a/airflow/www/static/js/api/useMarkFailedRun.ts
+++ b/airflow/www/static/js/api/useMarkFailedRun.ts
@@ -56,6 +56,6 @@ export default function useMarkFailedRun(dagId: string, runId: string) {
}
},
onError: (error: Error) => errorToast({ error }),
- }
+ },
);
}
diff --git a/airflow/www/static/js/api/useMarkFailedTask.ts b/airflow/www/static/js/api/useMarkFailedTask.ts
index a3fbe554016..a24ac822c4c 100644
--- a/airflow/www/static/js/api/useMarkFailedTask.ts
+++ b/airflow/www/static/js/api/useMarkFailedTask.ts
@@ -101,6 +101,6 @@ export default function useMarkFailedTask({
startRefresh();
},
onError: (error: Error) => errorToast({ error }),
- }
+ },
);
}
diff --git a/airflow/www/static/js/api/useMarkSuccessRun.ts b/airflow/www/static/js/api/useMarkSuccessRun.ts
index 119fb29839d..4aedc7ee92c 100644
--- a/airflow/www/static/js/api/useMarkSuccessRun.ts
+++ b/airflow/www/static/js/api/useMarkSuccessRun.ts
@@ -55,6 +55,6 @@ export default function useMarkSuccessRun(dagId: string, runId: string) {
}
},
onError: (error: Error) => errorToast({ error }),
- }
+ },
);
}
diff --git a/airflow/www/static/js/api/useMarkSuccessTask.ts b/airflow/www/static/js/api/useMarkSuccessTask.ts
index 3676684b6a8..e3d1a8bb2c8 100644
--- a/airflow/www/static/js/api/useMarkSuccessTask.ts
+++ b/airflow/www/static/js/api/useMarkSuccessTask.ts
@@ -101,6 +101,6 @@ export default function useMarkSuccessTask({
startRefresh();
},
onError: (error: Error) => errorToast({ error }),
- }
+ },
);
}
diff --git a/airflow/www/static/js/api/useMarkTaskDryRun.ts b/airflow/www/static/js/api/useMarkTaskDryRun.ts
index 51478299410..ad42bb7b7c0 100644
--- a/airflow/www/static/js/api/useMarkTaskDryRun.ts
+++ b/airflow/www/static/js/api/useMarkTaskDryRun.ts
@@ -87,7 +87,7 @@ const useMarkTaskDryRun = ({
params,
});
},
- { enabled }
+ { enabled },
);
export default useMarkTaskDryRun;
diff --git a/airflow/www/static/js/api/usePools.ts b/airflow/www/static/js/api/usePools.ts
index 664626a2ab4..cf9172ec284 100644
--- a/airflow/www/static/js/api/usePools.ts
+++ b/airflow/www/static/js/api/usePools.ts
@@ -34,7 +34,7 @@ const usePools = () => {
async () => axios.get<AxiosResponse, API.PoolCollection>(poolsUrl),
{
refetchInterval: isRefreshOn && (autoRefreshInterval || 1) * 1000,
- }
+ },
);
};
diff --git a/airflow/www/static/js/api/useQueueRun.ts b/airflow/www/static/js/api/useQueueRun.ts
index 28157a1879e..366e4996bf1 100644
--- a/airflow/www/static/js/api/useQueueRun.ts
+++ b/airflow/www/static/js/api/useQueueRun.ts
@@ -54,6 +54,6 @@ export default function useQueueRun(dagId: string, runId: string) {
}
},
onError: (error: Error) => errorToast({ error }),
- }
+ },
);
}
diff --git a/airflow/www/static/js/api/useRenderedK8s.ts b/airflow/www/static/js/api/useRenderedK8s.ts
index f959c5f6262..7c551f2f4a2 100644
--- a/airflow/www/static/js/api/useRenderedK8s.ts
+++ b/airflow/www/static/js/api/useRenderedK8s.ts
@@ -27,7 +27,7 @@ const url = getMetaValue("rendered_k8s_data_url");
const useRenderedK8s = (
runId: string | null,
taskId: string | null,
- mapIndex?: number
+ mapIndex?: number,
) =>
useQuery(
["rendered_k8s", runId, taskId, mapIndex],
@@ -37,7 +37,7 @@ const useRenderedK8s = (
}),
{
enabled: !!runId && !!taskId,
- }
+ },
);
export default useRenderedK8s;
diff --git a/airflow/www/static/js/api/useSetDagRunNote.ts b/airflow/www/static/js/api/useSetDagRunNote.ts
index 7f561d47fee..3aca5aaa5cb 100644
--- a/airflow/www/static/js/api/useSetDagRunNote.ts
+++ b/airflow/www/static/js/api/useSetDagRunNote.ts
@@ -53,7 +53,7 @@ export default function useSetDagRunNote({ dagId, runId }: Props) {
: {
...oldGridData,
dagRuns: oldGridData.dagRuns.map((dr) =>
- dr.runId === runId ? { ...dr, note } : dr
+ dr.runId === runId ? { ...dr, note } : dr,
),
};
@@ -61,6 +61,6 @@ export default function useSetDagRunNote({ dagId, runId }: Props) {
queryClient.setQueriesData("gridData", updateGridData);
},
onError: (error: Error) => errorToast({ error }),
- }
+ },
);
}
diff --git a/airflow/www/static/js/api/useSetTaskInstanceNote.ts b/airflow/www/static/js/api/useSetTaskInstanceNote.ts
index caca6c28065..f8dcca2a25a 100644
--- a/airflow/www/static/js/api/useSetTaskInstanceNote.ts
+++ b/airflow/www/static/js/api/useSetTaskInstanceNote.ts
@@ -27,7 +27,7 @@ import type { API } from "src/types";
const setTaskInstancesNoteURI = getMetaValue("set_task_instance_note");
const setMappedTaskInstancesNoteURI = getMetaValue(
- "set_mapped_task_instance_note"
+ "set_mapped_task_instance_note",
);
interface Props {
@@ -64,7 +64,7 @@ export default function useSetTaskInstanceNote({
const note = data.note ?? null;
const updateMappedInstancesResult = (
- oldMappedInstances?: API.TaskInstanceCollection
+ oldMappedInstances?: API.TaskInstanceCollection,
) => {
if (!oldMappedInstances) {
return {
@@ -80,13 +80,13 @@ export default function useSetTaskInstanceNote({
ti.taskId === taskId &&
ti.mapIndex === mapIndex
? { ...ti, note }
- : ti
+ : ti,
),
};
};
const updateTaskInstanceResult = (
- oldTaskInstance?: API.TaskInstance
+ oldTaskInstance?: API.TaskInstance,
) => {
if (!oldTaskInstance) throw new Error("Unknown value...");
if (
@@ -113,17 +113,17 @@ export default function useSetTaskInstanceNote({
await queryClient.cancelQueries("mappedInstances");
queryClient.setQueriesData(
"mappedInstances",
- updateMappedInstancesResult
+ updateMappedInstancesResult,
);
}
await queryClient.cancelQueries("taskInstance");
queryClient.setQueriesData(
["taskInstance", dagId, runId, taskId, mapIndex],
- updateTaskInstanceResult
+ updateTaskInstanceResult,
);
},
onError: (error: Error) => errorToast({ error }),
- }
+ },
);
}
diff --git a/airflow/www/static/js/api/useTIHistory.ts b/airflow/www/static/js/api/useTIHistory.ts
index 1d1ee1d40f5..fd9c3a6b659 100644
--- a/airflow/www/static/js/api/useTIHistory.ts
+++ b/airflow/www/static/js/api/useTIHistory.ts
@@ -57,6 +57,6 @@ export default function useTIHistory({
{
refetchInterval: isRefreshOn && (autoRefreshInterval || 1) * 1000,
...options,
- }
+ },
);
}
diff --git a/airflow/www/static/js/api/useTaskFailedDependency.ts b/airflow/www/static/js/api/useTaskFailedDependency.ts
index 08168deebff..355f923fade 100644
--- a/airflow/www/static/js/api/useTaskFailedDependency.ts
+++ b/airflow/www/static/js/api/useTaskFailedDependency.ts
@@ -48,7 +48,7 @@ export default function useTaskFailedDependency({
.replace("_DAG_RUN_ID_", runId)
.replace(
"_TASK_ID_/0/dependencies",
- `_TASK_ID_/${mapIndex}/dependencies`
+ `_TASK_ID_/${mapIndex}/dependencies`,
)
.replace("_TASK_ID_", taskId);
@@ -58,6 +58,6 @@ export default function useTaskFailedDependency({
>(url);
return datum;
},
- { refetchInterval: isRefreshOn && (autoRefreshInterval || 1) * 1000 }
+ { refetchInterval: isRefreshOn && (autoRefreshInterval || 1) * 1000 },
);
}
diff --git a/airflow/www/static/js/api/useTaskInstance.ts b/airflow/www/static/js/api/useTaskInstance.ts
index c5a96f3e440..3dc2eff0ae4 100644
--- a/airflow/www/static/js/api/useTaskInstance.ts
+++ b/airflow/www/static/js/api/useTaskInstance.ts
@@ -27,8 +27,10 @@ import type { SetOptional } from "type-fest";
const taskInstanceApi = getMetaValue("task_instance_api");
-interface Props
- extends SetOptional<API.GetMappedTaskInstanceVariables, "mapIndex"> {
+interface Props extends SetOptional<
+ API.GetMappedTaskInstanceVariables,
+ "mapIndex"
+> {
options?: UseQueryOptions<API.TaskInstance>;
}
@@ -59,7 +61,7 @@ const useTaskInstance = ({
{
refetchInterval: isRefreshOn && (autoRefreshInterval || 1) * 1000,
...options,
- }
+ },
);
};
diff --git a/airflow/www/static/js/api/useTaskLog.ts b/airflow/www/static/js/api/useTaskLog.ts
index a5e9bab69f8..1aea4eeaeac 100644
--- a/airflow/www/static/js/api/useTaskLog.ts
+++ b/airflow/www/static/js/api/useTaskLog.ts
@@ -76,7 +76,7 @@ const useTaskLog = ({
{
refetchInterval:
expectingLogs && isRefreshOn && (autoRefreshInterval || 1) * 1000,
- }
+ },
);
};
diff --git a/airflow/www/static/js/api/useTaskXcom.ts b/airflow/www/static/js/api/useTaskXcom.ts
index d8758e60b90..78ade8c25d2 100644
--- a/airflow/www/static/js/api/useTaskXcom.ts
+++ b/airflow/www/static/js/api/useTaskXcom.ts
@@ -43,8 +43,8 @@ export const useTaskXcomCollection = ({
getMetaValue("task_xcom_entries_api")
.replace("_DAG_RUN_ID_", dagRunId)
.replace("_TASK_ID_", taskId),
- { params: { map_index: mapIndex } }
- )
+ { params: { map_index: mapIndex } },
+ ),
);
export const useTaskXcomEntry = ({
@@ -69,5 +69,5 @@ export const useTaskXcomEntry = ({
},
{
enabled: !!xcomKey,
- }
+ },
);
diff --git a/airflow/www/static/js/api/useUpstreamDatasetEvents.ts b/airflow/www/static/js/api/useUpstreamDatasetEvents.ts
index 32d1c7aeff2..83623627bee 100644
--- a/airflow/www/static/js/api/useUpstreamDatasetEvents.ts
+++ b/airflow/www/static/js/api/useUpstreamDatasetEvents.ts
@@ -39,7 +39,7 @@ const useUpstreamDatasetEvents = ({ dagId, dagRunId, options }: Props) => {
const query = useQuery<DatasetEventCollection>(
["upstreamDatasetEvents", dagRunId],
() => axios.get(upstreamEventsUrl),
- options
+ options,
);
return {
diff --git a/airflow/www/static/js/cluster-activity/historical-metrics/PieChart.tsx b/airflow/www/static/js/cluster-activity/historical-metrics/PieChart.tsx
index a1aa86cc5ac..547b0c64baa 100644
--- a/airflow/www/static/js/cluster-activity/historical-metrics/PieChart.tsx
+++ b/airflow/www/static/js/cluster-activity/historical-metrics/PieChart.tsx
@@ -41,7 +41,7 @@ type SeriesData = Array<SeriesPoint>;
const camelCaseColorPalette = mapKeys(stateColors, (_, k) => camelCase(k));
const formatData = (
- data: HistoricalMetricsData[keyof HistoricalMetricsData] | undefined
+ data: HistoricalMetricsData[keyof HistoricalMetricsData] | undefined,
): [number, SeriesData] => {
if (data === undefined) return [0, []];
@@ -96,7 +96,7 @@ const PieChart = ({
if (color === undefined) {
// eslint-disable-next-line no-console
console.warn(
- `The color for ${d.name} is missing from the palette, defaulting to black`
+ `The color for ${d.name} is missing from the palette, defaulting to black`,
);
color = "black";
}
diff --git a/airflow/www/static/js/cluster-activity/index.test.tsx b/airflow/www/static/js/cluster-activity/index.test.tsx
index 3381a5be873..ce7fe3ddbf3 100644
--- a/airflow/www/static/js/cluster-activity/index.test.tsx
+++ b/airflow/www/static/js/cluster-activity/index.test.tsx
@@ -111,7 +111,7 @@ describe("Test ToggleGroups", () => {
({
data: mockHistoricalMetricsData,
isSuccess: true,
- } as never as UseQueryResult<HistoricalMetricsData>)
+ }) as never as UseQueryResult<HistoricalMetricsData>,
);
jest.spyOn(useHealthModule, "default").mockImplementation(
@@ -119,7 +119,7 @@ describe("Test ToggleGroups", () => {
({
data: mockHealthData,
isSuccess: true,
- } as never as UseQueryResult<API.HealthInfo>)
+ }) as never as UseQueryResult<API.HealthInfo>,
);
jest.spyOn(useDagsModule, "default").mockImplementation(
@@ -127,7 +127,7 @@ describe("Test ToggleGroups", () => {
({
data: mockDagsData,
isSuccess: true,
- } as never as UseQueryResult<API.DAGCollection>)
+ }) as never as UseQueryResult<API.DAGCollection>,
);
jest.spyOn(useDagRunsModule, "default").mockImplementation(
@@ -135,7 +135,7 @@ describe("Test ToggleGroups", () => {
({
data: mockDagRunsData,
isSuccess: true,
- } as never as UseQueryResult<API.DAGRunCollection>)
+ }) as never as UseQueryResult<API.DAGRunCollection>,
);
jest.spyOn(usePoolsModule, "default").mockImplementation(
@@ -143,7 +143,7 @@ describe("Test ToggleGroups", () => {
({
data: mockPoolsData,
isSuccess: true,
- } as never as UseQueryResult<API.PoolCollection>)
+ }) as never as UseQueryResult<API.PoolCollection>,
);
});
@@ -152,7 +152,7 @@ describe("Test ToggleGroups", () => {
<ClusterActivity />,
{
wrapper: Wrapper,
- }
+ },
);
expect(getAllByTestId("echart-container")).toHaveLength(4);
diff --git a/airflow/www/static/js/cluster-activity/index.tsx b/airflow/www/static/js/cluster-activity/index.tsx
index 01b21b0dd84..debaad78b5f 100644
--- a/airflow/www/static/js/cluster-activity/index.tsx
+++ b/airflow/www/static/js/cluster-activity/index.tsx
@@ -59,6 +59,6 @@ if (mainElement) {
reactRoot.render(
<App cache={cache}>
<ClusterActivity />
- </App>
+ </App>,
);
}
diff --git a/airflow/www/static/js/cluster-activity/live-metrics/DagRuns.tsx b/airflow/www/static/js/cluster-activity/live-metrics/DagRuns.tsx
index 7f2b169359e..e28641dc562 100644
--- a/airflow/www/static/js/cluster-activity/live-metrics/DagRuns.tsx
+++ b/airflow/www/static/js/cluster-activity/live-metrics/DagRuns.tsx
@@ -81,7 +81,7 @@ const DagRuns = (props: BoxProps) => {
href={`dags/${
dagRun.dagId
}/grid?dag_run_id=${encodeURIComponent(
- dagRun.dagRunId as string
+ dagRun.dagRunId as string,
)}`}
>
{dagRun.dagId}
@@ -90,7 +90,7 @@ const DagRuns = (props: BoxProps) => {
<Td>{dagRun.runType}</Td>
<Td>
{formatDuration(
- getDuration(dagRun.startDate, dagRun.endDate)
+ getDuration(dagRun.startDate, dagRun.endDate),
)}
</Td>
</Tr>
diff --git a/airflow/www/static/js/cluster-activity/live-metrics/Pools.tsx b/airflow/www/static/js/cluster-activity/live-metrics/Pools.tsx
index 037f5cce6d1..0be9329a723 100644
--- a/airflow/www/static/js/cluster-activity/live-metrics/Pools.tsx
+++ b/airflow/www/static/js/cluster-activity/live-metrics/Pools.tsx
@@ -33,7 +33,7 @@ import type { API } from "src/types";
import LoadingWrapper from "src/components/LoadingWrapper";
const formatData = (
- data?: API.PoolCollection
+ data?: API.PoolCollection,
): Array<[string, number, number, number, number, number]> =>
data?.pools?.map((pool) => [
pool.name || "",
diff --git a/airflow/www/static/js/cluster-activity/useFilters.tsx b/airflow/www/static/js/cluster-activity/useFilters.tsx
index 2e1c415223d..296835cc153 100644
--- a/airflow/www/static/js/cluster-activity/useFilters.tsx
+++ b/airflow/www/static/js/cluster-activity/useFilters.tsx
@@ -73,12 +73,12 @@ const useFilters = (): FilterHookReturn => {
const onStartDateChange = makeOnChangeFn(
START_DATE_PARAM,
// @ts-ignore
- (localDate: string) => moment(localDate).utc().format()
+ (localDate: string) => moment(localDate).utc().format(),
);
const onEndDateChange = makeOnChangeFn(END_DATE_PARAM, (localDate: string) =>
// @ts-ignore
- moment(localDate).utc().format()
+ moment(localDate).utc().format(),
);
const clearFilters = () => {
diff --git a/airflow/www/static/js/components/Clipboard.test.tsx b/airflow/www/static/js/components/Clipboard.test.tsx
index 1d7b39bdb46..ec179230541 100644
--- a/airflow/www/static/js/components/Clipboard.test.tsx
+++ b/airflow/www/static/js/components/Clipboard.test.tsx
@@ -35,7 +35,7 @@ describe("ClipboardButton", () => {
fireEvent.click(button);
expect(window.prompt).toHaveBeenCalledWith(
"Copy to clipboard: Ctrl+C, Enter",
- "lorem ipsum"
+ "lorem ipsum",
);
window.prompt = windowPrompt;
});
diff --git a/airflow/www/static/js/components/Clipboard.tsx b/airflow/www/static/js/components/Clipboard.tsx
index 11b2547c1e6..85cd87a7946 100644
--- a/airflow/www/static/js/components/Clipboard.tsx
+++ b/airflow/www/static/js/components/Clipboard.tsx
@@ -41,7 +41,7 @@ export const ClipboardButton = forwardRef(
"aria-label": ariaLabel = "Copy",
...rest
},
- ref
+ ref,
) => {
const { setValue, hasCopied, onCopy } = useClipboard(value);
const containerRef = useContainerRef();
@@ -80,7 +80,7 @@ export const ClipboardButton = forwardRef(
)}
</Tooltip>
);
- }
+ },
);
interface Props {
diff --git a/airflow/www/static/js/components/DatasetEventCard.tsx b/airflow/www/static/js/components/DatasetEventCard.tsx
index 2367c8efa9b..1ce870bd27c 100644
--- a/airflow/www/static/js/components/DatasetEventCard.tsx
+++ b/airflow/www/static/js/components/DatasetEventCard.tsx
@@ -85,7 +85,7 @@ const DatasetEventCard = ({
color="blue.600"
ml={2}
href={`${datasetsUrl}?uri=${encodeURIComponent(
- datasetEvent.datasetUri
+ datasetEvent.datasetUri,
)}`}
>
{datasetEvent.datasetUri}
diff --git a/airflow/www/static/js/components/InstanceTooltip.test.tsx b/airflow/www/static/js/components/InstanceTooltip.test.tsx
index c52a4656636..8687798ad24 100644
--- a/airflow/www/static/js/components/InstanceTooltip.test.tsx
+++ b/airflow/www/static/js/components/InstanceTooltip.test.tsx
@@ -48,7 +48,7 @@ describe("Test Task InstanceTooltip", () => {
}}
instance={instance}
/>,
- { wrapper: Wrapper }
+ { wrapper: Wrapper },
);
expect(getByText("Trigger Rule: all_failed")).toBeDefined();
@@ -68,7 +68,7 @@ describe("Test Task InstanceTooltip", () => {
}}
instance={{ ...instance, mappedStates: { success: 2 } }}
/>,
- { wrapper: Wrapper }
+ { wrapper: Wrapper },
);
expect(getByText("Overall Status: success")).toBeDefined();
@@ -102,7 +102,7 @@ describe("Test Task InstanceTooltip", () => {
}}
instance={instance}
/>,
- { wrapper: Wrapper }
+ { wrapper: Wrapper },
);
expect(getByText("Overall Status: success")).toBeDefined();
@@ -116,7 +116,7 @@ describe("Test Task InstanceTooltip", () => {
group={{ id: "task", label: "task", instances: [] }}
instance={{ ...instance, note: "note" }}
/>,
- { wrapper: Wrapper }
+ { wrapper: Wrapper },
);
expect(getByText("Contains a note")).toBeInTheDocument();
@@ -128,7 +128,7 @@ describe("Test Task InstanceTooltip", () => {
group={{ id: "task", label: "task", instances: [] }}
instance={{ ...instance, startDate: null }}
/>,
- { wrapper: Wrapper }
+ { wrapper: Wrapper },
);
expect(getByText("Status: success")).toBeDefined();
diff --git a/airflow/www/static/js/components/InstanceTooltip.tsx b/airflow/www/static/js/components/InstanceTooltip.tsx
index f7d83f347c0..81ea54dfd7e 100644
--- a/airflow/www/static/js/components/InstanceTooltip.tsx
+++ b/airflow/www/static/js/components/InstanceTooltip.tsx
@@ -79,7 +79,7 @@ const InstanceTooltip = ({
{childState}
{": "}
{key}
- </Text>
+ </Text>,
);
}
});
diff --git a/airflow/www/static/js/components/LinkButton.test.tsx b/airflow/www/static/js/components/LinkButton.test.tsx
index fe11d8e8bf2..163270233d4 100644
--- a/airflow/www/static/js/components/LinkButton.test.tsx
+++ b/airflow/www/static/js/components/LinkButton.test.tsx
@@ -29,7 +29,7 @@ describe("Test LinkButton Component.", () => {
const { getByText, container } = render(
<LinkButton>
<div>The link</div>
- </LinkButton>
+ </LinkButton>,
);
expect(getByText("The link")).toBeDefined();
diff --git a/airflow/www/static/js/components/NewTable/NewTable.tsx b/airflow/www/static/js/components/NewTable/NewTable.tsx
index a357d42605d..7cb0bae614c 100644
--- a/airflow/www/static/js/components/NewTable/NewTable.tsx
+++ b/airflow/www/static/js/components/NewTable/NewTable.tsx
@@ -117,7 +117,7 @@ export const NewTable = <TData extends RowData>({
if (!isEqual(old, updated)) onStateChange(updated);
}
},
- [onStateChange]
+ [onStateChange],
);
const tableInstance = useReactTable({
@@ -149,7 +149,7 @@ export const NewTable = <TData extends RowData>({
const upperCount = Math.min(
(pageIndex + 1) * pageSize,
pageIndex * pageSize + data.length,
- total
+ total,
);
const canPrevious = tableInstance.getCanPreviousPage();
const canNext = tableInstance.getCanNextPage() && data.length === pageSize;
@@ -205,7 +205,7 @@ export const NewTable = <TData extends RowData>({
))}
</Th>
);
- }
+ },
)}
</Tr>
))}
diff --git a/airflow/www/static/js/components/NewTable/createSkeleton.tsx b/airflow/www/static/js/components/NewTable/createSkeleton.tsx
index cb0a228c765..2d210011e21 100644
--- a/airflow/www/static/js/components/NewTable/createSkeleton.tsx
+++ b/airflow/www/static/js/components/NewTable/createSkeleton.tsx
@@ -24,7 +24,7 @@ import type { ColumnDef } from "@tanstack/react-table";
function createSkeleton<TData, TValue>(
skeletonCount: number,
- columnDefs: ColumnDef<TData, TValue>[]
+ columnDefs: ColumnDef<TData, TValue>[],
) {
const colDefs = columnDefs.map((colDef) => ({
...colDef,
@@ -39,7 +39,7 @@ function createSkeleton<TData, TValue>(
),
}));
- const data = [...Array(skeletonCount)].map(() => ({} as TData));
+ const data = [...Array(skeletonCount)].map(() => ({}) as TData);
return { columns: colDefs, data };
}
diff --git a/airflow/www/static/js/components/NewTable/searchParams.test.ts b/airflow/www/static/js/components/NewTable/searchParams.test.ts
index edff0cc0d53..569f15132d8 100644
--- a/airflow/www/static/js/components/NewTable/searchParams.test.ts
+++ b/airflow/www/static/js/components/NewTable/searchParams.test.ts
@@ -31,7 +31,7 @@ describe("searchParams", () => {
sorting: [{ id: "name", desc: false }],
};
expect(stateToSearchParams(state).toString()).toEqual(
- "limit=20&offset=1&sort.name=asc"
+ "limit=20&offset=1&sort.name=asc",
);
});
});
@@ -46,8 +46,8 @@ describe("searchParams", () => {
pageSize: 5,
},
sorting: [],
- }
- )
+ },
+ ),
).toEqual({
pagination: {
pageIndex: 0,
diff --git a/airflow/www/static/js/components/NewTable/searchParams.ts b/airflow/www/static/js/components/NewTable/searchParams.ts
index 3e6fcd7c2ec..bdd7b927315 100644
--- a/airflow/www/static/js/components/NewTable/searchParams.ts
+++ b/airflow/www/static/js/components/NewTable/searchParams.ts
@@ -28,7 +28,7 @@ export const SORT_PARAM = "sort.";
export const stateToSearchParams = (
state: TableState,
- defaultTableState?: TableState
+ defaultTableState?: TableState,
): URLSearchParams => {
const queryParams = new URLSearchParams(window.location.search);
if (isEqual(state.pagination, defaultTableState?.pagination)) {
@@ -54,7 +54,7 @@ export const stateToSearchParams = (
export const searchParamsToState = (
searchParams: URLSearchParams,
- defaultState: TableState
+ defaultState: TableState,
) => {
let urlState: Partial<TableState> = {};
const pageIndex = searchParams.get(OFFSET_PARAM);
@@ -102,7 +102,7 @@ interface CoreServiceQueryParams {
* @returns
*/
export const buildQueryParams = (
- state?: Partial<TableState>
+ state?: Partial<TableState>,
): CoreServiceQueryParams => {
let queryParams = {};
if (state?.pagination) {
@@ -115,7 +115,7 @@ export const buildQueryParams = (
}
if (state?.sorting) {
const sorts = state.sorting.map(
- ({ id, desc }) => `${id}:${desc ? "desc" : "asc"}`
+ ({ id, desc }) => `${id}:${desc ? "desc" : "asc"}`,
);
queryParams = {
...queryParams,
diff --git a/airflow/www/static/js/components/NewTable/useTableUrlState.ts b/airflow/www/static/js/components/NewTable/useTableUrlState.ts
index 8f1caeb4064..fc3b9f0979a 100644
--- a/airflow/www/static/js/components/NewTable/useTableUrlState.ts
+++ b/airflow/www/static/js/components/NewTable/useTableUrlState.ts
@@ -44,7 +44,7 @@ export const useTableURLState = (defaultState?: Partial<TableState>) => {
replace: true,
});
},
- [setSearchParams]
+ [setSearchParams],
);
const tableURLState = useMemo(
@@ -53,12 +53,12 @@ export const useTableURLState = (defaultState?: Partial<TableState>) => {
...defaultTableState,
...defaultState,
}),
- [searchParams, defaultState]
+ [searchParams, defaultState],
);
const requestParams = useMemo(
() => buildQueryParams(tableURLState),
- [tableURLState]
+ [tableURLState],
);
return {
diff --git a/airflow/www/static/js/components/ReactMarkdown.tsx b/airflow/www/static/js/components/ReactMarkdown.tsx
index b6c65327722..dfd86385f25 100644
--- a/airflow/www/static/js/components/ReactMarkdown.tsx
+++ b/airflow/www/static/js/components/ReactMarkdown.tsx
@@ -56,12 +56,11 @@ const fontSizeMapping = {
const makeHeading =
(h: keyof typeof fontSizeMapping) =>
- ({ children, ...props }: PropsWithChildren) =>
- (
- <Heading as={h} fontSize={fontSizeMapping[h]} {...props} my={3}>
- {children}
- </Heading>
- );
+ ({ children, ...props }: PropsWithChildren) => (
+ <Heading as={h} fontSize={fontSizeMapping[h]} {...props} my={3}>
+ {children}
+ </Heading>
+ );
const components = {
p: ({ children }: PropsWithChildren) => <Text>{children}</Text>,
diff --git a/airflow/www/static/js/components/SourceTaskInstance.tsx b/airflow/www/static/js/components/SourceTaskInstance.tsx
index fd64faddb4b..443626e6250 100644
--- a/airflow/www/static/js/components/SourceTaskInstance.tsx
+++ b/airflow/www/static/js/components/SourceTaskInstance.tsx
@@ -58,9 +58,9 @@ const SourceTaskInstance = ({
let url = `${gridUrl?.replace(
dagId,
- sourceDagId || ""
+ sourceDagId || "",
)}?dag_run_id=${encodeURIComponent(
- sourceRunId || ""
+ sourceRunId || "",
)}&task_id=${encodeURIComponent(sourceTaskId || "")}`;
if (
diff --git a/airflow/www/static/js/components/TabWithTooltip.tsx b/airflow/www/static/js/components/TabWithTooltip.tsx
index dfe2ffaa596..cf870907131 100644
--- a/airflow/www/static/js/components/TabWithTooltip.tsx
+++ b/airflow/www/static/js/components/TabWithTooltip.tsx
@@ -43,7 +43,7 @@ const TabWithTooltip = React.forwardRef<HTMLDivElement, TabProps>(
</Button>
</Box>
);
- }
+ },
);
export default TabWithTooltip;
diff --git a/airflow/www/static/js/components/Table/CardList.tsx b/airflow/www/static/js/components/Table/CardList.tsx
index 786336be9e2..a9058844263 100644
--- a/airflow/www/static/js/components/Table/CardList.tsx
+++ b/airflow/www/static/js/components/Table/CardList.tsx
@@ -122,7 +122,7 @@ export const CardList = <TData extends Record<string, unknown>>({
},
useSortBy,
usePagination,
- ...selectProps
+ ...selectProps,
);
const handleNext = () => {
diff --git a/airflow/www/static/js/components/Table/Table.test.tsx b/airflow/www/static/js/components/Table/Table.test.tsx
index 36d9b22456e..c9a28022baf 100644
--- a/airflow/www/static/js/components/Table/Table.test.tsx
+++ b/airflow/www/static/js/components/Table/Table.test.tsx
@@ -55,7 +55,7 @@ describe("Test Table", () => {
test("Displays correct data", async () => {
const { getAllByRole, getByText, queryByTitle } = render(
<Table data={data} columns={columns} />,
- { wrapper: ChakraWrapper }
+ { wrapper: ChakraWrapper },
);
const rows = getAllByRole("row");
@@ -84,7 +84,7 @@ describe("Test Table", () => {
test("Shows empty state", async () => {
const { getAllByRole, getByText } = render(
<Table data={[]} columns={columns} />,
- { wrapper: ChakraWrapper }
+ { wrapper: ChakraWrapper },
);
const rows = getAllByRole("row");
@@ -116,7 +116,7 @@ describe("Test Table", () => {
test("With manual pagination", async () => {
const { getAllByRole, queryByText, getByTitle } = render(
<PaginatedTable />,
- { wrapper: ChakraWrapper }
+ { wrapper: ChakraWrapper },
);
const name1 = data[0].firstName;
@@ -215,10 +215,10 @@ describe("Test Table", () => {
const ascendingData = sortBy(data, [(o) => o.firstName]);
const ascendingFirstRowName = within(ascendingRows[1]).queryByText(
- ascendingData[0].firstName
+ ascendingData[0].firstName,
);
const ascendingLastRowName = within(ascendingRows[5]).queryByText(
- ascendingData[4].firstName
+ ascendingData[4].firstName,
);
expect(ascendingFirstRowName).toBeInTheDocument();
expect(ascendingLastRowName).toBeInTheDocument();
@@ -230,10 +230,10 @@ describe("Test Table", () => {
const descendingData = sortBy(data, [(o) => o.firstName]).reverse();
const descendingFirstRowName = within(descendingRows[1]).queryByText(
- descendingData[0].firstName
+ descendingData[0].firstName,
);
const descendingLastRowName = within(descendingRows[5]).queryByText(
- descendingData[4].firstName
+ descendingData[4].firstName,
);
expect(descendingFirstRowName).toBeInTheDocument();
expect(descendingLastRowName).toBeInTheDocument();
@@ -242,7 +242,7 @@ describe("Test Table", () => {
test("Shows checkboxes", async () => {
const { getAllByTitle } = render(
<Table data={data} columns={columns} selectRows={() => {}} />,
- { wrapper: ChakraWrapper }
+ { wrapper: ChakraWrapper },
);
const checkboxes = getAllByTitle("Toggle Row Selected");
diff --git a/airflow/www/static/js/components/Table/index.tsx b/airflow/www/static/js/components/Table/index.tsx
index ea7a7786cb2..d87eb8b8e99 100644
--- a/airflow/www/static/js/components/Table/index.tsx
+++ b/airflow/www/static/js/components/Table/index.tsx
@@ -162,7 +162,7 @@ export const Table = ({
},
useSortBy,
usePagination,
- ...selectProps
+ ...selectProps,
);
const handleNext = () => {
diff --git a/airflow/www/static/js/components/Time.test.tsx b/airflow/www/static/js/components/Time.test.tsx
index bddeb833cfb..1074d0ab1c9 100644
--- a/airflow/www/static/js/components/Time.test.tsx
+++ b/airflow/www/static/js/components/Time.test.tsx
@@ -54,7 +54,7 @@ describe("Test Time and TimezoneProvider", () => {
expect(samoaTime).toBeDefined();
expect(samoaTime.title).toEqual(
// @ts-ignore
- moment.utc(now).format(defaultFormatWithTZ)
+ moment.utc(now).format(defaultFormatWithTZ),
);
});
@@ -62,7 +62,7 @@ describe("Test Time and TimezoneProvider", () => {
const now = new Date();
const { getByText, queryByText } = render(
<Time dateTime={now.toISOString()} />,
- { wrapper: Wrapper }
+ { wrapper: Wrapper },
);
// @ts-ignore
@@ -80,7 +80,7 @@ describe("Test Time and TimezoneProvider", () => {
expect(utcTime).toBeNull();
const estTime = getByText(
// @ts-ignore
- moment(now).tz("EST").format(defaultFormatWithTZ)
+ moment(now).tz("EST").format(defaultFormatWithTZ),
);
expect(estTime).toBeDefined();
// @ts-ignore
diff --git a/airflow/www/static/js/components/Tooltip.tsx b/airflow/www/static/js/components/Tooltip.tsx
index 72a55b0862d..4d81ebdbecf 100644
--- a/airflow/www/static/js/components/Tooltip.tsx
+++ b/airflow/www/static/js/components/Tooltip.tsx
@@ -35,9 +35,7 @@ import {
import { motion, AnimatePresence } from "framer-motion";
export interface TooltipProps
- extends HTMLChakraProps<"div">,
- ThemingProps<"Tooltip">,
- UseTooltipProps {
+ extends HTMLChakraProps<"div">, ThemingProps<"Tooltip">, UseTooltipProps {
/**
* The React component to use as the
* trigger for the tooltip
@@ -140,7 +138,7 @@ const Tooltip = forwardRef<TooltipProps, "div">((props, ref) => {
};
const trigger: React.ReactElement = React.cloneElement(
child,
- tooltip.getTriggerProps(child.props, child.ref)
+ tooltip.getTriggerProps(child.props, child.ref),
);
const tooltipProps = tooltip.getTooltipProps({}, ref);
diff --git a/airflow/www/static/js/components/TriggeredDagRuns.tsx b/airflow/www/static/js/components/TriggeredDagRuns.tsx
index 5303c9e4567..566a8c22f7b 100644
--- a/airflow/www/static/js/components/TriggeredDagRuns.tsx
+++ b/airflow/www/static/js/components/TriggeredDagRuns.tsx
@@ -46,7 +46,7 @@ const TriggeredDagRuns = ({ createdDagRuns, showLink = true }: CardProps) => {
const runId = (run as unknown as { dagRunId: string }).dagRunId;
const url = `${gridUrl.replace(
dagId,
- run.dagId || ""
+ run.dagId || "",
)}?dag_run_id=${encodeURIComponent(runId)}`;
return (
diff --git a/airflow/www/static/js/components/ViewTimeDelta.tsx b/airflow/www/static/js/components/ViewTimeDelta.tsx
index 2a0bb868c58..23897090b43 100644
--- a/airflow/www/static/js/components/ViewTimeDelta.tsx
+++ b/airflow/www/static/js/components/ViewTimeDelta.tsx
@@ -52,7 +52,7 @@ const ViewTimeDelta = ({ data }: Props) => {
<Text mr={1} key={unit}>
{data[unit]} {unit}
</Text>
- )
+ ),
)}
</Flex>
);
diff --git a/airflow/www/static/js/components/utils.test.ts b/airflow/www/static/js/components/utils.test.ts
index 8df59388144..e4f78eee738 100644
--- a/airflow/www/static/js/components/utils.test.ts
+++ b/airflow/www/static/js/components/utils.test.ts
@@ -79,6 +79,6 @@ describe("JSON Parsing.", () => {
expect(contentJson).not.toBeNull();
expect(contentFormatted.length).toBeGreaterThan(0);
}
- }
+ },
);
});
diff --git a/airflow/www/static/js/components/utils.ts b/airflow/www/static/js/components/utils.ts
index 533c0504b70..cec249bbc02 100644
--- a/airflow/www/static/js/components/utils.ts
+++ b/airflow/www/static/js/components/utils.ts
@@ -29,7 +29,7 @@ const jsonParse = (content: unknown) => {
}
contentFormatted = JSON.stringify(contentJson, null, 4);
isJson = contentJson != null && typeof contentJson === "object"; // ensure numbers/bool are not treated as JSON
- } catch (e) {
+ } catch (_e) {
// skip
}
return [isJson, contentJson, contentFormatted];
diff --git a/airflow/www/static/js/connection_form.js b/airflow/www/static/js/connection_form.js
index 886ff208d71..25e9bd49ae2 100644
--- a/airflow/www/static/js/connection_form.js
+++ b/airflow/www/static/js/connection_form.js
@@ -44,7 +44,7 @@ function getConnTypesToControlsMap() {
const connTypesToControlsMap = new Map();
const extraFormControls = Array.from(
- document.querySelectorAll("[id^='extra__'")
+ document.querySelectorAll("[id^='extra__'"),
);
extraFormControls.forEach((control) => {
const connTypeEnd = control.id.indexOf("__", "extra__".length);
@@ -80,7 +80,7 @@ function restoreFieldBehaviours() {
elem.innerText = elem.dataset.origText;
// eslint-disable-next-line no-param-reassign
delete elem.dataset.origText;
- }
+ },
);
Array.from(document.querySelectorAll(".form-control")).forEach((elem) => {
@@ -145,7 +145,7 @@ function handleTestConnection(connectionType, testableConnections) {
.prop("disabled", true)
.attr(
"title",
- "Testing connections is disabled in Airflow configuration. Contact your deployment admin to enable it."
+ "Testing connections is disabled in Airflow configuration. Contact your deployment admin to enable it.",
);
return;
}
@@ -163,7 +163,7 @@ function handleTestConnection(connectionType, testableConnections) {
.attr(
"title",
"This connection type does not currently support testing via " +
- "Airflow REST API."
+ "Airflow REST API.",
);
}
}
@@ -172,7 +172,7 @@ $(document).ready(() => {
const fieldBehavioursElem = document.getElementById("field_behaviours");
const config = JSON.parse(decode(fieldBehavioursElem.textContent));
const testableConnsElem = document.getElementById(
- "testable_connection_types"
+ "testable_connection_types",
);
const testableConns = decode(testableConnsElem.textContent);
@@ -187,7 +187,7 @@ $(document).ready(() => {
// Create a test connection button & insert it right next to the save (submit) button
const testConnBtn = $(
'<button id="test-connection" type="button" class="btn btn-sm btn-primary" ' +
- 'style="margin-left: 3px; pointer-events: all">Test\n <i class="fa fa-rocket"></i></button>'
+ 'style="margin-left: 3px; pointer-events: all">Test\n <i class="fa fa-rocket"></i></button>',
);
// Disable the Test Connection button if Airflow REST APIs are not enabled.
@@ -197,12 +197,12 @@ $(document).ready(() => {
.attr(
"title",
"Airflow REST APIs have been disabled. " +
- "See api->auth_backends section of the Airflow configuration."
+ "See api->auth_backends section of the Airflow configuration.",
);
}
$(testConnBtn).insertAfter(
- $("form#model_form div.well.well-sm button:submit")
+ $("form#model_form div.well.well-sm button:submit"),
);
/**
@@ -248,7 +248,7 @@ $(document).ready(() => {
} else {
alertBox = $(
`<div class="alert ${alertClass}">\n` +
- `<button type="button" class="close" data-dismiss="alert">×</button>\n${message}</div>`
+ `<button type="button" class="close" data-dismiss="alert">×</button>\n${message}</div>`,
);
$(".container .row").prepend(alertBox).show();
@@ -257,7 +257,7 @@ $(document).ready(() => {
displayAlert(
"warning",
- "Warning: Fields that are currently populated can be modified but cannot be deleted. To delete data from a field, delete the Connection object and create a new one."
+ "Warning: Fields that are currently populated can be modified but cannot be deleted. To delete data from a field, delete the Connection object and create a new one.",
);
function hideAlert() {
diff --git a/airflow/www/static/js/context/autorefresh.tsx b/airflow/www/static/js/context/autorefresh.tsx
index 45f84068a4b..0593aa1103a 100644
--- a/airflow/www/static/js/context/autorefresh.tsx
+++ b/airflow/www/static/js/context/autorefresh.tsx
@@ -34,7 +34,7 @@ const autoRefreshKey = "disabledAutoRefresh";
const initialIsPaused = getMetaValue("is_paused") === "True";
const isRefreshDisabled = JSON.parse(
- localStorage.getItem(autoRefreshKey) || "false"
+ localStorage.getItem(autoRefreshKey) || "false",
);
type RefreshContext = {
@@ -67,7 +67,7 @@ export const AutoRefreshProvider = ({ children }: PropsWithChildren) => {
const startRefresh = useCallback(
() => isRefreshAllowed && setRefresh(true),
- [isRefreshAllowed, setRefresh]
+ [isRefreshAllowed, setRefresh],
);
const refetchInterval = isRefreshOn && (autoRefreshInterval || 1) * 1000;
@@ -85,7 +85,7 @@ export const AutoRefreshProvider = ({ children }: PropsWithChildren) => {
onToggle();
}
},
- [isRefreshAllowed, isRefreshOn, onToggle]
+ [isRefreshAllowed, isRefreshOn, onToggle],
);
useEffect(() => {
@@ -117,7 +117,7 @@ export const AutoRefreshProvider = ({ children }: PropsWithChildren) => {
startRefresh,
isPaused,
}),
- [isPaused, isRefreshOn, startRefresh, toggleRefresh, refetchInterval]
+ [isPaused, isRefreshOn, startRefresh, toggleRefresh, refetchInterval],
);
return (
diff --git a/airflow/www/static/js/context/containerRef.tsx b/airflow/www/static/js/context/containerRef.tsx
index 563c0ec5577..df8925a1d53 100644
--- a/airflow/www/static/js/context/containerRef.tsx
+++ b/airflow/www/static/js/context/containerRef.tsx
@@ -19,7 +19,6 @@
import React, { PropsWithChildren, useContext, useRef } from "react";
-// eslint-disable-next-line max-len
const ContainerRefContext = React.createContext<
React.RefObject<HTMLDivElement> | undefined
>(undefined);
diff --git a/airflow/www/static/js/context/timezone.tsx b/airflow/www/static/js/context/timezone.tsx
index 85c23f497af..a1b4fd2b9cc 100644
--- a/airflow/www/static/js/context/timezone.tsx
+++ b/airflow/www/static/js/context/timezone.tsx
@@ -34,7 +34,7 @@ const TimezoneContext = React.createContext({ timezone: "UTC" });
export const TimezoneProvider = ({ children }: PropsWithChildren) => {
const [timezone, setTimezone] = useState(
// @ts-ignores: defaultZone not recognize in moment.
- (moment.defaultZone && moment.defaultZone.name) || "UTC"
+ (moment.defaultZone && moment.defaultZone.name) || "UTC",
);
const handleChange = (e: CustomEvent<string>) => {
@@ -46,7 +46,7 @@ export const TimezoneProvider = ({ children }: PropsWithChildren) => {
return () => {
document.removeEventListener(
TimezoneEvent,
- handleChange as EventListener
+ handleChange as EventListener,
);
};
});
diff --git a/airflow/www/static/js/dag.js b/airflow/www/static/js/dag.js
index 159126f623f..6111a167137 100644
--- a/airflow/www/static/js/dag.js
+++ b/airflow/www/static/js/dag.js
@@ -59,7 +59,7 @@ $("#pause_resume").on("change", function onChange() {
if (requireConfirmation) {
// eslint-disable-next-line no-alert
const confirmation = window.confirm(
- `Are you sure you want to ${isPaused ? "resume" : "pause"} this DAG?`
+ `Are you sure you want to ${isPaused ? "resume" : "pause"} this DAG?`,
);
if (!confirmation) {
$input.prop("checked", !isPaused);
@@ -67,7 +67,7 @@ $("#pause_resume").on("change", function onChange() {
}
}
const url = `${pausedUrl}?is_paused=${isPaused}&dag_id=${encodeURIComponent(
- id
+ id,
)}`;
// Remove focus on element so the tooltip will go away
$input.trigger("blur");
@@ -92,7 +92,7 @@ $("#next-run").on("mouseover", () => {
let newTitle = "";
if (nextRun.createAfter) {
newTitle += `<strong>Run After:</strong> ${formatDateTime(
- nextRun.createAfter
+ nextRun.createAfter,
)}<br>`;
newTitle += `Next Run: ${approxTimeFromNow(nextRun.createAfter)}<br><br>`;
}
@@ -113,7 +113,7 @@ $(".next-dataset-triggered").on("click", (e) => {
openDatasetModal(dagId, summary, nextDatasets, nextDatasetsError);
} else {
window.location.href = `${datasetsUrl}?uri=${encodeURIComponent(
- singleDatasetUri
+ singleDatasetUri,
)}`;
}
});
diff --git a/airflow/www/static/js/dag/Main.tsx b/airflow/www/static/js/dag/Main.tsx
index 1a0fb7b54a8..25fdcd4a1cd 100644
--- a/airflow/www/static/js/dag/Main.tsx
+++ b/airflow/www/static/js/dag/Main.tsx
@@ -53,22 +53,22 @@ const collapsedWidth = "32px";
const gridWidthKey = "grid-width";
const saveWidth = debounce(
(w) => localStorage.setItem(gridWidthKey, w),
- hoverDelay
+ hoverDelay,
);
const footerHeight =
parseInt(
getComputedStyle(
- document.getElementsByTagName("body")[0]
+ document.getElementsByTagName("body")[0],
).paddingBottom.replace("px", ""),
- 10
+ 10,
) || 0;
const headerHeight =
parseInt(
getComputedStyle(
- document.getElementsByTagName("body")[0]
+ document.getElementsByTagName("body")[0],
).paddingTop.replace("px", ""),
- 10
+ 10,
) || 0;
const Main = () => {
@@ -101,7 +101,7 @@ const Main = () => {
// Add a debounced delay to not constantly trigger highlighting certain task states
const onStatusHover = debounce(
(state) => setHoveredTaskState(state),
- hoverDelay
+ hoverDelay,
);
const onStatusLeave = () => {
@@ -126,7 +126,7 @@ const Main = () => {
setIsGridCollapsed(collapse);
}
},
- [isGridCollapsed]
+ [isGridCollapsed],
);
const resize = useCallback(
@@ -157,7 +157,7 @@ const Main = () => {
}
oldGridElX.current = e.x;
},
- [gridRef, onToggleGridCollapse]
+ [gridRef, onToggleGridCollapse],
);
useEffect(() => {
@@ -182,7 +182,7 @@ const Main = () => {
useKeysPress(
keyboardShortcutIdentifier.toggleShortcutCheatSheet,
- onToggleShortcut
+ onToggleShortcut,
);
const isFullScreen = isFilterCollapsed && isGridCollapsed;
diff --git a/airflow/www/static/js/dag/details/NotesAccordion.test.tsx b/airflow/www/static/js/dag/details/NotesAccordion.test.tsx
index a70b73446bc..2664ae782c1 100644
--- a/airflow/www/static/js/dag/details/NotesAccordion.test.tsx
+++ b/airflow/www/static/js/dag/details/NotesAccordion.test.tsx
@@ -46,7 +46,7 @@ describe("Test DagRun / Task Instance Notes", () => {
const { getByText } = render(
<NotesAccordion dagId="dagId" runId="runId" />,
- { wrapper: Wrapper }
+ { wrapper: Wrapper },
);
await waitFor(() => expect(getByText("Add Note")).toBeVisible());
@@ -60,7 +60,7 @@ describe("Test DagRun / Task Instance Notes", () => {
const { queryByText, getByText } = render(
<NotesAccordion dagId="dagId" runId="runId" initialValue="I am a note" />,
- { wrapper: Wrapper }
+ { wrapper: Wrapper },
);
const changeButton = getByText("Edit Note");
@@ -82,7 +82,7 @@ describe("Test DagRun / Task Instance Notes", () => {
const { getByText } = render(
<NotesAccordion dagId="dagId" runId="runId" initialValue="I am a note" />,
- { wrapper: Wrapper }
+ { wrapper: Wrapper },
);
const changeButton = getByText("Edit Note");
@@ -99,7 +99,7 @@ describe("Test DagRun / Task Instance Notes", () => {
const { getByTestId, getByText, queryByText } = render(
<NotesAccordion dagId="dagId" runId="runId" initialValue="I am a note" />,
- { wrapper: Wrapper }
+ { wrapper: Wrapper },
);
const changeButton = getByText("Edit Note");
diff --git a/airflow/www/static/js/dag/details/NotesAccordion.tsx b/airflow/www/static/js/dag/details/NotesAccordion.tsx
index 04408d72511..12ae6031c0e 100644
--- a/airflow/www/static/js/dag/details/NotesAccordion.tsx
+++ b/airflow/www/static/js/dag/details/NotesAccordion.tsx
@@ -61,7 +61,7 @@ const NotesAccordion = ({
const [note, setNote] = useState(initialValue ?? "");
const [editMode, setEditMode] = useState(false);
const [accordionIndexes, setAccordionIndexes] = useState<Array<number>>(
- canEdit ? [0] : []
+ canEdit ? [0] : [],
);
const textAreaRef = useRef<HTMLTextAreaElement>(null);
diff --git a/airflow/www/static/js/dag/details/dag/Calendar.tsx b/airflow/www/static/js/dag/details/dag/Calendar.tsx
index 0ac7e739bc6..66708b13eba 100644
--- a/airflow/www/static/js/dag/details/dag/Calendar.tsx
+++ b/airflow/www/static/js/dag/details/dag/Calendar.tsx
@@ -92,7 +92,7 @@ const Calendar = () => {
type: "heatmap",
coordinateSystem: "calendar",
data: proportions.filter(
- (p) => typeof p[0] === "string" && p[0].startsWith(y.toString())
+ (p) => typeof p[0] === "string" && p[0].startsWith(y.toString()),
),
});
seriesOption.push({
@@ -102,7 +102,7 @@ const Calendar = () => {
symbolSize: 4,
data: dagStates
.filter(
- (ds) => ds.date.startsWith(y.toString()) && ds.state === "planned"
+ (ds) => ds.date.startsWith(y.toString()) && ds.state === "planned",
)
.map((ds) => [ds.date, ds.count]),
});
diff --git a/airflow/www/static/js/dag/details/dag/Dag.tsx b/airflow/www/static/js/dag/details/dag/Dag.tsx
index 7cfd36f5164..c3ecefe0d4c 100644
--- a/airflow/www/static/js/dag/details/dag/Dag.tsx
+++ b/airflow/www/static/js/dag/details/dag/Dag.tsx
@@ -117,7 +117,7 @@ const Dag = () => {
</Flex>
</Td>
<Td>{key}</Td>
- </Tr>
+ </Tr>,
);
}
});
@@ -142,7 +142,7 @@ const Dag = () => {
// render dag and dag_details data
const renderDagDetailsData = (
data: DAG | DAGDetail,
- excludekeys: Array<string>
+ excludekeys: Array<string>,
) => (
<>
{Object.entries(data).map(
@@ -152,7 +152,7 @@ const Dag = () => {
<Td>{toSentenceCase(key)}</Td>
<Td>{parseStringData(String(value))}</Td>
</Tr>
- )
+ ),
)}
</>
);
@@ -251,7 +251,7 @@ const Dag = () => {
{JSON.stringify(
dagDetailsData.datasetExpression,
null,
- 2
+ 2,
)}
</pre>
</Code>
@@ -284,7 +284,7 @@ const Dag = () => {
size="xs"
href={tagIndexUrl.replace(
"_TAG_NAME_",
- tag?.name || ""
+ tag?.name || "",
)}
mr={3}
>
diff --git a/airflow/www/static/js/dag/details/dag/RunDuration.tsx b/airflow/www/static/js/dag/details/dag/RunDuration.tsx
index c7aaad9255b..a5693ff41e5 100644
--- a/airflow/www/static/js/dag/details/dag/RunDuration.tsx
+++ b/airflow/www/static/js/dag/details/dag/RunDuration.tsx
@@ -28,7 +28,7 @@ const LANDING_TIME_KEY = "showLandingTimes";
const RunDuration = () => {
const storedValue = localStorage.getItem(LANDING_TIME_KEY);
const [showLandingTimes, setShowLandingTimes] = useState(
- storedValue ? JSON.parse(storedValue) : true
+ storedValue ? JSON.parse(storedValue) : true,
);
const onChange = () => {
localStorage.setItem(LANDING_TIME_KEY, (!showLandingTimes).toString());
diff --git a/airflow/www/static/js/dag/details/dag/RunDurationChart.tsx b/airflow/www/static/js/dag/details/dag/RunDurationChart.tsx
index 023e0990519..6e174279f50 100644
--- a/airflow/www/static/js/dag/details/dag/RunDurationChart.tsx
+++ b/airflow/www/static/js/dag/details/dag/RunDurationChart.tsx
@@ -58,19 +58,19 @@ const RunDurationChart = ({ showLandingTimes }: Props) => {
const durations: (RunDuration | {})[] = dagRuns.map((dagRun) => {
// @ts-ignore
const landingDuration = moment.duration(
- getDuration(dagRun.dataIntervalEnd, dagRun.queuedAt || dagRun.startDate)
+ getDuration(dagRun.dataIntervalEnd, dagRun.queuedAt || dagRun.startDate),
);
// @ts-ignore
const runDuration = moment.duration(
- dagRun.startDate ? getDuration(dagRun.startDate, dagRun?.endDate) : 0
+ dagRun.startDate ? getDuration(dagRun.startDate, dagRun?.endDate) : 0,
);
// @ts-ignore
const queuedDuration = moment.duration(
dagRun.queuedAt && dagRun.startDate && dagRun.startDate > dagRun.queuedAt
? getDuration(dagRun.queuedAt, dagRun.startDate)
- : 0
+ : 0,
);
if (showLandingTimes) {
diff --git a/airflow/www/static/js/dag/details/dagCode/CodeBlock.tsx b/airflow/www/static/js/dag/details/dagCode/CodeBlock.tsx
index baa673bbe11..fd97c698477 100644
--- a/airflow/www/static/js/dag/details/dagCode/CodeBlock.tsx
+++ b/airflow/www/static/js/dag/details/dagCode/CodeBlock.tsx
@@ -31,7 +31,7 @@ interface Props {
}
export default function CodeBlock({ code }: Props) {
const [codeWrap, setCodeWrap] = useState(
- getMetaValue("default_wrap") === "True"
+ getMetaValue("default_wrap") === "True",
);
const toggleCodeWrap = () => setCodeWrap(!codeWrap);
diff --git a/airflow/www/static/js/dag/details/dagRun/ClearRun.tsx b/airflow/www/static/js/dag/details/dagRun/ClearRun.tsx
index fdc111654f9..507c619675c 100644
--- a/airflow/www/static/js/dag/details/dagRun/ClearRun.tsx
+++ b/airflow/www/static/js/dag/details/dagRun/ClearRun.tsx
@@ -76,12 +76,12 @@ const reducer = (state: State, action: Action): State => {
const ClearRun = ({ runId, ...otherProps }: Props) => {
const { mutateAsync: onClear, isLoading: isClearLoading } = useClearRun(
dagId,
- runId
+ runId,
);
const { mutateAsync: onQueue, isLoading: isQueueLoading } = useQueueRun(
dagId,
- runId
+ runId,
);
const clearExistingTasks = () => {
@@ -100,7 +100,7 @@ const ClearRun = ({ runId, ...otherProps }: Props) => {
const storedValue = localStorage.getItem("doNotShowClearRunModal");
const [doNotShowAgain, setDoNotShowAgain] = useState(
- storedValue ? JSON.parse(storedValue) : false
+ storedValue ? JSON.parse(storedValue) : false,
);
const confirmClearExisting = () => {
@@ -124,7 +124,7 @@ const ClearRun = ({ runId, ...otherProps }: Props) => {
const confirmAction = () => {
localStorage.setItem(
"doNotShowClearRunModal",
- JSON.stringify(doNotShowAgain)
+ JSON.stringify(doNotShowAgain),
);
if (stateReducer.confirmingAction === "failed") {
clearFailedTasks();
diff --git a/airflow/www/static/js/dag/details/dagRun/DatasetTriggerEvents.tsx b/airflow/www/static/js/dag/details/dagRun/DatasetTriggerEvents.tsx
index 5fa585830b4..e635e611749 100644
--- a/airflow/www/static/js/dag/details/dagRun/DatasetTriggerEvents.tsx
+++ b/airflow/www/static/js/dag/details/dagRun/DatasetTriggerEvents.tsx
@@ -63,7 +63,7 @@ const DatasetTriggerEvents = ({ runId }: Props) => {
accessor: "extra",
},
],
- []
+ [],
);
const data = useMemo(() => datasetEvents, [datasetEvents]);
diff --git a/airflow/www/static/js/dag/details/dagRun/MarkRunAs.tsx b/airflow/www/static/js/dag/details/dagRun/MarkRunAs.tsx
index f42cc3ac4f6..d2caa212947 100644
--- a/airflow/www/static/js/dag/details/dagRun/MarkRunAs.tsx
+++ b/airflow/www/static/js/dag/details/dagRun/MarkRunAs.tsx
@@ -84,7 +84,7 @@ const MarkRunAs = ({ runId, state, ...otherProps }: Props) => {
const storedValue = localStorage.getItem("doNotShowMarkRunModal");
const [doNotShowAgain, setDoNotShowAgain] = useState(
- storedValue ? JSON.parse(storedValue) : false
+ storedValue ? JSON.parse(storedValue) : false,
);
const markAsFailed = () => {
@@ -114,7 +114,7 @@ const MarkRunAs = ({ runId, state, ...otherProps }: Props) => {
const confirmAction = () => {
localStorage.setItem(
"doNotShowMarkRunModal",
- JSON.stringify(doNotShowAgain)
+ JSON.stringify(doNotShowAgain),
);
if (stateReducer.confirmingAction === "failed") {
markAsFailed();
diff --git a/airflow/www/static/js/dag/details/gantt/Row.tsx b/airflow/www/static/js/dag/details/gantt/Row.tsx
index 9abd626962e..f671f5a7542 100644
--- a/airflow/www/static/js/dag/details/gantt/Row.tsx
+++ b/airflow/www/static/js/dag/details/gantt/Row.tsx
@@ -37,7 +37,7 @@ interface Props {
setGanttDuration?: (
queued: string | null | undefined,
start: string | null | undefined,
- end: string | null | undefined
+ end: string | null | undefined,
) => void;
}
@@ -75,7 +75,7 @@ const Row = ({
setGanttDuration(
instance?.queuedDttm,
instance?.startDate,
- instance?.endDate
+ instance?.endDate,
);
}
}, [instance, setGanttDuration]);
@@ -85,7 +85,7 @@ const Row = ({
tiHistory?.taskInstances?.forEach(
(tih) =>
setGanttDuration &&
- setGanttDuration(tih.queuedWhen, tih.startDate, tih.endDate)
+ setGanttDuration(tih.queuedWhen, tih.startDate, tih.endDate),
);
}, [tiHistory, setGanttDuration]);
@@ -125,7 +125,7 @@ const Row = ({
ganttStartDate={ganttStartDate}
ganttEndDate={ganttEndDate}
/>
- )
+ ),
)}
</Box>
{isOpen &&
diff --git a/airflow/www/static/js/dag/details/gantt/index.tsx b/airflow/www/static/js/dag/details/gantt/index.tsx
index 1ed5c353deb..ca5fcd0c09a 100644
--- a/airflow/www/static/js/dag/details/gantt/index.tsx
+++ b/airflow/www/static/js/dag/details/gantt/index.tsx
@@ -118,7 +118,7 @@ const Gantt = ({
(
queued: string | null | undefined,
start: string | null | undefined,
- end: string | null | undefined
+ end: string | null | undefined,
) => {
if (
queued &&
@@ -139,7 +139,7 @@ const Gantt = ({
setEndDate(moment().add(1, "s").toString());
}
},
- [startDate, endDate, setStartDate, setEndDate]
+ [startDate, endDate, setStartDate, setEndDate],
);
// Reset state when the dagrun changes
diff --git a/airflow/www/static/js/dag/details/graph/DagNode.test.tsx b/airflow/www/static/js/dag/details/graph/DagNode.test.tsx
index 7c6dea7584a..1a91225faea 100644
--- a/airflow/www/static/js/dag/details/graph/DagNode.test.tsx
+++ b/airflow/www/static/js/dag/details/graph/DagNode.test.tsx
@@ -92,7 +92,7 @@ describe("Test Graph Node", () => {
/>,
{
wrapper: Wrapper,
- }
+ },
);
expect(getByText("success")).toBeInTheDocument();
@@ -107,7 +107,7 @@ describe("Test Graph Node", () => {
/>,
{
wrapper: Wrapper,
- }
+ },
);
expect(getByText("success")).toBeInTheDocument();
@@ -119,7 +119,7 @@ describe("Test Graph Node", () => {
<DagNode {...mockNode} data={{ ...mockNode.data, isActive: false }} />,
{
wrapper: Wrapper,
- }
+ },
);
expect(getByTestId("node")).toHaveStyle("opacity: 0.3");
diff --git a/airflow/www/static/js/dag/details/graph/index.tsx b/airflow/www/static/js/dag/details/graph/index.tsx
index 7293cc99dfb..0ce05df7e1b 100644
--- a/airflow/www/static/js/dag/details/graph/index.tsx
+++ b/airflow/www/static/js/dag/details/graph/index.tsx
@@ -66,7 +66,7 @@ type DatasetExpression = {
const getUpstreamDatasets = (
datasetExpression: DatasetExpression,
firstChildId: string,
- level = 0
+ level = 0,
) => {
let edges: WebserverEdge[] = [];
let nodes: DepNode[] = [];
@@ -119,7 +119,7 @@ const getUpstreamDatasets = (
const data = getUpstreamDatasets(
nestedExpression,
`${type}-${level}`,
- level + 1
+ level + 1,
);
edges = [...edges, ...data.edges];
nodes = [...nodes, ...data.nodes];
@@ -160,7 +160,7 @@ const Graph = ({ openGroupIds, onToggleGroups, hoveredTaskState }: Props) => {
const { nodes: upstreamDatasetNodes, edges: upstreamDatasetEdges } =
getUpstreamDatasets(
dagDetails.datasetExpression as DatasetExpression,
- data?.nodes?.children?.[0]?.id ?? ""
+ data?.nodes?.children?.[0]?.id ?? "",
);
const {
@@ -187,7 +187,7 @@ const Graph = ({ openGroupIds, onToggleGroups, hoveredTaskState }: Props) => {
datasetEdges = [...upstreamDatasetEdges];
datasetsCollection?.datasets?.forEach((dataset) => {
const producingTask = dataset?.producingTasks?.find(
- (t) => t.dagId === dagId
+ (t) => t.dagId === dagId,
);
if (dataset.uri) {
// check that the task is in the graph
@@ -279,7 +279,7 @@ const Graph = ({ openGroupIds, onToggleGroups, hoveredTaskState }: Props) => {
isZoomedOut,
upstreamDatasetEvents,
downstreamDatasetEvents,
- ]
+ ],
);
// Zoom to/from nodes when changing selection, maintain zoom level when changing task selection
@@ -299,7 +299,7 @@ const Graph = ({ openGroupIds, onToggleGroups, hoveredTaskState }: Props) => {
// merge & dedupe edges
const flatEdges = [...(graphData?.edges || []), ...(nodeEdges || [])].filter(
- (value, index, self) => index === self.findIndex((t) => t.id === value.id)
+ (value, index, self) => index === self.findIndex((t) => t.id === value.id),
);
const edges = buildEdges({
diff --git a/airflow/www/static/js/dag/details/graph/utils.ts b/airflow/www/static/js/dag/details/graph/utils.ts
index 93c8b9c2530..a4bc3e5c5da 100644
--- a/airflow/www/static/js/dag/details/graph/utils.ts
+++ b/airflow/www/static/js/dag/details/graph/utils.ts
@@ -153,7 +153,7 @@ export const nodeColor = ({
export const nodeStrokeColor = (
{ data: { isSelected } }: ReactFlowNode<CustomNodeProps>,
- colors: Record<string, string>
+ colors: Record<string, string>,
) => (isSelected ? colors.blue[500] : "");
interface Edge extends ElkExtendedEdge {
@@ -200,7 +200,7 @@ export const buildEdges = ({
isZoomedOut,
...e.data.rest,
labels: e.data.rest.labels?.map((l) =>
- l.x && l.y ? { ...l, x: l.x + parentX, y: l.y + parentY } : l
+ l.x && l.y ? { ...l, x: l.x + parentX, y: l.y + parentY } : l,
),
isSelected,
sections: e.data.rest.sections.map((s) => ({
diff --git a/airflow/www/static/js/dag/details/index.tsx b/airflow/www/static/js/dag/details/index.tsx
index 0046d339972..aa3e42ab3f3 100644
--- a/airflow/www/static/js/dag/details/index.tsx
+++ b/airflow/www/static/js/dag/details/index.tsx
@@ -117,7 +117,7 @@ const indexToTab = (
runId: string | null,
taskId: string | null,
isGroup: boolean,
- isMappedTaskSummary: boolean
+ isMappedTaskSummary: boolean,
) => {
const isTaskInstance = !!(
taskId &&
@@ -210,13 +210,20 @@ const Details = ({
runId,
taskId,
isGroup,
- isMappedTaskSummary
+ isMappedTaskSummary,
);
if (newTab) params.set(TAB_PARAM, newTab);
else params.delete(TAB_PARAM);
setSearchParams(params);
},
- [setSearchParams, searchParams, runId, taskId, isGroup, isMappedTaskSummary]
+ [
+ setSearchParams,
+ searchParams,
+ runId,
+ taskId,
+ isGroup,
+ isMappedTaskSummary,
+ ],
);
useEffect(() => {
diff --git a/airflow/www/static/js/dag/details/task/AllTaskDuration.tsx b/airflow/www/static/js/dag/details/task/AllTaskDuration.tsx
index ebb10a52750..5380faecbbb 100644
--- a/airflow/www/static/js/dag/details/task/AllTaskDuration.tsx
+++ b/airflow/www/static/js/dag/details/task/AllTaskDuration.tsx
@@ -82,7 +82,7 @@ const AllTaskDuration = ({ showBar }: Props) => {
.duration(
instance.startDate
? getDuration(instance.startDate, instance?.endDate)
- : 0
+ : 0,
)
.asSeconds();
diff --git a/airflow/www/static/js/dag/details/task/TaskDuration.tsx b/airflow/www/static/js/dag/details/task/TaskDuration.tsx
index f3a6ba0531c..bc20962a480 100644
--- a/airflow/www/static/js/dag/details/task/TaskDuration.tsx
+++ b/airflow/www/static/js/dag/details/task/TaskDuration.tsx
@@ -65,7 +65,7 @@ const TaskDuration = () => {
const runDuration = moment.duration(
instance.startDate
? getDuration(instance.startDate, instance?.endDate)
- : 0
+ : 0,
);
// @ts-ignore
@@ -74,7 +74,7 @@ const TaskDuration = () => {
instance.startDate &&
instance.startDate > instance.queuedDttm
? getDuration(instance.queuedDttm, instance.startDate)
- : 0
+ : 0,
);
if (runDuration.asSeconds() > maxDuration) {
@@ -139,7 +139,7 @@ const TaskDuration = () => {
${
queuedDttm
? `Total duration: ${(queuedDurationUnit + runDurationUnit).toFixed(
- 2
+ 2,
)} ${unit}<br>`
: ""
}
diff --git a/airflow/www/static/js/dag/details/taskInstance/DatasetUpdateEvents.tsx b/airflow/www/static/js/dag/details/taskInstance/DatasetUpdateEvents.tsx
index 48c987a8296..29a74d1a767 100644
--- a/airflow/www/static/js/dag/details/taskInstance/DatasetUpdateEvents.tsx
+++ b/airflow/www/static/js/dag/details/taskInstance/DatasetUpdateEvents.tsx
@@ -66,7 +66,7 @@ const DatasetUpdateEvents = ({ runId, taskId }: Props) => {
accessor: "extra",
},
],
- []
+ [],
);
const data = useMemo(() => datasetEvents, [datasetEvents]);
diff --git a/airflow/www/static/js/dag/details/taskInstance/Details.tsx b/airflow/www/static/js/dag/details/taskInstance/Details.tsx
index d5bb4210d25..27bfa6bb1fd 100644
--- a/airflow/www/static/js/dag/details/taskInstance/Details.tsx
+++ b/airflow/www/static/js/dag/details/taskInstance/Details.tsx
@@ -63,7 +63,7 @@ const Details = ({ gridInstance, taskInstance, group }: Props) => {
});
const [selectedTryNumber, setSelectedTryNumber] = useState(
- finalTryNumber || 1
+ finalTryNumber || 1,
);
// update state if the final try number changes
@@ -72,7 +72,7 @@ const Details = ({ gridInstance, taskInstance, group }: Props) => {
}, [finalTryNumber]);
const tryInstance = tiHistory?.taskInstances?.find(
- (ti) => ti.tryNumber === selectedTryNumber
+ (ti) => ti.tryNumber === selectedTryNumber,
);
const instance =
@@ -121,7 +121,7 @@ const Details = ({ gridInstance, taskInstance, group }: Props) => {
{key}
</Flex>
</Td>
- </Tr>
+ </Tr>,
);
}
});
@@ -334,7 +334,7 @@ const Details = ({ gridInstance, taskInstance, group }: Props) => {
if (typeof field !== "string") {
try {
field = JSON.stringify(field);
- } catch (e) {
+ } catch (_e) {
// skip
}
}
diff --git a/airflow/www/static/js/dag/details/taskInstance/Logs/LogBlock.tsx b/airflow/www/static/js/dag/details/taskInstance/Logs/LogBlock.tsx
index 3cab6085062..ab33c5b4169 100644
--- a/airflow/www/static/js/dag/details/taskInstance/Logs/LogBlock.tsx
+++ b/airflow/www/static/js/dag/details/taskInstance/Logs/LogBlock.tsx
@@ -74,7 +74,7 @@ const LogBlock = ({
if (target.id?.endsWith(unfoldIdSuffix)) {
const gId = target.id.substring(
0,
- target.id.length - unfoldIdSuffix.length
+ target.id.length - unfoldIdSuffix.length,
);
// remember the folding state if logs re-loaded
unfoldedGroups.push(gId);
@@ -87,7 +87,7 @@ const LogBlock = ({
} else if (target.id?.endsWith(foldIdSuffix)) {
const gId = target.id.substring(
0,
- target.id.length - foldIdSuffix.length
+ target.id.length - foldIdSuffix.length,
);
// remember the folding state if logs re-loaded
if (unfoldedGroups.indexOf(gId) >= 0) {
diff --git a/airflow/www/static/js/dag/details/taskInstance/Logs/LogLink.test.tsx b/airflow/www/static/js/dag/details/taskInstance/Logs/LogLink.test.tsx
index 3c20df7eedf..1845491d02e 100644
--- a/airflow/www/static/js/dag/details/taskInstance/Logs/LogLink.test.tsx
+++ b/airflow/www/static/js/dag/details/taskInstance/Logs/LogLink.test.tsx
@@ -33,7 +33,7 @@ describe("Test LogLink Component.", () => {
taskId="dummyTaskId"
executionDate="2020:01:01T01:00+00:00"
isInternal
- />
+ />,
);
expect(getByText("Download")).toBeDefined();
@@ -42,8 +42,8 @@ describe("Test LogLink Component.", () => {
expect(linkElement).not.toHaveAttribute("target");
expect(
linkElement?.href.includes(
- `?dag_id=dummyDagId&task_id=dummyTaskId&execution_date=2020%3A01%3A01T01%3A00%2B00%3A00&map_index=-1&try_number=${tryNumber}&format=file`
- )
+ `?dag_id=dummyDagId&task_id=dummyTaskId&execution_date=2020%3A01%3A01T01%3A00%2B00%3A00&map_index=-1&try_number=${tryNumber}&format=file`,
+ ),
).toBeTruthy();
});
@@ -57,7 +57,7 @@ describe("Test LogLink Component.", () => {
taskId="dummyTaskId"
executionDate="2020:01:01T01:00+00:00"
mapIndex={mapIndex}
- />
+ />,
);
expect(getByText(tryNumber)).toBeDefined();
@@ -66,8 +66,8 @@ describe("Test LogLink Component.", () => {
expect(linkElement).toHaveAttribute("target", "_blank");
expect(
linkElement?.href.includes(
- `?dag_id=dummyDagId&task_id=dummyTaskId&execution_date=2020%3A01%3A01T01%3A00%2B00%3A00&map_index=${mapIndex}&try_number=${tryNumber}`
- )
+ `?dag_id=dummyDagId&task_id=dummyTaskId&execution_date=2020%3A01%3A01T01%3A00%2B00%3A00&map_index=${mapIndex}&try_number=${tryNumber}`,
+ ),
).toBeTruthy();
});
});
diff --git a/airflow/www/static/js/dag/details/taskInstance/Logs/LogLink.tsx b/airflow/www/static/js/dag/details/taskInstance/Logs/LogLink.tsx
index 72a203c7bf8..f853ff75890 100644
--- a/airflow/www/static/js/dag/details/taskInstance/Logs/LogLink.tsx
+++ b/airflow/www/static/js/dag/details/taskInstance/Logs/LogLink.tsx
@@ -46,11 +46,11 @@ const LogLink = ({
let fullMetadataUrl = `${
isInternal ? logsWithMetadataUrl : externalLogUrl
}?dag_id=${encodeURIComponent(dagId)}&task_id=${encodeURIComponent(
- taskId
+ taskId,
)}&execution_date=${encodeURIComponent(
- executionDate
+ executionDate,
)}&map_index=${encodeURIComponent(
- mapIndex?.toString() ?? "-1"
+ mapIndex?.toString() ?? "-1",
)}&try_number=${tryNumber}`;
if (isInternal) {
diff --git a/airflow/www/static/js/dag/details/taskInstance/Logs/index.test.tsx b/airflow/www/static/js/dag/details/taskInstance/Logs/index.test.tsx
index 74db45a7d2f..abc0a9ef8d0 100644
--- a/airflow/www/static/js/dag/details/taskInstance/Logs/index.test.tsx
+++ b/airflow/www/static/js/dag/details/taskInstance/Logs/index.test.tsx
@@ -21,6 +21,7 @@
import React from "react";
import { render, fireEvent } from "@testing-library/react";
+import { ChakraProvider } from "@chakra-ui/react";
import type { UseQueryResult } from "react-query";
import * as utils from "src/utils";
@@ -104,27 +105,29 @@ describe("Test Logs Component.", () => {
test("Test Logs Content", () => {
const tryNumber = 2;
const { getByText } = render(
- <Logs
- dagId="dummyDagId"
- dagRunId="dummyDagRunId"
- taskId="dummyTaskId"
- executionDate="2020:01:01T01:00+00:00"
- tryNumber={tryNumber}
- />
+ <ChakraProvider>
+ <Logs
+ dagId="dummyDagId"
+ dagRunId="dummyDagRunId"
+ taskId="dummyTaskId"
+ executionDate="2020:01:01T01:00+00:00"
+ tryNumber={tryNumber}
+ />
+ </ChakraProvider>,
);
expect(
getByText("[2022-06-04, 00:00:01 UTC] {taskinstance.py:1329} INFO -", {
exact: false,
- })
+ }),
).toBeDefined();
expect(
getByText(
"[2022-06-04, 00:00:01 UTC] {standard_task_runner.py:81} INFO - Job 1626: Subtask section_1.get_entry_group",
- { exact: false }
- )
+ { exact: false },
+ ),
).toBeDefined();
expect(
- getByText("AIRFLOW_CTX_DAG_ID=test_ui_grid", { exact: false })
+ getByText("AIRFLOW_CTX_DAG_ID=test_ui_grid", { exact: false }),
).toBeDefined();
expect(useTaskLogMock).toHaveBeenLastCalledWith({
@@ -149,14 +152,16 @@ describe("Test Logs Component.", () => {
const tryNumber = 2;
const { getByTestId } = render(
- <Logs
- dagId="dummyDagId"
- dagRunId="dummyDagRunId"
- taskId="dummyTaskId"
- executionDate="2020:01:01T01:00+00:00"
- mapIndex={1}
- tryNumber={tryNumber}
- />
+ <ChakraProvider>
+ <Logs
+ dagId="dummyDagId"
+ dagRunId="dummyDagRunId"
+ taskId="dummyTaskId"
+ executionDate="2020:01:01T01:00+00:00"
+ mapIndex={1}
+ tryNumber={tryNumber}
+ />
+ </ChakraProvider>,
);
const wrapCheckbox = getByTestId("wrap-checkbox");
@@ -165,34 +170,36 @@ describe("Test Logs Component.", () => {
} else {
expect(wrapCheckbox.getAttribute("data-checked")).toBeNull();
}
- }
+ },
);
test("Test Logs Content Mapped Task", () => {
const tryNumber = 2;
const { getByText } = render(
- <Logs
- dagId="dummyDagId"
- dagRunId="dummyDagRunId"
- taskId="dummyTaskId"
- executionDate="2020:01:01T01:00+00:00"
- mapIndex={1}
- tryNumber={tryNumber}
- />
+ <ChakraProvider>
+ <Logs
+ dagId="dummyDagId"
+ dagRunId="dummyDagRunId"
+ taskId="dummyTaskId"
+ executionDate="2020:01:01T01:00+00:00"
+ mapIndex={1}
+ tryNumber={tryNumber}
+ />
+ </ChakraProvider>,
);
expect(
getByText("[2022-06-04, 00:00:01 UTC] {taskinstance.py:1329} INFO -", {
exact: false,
- })
+ }),
).toBeDefined();
expect(
getByText(
"[2022-06-04, 00:00:01 UTC] {standard_task_runner.py:81} INFO - Job 1626: Subtask section_1.get_entry_group",
- { exact: false }
- )
+ { exact: false },
+ ),
).toBeDefined();
expect(
- getByText("AIRFLOW_CTX_DAG_ID=test_ui_grid", { exact: false })
+ getByText("AIRFLOW_CTX_DAG_ID=test_ui_grid", { exact: false }),
).toBeDefined();
expect(useTaskLogMock).toHaveBeenLastCalledWith({
@@ -207,13 +214,15 @@ describe("Test Logs Component.", () => {
test("Test Logs Attempt Select Button", () => {
const tryNumber = 2;
const { getByText, getByTestId } = render(
- <Logs
- dagId="dummyDagId"
- dagRunId="dummyDagRunId"
- taskId="dummyTaskId"
- executionDate="2020:01:01T01:00+00:00"
- tryNumber={tryNumber}
- />
+ <ChakraProvider>
+ <Logs
+ dagId="dummyDagId"
+ dagRunId="dummyDagRunId"
+ taskId="dummyTaskId"
+ executionDate="2020:01:01T01:00+00:00"
+ tryNumber={tryNumber}
+ />
+ </ChakraProvider>,
);
// Internal Log Attempt buttons.
expect(getByText("1")).toBeDefined();
diff --git a/airflow/www/static/js/dag/details/taskInstance/Logs/index.tsx b/airflow/www/static/js/dag/details/taskInstance/Logs/index.tsx
index 2647e590d84..40a3e26e198 100644
--- a/airflow/www/static/js/dag/details/taskInstance/Logs/index.tsx
+++ b/airflow/www/static/js/dag/details/taskInstance/Logs/index.tsx
@@ -56,7 +56,7 @@ const logLevelOptions: Array<LogLevelOption> = Object.values(LogLevel).map(
label: value,
value,
color: logLevelColorMapping[value],
- })
+ }),
);
interface Props {
@@ -79,11 +79,11 @@ const Logs = ({
state,
}: Props) => {
const [selectedTryNumber, setSelectedTryNumber] = useState(
- finalTryNumber || 1
+ finalTryNumber || 1,
);
const [wrap, setWrap] = useState(getMetaValue("default_wrap") === "True");
const [logLevelFilters, setLogLevelFilters] = useState<Array<LogLevelOption>>(
- []
+ [],
);
const [fileSourceFilters, setFileSourceFilters] = useState<
Array<FileSourceOption>
@@ -127,9 +127,9 @@ const Logs = ({
timezone,
logLevelFilters.map((option) => option.value),
fileSourceFilters.map((option) => option.value),
- unfoldedLogGroups
+ unfoldedLogGroups,
),
- [data, fileSourceFilters, logLevelFilters, timezone, unfoldedLogGroups]
+ [data, fileSourceFilters, logLevelFilters, timezone, unfoldedLogGroups],
);
useEffect(() => {
@@ -145,7 +145,7 @@ const Logs = ({
fileSourceFilters.reduce(
(isSourceMissing, option) =>
isSourceMissing || !fileSources.includes(option.value),
- false
+ false,
)
) {
setFileSourceFilters([]);
@@ -168,7 +168,7 @@ const Logs = ({
tryNumber={tryNumber}
mapIndex={mapIndex}
/>
- )
+ ),
)}
</Flex>
</Box>
diff --git a/airflow/www/static/js/dag/details/taskInstance/Logs/utils.test.tsx b/airflow/www/static/js/dag/details/taskInstance/Logs/utils.test.tsx
index 57cad4314f6..d2549939a3c 100644
--- a/airflow/www/static/js/dag/details/taskInstance/Logs/utils.test.tsx
+++ b/airflow/www/static/js/dag/details/taskInstance/Logs/utils.test.tsx
@@ -81,7 +81,7 @@ describe("Test Logs Utils.", () => {
"UTC",
[],
[],
- []
+ [],
);
expect(parsedLogs).toContain("2022-06-04, 00:00:01 UTC");
@@ -102,7 +102,7 @@ describe("Test Logs Utils.", () => {
expectedNumberOfFileSources: 4,
expectedLogs: `${mockTaskLogInfoBegin}${mockTaskLogInfoEndWithWarningAndUrl.replace(
mockTaskLogWarning,
- ""
+ "",
)}`,
},
{
@@ -124,7 +124,7 @@ describe("Test Logs Utils.", () => {
null,
logLevelFilters,
[],
- []
+ [],
);
expect(fileSources).toHaveLength(expectedNumberOfFileSources);
@@ -135,7 +135,7 @@ describe("Test Logs Utils.", () => {
lines.forEach((line, index) => {
expect(line).toContain(expectedLines[index]);
});
- }
+ },
);
test("parseLogs function with file source filter", () => {
@@ -144,7 +144,7 @@ describe("Test Logs Utils.", () => {
null,
[],
["taskinstance.py"],
- []
+ [],
);
const expectedLogs = `[2022-06-04 00:00:01,901] {taskinstance.py:1132} INFO - Dependencies all met for <TaskInstance: test_ui_grid.section_1.get_entry_group scheduled__2022-06-03T00:00:00+00:00 [queued]>
[2022-06-04 00:00:01,906] {taskinstance.py:1132} INFO - Dependencies all met for <TaskInstance: test_ui_grid.section_1.get_entry_group scheduled__2022-06-03T00:00:00+00:00 [queued]>
@@ -175,7 +175,7 @@ ${mockTaskLogWarning}
null,
[LogLevel.INFO, LogLevel.WARNING],
["taskinstance.py"],
- []
+ [],
);
expect(fileSources).toEqual([
@@ -195,19 +195,19 @@ ${mockTaskLogWarning}
null,
[LogLevel.INFO, LogLevel.WARNING],
["taskinstance.py"],
- []
+ [],
);
// remove the last line which is empty
const lines = parsedLogs!.split("\n").filter((line) => line.length > 0);
expect(lines[lines.length - 1]).toContain(
- '<a href="https://apple.com" target="_blank" rel="noopener noreferrer" style="color: blue; text-decoration: underline;">https://apple.com</a>'
+ '<a href="https://apple.com" target="_blank" rel="noopener noreferrer" style="color: blue; text-decoration: underline;">https://apple.com</a>',
);
expect(lines[lines.length - 1]).toContain(
- '<a href="https://google.com" target="_blank" rel="noopener noreferrer" style="color: blue; text-decoration: underline;">https://google.com</a>'
+ '<a href="https://google.com" target="_blank" rel="noopener noreferrer" style="color: blue; text-decoration: underline;">https://google.com</a>',
);
expect(lines[lines.length - 1]).toContain(
- '<a href="https://something.logs/_dashboard/?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-1d,to:now))&_a=(columns:!(_source),filters:!(('$state':(store:appState))))" target="_blank" rel="noopener noreferrer" style="color: blue; text-decoration: underline;">https://something.logs/_dashboard/?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-1d,to:now))&_a=(columns:!(_source),filters:!(('$state':(store:appState))))</a>'
+ '<a href="https://something.logs/_dashboard/?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-1d,to:now))&_a=(columns:!(_source),filters:!(('$state':(store:appState))))" target="_blank" rel="noopener noreferrer" style="color: blue; text-decoration: underline;">https://something.logs/_dashboard/?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-1d,to:now))&_a=(columns:!(_source),filters:!(('$state':(store:appState))))</a>',
);
});
});
diff --git a/airflow/www/static/js/dag/details/taskInstance/Logs/utils.ts b/airflow/www/static/js/dag/details/taskInstance/Logs/utils.ts
index b35a713484e..31fc4f3e3fb 100644
--- a/airflow/www/static/js/dag/details/taskInstance/Logs/utils.ts
+++ b/airflow/www/static/js/dag/details/taskInstance/Logs/utils.ts
@@ -61,7 +61,7 @@ export const parseLogs = (
timezone: string | null,
logLevelFilters: Array<string>,
fileSourceFilters: Array<string>,
- unfoldedLogGroups: Array<string>
+ unfoldedLogGroups: Array<string>,
) => {
if (!data) {
return {};
@@ -72,7 +72,7 @@ export const parseLogs = (
try {
lines = data.split("\n");
- } catch (err) {
+ } catch (_err) {
warning = "Unable to show logs. There was an error parsing logs.";
return { warning };
}
@@ -141,7 +141,7 @@ export const parseLogs = (
errorKeywords,
warningKeywords,
logGroupStart,
- logGroupEnd
+ logGroupEnd,
);
// for lines with color convert to nice HTML
const coloredLine = ansiUp.ansi_to_html(parsedLine);
@@ -151,7 +151,7 @@ export const parseLogs = (
.replace(
urlRegex,
(url) =>
- `<a href="${url}" target="_blank" rel="noopener noreferrer" style="color: blue; text-decoration: underline;">${url}</a>`
+ `<a href="${url}" target="_blank" rel="noopener noreferrer" style="color: blue; text-decoration: underline;">${url}</a>`,
)
.replace(logGroupStart, (textLine) => {
const unfoldIdSuffix = "_unfold";
@@ -167,7 +167,7 @@ export const parseLogs = (
})
.replace(
logGroupEnd,
- " <span style='color:#0060df;'>▲▲▲ Log group end</span></span>"
+ " <span style='color:#0060df;'>▲▲▲ Log group end</span></span>",
);
parsedLines.push(lineWithHyperlinks);
});
diff --git a/airflow/www/static/js/dag/details/taskInstance/MappedInstances.tsx b/airflow/www/static/js/dag/details/taskInstance/MappedInstances.tsx
index 68db258d109..d126a113fca 100644
--- a/airflow/www/static/js/dag/details/taskInstance/MappedInstances.tsx
+++ b/airflow/www/static/js/dag/details/taskInstance/MappedInstances.tsx
@@ -85,7 +85,7 @@ const MappedInstances = ({ dagId, runId, taskId, onRowClicked }: Props) => {
startDate: <Time dateTime={mi.startDate} />,
endDate: <Time dateTime={mi.endDate} />,
})),
- [taskInstances]
+ [taskInstances],
);
const columns = useMemo(
@@ -121,7 +121,7 @@ const MappedInstances = ({ dagId, runId, taskId, onRowClicked }: Props) => {
disableSortBy: true,
},
],
- []
+ [],
);
return (
diff --git a/airflow/www/static/js/dag/details/taskInstance/Nav.tsx b/airflow/www/static/js/dag/details/taskInstance/Nav.tsx
index e24088085a9..36853f7b17b 100644
--- a/airflow/www/static/js/dag/details/taskInstance/Nav.tsx
+++ b/airflow/www/static/js/dag/details/taskInstance/Nav.tsx
@@ -63,7 +63,7 @@ const Nav = forwardRef<HTMLDivElement, Props>(
const subDagLink = appendSearchParams(
gridUrl.replace(dagId, `${dagId}.${taskId}`),
- subDagParams
+ subDagParams,
);
// TODO: base subdag zooming as its own attribute instead of via operator name
@@ -84,7 +84,7 @@ const Nav = forwardRef<HTMLDivElement, Props>(
</LinkButton>
</Flex>
);
- }
+ },
);
export default Nav;
diff --git a/airflow/www/static/js/dag/details/taskInstance/Xcom/XcomEntry.tsx b/airflow/www/static/js/dag/details/taskInstance/Xcom/XcomEntry.tsx
index 4e2b9dc2dc5..da59d520ced 100644
--- a/airflow/www/static/js/dag/details/taskInstance/Xcom/XcomEntry.tsx
+++ b/airflow/www/static/js/dag/details/taskInstance/Xcom/XcomEntry.tsx
@@ -79,7 +79,7 @@ const XcomEntry = ({
if (typeof xcom.value !== "string") {
try {
xcomString = JSON.stringify(xcom.value);
- } catch (e) {
+ } catch (_e) {
// skip
}
} else {
diff --git a/airflow/www/static/js/dag/details/taskInstance/taskActions/MarkInstanceAs.tsx b/airflow/www/static/js/dag/details/taskInstance/taskActions/MarkInstanceAs.tsx
index d2373b4dddc..b00d61d8ebd 100644
--- a/airflow/www/static/js/dag/details/taskInstance/taskActions/MarkInstanceAs.tsx
+++ b/airflow/www/static/js/dag/details/taskInstance/taskActions/MarkInstanceAs.tsx
@@ -109,7 +109,7 @@ const MarkAsModal = ({
downstream,
mapIndexes,
enabled: isOpen,
- }
+ },
);
const { mutateAsync: markFailedMutation, isLoading: isMarkFailedLoading } =
diff --git a/airflow/www/static/js/dag/grid/dagRuns/Bar.tsx b/airflow/www/static/js/dag/grid/dagRuns/Bar.tsx
index 0e8bd1d4c50..c6395084a74 100644
--- a/airflow/www/static/js/dag/grid/dagRuns/Bar.tsx
+++ b/airflow/www/static/js/dag/grid/dagRuns/Bar.tsx
@@ -66,8 +66,8 @@ const DagRunBar = ({
if (!isSelected) {
const els = Array.from(
containerRef?.current?.getElementsByClassName(
- `js-${runId}`
- ) as HTMLCollectionOf<HTMLElement>
+ `js-${runId}`,
+ ) as HTMLCollectionOf<HTMLElement>,
);
els.forEach((e) => {
e.style.backgroundColor = hoverBlue;
@@ -77,8 +77,8 @@ const DagRunBar = ({
const onMouseLeave = () => {
const els = Array.from(
containerRef?.current?.getElementsByClassName(
- `js-${runId}`
- ) as HTMLCollectionOf<HTMLElement>
+ `js-${runId}`,
+ ) as HTMLCollectionOf<HTMLElement>,
);
els.forEach((e) => {
e.style.backgroundColor = "";
diff --git a/airflow/www/static/js/dag/grid/dagRuns/index.test.tsx b/airflow/www/static/js/dag/grid/dagRuns/index.test.tsx
index ebbb1f86e0c..bcb688ed4e0 100644
--- a/airflow/www/static/js/dag/grid/dagRuns/index.test.tsx
+++ b/airflow/www/static/js/dag/grid/dagRuns/index.test.tsx
@@ -90,7 +90,7 @@ describe("Test DagRuns", () => {
() =>
({
data,
- } as any)
+ }) as any,
);
const { queryAllByTestId, getByText, queryByText } = render(<DagRuns />, {
wrapper: TableWrapper,
@@ -102,7 +102,7 @@ describe("Test DagRuns", () => {
expect(getByText("00:01:26")).toBeInTheDocument();
expect(
// @ts-ignore
- queryByText(moment.utc(dagRuns[0].executionDate).format("MMM DD, HH:mm"))
+ queryByText(moment.utc(dagRuns[0].executionDate).format("MMM DD, HH:mm")),
).toBeNull();
spy.mockRestore();
@@ -117,12 +117,12 @@ describe("Test DagRuns", () => {
() =>
({
data,
- } as any)
+ }) as any,
);
const { getByText } = render(<DagRuns />, { wrapper: TableWrapper });
expect(
// @ts-ignore
- getByText(moment.utc(datestring).format("MMM DD, HH:mm"))
+ getByText(moment.utc(datestring).format("MMM DD, HH:mm")),
).toBeInTheDocument();
spy.mockRestore();
});
@@ -136,12 +136,12 @@ describe("Test DagRuns", () => {
() =>
({
data,
- } as any)
+ }) as any,
);
const { queryAllByText } = render(<DagRuns />, { wrapper: TableWrapper });
expect(
// @ts-ignore
- queryAllByText(moment.utc(datestring).format("MMM DD, HH:mm"))
+ queryAllByText(moment.utc(datestring).format("MMM DD, HH:mm")),
).toHaveLength(1);
spy.mockRestore();
});
@@ -155,12 +155,12 @@ describe("Test DagRuns", () => {
() =>
({
data,
- } as any)
+ }) as any,
);
const { queryAllByText } = render(<DagRuns />, { wrapper: TableWrapper });
expect(
// @ts-ignore
- queryAllByText(moment.utc(datestring).format("MMM DD, HH:mm"))
+ queryAllByText(moment.utc(datestring).format("MMM DD, HH:mm")),
).toHaveLength(2);
spy.mockRestore();
});
@@ -170,7 +170,7 @@ describe("Test DagRuns", () => {
() =>
({
data: { groups: {}, dagRuns: [] },
- } as any)
+ }) as any,
);
const { queryByTestId } = render(<DagRuns />, { wrapper: TableWrapper });
diff --git a/airflow/www/static/js/dag/grid/index.test.tsx b/airflow/www/static/js/dag/grid/index.test.tsx
index b6eb000b768..dd5ff6eaa01 100644
--- a/airflow/www/static/js/dag/grid/index.test.tsx
+++ b/airflow/www/static/js/dag/grid/index.test.tsx
@@ -195,7 +195,7 @@ describe("Test ToggleGroups", () => {
test("Group defaults to closed", () => {
const { getByText, getAllByTestId } = render(
<Grid openGroupIds={[]} onToggleGroups={() => {}} />,
- { wrapper: Wrapper }
+ { wrapper: Wrapper },
);
const groupName1 = getByText("group_1");
@@ -232,7 +232,7 @@ describe("Test ToggleGroups", () => {
test("Expand/collapse buttons toggle nested groups", async () => {
const { getByText, queryAllByTestId, getByTitle } = render(
<GridWithGroups />,
- { wrapper: Wrapper }
+ { wrapper: Wrapper },
);
const expandButton = getByTitle(EXPAND);
@@ -248,21 +248,21 @@ describe("Test ToggleGroups", () => {
fireEvent.click(collapseButton);
await waitFor(() =>
- expect(queryAllByTestId("task-instance")).toHaveLength(2)
+ expect(queryAllByTestId("task-instance")).toHaveLength(2),
);
expect(queryAllByTestId("close-group")).toHaveLength(0);
fireEvent.click(expandButton);
await waitFor(() =>
- expect(queryAllByTestId("task-instance")).toHaveLength(6)
+ expect(queryAllByTestId("task-instance")).toHaveLength(6),
);
});
test("Toggling a group does not affect groups with the same label", async () => {
const { getByTitle, getByTestId, queryAllByTestId } = render(
<GridWithGroups />,
- { wrapper: Wrapper }
+ { wrapper: Wrapper },
);
const expandButton = getByTitle(EXPAND);
@@ -270,7 +270,7 @@ describe("Test ToggleGroups", () => {
fireEvent.click(expandButton);
await waitFor(() =>
- expect(queryAllByTestId("task-instance")).toHaveLength(6)
+ expect(queryAllByTestId("task-instance")).toHaveLength(6),
);
const group2Task1 = getByTestId("group_2.task_1");
@@ -280,7 +280,7 @@ describe("Test ToggleGroups", () => {
// We only expect group_2.task_1 to be affected, not group_1.task_1
await waitFor(() =>
- expect(queryAllByTestId("task-instance")).toHaveLength(5)
+ expect(queryAllByTestId("task-instance")).toHaveLength(5),
);
});
@@ -288,7 +288,7 @@ describe("Test ToggleGroups", () => {
const openGroupIds = ["group_1", "group_1.task_1"];
const { rerender, queryAllByTestId } = render(
<Grid openGroupIds={openGroupIds} onToggleGroups={() => {}} />,
- { wrapper: Wrapper }
+ { wrapper: Wrapper },
);
const taskElements = queryAllByTestId("task-instance");
@@ -303,7 +303,7 @@ describe("Test ToggleGroups", () => {
hoveredTaskState="success"
openGroupIds={openGroupIds}
onToggleGroups={() => {}}
- />
+ />,
);
taskElements.forEach((taskElement) => {
@@ -315,7 +315,7 @@ describe("Test ToggleGroups", () => {
hoveredTaskState="failed"
openGroupIds={openGroupIds}
onToggleGroups={() => {}}
- />
+ />,
);
taskElements.forEach((taskElement) => {
diff --git a/airflow/www/static/js/dag/grid/renderTaskRows.test.tsx b/airflow/www/static/js/dag/grid/renderTaskRows.test.tsx
index e9aec21e218..f082c0768fe 100644
--- a/airflow/www/static/js/dag/grid/renderTaskRows.test.tsx
+++ b/airflow/www/static/js/dag/grid/renderTaskRows.test.tsx
@@ -71,7 +71,7 @@ describe("Test renderTaskRows", () => {
const { queryByTestId, getByText } = render(
<>{renderTaskRows({ task, dagRunIds: ["run1"] })}</>,
- { wrapper: TableWrapper }
+ { wrapper: TableWrapper },
);
expect(getByText("group_1")).toBeInTheDocument();
@@ -96,7 +96,7 @@ describe("Test renderTaskRows", () => {
const { queryByTestId, getByText } = render(
<>{renderTaskRows({ task, dagRunIds: [] })}</>,
- { wrapper: TableWrapper }
+ { wrapper: TableWrapper },
);
expect(getByText("group_1")).toBeInTheDocument();
@@ -128,7 +128,7 @@ describe("Test renderTaskRows", () => {
const { queryByTestId, getByText } = render(
<>{renderTaskRows({ task, dagRunIds: ["run1"] })}</>,
- { wrapper: TableWrapper }
+ { wrapper: TableWrapper },
);
expect(getByText("group_1")).toBeInTheDocument();
diff --git a/airflow/www/static/js/dag/index.tsx b/airflow/www/static/js/dag/index.tsx
index 47ed13c9a02..d8f2fd2e1c8 100644
--- a/airflow/www/static/js/dag/index.tsx
+++ b/airflow/www/static/js/dag/index.tsx
@@ -49,6 +49,6 @@ if (mainElement) {
reactRoot.render(
<App cache={cache}>
<Main />
- </App>
+ </App>,
);
}
diff --git a/airflow/www/static/js/dag/nav/FilterBar.tsx b/airflow/www/static/js/dag/nav/FilterBar.tsx
index db642393926..6035107cf3b 100644
--- a/airflow/www/static/js/dag/nav/FilterBar.tsx
+++ b/airflow/www/static/js/dag/nav/FilterBar.tsx
@@ -143,7 +143,7 @@ const FilterBar = () => {
typeOptions.every((typeOption) => "value" in typeOption)
) {
onRunTypeChange(
- typeOptions.map((typeOption) => typeOption.value)
+ typeOptions.map((typeOption) => typeOption.value),
);
}
}}
@@ -162,7 +162,7 @@ const FilterBar = () => {
stateOptions.every((stateOption) => "value" in stateOption)
) {
onRunStateChange(
- stateOptions.map((stateOption) => stateOption.value)
+ stateOptions.map((stateOption) => stateOption.value),
);
}
}}
diff --git a/airflow/www/static/js/dag/nav/LegendRow.test.tsx b/airflow/www/static/js/dag/nav/LegendRow.test.tsx
index 69a8d230e26..8aff5b2bccb 100644
--- a/airflow/www/static/js/dag/nav/LegendRow.test.tsx
+++ b/airflow/www/static/js/dag/nav/LegendRow.test.tsx
@@ -29,7 +29,7 @@ describe("Test LegendRow", () => {
const onStatusHover = jest.fn();
const onStatusLeave = jest.fn();
const { getByText } = render(
- <LegendRow onStatusHover={onStatusHover} onStatusLeave={onStatusLeave} />
+ <LegendRow onStatusHover={onStatusHover} onStatusLeave={onStatusLeave} />,
);
Object.keys(stateColors).forEach((taskState) => {
@@ -52,15 +52,15 @@ describe("Test LegendRow", () => {
<LegendRow
onStatusHover={onStatusHover}
onStatusLeave={onStatusLeave}
- />
+ />,
);
const successElement = getByText(state);
fireEvent.mouseEnter(successElement);
await waitFor(() =>
- expect(onStatusHover).toHaveBeenCalledWith(expectedSetValue)
+ expect(onStatusHover).toHaveBeenCalledWith(expectedSetValue),
);
fireEvent.mouseLeave(successElement);
await waitFor(() => expect(onStatusLeave).toHaveBeenLastCalledWith());
- }
+ },
);
});
diff --git a/airflow/www/static/js/dag/useFilters.test.tsx b/airflow/www/static/js/dag/useFilters.test.tsx
index bc532df0eee..b44c18c00b7 100644
--- a/airflow/www/static/js/dag/useFilters.test.tsx
+++ b/airflow/www/static/js/dag/useFilters.test.tsx
@@ -51,7 +51,7 @@ describe("Test useFilters hook", () => {
test("Initial values when url does not have query params", async () => {
const { result } = renderHook<FilterHookReturn, undefined>(
() => useFilters(),
- { wrapper: RouterWrapper }
+ { wrapper: RouterWrapper },
);
const {
filters: {
@@ -109,12 +109,12 @@ describe("Test useFilters hook", () => {
])("Test $fnName functions", async ({ fnName, paramName, paramValue }) => {
const { result } = renderHook<FilterHookReturn, undefined>(
() => useFilters(),
- { wrapper: RouterWrapper }
+ { wrapper: RouterWrapper },
);
await act(async () => {
result.current[fnName](
- paramValue as "string" & string[] & FilterTasksProps
+ paramValue as "string" & string[] & FilterTasksProps,
);
});
@@ -138,7 +138,7 @@ describe("Test useFilters hook", () => {
test("Test onFilterTasksChange ", async () => {
const { result } = renderHook<FilterHookReturn, undefined>(
() => useFilters(),
- { wrapper: RouterWrapper }
+ { wrapper: RouterWrapper },
);
await act(async () => {
diff --git a/airflow/www/static/js/dag/useFilters.tsx b/airflow/www/static/js/dag/useFilters.tsx
index 5a1a49b6865..3dd33f72285 100644
--- a/airflow/www/static/js/dag/useFilters.tsx
+++ b/airflow/www/static/js/dag/useFilters.tsx
@@ -57,7 +57,7 @@ export interface UtilFunctions {
onRunStateChange: (values: string[]) => void;
onFilterTasksChange: (args: FilterTasksProps) => void;
transformArrayToMultiSelectOptions: (
- options: string[] | null
+ options: string[] | null,
) => { label: string; value: string }[];
clearFilters: () => void;
resetRoot: () => void;
@@ -133,7 +133,7 @@ const useFilters = (): FilterHookReturn => {
};
const transformArrayToMultiSelectOptions = (
- options: string[] | null
+ options: string[] | null,
): { label: string; value: string }[] =>
options === null
? []
@@ -142,16 +142,16 @@ const useFilters = (): FilterHookReturn => {
const onBaseDateChange = makeOnChangeFn(
BASE_DATE_PARAM,
// @ts-ignore
- (localDate: string) => moment(localDate).utc().format()
+ (localDate: string) => moment(localDate).utc().format(),
);
const onNumRunsChange = makeOnChangeFn(NUM_RUNS_PARAM);
const onRunTypeChange = makeMultiSelectOnChangeFn(
RUN_TYPE_PARAM,
- filtersOptions.runTypes
+ filtersOptions.runTypes,
);
const onRunStateChange = makeMultiSelectOnChangeFn(
RUN_STATE_PARAM,
- filtersOptions.dagStates
+ filtersOptions.dagStates,
);
const onFilterTasksChange = ({
diff --git a/airflow/www/static/js/dag_dependencies.js b/airflow/www/static/js/dag_dependencies.js
index e1af621a1bb..32660509ae4 100644
--- a/airflow/www/static/js/dag_dependencies.js
+++ b/airflow/www/static/js/dag_dependencies.js
@@ -31,7 +31,7 @@ const duration = 500;
let nodes = dagNodes;
const fullNodes = nodes;
const filteredNodes = nodes.filter((n) =>
- edges.some((e) => e.u === n.id || e.v === n.id)
+ edges.some((e) => e.u === n.id || e.v === n.id),
);
// Preparation of DagreD3 data structures
@@ -70,7 +70,7 @@ function setUpZoomSupport() {
zoom = d3.behavior.zoom().on("zoom", () => {
innerSvg.attr(
"transform",
- `translate(${d3.event.translate})scale(${d3.event.scale})`
+ `translate(${d3.event.translate})scale(${d3.event.scale})`,
);
});
svg.call(zoom);
@@ -88,7 +88,7 @@ function setUpZoomSupport() {
// Calculate applicable scale for zoom
const zoomScale = Math.min(
Math.min(width / graphWidth, height / graphHeight),
- 1.5 // cap zoom level to 1.5 so nodes are not too large
+ 1.5, // cap zoom level to 1.5 so nodes are not too large
);
zoom.translate([width / 2 - (graphWidth * zoomScale) / 2 + padding, padding]);
diff --git a/airflow/www/static/js/dags.js b/airflow/www/static/js/dags.js
index da4b0cb6b61..ae80f83184a 100644
--- a/airflow/www/static/js/dags.js
+++ b/airflow/www/static/js/dags.js
@@ -102,7 +102,7 @@ $.each($("[id^=toggle]"), function toggleId() {
$input.on("change", () => {
const isPaused = $input.is(":checked");
const url = `${pausedUrl}?is_paused=${isPaused}&dag_id=${encodeURIComponent(
- dagId
+ dagId,
)}`;
$input.removeClass("switch-input--error");
// Remove focus on element so the tooltip will go away
@@ -177,8 +177,8 @@ function lastDagRunsHandler(error, json) {
.attr(
"href",
`${graphUrl}?dag_id=${encodeURIComponent(
- dagId
- )}&execution_date=${encodeURIComponent(executionDate)}`
+ dagId,
+ )}&execution_date=${encodeURIComponent(executionDate)}`,
)
.html("")
.insert(isoDateToTimeEl.bind(null, executionDate, { title: false }));
@@ -196,7 +196,7 @@ d3.selectAll(".js-last-run-tooltip").on(
function mouseoverLastRun() {
const lastRunData = JSON.parse(d3.select(this).attr("data-lastrun"));
d3.select(this).attr("data-original-title", tiTooltip(lastRunData));
- }
+ },
);
function formatCount(count) {
@@ -240,7 +240,7 @@ function drawDagStats(selector, dagId, states) {
.append("circle")
.attr(
"id",
- (d) => `${selector}-${dagId.replace(/\./g, "_")}-${d.state || "none"}`
+ (d) => `${selector}-${dagId.replace(/\./g, "_")}-${d.state || "none"}`,
)
.attr("class", "has-svg-tooltip")
.attr("stroke-width", (d) => {
@@ -314,7 +314,7 @@ function nextRunDatasetsSummaryHandler(_, json) {
$(el).text(newSummary);
}
}
- }
+ },
);
}
@@ -439,7 +439,7 @@ function handleRefresh({ activeDagsOnly = false } = {}) {
d3.json(taskStatsUrl)
.header("X-CSRFToken", csrfToken)
.post(params, (error, json) =>
- refreshDagStatsHandler(TASK_INSTANCE, json)
+ refreshDagStatsHandler(TASK_INSTANCE, json),
);
d3.json(nextRunDatasetsSummaryUrl)
.header("X-CSRFToken", csrfToken)
@@ -502,7 +502,7 @@ $(".js-next-run-tooltip").each((i, run) => {
const [createAfter, intervalStart, intervalEnd] = nextRunData.split(",");
let newTitle = "";
newTitle += `<strong>Run After:</strong> ${formatDateTime(
- createAfter
+ createAfter,
)}<br>`;
newTitle += `Next Run: ${approxTimeFromNow(createAfter)}<br><br>`;
newTitle += "<strong>Data Interval</strong><br>";
@@ -536,7 +536,7 @@ $(".next-dataset-triggered").on("click", (e) => {
openDatasetModal(dagId, summary, nextDatasets[dagId], nextDatasetsError);
} else {
window.location.href = `${datasetsUrl}?uri=${encodeURIComponent(
- singleDatasetUri
+ singleDatasetUri,
)}`;
}
});
@@ -544,7 +544,7 @@ $(".next-dataset-triggered").on("click", (e) => {
const getTooltipInfo = throttle(
(dagId, run, setNextDatasets) =>
getDatasetTooltipInfo(dagId, run, setNextDatasets),
- 1000
+ 1000,
);
$(".js-dataset-triggered").each((i, cell) => {
diff --git a/airflow/www/static/js/datasets/CreateDatasetEvent.tsx b/airflow/www/static/js/datasets/CreateDatasetEvent.tsx
index 39de1143715..9c7fd2b081c 100644
--- a/airflow/www/static/js/datasets/CreateDatasetEvent.tsx
+++ b/airflow/www/static/js/datasets/CreateDatasetEvent.tsx
@@ -45,7 +45,7 @@ interface Props {
function checkJsonString(str: string) {
try {
JSON.parse(str);
- } catch (e) {
+ } catch (_e) {
return false;
}
return true;
diff --git a/airflow/www/static/js/datasets/DatasetDetails.tsx b/airflow/www/static/js/datasets/DatasetDetails.tsx
index 715c2bf3086..fdb9d9dce74 100644
--- a/airflow/www/static/js/datasets/DatasetDetails.tsx
+++ b/airflow/www/static/js/datasets/DatasetDetails.tsx
@@ -58,7 +58,7 @@ const DatasetDetails = ({ uri }: Props) => {
if (!task.taskId || !task.dagId) return null;
const url = `${gridUrl?.replace(
"__DAG_ID__",
- task.dagId
+ task.dagId,
)}?&task_id=${encodeURIComponent(task.taskId)}`;
return (
<Link
diff --git a/airflow/www/static/js/datasets/DatasetEvents.tsx b/airflow/www/static/js/datasets/DatasetEvents.tsx
index 5cec8803082..ff4a54783bc 100644
--- a/airflow/www/static/js/datasets/DatasetEvents.tsx
+++ b/airflow/www/static/js/datasets/DatasetEvents.tsx
@@ -80,7 +80,7 @@ const Events = ({ datasetId, showLabel }: Props) => {
accessor: "extra",
},
],
- []
+ [],
);
const data = useMemo(() => datasetEvents, [datasetEvents]);
diff --git a/airflow/www/static/js/datasets/DatasetsList.test.tsx b/airflow/www/static/js/datasets/DatasetsList.test.tsx
index 89d0e9f4905..8875a832d37 100644
--- a/airflow/www/static/js/datasets/DatasetsList.test.tsx
+++ b/airflow/www/static/js/datasets/DatasetsList.test.tsx
@@ -88,7 +88,7 @@ describe("Test Datasets List", () => {
const { getByText, queryAllByTestId } = render(
<DatasetsList onSelect={() => {}} />,
- { wrapper: Wrapper }
+ { wrapper: Wrapper },
);
const listItems = queryAllByTestId("dataset-list-item");
@@ -112,7 +112,7 @@ describe("Test Datasets List", () => {
const { getByText, queryAllByTestId, getByTestId } = render(
<DatasetsList onSelect={() => {}} />,
- { wrapper: Wrapper }
+ { wrapper: Wrapper },
);
const listItems = queryAllByTestId("dataset-list-item");
diff --git a/airflow/www/static/js/datasets/DatasetsList.tsx b/airflow/www/static/js/datasets/DatasetsList.tsx
index ffc0c4a08e7..f1c4a6596a6 100644
--- a/airflow/www/static/js/datasets/DatasetsList.tsx
+++ b/airflow/www/static/js/datasets/DatasetsList.tsx
@@ -93,7 +93,7 @@ const DatasetsList = ({ onSelect }: Props) => {
Cell: TimeCell,
},
],
- []
+ [],
);
const data = useMemo(() => datasets, [datasets]);
diff --git a/airflow/www/static/js/datasets/Graph/index.tsx b/airflow/www/static/js/datasets/Graph/index.tsx
index 9157a8a1a26..13699614283 100644
--- a/airflow/www/static/js/datasets/Graph/index.tsx
+++ b/airflow/www/static/js/datasets/Graph/index.tsx
@@ -94,7 +94,7 @@ const Graph = ({ selectedNodeId, onSelect }: Props) => {
},
isSelected: selectedNodeId === c.value.label,
isHighlighted: edges.some(
- (e) => e.data.rest.isSelected && e.id.includes(c.id)
+ (e) => e.data.rest.isSelected && e.id.includes(c.id),
),
},
type: "custom",
@@ -114,7 +114,7 @@ const Graph = ({ selectedNodeId, onSelect }: Props) => {
y + (node.data.height || 0) / 2,
{
duration: 1000,
- }
+ },
);
}
}, [setCenter, node]);
diff --git a/airflow/www/static/js/datasets/Main.tsx b/airflow/www/static/js/datasets/Main.tsx
index 3d9b5e51c38..2257367c154 100644
--- a/airflow/www/static/js/datasets/Main.tsx
+++ b/airflow/www/static/js/datasets/Main.tsx
@@ -99,11 +99,11 @@ const Datasets = () => {
const containerRef = useContainerRef();
const selectedUri = decodeURIComponent(
- searchParams.get(DATASET_URI_PARAM) || ""
+ searchParams.get(DATASET_URI_PARAM) || "",
);
const selectedTimestamp = decodeURIComponent(
- searchParams.get(TIMESTAMP_PARAM) || ""
+ searchParams.get(TIMESTAMP_PARAM) || "",
);
const selectedDagId = searchParams.get(DAG_ID_PARAM) || undefined;
@@ -118,7 +118,7 @@ const Datasets = () => {
else params.delete(TAB_PARAM);
setSearchParams(params);
},
- [setSearchParams, searchParams, selectedUri]
+ [setSearchParams, searchParams, selectedUri],
);
const onSelect = ({ uri, timestamp, dagId }: OnSelectProps = {}) => {
diff --git a/airflow/www/static/js/datasets/index.tsx b/airflow/www/static/js/datasets/index.tsx
index 63f33d91788..3572bc2112f 100644
--- a/airflow/www/static/js/datasets/index.tsx
+++ b/airflow/www/static/js/datasets/index.tsx
@@ -46,6 +46,6 @@ if (mainElement) {
reactRoot.render(
<App cache={cache}>
<Datasets />
- </App>
+ </App>,
);
}
diff --git a/airflow/www/static/js/datetime_utils.js b/airflow/www/static/js/datetime_utils.js
index dc910e8c23a..3833b2d7787 100644
--- a/airflow/www/static/js/datetime_utils.js
+++ b/airflow/www/static/js/datetime_utils.js
@@ -48,7 +48,7 @@ export function isoDateToTimeEl(datetime, options) {
if (addTitle) {
el.setAttribute(
"title",
- dateTimeObj.isUTC() ? "" : `UTC: ${dateTimeObj.clone().utc().format()}`
+ dateTimeObj.isUTC() ? "" : `UTC: ${dateTimeObj.clone().utc().format()}`,
);
}
el.innerText = dateTimeObj.format(defaultFormat);
@@ -90,7 +90,7 @@ export function updateAllDateTimes() {
// eslint-disable-next-line no-underscore-dangle
if (dt._isValid) {
$el.text(
- dt.format($el.data("with-tz") ? defaultFormatWithTZ : defaultFormat)
+ dt.format($el.data("with-tz") ? defaultFormatWithTZ : defaultFormat),
);
}
if ($el.attr("title") !== undefined) {
diff --git a/airflow/www/static/js/main.js b/airflow/www/static/js/main.js
index de62a444dbc..b936a17b65a 100644
--- a/airflow/www/static/js/main.js
+++ b/airflow/www/static/js/main.js
@@ -161,8 +161,8 @@ function initializeUITimezone() {
if (Airflow.serverTimezone !== "UTC") {
$("#timezone-server a").html(
`${formatTimezone(
- Airflow.serverTimezone
- )} <span class="label label-primary">Server</span>`
+ Airflow.serverTimezone,
+ )} <span class="label label-primary">Server</span>`,
);
$("#timezone-server").show();
}
@@ -171,7 +171,7 @@ function initializeUITimezone() {
$("#timezone-local a")
.attr("data-timezone", local)
.html(
- `${formatTimezone(local)} <span class="label label-info">Local</span>`
+ `${formatTimezone(local)} <span class="label label-info">Local</span>`,
);
} else {
$("#timezone-local").hide();
@@ -186,7 +186,7 @@ function initializeUITimezone() {
moment.tz.names().map((tzName) => {
const category = tzName.split("/", 1)[0];
return { category, name: tzName.replace("_", " "), tzName };
- })
+ }),
),
showHintOnFocus: "all",
showCategoryHeader: true,
diff --git a/airflow/www/static/js/task_instances.js b/airflow/www/static/js/task_instances.js
index 47a5dccb6f3..0ae59d72d91 100644
--- a/airflow/www/static/js/task_instances.js
+++ b/airflow/www/static/js/task_instances.js
@@ -52,7 +52,7 @@ function generateTooltipDateTimes(startTime, endTime, dagTimezone) {
if (localTZ !== "UTC") {
startDate.tz(localTZ);
tooltipHTML += `<br><strong>Local: ${startDate.format(
- tzFormat
+ tzFormat,
)}</strong><br>`;
const localEndDate =
endDate && endDate instanceof moment ? endDate.tz(localTZ) : endDate;
@@ -63,7 +63,7 @@ function generateTooltipDateTimes(startTime, endTime, dagTimezone) {
if (dagTz !== "UTC" && dagTz !== localTZ) {
startDate.tz(dagTz);
tooltipHTML += `<br><strong>DAG's TZ: ${startDate.format(
- tzFormat
+ tzFormat,
)}</strong><br>`;
const dagTZEndDate =
endDate && endDate instanceof moment ? endDate.tz(dagTz) : endDate;
@@ -90,7 +90,7 @@ export default function tiTooltip(ti, task, { includeTryNumber = false } = {}) {
numMap.forEach((key, val) => {
if (key > 0) {
tt += `<span style="margin-left: 15px">${escapeHtml(val)}: ${escapeHtml(
- key
+ key,
)}</span><br />`;
}
});
diff --git a/airflow/www/static/js/ti_log.js b/airflow/www/static/js/ti_log.js
index 1fd66acee6d..5ef7909b7ba 100644
--- a/airflow/www/static/js/ti_log.js
+++ b/airflow/www/static/js/ti_log.js
@@ -71,7 +71,7 @@ function autoTailingLog(tryNumber, metadata = null, autoTailing = false) {
console.debug(
`Auto-tailing log for dag_id: ${dagId}, task_id: ${taskId}, ` +
`execution_date: ${executionDate}, map_index: ${mapIndex}, try_number: ${tryNumber}, ` +
- `metadata: ${JSON.stringify(metadata)}`
+ `metadata: ${JSON.stringify(metadata)}`,
);
return Promise.resolve(
@@ -85,7 +85,7 @@ function autoTailingLog(tryNumber, metadata = null, autoTailing = false) {
try_number: tryNumber,
metadata: JSON.stringify(metadata),
},
- })
+ }),
).then((res) => {
// Stop recursive call to backend when error occurs.
if (!res) {
@@ -147,21 +147,21 @@ function autoTailingLog(tryNumber, metadata = null, autoTailing = false) {
.replace(
urlRegex,
(url) =>
- `<a href="${url}" target="_blank" rel="noopener noreferrer">${url}</a>`
+ `<a href="${url}" target="_blank" rel="noopener noreferrer">${url}</a>`,
)
.replaceAll(
dateRegex,
(date) =>
`<time datetime="${date}+00:00" data-with-tz="true">${formatDateTime(
- `${date}+00:00`
- )}</time>`
+ `${date}+00:00`,
+ )}</time>`,
)
.replaceAll(
iso8601Regex,
(date) =>
`<time datetime="${date}" data-with-tz="true">${formatDateTime(
- `${date}`
- )}</time>`
+ `${date}`,
+ )}</time>`,
)
.replaceAll(logGroupStart, (line) => {
const gName = line.substring(17);
@@ -172,7 +172,7 @@ function autoTailingLog(tryNumber, metadata = null, autoTailing = false) {
})
.replaceAll(
logGroupEnd,
- " <span style='color:#0060df;'>▲▲▲ Log group end</span></span>"
+ " <span style='color:#0060df;'>▲▲▲ Log group end</span></span>",
);
logBlock.innerHTML += `${linkifiedMessage}`;
});
@@ -242,7 +242,7 @@ $(document).ready(() => {
});
console.debug(
- `Attaching log grouping event handler for ${TOTAL_ATTEMPTS} attempts`
+ `Attaching log grouping event handler for ${TOTAL_ATTEMPTS} attempts`,
);
for (let i = 1; i <= TOTAL_ATTEMPTS; i += 1) {
document.getElementById(`log-group-${i}`).onclick = handleLogGroupClick;
diff --git a/airflow/www/static/js/trigger.js b/airflow/www/static/js/trigger.js
index 012930afa89..881741cdfd3 100644
--- a/airflow/www/static/js/trigger.js
+++ b/airflow/www/static/js/trigger.js
@@ -75,7 +75,7 @@ function updateJSONconf() {
} else {
params[keyName] = null;
}
- } catch (e) {
+ } catch (_e) {
// ignore JSON parsing errors
// we don't want to bother users during entry, error will be displayed before submit
}
@@ -206,7 +206,7 @@ function initForm() {
if (textValue.trim().length > 0) {
JSON.parse(textValue);
}
- } catch (ex) {
+ } catch (_ex) {
// eslint-disable-next-line no-alert
window.alert(`Invalid JSON entered, please correct:\n\n${textValue}`);
cm.focus();
@@ -241,7 +241,7 @@ function setRecentConfig(e) {
try {
dropdownJson = JSON.parse(dropdownValue);
value = JSON.stringify(dropdownJson, null, 4);
- } catch (err) {
+ } catch (_err) {
// eslint-disable-next-line no-console
console.error(`config is not valid JSON format: ${dropdownValue}`);
}
diff --git a/airflow/www/static/js/types/api-generated.ts b/airflow/www/static/js/types/api-generated.ts
index f2c052800e4..3bc35e4be2a 100644
--- a/airflow/www/static/js/types/api-generated.ts
+++ b/airflow/www/static/js/types/api-generated.ts
@@ -17,7 +17,7 @@
* under the License.
*/
-/* eslint-disable */
+
import type { CamelCasedPropertiesDeep } from "type-fest";
/**
* This file was auto-generated by openapi-typescript.
@@ -26,925 +26,1728 @@ import type { CamelCasedPropertiesDeep } from "type-fest";
export interface paths {
"/connections": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List connections */
get: operations["get_connections"];
+ put?: never;
+ /** Create a connection */
post: operations["post_connection"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/connections/{connection_id}": {
- get: operations["get_connection"];
- delete: operations["delete_connection"];
- patch: operations["patch_connection"];
parameters: {
+ query?: never;
+ header?: never;
path: {
- /** The connection ID. */
+ /** @description The connection ID. */
connection_id: components["parameters"]["ConnectionID"];
};
+ cookie?: never;
};
+ /** Get a connection */
+ get: operations["get_connection"];
+ put?: never;
+ post?: never;
+ /** Delete a connection */
+ delete: operations["delete_connection"];
+ options?: never;
+ head?: never;
+ /** Update a connection */
+ patch: operations["patch_connection"];
+ trace?: never;
};
"/connections/test": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
/**
- * Test a connection.
+ * Test a connection
+ * @description Test a connection.
*
- * For security reasons, the test connection functionality is disabled by default across Airflow UI, API and CLI.
- * For more information on capabilities of users, see the documentation:
- * https://airflow.apache.org/docs/apache-airflow/stable/security/security_model.html#capabilities-of-authenticated-ui-users.
- * It is strongly advised to not enable the feature until you make sure that only
- * highly trusted UI/API users have "edit connection" permissions.
+ * For security reasons, the test connection functionality is disabled by default across Airflow UI, API and CLI.
+ * For more information on capabilities of users, see the documentation:
+ * https://airflow.apache.org/docs/apache-airflow/stable/security/security_model.html#capabilities-of-authenticated-ui-users.
+ * It is strongly advised to not enable the feature until you make sure that only
+ * highly trusted UI/API users have "edit connection" permissions.
*
- * Set the "test_connection" flag to "Enabled" in the "core" section of Airflow configuration (airflow.cfg) to enable testing of collections.
- * It can also be controlled by the environment variable `AIRFLOW__CORE__TEST_CONNECTION`.
+ * Set the "test_connection" flag to "Enabled" in the "core" section of Airflow configuration (airflow.cfg) to enable testing of collections.
+ * It can also be controlled by the environment variable `AIRFLOW__CORE__TEST_CONNECTION`.
*
- * *New in version 2.2.0*
+ * *New in version 2.2.0*
*/
post: operations["test_connection"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/dags": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
/**
- * List DAGs in the database.
- * `dag_id_pattern` can be set to match dags of a specific pattern
+ * List DAGs
+ * @description List DAGs in the database.
+ * `dag_id_pattern` can be set to match dags of a specific pattern
*/
get: operations["get_dags"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
/**
- * Update DAGs of a given dag_id_pattern using UpdateMask.
- * This endpoint allows specifying `~` as the dag_id_pattern to update all DAGs.
- * *New in version 2.3.0*
+ * Update DAGs
+ * @description Update DAGs of a given dag_id_pattern using UpdateMask.
+ * This endpoint allows specifying `~` as the dag_id_pattern to update all DAGs.
+ * *New in version 2.3.0*
*/
patch: operations["patch_dags"];
+ trace?: never;
};
"/dags/{dag_id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description The DAG ID. */
+ dag_id: components["parameters"]["DAGID"];
+ };
+ cookie?: never;
+ };
/**
- * Presents only information available in database (DAGModel).
- * If you need detailed information, consider using GET /dags/{dag_id}/details.
+ * Get basic information about a DAG
+ * @description Presents only information available in database (DAGModel).
+ * If you need detailed information, consider using GET /dags/{dag_id}/details.
*/
get: operations["get_dag"];
+ put?: never;
+ post?: never;
/**
- * Deletes all metadata related to the DAG, including finished DAG Runs and Tasks.
- * Logs are not deleted. This action cannot be undone.
+ * Delete a DAG
+ * @description Deletes all metadata related to the DAG, including finished DAG Runs and Tasks.
+ * Logs are not deleted. This action cannot be undone.
*
- * *New in version 2.2.0*
+ * *New in version 2.2.0*
*/
delete: operations["delete_dag"];
+ options?: never;
+ head?: never;
+ /** Update a DAG */
patch: operations["patch_dag"];
+ trace?: never;
+ };
+ "/dags/{dag_id}/clearTaskInstances": {
parameters: {
+ query?: never;
+ header?: never;
path: {
- /** The DAG ID. */
+ /** @description The DAG ID. */
dag_id: components["parameters"]["DAGID"];
};
+ cookie?: never;
};
- };
- "/dags/{dag_id}/clearTaskInstances": {
- /** Clears a set of task instances associated with the DAG for a specified date range. */
+ get?: never;
+ put?: never;
+ /**
+ * Clear a set of task instances
+ * @description Clears a set of task instances associated with the DAG for a specified date range.
+ */
post: operations["post_clear_task_instances"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/setNote": {
parameters: {
+ query?: never;
+ header?: never;
path: {
- /** The DAG ID. */
+ /** @description The DAG ID. */
dag_id: components["parameters"]["DAGID"];
+ /** @description The DAG run ID. */
+ dag_run_id: components["parameters"]["DAGRunID"];
+ /** @description The task ID. */
+ task_id: components["parameters"]["TaskID"];
};
+ cookie?: never;
};
- };
- "/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/setNote": {
+ get?: never;
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
/**
- * Update the manual user note of a non-mapped Task Instance.
+ * Update the TaskInstance note.
+ * @description Update the manual user note of a non-mapped Task Instance.
*
- * *New in version 2.5.0*
+ * *New in version 2.5.0*
*/
patch: operations["set_task_instance_note"];
+ trace?: never;
+ };
+ "/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/{map_index}/setNote": {
parameters: {
+ query?: never;
+ header?: never;
path: {
- /** The DAG ID. */
+ /** @description The DAG ID. */
dag_id: components["parameters"]["DAGID"];
- /** The DAG run ID. */
+ /** @description The DAG run ID. */
dag_run_id: components["parameters"]["DAGRunID"];
- /** The task ID. */
+ /** @description The task ID. */
task_id: components["parameters"]["TaskID"];
+ /** @description The map index. */
+ map_index: components["parameters"]["MapIndex"];
};
+ cookie?: never;
};
- };
- "/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/{map_index}/setNote": {
+ get?: never;
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
/**
- * Update the manual user note of a mapped Task Instance.
+ * Update the TaskInstance note.
+ * @description Update the manual user note of a mapped Task Instance.
*
- * *New in version 2.5.0*
+ * *New in version 2.5.0*
*/
patch: operations["set_mapped_task_instance_note"];
+ trace?: never;
+ };
+ "/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/dependencies": {
parameters: {
+ query?: never;
+ header?: never;
path: {
- /** The DAG ID. */
+ /** @description The DAG ID. */
dag_id: components["parameters"]["DAGID"];
- /** The DAG run ID. */
+ /** @description The DAG run ID. */
dag_run_id: components["parameters"]["DAGRunID"];
- /** The task ID. */
+ /** @description The task ID. */
task_id: components["parameters"]["TaskID"];
- /** The map index. */
- map_index: components["parameters"]["MapIndex"];
};
+ cookie?: never;
};
- };
- "/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/dependencies": {
/**
* Get task dependencies blocking task from getting scheduled.
+ * @description Get task dependencies blocking task from getting scheduled.
*
- * *New in version 2.10.0*
+ * *New in version 2.10.0*
*/
get: operations["get_task_instance_dependencies"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/{map_index}/dependencies": {
parameters: {
+ query?: never;
+ header?: never;
path: {
- /** The DAG ID. */
+ /** @description The DAG ID. */
dag_id: components["parameters"]["DAGID"];
- /** The DAG run ID. */
+ /** @description The DAG run ID. */
dag_run_id: components["parameters"]["DAGRunID"];
- /** The task ID. */
+ /** @description The task ID. */
task_id: components["parameters"]["TaskID"];
+ /** @description The map index. */
+ map_index: components["parameters"]["MapIndex"];
};
+ cookie?: never;
};
- };
- "/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/{map_index}/dependencies": {
/**
* Get task dependencies blocking task from getting scheduled.
+ * @description Get task dependencies blocking task from getting scheduled.
*
- * *New in version 2.10.0*
+ * *New in version 2.10.0*
*/
get: operations["get_mapped_task_instance_dependencies"];
- parameters: {
- path: {
- /** The DAG ID. */
- dag_id: components["parameters"]["DAGID"];
- /** The DAG run ID. */
- dag_run_id: components["parameters"]["DAGRunID"];
- /** The task ID. */
- task_id: components["parameters"]["TaskID"];
- /** The map index. */
- map_index: components["parameters"]["MapIndex"];
- };
- };
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/dags/{dag_id}/updateTaskInstancesState": {
- /** Updates the state for multiple task instances simultaneously. */
- post: operations["post_set_task_instances_state"];
parameters: {
+ query?: never;
+ header?: never;
path: {
- /** The DAG ID. */
+ /** @description The DAG ID. */
dag_id: components["parameters"]["DAGID"];
};
+ cookie?: never;
};
+ get?: never;
+ put?: never;
+ /**
+ * Set a state of task instances
+ * @description Updates the state for multiple task instances simultaneously.
+ */
+ post: operations["post_set_task_instances_state"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/dags/{dag_id}/dagRuns": {
- /** This endpoint allows specifying `~` as the dag_id to retrieve DAG runs for all DAGs. */
- get: operations["get_dag_runs"];
- /** This will initiate a dagrun. If DAG is paused then dagrun state will remain queued, and the task won't run. */
- post: operations["post_dag_run"];
parameters: {
+ query?: never;
+ header?: never;
path: {
- /** The DAG ID. */
+ /** @description The DAG ID. */
dag_id: components["parameters"]["DAGID"];
};
+ cookie?: never;
};
+ /**
+ * List DAG runs
+ * @description This endpoint allows specifying `~` as the dag_id to retrieve DAG runs for all DAGs.
+ */
+ get: operations["get_dag_runs"];
+ put?: never;
+ /**
+ * Trigger a new DAG run.
+ * @description This will initiate a dagrun. If DAG is paused then dagrun state will remain queued, and the task won't run.
+ */
+ post: operations["post_dag_run"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/dags/~/dagRuns/list": {
- /** This endpoint is a POST to allow filtering across a large number of DAG IDs, where as a GET it would run in to maximum HTTP request URL length limit. */
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * List DAG runs (batch)
+ * @description This endpoint is a POST to allow filtering across a large number of DAG IDs, where as a GET it would run in to maximum HTTP request URL length limit.
+ */
post: operations["get_dag_runs_batch"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/dags/{dag_id}/dagRuns/{dag_run_id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description The DAG ID. */
+ dag_id: components["parameters"]["DAGID"];
+ /** @description The DAG run ID. */
+ dag_run_id: components["parameters"]["DAGRunID"];
+ };
+ cookie?: never;
+ };
+ /** Get a DAG run */
get: operations["get_dag_run"];
+ put?: never;
+ post?: never;
+ /** Delete a DAG run */
delete: operations["delete_dag_run"];
+ options?: never;
+ head?: never;
/**
- * Modify a DAG run.
+ * Modify a DAG run
+ * @description Modify a DAG run.
*
- * *New in version 2.2.0*
+ * *New in version 2.2.0*
*/
patch: operations["update_dag_run_state"];
+ trace?: never;
+ };
+ "/dags/{dag_id}/dagRuns/{dag_run_id}/clear": {
parameters: {
+ query?: never;
+ header?: never;
path: {
- /** The DAG ID. */
+ /** @description The DAG ID. */
dag_id: components["parameters"]["DAGID"];
- /** The DAG run ID. */
+ /** @description The DAG run ID. */
dag_run_id: components["parameters"]["DAGRunID"];
};
+ cookie?: never;
};
- };
- "/dags/{dag_id}/dagRuns/{dag_run_id}/clear": {
+ get?: never;
+ put?: never;
/**
- * Clear a DAG run.
+ * Clear a DAG run
+ * @description Clear a DAG run.
*
- * *New in version 2.4.0*
+ * *New in version 2.4.0*
*/
post: operations["clear_dag_run"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/dags/{dag_id}/dagRuns/{dag_run_id}/upstreamDatasetEvents": {
parameters: {
+ query?: never;
+ header?: never;
path: {
- /** The DAG ID. */
+ /** @description The DAG ID. */
dag_id: components["parameters"]["DAGID"];
- /** The DAG run ID. */
+ /** @description The DAG run ID. */
dag_run_id: components["parameters"]["DAGRunID"];
};
+ cookie?: never;
};
- };
- "/dags/{dag_id}/dagRuns/{dag_run_id}/upstreamDatasetEvents": {
/**
- * Get datasets for a dag run.
+ * Get dataset events for a DAG run
+ * @description Get datasets for a dag run.
*
- * *New in version 2.4.0*
+ * *New in version 2.4.0*
*/
get: operations["get_upstream_dataset_events"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/dags/{dag_id}/dagRuns/{dag_run_id}/setNote": {
parameters: {
+ query?: never;
+ header?: never;
path: {
- /** The DAG ID. */
+ /** @description The DAG ID. */
dag_id: components["parameters"]["DAGID"];
- /** The DAG run ID. */
+ /** @description The DAG run ID. */
dag_run_id: components["parameters"]["DAGRunID"];
};
+ cookie?: never;
};
- };
- "/dags/{dag_id}/dagRuns/{dag_run_id}/setNote": {
+ get?: never;
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
/**
- * Update the manual user note of a DagRun.
+ * Update the DagRun note.
+ * @description Update the manual user note of a DagRun.
*
- * *New in version 2.5.0*
+ * *New in version 2.5.0*
*/
patch: operations["set_dag_run_note"];
+ trace?: never;
+ };
+ "/dags/{dag_id}/datasets/queuedEvent/{uri}": {
parameters: {
+ query?: never;
+ header?: never;
path: {
- /** The DAG ID. */
+ /** @description The DAG ID. */
dag_id: components["parameters"]["DAGID"];
- /** The DAG run ID. */
- dag_run_id: components["parameters"]["DAGRunID"];
+ /** @description The encoded Dataset URI */
+ uri: components["parameters"]["DatasetURI"];
};
+ cookie?: never;
};
- };
- "/dags/{dag_id}/datasets/queuedEvent/{uri}": {
/**
- * Get a queued Dataset event for a DAG.
+ * Get a queued Dataset event for a DAG
+ * @description Get a queued Dataset event for a DAG.
*
- * *New in version 2.9.0*
+ * *New in version 2.9.0*
*/
get: operations["get_dag_dataset_queued_event"];
+ put?: never;
+ post?: never;
/**
* Delete a queued Dataset event for a DAG.
+ * @description Delete a queued Dataset event for a DAG.
*
- * *New in version 2.9.0*
+ * *New in version 2.9.0*
*/
delete: operations["delete_dag_dataset_queued_event"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/dags/{dag_id}/datasets/queuedEvent": {
parameters: {
+ query?: never;
+ header?: never;
path: {
- /** The DAG ID. */
+ /** @description The DAG ID. */
dag_id: components["parameters"]["DAGID"];
- /** The encoded Dataset URI */
- uri: components["parameters"]["DatasetURI"];
};
+ cookie?: never;
};
- };
- "/dags/{dag_id}/datasets/queuedEvent": {
/**
* Get queued Dataset events for a DAG.
+ * @description Get queued Dataset events for a DAG.
*
- * *New in version 2.9.0*
+ * *New in version 2.9.0*
*/
get: operations["get_dag_dataset_queued_events"];
+ put?: never;
+ post?: never;
/**
* Delete queued Dataset events for a DAG.
+ * @description Delete queued Dataset events for a DAG.
*
- * *New in version 2.9.0*
+ * *New in version 2.9.0*
*/
delete: operations["delete_dag_dataset_queued_events"];
- parameters: {
- path: {
- /** The DAG ID. */
- dag_id: components["parameters"]["DAGID"];
- };
- };
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/parseDagFile/{file_token}": {
- /** Request re-parsing of existing DAG files using a file token. */
- put: operations["reparse_dag_file"];
parameters: {
+ query?: never;
+ header?: never;
path: {
/**
- * The key containing the encrypted path to the file. Encryption and decryption take place only on
- * the server. This prevents the client from reading an non-DAG file. This also ensures API
- * extensibility, because the format of encrypted data may change.
+ * @description The key containing the encrypted path to the file. Encryption and decryption take place only on
+ * the server. This prevents the client from reading an non-DAG file. This also ensures API
+ * extensibility, because the format of encrypted data may change.
*/
file_token: components["parameters"]["FileToken"];
};
+ cookie?: never;
};
+ get?: never;
+ /**
+ * Request re-parsing of a DAG file
+ * @description Request re-parsing of existing DAG files using a file token.
+ */
+ put: operations["reparse_dag_file"];
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/datasets/queuedEvent/{uri}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description The encoded Dataset URI */
+ uri: components["parameters"]["DatasetURI"];
+ };
+ cookie?: never;
+ };
/**
- * Get queued Dataset events for a Dataset
+ * Get queued Dataset events for a Dataset.
+ * @description Get queued Dataset events for a Dataset
*
- * *New in version 2.9.0*
+ * *New in version 2.9.0*
*/
get: operations["get_dataset_queued_events"];
+ put?: never;
+ post?: never;
/**
* Delete queued Dataset events for a Dataset.
+ * @description Delete queued Dataset events for a Dataset.
*
- * *New in version 2.9.0*
+ * *New in version 2.9.0*
*/
delete: operations["delete_dataset_queued_events"];
- parameters: {
- path: {
- /** The encoded Dataset URI */
- uri: components["parameters"]["DatasetURI"];
- };
- };
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/eventLogs": {
- /** List log entries from event log. */
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * List log entries
+ * @description List log entries from event log.
+ */
get: operations["get_event_logs"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/eventLogs/{event_log_id}": {
- get: operations["get_event_log"];
parameters: {
+ query?: never;
+ header?: never;
path: {
- /** The event log ID. */
+ /** @description The event log ID. */
event_log_id: components["parameters"]["EventLogID"];
};
+ cookie?: never;
};
+ /** Get a log entry */
+ get: operations["get_event_log"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/importErrors": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List import errors */
get: operations["get_import_errors"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/importErrors/{import_error_id}": {
- get: operations["get_import_error"];
parameters: {
+ query?: never;
+ header?: never;
path: {
- /** The import error ID. */
+ /** @description The import error ID. */
import_error_id: components["parameters"]["ImportErrorID"];
};
+ cookie?: never;
};
+ /** Get an import error */
+ get: operations["get_import_error"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/pools": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List pools */
get: operations["get_pools"];
+ put?: never;
+ /** Create a pool */
post: operations["post_pool"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/pools/{pool_name}": {
- get: operations["get_pool"];
- delete: operations["delete_pool"];
- patch: operations["patch_pool"];
parameters: {
+ query?: never;
+ header?: never;
path: {
- /** The pool name. */
+ /** @description The pool name. */
pool_name: components["parameters"]["PoolName"];
};
+ cookie?: never;
};
+ /** Get a pool */
+ get: operations["get_pool"];
+ put?: never;
+ post?: never;
+ /** Delete a pool */
+ delete: operations["delete_pool"];
+ options?: never;
+ head?: never;
+ /** Update a pool */
+ patch: operations["patch_pool"];
+ trace?: never;
};
"/providers": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
/**
- * Get a list of providers.
+ * List providers
+ * @description Get a list of providers.
*
- * *New in version 2.1.0*
+ * *New in version 2.1.0*
*/
get: operations["get_providers"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances": {
- /** This endpoint allows specifying `~` as the dag_id, dag_run_id to retrieve DAG runs for all DAGs and DAG runs. */
- get: operations["get_task_instances"];
parameters: {
- path: {
- /** The DAG ID. */
- dag_id: components["parameters"]["DAGID"];
- /** The DAG run ID. */
- dag_run_id: components["parameters"]["DAGRunID"];
- };
- query: {
+ query?: {
/**
- * Returns objects greater or equal to the specified date.
+ * @description Returns objects greater or equal to the specified date.
*
- * This can be combined with execution_date_lte parameter to receive only the selected period.
+ * This can be combined with execution_date_lte parameter to receive only the selected period.
*/
execution_date_gte?: components["parameters"]["FilterExecutionDateGTE"];
/**
- * Returns objects less than or equal to the specified date.
+ * @description Returns objects less than or equal to the specified date.
*
- * This can be combined with execution_date_gte parameter to receive only the selected period.
+ * This can be combined with execution_date_gte parameter to receive only the selected period.
*/
execution_date_lte?: components["parameters"]["FilterExecutionDateLTE"];
/**
- * Returns objects greater or equal the specified date.
+ * @description Returns objects greater or equal the specified date.
*
- * This can be combined with start_date_lte parameter to receive only the selected period.
+ * This can be combined with start_date_lte parameter to receive only the selected period.
*/
start_date_gte?: components["parameters"]["FilterStartDateGTE"];
/**
- * Returns objects less or equal the specified date.
+ * @description Returns objects less or equal the specified date.
*
- * This can be combined with start_date_gte parameter to receive only the selected period.
+ * This can be combined with start_date_gte parameter to receive only the selected period.
*/
start_date_lte?: components["parameters"]["FilterStartDateLTE"];
/**
- * Returns objects greater or equal the specified date.
+ * @description Returns objects greater or equal the specified date.
*
- * This can be combined with start_date_lte parameter to receive only the selected period.
+ * This can be combined with start_date_lte parameter to receive only the selected period.
*/
end_date_gte?: components["parameters"]["FilterEndDateGTE"];
/**
- * Returns objects less than or equal to the specified date.
+ * @description Returns objects less than or equal to the specified date.
*
- * This can be combined with start_date_gte parameter to receive only the selected period.
+ * This can be combined with start_date_gte parameter to receive only the selected period.
*/
end_date_lte?: components["parameters"]["FilterEndDateLTE"];
/**
- * Returns objects greater or equal the specified date.
+ * @description Returns objects greater or equal the specified date.
*
- * This can be combined with updated_at_lte parameter to receive only the selected period.
+ * This can be combined with updated_at_lte parameter to receive only the selected period.
*
- * *New in version 2.6.0*
+ * *New in version 2.6.0*
*/
updated_at_gte?: components["parameters"]["FilterUpdatedAtGTE"];
/**
- * Returns objects less or equal the specified date.
+ * @description Returns objects less or equal the specified date.
*
- * This can be combined with updated_at_gte parameter to receive only the selected period.
+ * This can be combined with updated_at_gte parameter to receive only the selected period.
*
- * *New in version 2.6.0*
+ * *New in version 2.6.0*
*/
updated_at_lte?: components["parameters"]["FilterUpdatedAtLTE"];
/**
- * Returns objects greater than or equal to the specified values.
+ * @description Returns objects greater than or equal to the specified values.
*
- * This can be combined with duration_lte parameter to receive only the selected period.
+ * This can be combined with duration_lte parameter to receive only the selected period.
*/
duration_gte?: components["parameters"]["FilterDurationGTE"];
/**
- * Returns objects less than or equal to the specified values.
+ * @description Returns objects less than or equal to the specified values.
*
- * This can be combined with duration_gte parameter to receive only the selected range.
+ * This can be combined with duration_gte parameter to receive only the selected range.
*/
duration_lte?: components["parameters"]["FilterDurationLTE"];
- /** The value can be repeated to retrieve multiple matching values (OR condition). */
+ /** @description The value can be repeated to retrieve multiple matching values (OR condition). */
state?: components["parameters"]["FilterState"];
- /** The value can be repeated to retrieve multiple matching values (OR condition). */
+ /** @description The value can be repeated to retrieve multiple matching values (OR condition). */
pool?: components["parameters"]["FilterPool"];
- /** The value can be repeated to retrieve multiple matching values (OR condition). */
+ /** @description The value can be repeated to retrieve multiple matching values (OR condition). */
queue?: components["parameters"]["FilterQueue"];
- /** The value can be repeated to retrieve multiple matching values (OR condition). */
+ /** @description The value can be repeated to retrieve multiple matching values (OR condition). */
executor?: components["parameters"]["FilterExecutor"];
};
+ header?: never;
+ path: {
+ /** @description The DAG ID. */
+ dag_id: components["parameters"]["DAGID"];
+ /** @description The DAG run ID. */
+ dag_run_id: components["parameters"]["DAGRunID"];
+ };
+ cookie?: never;
};
+ /**
+ * List task instances
+ * @description This endpoint allows specifying `~` as the dag_id, dag_run_id to retrieve DAG runs for all DAGs and DAG runs.
+ */
+ get: operations["get_task_instances"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description The DAG ID. */
+ dag_id: components["parameters"]["DAGID"];
+ /** @description The DAG run ID. */
+ dag_run_id: components["parameters"]["DAGRunID"];
+ /** @description The task ID. */
+ task_id: components["parameters"]["TaskID"];
+ };
+ cookie?: never;
+ };
+ /** Get a task instance */
get: operations["get_task_instance"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
/**
- * Updates the state for single task instance.
- * *New in version 2.5.0*
+ * Updates the state of a task instance
+ * @description Updates the state for single task instance.
+ * *New in version 2.5.0*
*/
patch: operations["patch_task_instance"];
+ trace?: never;
+ };
+ "/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/{map_index}": {
parameters: {
+ query?: never;
+ header?: never;
path: {
- /** The DAG ID. */
+ /** @description The DAG ID. */
dag_id: components["parameters"]["DAGID"];
- /** The DAG run ID. */
+ /** @description The DAG run ID. */
dag_run_id: components["parameters"]["DAGRunID"];
- /** The task ID. */
+ /** @description The task ID. */
task_id: components["parameters"]["TaskID"];
+ /** @description The map index. */
+ map_index: components["parameters"]["MapIndex"];
};
+ cookie?: never;
};
- };
- "/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/{map_index}": {
/**
- * Get details of a mapped task instance.
+ * Get a mapped task instance
+ * @description Get details of a mapped task instance.
*
- * *New in version 2.3.0*
+ * *New in version 2.3.0*
*/
get: operations["get_mapped_task_instance"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
/**
- * Updates the state for single mapped task instance.
- * *New in version 2.5.0*
+ * Updates the state of a mapped task instance
+ * @description Updates the state for single mapped task instance.
+ * *New in version 2.5.0*
*/
patch: operations["patch_mapped_task_instance"];
+ trace?: never;
+ };
+ "/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/listMapped": {
parameters: {
+ query?: never;
+ header?: never;
path: {
- /** The DAG ID. */
+ /** @description The DAG ID. */
dag_id: components["parameters"]["DAGID"];
- /** The DAG run ID. */
+ /** @description The DAG run ID. */
dag_run_id: components["parameters"]["DAGRunID"];
- /** The task ID. */
+ /** @description The task ID. */
task_id: components["parameters"]["TaskID"];
- /** The map index. */
- map_index: components["parameters"]["MapIndex"];
};
+ cookie?: never;
};
- };
- "/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/listMapped": {
/**
- * Get details of all mapped task instances.
+ * List mapped task instances
+ * @description Get details of all mapped task instances.
*
- * *New in version 2.3.0*
+ * *New in version 2.3.0*
*/
get: operations["get_mapped_task_instances"];
- parameters: {
- path: {
- /** The DAG ID. */
- dag_id: components["parameters"]["DAGID"];
- /** The DAG run ID. */
- dag_run_id: components["parameters"]["DAGRunID"];
- /** The task ID. */
- task_id: components["parameters"]["TaskID"];
- };
- };
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/dags/~/dagRuns/~/taskInstances/list": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
/**
- * List task instances from all DAGs and DAG runs.
- * This endpoint is a POST to allow filtering across a large number of DAG IDs, where as a GET it would run in to maximum HTTP request URL length limits.
+ * List task instances (batch)
+ * @description List task instances from all DAGs and DAG runs.
+ * This endpoint is a POST to allow filtering across a large number of DAG IDs, where as a GET it would run in to maximum HTTP request URL length limits.
*/
post: operations["get_task_instances_batch"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/tries/{task_try_number}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
/**
- * Get details of a task instance try.
+ * get taskinstance try
+ * @description Get details of a task instance try.
*
- * *New in version 2.10.0*
+ * *New in version 2.10.0*
*/
get: operations["get_task_instance_try_details"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/tries": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
/**
- * Get details of all task instance tries.
+ * List task instance tries
+ * @description Get details of all task instance tries.
*
- * *New in version 2.10.0*
+ * *New in version 2.10.0*
*/
get: operations["get_task_instance_tries"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/{map_index}/tries": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
/**
- * Get details of all task instance tries.
+ * List mapped task instance tries
+ * @description Get details of all task instance tries.
*
- * *New in version 2.10.0*
+ * *New in version 2.10.0*
*/
get: operations["get_mapped_task_instance_tries"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/{map_index}/tries/{task_try_number}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
/**
- * Get details of a mapped task instance try.
+ * get mapped taskinstance try
+ * @description Get details of a mapped task instance try.
*
- * *New in version 2.10.0*
+ * *New in version 2.10.0*
*/
get: operations["get_mapped_task_instance_try_details"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/variables": {
- /** The collection does not contain data. To get data, you must get a single entity. */
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * List variables
+ * @description The collection does not contain data. To get data, you must get a single entity.
+ */
get: operations["get_variables"];
+ put?: never;
+ /** Create a variable */
post: operations["post_variables"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/variables/{variable_key}": {
- /** Get a variable by key. */
- get: operations["get_variable"];
- delete: operations["delete_variable"];
- /** Update a variable by key. */
- patch: operations["patch_variable"];
parameters: {
+ query?: never;
+ header?: never;
path: {
- /** The variable Key. */
+ /** @description The variable Key. */
variable_key: components["parameters"]["VariableKey"];
};
+ cookie?: never;
};
+ /**
+ * Get a variable
+ * @description Get a variable by key.
+ */
+ get: operations["get_variable"];
+ put?: never;
+ post?: never;
+ /** Delete a variable */
+ delete: operations["delete_variable"];
+ options?: never;
+ head?: never;
+ /**
+ * Update a variable
+ * @description Update a variable by key.
+ */
+ patch: operations["patch_variable"];
+ trace?: never;
};
"/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/xcomEntries": {
- /** This endpoint allows specifying `~` as the dag_id, dag_run_id, task_id to retrieve XCOM entries for for all DAGs, DAG runs and task instances. XCom values won't be returned as they can be large. Use this endpoint to get a list of XCom entries and then fetch individual entry to get value. */
- get: operations["get_xcom_entries"];
parameters: {
+ query?: never;
+ header?: never;
path: {
- /** The DAG ID. */
+ /** @description The DAG ID. */
dag_id: components["parameters"]["DAGID"];
- /** The DAG run ID. */
+ /** @description The DAG run ID. */
dag_run_id: components["parameters"]["DAGRunID"];
- /** The task ID. */
+ /** @description The task ID. */
task_id: components["parameters"]["TaskID"];
};
+ cookie?: never;
};
+ /**
+ * List XCom entries
+ * @description This endpoint allows specifying `~` as the dag_id, dag_run_id, task_id to retrieve XCOM entries for for all DAGs, DAG runs and task instances. XCom values won't be returned as they can be large. Use this endpoint to get a list of XCom entries and then fetch individual entry to get value.
+ */
+ get: operations["get_xcom_entries"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/xcomEntries/{xcom_key}": {
- get: operations["get_xcom_entry"];
parameters: {
+ query?: never;
+ header?: never;
path: {
- /** The DAG ID. */
+ /** @description The DAG ID. */
dag_id: components["parameters"]["DAGID"];
- /** The DAG run ID. */
+ /** @description The DAG run ID. */
dag_run_id: components["parameters"]["DAGRunID"];
- /** The task ID. */
+ /** @description The task ID. */
task_id: components["parameters"]["TaskID"];
- /** The XCom key. */
+ /** @description The XCom key. */
xcom_key: components["parameters"]["XComKey"];
};
+ cookie?: never;
};
+ /** Get an XCom entry */
+ get: operations["get_xcom_entry"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/links": {
- /** List extra links for task instance. */
- get: operations["get_extra_links"];
parameters: {
+ query?: {
+ /** @description Filter on map index for mapped task. */
+ map_index?: components["parameters"]["FilterMapIndex"];
+ };
+ header?: never;
path: {
- /** The DAG ID. */
+ /** @description The DAG ID. */
dag_id: components["parameters"]["DAGID"];
- /** The DAG run ID. */
+ /** @description The DAG run ID. */
dag_run_id: components["parameters"]["DAGRunID"];
- /** The task ID. */
+ /** @description The task ID. */
task_id: components["parameters"]["TaskID"];
};
- query: {
- /** Filter on map index for mapped task. */
- map_index?: components["parameters"]["FilterMapIndex"];
- };
+ cookie?: never;
};
- };
- "/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/logs/{task_try_number}": {
/**
- * Get logs for a specific task instance and its try number.
- * To get log from specific character position, following way of using
- * URLSafeSerializer can be used.
- *
- * Example:
- * ```
- * from itsdangerous.url_safe import URLSafeSerializer
- *
- * request_url = f"api/v1/dags/{DAG_ID}/dagRuns/{RUN_ID}/taskInstances/{TASK_ID}/logs/1"
- * key = app.config["SECRET_KEY"]
- * serializer = URLSafeSerializer(key)
- * token = serializer.dumps({"log_pos": 10000})
- *
- * response = self.client.get(
- * request_url,
- * query_string={"token": token},
- * headers={"Accept": "text/plain"},
- * environ_overrides={"REMOTE_USER": "test"},
- * )
- * continuation_token = response.json["continuation_token"]
- * metadata = URLSafeSerializer(key).loads(continuation_token)
- * log_pos = metadata["log_pos"]
- * end_of_log = metadata["end_of_log"]
- * ```
- * If log_pos is passed as 10000 like the above example, it renders the logs starting
- * from char position 10000 to last (not the end as the logs may be tailing behind in
- * running state). This way pagination can be done with metadata as part of the token.
+ * List extra links
+ * @description List extra links for task instance.
*/
- get: operations["get_log"];
+ get: operations["get_extra_links"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/logs/{task_try_number}": {
parameters: {
- path: {
- /** The DAG ID. */
- dag_id: components["parameters"]["DAGID"];
- /** The DAG run ID. */
- dag_run_id: components["parameters"]["DAGRunID"];
- /** The task ID. */
- task_id: components["parameters"]["TaskID"];
- /** The task try number. */
- task_try_number: components["parameters"]["TaskTryNumber"];
- };
- query: {
+ query?: {
/**
- * A full content will be returned.
- * By default, only the first fragment will be returned.
+ * @description A full content will be returned.
+ * By default, only the first fragment will be returned.
*/
full_content?: components["parameters"]["FullContent"];
- /** Filter on map index for mapped task. */
+ /** @description Filter on map index for mapped task. */
map_index?: components["parameters"]["FilterMapIndex"];
/**
- * A token that allows you to continue fetching logs.
- * If passed, it will specify the location from which the download should be continued.
+ * @description A token that allows you to continue fetching logs.
+ * If passed, it will specify the location from which the download should be continued.
*/
token?: components["parameters"]["ContinuationToken"];
};
+ header?: never;
+ path: {
+ /** @description The DAG ID. */
+ dag_id: components["parameters"]["DAGID"];
+ /** @description The DAG run ID. */
+ dag_run_id: components["parameters"]["DAGRunID"];
+ /** @description The task ID. */
+ task_id: components["parameters"]["TaskID"];
+ /** @description The task try number. */
+ task_try_number: components["parameters"]["TaskTryNumber"];
+ };
+ cookie?: never;
};
+ /**
+ * Get logs
+ * @description Get logs for a specific task instance and its try number.
+ * To get log from specific character position, following way of using
+ * URLSafeSerializer can be used.
+ *
+ * Example:
+ * ```
+ * from itsdangerous.url_safe import URLSafeSerializer
+ *
+ * request_url = f"api/v1/dags/{DAG_ID}/dagRuns/{RUN_ID}/taskInstances/{TASK_ID}/logs/1"
+ * key = app.config["SECRET_KEY"]
+ * serializer = URLSafeSerializer(key)
+ * token = serializer.dumps({"log_pos": 10000})
+ *
+ * response = self.client.get(
+ * request_url,
+ * query_string={"token": token},
+ * headers={"Accept": "text/plain"},
+ * environ_overrides={"REMOTE_USER": "test"},
+ * )
+ * continuation_token = response.json["continuation_token"]
+ * metadata = URLSafeSerializer(key).loads(continuation_token)
+ * log_pos = metadata["log_pos"]
+ * end_of_log = metadata["end_of_log"]
+ * ```
+ * If log_pos is passed as 10000 like the above example, it renders the logs starting
+ * from char position 10000 to last (not the end as the logs may be tailing behind in
+ * running state). This way pagination can be done with metadata as part of the token.
+ */
+ get: operations["get_log"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/dags/{dag_id}/details": {
- /** The response contains many DAG attributes, so the response can be large. If possible, consider using GET /dags/{dag_id}. */
- get: operations["get_dag_details"];
parameters: {
+ query?: never;
+ header?: never;
path: {
- /** The DAG ID. */
+ /** @description The DAG ID. */
dag_id: components["parameters"]["DAGID"];
};
+ cookie?: never;
};
+ /**
+ * Get a simplified representation of DAG
+ * @description The response contains many DAG attributes, so the response can be large. If possible, consider using GET /dags/{dag_id}.
+ */
+ get: operations["get_dag_details"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/dags/{dag_id}/tasks": {
- get: operations["get_tasks"];
parameters: {
- path: {
- /** The DAG ID. */
- dag_id: components["parameters"]["DAGID"];
- };
- query: {
+ query?: {
/**
- * The name of the field to order the results by.
- * Prefix a field name with `-` to reverse the sort order.
+ * @description The name of the field to order the results by.
+ * Prefix a field name with `-` to reverse the sort order.
*
- * *New in version 2.1.0*
+ * *New in version 2.1.0*
*/
order_by?: components["parameters"]["OrderBy"];
};
+ header?: never;
+ path: {
+ /** @description The DAG ID. */
+ dag_id: components["parameters"]["DAGID"];
+ };
+ cookie?: never;
};
+ /** Get tasks for DAG */
+ get: operations["get_tasks"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/dags/{dag_id}/tasks/{task_id}": {
- get: operations["get_task"];
parameters: {
+ query?: never;
+ header?: never;
path: {
- /** The DAG ID. */
+ /** @description The DAG ID. */
dag_id: components["parameters"]["DAGID"];
- /** The task ID. */
+ /** @description The task ID. */
task_id: components["parameters"]["TaskID"];
};
+ cookie?: never;
};
+ /** Get simplified representation of a task */
+ get: operations["get_task"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/dagStats": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List Dag statistics */
get: operations["get_dag_stats"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/dagSources/{file_token}": {
- /** Get a source code using file token. */
- get: operations["get_dag_source"];
parameters: {
+ query?: never;
+ header?: never;
path: {
/**
- * The key containing the encrypted path to the file. Encryption and decryption take place only on
- * the server. This prevents the client from reading an non-DAG file. This also ensures API
- * extensibility, because the format of encrypted data may change.
+ * @description The key containing the encrypted path to the file. Encryption and decryption take place only on
+ * the server. This prevents the client from reading an non-DAG file. This also ensures API
+ * extensibility, because the format of encrypted data may change.
*/
file_token: components["parameters"]["FileToken"];
};
+ cookie?: never;
};
+ /**
+ * Get a source code
+ * @description Get a source code using file token.
+ */
+ get: operations["get_dag_source"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/dagWarnings": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List dag warnings */
get: operations["get_dag_warnings"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/datasets": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List datasets */
get: operations["get_datasets"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/datasets/{uri}": {
- /** Get a dataset by uri. */
- get: operations["get_dataset"];
parameters: {
+ query?: never;
+ header?: never;
path: {
- /** The encoded Dataset URI */
+ /** @description The encoded Dataset URI */
uri: components["parameters"]["DatasetURI"];
};
+ cookie?: never;
};
+ /**
+ * Get a dataset
+ * @description Get a dataset by uri.
+ */
+ get: operations["get_dataset"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/datasets/events": {
- /** Get dataset events */
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get dataset events
+ * @description Get dataset events
+ */
get: operations["get_dataset_events"];
- /** Create dataset event */
+ put?: never;
+ /**
+ * Create dataset event
+ * @description Create dataset event
+ */
post: operations["create_dataset_event"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/config": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get current configuration */
get: operations["get_config"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/config/section/{section}/option/{option}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get a option from configuration */
get: operations["get_value"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/health": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
/**
- * Get the status of Airflow's metadatabase, triggerer and scheduler. It includes info about
- * metadatabase and last heartbeat of scheduler and triggerer.
+ * Get instance status
+ * @description Get the status of Airflow's metadatabase, triggerer and scheduler. It includes info about
+ * metadatabase and last heartbeat of scheduler and triggerer.
*/
get: operations["get_health"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/version": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get version information */
get: operations["get_version"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/plugins": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
/**
- * Get a list of loaded plugins.
+ * Get a list of loaded plugins
+ * @description Get a list of loaded plugins.
*
- * *New in version 2.1.0*
+ * *New in version 2.1.0*
*/
get: operations["get_plugins"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/roles": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
/**
- * Get a list of roles.
+ * List roles
+ * @deprecated
+ * @description Get a list of roles.
*
- * *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
+ * *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
*/
get: operations["get_roles"];
+ put?: never;
/**
- * Create a new role.
+ * Create a role
+ * @deprecated
+ * @description Create a new role.
*
- * *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
+ * *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
*/
post: operations["post_role"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/roles/{role_name}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description The role name */
+ role_name: components["parameters"]["RoleName"];
+ };
+ cookie?: never;
+ };
/**
- * Get a role.
+ * Get a role
+ * @deprecated
+ * @description Get a role.
*
- * *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
+ * *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
*/
get: operations["get_role"];
+ put?: never;
+ post?: never;
/**
- * Delete a role.
+ * Delete a role
+ * @deprecated
+ * @description Delete a role.
*
- * *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
+ * *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
*/
delete: operations["delete_role"];
+ options?: never;
+ head?: never;
/**
- * Update a role.
+ * Update a role
+ * @deprecated
+ * @description Update a role.
*
- * *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
+ * *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
*/
patch: operations["patch_role"];
- parameters: {
- path: {
- /** The role name */
- role_name: components["parameters"]["RoleName"];
- };
- };
+ trace?: never;
};
"/permissions": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
/**
- * Get a list of permissions.
+ * List permissions
+ * @deprecated
+ * @description Get a list of permissions.
*
- * *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
+ * *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
*/
get: operations["get_permissions"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/users": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
/**
- * Get a list of users.
+ * List users
+ * @deprecated
+ * @description Get a list of users.
*
- * *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
+ * *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
*/
get: operations["get_users"];
+ put?: never;
/**
- * Create a new user with unique username and email.
+ * Create a user
+ * @deprecated
+ * @description Create a new user with unique username and email.
*
- * *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
+ * *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
*/
post: operations["post_user"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
"/users/{username}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /**
+ * @description The username of the user.
+ *
+ * *New in version 2.1.0*
+ */
+ username: components["parameters"]["Username"];
+ };
+ cookie?: never;
+ };
/**
- * Get a user with a specific username.
+ * Get a user
+ * @deprecated
+ * @description Get a user with a specific username.
*
- * *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
+ * *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
*/
get: operations["get_user"];
+ put?: never;
+ post?: never;
/**
- * Delete a user with a specific username.
+ * Delete a user
+ * @deprecated
+ * @description Delete a user with a specific username.
*
- * *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
+ * *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
*/
delete: operations["delete_user"];
+ options?: never;
+ head?: never;
/**
- * Update fields for a user.
+ * Update a user
+ * @deprecated
+ * @description Update fields for a user.
*
- * *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
+ * *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
*/
patch: operations["patch_user"];
- parameters: {
- path: {
- /**
- * The username of the user.
- *
- * *New in version 2.1.0*
- */
- username: components["parameters"]["Username"];
- };
- };
+ trace?: never;
};
}
-
+export type webhooks = Record<string, never>;
export interface components {
schemas: {
/**
* @description A user object.
*
- * *New in version 2.1.0*
+ * *New in version 2.1.0*
*/
UserCollectionItem: {
/**
* @description The user's first name.
*
- * *Changed in version 2.4.0*: The requirement for this to be non-empty was removed.
+ * *Changed in version 2.4.0*: The requirement for this to be non-empty was removed.
*/
first_name?: string;
/**
* @description The user's last name.
*
- * *Changed in version 2.4.0*: The requirement for this to be non-empty was removed.
+ * *Changed in version 2.4.0*: The requirement for this to be non-empty was removed.
*/
last_name?: string;
/**
* @description The username.
*
- * *Changed in version 2.2.0*: A minimum character length requirement ('minLength') is added.
+ * *Changed in version 2.2.0*: A minimum character length requirement ('minLength') is added.
*/
username?: string;
/**
* @description The user's email.
*
- * *Changed in version 2.2.0*: A minimum character length requirement ('minLength') is added.
+ * *Changed in version 2.2.0*: A minimum character length requirement ('minLength') is added.
*/
email?: string;
/** @description Whether the user is active */
- active?: boolean | null;
+ readonly active?: boolean | null;
/**
* Format: datetime
* @description The last user login
*/
- last_login?: string | null;
+ readonly last_login?: string | null;
/** @description The login count */
- login_count?: number | null;
+ readonly login_count?: number | null;
/** @description The number of times the login failed */
- failed_login_count?: number | null;
+ readonly failed_login_count?: number | null;
/**
* @description User roles.
*
- * *Changed in version 2.2.0*: Field is no longer read-only.
+ * *Changed in version 2.2.0*: Field is no longer read-only.
*/
roles?: ({
name?: string;
@@ -953,17 +1756,17 @@ export interface components {
* Format: datetime
* @description The date user was created
*/
- created_on?: string | null;
+ readonly created_on?: string | null;
/**
* Format: datetime
* @description The date user was changed
*/
- changed_on?: string | null;
+ readonly changed_on?: string | null;
};
/**
* @description A user object with sensitive data.
*
- * *New in version 2.1.0*
+ * *New in version 2.1.0*
*/
User: components["schemas"]["UserCollectionItem"] & {
password?: string;
@@ -971,14 +1774,14 @@ export interface components {
/**
* @description Collection of users.
*
- * *New in version 2.1.0*
+ * *New in version 2.1.0*
*/
UserCollection: {
users?: components["schemas"]["UserCollectionItem"][];
} & components["schemas"]["CollectionInfo"];
/**
* @description Connection collection item.
- * The password and extra fields are only available when retrieving a single object due to the sensitivity of this data.
+ * The password and extra fields are only available when retrieving a single object due to the sensitivity of this data.
*/
ConnectionCollectionItem: {
/** @description The connection ID. */
@@ -999,7 +1802,7 @@ export interface components {
/**
* @description Collection of connections.
*
- * *Changed in version 2.1.0*: 'total_entries' field is added.
+ * *Changed in version 2.1.0*: 'total_entries' field is added.
*/
ConnectionCollection: {
connections?: components["schemas"]["ConnectionCollectionItem"][];
@@ -1017,7 +1820,7 @@ export interface components {
/**
* @description Connection test results.
*
- * *New in version 2.2.0*
+ * *New in version 2.2.0*
*/
ConnectionTest: {
/** @description The status of the request. */
@@ -1028,146 +1831,146 @@ export interface components {
/** @description DAG */
DAG: {
/** @description The ID of the DAG. */
- dag_id?: string;
+ readonly dag_id?: string;
/**
* @description Human centric display text for the DAG.
*
- * *New in version 2.9.0*
+ * *New in version 2.9.0*
*/
- dag_display_name?: string;
+ readonly dag_display_name?: string;
/** @description If the DAG is SubDAG then it is the top level DAG identifier. Otherwise, null. */
- root_dag_id?: string | null;
+ readonly root_dag_id?: string | null;
/** @description Whether the DAG is paused. */
is_paused?: boolean | null;
/**
* @description Whether the DAG is currently seen by the scheduler(s).
*
- * *New in version 2.1.1*
+ * *New in version 2.1.1*
*
- * *Changed in version 2.2.0*: Field is read-only.
+ * *Changed in version 2.2.0*: Field is read-only.
*/
- is_active?: boolean | null;
+ readonly is_active?: boolean | null;
/** @description Whether the DAG is SubDAG. */
- is_subdag?: boolean;
+ readonly is_subdag?: boolean;
/**
* Format: date-time
* @description The last time the DAG was parsed.
*
- * *New in version 2.3.0*
+ * *New in version 2.3.0*
*/
- last_parsed_time?: string | null;
+ readonly last_parsed_time?: string | null;
/**
* Format: date-time
* @description The last time the DAG was pickled.
*
- * *New in version 2.3.0*
+ * *New in version 2.3.0*
*/
- last_pickled?: string | null;
+ readonly last_pickled?: string | null;
/**
* Format: date-time
* @description Time when the DAG last received a refresh signal
- * (e.g. the DAG's "refresh" button was clicked in the web UI)
+ * (e.g. the DAG's "refresh" button was clicked in the web UI)
*
- * *New in version 2.3.0*
+ * *New in version 2.3.0*
*/
- last_expired?: string | null;
+ readonly last_expired?: string | null;
/**
* @description Whether (one of) the scheduler is scheduling this DAG at the moment
*
- * *New in version 2.3.0*
+ * *New in version 2.3.0*
*/
- scheduler_lock?: boolean | null;
+ readonly scheduler_lock?: boolean | null;
/**
* @description Foreign key to the latest pickle_id
*
- * *New in version 2.3.0*
+ * *New in version 2.3.0*
*/
- pickle_id?: string | null;
+ readonly pickle_id?: string | null;
/**
* @description Default view of the DAG inside the webserver
*
- * *New in version 2.3.0*
+ * *New in version 2.3.0*
*/
- default_view?: string | null;
+ readonly default_view?: string | null;
/** @description The absolute path to the file. */
- fileloc?: string;
+ readonly fileloc?: string;
/** @description The key containing the encrypted path to the file. Encryption and decryption take place only on the server. This prevents the client from reading an non-DAG file. This also ensures API extensibility, because the format of encrypted data may change. */
- file_token?: string;
- owners?: string[];
+ readonly file_token?: string;
+ readonly owners?: string[];
/** @description User-provided DAG description, which can consist of several sentences or paragraphs that describe DAG contents. */
- description?: string | null;
+ readonly description?: string | null;
schedule_interval?: components["schemas"]["ScheduleInterval"];
/**
* @description Timetable/Schedule Interval description.
*
- * *New in version 2.3.0*
+ * *New in version 2.3.0*
*/
- timetable_description?: string | null;
+ readonly timetable_description?: string | null;
/** @description List of tags. */
- tags?: components["schemas"]["Tag"][] | null;
+ readonly tags?: components["schemas"]["Tag"][] | null;
/**
* @description Maximum number of active tasks that can be run on the DAG
*
- * *New in version 2.3.0*
+ * *New in version 2.3.0*
*/
- max_active_tasks?: number | null;
+ readonly max_active_tasks?: number | null;
/**
* @description Maximum number of active DAG runs for the DAG
*
- * *New in version 2.3.0*
+ * *New in version 2.3.0*
*/
- max_active_runs?: number | null;
+ readonly max_active_runs?: number | null;
/**
* @description Whether the DAG has task concurrency limits
*
- * *New in version 2.3.0*
+ * *New in version 2.3.0*
*/
- has_task_concurrency_limits?: boolean | null;
+ readonly has_task_concurrency_limits?: boolean | null;
/**
* @description Whether the DAG has import errors
*
- * *New in version 2.3.0*
+ * *New in version 2.3.0*
*/
- has_import_errors?: boolean | null;
+ readonly has_import_errors?: boolean | null;
/**
* Format: date-time
* @description The logical date of the next dag run.
*
- * *New in version 2.3.0*
+ * *New in version 2.3.0*
*/
- next_dagrun?: string | null;
+ readonly next_dagrun?: string | null;
/**
* Format: date-time
* @description The start of the interval of the next dag run.
*
- * *New in version 2.3.0*
+ * *New in version 2.3.0*
*/
- next_dagrun_data_interval_start?: string | null;
+ readonly next_dagrun_data_interval_start?: string | null;
/**
* Format: date-time
* @description The end of the interval of the next dag run.
*
- * *New in version 2.3.0*
+ * *New in version 2.3.0*
*/
- next_dagrun_data_interval_end?: string | null;
+ readonly next_dagrun_data_interval_end?: string | null;
/**
* Format: date-time
* @description Earliest time at which this ``next_dagrun`` can be created.
*
- * *New in version 2.3.0*
+ * *New in version 2.3.0*
*/
- next_dagrun_create_after?: string | null;
+ readonly next_dagrun_create_after?: string | null;
/**
* @description (experimental) The maximum number of consecutive DAG failures before DAG is automatically paused.
*
- * *New in version 2.9.0*
+ * *New in version 2.9.0*
*/
- max_consecutive_failed_dag_runs?: number | null;
+ readonly max_consecutive_failed_dag_runs?: number | null;
};
/**
* @description Collection of DAGs.
*
- * *Changed in version 2.1.0*: 'total_entries' field is added.
+ * *Changed in version 2.1.0*: 'total_entries' field is added.
*/
DAGCollection: {
dags?: components["schemas"]["DAG"][];
@@ -1176,51 +1979,51 @@ export interface components {
/**
* @description Run ID.
*
- * The value of this field can be set only when creating the object. If you try to modify the
- * field of an existing object, the request fails with an BAD_REQUEST error.
+ * The value of this field can be set only when creating the object. If you try to modify the
+ * field of an existing object, the request fails with an BAD_REQUEST error.
*
- * If not provided, a value will be generated based on execution_date.
+ * If not provided, a value will be generated based on execution_date.
*
- * If the specified dag_run_id is in use, the creation request fails with an ALREADY_EXISTS error.
+ * If the specified dag_run_id is in use, the creation request fails with an ALREADY_EXISTS error.
*
- * This together with DAG_ID are a unique key.
+ * This together with DAG_ID are a unique key.
*/
dag_run_id?: string | null;
- dag_id?: string;
+ readonly dag_id?: string;
/**
* Format: date-time
* @description The logical date (previously called execution date). This is the time or interval covered by
- * this DAG run, according to the DAG definition.
+ * this DAG run, according to the DAG definition.
*
- * The value of this field can be set only when creating the object. If you try to modify the
- * field of an existing object, the request fails with an BAD_REQUEST error.
+ * The value of this field can be set only when creating the object. If you try to modify the
+ * field of an existing object, the request fails with an BAD_REQUEST error.
*
- * This together with DAG_ID are a unique key.
+ * This together with DAG_ID are a unique key.
*
- * *New in version 2.2.0*
+ * *New in version 2.2.0*
*/
logical_date?: string | null;
/**
* Format: date-time
* @deprecated
* @description The execution date. This is the same as logical_date, kept for backwards compatibility.
- * If both this field and logical_date are provided but with different values, the request
- * will fail with an BAD_REQUEST error.
+ * If both this field and logical_date are provided but with different values, the request
+ * will fail with an BAD_REQUEST error.
*
- * *Changed in version 2.2.0*: Field becomes nullable.
+ * *Changed in version 2.2.0*: Field becomes nullable.
*
- * *Deprecated since version 2.2.0*: Use 'logical_date' instead.
+ * *Deprecated since version 2.2.0*: Use 'logical_date' instead.
*/
execution_date?: string | null;
/**
* Format: date-time
* @description The start time. The time when DAG run was actually created.
*
- * *Changed in version 2.1.3*: Field becomes nullable.
+ * *Changed in version 2.1.3*: Field becomes nullable.
*/
- start_date?: string | null;
+ readonly start_date?: string | null;
/** Format: date-time */
- end_date?: string | null;
+ readonly end_date?: string | null;
/**
* Format: date-time
* @description The beginning of the interval the DAG run covers.
@@ -1232,29 +2035,33 @@ export interface components {
*/
data_interval_end?: string | null;
/** Format: date-time */
- last_scheduling_decision?: string | null;
+ readonly last_scheduling_decision?: string | null;
/** @enum {string} */
- run_type?: "backfill" | "manual" | "scheduled" | "dataset_triggered";
+ readonly run_type?:
+ | "backfill"
+ | "manual"
+ | "scheduled"
+ | "dataset_triggered";
state?: components["schemas"]["DagState"];
- external_trigger?: boolean;
+ readonly external_trigger?: boolean;
/**
* @description JSON object describing additional configuration parameters.
*
- * The value of this field can be set only when creating the object. If you try to modify the
- * field of an existing object, the request fails with an BAD_REQUEST error.
+ * The value of this field can be set only when creating the object. If you try to modify the
+ * field of an existing object, the request fails with an BAD_REQUEST error.
*/
- conf?: { [key: string]: unknown };
+ conf?: Record<string, never>;
/**
* @description Contains manually entered notes by the user about the DagRun.
*
- * *New in version 2.5.0*
+ * *New in version 2.5.0*
*/
note?: string | null;
};
/**
* @description Modify the state of a DAG run.
*
- * *New in version 2.2.0*
+ * *New in version 2.2.0*
*/
UpdateDagRunState: {
/**
@@ -1266,7 +2073,7 @@ export interface components {
/**
* @description Collection of DAG runs.
*
- * *Changed in version 2.1.0*: 'total_entries' field is added.
+ * *Changed in version 2.1.0*: 'total_entries' field is added.
*/
DAGRunCollection: {
dag_runs?: components["schemas"]["DAGRun"][];
@@ -1290,16 +2097,16 @@ export interface components {
};
DagWarning: {
/** @description The dag_id. */
- dag_id?: string;
+ readonly dag_id?: string;
/** @description The warning type for the dag warning. */
- warning_type?: string;
+ readonly warning_type?: string;
/** @description The message for the dag warning. */
- message?: string;
+ readonly message?: string;
/**
* Format: datetime
* @description The time when this warning was logged.
*/
- timestamp?: string;
+ readonly timestamp?: string;
};
/** @description Collection of DAG warnings. */
DagWarningCollection: {
@@ -1312,60 +2119,60 @@ export interface components {
/** @description Log of user operations via CLI or Web UI. */
EventLog: {
/** @description The event log ID */
- event_log_id?: number;
+ readonly event_log_id?: number;
/**
* Format: date-time
* @description The time when these events happened.
*/
- when?: string;
+ readonly when?: string;
/** @description The DAG ID */
- dag_id?: string | null;
+ readonly dag_id?: string | null;
/** @description The Task ID */
- task_id?: string | null;
+ readonly task_id?: string | null;
/** @description The DAG Run ID */
- run_id?: string | null;
+ readonly run_id?: string | null;
/** @description The Map Index */
- map_index?: number | null;
+ readonly map_index?: number | null;
/** @description The Try Number */
- try_number?: number | null;
+ readonly try_number?: number | null;
/** @description A key describing the type of event. */
- event?: string;
+ readonly event?: string;
/**
* Format: date-time
* @description When the event was dispatched for an object having execution_date, the value of this field.
*/
- execution_date?: string | null;
+ readonly execution_date?: string | null;
/** @description Name of the user who triggered these events a. */
- owner?: string | null;
+ readonly owner?: string | null;
/** @description Other information that was not included in the other fields, e.g. the complete CLI command. */
- extra?: string | null;
+ readonly extra?: string | null;
};
/**
* @description Collection of event logs.
*
- * *Changed in version 2.1.0*: 'total_entries' field is added.
- * *Changed in version 2.10.0*: 'try_number' and 'map_index' fields are added.
+ * *Changed in version 2.1.0*: 'total_entries' field is added.
+ * *Changed in version 2.10.0*: 'try_number' and 'map_index' fields are added.
*/
EventLogCollection: {
event_logs?: components["schemas"]["EventLog"][];
} & components["schemas"]["CollectionInfo"];
ImportError: {
/** @description The import error ID. */
- import_error_id?: number;
+ readonly import_error_id?: number;
/**
* Format: datetime
* @description The time when this error was created.
*/
- timestamp?: string;
+ readonly timestamp?: string;
/** @description The filename */
- filename?: string;
+ readonly filename?: string;
/** @description The full stackstrace. */
- stack_trace?: string;
+ readonly stack_trace?: string;
};
/**
* @description Collection of import errors.
*
- * *Changed in version 2.1.0*: 'total_entries' field is added.
+ * *Changed in version 2.1.0*: 'total_entries' field is added.
*/
ImportErrorCollection: {
import_errors?: components["schemas"]["ImportError"][];
@@ -1388,12 +2195,12 @@ export interface components {
* Format: datetime
* @description The time the scheduler last did a heartbeat.
*/
- latest_scheduler_heartbeat?: string | null;
+ readonly latest_scheduler_heartbeat?: string | null;
};
/**
* @description The status and the latest triggerer heartbeat.
*
- * *New in version 2.6.2*
+ * *New in version 2.6.2*
*/
TriggererStatus: {
status?: components["schemas"]["HealthStatus"];
@@ -1401,12 +2208,12 @@ export interface components {
* Format: datetime
* @description The time the triggerer last did a heartbeat.
*/
- latest_triggerer_heartbeat?: string | null;
+ readonly latest_triggerer_heartbeat?: string | null;
};
/**
* @description The status and the latest dag processor heartbeat.
*
- * *New in version 2.6.3*
+ * *New in version 2.6.3*
*/
DagProcessorStatus: {
status?: components["schemas"]["HealthStatus"];
@@ -1414,7 +2221,7 @@ export interface components {
* Format: datetime
* @description The time the dag processor last did a heartbeat.
*/
- latest_dag_processor_heartbeat?: string | null;
+ readonly latest_dag_processor_heartbeat?: string | null;
};
/** @description The pool */
Pool: {
@@ -1423,38 +2230,38 @@ export interface components {
/** @description The maximum number of slots that can be assigned to tasks. One job may occupy one or more slots. */
slots?: number;
/** @description The number of slots used by running/queued tasks at the moment. May include deferred tasks if 'include_deferred' is set to true. */
- occupied_slots?: number;
+ readonly occupied_slots?: number;
/** @description The number of slots used by running tasks at the moment. */
- running_slots?: number;
+ readonly running_slots?: number;
/** @description The number of slots used by queued tasks at the moment. */
- queued_slots?: number;
+ readonly queued_slots?: number;
/** @description The number of free slots at the moment. */
- open_slots?: number;
+ readonly open_slots?: number;
/** @description The number of slots used by scheduled tasks at the moment. */
- scheduled_slots?: number;
+ readonly scheduled_slots?: number;
/**
* @description The number of slots used by deferred tasks at the moment. Relevant if 'include_deferred' is set to true.
*
- * *New in version 2.7.0*
+ * *New in version 2.7.0*
*/
- deferred_slots?: number;
+ readonly deferred_slots?: number;
/**
* @description The description of the pool.
*
- * *New in version 2.3.0*
+ * *New in version 2.3.0*
*/
description?: string | null;
/**
* @description If set to true, deferred tasks are considered when calculating open pool slots.
*
- * *New in version 2.7.0*
+ * *New in version 2.7.0*
*/
include_deferred?: boolean;
};
/**
* @description Collection of pools.
*
- * *Changed in version 2.1.0*: 'total_entries' field is added.
+ * *Changed in version 2.1.0*: 'total_entries' field is added.
*/
PoolCollection: {
pools?: components["schemas"]["Pool"][];
@@ -1462,7 +2269,7 @@ export interface components {
/**
* @description The provider
*
- * *New in version 2.1.0*
+ * *New in version 2.1.0*
*/
Provider: {
/** @description The package name of the provider. */
@@ -1475,14 +2282,14 @@ export interface components {
/**
* @description Collection of providers.
*
- * *New in version 2.1.0*
+ * *New in version 2.1.0*
*/
ProviderCollection: {
providers?: components["schemas"]["Provider"][];
};
SLAMiss: {
/** @description The task ID. */
- task_id?: string;
+ readonly task_id?: string;
/** @description The DAG ID. */
dag_id?: string;
/** Format: datetime */
@@ -1528,14 +2335,14 @@ export interface components {
/**
* @description Human centric display text for the task.
*
- * *New in version 2.9.0*
+ * *New in version 2.9.0*
*/
task_display_name?: string;
dag_id?: string;
/**
* @description The DagRun ID for this task instance
*
- * *New in version 2.3.0*
+ * *New in version 2.3.0*
*/
dag_run_id?: string;
/** Format: datetime */
@@ -1563,7 +2370,7 @@ export interface components {
/**
* @description Executor the task is configured to run on or None (which indicates the default executor)
*
- * *New in version 2.10.0*
+ * *New in version 2.10.0*
*/
executor?: string | null;
executor_config?: string;
@@ -1571,28 +2378,28 @@ export interface components {
/**
* @description Rendered name of an expanded task instance, if the task is mapped.
*
- * *New in version 2.9.0*
+ * *New in version 2.9.0*
*/
rendered_map_index?: string | null;
/**
* @description JSON object describing rendered fields.
*
- * *New in version 2.3.0*
+ * *New in version 2.3.0*
*/
- rendered_fields?: { [key: string]: unknown };
+ rendered_fields?: Record<string, never>;
trigger?: components["schemas"]["Trigger"];
triggerer_job?: components["schemas"]["Job"];
/**
* @description Contains manually entered notes by the user about the TaskInstance.
*
- * *New in version 2.5.0*
+ * *New in version 2.5.0*
*/
note?: string | null;
};
/**
* @description Collection of task instances.
*
- * *Changed in version 2.1.0*: 'total_entries' field is added.
+ * *Changed in version 2.1.0*: 'total_entries' field is added.
*/
TaskInstanceCollection: {
task_instances?: components["schemas"]["TaskInstance"][];
@@ -1602,14 +2409,14 @@ export interface components {
/**
* @description Human centric display text for the task.
*
- * *New in version 2.9.0*
+ * *New in version 2.9.0*
*/
task_display_name?: string;
dag_id?: string;
/**
* @description The DagRun ID for this task instance
*
- * *New in version 2.3.0*
+ * *New in version 2.3.0*
*/
dag_run_id?: string;
/** Format: datetime */
@@ -1635,7 +2442,7 @@ export interface components {
/**
* @description Executor the task is configured to run on or None (which indicates the default executor)
*
- * *New in version 2.10.0*
+ * *New in version 2.10.0*
*/
executor?: string | null;
executor_config?: string;
@@ -1643,41 +2450,41 @@ export interface components {
/**
* @description Collection of task instances .
*
- * *Changed in version 2.1.0*: 'total_entries' field is added.
+ * *Changed in version 2.1.0*: 'total_entries' field is added.
*/
TaskInstanceHistoryCollection: {
task_instances_history?: components["schemas"]["TaskInstanceHistory"][];
} & components["schemas"]["CollectionInfo"];
TaskInstanceReference: {
/** @description The task ID. */
- task_id?: string;
+ readonly task_id?: string;
/** @description The DAG ID. */
- dag_id?: string;
+ readonly dag_id?: string;
/** Format: datetime */
- execution_date?: string;
+ readonly execution_date?: string;
/** @description The DAG run ID. */
- dag_run_id?: string;
+ readonly dag_run_id?: string;
};
TaskInstanceReferenceCollection: {
task_instances?: components["schemas"]["TaskInstanceReference"][];
};
/**
* @description XCom entry collection item.
- * The value field are only available when retrieving a single object due to the sensitivity of this data.
+ * The value field are only available when retrieving a single object due to the sensitivity of this data.
*/
VariableCollectionItem: {
key?: string;
/**
* @description The description of the variable.
*
- * *New in version 2.4.0*
+ * *New in version 2.4.0*
*/
description?: string | null;
};
/**
* @description Collection of variables.
*
- * *Changed in version 2.1.0*: 'total_entries' field is added.
+ * *Changed in version 2.1.0*: 'total_entries' field is added.
*/
VariableCollection: {
variables?: components["schemas"]["VariableCollectionItem"][];
@@ -1689,7 +2496,7 @@ export interface components {
/**
* @description XCom entry collection item.
*
- * The value field is only available when reading a single object due to the size of the value.
+ * The value field is only available when reading a single object due to the size of the value.
*/
XComCollectionItem: {
key?: string;
@@ -1704,7 +2511,7 @@ export interface components {
/**
* @description Collection of XCom entries.
*
- * *Changed in version 2.1.0*: 'total_entries' field is added.
+ * *Changed in version 2.1.0*: 'total_entries' field is added.
*/
XComCollection: {
xcom_entries?: components["schemas"]["XComCollectionItem"][];
@@ -1712,80 +2519,80 @@ export interface components {
/** @description Full representations of XCom entry. */
XCom: components["schemas"]["XComCollectionItem"] & {
/** @description The value(s), */
- value?: Partial<string> &
- Partial<number> &
- Partial<number> &
- Partial<boolean> &
- Partial<unknown[]> &
- Partial<{ [key: string]: unknown } | null>;
+ value?:
+ | string
+ | number
+ | boolean
+ | unknown[]
+ | (Record<string, never> | null);
};
/**
* @description DAG details.
*
- * For details see:
- * [airflow.models.dag.DAG](https://airflow.apache.org/docs/apache-airflow/stable/_api/airflow/models/dag/index.html#airflow.models.dag.DAG)
+ * For details see:
+ * [airflow.models.dag.DAG](https://airflow.apache.org/docs/apache-airflow/stable/_api/airflow/models/dag/index.html#airflow.models.dag.DAG)
*/
DAGDetail: components["schemas"]["DAG"] & {
- timezone?: components["schemas"]["Timezone"] | null;
- catchup?: boolean | null;
- orientation?: string | null;
- concurrency?: number | null;
+ timezone?: components["schemas"]["Timezone"];
+ readonly catchup?: boolean | null;
+ readonly orientation?: string | null;
+ readonly concurrency?: number | null;
/**
* Format: date-time
* @description The DAG's start date.
*
- * *Changed in version 2.0.1*: Field becomes nullable.
+ * *Changed in version 2.0.1*: Field becomes nullable.
*/
- start_date?: string | null;
- dag_run_timeout?: components["schemas"]["TimeDelta"] | null;
+ readonly start_date?: string | null;
+ dag_run_timeout?: components["schemas"]["TimeDelta"];
/** @description Nested dataset any/all conditions */
- dataset_expression?: { [key: string]: unknown } | null;
- doc_md?: string | null;
- default_view?: string | null;
+ dataset_expression?: Record<string, never> | null;
+ readonly doc_md?: string | null;
+ readonly default_view?: string | null;
/**
* @description User-specified DAG params.
*
- * *New in version 2.0.1*
+ * *New in version 2.0.1*
*/
- params?: { [key: string]: unknown };
+ readonly params?: Record<string, never>;
/**
* Format: date-time
* @description The DAG's end date.
*
- * *New in version 2.3.0*.
+ * *New in version 2.3.0*.
*/
- end_date?: string | null;
+ readonly end_date?: string | null;
/**
* @description Whether the DAG is paused upon creation.
*
- * *New in version 2.3.0*
+ * *New in version 2.3.0*
*/
- is_paused_upon_creation?: boolean | null;
+ readonly is_paused_upon_creation?: boolean | null;
/**
* Format: date-time
* @description The last time the DAG was parsed.
*
- * *New in version 2.3.0*
+ * *New in version 2.3.0*
*/
- last_parsed?: string | null;
+ readonly last_parsed?: string | null;
/**
* @description The template search path.
*
- * *New in version 2.3.0*
+ * *New in version 2.3.0*
*/
template_search_path?: string[] | null;
/**
* @description Whether to render templates as native Python objects.
*
- * *New in version 2.3.0*
+ * *New in version 2.3.0*
*/
- render_template_as_native_obj?: boolean | null;
+ readonly render_template_as_native_obj?: boolean | null;
};
/** @description Additional links containing additional information about the task. */
ExtraLink: {
class_ref?: components["schemas"]["ClassReference"];
- name?: string;
- href?: string;
+ readonly name?: string;
+ readonly href?: string;
};
/** @description The collection of extra links. */
ExtraLinkCollection: {
@@ -1793,45 +2600,45 @@ export interface components {
};
/**
* @description For details see:
- * [airflow.models.baseoperator.BaseOperator](https://airflow.apache.org/docs/apache-airflow/stable/_api/airflow/models/baseoperator/index.html#airflow.models.baseoperator.BaseOperator)
+ * [airflow.models.baseoperator.BaseOperator](https://airflow.apache.org/docs/apache-airflow/stable/_api/airflow/models/baseoperator/index.html#airflow.models.baseoperator.BaseOperator)
*/
Task: {
class_ref?: components["schemas"]["ClassReference"];
- task_id?: string;
- task_display_name?: string;
- owner?: string;
+ readonly task_id?: string;
+ readonly task_display_name?: string;
+ readonly owner?: string;
/** Format: date-time */
- start_date?: string | null;
+ readonly start_date?: string | null;
/** Format: date-time */
- end_date?: string | null;
+ readonly end_date?: string | null;
trigger_rule?: components["schemas"]["TriggerRule"];
- extra_links?: {
+ readonly extra_links?: {
class_ref?: components["schemas"]["ClassReference"];
}[];
- depends_on_past?: boolean;
- is_mapped?: boolean;
- wait_for_downstream?: boolean;
- retries?: number;
- queue?: string | null;
- executor?: string | null;
- pool?: string;
- pool_slots?: number;
+ readonly depends_on_past?: boolean;
+ readonly is_mapped?: boolean;
+ readonly wait_for_downstream?: boolean;
+ readonly retries?: number;
+ readonly queue?: string | null;
+ readonly executor?: string | null;
+ readonly pool?: string;
+ readonly pool_slots?: number;
execution_timeout?: components["schemas"]["TimeDelta"];
retry_delay?: components["schemas"]["TimeDelta"];
- retry_exponential_backoff?: boolean;
- priority_weight?: number;
+ readonly retry_exponential_backoff?: boolean;
+ readonly priority_weight?: number;
weight_rule?: components["schemas"]["WeightRule"];
ui_color?: components["schemas"]["Color"];
ui_fgcolor?: components["schemas"]["Color"];
- template_fields?: string[];
+ readonly template_fields?: string[];
sub_dag?: components["schemas"]["DAG"];
- downstream_task_ids?: string[];
+ readonly downstream_task_ids?: string[];
/**
* @description Task documentation in markdown.
*
- * *New in version 2.10.0*
+ * *New in version 2.10.0*
*/
- doc_md?: string | null;
+ readonly doc_md?: string | null;
};
/** @description Collection of tasks. */
TaskCollection: {
@@ -1840,7 +2647,7 @@ export interface components {
/**
* @description A plugin Item.
*
- * *New in version 2.1.0*
+ * *New in version 2.1.0*
*/
PluginCollectionItem: {
/** @description The name of the plugin */
@@ -1854,9 +2661,9 @@ export interface components {
/** @description The flask blueprints */
flask_blueprints?: (string | null)[];
/** @description The appuilder views */
- appbuilder_views?: ({ [key: string]: unknown } | null)[];
+ appbuilder_views?: (Record<string, never> | null)[];
/** @description The Flask Appbuilder menu items */
- appbuilder_menu_items?: ({ [key: string]: unknown } | null)[];
+ appbuilder_menu_items?: (Record<string, never> | null)[];
/** @description The global operator extra links */
global_operator_extra_links?: (string | null)[];
/** @description Operator extra links */
@@ -1873,7 +2680,7 @@ export interface components {
/**
* @description A collection of plugin.
*
- * *New in version 2.1.0*
+ * *New in version 2.1.0*
*/
PluginCollection: {
plugins?: components["schemas"]["PluginCollectionItem"][];
@@ -1881,13 +2688,13 @@ export interface components {
/**
* @description a role item.
*
- * *New in version 2.1.0*
+ * *New in version 2.1.0*
*/
Role: {
/**
* @description The name of the role
*
- * *Changed in version 2.3.0*: A minimum character length requirement ('minLength') is added.
+ * *Changed in version 2.3.0*: A minimum character length requirement ('minLength') is added.
*/
name?: string;
actions?: components["schemas"]["ActionResource"][];
@@ -1895,7 +2702,7 @@ export interface components {
/**
* @description A collection of roles.
*
- * *New in version 2.1.0*
+ * *New in version 2.1.0*
*/
RoleCollection: {
roles?: components["schemas"]["Role"][];
@@ -1903,7 +2710,7 @@ export interface components {
/**
* @description An action Item.
*
- * *New in version 2.1.0*
+ * *New in version 2.1.0*
*/
Action: {
/** @description The name of the permission "action" */
@@ -1912,7 +2719,7 @@ export interface components {
/**
* @description A collection of actions.
*
- * *New in version 2.1.0*
+ * *New in version 2.1.0*
*/
ActionCollection: {
actions?: components["schemas"]["Action"][];
@@ -1920,7 +2727,7 @@ export interface components {
/**
* @description A resource on which permissions are granted.
*
- * *New in version 2.1.0*
+ * *New in version 2.1.0*
*/
Resource: {
/** @description The name of the resource */
@@ -1929,7 +2736,7 @@ export interface components {
/**
* @description The Action-Resource item.
*
- * *New in version 2.1.0*
+ * *New in version 2.1.0*
*/
ActionResource: {
/** @description The permission action */
@@ -1940,7 +2747,7 @@ export interface components {
/**
* @description A dataset item.
*
- * *New in version 2.4.0*
+ * *New in version 2.4.0*
*/
Dataset: {
/** @description The dataset id */
@@ -1948,7 +2755,7 @@ export interface components {
/** @description The dataset uri */
uri?: string;
/** @description The dataset extra */
- extra?: { [key: string]: unknown } | null;
+ extra?: Record<string, never> | null;
/** @description The dataset creation time */
created_at?: string;
/** @description The dataset update time */
@@ -1959,7 +2766,7 @@ export interface components {
/**
* @description A datasets reference to an upstream task.
*
- * *New in version 2.4.0*
+ * *New in version 2.4.0*
*/
TaskOutletDatasetReference: {
/** @description The DAG ID that updates the dataset. */
@@ -1974,7 +2781,7 @@ export interface components {
/**
* @description A datasets reference to a downstream DAG.
*
- * *New in version 2.4.0*
+ * *New in version 2.4.0*
*/
DagScheduleDatasetReference: {
/** @description The DAG ID that depends on the dataset. */
@@ -1987,7 +2794,7 @@ export interface components {
/**
* @description A collection of datasets.
*
- * *New in version 2.4.0*
+ * *New in version 2.4.0*
*/
DatasetCollection: {
datasets?: components["schemas"]["Dataset"][];
@@ -1995,7 +2802,7 @@ export interface components {
/**
* @description A dataset event.
*
- * *New in version 2.4.0*
+ * *New in version 2.4.0*
*/
DatasetEvent: {
/** @description The dataset id */
@@ -2003,7 +2810,7 @@ export interface components {
/** @description The URI of the dataset */
dataset_uri?: string;
/** @description The dataset event extra */
- extra?: { [key: string]: unknown } | null;
+ extra?: Record<string, never> | null;
/** @description The DAG ID that updated the dataset. */
source_dag_id?: string | null;
/** @description The task ID that updated the dataset. */
@@ -2020,7 +2827,7 @@ export interface components {
/** @description The URI of the dataset */
dataset_uri: string;
/** @description The dataset event extra */
- extra?: { [key: string]: unknown } | null;
+ extra?: Record<string, never> | null;
};
QueuedEvent: {
/** @description The datata uri. */
@@ -2036,7 +2843,7 @@ export interface components {
/**
* @description A collection of Dataset Dag Run Queues.
*
- * *New in version 2.9.0*
+ * *New in version 2.9.0*
*/
QueuedEventCollection: {
datasets?: components["schemas"]["QueuedEvent"][];
@@ -2044,51 +2851,51 @@ export interface components {
BasicDAGRun: {
/** @description Run ID. */
run_id?: string;
- dag_id?: string;
+ readonly dag_id?: string;
/**
* Format: date-time
* @description The logical date (previously called execution date). This is the time or interval covered by
- * this DAG run, according to the DAG definition.
+ * this DAG run, according to the DAG definition.
*
- * The value of this field can be set only when creating the object. If you try to modify the
- * field of an existing object, the request fails with an BAD_REQUEST error.
+ * The value of this field can be set only when creating the object. If you try to modify the
+ * field of an existing object, the request fails with an BAD_REQUEST error.
*
- * This together with DAG_ID are a unique key.
+ * This together with DAG_ID are a unique key.
*
- * *New in version 2.2.0*
+ * *New in version 2.2.0*
*/
logical_date?: string;
/**
* Format: date-time
* @description The start time. The time when DAG run was actually created.
*
- * *Changed in version 2.1.3*: Field becomes nullable.
+ * *Changed in version 2.1.3*: Field becomes nullable.
*/
- start_date?: string | null;
+ readonly start_date?: string | null;
/** Format: date-time */
- end_date?: string | null;
+ readonly end_date?: string | null;
/** Format: date-time */
- data_interval_start?: string | null;
+ readonly data_interval_start?: string | null;
/** Format: date-time */
- data_interval_end?: string | null;
+ readonly data_interval_end?: string | null;
state?: components["schemas"]["DagState"];
};
/**
* @description A collection of dataset events.
*
- * *New in version 2.4.0*
+ * *New in version 2.4.0*
*/
DatasetEventCollection: {
dataset_events?: components["schemas"]["DatasetEvent"][];
} & components["schemas"]["CollectionInfo"];
/** @description The option of configuration. */
ConfigOption: {
- key?: string;
- value?: string;
+ readonly key?: string;
+ readonly value?: string;
};
/** @description The section of configuration. */
ConfigSection: {
- name?: string;
+ readonly name?: string;
options?: components["schemas"]["ConfigOption"][];
};
/** @description The configuration. */
@@ -2105,24 +2912,22 @@ export interface components {
ClearDagRun: {
/**
* @description If set, don't actually run this operation. The response will contain a list of task instances
- * planned to be cleaned, but not modified in any way.
- *
+ * planned to be cleaned, but not modified in any way.
* @default true
*/
- dry_run?: boolean;
+ dry_run: boolean;
};
ClearTaskInstances: {
/**
* @description If set, don't actually run this operation. The response will contain a list of task instances
- * planned to be cleaned, but not modified in any way.
- *
+ * planned to be cleaned, but not modified in any way.
* @default true
*/
- dry_run?: boolean;
+ dry_run: boolean;
/**
* @description A list of task ids to clear.
*
- * *New in version 2.1.0*
+ * *New in version 2.1.0*
*/
task_ids?: string[];
/**
@@ -2139,12 +2944,12 @@ export interface components {
* @description Only clear failed tasks.
* @default true
*/
- only_failed?: boolean;
+ only_failed: boolean;
/**
* @description Only clear running tasks.
* @default false
*/
- only_running?: boolean;
+ only_running: boolean;
/** @description Clear tasks in subdags and clear external tasks indicated by ExternalTaskMarker. */
include_subdags?: boolean;
/** @description Clear tasks in the parent dag of the subdag. */
@@ -2157,31 +2962,30 @@ export interface components {
* @description If set to true, upstream tasks are also affected.
* @default false
*/
- include_upstream?: boolean;
+ include_upstream: boolean;
/**
* @description If set to true, downstream tasks are also affected.
* @default false
*/
- include_downstream?: boolean;
+ include_downstream: boolean;
/**
* @description If set to True, also tasks from future DAG Runs are affected.
* @default false
*/
- include_future?: boolean;
+ include_future: boolean;
/**
* @description If set to True, also tasks from past DAG Runs are affected.
* @default false
*/
- include_past?: boolean;
+ include_past: boolean;
};
UpdateTaskInstancesState: {
/**
* @description If set, don't actually run this operation. The response will contain a list of task instances
- * planned to be affected, but won't be modified in any way.
- *
+ * planned to be affected, but won't be modified in any way.
* @default true
*/
- dry_run?: boolean;
+ dry_run: boolean;
/** @description The task ID. */
task_id?: string;
/**
@@ -2192,7 +2996,7 @@ export interface components {
/**
* @description The task instance's DAG run ID. Either set this or execution_date but not both.
*
- * *New in version 2.3.0*
+ * *New in version 2.3.0*
*/
dag_run_id?: string;
/** @description If set to true, upstream tasks are also affected. */
@@ -2208,11 +3012,10 @@ export interface components {
UpdateTaskInstance: {
/**
* @description If set, don't actually run this operation. The response will contain the task instance
- * planned to be affected, but won't be modified in any way.
- *
+ * planned to be affected, but won't be modified in any way.
* @default true
*/
- dry_run?: boolean;
+ dry_run: boolean;
new_state?: components["schemas"]["UpdateTaskState"];
};
SetTaskInstanceNote: {
@@ -2222,9 +3025,9 @@ export interface components {
ListDagRunsForm: {
/**
* @description The name of the field to order the results by. Prefix a field name
- * with `-` to reverse the sort order.
+ * with `-` to reverse the sort order.
*
- * *New in version 2.1.0*
+ * *New in version 2.1.0*
*/
order_by?: string;
/** @description The number of items to skip before starting to collect the result set. */
@@ -2233,57 +3036,57 @@ export interface components {
* @description The numbers of items to return.
* @default 100
*/
- page_limit?: number;
+ page_limit: number;
/**
* @description Return objects with specific DAG IDs.
- * The value can be repeated to retrieve multiple matching values (OR condition).
+ * The value can be repeated to retrieve multiple matching values (OR condition).
*/
dag_ids?: string[];
/**
* @description Return objects with specific states.
- * The value can be repeated to retrieve multiple matching values (OR condition).
+ * The value can be repeated to retrieve multiple matching values (OR condition).
*/
states?: string[];
/**
* Format: date-time
* @description Returns objects greater or equal to the specified date.
*
- * This can be combined with execution_date_lte key to receive only the selected period.
+ * This can be combined with execution_date_lte key to receive only the selected period.
*/
execution_date_gte?: string;
/**
* Format: date-time
* @description Returns objects less than or equal to the specified date.
*
- * This can be combined with execution_date_gte key to receive only the selected period.
+ * This can be combined with execution_date_gte key to receive only the selected period.
*/
execution_date_lte?: string;
/**
* Format: date-time
* @description Returns objects greater or equal the specified date.
*
- * This can be combined with start_date_lte key to receive only the selected period.
+ * This can be combined with start_date_lte key to receive only the selected period.
*/
start_date_gte?: string;
/**
* Format: date-time
* @description Returns objects less or equal the specified date.
*
- * This can be combined with start_date_gte parameter to receive only the selected period
+ * This can be combined with start_date_gte parameter to receive only the selected period
*/
start_date_lte?: string;
/**
* Format: date-time
* @description Returns objects greater or equal the specified date.
*
- * This can be combined with end_date_lte parameter to receive only the selected period.
+ * This can be combined with end_date_lte parameter to receive only the selected period.
*/
end_date_gte?: string;
/**
* Format: date-time
* @description Returns objects less than or equal to the specified date.
*
- * This can be combined with end_date_gte parameter to receive only the selected period.
+ * This can be combined with end_date_gte parameter to receive only the selected period.
*/
end_date_lte?: string;
};
@@ -2294,76 +3097,76 @@ export interface components {
* @description The numbers of items to return.
* @default 100
*/
- page_limit?: number;
+ page_limit: number;
/**
* @description Return objects with specific DAG IDs.
- * The value can be repeated to retrieve multiple matching values (OR condition).
+ * The value can be repeated to retrieve multiple matching values (OR condition).
*/
dag_ids?: string[];
/**
* @description Return objects with specific DAG Run IDs.
- * The value can be repeated to retrieve multiple matching values (OR condition).
- * *New in version 2.7.1*
+ * The value can be repeated to retrieve multiple matching values (OR condition).
+ * *New in version 2.7.1*
*/
dag_run_ids?: string[];
/**
* @description Return objects with specific task IDs.
- * The value can be repeated to retrieve multiple matching values (OR condition).
- * *New in version 2.7.1*
+ * The value can be repeated to retrieve multiple matching values (OR condition).
+ * *New in version 2.7.1*
*/
task_ids?: string[];
/**
* Format: date-time
* @description Returns objects greater or equal to the specified date.
*
- * This can be combined with execution_date_lte parameter to receive only the selected period.
+ * This can be combined with execution_date_lte parameter to receive only the selected period.
*/
execution_date_gte?: string;
/**
* Format: date-time
* @description Returns objects less than or equal to the specified date.
*
- * This can be combined with execution_date_gte parameter to receive only the selected period.
+ * This can be combined with execution_date_gte parameter to receive only the selected period.
*/
execution_date_lte?: string;
/**
* Format: date-time
* @description Returns objects greater or equal the specified date.
*
- * This can be combined with start_date_lte parameter to receive only the selected period.
+ * This can be combined with start_date_lte parameter to receive only the selected period.
*/
start_date_gte?: string;
/**
* Format: date-time
* @description Returns objects less or equal the specified date.
*
- * This can be combined with start_date_gte parameter to receive only the selected period.
+ * This can be combined with start_date_gte parameter to receive only the selected period.
*/
start_date_lte?: string;
/**
* Format: date-time
* @description Returns objects greater or equal the specified date.
*
- * This can be combined with start_date_lte parameter to receive only the selected period.
+ * This can be combined with start_date_lte parameter to receive only the selected period.
*/
end_date_gte?: string;
/**
* Format: date-time
* @description Returns objects less than or equal to the specified date.
*
- * This can be combined with start_date_gte parameter to receive only the selected period.
+ * This can be combined with start_date_gte parameter to receive only the selected period.
*/
end_date_lte?: string;
/**
* @description Returns objects greater than or equal to the specified values.
*
- * This can be combined with duration_lte parameter to receive only the selected period.
+ * This can be combined with duration_lte parameter to receive only the selected period.
*/
duration_gte?: number;
/**
* @description Returns objects less than or equal to the specified values.
*
- * This can be combined with duration_gte parameter to receive only the selected range.
+ * This can be combined with duration_gte parameter to receive only the selected range.
*/
duration_lte?: number;
/** @description The value can be repeated to retrieve multiple matching values (OR condition). */
@@ -2377,12 +3180,14 @@ export interface components {
};
/**
* @description Schedule interval. Defines how often DAG runs, this object gets added to your latest task instance's
- * execution_date to figure out the next schedule.
+ * execution_date to figure out the next schedule.
*/
ScheduleInterval:
- | (Partial<components["schemas"]["TimeDelta"]> &
- Partial<components["schemas"]["RelativeDelta"]> &
- Partial<components["schemas"]["CronExpression"]>)
+ | (
+ | components["schemas"]["TimeDelta"]
+ | components["schemas"]["RelativeDelta"]
+ | components["schemas"]["CronExpression"]
+ )
| null;
/** @description Time delta */
TimeDelta: {
@@ -2424,15 +3229,15 @@ export interface components {
Color: string;
/** @description Class reference */
ClassReference: {
- module_path?: string;
- class_name?: string;
+ readonly module_path?: string;
+ readonly class_name?: string;
};
/** @description [RFC7807](https://tools.ietf.org/html/rfc7807) compliant response. */
Error: {
/**
* @description A URI reference [RFC3986] that identifies the problem type. This specification
- * encourages that, when dereferenced, it provide human-readable documentation for
- * the problem type.
+ * encourages that, when dereferenced, it provide human-readable documentation for
+ * the problem type.
*/
type: string;
/** @description A short, human-readable summary of the problem type. */
@@ -2443,7 +3248,7 @@ export interface components {
detail?: string;
/**
* @description A URI reference that identifies the specific occurrence of the problem. It may or may
- * not yield further information if dereferenced.
+ * not yield further information if dereferenced.
*/
instance?: string;
};
@@ -2451,70 +3256,63 @@ export interface components {
CollectionInfo: {
/**
* @description Count of total objects in the current result set before pagination parameters
- * (limit, offset) are applied.
+ * (limit, offset) are applied.
*/
total_entries?: number;
};
/**
* @description Task state.
*
- * *Changed in version 2.0.2*: 'removed' is added as a possible value.
- *
- * *Changed in version 2.2.0*: 'deferred' is added as a possible value.
+ * *Changed in version 2.0.2*: 'removed' is added as a possible value.
*
- * *Changed in version 2.4.0*: 'sensing' state has been removed.
- * *Changed in version 2.4.2*: 'restarting' is added as a possible value
+ * *Changed in version 2.2.0*: 'deferred' is added as a possible value.
*
- * *Changed in version 2.7.0*: Field becomes nullable and null primitive is added as a possible value.
- * *Changed in version 2.7.0*: 'none' state is deprecated in favor of null.
+ * *Changed in version 2.4.0*: 'sensing' state has been removed.
+ * *Changed in version 2.4.2*: 'restarting' is added as a possible value
*
+ * *Changed in version 2.7.0*: Field becomes nullable and null primitive is added as a possible value.
+ * *Changed in version 2.7.0*: 'none' state is deprecated in favor of null.
* @enum {string|null}
*/
TaskState:
- | (
- | null
- | "success"
- | "running"
- | "failed"
- | "upstream_failed"
- | "skipped"
- | "up_for_retry"
- | "up_for_reschedule"
- | "queued"
- | "none"
- | "scheduled"
- | "deferred"
- | "removed"
- | "restarting"
- )
- | null;
+ | null
+ | "success"
+ | "running"
+ | "failed"
+ | "upstream_failed"
+ | "skipped"
+ | "up_for_retry"
+ | "up_for_reschedule"
+ | "queued"
+ | "none"
+ | "scheduled"
+ | "deferred"
+ | "removed"
+ | "restarting";
/**
* @description Expected new state. Only a subset of TaskState are available.
*
- * Other states are managed directly by the scheduler or the workers and cannot be updated manually through the REST API.
- *
+ * Other states are managed directly by the scheduler or the workers and cannot be updated manually through the REST API.
* @enum {string}
*/
UpdateTaskState: "success" | "failed" | "skipped";
/**
* @description DAG State.
*
- * *Changed in version 2.1.3*: 'queued' is added as a possible value.
- *
+ * *Changed in version 2.1.3*: 'queued' is added as a possible value.
* @enum {string}
*/
DagState: "queued" | "running" | "success" | "failed";
/**
* @description Trigger rule.
*
- * *Changed in version 2.2.0*: 'none_failed_min_one_success' is added as a possible value. Deprecated 'dummy' and 'always' is added as a possible value
- *
- * *Changed in version 2.3.0*: 'all_skipped' is added as a possible value.
+ * *Changed in version 2.2.0*: 'none_failed_min_one_success' is added as a possible value. Deprecated 'dummy' and 'always' is added as a possible value
*
- * *Changed in version 2.5.0*: 'one_done' is added as a possible value.
+ * *Changed in version 2.3.0*: 'all_skipped' is added as a possible value.
*
- * *Changed in version 2.7.0*: 'all_done_setup_success' is added as a possible value.
+ * *Changed in version 2.5.0*: 'one_done' is added as a possible value.
*
+ * *Changed in version 2.7.0*: 'all_done_setup_success' is added as a possible value.
* @enum {string}
*/
TriggerRule:
@@ -2538,53 +3336,77 @@ export interface components {
* @description Health status
* @enum {string|null}
*/
- HealthStatus: ("healthy" | "unhealthy") | null;
+ HealthStatus: "healthy" | "unhealthy" | null;
};
responses: {
- /** Client specified an invalid argument. */
+ /** @description Client specified an invalid argument. */
BadRequest: {
+ headers: {
+ [name: string]: unknown;
+ };
content: {
"application/json": components["schemas"]["Error"];
};
};
- /** Request not authenticated due to missing, invalid, authentication info. */
+ /** @description Request not authenticated due to missing, invalid, authentication info. */
Unauthenticated: {
+ headers: {
+ [name: string]: unknown;
+ };
content: {
"application/json": components["schemas"]["Error"];
};
};
- /** Client does not have sufficient permission. */
+ /** @description Client does not have sufficient permission. */
PermissionDenied: {
+ headers: {
+ [name: string]: unknown;
+ };
content: {
"application/json": components["schemas"]["Error"];
};
};
- /** A specified resource is not found. */
+ /** @description A specified resource is not found. */
NotFound: {
+ headers: {
+ [name: string]: unknown;
+ };
content: {
"application/json": components["schemas"]["Error"];
};
};
- /** Request method is known by the server but is not supported by the target resource. */
+ /** @description Request method is known by the server but is not supported by the target resource. */
MethodNotAllowed: {
+ headers: {
+ [name: string]: unknown;
+ };
content: {
"application/json": components["schemas"]["Error"];
};
};
- /** A specified Accept header is not allowed. */
+ /** @description A specified Accept header is not allowed. */
NotAcceptable: {
+ headers: {
+ [name: string]: unknown;
+ };
content: {
"application/json": components["schemas"]["Error"];
};
};
- /** An existing resource conflicts with the request. */
+ /** @description An existing resource conflicts with the request. */
AlreadyExists: {
+ headers: {
+ [name: string]: unknown;
+ };
content: {
"application/json": components["schemas"]["Error"];
};
};
- /** Unknown server error. */
+ /** @description Unknown server error. */
Unknown: {
+ headers: {
+ [name: string]: unknown;
+ };
content: {
"application/json": components["schemas"]["Error"];
};
@@ -2598,7 +3420,7 @@ export interface components {
/**
* @description The username of the user.
*
- * *New in version 2.1.0*
+ * *New in version 2.1.0*
*/
Username: string;
/** @description The role name */
@@ -2635,12 +3457,12 @@ export interface components {
VariableKey: string;
/**
* @description A full content will be returned.
- * By default, only the first fragment will be returned.
+ * By default, only the first fragment will be returned.
*/
FullContent: boolean;
/**
* @description A token that allows you to continue fetching logs.
- * If passed, it will specify the location from which the download should be continued.
+ * If passed, it will specify the location from which the download should be continued.
*/
ContinuationToken: string;
/** @description The XCom key. */
@@ -2648,49 +3470,49 @@ export interface components {
/**
* @description Returns objects greater or equal to the specified date.
*
- * This can be combined with execution_date_lte parameter to receive only the selected period.
+ * This can be combined with execution_date_lte parameter to receive only the selected period.
*/
FilterExecutionDateGTE: string;
/**
* @description Returns objects less than or equal to the specified date.
*
- * This can be combined with execution_date_gte parameter to receive only the selected period.
+ * This can be combined with execution_date_gte parameter to receive only the selected period.
*/
FilterExecutionDateLTE: string;
/**
* @description Returns objects greater or equal the specified date.
*
- * This can be combined with start_date_lte parameter to receive only the selected period.
+ * This can be combined with start_date_lte parameter to receive only the selected period.
*/
FilterStartDateGTE: string;
/**
* @description Returns objects less or equal the specified date.
*
- * This can be combined with start_date_gte parameter to receive only the selected period.
+ * This can be combined with start_date_gte parameter to receive only the selected period.
*/
FilterStartDateLTE: string;
/**
* @description Returns objects greater or equal the specified date.
*
- * This can be combined with start_date_lte parameter to receive only the selected period.
+ * This can be combined with start_date_lte parameter to receive only the selected period.
*/
FilterEndDateGTE: string;
/**
* @description Returns objects less than or equal to the specified date.
*
- * This can be combined with start_date_gte parameter to receive only the selected period.
+ * This can be combined with start_date_gte parameter to receive only the selected period.
*/
FilterEndDateLTE: string;
/**
* @description Returns objects greater than or equal to the specified values.
*
- * This can be combined with duration_lte parameter to receive only the selected period.
+ * This can be combined with duration_lte parameter to receive only the selected period.
*/
FilterDurationGTE: number;
/**
* @description Returns objects less than or equal to the specified values.
*
- * This can be combined with duration_gte parameter to receive only the selected range.
+ * This can be combined with duration_gte parameter to receive only the selected range.
*/
FilterDurationLTE: number;
/** @description The value can be repeated to retrieve multiple matching values (OR condition). */
@@ -2704,7 +3526,7 @@ export interface components {
/**
* @description List of tags to filter results.
*
- * *New in version 2.2.0*
+ * *New in version 2.2.0*
*/
FilterTags: string[];
/** @description The Dataset ID that updated the dataset. */
@@ -2723,37 +3545,37 @@ export interface components {
FilterTryNumber: number;
/**
* @description The name of the field to order the results by.
- * Prefix a field name with `-` to reverse the sort order.
+ * Prefix a field name with `-` to reverse the sort order.
*
- * *New in version 2.1.0*
+ * *New in version 2.1.0*
*/
OrderBy: string;
/**
* @description Only filter active DAGs.
*
- * *New in version 2.1.1*
+ * *New in version 2.1.1*
*/
OnlyActive: boolean;
/**
* @description Returns objects less or equal the specified date.
*
- * This can be combined with updated_at_gte parameter to receive only the selected period.
+ * This can be combined with updated_at_gte parameter to receive only the selected period.
*
- * *New in version 2.6.0*
+ * *New in version 2.6.0*
*/
FilterUpdatedAtLTE: string;
/**
* @description Returns objects greater or equal the specified date.
*
- * This can be combined with updated_at_lte parameter to receive only the selected period.
+ * This can be combined with updated_at_lte parameter to receive only the selected period.
*
- * *New in version 2.6.0*
+ * *New in version 2.6.0*
*/
FilterUpdatedAtGTE: string;
/**
* @description Only filter paused/unpaused DAGs. If absent or null, it returns paused and unpaused DAGs.
*
- * *New in version 2.6.0*
+ * *New in version 2.6.0*
*/
Paused: boolean;
/** @description Only filter the XCom records which have the provided key. */
@@ -2766,42 +3588,50 @@ export interface components {
FilterRunID: string;
/**
* @description The key containing the encrypted path to the file. Encryption and decryption take place only on
- * the server. This prevents the client from reading an non-DAG file. This also ensures API
- * extensibility, because the format of encrypted data may change.
+ * the server. This prevents the client from reading an non-DAG file. This also ensures API
+ * extensibility, because the format of encrypted data may change.
*/
FileToken: string;
/**
* @description The fields to update on the resource. If absent or empty, all modifiable fields are updated.
- * A comma-separated list of fully qualified names of fields.
+ * A comma-separated list of fully qualified names of fields.
*/
UpdateMask: string[];
/** @description List of field for return. */
ReturnFields: string[];
};
- requestBodies: {};
- headers: {};
+ requestBodies: never;
+ headers: never;
+ pathItems: never;
}
-
+export type $defs = Record<string, never>;
export interface operations {
get_connections: {
parameters: {
- query: {
- /** The numbers of items to return. */
+ query?: {
+ /** @description The numbers of items to return. */
limit?: components["parameters"]["PageLimit"];
- /** The number of items to skip before starting to collect the result set. */
+ /** @description The number of items to skip before starting to collect the result set. */
offset?: components["parameters"]["PageOffset"];
/**
- * The name of the field to order the results by.
- * Prefix a field name with `-` to reverse the sort order.
+ * @description The name of the field to order the results by.
+ * Prefix a field name with `-` to reverse the sort order.
*
- * *New in version 2.1.0*
+ * *New in version 2.1.0*
*/
order_by?: components["parameters"]["OrderBy"];
};
+ header?: never;
+ path?: never;
+ cookie?: never;
};
+ requestBody?: never;
responses: {
- /** Success. */
+ /** @description Success. */
200: {
+ headers: {
+ [name: string]: unknown;
+ };
content: {
"application/json": components["schemas"]["ConnectionCollection"];
};
@@ -2811,9 +3641,23 @@ export interface operations {
};
};
post_connection: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["Connection"];
+ };
+ };
responses: {
- /** Success. */
+ /** @description Success. */
200: {
+ headers: {
+ [name: string]: unknown;
+ };
content: {
"application/json": components["schemas"]["Connection"];
};
@@ -2822,22 +3666,24 @@ export interface operations {
401: components["responses"]["Unauthenticated"];
403: components["responses"]["PermissionDenied"];
};
- requestBody: {
- content: {
- "application/json": components["schemas"]["Connection"];
- };
- };
};
get_connection: {
parameters: {
+ query?: never;
+ header?: never;
path: {
- /** The connection ID. */
+ /** @description The connection ID. */
connection_id: components["parameters"]["ConnectionID"];
};
+ cookie?: never;
};
+ requestBody?: never;
responses: {
- /** Success. */
+ /** @description Success. */
200: {
+ headers: {
+ [name: string]: unknown;
+ };
content: {
"application/json": components["schemas"]["Connection"];
};
@@ -2849,14 +3695,23 @@ export interface operations {
};
delete_connection: {
parameters: {
+ query?: never;
+ header?: never;
path: {
- /** The connection ID. */
+ /** @description The connection ID. */
connection_id: components["parameters"]["ConnectionID"];
};
+ cookie?: never;
};
+ requestBody?: never;
responses: {
- /** Success. */
- 204: never;
+ /** @description Success. */
+ 204: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
400: components["responses"]["BadRequest"];
401: components["responses"]["Unauthenticated"];
403: components["responses"]["PermissionDenied"];
@@ -2865,21 +3720,31 @@ export interface operations {
};
patch_connection: {
parameters: {
- path: {
- /** The connection ID. */
- connection_id: components["parameters"]["ConnectionID"];
- };
- query: {
+ query?: {
/**
- * The fields to update on the resource. If absent or empty, all modifiable fields are updated.
- * A comma-separated list of fully qualified names of fields.
+ * @description The fields to update on the resource. If absent or empty, all modifiable fields are updated.
+ * A comma-separated list of fully qualified names of fields.
*/
update_mask?: components["parameters"]["UpdateMask"];
};
+ header?: never;
+ path: {
+ /** @description The connection ID. */
+ connection_id: components["parameters"]["ConnectionID"];
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["Connection"];
+ };
};
responses: {
- /** Success. */
+ /** @description Success. */
200: {
+ headers: {
+ [name: string]: unknown;
+ };
content: {
"application/json": components["schemas"]["Connection"];
};
@@ -2889,30 +3754,25 @@ export interface operations {
403: components["responses"]["PermissionDenied"];
404: components["responses"]["NotFound"];
};
+ };
+ test_connection: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
requestBody: {
content: {
"application/json": components["schemas"]["Connection"];
};
};
- };
- /**
- * Test a connection.
- *
- * For security reasons, the test connection functionality is disabled by default across Airflow UI, API and CLI.
- * For more information on capabilities of users, see the documentation:
- * https://airflow.apache.org/docs/apache-airflow/stable/security/security_model.html#capabilities-of-authenticated-ui-users.
- * It is strongly advised to not enable the feature until you make sure that only
- * highly trusted UI/API users have "edit connection" permissions.
- *
- * Set the "test_connection" flag to "Enabled" in the "core" section of Airflow configuration (airflow.cfg) to enable testing of collections.
- * It can also be controlled by the environment variable `AIRFLOW__CORE__TEST_CONNECTION`.
- *
- * *New in version 2.2.0*
- */
- test_connection: {
responses: {
- /** Success. */
+ /** @description Success. */
200: {
+ headers: {
+ [name: string]: unknown;
+ };
content: {
"application/json": components["schemas"]["ConnectionTest"];
};
@@ -2922,57 +3782,55 @@ export interface operations {
403: components["responses"]["PermissionDenied"];
404: components["responses"]["NotFound"];
};
- requestBody: {
- content: {
- "application/json": components["schemas"]["Connection"];
- };
- };
};
- /**
- * List DAGs in the database.
- * `dag_id_pattern` can be set to match dags of a specific pattern
- */
get_dags: {
parameters: {
- query: {
- /** The numbers of items to return. */
+ query?: {
+ /** @description The numbers of items to return. */
limit?: components["parameters"]["PageLimit"];
- /** The number of items to skip before starting to collect the result set. */
+ /** @description The number of items to skip before starting to collect the result set. */
offset?: components["parameters"]["PageOffset"];
/**
- * The name of the field to order the results by.
- * Prefix a field name with `-` to reverse the sort order.
+ * @description The name of the field to order the results by.
+ * Prefix a field name with `-` to reverse the sort order.
*
- * *New in version 2.1.0*
+ * *New in version 2.1.0*
*/
order_by?: components["parameters"]["OrderBy"];
/**
- * List of tags to filter results.
+ * @description List of tags to filter results.
*
- * *New in version 2.2.0*
+ * *New in version 2.2.0*
*/
tags?: components["parameters"]["FilterTags"];
/**
- * Only filter active DAGs.
+ * @description Only filter active DAGs.
*
- * *New in version 2.1.1*
+ * *New in version 2.1.1*
*/
only_active?: components["parameters"]["OnlyActive"];
/**
- * Only filter paused/unpaused DAGs. If absent or null, it returns paused and unpaused DAGs.
+ * @description Only filter paused/unpaused DAGs. If absent or null, it returns paused and unpaused DAGs.
*
- * *New in version 2.6.0*
+ * *New in version 2.6.0*
*/
paused?: components["parameters"]["Paused"];
- /** List of field for return. */
+ /** @description List of field for return. */
fields?: components["parameters"]["ReturnFields"];
- /** If set, only return DAGs with dag_ids matching this pattern. */
+ /** @description If set, only return DAGs with dag_ids matching this pattern. */
dag_id_pattern?: string;
};
+ header?: never;
+ path?: never;
+ cookie?: never;
};
+ requestBody?: never;
responses: {
- /** Success. */
+ /** @description Success. */
200: {
+ headers: {
+ [name: string]: unknown;
+ };
content: {
"application/json": components["schemas"]["DAGCollection"];
};
@@ -2980,42 +3838,53 @@ export interface operations {
401: components["responses"]["Unauthenticated"];
};
};
- /**
- * Update DAGs of a given dag_id_pattern using UpdateMask.
- * This endpoint allows specifying `~` as the dag_id_pattern to update all DAGs.
- * *New in version 2.3.0*
- */
patch_dags: {
parameters: {
query: {
- /** The numbers of items to return. */
+ /** @description The numbers of items to return. */
limit?: components["parameters"]["PageLimit"];
- /** The number of items to skip before starting to collect the result set. */
+ /** @description The number of items to skip before starting to collect the result set. */
offset?: components["parameters"]["PageOffset"];
/**
- * List of tags to filter results.
+ * @description List of tags to filter results.
*
- * *New in version 2.2.0*
+ * *New in version 2.2.0*
*/
tags?: components["parameters"]["FilterTags"];
/**
- * The fields to update on the resource. If absent or empty, all modifiable fields are updated.
- * A comma-separated list of fully qualified names of fields.
+ * @description The fields to update on the resource. If absent or empty, all modifiable fields are updated.
+ * A comma-separated list of fully qualified names of fields.
*/
update_mask?: components["parameters"]["UpdateMask"];
/**
- * Only filter active DAGs.
+ * @description Only filter active DAGs.
*
- * *New in version 2.1.1*
+ * *New in version 2.1.1*
*/
only_active?: components["parameters"]["OnlyActive"];
- /** If set, only update DAGs with dag_ids matching this pattern. */
+ /** @description If set, only update DAGs with dag_ids matching this pattern. */
dag_id_pattern: string;
};
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ /**
+ * @example {
+ * "is_paused": true
+ * }
+ */
+ "application/json": components["schemas"]["DAG"];
+ };
};
responses: {
- /** Success. */
+ /** @description Success. */
200: {
+ headers: {
+ [name: string]: unknown;
+ };
content: {
"application/json": components["schemas"]["DAGCollection"];
};
@@ -3024,30 +3893,27 @@ export interface operations {
403: components["responses"]["PermissionDenied"];
404: components["responses"]["NotFound"];
};
- requestBody: {
- content: {
- "application/json": components["schemas"]["DAG"];
- };
- };
};
- /**
- * Presents only information available in database (DAGModel).
- * If you need detailed information, consider using GET /dags/{dag_id}/details.
- */
get_dag: {
parameters: {
+ query?: {
+ /** @description List of field for return. */
+ fields?: components["parameters"]["ReturnFields"];
+ };
+ header?: never;
path: {
- /** The DAG ID. */
+ /** @description The DAG ID. */
dag_id: components["parameters"]["DAGID"];
};
- query: {
- /** List of field for return. */
- fields?: components["parameters"]["ReturnFields"];
- };
+ cookie?: never;
};
+ requestBody?: never;
responses: {
- /** Success. */
+ /** @description Success. */
200: {
+ headers: {
+ [name: string]: unknown;
+ };
content: {
"application/json": components["schemas"]["DAG"];
};
@@ -3057,22 +3923,25 @@ export interface operations {
404: components["responses"]["NotFound"];
};
};
- /**
- * Deletes all metadata related to the DAG, including finished DAG Runs and Tasks.
- * Logs are not deleted. This action cannot be undone.
- *
- * *New in version 2.2.0*
- */
delete_dag: {
parameters: {
+ query?: never;
+ header?: never;
path: {
- /** The DAG ID. */
+ /** @description The DAG ID. */
dag_id: components["parameters"]["DAGID"];
};
+ cookie?: never;
};
+ requestBody?: never;
responses: {
- /** Success. */
- 204: never;
+ /** @description Success. */
+ 204: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
400: components["responses"]["BadRequest"];
401: components["responses"]["Unauthenticated"];
403: components["responses"]["PermissionDenied"];
@@ -3082,21 +3951,36 @@ export interface operations {
};
patch_dag: {
parameters: {
+ query?: {
+ /**
+ * @description The fields to update on the resource. If absent or empty, all modifiable fields are updated.
+ * A comma-separated list of fully qualified names of fields.
+ */
+ update_mask?: components["parameters"]["UpdateMask"];
+ };
+ header?: never;
path: {
- /** The DAG ID. */
+ /** @description The DAG ID. */
dag_id: components["parameters"]["DAGID"];
};
- query: {
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
/**
- * The fields to update on the resource. If absent or empty, all modifiable fields are updated.
- * A comma-separated list of fully qualified names of fields.
+ * @example {
+ * "is_paused": true
+ * }
*/
- update_mask?: components["parameters"]["UpdateMask"];
+ "application/json": components["schemas"]["DAG"];
};
};
responses: {
- /** Success. */
+ /** @description Success. */
200: {
+ headers: {
+ [name: string]: unknown;
+ };
content: {
"application/json": components["schemas"]["DAG"];
};
@@ -3105,23 +3989,29 @@ export interface operations {
403: components["responses"]["PermissionDenied"];
404: components["responses"]["NotFound"];
};
- requestBody: {
- content: {
- "application/json": components["schemas"]["DAG"];
- };
- };
};
- /** Clears a set of task instances associated with the DAG for a specified date range. */
post_clear_task_instances: {
parameters: {
+ query?: never;
+ header?: never;
path: {
- /** The DAG ID. */
+ /** @description The DAG ID. */
dag_id: components["parameters"]["DAGID"];
};
+ cookie?: never;
+ };
+ /** @description Parameters of action */
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["ClearTaskInstances"];
+ };
};
responses: {
- /** Success. */
+ /** @description Success. */
200: {
+ headers: {
+ [name: string]: unknown;
+ };
content: {
"application/json": components["schemas"]["TaskInstanceReferenceCollection"];
};
@@ -3130,32 +4020,33 @@ export interface operations {
403: components["responses"]["PermissionDenied"];
404: components["responses"]["NotFound"];
};
- /** Parameters of action */
- requestBody: {
- content: {
- "application/json": components["schemas"]["ClearTaskInstances"];
- };
- };
};
- /**
- * Update the manual user note of a non-mapped Task Instance.
- *
- * *New in version 2.5.0*
- */
set_task_instance_note: {
parameters: {
+ query?: never;
+ header?: never;
path: {
- /** The DAG ID. */
+ /** @description The DAG ID. */
dag_id: components["parameters"]["DAGID"];
- /** The DAG run ID. */
+ /** @description The DAG run ID. */
dag_run_id: components["parameters"]["DAGRunID"];
- /** The task ID. */
+ /** @description The task ID. */
task_id: components["parameters"]["TaskID"];
};
+ cookie?: never;
+ };
+ /** @description Parameters of set Task Instance note. */
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["SetTaskInstanceNote"];
+ };
};
responses: {
- /** Success. */
+ /** @description Success. */
200: {
+ headers: {
+ [name: string]: unknown;
+ };
content: {
"application/json": components["schemas"]["TaskInstance"];
};
@@ -3165,34 +4056,35 @@ export interface operations {
403: components["responses"]["PermissionDenied"];
404: components["responses"]["NotFound"];
};
- /** Parameters of set Task Instance note. */
- requestBody: {
- content: {
- "application/json": components["schemas"]["SetTaskInstanceNote"];
- };
- };
};
- /**
- * Update the manual user note of a mapped Task Instance.
- *
- * *New in version 2.5.0*
- */
set_mapped_task_instance_note: {
parameters: {
+ query?: never;
+ header?: never;
path: {
- /** The DAG ID. */
+ /** @description The DAG ID. */
dag_id: components["parameters"]["DAGID"];
- /** The DAG run ID. */
+ /** @description The DAG run ID. */
dag_run_id: components["parameters"]["DAGRunID"];
- /** The task ID. */
+ /** @description The task ID. */
task_id: components["parameters"]["TaskID"];
- /** The map index. */
+ /** @description The map index. */
map_index: components["parameters"]["MapIndex"];
};
+ cookie?: never;
+ };
+ /** @description Parameters of set Task Instance note. */
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["SetTaskInstanceNote"];
+ };
};
responses: {
- /** Success. */
+ /** @description Success. */
200: {
+ headers: {
+ [name: string]: unknown;
+ };
content: {
"application/json": components["schemas"]["TaskInstance"];
};
@@ -3202,32 +4094,28 @@ export interface operations {
403: components["responses"]["PermissionDenied"];
404: components["responses"]["NotFound"];
};
- /** Parameters of set Task Instance note. */
- requestBody: {
- content: {
- "application/json": components["schemas"]["SetTaskInstanceNote"];
- };
- };
};
- /**
- * Get task dependencies blocking task from getting scheduled.
- *
- * *New in version 2.10.0*
- */
get_task_instance_dependencies: {
parameters: {
+ query?: never;
+ header?: never;
path: {
- /** The DAG ID. */
+ /** @description The DAG ID. */
dag_id: components["parameters"]["DAGID"];
- /** The DAG run ID. */
+ /** @description The DAG run ID. */
dag_run_id: components["parameters"]["DAGRunID"];
- /** The task ID. */
+ /** @description The task ID. */
task_id: components["parameters"]["TaskID"];
};
+ cookie?: never;
};
+ requestBody?: never;
responses: {
- /** Success. */
+ /** @description Success. */
200: {
+ headers: {
+ [name: string]: unknown;
+ };
content: {
"application/json": components["schemas"]["TaskInstanceDependencyCollection"];
};
@@ -3238,27 +4126,29 @@ export interface operations {
404: components["responses"]["NotFound"];
};
};
- /**
- * Get task dependencies blocking task from getting scheduled.
- *
- * *New in version 2.10.0*
- */
get_mapped_task_instance_dependencies: {
parameters: {
+ query?: never;
+ header?: never;
path: {
- /** The DAG ID. */
+ /** @description The DAG ID. */
dag_id: components["parameters"]["DAGID"];
- /** The DAG run ID. */
+ /** @description The DAG run ID. */
dag_run_id: components["parameters"]["DAGRunID"];
- /** The task ID. */
+ /** @description The task ID. */
task_id: components["parameters"]["TaskID"];
- /** The map index. */
+ /** @description The map index. */
map_index: components["parameters"]["MapIndex"];
};
+ cookie?: never;
};
+ requestBody?: never;
responses: {
- /** Success. */
+ /** @description Success. */
200: {
+ headers: {
+ [name: string]: unknown;
+ };
content: {
"application/json": components["schemas"]["TaskInstanceDependencyCollection"];
};
@@ -3269,17 +4159,28 @@ export interface operations {
404: components["responses"]["NotFound"];
};
};
- /** Updates the state for multiple task instances simultaneously. */
post_set_task_instances_state: {
parameters: {
+ query?: never;
+ header?: never;
path: {
- /** The DAG ID. */
+ /** @description The DAG ID. */
dag_id: components["parameters"]["DAGID"];
};
+ cookie?: never;
+ };
+ /** @description Parameters of action */
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpdateTaskInstancesState"];
+ };
};
responses: {
- /** Success. */
+ /** @description Success. */
200: {
+ headers: {
+ [name: string]: unknown;
+ };
content: {
"application/json": components["schemas"]["TaskInstanceReferenceCollection"];
};
@@ -3288,93 +4189,92 @@ export interface operations {
403: components["responses"]["PermissionDenied"];
404: components["responses"]["NotFound"];
};
- /** Parameters of action */
- requestBody: {
- content: {
- "application/json": components["schemas"]["UpdateTaskInstancesState"];
- };
- };
};
- /** This endpoint allows specifying `~` as the dag_id to retrieve DAG runs for all DAGs. */
get_dag_runs: {
parameters: {
- path: {
- /** The DAG ID. */
- dag_id: components["parameters"]["DAGID"];
- };
- query: {
- /** The numbers of items to return. */
+ query?: {
+ /** @description The numbers of items to return. */
limit?: components["parameters"]["PageLimit"];
- /** The number of items to skip before starting to collect the result set. */
+ /** @description The number of items to skip before starting to collect the result set. */
offset?: components["parameters"]["PageOffset"];
/**
- * Returns objects greater or equal to the specified date.
+ * @description Returns objects greater or equal to the specified date.
*
- * This can be combined with execution_date_lte parameter to receive only the selected period.
+ * This can be combined with execution_date_lte parameter to receive only the selected period.
*/
execution_date_gte?: components["parameters"]["FilterExecutionDateGTE"];
/**
- * Returns objects less than or equal to the specified date.
+ * @description Returns objects less than or equal to the specified date.
*
- * This can be combined with execution_date_gte parameter to receive only the selected period.
+ * This can be combined with execution_date_gte parameter to receive only the selected period.
*/
execution_date_lte?: components["parameters"]["FilterExecutionDateLTE"];
/**
- * Returns objects greater or equal the specified date.
+ * @description Returns objects greater or equal the specified date.
*
- * This can be combined with start_date_lte parameter to receive only the selected period.
+ * This can be combined with start_date_lte parameter to receive only the selected period.
*/
start_date_gte?: components["parameters"]["FilterStartDateGTE"];
/**
- * Returns objects less or equal the specified date.
+ * @description Returns objects less or equal the specified date.
*
- * This can be combined with start_date_gte parameter to receive only the selected period.
+ * This can be combined with start_date_gte parameter to receive only the selected period.
*/
start_date_lte?: components["parameters"]["FilterStartDateLTE"];
/**
- * Returns objects greater or equal the specified date.
+ * @description Returns objects greater or equal the specified date.
*
- * This can be combined with start_date_lte parameter to receive only the selected period.
+ * This can be combined with start_date_lte parameter to receive only the selected period.
*/
end_date_gte?: components["parameters"]["FilterEndDateGTE"];
/**
- * Returns objects less than or equal to the specified date.
+ * @description Returns objects less than or equal to the specified date.
*
- * This can be combined with start_date_gte parameter to receive only the selected period.
+ * This can be combined with start_date_gte parameter to receive only the selected period.
*/
end_date_lte?: components["parameters"]["FilterEndDateLTE"];
/**
- * Returns objects greater or equal the specified date.
+ * @description Returns objects greater or equal the specified date.
*
- * This can be combined with updated_at_lte parameter to receive only the selected period.
+ * This can be combined with updated_at_lte parameter to receive only the selected period.
*
- * *New in version 2.6.0*
+ * *New in version 2.6.0*
*/
updated_at_gte?: components["parameters"]["FilterUpdatedAtGTE"];
/**
- * Returns objects less or equal the specified date.
+ * @description Returns objects less or equal the specified date.
*
- * This can be combined with updated_at_gte parameter to receive only the selected period.
+ * This can be combined with updated_at_gte parameter to receive only the selected period.
*
- * *New in version 2.6.0*
+ * *New in version 2.6.0*
*/
updated_at_lte?: components["parameters"]["FilterUpdatedAtLTE"];
- /** The value can be repeated to retrieve multiple matching values (OR condition). */
+ /** @description The value can be repeated to retrieve multiple matching values (OR condition). */
state?: components["parameters"]["FilterState"];
/**
- * The name of the field to order the results by.
- * Prefix a field name with `-` to reverse the sort order.
+ * @description The name of the field to order the results by.
+ * Prefix a field name with `-` to reverse the sort order.
*
- * *New in version 2.1.0*
+ * *New in version 2.1.0*
*/
order_by?: components["parameters"]["OrderBy"];
- /** List of field for return. */
+ /** @description List of field for return. */
fields?: components["parameters"]["ReturnFields"];
};
+ header?: never;
+ path: {
+ /** @description The DAG ID. */
+ dag_id: components["parameters"]["DAGID"];
+ };
+ cookie?: never;
};
+ requestBody?: never;
responses: {
- /** List of DAG runs. */
+ /** @description List of DAG runs. */
200: {
+ headers: {
+ [name: string]: unknown;
+ };
content: {
"application/json": components["schemas"]["DAGRunCollection"];
};
@@ -3382,17 +4282,27 @@ export interface operations {
401: components["responses"]["Unauthenticated"];
};
};
- /** This will initiate a dagrun. If DAG is paused then dagrun state will remain queued, and the task won't run. */
post_dag_run: {
parameters: {
+ query?: never;
+ header?: never;
path: {
- /** The DAG ID. */
+ /** @description The DAG ID. */
dag_id: components["parameters"]["DAGID"];
};
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["DAGRun"];
+ };
};
responses: {
- /** Success. */
+ /** @description Success. */
200: {
+ headers: {
+ [name: string]: unknown;
+ };
content: {
"application/json": components["schemas"]["DAGRun"];
};
@@ -3403,17 +4313,25 @@ export interface operations {
404: components["responses"]["NotFound"];
409: components["responses"]["AlreadyExists"];
};
+ };
+ get_dag_runs_batch: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
requestBody: {
content: {
- "application/json": components["schemas"]["DAGRun"];
+ "application/json": components["schemas"]["ListDagRunsForm"];
};
};
- };
- /** This endpoint is a POST to allow filtering across a large number of DAG IDs, where as a GET it would run in to maximum HTTP request URL length limit. */
- get_dag_runs_batch: {
responses: {
- /** Success. */
+ /** @description Success. */
200: {
+ headers: {
+ [name: string]: unknown;
+ };
content: {
"application/json": components["schemas"]["DAGRunCollection"];
};
@@ -3422,28 +4340,29 @@ export interface operations {
401: components["responses"]["Unauthenticated"];
403: components["responses"]["PermissionDenied"];
};
- requestBody: {
- content: {
- "application/json": components["schemas"]["ListDagRunsForm"];
- };
- };
};
get_dag_run: {
parameters: {
+ query?: {
+ /** @description List of field for return. */
+ fields?: components["parameters"]["ReturnFields"];
+ };
+ header?: never;
path: {
- /** The DAG ID. */
+ /** @description The DAG ID. */
dag_id: components["parameters"]["DAGID"];
- /** The DAG run ID. */
+ /** @description The DAG run ID. */
dag_run_id: components["parameters"]["DAGRunID"];
};
- query: {
- /** List of field for return. */
- fields?: components["parameters"]["ReturnFields"];
- };
+ cookie?: never;
};
+ requestBody?: never;
responses: {
- /** Success. */
+ /** @description Success. */
200: {
+ headers: {
+ [name: string]: unknown;
+ };
content: {
"application/json": components["schemas"]["DAGRun"];
};
@@ -3455,39 +4374,54 @@ export interface operations {
};
delete_dag_run: {
parameters: {
+ query?: never;
+ header?: never;
path: {
- /** The DAG ID. */
+ /** @description The DAG ID. */
dag_id: components["parameters"]["DAGID"];
- /** The DAG run ID. */
+ /** @description The DAG run ID. */
dag_run_id: components["parameters"]["DAGRunID"];
};
+ cookie?: never;
};
+ requestBody?: never;
responses: {
- /** Success. */
- 204: never;
+ /** @description Success. */
+ 204: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
400: components["responses"]["BadRequest"];
401: components["responses"]["Unauthenticated"];
403: components["responses"]["PermissionDenied"];
404: components["responses"]["NotFound"];
};
};
- /**
- * Modify a DAG run.
- *
- * *New in version 2.2.0*
- */
update_dag_run_state: {
parameters: {
+ query?: never;
+ header?: never;
path: {
- /** The DAG ID. */
+ /** @description The DAG ID. */
dag_id: components["parameters"]["DAGID"];
- /** The DAG run ID. */
+ /** @description The DAG run ID. */
dag_run_id: components["parameters"]["DAGRunID"];
};
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpdateDagRunState"];
+ };
};
responses: {
- /** Success. */
+ /** @description Success. */
200: {
+ headers: {
+ [name: string]: unknown;
+ };
content: {
"application/json": components["schemas"]["DAGRun"];
};
@@ -3497,32 +4431,34 @@ export interface operations {
403: components["responses"]["PermissionDenied"];
404: components["responses"]["NotFound"];
};
- requestBody: {
- content: {
- "application/json": components["schemas"]["UpdateDagRunState"];
- };
- };
};
- /**
- * Clear a DAG run.
- *
- * *New in version 2.4.0*
- */
clear_dag_run: {
parameters: {
+ query?: never;
+ header?: never;
path: {
- /** The DAG ID. */
+ /** @description The DAG ID. */
dag_id: components["parameters"]["DAGID"];
- /** The DAG run ID. */
+ /** @description The DAG run ID. */
dag_run_id: components["parameters"]["DAGRunID"];
};
... 14909 lines suppressed ...