22import typing as t
33
44from click import ClickException
5+ from ellar .constants import ELLAR_PY_PROJECT
6+ from ellar .core import App , Config , ModuleBase
7+ from ellar .helper .importer import import_from_string , module_import
8+ from ellar .helper .module_loading import module_dir
59from tomlkit import dumps as tomlkit_dumps , parse as tomlkit_parse , table
610from tomlkit .items import Table
711
8- from ellar .constants import ELLAR_PY_PROJECT
9- from ellar .core import App , Config , ModuleBase , schema
1012from ellar_cli .schema import EllarPyProjectSerializer
11- from ellar .helper .importer import import_from_string , module_import
12- from ellar .helper .module_loading import module_dir
1313
1414PY_PROJECT_TOML = "pyproject.toml"
1515ELLAR_DEFAULT_KEY = "default"
@@ -23,7 +23,9 @@ class EllarCLIException(ClickException):
2323class EllarPyProject :
2424 def __init__ (self , ellar : Table = None ) -> None :
2525 self ._ellar = ellar if ellar is not None else table ()
26- self ._projects = self ._ellar .setdefault (ELLAR_PROJECTS_KEY , table ())
26+ self ._projects = t .cast (
27+ Table , self ._ellar .setdefault (ELLAR_PROJECTS_KEY , table ())
28+ )
2729 self ._default_project = self ._ellar .get (ELLAR_DEFAULT_KEY , None )
2830
2931 @classmethod
@@ -49,11 +51,11 @@ def get_projects(self) -> Table:
4951 return self ._projects
5052
5153 def get_project (self , project_name : str ) -> Table :
52- return self ._projects .get (project_name )
54+ return t . cast ( Table , self ._projects .get (project_name ) )
5355
5456 def get_or_create_project (self , project_name : str ) -> Table :
5557 project = self ._projects .setdefault (project_name .lower (), table ())
56- return project
58+ return t . cast ( Table , project )
5759
5860 def has_project (self , project_name : t .Optional [str ]) -> bool :
5961 if not project_name :
@@ -65,7 +67,7 @@ def get_root_node(self) -> Table:
6567
6668
6769class EllarCLIService :
68- schema_cls : t .Type [schema . Serializer ] = EllarPyProjectSerializer
70+ schema_cls : t .Type [EllarPyProjectSerializer ] = EllarPyProjectSerializer
6971
7072 def __init__ (
7173 self ,
@@ -101,7 +103,7 @@ def import_project_meta(
101103 cls , project : t .Optional [str ] = None
102104 ) -> t .Optional ["EllarCLIService" ]:
103105 cwd = os .getcwd ()
104- project_to_load : t . Optional [ str ] = None
106+ project_to_load : str = "ellar"
105107 ellar_py_projects = None
106108
107109 py_project_file_path = os .path .join (cwd , PY_PROJECT_TOML )
@@ -118,16 +120,13 @@ def import_project_meta(
118120 project
119121 ) or ellar_py_projects .has_project (ellar_py_projects .default_project ):
120122 project_to_load = (
121- project
123+ project # type: ignore
122124 if ellar_py_projects .has_project (project )
123125 else ellar_py_projects .default_project
124126 )
125127
126- _ellar_pyproject_serializer = t .cast (
127- EllarPyProjectSerializer ,
128- cls .schema_cls .parse_obj (
129- ellar_py_projects .get_project (project_to_load )
130- ),
128+ _ellar_pyproject_serializer = cls .schema_cls .parse_obj (
129+ ellar_py_projects .get_project (project_to_load )
131130 )
132131
133132 return cls (
@@ -137,6 +136,7 @@ def import_project_meta(
137136 app_name = project_to_load ,
138137 ellar_py_projects = ellar_py_projects ,
139138 )
139+ return None
140140
141141 def create_ellar_project_meta (self , project_name : str ) -> None :
142142 pyproject_table = EllarCLIService .read_py_project (self .py_project_path )
@@ -173,32 +173,40 @@ def read_py_project(path: str) -> t.Optional[Table]:
173173 with open (path , mode = "r" ) as fp :
174174 table_content = tomlkit_parse (fp .read ())
175175 return table_content
176+ return None
176177
177178 @staticmethod
178179 def write_py_project (path : str , content : Table ) -> None :
179180 with open (path , mode = "w" ) as fw :
180181 fw .writelines (tomlkit_dumps (content ))
181182
182183 def import_application (self ) -> "App" :
183- application_module = import_from_string (self ._meta .application )
184+ assert self ._meta
185+ application_module = t .cast ("App" , import_from_string (self ._meta .application ))
184186 return application_module
185187
186188 def import_configuration (self ) -> t .Type ["Config" ]:
187- config = import_from_string (self ._meta .config )
189+ assert self ._meta
190+ config = t .cast (t .Type ["Config" ], import_from_string (self ._meta .config ))
188191 return config
189192
190193 def get_application_config (self ) -> "Config" :
194+ assert self ._meta
191195 config = Config (self ._meta .config )
192196 return config
193197
194198 def import_root_module (self ) -> t .Type ["ModuleBase" ]:
195- root_module = import_from_string (self ._meta .root_module )
199+ assert self ._meta
200+ root_module = t .cast (
201+ t .Type ["ModuleBase" ], import_from_string (self ._meta .root_module )
202+ )
196203 return root_module
197204
198205 def import_apps_module (self ) -> t .Any :
206+ assert self ._meta
199207 apps_module = module_import (self ._meta .apps_module )
200208 return apps_module
201209
202210 def get_apps_module_path (self ) -> str :
203211 apps_module = self .import_apps_module ()
204- return module_dir (apps_module )
212+ return module_dir (apps_module ) # type: ignore
0 commit comments