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

# input directory
source: src

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

# The repository and branch where the files live in Github or Colab. This is used
# to serve and stage from your local branch, but publish to the master branch.
#   e.g. https://github.com/{{ site.branch_repo }}/path/to/notebook.ipynb
#   e.g. https://colab.sandbox.google.com/github/{{ site.branch_repo }}/path/to/notebook.ipynb
branch_repo: "apache/beam/blob/master"

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

# Plugins are configured in the Gemfile.

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