jknife 0.0.8__py2.py3-none-any.whl → 0.0.11__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
jknife/commands/jknife.py CHANGED
@@ -1,5 +1,6 @@
1
1
  import sys
2
2
  import os
3
+ import subprocess
3
4
 
4
5
 
5
6
  FOLDER_LIST: tuple = ("models", "routers", "views", )
@@ -12,7 +13,7 @@ Usage: jknife [sub_command] [3rd argument]
12
13
  * sub_command:
13
14
  - startproject [PROJECT_NAME] : create project filesystem
14
15
  - createapp [APP_NAME] : create API application in project
15
- - run [OPTIONS] : run server with uvicorn
16
+ - runserver [OPTIONS] : run server with uvicorn
16
17
 
17
18
  [run OPTIONS]
18
19
  --host [HOSTNAME] : run server with hostname [HOSTNAME]
@@ -20,9 +21,9 @@ Usage: jknife [sub_command] [3rd argument]
20
21
  --reload : reload uvicorn server automatically after editing source.
21
22
  """
22
23
 
23
- # Template for models/APP_NAME.py
24
- MODULE_IMPORT_STRING_MODELS: str = """
25
- # import packages from default or pip library
24
+ # Template for APP_NAME.py in each folder.
25
+ MODULE_IMPORT_STRING_DICT: dict = {
26
+ "models": """# import packages from default or pip library
26
27
  from typing_extensions import Annotated, Doc
27
28
 
28
29
  # import packages from this framework below
@@ -32,10 +33,8 @@ from typing_extensions import Annotated, Doc
32
33
 
33
34
 
34
35
  # define your own customising class below
35
- """
36
-
37
- # Template for routers/APP_NAME.py
38
- MODULE_IMPORT_STRING_ROUTERS: str = """# import packages from default or pip library
36
+ """,
37
+ "views": """# import packages from default or pip library
39
38
  from fastapi import APIRouter, Depends, status, HTTPException
40
39
  from typing_extensions import Annotated, Doc
41
40
 
@@ -47,11 +46,9 @@ router = APIRouter(prefix="/{}",
47
46
  tags=['{}'])
48
47
 
49
48
  # define your own customising class below
50
- """
51
-
52
- # Template for views/APP_NAME.py
53
- MODULE_IMPORT_STRING_VIEWS: str = """# import packages from default or pip library
54
- from pydantic import BaseModel
49
+ """,
50
+ "routers": """# import packages from default or pip library
51
+ from pydantic import BaseModel, field_validator, ValidationError
55
52
 
56
53
  # import packages from this framework below
57
54
 
@@ -61,10 +58,14 @@ from pydantic import BaseModel
61
58
 
62
59
  # define your own customising class below
63
60
  """
61
+ }
64
62
 
65
63
  # WARN MSGs
66
64
  WARN_MSG_ALREADY_EXIST_PROJECT: str = """
67
- [WARNING] You already have project '{}'.
65
+ [WARNING] You already have project named '{}'.
66
+ """
67
+ WARN_MSG_ALREADY_EXIST_APP: str = """
68
+ [WARNING] You already have app named '{}'.
68
69
  """
69
70
 
70
71
  # ERROR MSGs
@@ -74,6 +75,9 @@ ERROR_MSG_START_PROJECT: str = """
74
75
 
75
76
  * Command for Starting Project: jknife startproject [PROJECT_NAME]
76
77
  """
78
+ ERROR_MSG_IMPOSSIBLE_RUNSERVER_OUT_OF_PROJECT: str = """
79
+ [ERROR] You have to execute 'runserver' command in your project folder.
80
+ """
77
81
 
78
82
  # File Contents
79
83
  CONTENTS_IN_SETTINGS: str = """# this file is charge of config for custom fastapi.
@@ -315,24 +319,25 @@ def startproject(pjt_name: str) -> None:
315
319
  def createapp(app_name: str) -> None:
316
320
  # check main folders for jknife
317
321
  for folder_name in FOLDER_LIST:
318
- try:
319
- if os.listdir(folder_name):
322
+ try:
323
+ if not os.listdir(folder_name):
320
324
  with open(f"{folder_name}/__init__.py", "w") as f:
321
325
  f.write("")
322
326
 
323
- except FileNotFoundError:
324
- print(ERROR_MSG_START_PROJECT)
325
- return None
327
+ if f"{app_name}.py" not in os.listdir(folder_name):
328
+ with open(f"{folder_name}/{app_name}.py", "w") as f:
329
+ f.write(MODULE_IMPORT_STRING_DICT.get(folder_name))
326
330
 
327
- # create app.py in 'models' folder
328
- with open(f"models/{app_name}.py", "w") as f:
329
- f.write(MODULE_IMPORT_STRING_MODELS)
331
+ else:
332
+ raise AttributeError
330
333
 
331
- with open(f"routers/{app_name}.py", "w") as f:
332
- f.write(MODULE_IMPORT_STRING_ROUTERS.format(app_name, app_name))
334
+ except FileNotFoundError:
335
+ print(ERROR_MSG_START_PROJECT)
336
+ return None
333
337
 
334
- with open(f"views/{app_name}.py", "w") as f:
335
- f.write(MODULE_IMPORT_STRING_VIEWS)
338
+ except AttributeError:
339
+ print(WARN_MSG_ALREADY_EXIST_APP.format(app_name))
340
+ return None
336
341
 
337
342
  return None
338
343
 
@@ -340,9 +345,15 @@ def help_msg():
340
345
  print(HELP_MSG)
341
346
  return None
342
347
 
343
- def run_server(options: list):
344
- args = "".join([ option.replace("=", "") for option in options ])
345
- print(f"uvicorn main:app {args}")
348
+ def run_server(options: list, app_name: str = "main"):
349
+ for f in FOLDER_LIST:
350
+ if f not in os.listdir():
351
+ print(ERROR_MSG_IMPOSSIBLE_RUNSERVER_OUT_OF_PROJECT)
352
+ return None
353
+
354
+ args = " ".join([ option.replace("=", " ") for option in options ])
355
+ command = f"uvicorn {app_name}:app {args}"
356
+ result_cmd = subprocess.call(command, shell=True)
346
357
  return None
347
358
 
348
359
  def main() -> None:
@@ -359,7 +370,7 @@ def main() -> None:
359
370
  createapp(app_name=read_command[2])
360
371
  return None
361
372
 
362
- elif sub_command == "run":
373
+ elif sub_command == "runserver":
363
374
  run_server(read_command[2:])
364
375
  return None
365
376
 
@@ -4,7 +4,7 @@ from typing_extensions import Annotated, Doc
4
4
  from mongoengine import Document, BooleanField, DateTimeField, IntField, StringField
5
5
 
6
6
  # import packages from this framework
7
- from src.jknife.db.models.rdbms.users import encrypt_password
7
+ from ..rdbms.users import encrypt_password
8
8
 
9
9
 
10
10
  # define Class for Common SQLModel
jknife/views/users.py CHANGED
@@ -4,8 +4,8 @@ from typing_extensions import Annotated, Doc
4
4
  from pydantic import BaseModel, field_validator
5
5
 
6
6
  # import packages from this framework
7
- from src.jknife.views.personnel_info import EmailInputViewMixin
8
- from src.jknife.dependencies.users import validate_password_policy
7
+ from jknife.views.personnel_info import EmailInputViewMixin
8
+ from jknife.dependencies.users import validate_password_policy
9
9
 
10
10
 
11
11
  # define mixin class
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jknife
3
- Version: 0.0.8
3
+ Version: 0.0.11
4
4
  Summary: Custom FastAPI for luna-negra
5
5
  Author: luna-negra
6
6
  License-Expression: MIT
@@ -1,7 +1,7 @@
1
1
  jknife/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
2
  jknife/logging.py,sha256=vwXXYqiRDRSeAUtDZq6QTTJ5p7ES4iLdnS68Cz0MFgo,2312
3
3
  jknife/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
- jknife/commands/jknife.py,sha256=Uz1RPczM9WqPoH0PKNLuWpZdhRyjdIU51nTgXeeIWJQ,11757
4
+ jknife/commands/jknife.py,sha256=ol0QKc1nz98dnZc7HcFypbbctfTFUbX_v1yyevJ-meE,12235
5
5
  jknife/db/__init__.py,sha256=lZQ1ds_BYK4Xkjaypn1zDxuypjdEKca-6uxSJ3mr0V4,6236
6
6
  jknife/db/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
7
  jknife/db/models/mongo/__init__.py,sha256=bDj6rFEtNudrbtPbk4iORlWwXyMv6V_PCeixyGufxP4,1984
@@ -9,7 +9,7 @@ jknife/db/models/mongo/network.py,sha256=MfFq05k_42uw4mMfcd62K7MOhuk0E5OuqfxmHD_
9
9
  jknife/db/models/mongo/personnel_info.py,sha256=wIalbvVI1bqCTOsShrSvy29I6OrdqaY6nYGhSxRFTf0,3273
10
10
  jknife/db/models/mongo/settings.py,sha256=mFJQAAeoyWEY1J6y5_l1p4JevOYHyX27wL5A-gO35bg,2219
11
11
  jknife/db/models/mongo/token.py,sha256=Xfw6LlAZ8Qu2iA9vYxyTk52aq4KoMLZ9P0KBRDiOBLI,2410
12
- jknife/db/models/mongo/users.py,sha256=xTlkK5BiF5oSaeFyF1aTh7JDpu2K6Jr0MI2ALt0BoSA,2931
12
+ jknife/db/models/mongo/users.py,sha256=6YmUTnR-Ru-J2XotnJHifQKfIgktAVV27MQZMIvssKE,2912
13
13
  jknife/db/models/rdbms/__init__.py,sha256=0r22xz8J_kENMiPNVr_t3P5iILGXsll38wXXwnREABc,1847
14
14
  jknife/db/models/rdbms/network.py,sha256=lk3p4UBbsnPRuwr5Q4CGXDL9bSAlZAEaUz-GVfEWc0U,1040
15
15
  jknife/db/models/rdbms/personnel_info.py,sha256=OBwMvg8K_3XqKSSaeJzDir_pIIHNd3cxdL-2IsQFuFQ,2976
@@ -23,9 +23,9 @@ jknife/views/__init__.py,sha256=uXUiBzToN6gmb7zcHUyPbniNjCtzbyN31FrIVs7PpI0,596
23
23
  jknife/views/error_message.py,sha256=g3xS8Z0R1BeP9XpmETgLirDdghM789iGXBfU-K8wwWM,887
24
24
  jknife/views/personnel_info.py,sha256=JL_GqerZjhgs4AJQsQ2eeUZxCh17G8zXuWsDqaEI2tk,957
25
25
  jknife/views/tokens.py,sha256=PJh_fGEwK3T6Kq0aY-CuJPWCTdcHFrCSd2NhJMZqYqU,647
26
- jknife/views/users.py,sha256=ndbSTMlEeiwazfejHrGj37Jnw-e40Y6YoZwzyyyM4ns,2041
27
- jknife-0.0.8.dist-info/METADATA,sha256=eTsvfnEq40nBbG6pBf6JTxzowsKZkaX9Wysbl9SVYTw,528
28
- jknife-0.0.8.dist-info/WHEEL,sha256=tkmg4JIqwd9H8mL30xA7crRmoStyCtGp0VWshokd1Jc,105
29
- jknife-0.0.8.dist-info/entry_points.txt,sha256=08tkSuEw5jKr7Jz0cFlcKr8b2fjsQIf4Mzmb0cB8XOM,55
30
- jknife-0.0.8.dist-info/licenses/LICENSE,sha256=myY0xrsHJcytQadTeGVqmIo6QlskAAf5epHL-WRQe30,1067
31
- jknife-0.0.8.dist-info/RECORD,,
26
+ jknife/views/users.py,sha256=mcljiLn9I0NL6jK_cxp8IdNXcyNwxYtfzkwW0NS64-E,2033
27
+ jknife-0.0.11.dist-info/METADATA,sha256=GsWgkaoEPRqcmfxCUNAkkVeM7JdCW2yKKis7-pK36QA,529
28
+ jknife-0.0.11.dist-info/WHEEL,sha256=tkmg4JIqwd9H8mL30xA7crRmoStyCtGp0VWshokd1Jc,105
29
+ jknife-0.0.11.dist-info/entry_points.txt,sha256=08tkSuEw5jKr7Jz0cFlcKr8b2fjsQIf4Mzmb0cB8XOM,55
30
+ jknife-0.0.11.dist-info/licenses/LICENSE,sha256=myY0xrsHJcytQadTeGVqmIo6QlskAAf5epHL-WRQe30,1067
31
+ jknife-0.0.11.dist-info/RECORD,,