# 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.
HOME=
AIRFLOW_CI_IMAGE="ghcr.io/apache/airflow/main/ci/python3.10:latest"
ANSWER=
AIRFLOW_ENV="development"
PYTHON_MAJOR_MINOR_VERSION="3.10"
AIRFLOW_EXTRAS=
BASE_BRANCH="main"
BREEZE="true"
BREEZE_INIT_COMMAND=""
CI="false"
CI_BUILD_ID=
CI_JOB_ID=
CI_EVENT_TYPE=
CI_TARGET_REPO=
CI_TARGET_BRANCH=
COMMIT_SHA=
COLLECT_ONLY="false"
DB_RESET="false"
DEFAULT_BRANCH="main"
DEFAULT_CONSTRAINTS_BRANCH="constraints-main"
DEV_MODE="true"
DOCKER_IS_ROOTLESS="false"
DOWNGRADE_PENDULUM="false"
DOWNGRADE_SQLALCHEMY="false"
GITHUB_ACTIONS="false"
HELM_TEST_PACKAGE=""
HOST_USER_ID=
HOST_GROUP_ID=
HOST_OS="linux"
INIT_SCRIPT_FILE="init.sh"
INSTALL_AIRFLOW_VERSION=
INSTALL_AIRFLOW_WITH_CONSTRAINTS=
AIRFLOW_CONSTRAINTS_MODE=
INSTALL_SELECTED_PROVIDERS=
USE_AIRFLOW_VERSION=
USE_DISTRIBUTIONS_FROM_DIST=
ISSUE_ID=
LOAD_DEFAULT_CONNECTIONS=
LOAD_EXAMPLES=
MYSQL_VERSION=5.7
NUM_RUNS=
ONLY_MIN_VERSION_UPDATE="false"
DISTRIBUTION_FORMAT=
POSTGRES_VERSION=10
PYTHONDONTWRITEBYTECODE="true"
REMOVE_ARM_PACKAGES="false"
RUN_TESTS="false"
SKIP_SSH_SETUP="true"
SKIP_ENVIRONMENT_INITIALIZATION="false"
START_AIRFLOW="false"
SUSPENDED_PROVIDERS_FOLDERS=""
TEST_TYPE=
UPGRADE_BOTO="false"
UPGRADE_SQLALCHEMY="false"
UPGRADE_RANDOM_INDICATOR_STRING=""
VERBOSE="false"
VERBOSE_COMMANDS="false"
VERSION_SUFFIX=
AIRFLOW_SOURCES=/workspaces/airflow
