From cadc1a51476e3d2d7bfef3201816319e3a8f68b5 Mon Sep 17 00:00:00 2001
From: Pavel Kirilin <win10@list.ru>
Date: Tue, 6 Oct 2020 21:26:21 +0400
Subject: [PATCH] Updated generation.

Signed-off-by: Pavel Kirilin <win10@list.ru>
---
 hooks/post_gen_project.py                     |  6 ++--
 .../.pre-commit-config.yaml                   |  1 +
 .../conditional_files.json                    | 29 +++++++++++++++++++
 .../conditional_files.yaml                    | 19 ------------
 {{cookiecutter.project_name}}/src/server.py   | 21 ++++++--------
 .../tests/conftest.py                         |  8 ++---
 .../tests/dummy_db_test.py                    |  2 +-
 7 files changed, 47 insertions(+), 39 deletions(-)
 create mode 100644 {{cookiecutter.project_name}}/conditional_files.json
 delete mode 100644 {{cookiecutter.project_name}}/conditional_files.yaml

diff --git a/hooks/post_gen_project.py b/hooks/post_gen_project.py
index 9bfbf59..5036290 100644
--- a/hooks/post_gen_project.py
+++ b/hooks/post_gen_project.py
@@ -4,9 +4,9 @@ import shutil
 import subprocess
 import sys
 
-import yaml
+import json
 
-MANIFEST = "conditional_files.yaml"
+MANIFEST = "conditional_files.json"
 FIRST_RUN_WIN = "first_run.bat"
 FIRST_RUN = "first_run.sh"
 
@@ -22,7 +22,7 @@ def delete_resource(resource):
 
 def delete_resources_for_disabled_features():
     with open(MANIFEST) as manifest_file:
-        manifest = yaml.safe_load(manifest_file)
+        manifest = json.load(manifest_file)
         for feature in manifest['features']:
             if not feature['enabled']:
                 print("removing resources for disabled feature {}...".format(feature['name']))
diff --git a/{{cookiecutter.project_name}}/.pre-commit-config.yaml b/{{cookiecutter.project_name}}/.pre-commit-config.yaml
index 74f1210..1fff678 100644
--- a/{{cookiecutter.project_name}}/.pre-commit-config.yaml
+++ b/{{cookiecutter.project_name}}/.pre-commit-config.yaml
@@ -35,6 +35,7 @@ repos:
           - "--pretty"
           - "--show-error-codes"
           - "--no-warn-return-any"
+          - "--implicit-reexport"
           - "--allow-untyped-decorators"
         exclude: >
           (?x)^(
diff --git a/{{cookiecutter.project_name}}/conditional_files.json b/{{cookiecutter.project_name}}/conditional_files.json
new file mode 100644
index 0000000..5169557
--- /dev/null
+++ b/{{cookiecutter.project_name}}/conditional_files.json
@@ -0,0 +1,29 @@
+{
+  "features": [
+    {
+      "name": "Redis support",
+      "enabled": {{cookiecutter.add_redis|lower}},
+      "resources": [
+        "src/services/redis.py",
+        "src/api/redis_api"
+      ]
+    },
+    {
+      "name": "Systemd support",
+      "enabled": {{cookiecutter.add_systemd|lower}},
+      "resources": [
+        "systemd"
+      ]
+    },
+    {
+      "name": "Dummy DB model",
+      "enabled": {{cookiecutter.add_dummy_model|lower}},
+      "resources": [
+        "src/models/dummy_db_model.py",
+        "migrations/versions/7ae297ab5ac1_created_dummy_model.py",
+        "tests/dummy_db_test.py",
+        "src/api/dummy_db"
+      ]
+    }
+  ]
+}
\ No newline at end of file
diff --git a/{{cookiecutter.project_name}}/conditional_files.yaml b/{{cookiecutter.project_name}}/conditional_files.yaml
deleted file mode 100644
index cf11571..0000000
--- a/{{cookiecutter.project_name}}/conditional_files.yaml
+++ /dev/null
@@ -1,19 +0,0 @@
-features:
-  - name: Redis support
-    enabled: {{cookiecutter.add_redis|lower}}
-    resources:
-      - src/services/redis.py
-      - src/api/redis_api
-
-  - name: Systemd support
-    enabled: {{cookiecutter.add_systemd|lower}}
-    resources:
-      - systemd
-
-  - name: Dummy DB model
-    enabled: {{cookiecutter.add_dummy_model|lower}}
-    resources:
-      - src/models/dummy_db_model.py
-      - migrations/versions/7ae297ab5ac1_created_dummy_model.py
-      - tests/dummy_db_test.py
-      - src/api/dummy_db
\ No newline at end of file
diff --git a/{{cookiecutter.project_name}}/src/server.py b/{{cookiecutter.project_name}}/src/server.py
index 59ac1cb..c569502 100644
--- a/{{cookiecutter.project_name}}/src/server.py
+++ b/{{cookiecutter.project_name}}/src/server.py
@@ -13,18 +13,15 @@ from src.services.redis import redis
 {% endif %}
 from src.settings import Settings, settings
 
-config = {
-    "handlers": [
-        {
-            "sink": sys.stderr,
-            "backtrace": False,
-            "diagnose": settings.is_dev,
-            "catch": False,
-            "colorize": settings.is_dev,
-        },
-    ]
-}
-logger.configure(**config)
+logger.configure(
+    handlers=[{
+        "sink": sys.stderr,
+        "backtrace": False,
+        "diagnose": settings.is_dev,
+        "catch": False,
+        "colorize": settings.is_dev,
+    }]
+)
 
 app = FastAPI(
     title="{{cookiecutter.project_name}}",
diff --git a/{{cookiecutter.project_name}}/tests/conftest.py b/{{cookiecutter.project_name}}/tests/conftest.py
index 9513830..a41373d 100644
--- a/{{cookiecutter.project_name}}/tests/conftest.py
+++ b/{{cookiecutter.project_name}}/tests/conftest.py
@@ -5,7 +5,7 @@ import alembic.config
 import pytest
 from fastapi.testclient import TestClient
 from sqlalchemy import create_engine
-from sqlalchemy.engine import Connection
+from sqlalchemy.engine import Connection, Engine
 from sqlalchemy.engine.url import URL, make_url
 from sqlalchemy.exc import ProgrammingError
 
@@ -15,7 +15,7 @@ from src.settings import settings
 warnings.filterwarnings("ignore", category=DeprecationWarning)
 
 
-def get_engine():
+def get_engine() -> Engine:
     pg_db_url = make_url(
         URL(
             drivername=settings.db_driver,
@@ -30,7 +30,7 @@ def get_engine():
     return engine
 
 
-def run_psql_without_transaction(command: str):
+def run_psql_without_transaction(command: str) -> None:
     engine = get_engine()
     connection = engine.connect()
     connection.connection.set_isolation_level(0)
@@ -40,7 +40,7 @@ def run_psql_without_transaction(command: str):
 
 
 @pytest.fixture(scope="session")
-def create_database():
+def create_database() -> None:
     try:
         run_psql_without_transaction(f"CREATE DATABASE {settings.postgres_db}")
     except ProgrammingError:
diff --git a/{{cookiecutter.project_name}}/tests/dummy_db_test.py b/{{cookiecutter.project_name}}/tests/dummy_db_test.py
index 4c09785..89bb371 100644
--- a/{{cookiecutter.project_name}}/tests/dummy_db_test.py
+++ b/{{cookiecutter.project_name}}/tests/dummy_db_test.py
@@ -25,7 +25,7 @@ def test_delete_dummy_obj(
 ) -> None:
     with app_fixture as client:
         put_result = client.put(
-            f"/dummy_db_obj/",
+            "/dummy_db_obj/",
             json=test_conf.request_data["json"],
         )
         assert put_result.status_code == 200
-- 
GitLab