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

# NOTE! This docker ignore uses recommended technique
# Where everything is excluded by default and you deliberately
# Add only those directories/files you need. This is very useful
# To make sure that Docker context is always the same on any machine
# So that generated files are not accidentally added to the context
# This allows Docker's `COPY .` to behave in predictable way

# Ignore everything
**

# Allow only these directories
!airflow-core
!common
!dags
!dev
!chart
!licenses

# Add all "production" distributions
!providers/
!task-sdk/
!airflow-ctl/
!go-sdk/

# Add all "test" distributions
!tests
!devel-common
!docker-tests
!helm-tests
!kubernetes-tests
!task-sdk-tests
!airflow-ctl-tests
!shared/
!airflow-e2e-tests

# Add scripts so that we can use them inside the container
!scripts

!.rat-excludes
!.dockerignore
!RELEASE_NOTES.rst
!LICENSE
!NOTICE
!.github
!empty
!Dockerfile
!prod_image_installed_providers.txt

# This folder is for you if you want to add any packages to the docker context when you build your own
# docker image. most of other files and any new folder you add will be excluded by default
!docker-context-files
!constraints

# Docs
!conf.py
!docs
!docker-stack-docs
!providers-summary-docs

# Avoid triggering context change on README change (new companies using Airflow)
# So please do not uncomment this line ;)
# !README.md

# Run tests command with bash completion
!.bash_completion
!.bash_completion.d

# Setup/version configuration
!pyproject.toml
!manifests
!generated

# Reproducible build configuration
!reproducible_build.yaml

# Now - ignore unnecessary files inside allowed directories
# This goes after the allowed directories

# Git version is dynamically generated
airflow-core/src/airflow/git_version

# Exclude node/pmpme caches..
**/.pnpm-store
**/node_modules
# Exclude link to docs
airflow-core/src/airflow/ui/static/docs

# Legacy www exclusions (just to exclude things in case you switch to old branches and generate assets)
# THey should not be in airflow-core as "www" never was there.
airflow/www/static/docs
airflow/www/static/dist
airflow/www/node_modules

# Exclude any .venv and .ruff_cache
**/.venv
**/.ruff_cache/

# Exclude docs artifacts
**/_inventory_cache/

# Exclude python generated files
**/__pycache__/
**/*.py[cod]
**/*$py.class
**/.pytest_cache/
**/env/
**/build/
**/develop-eggs/
**/dist/
**/downloads/
**/eggs/
**/.eggs/
**/lib/
**/lib64/
**/parts/
**/sdist/
**/var/
**/wheels/
**/*.egg-info/
**/.installed.cfg
**/*.egg

# But ensure UI dist files are included
!airflow-core/src/airflow/ui/dist
!providers/fab/src/airflow/providers/fab/www/dist
!providers/edge3/src/airflow/providers/edge3/plugins/www/dist

# Exclude temporary vi files
**/*~

# Exclude output files
**/*.out
**/hive_scratch_dir/

# Exclude auto-generated Finder files on Mac OS
**/.DS_Store
**/Thumbs.db

# files generated by memray
*.py.*.html
*.py.*.bin
/kubernetes-tests/.venv/

# Exclude doc files

**/_api
**/_build
**/_doctree
