From da1dc81c3ee76d7c46f43ffc595c632f811e9742 Mon Sep 17 00:00:00 2001 From: Martin Mares <mj@ucw.cz> Date: Sat, 26 Dec 2020 22:08:57 +0100 Subject: [PATCH] =?UTF-8?q?Zkou=C5=A1=C3=ADm=20si=20hr=C3=A1t=20s=20typov?= =?UTF-8?q?=C3=A1n=C3=ADm?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .mypy.ini | 2 ++ dev-requirements.txt | 13 +++++++++++++ test.py | 19 +++++++++++++++++-- 3 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 .mypy.ini create mode 100644 dev-requirements.txt diff --git a/.mypy.ini b/.mypy.ini new file mode 100644 index 00000000..d2d948d5 --- /dev/null +++ b/.mypy.ini @@ -0,0 +1,2 @@ +[mypy] +plugins=sqlmypy diff --git a/dev-requirements.txt b/dev-requirements.txt new file mode 100644 index 00000000..a771a7a6 --- /dev/null +++ b/dev-requirements.txt @@ -0,0 +1,13 @@ +# Development tools +python-language-server +mypy +sqlalchemy-stubs +pyls-mypy +pycodestyle +pyflakes +pylint +rope +future +autopep8 +pydocstyle +yapf diff --git a/test.py b/test.py index 52de5fae..c1118768 100755 --- a/test.py +++ b/test.py @@ -1,12 +1,23 @@ #!/usr/bin/env python3 -from sqlalchemy import create_engine, Column, Integer, String, ForeignKey, Enum +from sqlalchemy import create_engine, Column, Integer, String, ForeignKey from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import relationship, sessionmaker +from typing import List, TYPE_CHECKING, TypeVar, Type, Any import sqlalchemy.engine.url import config import enum +# HACK: Work-around for https://github.com/dropbox/sqlalchemy-stubs/issues/114 +if TYPE_CHECKING: + from sqlalchemy.sql.type_api import TypeEngine + T = TypeVar('T') + class Enum(TypeEngine[T]): + def __init__(self, enum: Type[T], **kwargs: Any) -> None: ... +else: + from sqlalchemy import Enum + + engine_url = sqlalchemy.engine.url.URL( drivername='postgresql', username=config.DB_USER, @@ -19,11 +30,13 @@ engine = create_engine(engine_url, echo=True) Base = declarative_base() + class PlaceType(enum.Enum): region = 1 school = 2 site = 3 + class Place(Base): __tablename__ = 'places' @@ -37,13 +50,14 @@ class Place(Base): children = relationship('Place') + Session = sessionmaker(bind=engine) session = Session() session.query(Place).delete() with open('db/regions') as reg_list: - stack = [] + stack: List[Place] = [] for line in reg_list: line = line.rstrip() cols = line.split('\t') @@ -65,4 +79,5 @@ with open('db/regions') as reg_list: session.flush() stack.append(place) + session.commit() -- GitLab