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.
- api_logic_server_cli/add_cust/add_cust.py +269 -0
- api_logic_server_cli/api_logic_server.py +18 -238
- api_logic_server_cli/api_logic_server_info.yaml +3 -3
- api_logic_server_cli/cli.py +38 -28
- api_logic_server_cli/create_from_model/__pycache__/api_logic_server_utils.cpython-312.pyc +0 -0
- api_logic_server_cli/create_from_model/__pycache__/dbml.cpython-312.pyc +0 -0
- api_logic_server_cli/create_from_model/__pycache__/ont_build.cpython-312.pyc +0 -0
- api_logic_server_cli/create_from_model/__pycache__/ont_create.cpython-312.pyc +0 -0
- api_logic_server_cli/create_from_model/api_logic_server_utils.py +47 -0
- api_logic_server_cli/create_from_model/dbml.py +113 -58
- api_logic_server_cli/create_from_model/ont_build.py +83 -60
- api_logic_server_cli/create_from_model/ont_create.py +2 -1
- api_logic_server_cli/database/basic_demo.sqlite +0 -0
- api_logic_server_cli/database/basic_demo.txt +1 -0
- api_logic_server_cli/database/basic_demo_wg.sqlite +0 -0
- api_logic_server_cli/manager.py +3 -2
- api_logic_server_cli/prototypes/base/.vscode/launch.json +3 -2
- api_logic_server_cli/prototypes/base/config/config.py +66 -11
- api_logic_server_cli/prototypes/base/config/default.env +7 -1
- api_logic_server_cli/prototypes/base/database/test_data/readme.md +2 -1
- api_logic_server_cli/prototypes/base/integration/kafka/kafka_producer.py +5 -2
- api_logic_server_cli/prototypes/base/integration/n8n/n8n_producer.py +68 -21
- api_logic_server_cli/prototypes/base/integration/n8n/n8n_readme.md +19 -0
- api_logic_server_cli/prototypes/base/test/basic/server_test.py +1 -1
- api_logic_server_cli/prototypes/basic_demo/README.md +29 -52
- api_logic_server_cli/prototypes/basic_demo/customizations/api/.DS_Store +0 -0
- api_logic_server_cli/prototypes/basic_demo/customizations/api/api_discovery/mcp_discovery.py +139 -0
- api_logic_server_cli/prototypes/basic_demo/customizations/api/api_discovery/openapi.py +92 -0
- api_logic_server_cli/prototypes/basic_demo/customizations/config/default.env +13 -0
- api_logic_server_cli/prototypes/basic_demo/customizations/config/server_setup.py +388 -0
- api_logic_server_cli/prototypes/basic_demo/customizations/database/db.sqlite +0 -0
- api_logic_server_cli/prototypes/basic_demo/customizations/database/models.py +131 -0
- api_logic_server_cli/prototypes/basic_demo/customizations/database/system/SAFRSBaseX.py +136 -0
- api_logic_server_cli/prototypes/basic_demo/customizations/integration/.DS_Store +0 -0
- api_logic_server_cli/prototypes/basic_demo/customizations/integration/mcp/.DS_Store +0 -0
- api_logic_server_cli/prototypes/basic_demo/customizations/integration/mcp/README_mcp.md +15 -0
- api_logic_server_cli/prototypes/basic_demo/customizations/integration/mcp/mcp_client_executor.py +350 -0
- api_logic_server_cli/prototypes/basic_demo/customizations/integration/mcp/mcp_schema.txt +47 -0
- api_logic_server_cli/prototypes/basic_demo/customizations/integration/mcp/mcp_server_discovery.json +9 -0
- api_logic_server_cli/prototypes/{nw_no_cust/integration/mcp → basic_demo/customizations/integration/openai_function}/3_executor_test_agent.py +20 -6
- api_logic_server_cli/prototypes/basic_demo/customizations/integration/openai_function/README_functon.md +201 -0
- api_logic_server_cli/prototypes/basic_demo/customizations/integration/openai_function/ai_plugin.json +17 -0
- api_logic_server_cli/prototypes/basic_demo/customizations/integration/openai_function/nw-swagger_3.json +1731 -0
- api_logic_server_cli/prototypes/basic_demo/customizations/integration/openai_function/snippets.txt +5 -0
- api_logic_server_cli/prototypes/basic_demo/customizations/integration/openai_function/swagger_3 genai_demo_with_get.json +1731 -0
- api_logic_server_cli/prototypes/basic_demo/customizations/integration/openai_function/swagger_3.json +1782 -0
- api_logic_server_cli/prototypes/basic_demo/customizations/integration/openai_function/swagger_3_genai_demo.json +264 -0
- api_logic_server_cli/prototypes/basic_demo/customizations/integration/openai_function/swagger_3_genai_demo_with_update.json +1782 -0
- api_logic_server_cli/prototypes/basic_demo/customizations/logic/declare_logic.py +79 -41
- api_logic_server_cli/prototypes/basic_demo/customizations/security/declare_security.py +11 -12
- api_logic_server_cli/prototypes/basic_demo/customizations/ui/admin/admin.yaml +166 -0
- api_logic_server_cli/prototypes/basic_demo/iteration/api/{customize_api.py → api_discovery/order_b2b.py} +17 -23
- api_logic_server_cli/prototypes/basic_demo/iteration/database/db.sqlite +0 -0
- api_logic_server_cli/prototypes/basic_demo/iteration/integration/row_dict_maps/OrderB2B.py +6 -5
- api_logic_server_cli/prototypes/basic_demo/iteration/integration/row_dict_maps/OrderShipping.py +4 -4
- api_logic_server_cli/prototypes/basic_demo/iteration/logic/declare_logic.py +69 -43
- api_logic_server_cli/prototypes/basic_demo/iteration/ui/admin/admin.yaml +125 -50
- api_logic_server_cli/prototypes/manager/README.md +4 -0
- api_logic_server_cli/prototypes/nw/logic/declare_logic.py +2 -2
- api_logic_server_cli/prototypes/nw_no_cust/.obsidian/app.json +1 -0
- api_logic_server_cli/prototypes/nw_no_cust/.obsidian/appearance.json +1 -0
- api_logic_server_cli/prototypes/nw_no_cust/.obsidian/core-plugins.json +31 -0
- api_logic_server_cli/prototypes/nw_no_cust/.obsidian/workspace.json +166 -0
- api_logic_server_cli/prototypes/nw_no_cust/Tutorial.md +45 -26
- api_logic_server_cli/prototypes/nw_no_cust/api/api_discovery/openapi.py +130 -0
- api_logic_server_cli/prototypes/nw_no_cust/api/api_discovery/proper_update_def.json +71 -0
- api_logic_server_cli/prototypes/nw_no_cust/config/default.env +13 -0
- api_logic_server_cli/prototypes/ont_app/ontimize_seed/package-lock.json +9725 -1180
- api_logic_server_cli/prototypes/ont_app/ontimize_seed/package.json +3 -6
- api_logic_server_cli/prototypes/ont_app/ontimize_seed/src/app/shared/app.services.config.ts +1 -1
- api_logic_server_cli/prototypes/ont_app/ontimize_seed/src/assets/css/app.scss +4 -0
- api_logic_server_cli/prototypes/ont_app/ontimize_seed/src/assets/i18n/en.json +1 -1
- api_logic_server_cli/prototypes/ont_app/ontimize_seed/src/assets/i18n/es.json +14 -12
- api_logic_server_cli/prototypes/ont_app/templates/app_config.jinja +1 -1
- api_logic_server_cli/prototypes/ont_app/templates/date_template.html +1 -1
- api_logic_server_cli/prototypes/ont_app/templates/textarea_template.html +1 -1
- api_logic_server_cli/prototypes/ont_app/templates/timestamp_template.html +1 -1
- api_logic_server_cli/prototypes/sample_ai/logic/declare_logic.py +30 -13
- apilogicserver-14.5.3.dist-info/METADATA +168 -0
- {apilogicserver-14.4.0.dist-info → apilogicserver-14.5.3.dist-info}/RECORD +84 -61
- {apilogicserver-14.4.0.dist-info → apilogicserver-14.5.3.dist-info}/WHEEL +1 -1
- api_logic_server_cli/prototypes/basic_demo/apply_customizations.ps1 +0 -17
- api_logic_server_cli/prototypes/basic_demo/apply_customizations.sh +0 -14
- api_logic_server_cli/prototypes/basic_demo/apply_iteration.ps1 +0 -20
- api_logic_server_cli/prototypes/basic_demo/apply_iteration.sh +0 -15
- api_logic_server_cli/prototypes/nw_no_cust/integration/mcp/1_langchain_loader.py +0 -19
- api_logic_server_cli/prototypes/nw_no_cust/integration/mcp/2_gpt_mcp_prompt.txt +0 -19
- api_logic_server_cli/prototypes/nw_no_cust/integration/mcp/README.md +0 -17
- api_logic_server_cli/prototypes/nw_no_cust/integration/mcp/resources/curl.txt +0 -4
- api_logic_server_cli/prototypes/nw_no_cust/integration/mcp/resources/nw_swagger_3.yaml +0 -16660
- api_logic_server_cli/prototypes/nw_no_cust/integration/mcp/run_executor.py +0 -23
- apilogicserver-14.4.0.dist-info/METADATA +0 -76
- {apilogicserver-14.4.0.dist-info → apilogicserver-14.5.3.dist-info}/entry_points.txt +0 -0
- {apilogicserver-14.4.0.dist-info → apilogicserver-14.5.3.dist-info}/licenses/LICENSE +0 -0
- {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.
|
|
34
|
-
"ontimize-web-ngx-charts": "15.2.0-next.
|
|
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.
|
|
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
|
}
|
|
@@ -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,22 +1,24 @@
|
|
|
1
1
|
{
|
|
2
|
-
"APP_TITLE": "
|
|
3
|
-
"VERSION": "Versión",
|
|
4
|
-
"EXAMPLE_LOGIN_INFO": "
|
|
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": "
|
|
8
|
-
"LOGOUT": "
|
|
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
|
|
13
|
-
"ERROR_MIN_LENGTH_REQUIRED": "
|
|
14
|
-
"ERROR_SESSION_EXPIRED": "
|
|
15
|
-
"ERROR_USER_REQUIRED": "
|
|
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
|
|
19
|
+
"ERROR_USER_PASS_INCORRECT": "Usuario o contraseña inválidos",
|
|
18
20
|
"REMEMBER_ME": "Recuérdame",
|
|
19
|
-
"FORGOT_PWD": "¿
|
|
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
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<o-date-input #{{ attr }} attr="{{ attr }}" type="
|
|
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="
|
|
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): #
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
72
|
-
|
|
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
|
-
|
|
77
|
-
|
|
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
|
+
[](https://pepy.tech/project/apilogicserver)
|
|
80
|
+
[](https://pypi.python.org/pypi/apilogicserver/)
|
|
81
|
+
[](https://pypi.python.org/pypi/apilogicserver/)
|
|
82
|
+
|
|
83
|
+
|
|
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
|
+
|
|
90
|
+
|
|
91
|
+
<details markdown>
|
|
92
|
+
|
|
93
|
+
<summary>Video Overview (4 min)</summary>
|
|
94
|
+
|
|
95
|
+
|
|
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
|
+
[](https://www.youtube.com/watch?v=7I33Fa9Ulos "Microservice Automation")
|
|
106
|
+
|
|
107
|
+
</details>
|
|
108
|
+
|
|
109
|
+
|
|
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
|
+
|
|
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
|
+
|
|
152
|
+
|
|
153
|
+
For more information, including install procedures, [please see the docs](https://apilogicserver.github.io/Docs/).
|
|
154
|
+
|
|
155
|
+
|
|
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
|
+
|