# Licensed 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.
# Welcome to Jekyll!

# This config file is meant for settings that affect your whole blog, values
# which you are expected to set up once and rarely need to edit after that.
# For technical reasons, this file is *NOT* reloaded automatically when you use
# 'jekyll serve'. If you change this file, please restart the server process.

# Site settings
title: Apache Beam
description: > # this means to ignore newlines until "baseurl:"
  Apache Beam is an open source, unified model and set of language-specific
  SDKs for defining and executing data processing workflows, and also data
  ingestion and integration flows, supporting Enterprise Integration Patterns
  (EIPs) and Domain Specific Languages (DSLs). Dataflow pipelines simplify the
  mechanics of large-scale batch and streaming data processing and can run on a
  number of runtimes like Apache Flink, Apache Spark, and Google Cloud Dataflow
  (a cloud service). Beam also brings DSL in different languages, allowing
  users to easily implement their data integration processes.

# the subpath of your site, e.g. /blog
baseurl: ""

# input and output directory
source: src
destination: generated-content

# the base hostname & protocol for your site
url: "https://beam.apache.org"

twitter_username: apachebeam

# Build settings
markdown: kramdown

collections:
- beam_team

# Things to include that are subdirectories created by sphinx
include: ['_static', '_modules', '_sources', '.htaccess']

# Things to ignore in the build
exclude: ['README.md', 'Gemfile.lock', 'Gemfile', 'Rakefile', 'vendor/']

# Downloads directory
downloads: downloads

# Don't use the page title in the table of contents
kramdown:
  toc_levels:     2..6

# The most recent release of Beam.
release_latest: 2.7.0

# Plugins are configured in the Gemfile.

# Set the time zone for site generation, fixed to US Pacific Time
timezone: America/Los_Angeles
