#
# 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.

[core]
dags_folder = ~/airflow/dags
executor = LocalExecutor
sql_alchemy_conn = # overridden by the startup scripts
#sql_engine_collation_for_ids = overridden by the startup scripts
unit_test_mode = True
load_examples = True
donot_pickle = False
dags_are_paused_at_creation = False
default_impersonation =
fernet_key = af7CN0q6ag5U3g08IsPsw3K45U7Xa0axgVFhoh-3zB8=

[database]
load_default_connections = True

[hive]
default_hive_mapred_queue = airflow

[logging]
base_log_folder = ~/airflow/logs

[smtp]
smtp_user = airflow
smtp_password = airflow
smtp_mail_from = airflow@example.com

[celery]
broker_url = amqp://guest:guest@rabbitmq:5672/
result_backend = # overridden by startup scripts


[celery_broker_transport_options]
visibility_timeout = 21600
_test_only_bool = True
_test_only_float = 12.0
_test_only_string = this is a test

[scheduler]
job_heartbeat_sec = 1
scheduler_heartbeat_sec = 5
parsing_processes = 2
