Commit 9dd2ce33 authored by karp's avatar karp
Browse files

Merge branch 'add-mypy-pipeline' into 'master'

Update pipeline to check types and formatting

See merge request !27
parents c02109e4 399679d1
Loading
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
stages:
    - test
    - deploy

variables:
  PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"

lint-openapi:
    image:
        name: redocly/cli
@@ -36,6 +43,20 @@ test-frontend:
            - cypress/screenshots
        expire_in: 1 week

test-python:
    image: python:latest
    stage: test
    cache: 
      paths:
        - .cache/pip
    before_script:
        - pip install pipenv
        - pipenv requirements --dev > requirements.txt
        - pip install -r requirements.txt 
    script:
        - black --check $CI_PROJECT_DIR
        - mypy .

# This snippet is copied and modified from the GitLab Documentation (as of 2021-01-10, the contents of the script seem to have changed by now)
#   * Title of the documentation page: "Building a Docker image with kaniko"
#   * Author: (c) 2011-present GitLab B.V.
+11 −0
Original line number Diff line number Diff line
@@ -94,6 +94,17 @@ Please run `alembic upgrade head` after pulling changes from the repository.

---

## Compliance

### Formatting

We use [black](https://github.com/psf/black) as formatting tool.
Use `black .` to run the formatter.

### Static Type Checking

Run `mypy .` to let [mypy](https://www.mypy-lang.org/) validate the Python types.

## How to move around in this repo

## `/portal/`: Main Application
+1 −1
Original line number Diff line number Diff line
@@ -9,7 +9,7 @@ from flask_sqlalchemy import SQLAlchemy

from .db_config import get_database_uri, get_uri_for_sqlite

db = SQLAlchemy()
db: SQLAlchemy = SQLAlchemy()

from .model import *

+4 −1
Original line number Diff line number Diff line
from flask import Flask
from typing import Any

from portal import db

BaseModel: Any = db.Model

class FlaskConfigEntry(db.Model):

class FlaskConfigEntry(BaseModel):
    """
    A configuration entry for Flask (a key-value pair) as persisted in a database
    """
+5 −2
Original line number Diff line number Diff line
from abc import abstractmethod
from typing import Any, List, Optional, Self
from sqlalchemy import Column

from flask import g

from portal import db

BaseModel: Any = db.Model

class Retrievable(db.Model):

class Retrievable(BaseModel):
    """
    A type whose instances can be retrieved from the database.

@@ -17,7 +20,7 @@ class Retrievable(db.Model):
    __abstract__ = True

    @classmethod
    def get_canonical_order_column(cls) -> Optional[db.Column]:
    def get_canonical_order_column(cls) -> Optional[Column]:
        """
        Return the colum by which instances of this type should be canonically ordered
        when retrieving them all from the database.