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

stdin_port = 48691
stdin_port = ${?STDIN_PORT}

shell_port = 40544
shell_port = ${?SHELL_PORT}

iopub_port = 43462
iopub_port = ${?IOPUB_PORT}

control_port = 44808
control_port = ${?CONTROL_PORT}

hb_port = 49691
hb_port = ${?HB_PORT}

ip = "127.0.0.1"
ip = ${?IP}

transport = "tcp"
signature_scheme = "hmac-sha256"
key = ""
spark.master = "local[*]"

deps_dir = ${?DEPS_DIR}

interpreter_args = []

magic_urls = []
magic_urls = [${?MAGIC_URLS}]

max_interpreter_threads = 4
max_interpreter_threads = ${?MAX_INTERPRETER_THREADS}

send_empty_output = false
send_empty_output = ${?SEND_EMPTY_OUTPUT}

default_interpreter = "Scala"
default_interpreter = ${?DEFAULT_INTERPRETER}

spark_context_initialization_mode = "lazy"
spark_context_initialization_mode = ${?SPARK_CONTEXT_INITIALIZATION_MODE}

spark_context_initialization_timeout = 100
spark_context_initialization_timeout = ${?SPARK_CONTEXT_INITIALIZATION_TIMEOUT}

default_interpreter_plugin = [
  "Scala:org.apache.toree.kernel.interpreter.scala.ScalaInterpreter",
  "PySpark:org.apache.toree.kernel.interpreter.pyspark.PySparkInterpreter",
  "SparkR:org.apache.toree.kernel.interpreter.sparkr.SparkRInterpreter",
  "SQL:org.apache.toree.kernel.interpreter.sql.SqlInterpreter"
]

default_repositories = []
default_repositories = [${?DEFAULT_REPOSITORIES}]

default_repository_credentials = []
default_repository_credentials = [${?DEFAULT_REPOSITORY_CREDENTIALS}]
