ApiLogicServer 14.4.0__py3-none-any.whl → 14.5.3__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.
Files changed (95) hide show
  1. api_logic_server_cli/add_cust/add_cust.py +269 -0
  2. api_logic_server_cli/api_logic_server.py +18 -238
  3. api_logic_server_cli/api_logic_server_info.yaml +3 -3
  4. api_logic_server_cli/cli.py +38 -28
  5. api_logic_server_cli/create_from_model/__pycache__/api_logic_server_utils.cpython-312.pyc +0 -0
  6. api_logic_server_cli/create_from_model/__pycache__/dbml.cpython-312.pyc +0 -0
  7. api_logic_server_cli/create_from_model/__pycache__/ont_build.cpython-312.pyc +0 -0
  8. api_logic_server_cli/create_from_model/__pycache__/ont_create.cpython-312.pyc +0 -0
  9. api_logic_server_cli/create_from_model/api_logic_server_utils.py +47 -0
  10. api_logic_server_cli/create_from_model/dbml.py +113 -58
  11. api_logic_server_cli/create_from_model/ont_build.py +83 -60
  12. api_logic_server_cli/create_from_model/ont_create.py +2 -1
  13. api_logic_server_cli/database/basic_demo.sqlite +0 -0
  14. api_logic_server_cli/database/basic_demo.txt +1 -0
  15. api_logic_server_cli/database/basic_demo_wg.sqlite +0 -0
  16. api_logic_server_cli/manager.py +3 -2
  17. api_logic_server_cli/prototypes/base/.vscode/launch.json +3 -2
  18. api_logic_server_cli/prototypes/base/config/config.py +66 -11
  19. api_logic_server_cli/prototypes/base/config/default.env +7 -1
  20. api_logic_server_cli/prototypes/base/database/test_data/readme.md +2 -1
  21. api_logic_server_cli/prototypes/base/integration/kafka/kafka_producer.py +5 -2
  22. api_logic_server_cli/prototypes/base/integration/n8n/n8n_producer.py +68 -21
  23. api_logic_server_cli/prototypes/base/integration/n8n/n8n_readme.md +19 -0
  24. api_logic_server_cli/prototypes/base/test/basic/server_test.py +1 -1
  25. api_logic_server_cli/prototypes/basic_demo/README.md +29 -52
  26. api_logic_server_cli/prototypes/basic_demo/customizations/api/.DS_Store +0 -0
  27. api_logic_server_cli/prototypes/basic_demo/customizations/api/api_discovery/mcp_discovery.py +139 -0
  28. api_logic_server_cli/prototypes/basic_demo/customizations/api/api_discovery/openapi.py +92 -0
  29. api_logic_server_cli/prototypes/basic_demo/customizations/config/default.env +13 -0
  30. api_logic_server_cli/prototypes/basic_demo/customizations/config/server_setup.py +388 -0
  31. api_logic_server_cli/prototypes/basic_demo/customizations/database/db.sqlite +0 -0
  32. api_logic_server_cli/prototypes/basic_demo/customizations/database/models.py +131 -0
  33. api_logic_server_cli/prototypes/basic_demo/customizations/database/system/SAFRSBaseX.py +136 -0
  34. api_logic_server_cli/prototypes/basic_demo/customizations/integration/.DS_Store +0 -0
  35. api_logic_server_cli/prototypes/basic_demo/customizations/integration/mcp/.DS_Store +0 -0
  36. api_logic_server_cli/prototypes/basic_demo/customizations/integration/mcp/README_mcp.md +15 -0
  37. api_logic_server_cli/prototypes/basic_demo/customizations/integration/mcp/mcp_client_executor.py +350 -0
  38. api_logic_server_cli/prototypes/basic_demo/customizations/integration/mcp/mcp_schema.txt +47 -0
  39. api_logic_server_cli/prototypes/basic_demo/customizations/integration/mcp/mcp_server_discovery.json +9 -0
  40. api_logic_server_cli/prototypes/{nw_no_cust/integration/mcp → basic_demo/customizations/integration/openai_function}/3_executor_test_agent.py +20 -6
  41. api_logic_server_cli/prototypes/basic_demo/customizations/integration/openai_function/README_functon.md +201 -0
  42. api_logic_server_cli/prototypes/basic_demo/customizations/integration/openai_function/ai_plugin.json +17 -0
  43. api_logic_server_cli/prototypes/basic_demo/customizations/integration/openai_function/nw-swagger_3.json +1731 -0
  44. api_logic_server_cli/prototypes/basic_demo/customizations/integration/openai_function/snippets.txt +5 -0
  45. api_logic_server_cli/prototypes/basic_demo/customizations/integration/openai_function/swagger_3 genai_demo_with_get.json +1731 -0
  46. api_logic_server_cli/prototypes/basic_demo/customizations/integration/openai_function/swagger_3.json +1782 -0
  47. api_logic_server_cli/prototypes/basic_demo/customizations/integration/openai_function/swagger_3_genai_demo.json +264 -0
  48. api_logic_server_cli/prototypes/basic_demo/customizations/integration/openai_function/swagger_3_genai_demo_with_update.json +1782 -0
  49. api_logic_server_cli/prototypes/basic_demo/customizations/logic/declare_logic.py +79 -41
  50. api_logic_server_cli/prototypes/basic_demo/customizations/security/declare_security.py +11 -12
  51. api_logic_server_cli/prototypes/basic_demo/customizations/ui/admin/admin.yaml +166 -0
  52. api_logic_server_cli/prototypes/basic_demo/iteration/api/{customize_api.py → api_discovery/order_b2b.py} +17 -23
  53. api_logic_server_cli/prototypes/basic_demo/iteration/database/db.sqlite +0 -0
  54. api_logic_server_cli/prototypes/basic_demo/iteration/integration/row_dict_maps/OrderB2B.py +6 -5
  55. api_logic_server_cli/prototypes/basic_demo/iteration/integration/row_dict_maps/OrderShipping.py +4 -4
  56. api_logic_server_cli/prototypes/basic_demo/iteration/logic/declare_logic.py +69 -43
  57. api_logic_server_cli/prototypes/basic_demo/iteration/ui/admin/admin.yaml +125 -50
  58. api_logic_server_cli/prototypes/manager/README.md +4 -0
  59. api_logic_server_cli/prototypes/nw/logic/declare_logic.py +2 -2
  60. api_logic_server_cli/prototypes/nw_no_cust/.obsidian/app.json +1 -0
  61. api_logic_server_cli/prototypes/nw_no_cust/.obsidian/appearance.json +1 -0
  62. api_logic_server_cli/prototypes/nw_no_cust/.obsidian/core-plugins.json +31 -0
  63. api_logic_server_cli/prototypes/nw_no_cust/.obsidian/workspace.json +166 -0
  64. api_logic_server_cli/prototypes/nw_no_cust/Tutorial.md +45 -26
  65. api_logic_server_cli/prototypes/nw_no_cust/api/api_discovery/openapi.py +130 -0
  66. api_logic_server_cli/prototypes/nw_no_cust/api/api_discovery/proper_update_def.json +71 -0
  67. api_logic_server_cli/prototypes/nw_no_cust/config/default.env +13 -0
  68. api_logic_server_cli/prototypes/ont_app/ontimize_seed/package-lock.json +9725 -1180
  69. api_logic_server_cli/prototypes/ont_app/ontimize_seed/package.json +3 -6
  70. api_logic_server_cli/prototypes/ont_app/ontimize_seed/src/app/shared/app.services.config.ts +1 -1
  71. api_logic_server_cli/prototypes/ont_app/ontimize_seed/src/assets/css/app.scss +4 -0
  72. api_logic_server_cli/prototypes/ont_app/ontimize_seed/src/assets/i18n/en.json +1 -1
  73. api_logic_server_cli/prototypes/ont_app/ontimize_seed/src/assets/i18n/es.json +14 -12
  74. api_logic_server_cli/prototypes/ont_app/templates/app_config.jinja +1 -1
  75. api_logic_server_cli/prototypes/ont_app/templates/date_template.html +1 -1
  76. api_logic_server_cli/prototypes/ont_app/templates/textarea_template.html +1 -1
  77. api_logic_server_cli/prototypes/ont_app/templates/timestamp_template.html +1 -1
  78. api_logic_server_cli/prototypes/sample_ai/logic/declare_logic.py +30 -13
  79. apilogicserver-14.5.3.dist-info/METADATA +168 -0
  80. {apilogicserver-14.4.0.dist-info → apilogicserver-14.5.3.dist-info}/RECORD +84 -61
  81. {apilogicserver-14.4.0.dist-info → apilogicserver-14.5.3.dist-info}/WHEEL +1 -1
  82. api_logic_server_cli/prototypes/basic_demo/apply_customizations.ps1 +0 -17
  83. api_logic_server_cli/prototypes/basic_demo/apply_customizations.sh +0 -14
  84. api_logic_server_cli/prototypes/basic_demo/apply_iteration.ps1 +0 -20
  85. api_logic_server_cli/prototypes/basic_demo/apply_iteration.sh +0 -15
  86. api_logic_server_cli/prototypes/nw_no_cust/integration/mcp/1_langchain_loader.py +0 -19
  87. api_logic_server_cli/prototypes/nw_no_cust/integration/mcp/2_gpt_mcp_prompt.txt +0 -19
  88. api_logic_server_cli/prototypes/nw_no_cust/integration/mcp/README.md +0 -17
  89. api_logic_server_cli/prototypes/nw_no_cust/integration/mcp/resources/curl.txt +0 -4
  90. api_logic_server_cli/prototypes/nw_no_cust/integration/mcp/resources/nw_swagger_3.yaml +0 -16660
  91. api_logic_server_cli/prototypes/nw_no_cust/integration/mcp/run_executor.py +0 -23
  92. apilogicserver-14.4.0.dist-info/METADATA +0 -76
  93. {apilogicserver-14.4.0.dist-info → apilogicserver-14.5.3.dist-info}/entry_points.txt +0 -0
  94. {apilogicserver-14.4.0.dist-info → apilogicserver-14.5.3.dist-info}/licenses/LICENSE +0 -0
  95. {apilogicserver-14.4.0.dist-info → apilogicserver-14.5.3.dist-info}/top_level.txt +0 -0
@@ -30,11 +30,11 @@
30
30
  "@angular/router": "^15.2.10",
31
31
  "@angular/service-worker": "^15.2.10",
32
32
  "@angular/upgrade": "^15.2.10",
33
- "ontimize-web-ngx": "15.6.0-next.2",
34
- "ontimize-web-ngx-charts": "15.2.0-next.2",
33
+ "ontimize-web-ngx": "15.6.0-next.4",
34
+ "ontimize-web-ngx-charts": "15.2.0-next.3",
35
35
  "ontimize-web-ngx-filemanager": "^15.1.0-next.0",
36
36
  "ontimize-web-ngx-map": "15.0.0",
37
- "ontimize-web-ngx-report": "15.1.0-next.2",
37
+ "ontimize-web-ngx-report": "15.1.0-next.3",
38
38
  "ontimize-web-ngx-keycloak": "15.0.0",
39
39
  "rxjs": "~7.8.0",
40
40
  "tslib": "^2.3.0",
@@ -64,9 +64,6 @@
64
64
  "karma-coverage": "~2.2.0",
65
65
  "karma-jasmine": "~5.1.0",
66
66
  "karma-jasmine-html-reporter": "~2.0.0",
67
- "@typescript-eslint/eslint-plugin": "^5.43.0",
68
- "@typescript-eslint/parser": "^5.43.0",
69
- "eslint": "^8.28.0",
70
67
  "typescript": "~4.9.5"
71
68
  }
72
69
  }
@@ -1,3 +1,3 @@
1
- export const SERVICE_CONFIG: Object ={
1
+ export const SERVICE_CONFIG ={
2
2
 
3
3
  };
@@ -2,6 +2,7 @@
2
2
  @use 'ontimize-web-ngx/theming/themes/ontimize.scss'as theme;
3
3
  @use 'ontimize-web-ngx/theming/ontimize-style.scss';
4
4
  @use '../../app/login/login.theme.scss'as login;
5
+ @use '../../app/main/main-theme.scss'as main;
5
6
 
6
7
  // Include ontimize styles
7
8
  @include ontimize-style.ontimize-theme-styles(theme.$theme);
@@ -9,8 +10,11 @@
9
10
  // Propagate theme to screen styles definition.
10
11
  @include login.login-theme(theme.$theme);
11
12
 
13
+ @include main.main-theme(theme.$theme);
12
14
 
13
15
  //Include dark styles option
14
16
  .o-dark {
15
17
  @include ontimize-style.ontimize-theme-all-component-color(theme.$dark-theme);
18
+ @include login.login-theme(theme.$dark-theme);
19
+ @include main.main-theme(theme.$dark-theme);
16
20
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "APP_TITLE": "Quickstart",
3
- "VERSION": "Version",
3
+ "VERSION": "Version 1.0",
4
4
  "EXAMPLE_LOGIN_INFO": "Use this user and password for login",
5
5
  "USERNAME": "Username",
6
6
  "PASSWORD": "Password",
@@ -1,22 +1,24 @@
1
1
  {
2
- "APP_TITLE": "JEE seed",
3
- "VERSION": "Versión",
4
- "EXAMPLE_LOGIN_INFO": "Usuario y contraseña de ejemplo",
2
+ "APP_TITLE": "Inicio rápido",
3
+ "VERSION": "Versión 1.0",
4
+ "EXAMPLE_LOGIN_INFO": "Use este usuario y contraseña para iniciar sesión",
5
5
  "USERNAME": "Usuario",
6
6
  "PASSWORD": "Contraseña",
7
- "LOGIN": "Entrar",
8
- "LOGOUT": "Salir",
7
+ "LOGIN": "Iniciar sesión",
8
+ "LOGOUT": "Cerrar sesión",
9
9
  "VIEW": "Vistas",
10
10
  "HOME": "Inicio",
11
+ "ABOUT": "Acerca de",
12
+ "SETTINGS": "Configuración",
11
13
  "LOGIN_TITLE": "Inicia sesión en tu cuenta",
12
- "ERROR_REQUIRED_FIELD": "El campo es requerido",
13
- "ERROR_MIN_LENGTH_REQUIRED": "El valor introducido tiene que tener una longitud mínima de 8 caracteres",
14
- "ERROR_SESSION_EXPIRED": "La sesión ha caducado",
15
- "ERROR_USER_REQUIRED": "Nombre de usuario incorrecto",
14
+ "ERROR_REQUIRED_FIELD": "El campo es obligatorio",
15
+ "ERROR_MIN_LENGTH_REQUIRED": "La longitud del valor ingresado debe ser de al menos 8 caracteres.",
16
+ "ERROR_SESSION_EXPIRED": "Sesión expirada",
17
+ "ERROR_USER_REQUIRED": "Usuario incorrecto",
16
18
  "ERROR_PASS_REQUIRED": "Contraseña incorrecta",
17
- "ERROR_USER_PASS_INCORRECT": "Usuario o contraseña incorrecta",
19
+ "ERROR_USER_PASS_INCORRECT": "Usuario o contraseña inválidos",
18
20
  "REMEMBER_ME": "Recuérdame",
19
- "FORGOT_PWD": "¿Has olvidado tu contraseña?",
21
+ "FORGOT_PWD": "¿Olvidaste tu contraseña?",
20
22
  "FOOTER_CREATED_BY": "Creado por Imatia Innovation",
21
- "FOOTER_RIGHTS": "Todos los derechos reservados",
23
+ "FOOTER_RIGHTS": "Todos los derechos reservados (c) 2024",
22
24
  }
@@ -37,7 +37,7 @@ export const CONFIG: Config = {
37
37
  }
38
38
 
39
39
  {% if serviceType == "JSONAPI" %}
40
- ,startSessionPath: '{{ startSessionPath }}',
40
+ ,startSessionPath: '{{ startSessionPath }}'
41
41
  {% endif %}
42
42
 
43
43
  };
@@ -1 +1 @@
1
- <o-date-input #{{ attr }} attr="{{ attr }}" type="date" label="{{ label }}" enabled="{{ enabled }}" required="{{ required }}" format="LL" fxFlex="20%" class="form-field"></o-date-input>
1
+ <o-date-input #{{ attr }} attr="{{ attr }}" value-type="string" label="{{ label }}" enabled="{{ enabled }}" required="{{ required }}" format="YYYY-MM-DD" fxFlex="20%" class="form-field"></o-date-input>
@@ -1 +1 @@
1
- <o-textarea-input #{{ attr }} attr="{{ attr }}" label="{{ label }}" enabled="true" read-only="false"></o-textarea-input>
1
+ <o-textarea-input #{{ attr }} attr="{{ attr }}" label="{{ label }}" enabled="true" read-only="false" fxFlex="50%"></o-textarea-input>
@@ -1 +1 @@
1
- <o-date-input #{{ attr }} attr="{{ attr }}" type="timestamp" label="{{ label }}" editable="{{ editable }}" required="{{ required }}" format="LL" fxFlex="20%" class="form-field"></o-date-input>
1
+ <o-date-input #{{ attr }} attr="{{ attr }}" value-type="string" label="{{ label }}" editable="{{ editable }}" required="{{ required }}" format="YYYY-MM-DD hh:mm:ss" fxFlex="20%" class="form-field"></o-date-input>
@@ -51,33 +51,50 @@ def declare_logic():
51
51
  from_parent=models.Product.UnitPrice)
52
52
 
53
53
 
54
- def handle_all(logic_row: LogicRow): # OPTIMISTIC LOCKING, [TIME / DATE STAMPING]
54
+ def handle_all(logic_row: LogicRow): # #als: TIME / DATE STAMPING, OPTIMISTIC LOCKING
55
55
  """
56
56
  This is generic - executed for all classes.
57
57
 
58
- Invokes optimistic locking.
58
+ Invokes optimistic locking, and checks Grant permissions.
59
59
 
60
- You can optionally do time and date stamping here, as shown below.
60
+ Also provides user/date stamping.
61
61
 
62
62
  Args:
63
63
  logic_row (LogicRow): from LogicBank - old/new row, state
64
64
  """
65
-
66
- if not os.getenv("APILOGICPROJECT_NO_FLASK") is not None:
65
+
66
+ if os.getenv("APILOGICPROJECT_NO_FLASK") is not None:
67
+ print("\ndeclare_logic.py Using TestBase\n")
67
68
  return # enables rules to be used outside of Flask, e.g., test data loading
68
69
 
69
- if logic_row.is_updated() and logic_row.old_row is not None and logic_row.nest_level == 0:
70
+ if logic_row.is_updated() and logic_row.old_row is not None and logic_row.nest_level == 0:
70
71
  opt_locking.opt_lock_patch(logic_row=logic_row)
71
- enable_creation_stamping = False # CreatedOn time stamping
72
- if enable_creation_stamping:
72
+
73
+ Grant.process_updates(logic_row=logic_row)
74
+
75
+ did_stamping = False
76
+ if enable_stamping := False: # #als: DATE / USER STAMPING
73
77
  row = logic_row.row
74
78
  if logic_row.ins_upd_dlt == "ins" and hasattr(row, "CreatedOn"):
75
79
  row.CreatedOn = datetime.datetime.now()
76
- logic_row.log("early_row_event_all_classes - handle_all sets 'Created_on"'')
77
- Grant.process_updates(logic_row=logic_row)
78
-
80
+ did_stamping = True
81
+ if logic_row.ins_upd_dlt == "ins" and hasattr(row, "CreatedBy"):
82
+ row.CreatedBy = Security.current_user().id
83
+ # if Config.SECURITY_ENABLED == True else 'public'
84
+ did_stamping = True
85
+ if logic_row.ins_upd_dlt == "upd" and hasattr(row, "UpdatedOn"):
86
+ row.UpdatedOn = datetime.datetime.now()
87
+ did_stamping = True
88
+ if logic_row.ins_upd_dlt == "upd" and hasattr(row, "UpdatedBy"):
89
+ row.UpdatedBy = Security.current_user().id \
90
+ if Config.SECURITY_ENABLED == True else 'public'
91
+ did_stamping = True
92
+ if did_stamping:
93
+ logic_row.log("early_row_event_all_classes - handle_all did stamping")
79
94
  Rule.early_row_event_all_classes(early_row_event_all_classes=handle_all)
80
95
 
96
+ #als rules report
97
+ from api.system import api_utils
98
+ # api_utils.rules_report()
81
99
 
82
- app_logger.debug("..logic/declare_logic.py (logic == rules + code)")
83
-
100
+ app_logger.debug("..logic/declare_logic.py (logic == rules + code)")
@@ -0,0 +1,168 @@
1
+ Metadata-Version: 2.4
2
+ Name: ApiLogicServer
3
+ Version: 14.5.3
4
+ Author-email: Val Huber <apilogicserver@gmail.com>
5
+ License: BSD-3-Clause
6
+ Project-URL: Homepage, https://www.genai-logic.com
7
+ Project-URL: Docs, https://apilogicserver.github.io/Docs/Doc-Home/
8
+ Project-URL: Source, https://github.com/ApiLogicServer/ApiLogicServer-src
9
+ Project-URL: Issues, https://github.com/ApiLogicServer/ApiLogicServer-src/issues
10
+ Keywords: Flask,SQLAlchemy,Rules,WebApp,Microservice,ReactAdmin,Angular
11
+ Classifier: Development Status :: 5 - Production/Stable
12
+ Classifier: Environment :: Web Environment
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: BSD License
15
+ Classifier: Operating System :: OS Independent
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Programming Language :: Python :: 3.9
20
+ Classifier: Programming Language :: Python :: 3.8
21
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
+ Requires-Python: >=3.10
23
+ Description-Content-Type: text/markdown
24
+ License-File: LICENSE
25
+ Requires-Dist: PyJWT==2.6.0
26
+ Requires-Dist: python-dateutil==2.8.2
27
+ Requires-Dist: SQLAlchemy-Utils==0.38.2
28
+ Requires-Dist: logicbankutils==0.6.0
29
+ Requires-Dist: inflect==5.0.2
30
+ Requires-Dist: inflection==0.5.1
31
+ Requires-Dist: Flask==2.3.2
32
+ Requires-Dist: Flask-Cors==3.0.10
33
+ Requires-Dist: Flask-RESTful>=0.3.9
34
+ Requires-Dist: flask-restful-swagger-2>=0.35
35
+ Requires-Dist: Flask-SQLAlchemy==3.0.3
36
+ Requires-Dist: flask-swagger-ui>=4.11.1
37
+ Requires-Dist: flask_bcrypt==1.0.1
38
+ Requires-Dist: itsdangerous==2.1.2
39
+ Requires-Dist: Jinja2==3.1.5
40
+ Requires-Dist: MarkupSafe==2.1.3
41
+ Requires-Dist: six==1.16.0
42
+ Requires-Dist: SQLAlchemy==2.0.15
43
+ Requires-Dist: Werkzeug==2.3.3
44
+ Requires-Dist: safrs>=3.1.7
45
+ Requires-Dist: Flask-Admin==1.5.7
46
+ Requires-Dist: Flask-JWT-Extended==4.4.4
47
+ Requires-Dist: Flask-Login==0.6.2
48
+ Requires-Dist: Flask-OpenID==1.3.0
49
+ Requires-Dist: python-dotenv==0.15.0
50
+ Requires-Dist: email-validator==1.1.1
51
+ Requires-Dist: LogicBank>=1.20.26
52
+ Requires-Dist: cryptography==36.0.1
53
+ Requires-Dist: rsa
54
+ Requires-Dist: PyMySQL==1.0.3
55
+ Requires-Dist: oracledb==2.1.2
56
+ Requires-Dist: requests==2.31.0
57
+ Requires-Dist: gunicorn==20.1.0
58
+ Requires-Dist: psycopg2-binary==2.9.9
59
+ Requires-Dist: dotmap==1.3.25
60
+ Requires-Dist: WTForms==2.3.3
61
+ Requires-Dist: behave==1.2.6
62
+ Requires-Dist: alembic==1.7.7
63
+ Requires-Dist: python-ulid==2.7.0
64
+ Requires-Dist: psutil==6.0.0
65
+ Requires-Dist: pandas==2.2.2
66
+ Requires-Dist: openpyxl==3.1.5
67
+ Requires-Dist: GeoAlchemy2==0.12.5
68
+ Requires-Dist: confluent-kafka==2.3.0
69
+ Requires-Dist: translate==3.6.1
70
+ Requires-Dist: libretranslatepy==2.1.1
71
+ Requires-Dist: reportlab==4.2.0
72
+ Requires-Dist: xlsxwriter==3.2.0
73
+ Requires-Dist: natsort==8.4.0
74
+ Requires-Dist: astor==0.8.1
75
+ Requires-Dist: colorama==0.4.6
76
+ Requires-Dist: openai==1.55.3
77
+ Dynamic: license-file
78
+
79
+ [![Downloads](https://pepy.tech/badge/apilogicserver)](https://pepy.tech/project/apilogicserver)
80
+ [![Latest Version](https://img.shields.io/pypi/v/apilogicserver.svg)](https://pypi.python.org/pypi/apilogicserver/)
81
+ [![Supported Python versions](https://img.shields.io/pypi/pyversions/apilogicserver.svg)](https://pypi.python.org/pypi/apilogicserver/)
82
+
83
+ &nbsp;
84
+
85
+ # TL;DR
86
+
87
+ Create an executable project (API and Admin App) from a database or natural language prompt with 1 command, customize with declarative rules and Python in your IDE, containerize and deploy.
88
+
89
+ &nbsp;
90
+
91
+ <details markdown>
92
+
93
+ <summary>Video Overview (4 min)</summary>
94
+
95
+ &nbsp;
96
+
97
+ See how **Microservice Automation** creates and runs a microservice - a multi-page app, and an API.
98
+
99
+ * Here is a microservice -- api and admin app -- **created / running in 5 seconds**
100
+
101
+ * It would be similar for your databases
102
+
103
+ * Then, customize in your IDE with Python and **Logic Automation:** spreadsheet-like rules
104
+
105
+ [![GenAI Automation](https://raw.githubusercontent.com/ApiLogicServer/Docs/main/docs/images/sample-ai/copilot/genai-automation-video.png)](https://www.youtube.com/watch?v=7I33Fa9Ulos "Microservice Automation")
106
+
107
+ </details>
108
+
109
+ &nbsp;
110
+
111
+ # Quickstart
112
+
113
+ If you have a supported Python (version 3.10 - 3.12), install is standard, typically:
114
+
115
+ ```bash title="Install API Logic Server in a Virtual Environment"
116
+ python3 -m venv venv # windows: python -m venv venv
117
+ source venv/bin/activate # windows: venv\Scripts\activate
118
+ python -m pip install ApiLogicServer
119
+ ```
120
+
121
+ <br>Now, verify it's working - open the Project Manager for instructions (readme), and run the demo:
122
+
123
+ ```bash title="Start Manager"
124
+ ApiLogicServer start
125
+ ```
126
+
127
+ Find the [user documentation here](https://apilogicserver.github.io/Docs/). Use this for normal installation, to create and customize API Logic Projects.
128
+
129
+ To install the ***dev*** version, [see here](https://apilogicserver.github.io/Docs/Architecture-Internals). This installs the source of API Logic Server, so you can explore or extend it.
130
+
131
+ &nbsp;
132
+
133
+ # Welcome to API Logic Server
134
+
135
+ For Developers and their organizations seeking to **increase business agility,**
136
+
137
+ API Logic Server provides ***Microservice Automation:*** create executable projects with 1 command:
138
+
139
+ 1. ***API Automation:*** crud for each table, with pagination, optimistic locking, filtering and sorting, and
140
+
141
+ 2. ***App Automation:*** a multi-page, multi-table Admin App. <br>
142
+
143
+ **Customize in your IDE:** use standard tools (Python, Flask, SQLAlchemy, GitHub and Docker), plus<br>
144
+
145
+ 3. ***Logic Automation:*** unique **rules - 40X** more concise multi-table derivations and constraints.
146
+
147
+ Unlike frameworks, weeks-to-months of complex development is no longer necessary. <br>
148
+ API Logic Server provides unique automation **for instant integrations and app backends**.
149
+
150
+
151
+ &nbsp;
152
+
153
+ For more information, including install procedures, [please see the docs](https://apilogicserver.github.io/Docs/).
154
+
155
+ &nbsp;
156
+
157
+ ### Making Contributions
158
+
159
+ This is an open source project. We are open to suggestions. Some of our ideas include:
160
+
161
+ | Component | Provides | Consider Adding |
162
+ |:---------------------------|:-----------------|:-------------------------------------------------------------------------------|
163
+ | 1. JSON:**API** and Swagger | API Execution | Serverless, Kubernetes |
164
+ | 2. Transactional **Logic** | Rule Enforcement | Recompute Derivations |
165
+ | 3. This project | API Logic Project Creation | General support - see issues |
166
+ | 3. GenAI | Web version | Create projects with logic |
167
+
168
+ &nbsp;