ApiLogicServer 14.3.11__py3-none-any.whl → 14.3.14__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/api_logic_server.py +3 -1
- api_logic_server_cli/api_logic_server_info.yaml +3 -3
- api_logic_server_cli/cli.py +1 -1
- api_logic_server_cli/create_from_model/__pycache__/ont_build.cpython-312.pyc +0 -0
- api_logic_server_cli/genai/genai.py +8 -276
- api_logic_server_cli/genai/genai_fatal_excp.py +5 -0
- api_logic_server_cli/genai/genai_svcs.py +14 -2
- api_logic_server_cli/genai/genai_utils.py +1 -1
- api_logic_server_cli/prototypes/base/api/expose_api_models.py +1 -1
- api_logic_server_cli/prototypes/base/api/system/expression_parser.py +1 -1
- api_logic_server_cli/prototypes/base/api_logic_server_run.py +2 -2
- api_logic_server_cli/prototypes/base/devops/docker-image/env.list +15 -0
- api_logic_server_cli/prototypes/base/devops/docker-standard-image/docker-compose-standard-image.yml +28 -0
- api_logic_server_cli/prototypes/base/devops/docker-standard-image/env.list +55 -0
- api_logic_server_cli/prototypes/base/devops/readme-devops.md +13 -1
- api_logic_server_cli/prototypes/base/docs/logic/readme.md +6 -2
- api_logic_server_cli/prototypes/base/logic/readme_declare_logic.md +8 -0
- api_logic_server_cli/prototypes/base/security/declare_security.py +2 -0
- api_logic_server_cli/prototypes/genai_demo/logic/declare_logic.py +3 -3
- api_logic_server_cli/prototypes/manager/system/Manager_workspace.code-workspace +2 -3
- api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/genai_demo.prompt +1 -1
- api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/genai_demo_formal.prompt +0 -2
- api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/genai_demo_informal.prompt +0 -2
- api_logic_server_cli/prototypes/manager/system/genai/webg_local/.DS_Store +0 -0
- api_logic_server_cli/prototypes/manager/system/genai/webg_local/run_web_genai.sh +10 -0
- api_logic_server_cli/prototypes/manager/system/genai/webg_local/webg-projects/.DS_Store +0 -0
- api_logic_server_cli/prototypes/manager/system/genai/webg_local/webg-projects/by-ulid/.DS_Store +0 -0
- api_logic_server_cli/prototypes/manager/system/genai/webg_local/webg-projects/public/.DS_Store +0 -0
- api_logic_server_cli/prototypes/manager/system/genai/webg_local/webg-projects/wgadmin/.DS_Store +0 -0
- api_logic_server_cli/prototypes/manager/system/genai/webg_local/webg-temp/.DS_Store +0 -0
- api_logic_server_cli/prototypes/manager/system/genai/webg_local/webg_config/.DS_Store +0 -0
- api_logic_server_cli/prototypes/manager/system/genai/webg_local/webg_config/web_genai.txt +8 -0
- api_logic_server_cli/sqlacodegen_wrapper/sqlacodegen/sqlacodegen/codegen.py +2 -2
- {ApiLogicServer-14.3.11.dist-info → apilogicserver-14.3.14.dist-info}/METADATA +1 -1
- {ApiLogicServer-14.3.11.dist-info → apilogicserver-14.3.14.dist-info}/RECORD +39 -27
- {ApiLogicServer-14.3.11.dist-info → apilogicserver-14.3.14.dist-info}/WHEEL +1 -1
- {ApiLogicServer-14.3.11.dist-info → apilogicserver-14.3.14.dist-info}/LICENSE +0 -0
- {ApiLogicServer-14.3.11.dist-info → apilogicserver-14.3.14.dist-info}/entry_points.txt +0 -0
- {ApiLogicServer-14.3.11.dist-info → apilogicserver-14.3.14.dist-info}/top_level.txt +0 -0
|
@@ -12,9 +12,11 @@ ApiLogicServer CLI: given a database url, create [and run] customizable ApiLogic
|
|
|
12
12
|
Called from api_logic_server_cli.py, by instantiating the ProjectRun object.
|
|
13
13
|
'''
|
|
14
14
|
|
|
15
|
-
__version__ = "14.03.
|
|
15
|
+
__version__ = "14.03.14"
|
|
16
16
|
recent_changes = \
|
|
17
17
|
f'\n\nRecent Changes:\n' +\
|
|
18
|
+
"\t02/26/2024 - 14.03.14: [85: reserved words], genai_demo fixes \n"\
|
|
19
|
+
"\t02/16/2024 - 14.03.12: Docker w/ std container, mgr assistant for local WebG \n"\
|
|
18
20
|
"\t02/13/2024 - 14.03.11: fixes [78: Keycloak, 79: boolean defaulting, 80: Send If missing attribute] \n"\
|
|
19
21
|
"\t01/31/2024 - 14.03.00: Issue 76: exp ending in right paren, Issue 74: Multi-db fix, extended default options, if-based Nat Lang formulas \n"\
|
|
20
22
|
"\t01/29/2024 - 14.02.34: save docs/response.json to fix bad rules for IS_GENAI_DEMO, LogicBank 1.20.23 (all defaults) \n"\
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
last_created_date: February
|
|
2
|
-
last_created_project_name:
|
|
3
|
-
last_created_version: 14.03.
|
|
1
|
+
last_created_date: February 17, 2025 13:08:45
|
|
2
|
+
last_created_project_name: ../../../servers/ucf
|
|
3
|
+
last_created_version: 14.03.12
|
api_logic_server_cli/cli.py
CHANGED
|
Binary file
|
|
@@ -582,10 +582,18 @@ class GenAI(object):
|
|
|
582
582
|
Save prompts / responses to system/genai/temp/{project}/genai.response
|
|
583
583
|
|
|
584
584
|
Copy system/genai/temp/create_db_models.py to system/genai/temp/{project}/create_db_models.py
|
|
585
|
+
|
|
586
|
+
delete system/genai/temp/create_db_models.sqlite (avoid table collisions)
|
|
585
587
|
"""
|
|
586
588
|
try:
|
|
587
589
|
to_dir = Path(os.getcwd())
|
|
588
590
|
gen_temp_dir = Path(to_dir).joinpath(f'system/genai/temp')
|
|
591
|
+
|
|
592
|
+
# delete system/genai/temp/create_db_models.sqlite
|
|
593
|
+
sqlite_file_path = Path(gen_temp_dir).joinpath('create_db_models.sqlite')
|
|
594
|
+
if sqlite_file_path.exists():
|
|
595
|
+
os.remove(sqlite_file_path)
|
|
596
|
+
|
|
589
597
|
to_dir_save_dir = Path(to_dir).joinpath(f'system/genai/temp/{self.project.project_name_last_node}')
|
|
590
598
|
""" project work files saved to system/genai/temp/<project> """
|
|
591
599
|
log.info(f'.. saving work files to: system/genai/temp/{self.project.project_name_last_node}')
|
|
@@ -645,282 +653,6 @@ class GenAI(object):
|
|
|
645
653
|
pass # intentional try/catch/bury - it's just diagnostics, so don't fail
|
|
646
654
|
debug_string = "good breakpoint - return to main driver, and execute create_db_models.py"
|
|
647
655
|
|
|
648
|
-
def z_fix_and_write_model_file(self):
|
|
649
|
-
"""
|
|
650
|
-
1. from response, create model file / models lines
|
|
651
|
-
2. from response, create model file / test lines
|
|
652
|
-
3. ChatGPT work-arounds (decimal, indent, bogus relns, etc etc)
|
|
653
|
-
4. Ensure the sqlite url is correct: sqlite:///system/genai/temp/create_db_models.sqlite
|
|
654
|
-
5. write model file to self.project.from_model
|
|
655
|
-
|
|
656
|
-
Args:
|
|
657
|
-
response_data (str): the chatgpt response
|
|
658
|
-
|
|
659
|
-
"""
|
|
660
|
-
|
|
661
|
-
def insert_model_lines(models, create_db_model_lines):
|
|
662
|
-
|
|
663
|
-
def get_model_class_lines(model: DotMap) -> list[str]:
|
|
664
|
-
"""Get the model class from the model, with MAJOR fixes
|
|
665
|
-
|
|
666
|
-
Args:
|
|
667
|
-
model (Model): the model
|
|
668
|
-
|
|
669
|
-
Returns:
|
|
670
|
-
stlist[str]: the model class lines, fixed up
|
|
671
|
-
"""
|
|
672
|
-
|
|
673
|
-
create_db_model_lines = list()
|
|
674
|
-
create_db_model_lines.append('\n\n')
|
|
675
|
-
class_lines = model.code.split('\n')
|
|
676
|
-
line_num = 0
|
|
677
|
-
indents_to_remove = 0
|
|
678
|
-
for each_line in class_lines:
|
|
679
|
-
line_num += 1
|
|
680
|
-
''' decimal issues
|
|
681
|
-
|
|
682
|
-
1. bad import: see Run: tests/test_databases/ai-created/genai_demo/genai_demo_decimal
|
|
683
|
-
from decimal import Decimal # Decimal fix: needs to be from decimal import DECIMAL
|
|
684
|
-
|
|
685
|
-
2. Missing missing import: from SQLAlchemy import .... DECIMAL
|
|
686
|
-
|
|
687
|
-
3. Column(Decimal) -> Column(DECIMAL)
|
|
688
|
-
see in: tests/test_databases/ai-created/budget_allocation/budget_allocations/budget_allocations_3_decimal
|
|
689
|
-
|
|
690
|
-
4. Bad syntax on test data: see Run: blt/time_cards_decimal from RESPONSE
|
|
691
|
-
got: balance=DECIMAL('100.50')
|
|
692
|
-
needed: balance=1000.0
|
|
693
|
-
fixed with import in create_db_models_prefix.py
|
|
694
|
-
|
|
695
|
-
5. Bad syntax on test data cals: see api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/genai_demo_conversation_bad_decimal/genai_demo_03.response
|
|
696
|
-
got: or Decimal('0.00')
|
|
697
|
-
needed: or decimal.Decimal('0.00')
|
|
698
|
-
|
|
699
|
-
6. Bad syntax on test data cals: see api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/genai_demo_conversation_bad_decimal_2/genai_demo_conversation_002.response
|
|
700
|
-
got: or DECIMAL('
|
|
701
|
-
needed: or decimal.Decimal('0.00')
|
|
702
|
-
'''
|
|
703
|
-
|
|
704
|
-
# TODO - seeing several \\ in the response - should be \ (I think)
|
|
705
|
-
if "= Table(" in each_line: # tests/test_databases/ai-created/time_cards/time_card_kw_arg/genai.response
|
|
706
|
-
log.debug(f'.. fix_and_write_model_file detects table - raise excp to trigger retry')
|
|
707
|
-
self.post_error = "ChatGPT Response contains table (not class) definitions: " + each_line
|
|
708
|
-
if 'sqlite:///' in each_line: # must be sqlite:///system/genai/temp/create_db_models.sqlite
|
|
709
|
-
current_url_rest = each_line.split('sqlite:///')[1]
|
|
710
|
-
quote_type = "'"
|
|
711
|
-
if '"' in current_url_rest:
|
|
712
|
-
quote_type = '"' # eg, tests/test_databases/ai-created/time_cards/time_card_decimal/genai.response
|
|
713
|
-
current_url = current_url_rest.split(quote_type)[0]
|
|
714
|
-
proper_url = 'system/genai/temp/create_db_models.sqlite'
|
|
715
|
-
each_line = each_line.replace(current_url, proper_url)
|
|
716
|
-
if current_url != proper_url:
|
|
717
|
-
log.debug(f'.. fixed sqlite url: {current_url} -> system/genai/temp/create_db_models.sqlite')
|
|
718
|
-
if 'Decimal,' in each_line: # SQLAlchemy import
|
|
719
|
-
each_line = each_line.replace('Decimal,', 'DECIMAL,')
|
|
720
|
-
# other Decimal bugs: see api_logic_server_cli/prototypes/manager/system/genai/reference/errors/chatgpt_decimal.txt
|
|
721
|
-
if ', Decimal' in each_line: # Cap'n K, at your service
|
|
722
|
-
each_line = each_line.replace(', Decimal', ', DECIMAL')
|
|
723
|
-
if 'rom decimal import Decimal' in each_line:
|
|
724
|
-
each_line = each_line.replace('from decimal import Decimal', 'import decimal')
|
|
725
|
-
if '=Decimal(' in each_line:
|
|
726
|
-
each_line = each_line.replace('=Decimal(', '=decimal.Decimal(')
|
|
727
|
-
if ' Decimal(' in each_line:
|
|
728
|
-
each_line = each_line.replace(' Decimal(', ' decimal.Decimal(')
|
|
729
|
-
if 'Column(Decimal' in each_line:
|
|
730
|
-
each_line = each_line.replace('Column(Decimal', 'Column(DECIMAL')
|
|
731
|
-
if "DECIMAL('" in each_line:
|
|
732
|
-
each_line = each_line.replace("DECIMAL('", "decimal.Decimal('")
|
|
733
|
-
if 'end_time(datetime' in each_line: # tests/test_databases/ai-created/time_cards/time_card_kw_arg/genai.response
|
|
734
|
-
each_line = each_line.replace('end_time(datetime', 'end_time=datetime')
|
|
735
|
-
if 'datetime.date.today' in each_line:
|
|
736
|
-
each_line = each_line.replace('datetime.today', 'end_time=datetime')
|
|
737
|
-
if indents_to_remove > 0:
|
|
738
|
-
each_line = each_line[indents_to_remove:]
|
|
739
|
-
if 'relationship(' in each_line and self.project.genai_use_relns == False:
|
|
740
|
-
# airport4 fails with could not determine join condition between parent/child tables on relationship Airport.flights
|
|
741
|
-
if each_line.startswith(' '):
|
|
742
|
-
each_line = each_line.replace(' ', ' # ')
|
|
743
|
-
else: # sometimes it puts relns outside the class (so, outdented)
|
|
744
|
-
each_line = '# ' + each_line
|
|
745
|
-
if 'sqlite:///system/genai/temp/model.sqlite': # fix prior version
|
|
746
|
-
each_line = each_line.replace('sqlite:///system/genai/temp/model.sqlite',
|
|
747
|
-
'sqlite:///system/genai/temp/create_db_models.sqlite')
|
|
748
|
-
|
|
749
|
-
# logicbank fixes
|
|
750
|
-
if 'from logic_bank' in each_line: # we do our own imports
|
|
751
|
-
each_line = each_line.replace('from', '# from')
|
|
752
|
-
if 'LogicBank.activate' in each_line:
|
|
753
|
-
each_line = each_line.replace('LogicBank.activate', '# LogicBank.activate')
|
|
754
|
-
|
|
755
|
-
create_db_model_lines.append(each_line + '\n')
|
|
756
|
-
return create_db_model_lines
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
did_base = False
|
|
760
|
-
for each_model in models:
|
|
761
|
-
model_lines = get_model_class_lines(model=each_model)
|
|
762
|
-
for each_line in model_lines:
|
|
763
|
-
each_fixed_line = each_line.replace('sa.', '') # sometimes it puts sa. in front of Column
|
|
764
|
-
if 'Base = declarative_base()' in each_fixed_line: # sometimes created for each class
|
|
765
|
-
if did_base:
|
|
766
|
-
each_fixed_line = '# ' + each_fixed_line
|
|
767
|
-
did_base = True
|
|
768
|
-
if 'datetime.datetime.utcnow' in each_fixed_line:
|
|
769
|
-
each_fixed_line = each_fixed_line.replace('datetime.datetime.utcnow', 'datetime.now()')
|
|
770
|
-
if 'Column(date' in each_fixed_line:
|
|
771
|
-
each_fixed_line = each_fixed_line.replace('Column(dat', 'column(Date')
|
|
772
|
-
create_db_model_lines.append(each_fixed_line)
|
|
773
|
-
|
|
774
|
-
model_code = "\n".join(model_lines)
|
|
775
|
-
if '\\n' in model_code:
|
|
776
|
-
log.debug(f'.. fix_and_write_model_file detects \\n - attempting fix')
|
|
777
|
-
model_code = model_code.replace('\\n', '\n')
|
|
778
|
-
try:
|
|
779
|
-
ast.parse(model_code)
|
|
780
|
-
except SyntaxError as exc:
|
|
781
|
-
log.error(f"Model Class Error: {model_code}")
|
|
782
|
-
self.post_error = f"Model Class Error: {exc}"
|
|
783
|
-
return create_db_model_lines
|
|
784
|
-
|
|
785
|
-
def insert_test_data_lines(test_data_lines : list[str]) -> list[str]:
|
|
786
|
-
"""Insert test data lines into the model file
|
|
787
|
-
|
|
788
|
-
Args:
|
|
789
|
-
test_data_lines (list(str)):
|
|
790
|
-
* initially header (engine =, sesssion =)
|
|
791
|
-
* this function appends CPT test data
|
|
792
|
-
|
|
793
|
-
Returns:
|
|
794
|
-
list[str]: variable names for the test data rows (for create_all)
|
|
795
|
-
"""
|
|
796
|
-
|
|
797
|
-
def fix_test_data_line(each_fixed_line: str) -> str:
|
|
798
|
-
"""Fix the test data line
|
|
799
|
-
|
|
800
|
-
Args:
|
|
801
|
-
each_fixed_line (str): the test data line
|
|
802
|
-
|
|
803
|
-
Returns:
|
|
804
|
-
str: the fixed test data line
|
|
805
|
-
"""
|
|
806
|
-
|
|
807
|
-
if '=null' in each_fixed_line:
|
|
808
|
-
each_fixed_line = each_fixed_line.replace('=None', '=date')
|
|
809
|
-
if '=datetime' in each_fixed_line:
|
|
810
|
-
each_fixed_line = each_fixed_line.replace('=datetime.date', '=date')
|
|
811
|
-
if 'datetime.datetime.utcnow' in each_fixed_line:
|
|
812
|
-
each_fixed_line = each_fixed_line.replace('datetime.datetime.utcnow', 'datetime.now()')
|
|
813
|
-
if 'datetime.date.today' in each_fixed_line:
|
|
814
|
-
each_fixed_line = each_fixed_line.replace('datetime.date.today', 'datetime.today')
|
|
815
|
-
if 'engine = create_engine' in each_fixed_line: # CBT sometimes has engine = create_engine, so do we!
|
|
816
|
-
each_fixed_line = each_fixed_line.replace('engine = create_engine', '# engine = create_engine')
|
|
817
|
-
check_for_row_name = False
|
|
818
|
-
if each_fixed_line.startswith('Base') or each_fixed_line.startswith('engine'):
|
|
819
|
-
check_for_row_name = False
|
|
820
|
-
if 'Base.metadata.create_all(engine)' in each_fixed_line:
|
|
821
|
-
each_fixed_line = each_fixed_line.replace('Base.metadata.create_all(engine)', '# Base.metadata.create_all(engine)')
|
|
822
|
-
return each_fixed_line
|
|
823
|
-
|
|
824
|
-
row_names = list()
|
|
825
|
-
use_test_data_rows = True # CPT test data, new format - test_data_rows (*way* less variable)
|
|
826
|
-
if use_test_data_rows & hasattr(self.response_dict, 'test_data_rows'):
|
|
827
|
-
test_data_rows = self.response_dict.test_data_rows
|
|
828
|
-
log.debug(f'.... test_data_rows: {len(test_data_rows)}')
|
|
829
|
-
for each_row in test_data_rows:
|
|
830
|
-
each_fixed_line = fix_test_data_line(each_row.code)
|
|
831
|
-
test_data_lines.append(each_fixed_line)
|
|
832
|
-
row_names.append(each_row.test_data_row_variable)
|
|
833
|
-
pass
|
|
834
|
-
else: # CPT test data, old format - rows, plus session, engine etc (quite variable)
|
|
835
|
-
test_data_lines_ori = self.response_dict.test_data.split('\n') # gpt response
|
|
836
|
-
log.debug(f'.... test_data_lines...')
|
|
837
|
-
for each_line in test_data_lines_ori:
|
|
838
|
-
each_fixed_line = fix_test_data_line(each_line)
|
|
839
|
-
check_for_row_name = True
|
|
840
|
-
test_data_lines.append(each_fixed_line) # append the fixed test data line
|
|
841
|
-
if check_for_row_name and ' = ' in each_line and '(' in each_line: # CPT test data might have: tests = []
|
|
842
|
-
assign = each_line.split(' = ')[0]
|
|
843
|
-
# no tokens for: Session = sessionmaker(bind=engine) or session = Session()
|
|
844
|
-
if '.' not in assign and 'Session' not in each_line and 'session.' not in each_line:
|
|
845
|
-
row_names.append(assign)
|
|
846
|
-
return row_names
|
|
847
|
-
|
|
848
|
-
create_db_model_lines = list()
|
|
849
|
-
create_db_model_lines.append(f'# using resolved_model {self.resolved_model}')
|
|
850
|
-
create_db_model_lines.extend( # imports for classes (comes from api_logic_server_cli/prototypes/manager/system/genai/create_db_models_inserts/create_db_models_imports.py)
|
|
851
|
-
genai_svcs.get_lines_from_file(f'system/genai/create_db_models_inserts/create_db_models_imports.py'))
|
|
852
|
-
create_db_model_lines.append("\nfrom sqlalchemy.dialects.sqlite import *\n") # specific for genai
|
|
853
|
-
|
|
854
|
-
models = self.response_dict.models
|
|
855
|
-
|
|
856
|
-
# Usage inside the class
|
|
857
|
-
create_db_model_lines = insert_model_lines(models, create_db_model_lines)
|
|
858
|
-
|
|
859
|
-
with open(f'{self.project.from_model}', "w") as create_db_model_file:
|
|
860
|
-
create_db_model_file.write("".join(create_db_model_lines))
|
|
861
|
-
create_db_model_file.write("\n\n# end of model classes\n\n")
|
|
862
|
-
|
|
863
|
-
# classes done, create db and add test_data code
|
|
864
|
-
test_data_lines = genai_svcs.get_lines_from_file(f'system/genai/create_db_models_inserts/create_db_models_create_db.py')
|
|
865
|
-
test_data_lines.append('session.commit()')
|
|
866
|
-
|
|
867
|
-
row_names = insert_test_data_lines(test_data_lines)
|
|
868
|
-
|
|
869
|
-
test_data_lines.append('\n\n')
|
|
870
|
-
row_name_list = ', '.join(row_names)
|
|
871
|
-
add_rows = f'session.add_all([{row_name_list}])'
|
|
872
|
-
test_data_lines.append(add_rows )
|
|
873
|
-
test_data_lines.append('session.commit()')
|
|
874
|
-
test_data_lines.append('# end of test data\n\n')
|
|
875
|
-
|
|
876
|
-
test_data_lines_result = []
|
|
877
|
-
for line in test_data_lines:
|
|
878
|
-
test_data_lines_result += line.split('\n')
|
|
879
|
-
|
|
880
|
-
with open(f'{self.project.from_model}', "a") as create_db_model_file:
|
|
881
|
-
create_db_model_file.write("\ntry:\n ")
|
|
882
|
-
create_db_model_file.write("\n ".join(test_data_lines_result))
|
|
883
|
-
create_db_model_file.write("\nexcept Exception as exc:\n")
|
|
884
|
-
create_db_model_file.write(" print(f'Test Data Error: {exc}')\n")
|
|
885
|
-
|
|
886
|
-
log.debug(f'.. code for db creation and test data: {self.project.from_model}')
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
def get_lines_from_fileZZ(self, file_name: str) -> list[str]:
|
|
890
|
-
"""Get lines from a file todo: migrate to svcs
|
|
891
|
-
|
|
892
|
-
Args:
|
|
893
|
-
file_name (str): the file name
|
|
894
|
-
|
|
895
|
-
Returns:
|
|
896
|
-
list[str]: the lines from the file
|
|
897
|
-
"""
|
|
898
|
-
|
|
899
|
-
with open(file_name, "r") as file:
|
|
900
|
-
lines = file.readlines()
|
|
901
|
-
return lines
|
|
902
|
-
|
|
903
|
-
def z_get_and_save_raw_response_data(self, completion: object, response_dict: dict):
|
|
904
|
-
"""
|
|
905
|
-
Write response_dict --> system/genai/temp/chatgpt_original/retry.response
|
|
906
|
-
"""
|
|
907
|
-
|
|
908
|
-
''' TODO - is exception used instead of return_code...
|
|
909
|
-
# Check if the request was successful
|
|
910
|
-
if completion.status_code == 400:
|
|
911
|
-
raise Exception("Bad ChatGPT Request: " + completion.text)
|
|
912
|
-
|
|
913
|
-
if completion.status_code != 200:
|
|
914
|
-
print("Error:", completion.status_code, completion.text) # eg, You exceeded your current quota
|
|
915
|
-
'''
|
|
916
|
-
with open(f'system/genai/temp/chatgpt_original.response', "w") as response_file: # save for debug
|
|
917
|
-
json.dump(response_dict, response_file, indent=4)
|
|
918
|
-
with open(f'system/genai/temp/chatgpt_retry.response', "w") as response_file: # repair this & retry
|
|
919
|
-
json.dump(response_dict, response_file, indent=4)
|
|
920
|
-
return
|
|
921
|
-
|
|
922
|
-
def z_genai_cli_rule_suggesions_unused(project_name: str) -> dict:
|
|
923
|
-
pass
|
|
924
656
|
|
|
925
657
|
def genai_cli_with_retry(using: str, db_url: str, repaired_response: str, genai_version: str,
|
|
926
658
|
retries: int, opt_locking: str, prompt_inserts: str, quote: bool,
|
|
@@ -10,7 +10,7 @@ from pathlib import Path
|
|
|
10
10
|
import os
|
|
11
11
|
import sys
|
|
12
12
|
import create_from_model.api_logic_server_utils as utils
|
|
13
|
-
|
|
13
|
+
from api_logic_server_cli.genai.genai_fatal_excp import GenAIException
|
|
14
14
|
import time
|
|
15
15
|
from openai import OpenAI
|
|
16
16
|
import json
|
|
@@ -322,6 +322,11 @@ def model2code(model: DotMap) -> str:
|
|
|
322
322
|
tree = ast.parse(model_code.replace('\\n', '\n'))
|
|
323
323
|
except Exception as exc:
|
|
324
324
|
raise exc
|
|
325
|
+
# check for reserved words... these can fail before sqlacodegen can fix, and might inter-relate, so quit
|
|
326
|
+
if model.name in ['column', 'Column', 'table', 'Table', 'session', 'Session', 'base', 'Base']:
|
|
327
|
+
log.error(f"Reserved word in model name: {model.name}")
|
|
328
|
+
raise GenAIException(f"Reserved word in model name: {model.name}")
|
|
329
|
+
|
|
325
330
|
|
|
326
331
|
# Function to add a docstring to a class node
|
|
327
332
|
def add_docstring_to_class(node, docstring):
|
|
@@ -418,7 +423,7 @@ def fix_model_lines(model: DotMap, use_relns: bool = True, post_error: str = Non
|
|
|
418
423
|
if current_url != proper_url:
|
|
419
424
|
log.debug(f'.. fixed sqlite url: {current_url} -> system/genai/temp/create_db_models.sqlite')
|
|
420
425
|
if 'class ' in each_line:
|
|
421
|
-
# yes, tempting fix... but it fails in SqlAlchemy with missing __tablename__
|
|
426
|
+
# yes, tempting to fix... but it fails in SqlAlchemy with missing __tablename__
|
|
422
427
|
# each_line = each_line.replace(':', '(Base):') # sometimes it forgets the Base
|
|
423
428
|
if 'Base' not in each_line:
|
|
424
429
|
log.debug(f'.. fix_and_write_model_file detects class with no Base - raise excp to trigger retry')
|
|
@@ -469,6 +474,13 @@ def fix_and_write_model_file(response_dict: DotMap, save_dir: str, post_error:
|
|
|
469
474
|
try: # based on model_lines
|
|
470
475
|
model_code = model2code(each_model)
|
|
471
476
|
log.info(f"Added description to model: {each_model.name}: {model_code}")
|
|
477
|
+
except GenAIException as exc:
|
|
478
|
+
''' this does not work - creates a duplicate class, so let's just bail
|
|
479
|
+
if post_error is not None:
|
|
480
|
+
post_error = exc.args[0]
|
|
481
|
+
continue
|
|
482
|
+
'''
|
|
483
|
+
raise exc
|
|
472
484
|
except Exception as exc:
|
|
473
485
|
log.error(f"Failed to add description to model: {exc}")
|
|
474
486
|
log.debug(f"model: {each_model}")
|
|
@@ -236,7 +236,7 @@ class GenAIUtils:
|
|
|
236
236
|
create_fixup_files(self)
|
|
237
237
|
log.info(f".. fixup complete: {self.using}/fixup")
|
|
238
238
|
log.info(f".. .. next step: cd <manager> eg, cd ..")
|
|
239
|
-
log.info(f".. .. and then, create fixed project: als genai --
|
|
239
|
+
log.info(f".. .. and then, create fixed project: als genai --repaired-response={self.project.project_name}/{self.using}/fixup/response_fixup.json --project-name=fixed_project")
|
|
240
240
|
|
|
241
241
|
def import_genai_project(self) -> None:
|
|
242
242
|
"""
|
|
@@ -40,7 +40,7 @@ def expose_models(api, method_decorators = []):
|
|
|
40
40
|
"""
|
|
41
41
|
|
|
42
42
|
debug_inspect_list = inspect.getmembers(database.models)
|
|
43
|
-
pass
|
|
43
|
+
pass
|
|
44
44
|
# Get all the subclasses of the Base class and expose them in the api
|
|
45
45
|
for name, obj in inspect.getmembers(database.models):
|
|
46
46
|
if inspect.isclass(obj) and issubclass(obj, database.models.SAFRSBaseX) and obj is not database.models.SAFRSBaseX:
|
|
@@ -78,7 +78,7 @@ app_logger = server_setup.logging_setup()
|
|
|
78
78
|
|
|
79
79
|
flask_app = Flask("API Logic Server", template_folder='ui/templates') # templates to load ui/admin/admin.yaml
|
|
80
80
|
|
|
81
|
-
CORS(flask_app, resources=[{r"/api/*": {"origins": "*"}}],
|
|
81
|
+
CORS(flask_app, resources=[{r"/api/*": {"origins": "*"}},{r"/ontimizeweb/*": {"origins": "*"}}],
|
|
82
82
|
allow_headers=["Content-Type", "Authorization", "Access-Control-Allow-Credentials"],supports_credentials=True)
|
|
83
83
|
|
|
84
84
|
args = server_setup.get_args(flask_app) # creation defaults
|
|
@@ -100,7 +100,7 @@ server_setup.api_logic_server_setup(flask_app, args)
|
|
|
100
100
|
AdminLoader.admin_events(flask_app = flask_app, args = args, validation_error = ValidationError)
|
|
101
101
|
|
|
102
102
|
if __name__ == "__main__":
|
|
103
|
-
msg = f'API Logic Project loaded (not WSGI), version
|
|
103
|
+
msg = f'API Logic Project loaded (not WSGI), version: api_logic_server_version\n'
|
|
104
104
|
msg += f'.. startup message: {start_up_message}\n'
|
|
105
105
|
if server_setup.is_docker():
|
|
106
106
|
msg += f' (running from docker container at flask_host: {args.flask_host} - may require refresh)\n'
|
|
@@ -53,3 +53,18 @@ APILOGICPROJECT_VERBOSE=True
|
|
|
53
53
|
# APILOGICPROJECT_STOP_OK=FALSE
|
|
54
54
|
# dev only - enable stop url: http://localhost:5656/stop?msg=reason
|
|
55
55
|
|
|
56
|
+
# APILOGICPROJECT_KAFKA_PRODUCER = '{"bootstrap.servers": "localhost:9092"}' # , "client.id": "aaa.b.c.d"}'
|
|
57
|
+
# APILOGICPROJECT_KAFKA_CONSUMER = '{"bootstrap.servers": "localhost:9092", "group.id": "als-default-group1"}'KAFKA_CONSUMER = None # comment out to enable Kafka consumer
|
|
58
|
+
|
|
59
|
+
# N8N Webhook Args
|
|
60
|
+
# see https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/?utm_source=n8n_app&utm_medium=node_settings_modal-credential_link&utm_campaign=n8n-nodes-base.webhook#path
|
|
61
|
+
# APILOGICPROJECT_wh_scheme = "http"
|
|
62
|
+
# APILOGICPROJECT_wh_server = "localhost" # or cloud.n8n.io...
|
|
63
|
+
# APILOGICPROJECT_wh_port = 5678
|
|
64
|
+
# APILOGICPROJECT_wh_endpoint = "webhook-test"
|
|
65
|
+
# APILOGICPROJECT_wh_path = "002fa0e8-f7aa-4e04-b4e3-e81aa29c6e69"
|
|
66
|
+
# APILOGICPROJECT_token = "YWRtaW46cA=="
|
|
67
|
+
# APILOGICPROJECT_N8N_PRODUCER = {"authorization": f"Basic {token}", "n8n_url": f'"{wh_scheme}://{wh_server}:{wh_port}/{wh_endpoint}/{wh_path}"'}
|
|
68
|
+
# Or enter the n8n_url directly:
|
|
69
|
+
# APILOGICPROJECT_N8N_PRODUCER = {"authorization": f"Basic {token}","n8n_url":"http://localhost:5678/webhook-test/002fa0e8-f7aa-4e04-b4e3-e81aa29c6e69"}
|
|
70
|
+
# APILOGICPROJECT_N8N_PRODUCER = None # comment out to enable N8N producer
|
api_logic_server_cli/prototypes/base/devops/docker-standard-image/docker-compose-standard-image.yml
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
|
|
2
|
+
# cd <project>
|
|
3
|
+
# sh ./devops/docker-standard-image/docker-compose.sh
|
|
4
|
+
# --> builds, runs at localhost:5656
|
|
5
|
+
|
|
6
|
+
# docker-compose -f devops/docker-standard-image/docker-compose-standard-image.yml up
|
|
7
|
+
# docker-compose -f devops/docker-standard-image/docker-compose-standard-image.yml down
|
|
8
|
+
|
|
9
|
+
# if you have run docker compose up (above), you must run docker compose down to run directly:
|
|
10
|
+
# docker run -it --rm --name api_logic_project -p 5656:5656 --env-file ./devops/docker-standard-image/env.list -v ./:/app apilogicserver/api_logic_server python3 /app/api_logic_server_run.py
|
|
11
|
+
|
|
12
|
+
services:
|
|
13
|
+
api-logic-server:
|
|
14
|
+
image: apilogicserver/api_logic_server
|
|
15
|
+
container_name: api_logic_project
|
|
16
|
+
environment:
|
|
17
|
+
- APILOGICPROJECT_VERBOSE=true
|
|
18
|
+
- SECURITY_ENABLED=true
|
|
19
|
+
env_file:
|
|
20
|
+
- ./env.list
|
|
21
|
+
volumes:
|
|
22
|
+
- ./../..:/app
|
|
23
|
+
ports:
|
|
24
|
+
- 5656:5656
|
|
25
|
+
command: python3 /app/api_logic_server_run.py
|
|
26
|
+
stdin_open: true
|
|
27
|
+
tty: true
|
|
28
|
+
restart: unless-stopped
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# these values override the Config values, and the CLI arguments
|
|
2
|
+
# the values below are for testing - uncomment and view them on console log on server start
|
|
3
|
+
# #als: configure environment variables
|
|
4
|
+
|
|
5
|
+
# ip to which flask will be bound (default: 0.0.0.0)
|
|
6
|
+
# APILOGICPROJECT_FLASK_HOST=flask-host-e
|
|
7
|
+
|
|
8
|
+
# port (Flask) (default: 5656)
|
|
9
|
+
# APILOGICPROJECT_PORT=port-e
|
|
10
|
+
|
|
11
|
+
# ip clients use to access API (default: localhost)
|
|
12
|
+
# APILOGICPROJECT_SWAGGER_HOST=swagger-host-e
|
|
13
|
+
|
|
14
|
+
# swagger port (eg, 443 for codespaces) (default: 5656)
|
|
15
|
+
# APILOGICPROJECT_SWAGGER_PORT=swagger-port-e
|
|
16
|
+
|
|
17
|
+
# http or https (default: http)
|
|
18
|
+
# APILOGICPROJECT_HTTP_SCHEME=http-scheme-e
|
|
19
|
+
|
|
20
|
+
# APILOGICPROJECT_HTTP_SCHEME=http
|
|
21
|
+
|
|
22
|
+
# for reverse proxy cases where the entire URI must be specified
|
|
23
|
+
# APILOGICPROJECT_CLIENT_URI=httpe://hoste:porte
|
|
24
|
+
|
|
25
|
+
# TODO specify database uri's here, e.g:
|
|
26
|
+
# APILOGICPROJECT_SQLALCHEMY_DATABASE_URI=postgresql://postgres:p@postgresql-container/basic_demo
|
|
27
|
+
# APILOGICPROJECT_SQLALCHEMY_DATABASE_URI_AUTHENTICATION=postgresql://postgres:p@postgresql-container/authdb
|
|
28
|
+
# APILOGICPROJECT_SQLALCHEMY_DATABASE_URI=mysql+pymysql://root:p@mysql-container:3306/basic_demo
|
|
29
|
+
# APILOGICPROJECT_SQLALCHEMY_DATABASE_URI_AUTHENTICATION=mysql+pymysql://root:p@mysql-container:3306/authdb
|
|
30
|
+
|
|
31
|
+
# APILOGICPROJECT_SECURITY_ENABLED=false
|
|
32
|
+
# APILOGICPROJECT_KEYCLOAK_REALM=kcals
|
|
33
|
+
# APILOGICPROJECT_KEYCLOAK_BASE=http://localhost:8080//realms/kcals
|
|
34
|
+
# APILOGICPROJECT_KEYCLOAK_BASE_URL=http://localhost:8080
|
|
35
|
+
# APILOGICPROJECT_KEYCLOAK_CLIENT_ID=alsclient
|
|
36
|
+
|
|
37
|
+
# required if you are not running from venv or docker apilogicserver/api_logic_server
|
|
38
|
+
# APILOGICPROJECT_APILOGICSERVERHOME=src/ApiLogicServer-src
|
|
39
|
+
|
|
40
|
+
# whether to invoke dbinit befoce connecting...
|
|
41
|
+
# APILOGICSERVER_ORACLE_THICK=~/Downloads/instantclient_19_16
|
|
42
|
+
|
|
43
|
+
# enables aggregate defaulting, and defaulting for all numerics and strings
|
|
44
|
+
# used to initialize rows prior to logic, to avoid excessive None testing
|
|
45
|
+
# AGGREGATE_DEFAULTS=True
|
|
46
|
+
# ALL_DEFAULTS=True
|
|
47
|
+
|
|
48
|
+
APILOGICPROJECT_VERBOSE=True
|
|
49
|
+
|
|
50
|
+
# APILOGICPROJECT_LOG_CONFIG=
|
|
51
|
+
# name of log.yml file (eg, config/logging_prod.yml)
|
|
52
|
+
|
|
53
|
+
# APILOGICPROJECT_STOP_OK=FALSE
|
|
54
|
+
# dev only - enable stop url: http://localhost:5656/stop?msg=reason
|
|
55
|
+
|
|
@@ -1,4 +1,16 @@
|
|
|
1
|
-
|
|
1
|
+
## Using the standard container
|
|
2
|
+
|
|
3
|
+
There are many, many ways of using docker.
|
|
4
|
+
|
|
5
|
+
1. You can use the existing apilogicserver/api_logic_server container as shown in `devops/docker-standard-image`.
|
|
6
|
+
|
|
7
|
+
2. Or, you can create your own container, as described in the next section.
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
## Creating per-project containers
|
|
12
|
+
|
|
13
|
+
Use these directories to deploy your system to the cloud. This means you can provide a preview of [working software](https://apilogicserver.github.io/Docs/Working-Software-Now/) for your team:
|
|
2
14
|
|
|
3
15
|
* **Developers** can use the API to begin custom User Interface development
|
|
4
16
|
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
### Add Natural
|
|
1
|
+
### Add Natural Language Logic to Your Project
|
|
2
2
|
|
|
3
|
-
You can add Natural Language logic files to this directory, e.g
|
|
3
|
+
You can add Natural Language logic files to this directory, e.g. in `genai_demo/docs/logic`:
|
|
4
|
+
|
|
5
|
+
* `valid_names.prompt`: Customer and Product Names cannot be 'x'
|
|
6
|
+
* `valid_currency.prompt`: Customer credit limits cannot be negative; Product prices must be positive.
|
|
4
7
|
|
|
5
8
|
Then, use GenAI to create executable logic in your `logic/logic_discovery` directory, e.g.,
|
|
6
9
|
|
|
@@ -13,3 +16,4 @@ Notes:
|
|
|
13
16
|
1. Ensure derived attributes exist in the data model (see [Database Design Changes](https://apilogicserver.github.io/Docs/Database-Changes/))
|
|
14
17
|
2. Be sure to initialize such attributes in your database
|
|
15
18
|
3. For more information, [click here](https://apilogicserver.github.io/Docs/WebGenAI-CLI/#add-logic-to-existing-projects)
|
|
19
|
+
4. Consider renaming your logic files afterward (`valid_names.z-prompt`)so they are skipped on future runs
|
|
@@ -10,6 +10,14 @@ This describes how to use Logic; for more information, [see here](https://apilog
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
|
|
13
|
+
## Natural Language vs. IDE
|
|
14
|
+
|
|
15
|
+
If you are using WebGenAI, you can specify rules in Natural Language. You can also augment them in the IDE using code completion. There are some important usage guidelines.
|
|
16
|
+
|
|
17
|
+
> You should generally not alter any files in the `wg_rules` directory. For more information, see [WebGenAI](https://apilogicserver.github.io/Docs/WebGenAI/), and [WebGenAI Logic](https://apilogicserver.github.io/Docs/WebGenAI-CLI.md#natural-language-logic).
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
13
21
|
## Examples
|
|
14
22
|
Examples from tutorial project:
|
|
15
23
|
* Examples drawn from [tutorial project](https://github.com/ApiLogicServer/demo/blob/main/logic/declare_logic.py)
|
|
@@ -33,7 +33,9 @@ class Roles():
|
|
|
33
33
|
read_only = "readonly"
|
|
34
34
|
admin = "CS_ADMIN"
|
|
35
35
|
public="public" # p1/p (no roles, but gets public)
|
|
36
|
+
sa="sa"
|
|
36
37
|
|
|
38
|
+
DefaultRolePermission(to_role=Roles.sa, can_read=True, can_update=True, can_insert=True, can_delete=True)
|
|
37
39
|
DefaultRolePermission(to_role=Roles.tenant, can_read=True, can_delete=True)
|
|
38
40
|
DefaultRolePermission(to_role=Roles.admin, can_read=True, can_insert=True,can_update=True, can_delete=True)
|
|
39
41
|
DefaultRolePermission(to_role=Roles.manager, can_read=True, can_insert=True,can_update=True, can_delete=False)
|
|
@@ -46,13 +46,13 @@ def declare_logic():
|
|
|
46
46
|
Rule.sum(derive=Order.amount_total, as_sum_of=Item.amount)
|
|
47
47
|
|
|
48
48
|
def derive_amount(row: models.Item, old_row: models.Item, logic_row: LogicRow):
|
|
49
|
-
amount = row.
|
|
50
|
-
if row.
|
|
49
|
+
amount = row.quantity * row.unit_price
|
|
50
|
+
if row.product.carbon_neutral == True and row.quantity >= 10:
|
|
51
51
|
amount = amount * Decimal(0.9) # breakpoint here
|
|
52
52
|
return amount
|
|
53
53
|
|
|
54
54
|
# Items.Amount = Quantity * UnitPrice with discount for CarbonNeutral products.
|
|
55
|
-
Rule.formula(derive=models.Item.
|
|
55
|
+
Rule.formula(derive=models.Item.amount,
|
|
56
56
|
calling=derive_amount)
|
|
57
57
|
|
|
58
58
|
# Item.unit_price is copied from Product.unit_price.
|
|
@@ -9,8 +9,7 @@
|
|
|
9
9
|
"workbench.editorAssociations": {
|
|
10
10
|
"*.md": "vscode.markdown.preview.editor"
|
|
11
11
|
},
|
|
12
|
-
"workbench.colorTheme": "
|
|
13
|
-
"workbench.
|
|
14
|
-
"workbench.preferredLightColorTheme": "Arduino"
|
|
12
|
+
"workbench.colorTheme": "Office Theme (Publisher)",
|
|
13
|
+
"workbench.preferredLightColorTheme": "Office Theme (Publisher)"
|
|
15
14
|
}
|
|
16
15
|
}
|
|
@@ -14,7 +14,7 @@ Use case: Check Credit
|
|
|
14
14
|
Use case: App Integration
|
|
15
15
|
1. Send the Order to Kafka topic 'order_shipping' if the date_shipped is not None.
|
|
16
16
|
|
|
17
|
-
Ensure each customer has a unique name.
|
|
17
|
+
Ensure each customer and product has a unique name.
|
|
18
18
|
|
|
19
19
|
Ensure each Item quantity is not null.
|
|
20
20
|
|
api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/genai_demo_formal.prompt
CHANGED
|
@@ -2,8 +2,6 @@ Create a system with customers, orders, items and products.
|
|
|
2
2
|
|
|
3
3
|
Include a notes field for orders.
|
|
4
4
|
|
|
5
|
-
Use LogicBank to enforce business logic.
|
|
6
|
-
|
|
7
5
|
Use case: Check Credit
|
|
8
6
|
1. Customer.balance <= credit_limit
|
|
9
7
|
2. Customer.balance = Sum(Order.amount_total where date_shipped is null)
|
api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/genai_demo_informal.prompt
CHANGED
|
@@ -2,8 +2,6 @@ Create a system with customers, orders, items and products.
|
|
|
2
2
|
|
|
3
3
|
Include a notes field for orders.
|
|
4
4
|
|
|
5
|
-
Use LogicBank to enforce business logic.
|
|
6
|
-
|
|
7
5
|
Use case: Check Credit
|
|
8
6
|
1. The Customer's balance is less than the credit limit
|
|
9
7
|
2. The Customer's balance is the sum of the Order amount_total where date_shipped is null
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Run WebGenAI locally from docker container
|
|
2
|
+
|
|
3
|
+
# Before running, update ./system/genai/webg_local/webg_config/web_genai.txt
|
|
4
|
+
# See: https://apilogicserver.github.io/Docs/WebGenAI-CLI/#configuration
|
|
5
|
+
|
|
6
|
+
# cd <manager>
|
|
7
|
+
# sh system/genai/webg_local/run_web_genai.sh
|
|
8
|
+
# Find projects at: system/genai/webg_local/webg_projects/by-ulid
|
|
9
|
+
|
|
10
|
+
docker run -it --rm --name webgenie -p 8282:80 --env-file ./system/genai/webg_local/webg_config/web_genai.txt -v ./system/genai/webg_local/webg_temp:/tmp -v ./system/genai/webg_local/webg_projects:/opt/projects apilogicserver/web_genai
|
|
Binary file
|
api_logic_server_cli/prototypes/manager/system/genai/webg_local/webg-projects/by-ulid/.DS_Store
ADDED
|
Binary file
|
api_logic_server_cli/prototypes/manager/system/genai/webg_local/webg-projects/public/.DS_Store
ADDED
|
Binary file
|
api_logic_server_cli/prototypes/manager/system/genai/webg_local/webg-projects/wgadmin/.DS_Store
ADDED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -360,8 +360,8 @@ class ModelClass(Model):
|
|
|
360
360
|
camel-case and singlularize, with provisions for reserved word (Date) and collisions (Dates & _Dates)
|
|
361
361
|
"""
|
|
362
362
|
tablename = cls._convert_to_valid_identifier(tablename)
|
|
363
|
-
if tablename in ["Dates"]: # ApiLogicServer
|
|
364
|
-
tablename = tablename + "
|
|
363
|
+
if tablename in ["Dates", "dates", "Column", "column"]: # ApiLogicServer
|
|
364
|
+
tablename = tablename + "Cls"
|
|
365
365
|
camel_case_name = ''.join(part[:1].upper() + part[1:] for part in tablename.split('_'))
|
|
366
366
|
if camel_case_name in ["Dates"]:
|
|
367
367
|
camel_case_name = camel_case_name + "_Classs"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
api_logic_server_cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
-
api_logic_server_cli/api_logic_server.py,sha256=
|
|
3
|
-
api_logic_server_cli/api_logic_server_info.yaml,sha256=
|
|
4
|
-
api_logic_server_cli/cli.py,sha256=
|
|
2
|
+
api_logic_server_cli/api_logic_server.py,sha256=Kz5-fZRLHGXfh3ywAX1drmihsm5k0yKEtdXiPgPxyOA,113936
|
|
3
|
+
api_logic_server_cli/api_logic_server_info.yaml,sha256=WU6oSE-ugtlDCfMuVqRfri9PNBgGXefZr-YQgq3MHLc,125
|
|
4
|
+
api_logic_server_cli/cli.py,sha256=t4jyVgA1OoO2AXbgwdQP3I_ZJS1A-ZirFl18e4VU3co,80766
|
|
5
5
|
api_logic_server_cli/cli_args_base.py,sha256=lr27KkOB7_WpZwTs7LgiK8LKDIHMKQkoZCTnE99BFxw,3280
|
|
6
6
|
api_logic_server_cli/cli_args_project.py,sha256=I5no_fGRV_ZsK3SuttVDAaQYI4Q5zCjx6LojGkM024w,4645
|
|
7
7
|
api_logic_server_cli/extended_builder.py,sha256=EhtXGAt_RrDR2tCtgvc2U82we7fr-F6pP-e6HS6dQWQ,13867
|
|
@@ -26,7 +26,7 @@ api_logic_server_cli/create_from_model/__pycache__/create_db_from_model.cpython-
|
|
|
26
26
|
api_logic_server_cli/create_from_model/__pycache__/dbml.cpython-312.pyc,sha256=E4oR4UFDjW7Z7SCfo-USc7vUVfwQFma1O_qldAT7L7c,8952
|
|
27
27
|
api_logic_server_cli/create_from_model/__pycache__/meta_model.cpython-312.pyc,sha256=Ylu_fwSC4BHfTr4xzXCfyY6ChXu9seDx_LphGw_Tl6Y,7133
|
|
28
28
|
api_logic_server_cli/create_from_model/__pycache__/model_creation_services.cpython-312.pyc,sha256=ZItAlFMbjQopl5EJ5zVKvSMweEczeky1o2uKewW-aus,36599
|
|
29
|
-
api_logic_server_cli/create_from_model/__pycache__/ont_build.cpython-312.pyc,sha256=
|
|
29
|
+
api_logic_server_cli/create_from_model/__pycache__/ont_build.cpython-312.pyc,sha256=PtUuxzrSRLwxSvD3LG5B3W9Yb-YwqVeExtST59Skj8M,69030
|
|
30
30
|
api_logic_server_cli/create_from_model/__pycache__/ont_create.cpython-312.pyc,sha256=M9PIKa6_15c-il2FKP-fqeCGse_tbof3mvg_ZVlPy4I,14478
|
|
31
31
|
api_logic_server_cli/create_from_model/__pycache__/ui_admin_creator.cpython-312.pyc,sha256=dW3OP8i2imShiMvCVxfTu5w5t4renKVrIuATDSvDs9k,38555
|
|
32
32
|
api_logic_server_cli/create_from_model/__pycache__/uri_info.cpython-312.pyc,sha256=_xZHwvPJzehSzH-ueuTKwNqNLTJfUMDwYl5ddYNTxRM,2728
|
|
@@ -471,10 +471,11 @@ api_logic_server_cli/fragments/nw_virtual_attrs.py,sha256=7hgvhnO1UcJ6OoPKCxR5bn
|
|
|
471
471
|
api_logic_server_cli/fragments/ui_basic_web_app_runZZ.py,sha256=UllBIkKHlUE3nyDE1qtFWCA-NTE1ltYxPvVUd7lZI5U,870
|
|
472
472
|
api_logic_server_cli/genai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
473
473
|
api_logic_server_cli/genai/client.py,sha256=36gyz-dqxj4dJj1SGtO9NZsy9-cfnf4d7uahHimwqHk,772
|
|
474
|
-
api_logic_server_cli/genai/genai.py,sha256=
|
|
474
|
+
api_logic_server_cli/genai/genai.py,sha256=ue5gElZS22d3Ro8ECw9PrPhu3o5OKUvf47gkJqDvKBc,44247
|
|
475
|
+
api_logic_server_cli/genai/genai_fatal_excp.py,sha256=1FmDVcXVRqmG0JMVZ7l4KqMOdpff3KGZ2LPAGtw304Q,179
|
|
475
476
|
api_logic_server_cli/genai/genai_logic_builder.py,sha256=VkgOG0s17sdt-ElQmfTRuMCUnQLtxtyaH8Qfr0x1TrE,23552
|
|
476
|
-
api_logic_server_cli/genai/genai_svcs.py,sha256=
|
|
477
|
-
api_logic_server_cli/genai/genai_utils.py,sha256=
|
|
477
|
+
api_logic_server_cli/genai/genai_svcs.py,sha256=OEeecUl0erraodfn-P9ICzdTLyewXOVl42PZpI31QEA,46698
|
|
478
|
+
api_logic_server_cli/genai/genai_utils.py,sha256=DTlWTnW5_2pzX4q1VG1tWqoZPVObDHR97SVe0z8Z3rs,17102
|
|
478
479
|
api_logic_server_cli/genai/json2rules.py,sha256=ykoxxgZgqllzt8Ud06S-R_3QtumxXfmF5ksYC0Hh2Sk,2645
|
|
479
480
|
api_logic_server_cli/model_migrator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
480
481
|
api_logic_server_cli/model_migrator/gen_behave_tests.py,sha256=2EOPlY2up_kv80LCRvxOiV-PxHW_Muq6IW8p1AwFpVU,9491
|
|
@@ -508,7 +509,7 @@ api_logic_server_cli/prototypes/allocation/logic/declare_logic.py,sha256=Wqk1kpu
|
|
|
508
509
|
api_logic_server_cli/prototypes/allocation/test/test.sh,sha256=ndw_D7IOFTEUZxbcOL5Y-spvF8pJCe8OOSroqBfjXPM,645
|
|
509
510
|
api_logic_server_cli/prototypes/base/.DS_Store,sha256=xMhewDC6Svrxt7lCSkNtbYvtSyWxUMSTtAAlVdI8XJI,6148
|
|
510
511
|
api_logic_server_cli/prototypes/base/.gitignore,sha256=PAO98cVvjgAL_mvXCMS_Vfk7bT2Vd1-j9a8_nB2qxqs,190
|
|
511
|
-
api_logic_server_cli/prototypes/base/api_logic_server_run.py,sha256=
|
|
512
|
+
api_logic_server_cli/prototypes/base/api_logic_server_run.py,sha256=LgPBLuITuoH2Q51m1l5mtBQFsw68FtrjLyte4P6dUCY,6568
|
|
512
513
|
api_logic_server_cli/prototypes/base/readme.md,sha256=CtWAiMpRfJiA83y90RYVLQ_E1Mntya7Xd8SWcsaHWBc,11710
|
|
513
514
|
api_logic_server_cli/prototypes/base/requirements.txt,sha256=we6X5fRBJVqN8SacwV7oPDtGk5IAiNbUDbUwCGHkCrc,107
|
|
514
515
|
api_logic_server_cli/prototypes/base/run.ps1,sha256=lrZgw8SEntPam3ZYKVzsRo7rOKSGWqgO7qUNJ3CbP44,801
|
|
@@ -527,7 +528,7 @@ api_logic_server_cli/prototypes/base/.vscode/launch.json,sha256=5sR621KUgIhwTdxl
|
|
|
527
528
|
api_logic_server_cli/prototypes/base/.vscode/settings.json,sha256=vS3gt0PpFbZ3fdGeiVGaE4v9PyRydjrrdGWb27w9UUo,470
|
|
528
529
|
api_logic_server_cli/prototypes/base/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
529
530
|
api_logic_server_cli/prototypes/base/api/customize_api.py,sha256=-_eoaIukB4v1dF1TXTOqRRyU_nLbXXEhphI43GPtdoI,2236
|
|
530
|
-
api_logic_server_cli/prototypes/base/api/expose_api_models.py,sha256=
|
|
531
|
+
api_logic_server_cli/prototypes/base/api/expose_api_models.py,sha256=17ql1DgNFnnclE8NM1GDCgm7umdI8nGbRuoR-v7bWGM,1827
|
|
531
532
|
api_logic_server_cli/prototypes/base/api/json_encoder.py,sha256=3EFDSi9jdaS4jSOs5EwyltWwTy-8QEoBN2afYknpCdQ,521
|
|
532
533
|
api_logic_server_cli/prototypes/base/api/readme_customize_api.md,sha256=AEeBybDsXSDr2IlqGZCo17ZModZnrflAOCx2a6gP_rE,4165
|
|
533
534
|
api_logic_server_cli/prototypes/base/api/api_discovery/auto_discovery.py,sha256=y6uQ_i9t8qqmjsM69rZzzp2q3OaAbSrwlfeRIrR_sRY,1099
|
|
@@ -537,7 +538,7 @@ api_logic_server_cli/prototypes/base/api/api_discovery/ontimize_api.py,sha256=_g
|
|
|
537
538
|
api_logic_server_cli/prototypes/base/api/api_discovery/system.py,sha256=Cv4qtnEG5s6vtk2alHmPAvwKlbtlHsd3Ugse_YKIk7Q,3345
|
|
538
539
|
api_logic_server_cli/prototypes/base/api/system/api_utils.py,sha256=cCwujmQRE3gb6756GAVlypx7r30eH_-aZzo-hi3BNTU,5812
|
|
539
540
|
api_logic_server_cli/prototypes/base/api/system/custom_endpoint.py,sha256=191JrBIhRM1-gjCdJhfy0VFTZtMHoGXIIXcwEGAPbeI,49786
|
|
540
|
-
api_logic_server_cli/prototypes/base/api/system/expression_parser.py,sha256=
|
|
541
|
+
api_logic_server_cli/prototypes/base/api/system/expression_parser.py,sha256=PXvmRmPte2bY00GvwnTYwp819e3q8dtk95Ns5IVHVbo,28035
|
|
541
542
|
api_logic_server_cli/prototypes/base/api/system/gen_csv_report.py,sha256=GDAFJV3v1phmjLDE-vfvp8jgZnu2R6sTdQ6UWgdk64c,1410
|
|
542
543
|
api_logic_server_cli/prototypes/base/api/system/gen_pdf_report.py,sha256=gOe5mSYbh17q94UDh_YQI4qUr7jjck7UfnTNe7CEXhA,8783
|
|
543
544
|
api_logic_server_cli/prototypes/base/api/system/opt_locking/opt_locking.py,sha256=ib-hb-ZLZ7P7XbyQ08teUKM_p-5WMAmo0Cyjao2GA9o,6432
|
|
@@ -571,7 +572,7 @@ api_logic_server_cli/prototypes/base/database/test_data/readme.md,sha256=T_uBlZt
|
|
|
571
572
|
api_logic_server_cli/prototypes/base/database/test_data/response2code.py,sha256=PTeAXHU-r6r0EBknSGXnbkdySAAzch_3gOuRlyUyVF8,4414
|
|
572
573
|
api_logic_server_cli/prototypes/base/database/test_data/test_data_preamble.py,sha256=zmGdhH-Lm_BLeTkDSAb_7jQd4OD10LivzEOisdHT_fU,2892
|
|
573
574
|
api_logic_server_cli/prototypes/base/devops/.DS_Store,sha256=Cy2EHccNO2W84kaA9RvGJWq3tlZOj1YR7XYzgFTXIvg,6148
|
|
574
|
-
api_logic_server_cli/prototypes/base/devops/readme-devops.md,sha256=
|
|
575
|
+
api_logic_server_cli/prototypes/base/devops/readme-devops.md,sha256=KxoCpgjKN3U8GZ48VF1yH2hF_i2kC7QViZacgP4iN8s,1340
|
|
575
576
|
api_logic_server_cli/prototypes/base/devops/auth-db/authdb_mysql.Dockerfile,sha256=FIdVnGfT5DDW-OyEjARpoYr3Gm33s_gbFVrnjNU_rpg,2604
|
|
576
577
|
api_logic_server_cli/prototypes/base/devops/auth-db/authdb_mysql.sql,sha256=1S-QufT8KK0IlUqzu02g-yFLmav3rPgPXukBz0sCgNw,3648
|
|
577
578
|
api_logic_server_cli/prototypes/base/devops/auth-db/authdb_postgres.sql,sha256=RBYP5uT1acvn0O1n8veRVDb8m3mA3Y-ifNvA1kVY2ho,1246
|
|
@@ -592,8 +593,10 @@ api_logic_server_cli/prototypes/base/devops/docker-compose-dev-local-nginx/unuse
|
|
|
592
593
|
api_logic_server_cli/prototypes/base/devops/docker-compose-dev-local-nginx/unused/unused-requirements-slim.txt,sha256=tbSwU7qdwcp_5ILWgEcLLeS7frnLkLif9Gyf5r3Ou-E,14
|
|
593
594
|
api_logic_server_cli/prototypes/base/devops/docker-image/build_image.dockerfile,sha256=RVvOirRyqEloaZHgByW2_ux9ajL2ixRdEpc14JJHyg0,647
|
|
594
595
|
api_logic_server_cli/prototypes/base/devops/docker-image/build_image.sh,sha256=3PTPAr8cwYtxMgLYExzpXHZ-fiOY4EEp_7B7qhKtdbs,2025
|
|
595
|
-
api_logic_server_cli/prototypes/base/devops/docker-image/env.list,sha256=
|
|
596
|
+
api_logic_server_cli/prototypes/base/devops/docker-image/env.list,sha256=RNFOENsRVvvj-Y_QYCrtbP4N1Jmufj6OKXx4bq8B7cc,3431
|
|
596
597
|
api_logic_server_cli/prototypes/base/devops/docker-image/run_image.sh,sha256=D94avWpEftzC6nIoWHtjJPmIkTQtckc69ulSIsqbGiY,1176
|
|
598
|
+
api_logic_server_cli/prototypes/base/devops/docker-standard-image/docker-compose-standard-image.yml,sha256=D2gHgYB16U4_ebcg7i4AZHj2AJ9j1e6kq8Ulw-cmIqM,976
|
|
599
|
+
api_logic_server_cli/prototypes/base/devops/docker-standard-image/env.list,sha256=NqtUvek7VKp-g5l8WVNFZTzWIHeYiAnSL53boiK8k8w,2165
|
|
597
600
|
api_logic_server_cli/prototypes/base/devops/keycloak/.DS_Store,sha256=1lFlJ5EFymdzGAUAaI30vcaaLHt3F1LwpG7xILf9jsM,6148
|
|
598
601
|
api_logic_server_cli/prototypes/base/devops/keycloak/docker-compose-dev-network.yml,sha256=19HvUXnEczbOi2dMSlVY9aqaHzeFiZ30f2gBZ9fxelE,1090
|
|
599
602
|
api_logic_server_cli/prototypes/base/devops/keycloak/docker-compose-nginx.yml,sha256=iWTFHcjxWCRHtotuDsoR2w7sUNug0LOclMh5JjGwSFc,1676
|
|
@@ -617,7 +620,7 @@ api_logic_server_cli/prototypes/base/devops/keycloak/nginx/nginx.conf,sha256=nsp
|
|
|
617
620
|
api_logic_server_cli/prototypes/base/devops/keycloak/unused/auth_provider.py,sha256=e8PoH9Ck4nrMe-QY99Lh0G02gzn2ubnMauFVEpNbeQ8,2771
|
|
618
621
|
api_logic_server_cli/prototypes/base/devops/keycloak/unused/unused-docker-compose-keycloak.sh,sha256=YvYRD4ID8v7znslXKOlzu3hpN17h0O_zwGPkFYy1G20,353
|
|
619
622
|
api_logic_server_cli/prototypes/base/devops/python-anywhere/python_anywhere_wsgi.py,sha256=xs3ZT1gg8C4tMzUW6OfOzV8dXHtUW5KVJdyyEbooPFs,3820
|
|
620
|
-
api_logic_server_cli/prototypes/base/docs/logic/readme.md,sha256=
|
|
623
|
+
api_logic_server_cli/prototypes/base/docs/logic/readme.md,sha256=fIQypEQ7Ny7q385AhpwndYRBFquG6P6xpM41-zrIseE,871
|
|
621
624
|
api_logic_server_cli/prototypes/base/docs/logic_suggestions/readme_logic_suggestions.md,sha256=44ibQYGOy84J4zGFaChLCOf-GU9pOBrbgBbprujMtIs,184
|
|
622
625
|
api_logic_server_cli/prototypes/base/integration/kafka/kafka_consumer.py,sha256=2DOsFpYnsJ71gZzzfJweEmL-i99uCtEFU0hVwIKFGMw,1516
|
|
623
626
|
api_logic_server_cli/prototypes/base/integration/kafka/kafka_producer.py,sha256=nza_seZJhI7OSnaIXgOGmLv68NrPojt7_uvE7_2agDU,4131
|
|
@@ -630,13 +633,13 @@ api_logic_server_cli/prototypes/base/integration/system/FlaskKafka.py,sha256=_Us
|
|
|
630
633
|
api_logic_server_cli/prototypes/base/integration/system/RowDictMapper.py,sha256=DSdmeAQZZ_wUWHHiSS_6ZgeTKIuEycNlgX140l3fnSE,19986
|
|
631
634
|
api_logic_server_cli/prototypes/base/logic/declare_logic.py,sha256=vglpAfVRM3QONLDbWIXcZrXTSttO8vUpwLbSJ51Fmw0,3290
|
|
632
635
|
api_logic_server_cli/prototypes/base/logic/load_verify_rules.py,sha256=dYEb-UxqQ5N08ry22I04vtFy8JtQe2pL7Jw8gR8nGu4,7742
|
|
633
|
-
api_logic_server_cli/prototypes/base/logic/readme_declare_logic.md,sha256=
|
|
636
|
+
api_logic_server_cli/prototypes/base/logic/readme_declare_logic.md,sha256=ZC1a0e_tob6UNXcoPGgYEf_BPUlwpdD-bYwtNPUeORQ,7105
|
|
634
637
|
api_logic_server_cli/prototypes/base/logic/logic_discovery/auto_discovery.py,sha256=m97W6DYi6ouTDuFCiU1rPq1UqzJuNnVePyOeLU33D1s,2645
|
|
635
638
|
api_logic_server_cli/prototypes/base/logic/logic_discovery/__pycache__/__init__.cpython-312.pyc,sha256=5--1medTaKN83y-D_iv9EPiLD2uja_Q0r5ZkxX_pJM4,199
|
|
636
639
|
api_logic_server_cli/prototypes/base/logic/logic_discovery/__pycache__/auto_discovery.cpython-312.pyc,sha256=OHyWfpKrY0UbeSEwBnxsiIHPgpjzDSpCoyIa6ha4NVk,1579
|
|
637
640
|
api_logic_server_cli/prototypes/base/logic/logic_discovery/__pycache__/error_testing.cpython-312.pyc,sha256=NQKJ0pHsE53Nwmob8c03X_vkSV-MP_mj-1VFmJ3kRs0,2225
|
|
638
641
|
api_logic_server_cli/prototypes/base/security/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
639
|
-
api_logic_server_cli/prototypes/base/security/declare_security.py,sha256=
|
|
642
|
+
api_logic_server_cli/prototypes/base/security/declare_security.py,sha256=RRRvRMRR6_EsM61VbkWA-D99rNSaQTByTI06eOzRtao,1946
|
|
640
643
|
api_logic_server_cli/prototypes/base/security/authentication_provider/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
641
644
|
api_logic_server_cli/prototypes/base/security/authentication_provider/abstract_authentication_provider.py,sha256=RPPA48kdYiXx5zQ6epbfAEB1se8E10Ra9NxYRjIBShk,895
|
|
642
645
|
api_logic_server_cli/prototypes/base/security/authentication_provider/keycloak/auth_provider.py,sha256=7z2aY7BAcy31EiGbmvGgSRLjQOooU1bM3g-bbyxdOac,10433
|
|
@@ -734,7 +737,7 @@ api_logic_server_cli/prototypes/genai_demo/integration/row_dict_maps/OrderB2B.py
|
|
|
734
737
|
api_logic_server_cli/prototypes/genai_demo/integration/row_dict_maps/OrderShipping.py,sha256=4wM45eRNkDNl7vcX689VSR7BgdKvae5hD26L8XZYGfc,1197
|
|
735
738
|
api_logic_server_cli/prototypes/genai_demo/integration/row_dict_maps/row_dict_maps_readme.md,sha256=5tOPwErjkcCQONrNcaGsttEwybxCIq-5j45dkOcDh1Q,206
|
|
736
739
|
api_logic_server_cli/prototypes/genai_demo/integration/row_dict_maps/__pycache__/OrderB2B.cpython-312.pyc,sha256=GAhE6t6Hd1OshSdpG7T10GapxWgU4lM95n7zd2jwN6Q,1955
|
|
737
|
-
api_logic_server_cli/prototypes/genai_demo/logic/declare_logic.py,sha256=
|
|
740
|
+
api_logic_server_cli/prototypes/genai_demo/logic/declare_logic.py,sha256=gP4_Zr2nM8qXmmrCwtSM6D2ITZkLvwanBQhIo9UNiuo,4932
|
|
738
741
|
api_logic_server_cli/prototypes/genai_demo/logic/load_verify_rules.py,sha256=TWqzJ_KWX_QvpxWQv4ujqc487W1P9ZglrciSLor_NHA,7681
|
|
739
742
|
api_logic_server_cli/prototypes/genai_demo/logic/readme_declare_logic.md,sha256=CFC13f9Z4rTkNiRoJTBEz3A2F_yRThOj-HrHDsSdKsw,6630
|
|
740
743
|
api_logic_server_cli/prototypes/genai_demo/logic/__pycache__/declare_logic.cpython-312.pyc,sha256=heB0NPW04Ede5hY4x-lF8_Hj2TtfYSQrBSEaDOUEiuw,6990
|
|
@@ -755,7 +758,7 @@ api_logic_server_cli/prototypes/manager/.vscode/ApiLogicServer.code-workspace,sh
|
|
|
755
758
|
api_logic_server_cli/prototypes/manager/.vscode/launch.json,sha256=UMyprDcKb7bWjhTVaTFLW1l_1WYoTCg9JMzAIt5F0Z8,32527
|
|
756
759
|
api_logic_server_cli/prototypes/manager/.vscode/settings.json,sha256=wQgpFvviPbZCmsf02UgrJSGAz7g3i4chDZ_AdSIOr5Y,625
|
|
757
760
|
api_logic_server_cli/prototypes/manager/system/.DS_Store,sha256=r4gY37tWmhc60MVHeHWD-ZbqQBPlXqcC7xX2NhV42AA,6148
|
|
758
|
-
api_logic_server_cli/prototypes/manager/system/Manager_workspace.code-workspace,sha256=
|
|
761
|
+
api_logic_server_cli/prototypes/manager/system/Manager_workspace.code-workspace,sha256=EqvNleSV4PRL_tJIYy8gC0TKc0S2x3h3Vxba5QGyN4c,304
|
|
759
762
|
api_logic_server_cli/prototypes/manager/system/style-guide.yaml,sha256=tgMp7e2IbOys7nymIM9onv65P0G2SIBJSe1qa-rRBtA,676
|
|
760
763
|
api_logic_server_cli/prototypes/manager/system/app_model_editor/.gitignore,sha256=07msA6EiXJT_unwoat2B8vI6ANcIn9E-ntgIpQZj7g0,477
|
|
761
764
|
api_logic_server_cli/prototypes/manager/system/app_model_editor/api_logic_server_run.py,sha256=vf9Jc2vAz5npI6pD4kLNNdFTkqK8rO4erA03-k_mkcY,6363
|
|
@@ -1214,11 +1217,11 @@ api_logic_server_cli/prototypes/manager/system/genai/examples/emp_depts/emp_dept
|
|
|
1214
1217
|
api_logic_server_cli/prototypes/manager/system/genai/examples/emp_depts/logic_notes.md,sha256=mrEBKE1OQxEqFoRLD1zYL-SeC5ITPcWEZKaumRDw7U4,100
|
|
1215
1218
|
api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/.DS_Store,sha256=zQYgpeXOUqrfba9eGY89I8y4TzyXt6KeFI8mi4jUJFk,6148
|
|
1216
1219
|
api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/create_db_models.py,sha256=QyGtjgsuYkVF5UYOn35V8ZnAdI76s-1KyM7nnGM4lPI,3588
|
|
1217
|
-
api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/genai_demo.prompt,sha256=
|
|
1220
|
+
api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/genai_demo.prompt,sha256=TTeQkOzxrA-HSrJtJ1FuEM9CsECZ2hiz4lDZLJQWhtw,783
|
|
1218
1221
|
api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/genai_demo.response_example,sha256=AW8V5VmeSEfGMPsTDYY77kIWqlnZ9-rpk-7OfboBiwM,8755
|
|
1219
1222
|
api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/genai_demo_fixup_required.json,sha256=b7SO0wkrV7DxIkW2UxmEF07wXONMwzC4UOw1ZG2cvAw,9670
|
|
1220
|
-
api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/genai_demo_formal.prompt,sha256=
|
|
1221
|
-
api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/genai_demo_informal.prompt,sha256=
|
|
1223
|
+
api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/genai_demo_formal.prompt,sha256=k5U0obVyjLfD2kzqiFHF6FyucTCa47BEo6gdQJp3e34,390
|
|
1224
|
+
api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/genai_demo_informal.prompt,sha256=u8MO_zBIDDqcx33cnBE8zjMUvkom_hJHFOb-vHVR6NA,729
|
|
1222
1225
|
api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/genai_demo_informal_rules_only.prompt,sha256=rR-ZCr3knseA9ButjkZ80hxhy-Rxw5FbvVEbEXImo58,521
|
|
1223
1226
|
api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/genai_demo_no_logic.prompt,sha256=IIsO4mxLpKccSoIE1dMNsQQ2efhhCpFnAcoGtbcHv50,95
|
|
1224
1227
|
api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/__pycache__/create_db_models.cpython-312.pyc,sha256=GuOEED9cvP4Q9M73S2zAdHybuhe8W36kb1j5HRZb5YU,5578
|
|
@@ -5888,6 +5891,15 @@ api_logic_server_cli/prototypes/manager/system/genai/temp/$notes.txt,sha256=FMmb
|
|
|
5888
5891
|
api_logic_server_cli/prototypes/manager/system/genai/temp/chatgpt_original.response,sha256=pXPPj8lg0nJ82YGDu4Yrj9yVMUiSDptvjiudkNoB2ac,4628
|
|
5889
5892
|
api_logic_server_cli/prototypes/manager/system/genai/temp/chatgpt_retry.response,sha256=pXPPj8lg0nJ82YGDu4Yrj9yVMUiSDptvjiudkNoB2ac,4628
|
|
5890
5893
|
api_logic_server_cli/prototypes/manager/system/genai/temp/create_db_models.py,sha256=-OZ9PHKd0Igvt-VDV26HbkjLX8t-ozAScP-CNjNyf-4,3581
|
|
5894
|
+
api_logic_server_cli/prototypes/manager/system/genai/webg_local/.DS_Store,sha256=XYdFi4HKsh2uAbbSX1lGyTufnlYykTWjfRpwpcLV69Y,8196
|
|
5895
|
+
api_logic_server_cli/prototypes/manager/system/genai/webg_local/run_web_genai.sh,sha256=YoqH3HlgOWQjjOewpJKCD7vr6Z7AAA33B3p_wgZ5-QI,562
|
|
5896
|
+
api_logic_server_cli/prototypes/manager/system/genai/webg_local/webg-projects/.DS_Store,sha256=Bmp6az8vHo25tJ7g4hYMKYhYjcc-cNEc9CE22BUL__E,6148
|
|
5897
|
+
api_logic_server_cli/prototypes/manager/system/genai/webg_local/webg-projects/by-ulid/.DS_Store,sha256=oDv5WcRzbU9xt2tdH5TzzS8jjkCNJl1zexqxLVquXVk,6148
|
|
5898
|
+
api_logic_server_cli/prototypes/manager/system/genai/webg_local/webg-projects/public/.DS_Store,sha256=1lFlJ5EFymdzGAUAaI30vcaaLHt3F1LwpG7xILf9jsM,6148
|
|
5899
|
+
api_logic_server_cli/prototypes/manager/system/genai/webg_local/webg-projects/wgadmin/.DS_Store,sha256=1lFlJ5EFymdzGAUAaI30vcaaLHt3F1LwpG7xILf9jsM,6148
|
|
5900
|
+
api_logic_server_cli/prototypes/manager/system/genai/webg_local/webg-temp/.DS_Store,sha256=CPykieh8Ma-zQAP23vf2cE3ermOFzN96bktWzPJzH_w,10244
|
|
5901
|
+
api_logic_server_cli/prototypes/manager/system/genai/webg_local/webg_config/.DS_Store,sha256=1lFlJ5EFymdzGAUAaI30vcaaLHt3F1LwpG7xILf9jsM,6148
|
|
5902
|
+
api_logic_server_cli/prototypes/manager/system/genai/webg_local/webg_config/web_genai.txt,sha256=2f9M2V8aKFrrv8idloh_bxR_ldt8tkSOcZD2PlMeqFU,232
|
|
5891
5903
|
api_logic_server_cli/prototypes/manager/system/images/copilot-clean.png,sha256=R3coCCU40UIg55fqQVAoOviiX1ERcyGqrd_EYHo6Oac,597600
|
|
5892
5904
|
api_logic_server_cli/prototypes/manager/system/images/copilot.png,sha256=N8WsgqwOLD3DxkmQvpnLxx7KbMirXViUgNgumg-lbIA,1175570
|
|
5893
5905
|
api_logic_server_cli/prototypes/manager/system/images/genai.png,sha256=jqC_qRwR6Y3DIfWaYnLPWKn1KF1UUezEnMeRpvRwv5s,117507
|
|
@@ -6228,7 +6240,7 @@ api_logic_server_cli/sqlacodegen_wrapper/sqlacodegen/setup.py,sha256=ekn0wq_leWE
|
|
|
6228
6240
|
api_logic_server_cli/sqlacodegen_wrapper/sqlacodegen/tox.ini,sha256=mVlmM_uI-7K4pLs-jBfu8ZOQpHwQj8fh7LogvwjXJyE,440
|
|
6229
6241
|
api_logic_server_cli/sqlacodegen_wrapper/sqlacodegen/__pycache__/__init__.cpython-312.pyc,sha256=TCTs9PqY75qnKtNXXWS41XVG_wGzHyRQ2eA3IWNY-Ss,237
|
|
6230
6242
|
api_logic_server_cli/sqlacodegen_wrapper/sqlacodegen/sqlacodegen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6231
|
-
api_logic_server_cli/sqlacodegen_wrapper/sqlacodegen/sqlacodegen/codegen.py,sha256=
|
|
6243
|
+
api_logic_server_cli/sqlacodegen_wrapper/sqlacodegen/sqlacodegen/codegen.py,sha256=DpymzpfQJiW-x6E63wZ-cxfft3BsmwVOraTZA95Ks40,77512
|
|
6232
6244
|
api_logic_server_cli/sqlacodegen_wrapper/sqlacodegen/sqlacodegen/main.py,sha256=_kSzjbpJRgQURKP391SdIjYJOzBuyADEIP0qSSu8Nv0,3252
|
|
6233
6245
|
api_logic_server_cli/sqlacodegen_wrapper/sqlacodegen/sqlacodegen/__pycache__/__init__.cpython-312.pyc,sha256=KHmbHH1vUKhS8pIGx1wyXxO6iwO9X3znNZROjYUzTnI,249
|
|
6234
6246
|
api_logic_server_cli/sqlacodegen_wrapper/sqlacodegen/sqlacodegen/__pycache__/codegen.cpython-312.pyc,sha256=4hnUU0c1-SbhvP6ElD5usSEzhc2UJCxdct0jC9iz7d0,81261
|
|
@@ -6264,9 +6276,9 @@ api_logic_server_cli/tools/mini_skel/database/system/SAFRSBaseX.py,sha256=p8C7AF
|
|
|
6264
6276
|
api_logic_server_cli/tools/mini_skel/database/system/TestDataBase.py,sha256=U02SYqThsbY5g3DX7XGaiMxjZBuOpzvtPS6RfI1WQFg,371
|
|
6265
6277
|
api_logic_server_cli/tools/mini_skel/logic/declare_logic.py,sha256=fTrlHyqMeZsw_TyEXFa1VlYBL7fzjZab5ONSXO7aApo,175
|
|
6266
6278
|
api_logic_server_cli/tools/mini_skel/logic/load_verify_rules.py,sha256=Rr5bySJpYCZmNPF2h-phcPJ53nAOPcT_ohZpCD93-a0,7530
|
|
6267
|
-
|
|
6268
|
-
|
|
6269
|
-
|
|
6270
|
-
|
|
6271
|
-
|
|
6272
|
-
|
|
6279
|
+
apilogicserver-14.3.14.dist-info/LICENSE,sha256=67BS7VC-Z8GpaR3wijngQJkHWV04qJrwQArVgn9ldoI,1485
|
|
6280
|
+
apilogicserver-14.3.14.dist-info/METADATA,sha256=d4RHqiI5jboiE2yCOxqbZoHTAKDYvedMwyZlkGunnQs,6447
|
|
6281
|
+
apilogicserver-14.3.14.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
|
|
6282
|
+
apilogicserver-14.3.14.dist-info/entry_points.txt,sha256=KiLloZJ3c_RW-nIDqBtoE0WEsQTnZ3dELwHLWi23LMA,103
|
|
6283
|
+
apilogicserver-14.3.14.dist-info/top_level.txt,sha256=-r0AT_GEApleihg-jIh0OMvzzc0BO1RuhhOpE91H5qI,21
|
|
6284
|
+
apilogicserver-14.3.14.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|