{% set name = "airflow" %}
{% set version = "1.10.12" %}
{% set sha256 = "9a281d4f2aff0a791646a64b226664bcfb9bce7749f7944684df5ead87074c1b" %}

package:
  name: {{ name|lower }}-split
  version: {{ version }}

source:
  fn: {{ name }}-{{ version }}.tar.gz
  url: https://github.com/apache/incubator-{{ name }}/archive/{{ version }}.tar.gz
  sha256: {{ sha256 }}

build:
  skip: true  # [win or py<36 or py>=39]
  number: 0

test:
  commands:
    - echo 'Keep lint happy'

outputs:
  - name: {{ name }}
    script: install_airflow.sh  # [unix]
    requirements:
      host:
        - python
        - pip
        - gitpython >=2.0.2
        - docutils >=0.14,<1.0
      run:
        - python
        - alembic >=1.0,<2.0
        - argcomplete >=1.10.0
        - attrs >=19.3,<19.4
        - cached-property >=1.5.0,<1.6.0
        - cattrs >=0.9,<0.10.0  # [py<38]
        # Earlier versions are not py38 compatible
        - cattrs >=1.0,<1.1.0  # [py>=38]
        - colorlog >=4.0.2
        - configparser >=3.5.0
        - croniter >=0.3.17,<0.4
        - dill >=0.2.2,<0.4
        - enum34 >=1.1.6,<1.2.0  # [py<34]
        - flask >=1.1.0,<2.0
        - flask-admin ==1.5.4
        - flask-appbuilder >=1.12.2,<2.0.0  # [py<36]
        - flask-appbuilder >=2.2,<2.3  # [py>=36]
        - flask-caching >=1.3.3
        - flask-login >=0.3,<0.5
        - flask-swagger ==0.2.13
        - flask-wtf >=0.14.2,<0.15
        - funcsigs >=1.0.0,<2.0.0
        - future >=0.16.0,<0.19
        - python-graphviz >=0.12
        - gunicorn >=19.5.0
        - iso8601 >=0.1.12
        - jinja2 >=2.10.1
        - json-merge-patch ==0.2
        - jsonschema >=3.0.0,<3.1.0  # [py<38]
        # Earlier versions were not build with py38
        - jsonschema >=3.1.0  # [py>=38]
        - lazy-object-proxy >=1.3.0
        - markdown >=2.5.2
        - marshmallow-sqlalchemy >=0.16.1,<0.19.0  # [py<36]
        - pandas >=0.17.1
        - pendulum ==1.4.4
        - psutil >=4.2.0,<6.0.0
        - pygments >=2.0.1,<3.0
        - python-daemon >=2.1.1
        - python-dateutil >=2.3,<3
        - requests >=2.20.0,<3
        - setproctitle >=1.1.8,<2
        - sqlalchemy >=1.3.0,<1.4.0
        - sqlalchemy-jsonfield >=0.8.0  # [py<35]
        - sqlalchemy-jsonfield >=0.9.0,<0.10.0  # [py>=35]
        - tabulate >=0.7.5,<0.9
        - tenacity # >=4.12.0
        - termcolor >=1.1.0
        - text-unidecode >=1.2,<2.0
        - thrift >=0.9.2
        - typing_extensions >=3.7.4
        - tzlocal >=1.4
        - unicodecsv >=0.14.1
        - werkzeug
        - zope.deprecation >=4.0,<5.0
    test:
      commands:
        - airflow initdb
      imports:
        - airflow
        - airflow.api
        - airflow.api.auth
        - airflow.api.auth.backend
        - airflow.api.client
        - airflow.api.common
        - airflow.api.common.experimental
        - airflow.bin
        - airflow.config_templates
        - airflow.contrib
        - airflow.contrib.auth
        - airflow.contrib.auth.backends
        - airflow.contrib.hooks
        - airflow.contrib.kubernetes
        - airflow.contrib.operators
        - airflow.contrib.sensors
        - airflow.contrib.task_runner
        - airflow.contrib.utils
        - airflow.dag
        - airflow.example_dags
        - airflow.example_dags.subdags
        - airflow.executors
        - airflow.hooks
        - airflow.lineage
        - airflow.lineage.backend
        - airflow.macros
        - airflow.migrations
        - airflow.migrations.versions
        - airflow.operators
        - airflow.security
        - airflow.sensors
        - airflow.task
        - airflow.task.task_runner
        - airflow.ti_deps
        - airflow.ti_deps.deps
        - airflow.utils
        - airflow.utils.log
        - airflow.www
        - airflow.www.api
        - airflow.www.api.experimental
        - airflow.www_rbac
        - airflow.www_rbac.api
        - airflow.www_rbac.api.experimental


  - name: {{ name }}-with-async
    requirements:
      run:
        - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
        - greenlet >=0.4.9
        - eventlet >=0.9.7
        - gevent >=0.13

  # - name: {{ name }}-with-atlas
  #   requirements:
  #     run:
  #       - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
  #       - atlasclient >=0.1.2
  #   test:
  #     imports:
  #       - airflow.lineage.backend.atlas

  - name: {{ name }}-with-azure_blob_storage
    requirements:
      run:
        - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
        - azure-storage >=0.34.0
        - azure-storage-blob <12.0

  # we are missing azure-mgmt-datalake-store and azure-datalake-store
  # - name: {{ name }}-with-azure_data_lake
  #   requirements:
  #     run:
  #       - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
  #       - azure-mgmt-resource ==1.2.2
  #       - azure-mgmt-datalake-store ==0.4.0
  #       - azure-datalake-store ==0.0.19

  - name: {{ name }}-with-azure_cosmos
    requirements:
      run:
        - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
        - azure-cosmos >=3.0.1

  - name: {{ name }}-with-azure-mgmt-containerinstance
    requirements:
      run:
        - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
        - azure-mgmt-containerinstance >=1.5.0

  - name: {{ name }}-with-cassandra
    requirements:
      run:
        - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
        - cassandra-driver >=3.13.0,<3.21.0

  - name: {{ name }}-with-celery
    requirements:
      run:
        - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
        - celery >=4.3.0,<4.4.0
        - flower >=0.7.3,<1.0
        - tornado >=4.2.0
        - kombu ==4.6.3  # [py<30]

  - name: {{ name }}-with-cgroups
    requirements:
      run:
        - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
        - cgroupspy >=0.1.4

  - name: {{ name }}-with-cloudant
    requirements:
      run:
        - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
        - cloudant >=2.0

  - name: {{ name }}-with-crypto
    requirements:
      run:
        - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
        - cryptography >=0.9.3

  - name: {{ name }}-with-dask
    requirements:
      run:
        - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
        - distributed >=1.17.1

  - name: {{ name }}-with-databricks
    requirements:
      run:
        - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
        - requests >=2.20.0,<3

  - name: {{ name }}-with-datadog
    requirements:
      run:
        - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
        - datadog >=0.14.0

  - name: {{ name }}-with-docker
    requirements:
      run:
        - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
        - docker-py >=3.0.0

  - name: {{ name }}-with-druid
    requirements:
      run:
        - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
        - pydruid >=0.4.1,<=0.5.8

  - name: {{ name }}-with-elasticsearch
    requirements:
      run:
        - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
        - elasticsearch >=5.0.0
        - elasticsearch-dsl >=5.0.0

  - name: {{ name }}-with-emr
    requirements:
      run:
        - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
        - boto3 >=1.0.0

  # we are missing google-cloud-container
  # - name: {{ name }}-with-gcp_api
  #   requirements:
  #     run:
  #       - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
  #       - httplib2 >=0.9.2
  #       - google-api-python-client >=1.6.0,<2.0.0dev
  #       - google-auth >=1.0.0,<2.0.0dev
  #       - google-auth-httplib2 >=0.0.1
  #       - google-cloud-container >=0.1.1
  #       - pyopenssl
  #       - pandas-gbq

  - name: {{ name }}-with-hdfs
    requirements:
      run:
        - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
        - snakebite >=2.7.8

  # - name: {{ name }}-with-hive
  #   requirements:
  #     run:
  #       - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
  #       - hmsclient >=0.1.0
  #       - pyhive >=0.6.0

  - name: {{ name }}-with-jdbc
    requirements:
      run:
        - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
        - jaydebeapi >=1.1.1

  - name: {{ name }}-with-jenkins
    requirements:
      run:
        - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
        - python-jenkins >=1.0.0

  - name: {{ name }}-with-jira
    requirements:
      run:
        - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
        - jira >=1.0.7

  # We are missing python-krbv and apple/kerberos
  #- name: {{ name }}-with-kerberos
  #  requirements:
  #    run:
  #      - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
  #      - pykerberos >=1.1.13
  #      - requests-kerberos >=0.10.0
  #      - thrift_sasl >=0.2.0
  #      - sasl
  #      - python-krbv
  #      - kerberos >=1.2.5

  - name: {{ name }}-with-kubernetes
    requirements:
      run:
        - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
        - python-kubernetes >=3.0.0
        - cryptography >=2.0.0

  - name: {{ name }}-with-ldap
    requirements:
      run:
        - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
        - {{ name }}
        - ldap3 >=2.5.1

  - name: {{ name }}-with-mongo
    requirements:
      run:
        - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
        - pymongo >=3.6.0
        - dnspython >=1.13.0,<2.0.0

  - name: {{ name }}-with-mssql
    requirements:
      run:
        - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
        - {{ name }}
        - pymssql >=2.1.1,<2.2.0

  - name: {{ name }}-with-mysql
    requirements:
      run:
        - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
        - {{ name }}
        - mysqlclient >=1.3.6

  #- name: {{ name }}-with-oracle
  #  requirements:
  #    run:
  #      - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
  #      - {{ name }}
  #      - cx_oracle>=5.1.2

  - name: {{ name }}-with-password
    requirements:
      run:
        - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
        - bcrypt >=2.0.0
        - flask-bcrypt >=0.7.1

  # - name: {{ name }}-with-pinot
  #   requirements:
  #     run:
  #       - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
  #       - pinotdb >=0.1.1

  - name: {{ name }}-with-postgres
    requirements:
      run:
        - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
        - psycopg2 >=2.7.4

  - name: {{ name }}-with-qds
    requirements:
      run:
        - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
        - qds-sdk >=1.10.4

  - name: {{ name }}-with-rabbitmq
    requirements:
      run:
        - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
        - librabbitmq >=1.6.1

  - name: {{ name }}-with-redis
    requirements:
      run:
        - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
        - redis-py >=3.2.0

  - name: {{ name }}-with-salesforce
    requirements:
      run:
        - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
        - simple-salesforce >=0.72

  - name: {{ name }}-with-samba
    requirements:
      run:
        - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
        - pysmbclient >=0.1.3

  # - name: {{ name }}-with-segment
  #   requirements:
  #     run:
  #       - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
  #       - analytics-python >=1.2.9

  - name: {{ name }}-with-sendgrid
    requirements:
      run:
        - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
        - sendgrid >=6.0.0

  - name: {{ name }}-with-slack
    requirements:
      run:
        - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
        - slackclient >=1.0.0,<2.0.0

  # - name: {{ name }}-with-snowflake
  #   requirements:
  #     run:
  #       - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
  #       - snowflake-connector-python >=1.5.2
  #       - snowflake-sqlalchemy >=1.1.0

  - name: {{ name }}-with-ssh
    requirements:
      run:
        - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
        - paramiko >=2.1.1
        - pysftp >=0.2.9
        - sshtunnel >=0.1.4,<0.2

  - name: {{ name }}-with-statsd
    requirements:
      run:
        - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
        - statsd >=3.3.0,<4.0

  - name: {{ name }}-with-vertica
    requirements:
      run:
        - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
        - vertica-python >=0.5.1

  - name: {{ name }}-with-webhdfs
    requirements:
      run:
        - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
        # note: upstream dependency is hdfs[avro,dataframe,kerberos] >=2.0.4
        #       not sure if this needs to be updated here.
        - python-hdfs >=0.5.1

  - name: {{ name }}-with-winrm
    requirements:
      run:
        - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
        - pywinrm >=0.4.0,<0.5.0

  # - name: {{ name }}-with-zendesk
  #   requirements:
  #     run:
  #       - {{ pin_subpackage(name, max_pin='x.x.x.x.x.x') }}
  #       - zdesk

about:
  home: http://airflow.apache.org
  license: Apache 2.0
  license_file: LICENSE
  summary: |
    Airflow is a platform to programmatically author, schedule and monitor
    workflows

  description: |
    Use airflow to author workflows as directed acyclic graphs (DAGs)
    of tasks. The airflow scheduler executes your tasks on an array of
    workers while following the specified dependencies. Rich command
    line utilities make performing complex surgeries on DAGs a snap.
    The rich user interface makes it easy to visualize pipelines
    running in production, monitor progress, and troubleshoot issues
    when needed.

    When workflows are defined as code, they become more maintainable,
    versionable, testable, and collaborative.

  doc_url: http://pythonhosted.org/airflow/profiling.html
  dev_url: https://github.com/apache/airflow

extra:
  recipe-maintainers:
    - sodre
    - halldc
    - xylar
