.flake8_template:
  stage: build
  before_script: ${PYTHON_VERSION} -m pip -q install flake8
  script:
    - find . -type f -executable ! -name "*.*" -exec awk ' /^#!.*python/{print FILENAME}  {nextfile}' {} + > /tmp/python_files # python files with no extension but with shebang
    - find . -type f -name "*.py" >> /tmp/python_files
    - sort /tmp/python_files | uniq | xargs ${PYTHON_VERSION} -m flake8 --max-line-length 120 --statistics --show-source

.flake8_extended_template:
  extends: .flake8_template
  stage: .post
  before_script:
    - ${PYTHON_VERSION} -m pip install flake8 flake8-isort flake8-builtins flake8-eradicate flake8-functions-names flake8-return flake8-functions
  allow_failure: true

.security_template:
  stage: .post
  before_script:
    - ${PYTHON_VERSION} -m pip install bandit
  script:
    - bandit -r .
  allow_failure: true

.py3_template:
  image: python:3-alpine
  variables:
    PYTHON_VERSION: python3

.py2_template:
  image: python:2-alpine
  variables:
    PYTHON_VERSION: python2

.py3-flake8:
  extends:
    - .flake8_template
    - .py3_template

.py2-flake8:
  extends:
    - .flake8_template
    - .py2_template

.py3-flake8_extended:
  extends:
    - .flake8_extended_template
    - .py3_template

.py3-security:
  extends:
    - .security_template
    - .py3_template