setta 0.0.2__py3-none-any.whl → 0.0.3.dev0__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.
Potentially problematic release.
This version of setta might be problematic. Click here for more details.
- setta/__init__.py +1 -1
- setta/cli/logger.py +1 -3
- setta/code_gen/create_runnable_scripts.py +43 -27
- setta/code_gen/export_selected.py +1 -5
- setta/code_gen/find_placeholders.py +13 -2
- setta/database/backup.py +1 -2
- setta/database/db_objs.py +6 -0
- setta/database/export_db/export_raw.py +3 -3
- setta/database/export_db/utils.py +2 -3
- setta/database/settings_file.py +3 -3
- setta/server.py +3 -4
- setta/start.py +4 -3
- setta/static/constants/constants.json +3 -0
- setta/static/constants/settingsProject.json +31 -31
- setta/static/frontend/assets/{index-ee99dc72.js → index-36d99fbc.js} +145 -145
- setta/static/frontend/index.html +1 -1
- setta/tasks/utils.py +2 -2
- setta/utils/constants.py +4 -2
- {setta-0.0.2.dist-info → setta-0.0.3.dev0.dist-info}/METADATA +1 -1
- {setta-0.0.2.dist-info → setta-0.0.3.dev0.dist-info}/RECORD +24 -25
- setta/database/db_path.py +0 -8
- {setta-0.0.2.dist-info → setta-0.0.3.dev0.dist-info}/LICENSE +0 -0
- {setta-0.0.2.dist-info → setta-0.0.3.dev0.dist-info}/WHEEL +0 -0
- {setta-0.0.2.dist-info → setta-0.0.3.dev0.dist-info}/entry_points.txt +0 -0
- {setta-0.0.2.dist-info → setta-0.0.3.dev0.dist-info}/top_level.txt +0 -0
    
        setta/__init__.py
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            __version__ = "0.0. | 
| 1 | 
            +
            __version__ = "0.0.3.dev0"
         | 
    
        setta/cli/logger.py
    CHANGED
    
    | @@ -26,9 +26,7 @@ class Setta: | |
| 26 26 | 
             
                    if root_path:
         | 
| 27 27 | 
             
                        self.root_path = Path(root_path)
         | 
| 28 28 | 
             
                    else:
         | 
| 29 | 
            -
                        self.root_path = Path(
         | 
| 30 | 
            -
                            os.environ.get(CODE_FOLDER_ENV_VARIABLE, os.path.relpath(os.getcwd()))
         | 
| 31 | 
            -
                        )
         | 
| 29 | 
            +
                        self.root_path = Path(os.environ.get(CODE_FOLDER_ENV_VARIABLE, "."))
         | 
| 32 30 |  | 
| 33 31 | 
             
                    self.name_path_type_to_id = {}
         | 
| 34 32 |  | 
| @@ -1,15 +1,15 @@ | |
| 1 1 | 
             
            import copy
         | 
| 2 | 
            -
            import os
         | 
| 3 2 | 
             
            from datetime import datetime
         | 
| 4 3 | 
             
            from pathlib import Path
         | 
| 5 4 |  | 
| 6 5 | 
             
            from setta.code_gen.export_selected import (
         | 
| 7 6 | 
             
                export_selected,
         | 
| 8 7 | 
             
                get_gen_code_template_var,
         | 
| 8 | 
            +
                get_section_name,
         | 
| 9 9 | 
             
                get_section_type,
         | 
| 10 10 | 
             
                get_selected_section_variant,
         | 
| 11 11 | 
             
            )
         | 
| 12 | 
            -
            from setta.code_gen.find_placeholders import  | 
| 12 | 
            +
            from setta.code_gen.find_placeholders import parse_template_var, tp
         | 
| 13 13 | 
             
            from setta.code_gen.python.generate_code import (
         | 
| 14 14 | 
             
                convert_var_names_to_readable_form,
         | 
| 15 15 | 
             
                generate_code,
         | 
| @@ -23,6 +23,7 @@ from setta.code_gen.utils import process_refs | |
| 23 23 | 
             
            from setta.utils.constants import (
         | 
| 24 24 | 
             
                CODE_FOLDER,
         | 
| 25 25 | 
             
                CODE_FOLDER_ENV_VARIABLE,
         | 
| 26 | 
            +
                CWD,
         | 
| 26 27 | 
             
                USER_SETTINGS,
         | 
| 27 28 | 
             
                C,
         | 
| 28 29 | 
             
            )
         | 
| @@ -56,13 +57,13 @@ async def runCode(message, lsp_writers): | |
| 56 57 | 
             
                id_to_relpath = {}
         | 
| 57 58 | 
             
                for sid in to_write:
         | 
| 58 59 | 
             
                    curr_code = code_dict[sid]
         | 
| 59 | 
            -
                     | 
| 60 | 
            +
                    rel_path_str = write_code_to_file(
         | 
| 60 61 | 
             
                        folder_path,
         | 
| 61 62 | 
             
                        curr_code["sanitized_full_name"],
         | 
| 62 63 | 
             
                        curr_code["code"],
         | 
| 63 64 | 
             
                        curr_code["codeLanguage"],
         | 
| 64 65 | 
             
                    )
         | 
| 65 | 
            -
                    id_to_relpath[sid] =  | 
| 66 | 
            +
                    id_to_relpath[sid] = rel_path_str
         | 
| 66 67 |  | 
| 67 68 | 
             
                # Only run code that isn't referenced by other code
         | 
| 68 69 | 
             
                run_order = [
         | 
| @@ -71,8 +72,8 @@ async def runCode(message, lsp_writers): | |
| 71 72 |  | 
| 72 73 | 
             
                # create a wrapper script if there are multiple files to run
         | 
| 73 74 | 
             
                if len(run_order) > 1:
         | 
| 74 | 
            -
                     | 
| 75 | 
            -
                    command = codeCallStr( | 
| 75 | 
            +
                    rel_path_str = create_wrapper_bash_script(folder_path, run_order, code_dict)
         | 
| 76 | 
            +
                    command = codeCallStr(rel_path_str, "bash")
         | 
| 76 77 | 
             
                else:
         | 
| 77 78 | 
             
                    sid = run_order[0]
         | 
| 78 79 | 
             
                    command = codeCallStr(id_to_relpath[sid], code_dict[sid]["codeLanguage"])
         | 
| @@ -280,17 +281,41 @@ def get_template_var_replacement_value_fn( | |
| 280 281 | 
             
                                chars_before_template_var,
         | 
| 281 282 | 
             
                            )
         | 
| 282 283 | 
             
                        else:
         | 
| 283 | 
            -
                             | 
| 284 | 
            -
             | 
| 285 | 
            -
             | 
| 284 | 
            +
                            return process_non_hardcoded_template_var(
         | 
| 285 | 
            +
                                keyword,
         | 
| 286 | 
            +
                                template_var,
         | 
| 287 | 
            +
                                exporter_obj,
         | 
| 288 | 
            +
                                section_dependencies,
         | 
| 289 | 
            +
                                folder_path,
         | 
| 290 | 
            +
                            )
         | 
| 291 | 
            +
             | 
| 286 292 | 
             
                    elif codeLanguage == "bash":
         | 
| 287 | 
            -
                         | 
| 288 | 
            -
             | 
| 289 | 
            -
                         | 
| 293 | 
            +
                        return process_non_hardcoded_template_var(
         | 
| 294 | 
            +
                            keyword, template_var, exporter_obj, section_dependencies, folder_path
         | 
| 295 | 
            +
                        )
         | 
| 290 296 |  | 
| 291 297 | 
             
                return get_template_var_replacement_value
         | 
| 292 298 |  | 
| 293 299 |  | 
| 300 | 
            +
            def process_non_hardcoded_template_var(
         | 
| 301 | 
            +
                keyword, template_var, exporter_obj, section_dependencies, folder_path
         | 
| 302 | 
            +
            ):
         | 
| 303 | 
            +
                keyword, keyword_type = parse_template_var(keyword)
         | 
| 304 | 
            +
                if keyword_type == C.TEMPLATE_VAR_IMPORT_PATH_SUFFIX:
         | 
| 305 | 
            +
                    section_dependencies.append(template_var["sectionId"])
         | 
| 306 | 
            +
                    return construct_module_path(folder_path, keyword)
         | 
| 307 | 
            +
                elif keyword_type == C.TEMPLATE_VAR_VERSION_SUFFIX:
         | 
| 308 | 
            +
                    version_name = get_selected_section_variant(
         | 
| 309 | 
            +
                        exporter_obj.p, template_var["sectionId"]
         | 
| 310 | 
            +
                    )["name"]
         | 
| 311 | 
            +
                    section_name = get_section_name(exporter_obj.p, template_var["sectionId"])
         | 
| 312 | 
            +
                    return f'"{section_name}@{version_name}"'
         | 
| 313 | 
            +
                elif keyword_type == C.TEMPLATE_VAR_FILE_PATH_SUFFIX:
         | 
| 314 | 
            +
                    section_dependencies.append(template_var["sectionId"])
         | 
| 315 | 
            +
                    keyword = sanitize_section_path_full_name(keyword)
         | 
| 316 | 
            +
                    return f'"{codePathStr(folder_path, keyword, "python")}"'
         | 
| 317 | 
            +
             | 
| 318 | 
            +
             | 
| 294 319 | 
             
            def get_absolute_decl_position_from_rel_position(
         | 
| 295 320 | 
             
                template_var, var_name_to_decl_rel_position_dict
         | 
| 296 321 | 
             
            ):
         | 
| @@ -337,7 +362,7 @@ def preprocess_template_vars(code, evRefs, templateVars, cursor_position): | |
| 337 362 |  | 
| 338 363 |  | 
| 339 364 | 
             
            def convert_folder_path_to_module_path(folder_path):
         | 
| 340 | 
            -
                return  | 
| 365 | 
            +
                return folder_path.relative_to(CWD).as_posix().replace("/", ".").replace("\\", ".")
         | 
| 341 366 |  | 
| 342 367 |  | 
| 343 368 | 
             
            def languageToExtension(x):
         | 
| @@ -351,7 +376,7 @@ def languageToCall(x): | |
| 351 376 | 
             
            def codePathStr(folder_path, filename, codeLanguage):
         | 
| 352 377 | 
             
                extension = languageToExtension(codeLanguage)
         | 
| 353 378 | 
             
                output = folder_path / f"{filename}{extension}"
         | 
| 354 | 
            -
                return  | 
| 379 | 
            +
                return output.relative_to(CWD).as_posix()
         | 
| 355 380 |  | 
| 356 381 |  | 
| 357 382 | 
             
            def codeCallStr(filepath, codeLanguage):
         | 
| @@ -407,28 +432,19 @@ def create_timestamped_folder(base_dir, prefix=""): | |
| 407 432 | 
             
                folder_name = f"_{prefix}{timestamp}"
         | 
| 408 433 | 
             
                # Full path for the new folder
         | 
| 409 434 | 
             
                folder_path = Path(base_dir) / folder_name
         | 
| 410 | 
            -
             | 
| 411 | 
            -
                if not os.path.exists(folder_path):
         | 
| 412 | 
            -
                    try:
         | 
| 413 | 
            -
                        os.makedirs(folder_path)
         | 
| 414 | 
            -
                    except FileExistsError:
         | 
| 415 | 
            -
                        pass
         | 
| 416 | 
            -
             | 
| 435 | 
            +
                folder_path.mkdir(parents=True, exist_ok=True)
         | 
| 417 436 | 
             
                return folder_path
         | 
| 418 437 |  | 
| 419 438 |  | 
| 420 439 | 
             
            def write_code_to_file(folder_path, filename, code, codeLanguage):
         | 
| 421 440 | 
             
                extension = languageToExtension(codeLanguage)
         | 
| 422 441 | 
             
                filepath = write_string_to_file(folder_path, f"{filename}{extension}", code)
         | 
| 423 | 
            -
                return  | 
| 442 | 
            +
                return filepath.relative_to(CWD).as_posix()
         | 
| 424 443 |  | 
| 425 444 |  | 
| 426 445 | 
             
            def write_string_to_file(folder, filename, content):
         | 
| 427 | 
            -
                 | 
| 428 | 
            -
                file_path | 
| 429 | 
            -
                # Write the content to the file
         | 
| 430 | 
            -
                with open(file_path, "w") as file:
         | 
| 431 | 
            -
                    file.write(content)
         | 
| 446 | 
            +
                file_path = Path(folder) / filename
         | 
| 447 | 
            +
                file_path.write_text(content)
         | 
| 432 448 | 
             
                return file_path
         | 
| 433 449 |  | 
| 434 450 |  | 
| @@ -11,10 +11,6 @@ from .find_placeholders import tp | |
| 11 11 | 
             
            from .utils import process_refs
         | 
| 12 12 |  | 
| 13 13 |  | 
| 14 | 
            -
            def get_args_var_name(var_name):
         | 
| 15 | 
            -
                return f"{C.ARGS_PREFIX}{var_name}"
         | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 18 14 | 
             
            def get_section_type(p, id):
         | 
| 19 15 | 
             
                ui_type_id = p["sections"][id]["uiTypeId"]
         | 
| 20 16 | 
             
                ui_type = p["uiTypes"].get(ui_type_id) or BASE_UI_TYPES[ui_type_id]
         | 
| @@ -144,7 +140,7 @@ def no_entered_value(value): | |
| 144 140 |  | 
| 145 141 |  | 
| 146 142 | 
             
            def get_var_name(var_name_mapping):
         | 
| 147 | 
            -
                return f" | 
| 143 | 
            +
                return f"{C.ARGS_PREFIX}x{len(var_name_mapping)}"
         | 
| 148 144 |  | 
| 149 145 |  | 
| 150 146 | 
             
            def get_for_section_id(p, section_id):
         | 
| @@ -9,5 +9,16 @@ def remove_tp(x): | |
| 9 9 | 
             
                return x.lstrip(C.TEMPLATE_PREFIX)
         | 
| 10 10 |  | 
| 11 11 |  | 
| 12 | 
            -
            def  | 
| 13 | 
            -
                 | 
| 12 | 
            +
            def parse_template_var(template_str: str) -> tuple[str, str | None]:
         | 
| 13 | 
            +
                suffixes = [
         | 
| 14 | 
            +
                    f"{tp(C.TEMPLATE_VAR_IMPORT_PATH_SUFFIX)}",
         | 
| 15 | 
            +
                    f"{tp(C.TEMPLATE_VAR_VERSION_SUFFIX)}",
         | 
| 16 | 
            +
                    f"{tp(C.TEMPLATE_VAR_FILE_PATH_SUFFIX)}",
         | 
| 17 | 
            +
                ]
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                for suffix in suffixes:
         | 
| 20 | 
            +
                    if template_str.endswith(suffix):
         | 
| 21 | 
            +
                        base_str = remove_tp(template_str[: -len(suffix)])
         | 
| 22 | 
            +
                        return base_str, remove_tp(suffix)
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                return template_str, None
         | 
    
        setta/database/backup.py
    CHANGED
    
    | @@ -1,5 +1,4 @@ | |
| 1 1 | 
             
            import logging
         | 
| 2 | 
            -
            import os
         | 
| 3 2 | 
             
            import shutil
         | 
| 4 3 | 
             
            import time
         | 
| 5 4 | 
             
            from datetime import datetime
         | 
| @@ -54,7 +53,7 @@ def create_backup(db_path): | |
| 54 53 | 
             
                ensure_backup_dir_exists()
         | 
| 55 54 | 
             
                timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
         | 
| 56 55 | 
             
                backup_filename = f"backup_{timestamp}.db"
         | 
| 57 | 
            -
                backup_path =  | 
| 56 | 
            +
                backup_path = DB_BACKUP_FOLDER / backup_filename
         | 
| 58 57 | 
             
                logger.debug(f"creating backup: {backup_path}")
         | 
| 59 58 |  | 
| 60 59 | 
             
                shutil.copy2(db_path, backup_path)
         | 
    
        setta/database/db_objs.py
    CHANGED
    
    | @@ -1,6 +1,8 @@ | |
| 1 1 | 
             
            import queue
         | 
| 2 2 | 
             
            import sqlite3
         | 
| 3 3 |  | 
| 4 | 
            +
            from setta.utils.constants import SETTA_FILES_FOLDER
         | 
| 5 | 
            +
             | 
| 4 6 |  | 
| 5 7 | 
             
            class DB:
         | 
| 6 8 | 
             
                def __init__(self, path):
         | 
| @@ -100,3 +102,7 @@ class DBQueue: | |
| 100 102 | 
             
                def __exit__(self, *args, **kwargs):
         | 
| 101 103 | 
             
                    self.curr.__exit__(*args, **kwargs)
         | 
| 102 104 | 
             
                    self.put_back_curr()
         | 
| 105 | 
            +
             | 
| 106 | 
            +
             | 
| 107 | 
            +
            def get_default_db_path():
         | 
| 108 | 
            +
                return SETTA_FILES_FOLDER / "setta.db"
         | 
| @@ -1,9 +1,9 @@ | |
| 1 1 | 
             
            import logging
         | 
| 2 | 
            -
            import os
         | 
| 3 | 
            -
            from pathlib import Path
         | 
| 4 2 |  | 
| 5 3 | 
             
            import yaml
         | 
| 6 4 |  | 
| 5 | 
            +
            from setta.utils.constants import SETTA_FILES_FOLDER
         | 
| 6 | 
            +
             | 
| 7 7 | 
             
            logger = logging.getLogger(__name__)
         | 
| 8 8 |  | 
| 9 9 |  | 
| @@ -26,7 +26,7 @@ def export_raw(db, filename): | |
| 26 26 | 
             
                yaml.add_representer(str, literal_presenter)
         | 
| 27 27 |  | 
| 28 28 | 
             
                # For YAML export, PyYAML is used; ensure it's installed
         | 
| 29 | 
            -
                filepath =  | 
| 29 | 
            +
                filepath = SETTA_FILES_FOLDER / f"{filename}_export.yaml"
         | 
| 30 30 | 
             
                logger.debug(f"saving raw db to {filepath}")
         | 
| 31 31 | 
             
                with open(filepath, "w") as file:
         | 
| 32 32 | 
             
                    yaml.dump(database_export, file, allow_unicode=True, sort_keys=False)
         | 
| @@ -1,16 +1,15 @@ | |
| 1 | 
            -
            import os
         | 
| 2 1 | 
             
            from collections import defaultdict
         | 
| 3 | 
            -
            from pathlib import Path
         | 
| 4 2 |  | 
| 5 3 | 
             
            import yaml
         | 
| 6 4 | 
             
            from yaml.representer import Representer
         | 
| 7 5 |  | 
| 8 6 | 
             
            from setta.database.db.projects.load import load_full_project
         | 
| 7 | 
            +
            from setta.utils.constants import SETTA_FILES_FOLDER
         | 
| 9 8 |  | 
| 10 9 |  | 
| 11 10 | 
             
            def get_configs_and_root_folder(db, filename):
         | 
| 12 11 | 
             
                # export defaultdict the same way as dict
         | 
| 13 12 | 
             
                yaml.add_representer(defaultdict, Representer.represent_dict)
         | 
| 14 13 | 
             
                configs = load_full_project(db)
         | 
| 15 | 
            -
                root_folder =  | 
| 14 | 
            +
                root_folder = SETTA_FILES_FOLDER / f"{filename}_export"
         | 
| 16 15 | 
             
                return configs, root_folder
         | 
    
        setta/database/settings_file.py
    CHANGED
    
    | @@ -11,7 +11,7 @@ from setta.database.db.sections.jsonSource import ( | |
| 11 11 | 
             
                remove_json_source_data,
         | 
| 12 12 | 
             
                save_json_source_data,
         | 
| 13 13 | 
             
            )
         | 
| 14 | 
            -
            from setta.utils.constants import CONSTANTS_FOLDER, USER_SETTINGS
         | 
| 14 | 
            +
            from setta.utils.constants import CONSTANTS_FOLDER, SETTA_FILES_FOLDER, USER_SETTINGS
         | 
| 15 15 | 
             
            from setta.utils.utils import get_absolute_path, save_json_to_file
         | 
| 16 16 |  | 
| 17 17 | 
             
            logger = logging.getLogger(__name__)
         | 
| @@ -63,8 +63,8 @@ class MetaSettingsFile: | |
| 63 63 | 
             
                    self.path_seed_meta_settings = get_absolute_path(
         | 
| 64 64 | 
             
                        __file__, CONSTANTS_FOLDER / "settingsProject.json"
         | 
| 65 65 | 
             
                    )
         | 
| 66 | 
            -
                    self.path_default_settings = "setta-settings.json"
         | 
| 67 | 
            -
                    self.path_meta_settings = "setta-meta-settings.json"
         | 
| 66 | 
            +
                    self.path_default_settings = SETTA_FILES_FOLDER / "setta-settings.json"
         | 
| 67 | 
            +
                    self.path_meta_settings = SETTA_FILES_FOLDER / "setta-meta-settings.json"
         | 
| 68 68 | 
             
                    self.load_seed_files()
         | 
| 69 69 |  | 
| 70 70 | 
             
                def get_settings_paths(self):
         | 
    
        setta/server.py
    CHANGED
    
    | @@ -1,5 +1,4 @@ | |
| 1 1 | 
             
            import logging
         | 
| 2 | 
            -
            import os
         | 
| 3 2 | 
             
            from contextlib import asynccontextmanager
         | 
| 4 3 | 
             
            from pathlib import Path
         | 
| 5 4 |  | 
| @@ -35,7 +34,7 @@ from setta.routers import ( | |
| 35 34 | 
             
            )
         | 
| 36 35 | 
             
            from setta.tasks.tasks import Tasks
         | 
| 37 36 | 
             
            from setta.terminals.terminals import TerminalWebsockets
         | 
| 38 | 
            -
            from setta.utils.constants import CODE_FOLDER, USER_SETTINGS, C
         | 
| 37 | 
            +
            from setta.utils.constants import CODE_FOLDER, CWD, USER_SETTINGS, C
         | 
| 39 38 | 
             
            from setta.utils.utils import get_absolute_path, is_dev_mode
         | 
| 40 39 | 
             
            from setta.utils.websocket_manager import WebsocketManager
         | 
| 41 40 |  | 
| @@ -45,8 +44,8 @@ async def lifespan(app: FastAPI): | |
| 45 44 | 
             
                # startup
         | 
| 46 45 | 
             
                app.state.settings_file = SettingsFile()
         | 
| 47 46 | 
             
                app.state.lsps = create_lsps(
         | 
| 48 | 
            -
                    workspace_folder= | 
| 49 | 
            -
                    code_folder= | 
| 47 | 
            +
                    workspace_folder=CWD,
         | 
| 48 | 
            +
                    code_folder=CODE_FOLDER / "temp_folder",
         | 
| 50 49 | 
             
                    settings=USER_SETTINGS["languageServer"],
         | 
| 51 50 | 
             
                )
         | 
| 52 51 | 
             
                app.state.lsp_writers = create_lsp_writers(app.state.lsps)
         | 
    
        setta/start.py
    CHANGED
    
    | @@ -9,11 +9,10 @@ import uvicorn | |
| 9 9 | 
             
            from . import __version__
         | 
| 10 10 | 
             
            from .cli.connect import connect as _connect
         | 
| 11 11 | 
             
            from .database.db_init import maybe_create_tables_and_seed
         | 
| 12 | 
            -
            from .database.db_objs import DBQueue
         | 
| 13 | 
            -
            from .database.db_path import get_default_db_path
         | 
| 12 | 
            +
            from .database.db_objs import DBQueue, get_default_db_path
         | 
| 14 13 | 
             
            from .database.export_db.export_db import export_database
         | 
| 15 14 | 
             
            from .database.import_db import import_database
         | 
| 16 | 
            -
            from .utils.constants import C, set_constants
         | 
| 15 | 
            +
            from .utils.constants import SETTA_FILES_FOLDER, C, set_constants
         | 
| 17 16 |  | 
| 18 17 |  | 
| 19 18 | 
             
            @click.command()
         | 
| @@ -79,6 +78,8 @@ def cli(ctx, reload, with_examples, db, host, port, log_level): | |
| 79 78 | 
             
                if ctx.invoked_subcommand is None:
         | 
| 80 79 | 
             
                    print("Starting Setta", flush=True)
         | 
| 81 80 |  | 
| 81 | 
            +
                    SETTA_FILES_FOLDER.mkdir(parents=True, exist_ok=True)
         | 
| 82 | 
            +
             | 
| 82 83 | 
             
                    set_constants(
         | 
| 83 84 | 
             
                        with_examples=with_examples,
         | 
| 84 85 | 
             
                        db_path=db,
         | 
| @@ -105,6 +105,9 @@ | |
| 105 105 | 
             
              "WS_LSP_STATUS": "lspStatus",
         | 
| 106 106 | 
             
              "SETTA_GENERATED_PYTHON": "SETTA_GENERATED_PYTHON",
         | 
| 107 107 | 
             
              "SETTA_GENERATED_PYTHON_IMPORTS": "SETTA_GENERATED_PYTHON_IMPORTS",
         | 
| 108 | 
            +
              "TEMPLATE_VAR_IMPORT_PATH_SUFFIX": "import_path",
         | 
| 109 | 
            +
              "TEMPLATE_VAR_VERSION_SUFFIX": "version",
         | 
| 110 | 
            +
              "TEMPLATE_VAR_FILE_PATH_SUFFIX": "file_path",
         | 
| 108 111 | 
             
              "DEFAULT_PYTHON_SCRIPT_NAME": "setta_python_script",
         | 
| 109 112 | 
             
              "DEFAULT_BASH_SCRIPT_NAME": "setta_bash_script",
         | 
| 110 113 | 
             
              "CODE_AREA_GEN_CODE_NOT_INITIALIZED": "CODE_AREA_GEN_CODE_NOT_INITIALIZED",
         | 
| @@ -42,19 +42,19 @@ | |
| 42 42 | 
             
              },
         | 
| 43 43 | 
             
              "sectionVariants": {
         | 
| 44 44 | 
             
                "19f203aa-cae6-4ccc-928c-dab0194ade77": {
         | 
| 45 | 
            -
                  "name": "setta-settings.json"
         | 
| 45 | 
            +
                  "name": "setta_files/setta-settings.json"
         | 
| 46 46 | 
             
                },
         | 
| 47 47 | 
             
                "f3cb4189-2692-4e75-b58f-76d632f44205": {
         | 
| 48 | 
            -
                  "name": "setta-settings.json"
         | 
| 48 | 
            +
                  "name": "setta_files/setta-settings.json"
         | 
| 49 49 | 
             
                },
         | 
| 50 50 | 
             
                "36d29a06-7971-48d1-a1d2-23480f770d74": {
         | 
| 51 | 
            -
                  "name": "setta-settings.json"
         | 
| 51 | 
            +
                  "name": "setta_files/setta-settings.json"
         | 
| 52 52 | 
             
                },
         | 
| 53 53 | 
             
                "4490975a-8d8d-4f02-8ed4-f48f8258f1ec": {
         | 
| 54 | 
            -
                  "name": "setta-settings.json"
         | 
| 54 | 
            +
                  "name": "setta_files/setta-settings.json"
         | 
| 55 55 | 
             
                },
         | 
| 56 56 | 
             
                "d2c7059a-8e28-488a-aa33-056476652d5e": {
         | 
| 57 | 
            -
                  "name": "setta-settings.json"
         | 
| 57 | 
            +
                  "name": "setta_files/setta-settings.json"
         | 
| 58 58 | 
             
                }
         | 
| 59 59 | 
             
              },
         | 
| 60 60 | 
             
              "uiTypes": {
         | 
| @@ -123,67 +123,67 @@ | |
| 123 123 | 
             
              },
         | 
| 124 124 | 
             
              "uiTypeCols": {
         | 
| 125 125 | 
             
                "04f95495-52ba-4277-a79e-228bb1c6a5bc": {
         | 
| 126 | 
            -
                  "JSON-{\"filenameGlob\":\"setta-settings*.json\",\"key\":[\"gui\",\"panOnScrollMode\"]}": {
         | 
| 126 | 
            +
                  "JSON-{\"filenameGlob\":\"setta_files/setta-settings*.json\",\"key\":[\"gui\",\"panOnScrollMode\"]}": {
         | 
| 127 127 | 
             
                    "uiTypeId": "86b19dfb-742b-4d82-aa5f-5d4cca9f3d0a"
         | 
| 128 128 | 
             
                  },
         | 
| 129 | 
            -
                  "JSON-{\"filenameGlob\":\"setta-settings*.json\",\"key\":[\"gui\",\"selectionMode\"]}": {
         | 
| 129 | 
            +
                  "JSON-{\"filenameGlob\":\"setta_files/setta-settings*.json\",\"key\":[\"gui\",\"selectionMode\"]}": {
         | 
| 130 130 | 
             
                    "uiTypeId": "1ec5d8de-f984-451d-b43a-78917f698d52"
         | 
| 131 131 | 
             
                  },
         | 
| 132 | 
            -
                  "JSON-{\"filenameGlob\":\"setta-settings*.json\",\"key\":[\"gui\",\"showGridLines\"]}": {
         | 
| 132 | 
            +
                  "JSON-{\"filenameGlob\":\"setta_files/setta-settings*.json\",\"key\":[\"gui\",\"showGridLines\"]}": {
         | 
| 133 133 | 
             
                    "uiTypeId": "69cdf4c5-7555-4ef3-93d3-bda03f33c6d5"
         | 
| 134 134 | 
             
                  },
         | 
| 135 | 
            -
                  "JSON-{\"filenameGlob\":\"setta-settings*.json\",\"key\":[\"gui\",\"gridColor\"]}": {
         | 
| 135 | 
            +
                  "JSON-{\"filenameGlob\":\"setta_files/setta-settings*.json\",\"key\":[\"gui\",\"gridColor\"]}": {
         | 
| 136 136 | 
             
                    "uiTypeId": "74de30af-accf-44db-9b6b-da4260f0bd60"
         | 
| 137 137 | 
             
                  },
         | 
| 138 | 
            -
                  "JSON-{\"filenameGlob\":\"setta-settings*.json\",\"key\":[\"gui\",\"gridColorDarkMode\"]}": {
         | 
| 138 | 
            +
                  "JSON-{\"filenameGlob\":\"setta_files/setta-settings*.json\",\"key\":[\"gui\",\"gridColorDarkMode\"]}": {
         | 
| 139 139 | 
             
                    "uiTypeId": "74de30af-accf-44db-9b6b-da4260f0bd60"
         | 
| 140 140 | 
             
                  },
         | 
| 141 | 
            -
                  "JSON-{\"filenameGlob\":\"setta-settings*.json\",\"key\":[\"gui\",\"gridPattern\"]}": {
         | 
| 141 | 
            +
                  "JSON-{\"filenameGlob\":\"setta_files/setta-settings*.json\",\"key\":[\"gui\",\"gridPattern\"]}": {
         | 
| 142 142 | 
             
                    "uiTypeId": "90f2233a-2864-498f-a4df-4c027fa0c4a4"
         | 
| 143 143 | 
             
                  },
         | 
| 144 | 
            -
                  "JSON-{\"filenameGlob\":\"setta-settings*.json\",\"key\":[\"backend\",\"showDefaultConfigOnLoad\"]}": {
         | 
| 144 | 
            +
                  "JSON-{\"filenameGlob\":\"setta_files/setta-settings*.json\",\"key\":[\"backend\",\"showDefaultConfigOnLoad\"]}": {
         | 
| 145 145 | 
             
                    "uiTypeId": "69cdf4c5-7555-4ef3-93d3-bda03f33c6d5"
         | 
| 146 146 | 
             
                  },
         | 
| 147 | 
            -
                  "JSON-{\"filenameGlob\":\"setta-settings*.json\",\"key\":[\"backend\",\"inferImports\"]}": {
         | 
| 147 | 
            +
                  "JSON-{\"filenameGlob\":\"setta_files/setta-settings*.json\",\"key\":[\"backend\",\"inferImports\"]}": {
         | 
| 148 148 | 
             
                    "uiTypeId": "69cdf4c5-7555-4ef3-93d3-bda03f33c6d5"
         | 
| 149 149 | 
             
                  },
         | 
| 150 | 
            -
                  "JSON-{\"filenameGlob\":\"setta-settings*.json\",\"key\":[\"backend\",\"autosave\"]}": {
         | 
| 150 | 
            +
                  "JSON-{\"filenameGlob\":\"setta_files/setta-settings*.json\",\"key\":[\"backend\",\"autosave\"]}": {
         | 
| 151 151 | 
             
                    "uiTypeId": "69cdf4c5-7555-4ef3-93d3-bda03f33c6d5"
         | 
| 152 152 | 
             
                  },
         | 
| 153 | 
            -
                  "JSON-{\"filenameGlob\":\"setta-settings*.json\",\"key\":[\"backend\",\"autobackup\"]}": {
         | 
| 153 | 
            +
                  "JSON-{\"filenameGlob\":\"setta_files/setta-settings*.json\",\"key\":[\"backend\",\"autobackup\"]}": {
         | 
| 154 154 | 
             
                    "uiTypeId": "69cdf4c5-7555-4ef3-93d3-bda03f33c6d5"
         | 
| 155 155 | 
             
                  },
         | 
| 156 | 
            -
                  "JSON-{\"filenameGlob\":\"setta-settings*.json\",\"key\":[\"gui\",\"leftSidePaneShiftsMap\"]}": {
         | 
| 156 | 
            +
                  "JSON-{\"filenameGlob\":\"setta_files/setta-settings*.json\",\"key\":[\"gui\",\"leftSidePaneShiftsMap\"]}": {
         | 
| 157 157 | 
             
                    "uiTypeId": "69cdf4c5-7555-4ef3-93d3-bda03f33c6d5"
         | 
| 158 158 | 
             
                  },
         | 
| 159 | 
            -
                  "JSON-{\"filenameGlob\":\"setta-settings*.json\",\"key\":[\"gui\",\"panOnDrag\"]}": {
         | 
| 159 | 
            +
                  "JSON-{\"filenameGlob\":\"setta_files/setta-settings*.json\",\"key\":[\"gui\",\"panOnDrag\"]}": {
         | 
| 160 160 | 
             
                    "uiTypeId": "69cdf4c5-7555-4ef3-93d3-bda03f33c6d5"
         | 
| 161 161 | 
             
                  },
         | 
| 162 | 
            -
                  "JSON-{\"filenameGlob\":\"setta-settings*.json\",\"key\":[\"gui\",\"panOnScroll\"]}": {
         | 
| 162 | 
            +
                  "JSON-{\"filenameGlob\":\"setta_files/setta-settings*.json\",\"key\":[\"gui\",\"panOnScroll\"]}": {
         | 
| 163 163 | 
             
                    "uiTypeId": "69cdf4c5-7555-4ef3-93d3-bda03f33c6d5"
         | 
| 164 164 | 
             
                  },
         | 
| 165 | 
            -
                  "JSON-{\"filenameGlob\":\"setta-settings*.json\",\"key\":[\"gui\",\"zoomOnScroll\"]}": {
         | 
| 165 | 
            +
                  "JSON-{\"filenameGlob\":\"setta_files/setta-settings*.json\",\"key\":[\"gui\",\"zoomOnScroll\"]}": {
         | 
| 166 166 | 
             
                    "uiTypeId": "69cdf4c5-7555-4ef3-93d3-bda03f33c6d5"
         | 
| 167 167 | 
             
                  },
         | 
| 168 | 
            -
                  "JSON-{\"filenameGlob\":\"setta-settings*.json\",\"key\":[\"gui\",\"zoomOnPinch\"]}": {
         | 
| 168 | 
            +
                  "JSON-{\"filenameGlob\":\"setta_files/setta-settings*.json\",\"key\":[\"gui\",\"zoomOnPinch\"]}": {
         | 
| 169 169 | 
             
                    "uiTypeId": "69cdf4c5-7555-4ef3-93d3-bda03f33c6d5"
         | 
| 170 170 | 
             
                  },
         | 
| 171 | 
            -
                  "JSON-{\"filenameGlob\":\"setta-settings*.json\",\"key\":[\"gui\",\"zoomOnDoubleClick\"]}": {
         | 
| 171 | 
            +
                  "JSON-{\"filenameGlob\":\"setta_files/setta-settings*.json\",\"key\":[\"gui\",\"zoomOnDoubleClick\"]}": {
         | 
| 172 172 | 
             
                    "uiTypeId": "69cdf4c5-7555-4ef3-93d3-bda03f33c6d5"
         | 
| 173 173 | 
             
                  },
         | 
| 174 | 
            -
                  "JSON-{\"filenameGlob\":\"setta-settings*.json\",\"key\":[\"backend\",\"clearTerminalBeforeMarkingAsReady\"]}": {
         | 
| 174 | 
            +
                  "JSON-{\"filenameGlob\":\"setta_files/setta-settings*.json\",\"key\":[\"backend\",\"clearTerminalBeforeMarkingAsReady\"]}": {
         | 
| 175 175 | 
             
                    "uiTypeId": "69cdf4c5-7555-4ef3-93d3-bda03f33c6d5"
         | 
| 176 176 | 
             
                  },
         | 
| 177 | 
            -
                  "JSON-{\"filenameGlob\":\"setta-settings*.json\",\"key\":[\"backend\",\"exportDbRawOnSave\"]}": {
         | 
| 177 | 
            +
                  "JSON-{\"filenameGlob\":\"setta_files/setta-settings*.json\",\"key\":[\"backend\",\"exportDbRawOnSave\"]}": {
         | 
| 178 178 | 
             
                    "uiTypeId": "69cdf4c5-7555-4ef3-93d3-bda03f33c6d5"
         | 
| 179 179 | 
             
                  },
         | 
| 180 | 
            -
                  "JSON-{\"filenameGlob\":\"setta-settings*.json\",\"key\":[\"backend\",\"exportDbReadableOnSave\"]}": {
         | 
| 180 | 
            +
                  "JSON-{\"filenameGlob\":\"setta_files/setta-settings*.json\",\"key\":[\"backend\",\"exportDbReadableOnSave\"]}": {
         | 
| 181 181 | 
             
                    "uiTypeId": "69cdf4c5-7555-4ef3-93d3-bda03f33c6d5"
         | 
| 182 182 | 
             
                  },
         | 
| 183 | 
            -
                  "JSON-{\"filenameGlob\":\"setta-settings*.json\",\"key\":[\"backend\",\"exportDbReadableWithVariantsOnSave\"]}": {
         | 
| 183 | 
            +
                  "JSON-{\"filenameGlob\":\"setta_files/setta-settings*.json\",\"key\":[\"backend\",\"exportDbReadableWithVariantsOnSave\"]}": {
         | 
| 184 184 | 
             
                    "uiTypeId": "69cdf4c5-7555-4ef3-93d3-bda03f33c6d5"
         | 
| 185 185 | 
             
                  },
         | 
| 186 | 
            -
                  "JSON-{\"filenameGlob\":\"setta-settings*.json\",\"key\":[\"backend\",\"saveRenderedValues\"]}": {
         | 
| 186 | 
            +
                  "JSON-{\"filenameGlob\":\"setta_files/setta-settings*.json\",\"key\":[\"backend\",\"saveRenderedValues\"]}": {
         | 
| 187 187 | 
             
                    "uiTypeId": "69cdf4c5-7555-4ef3-93d3-bda03f33c6d5"
         | 
| 188 188 | 
             
                  }
         | 
| 189 189 | 
             
                }
         | 
| @@ -202,7 +202,7 @@ | |
| 202 202 | 
             
                  "variantIds": ["19f203aa-cae6-4ccc-928c-dab0194ade77"],
         | 
| 203 203 | 
             
                  "configLanguage": "json",
         | 
| 204 204 | 
             
                  "hideSearch": true,
         | 
| 205 | 
            -
                  "jsonSource": "setta-settings*.json",
         | 
| 205 | 
            +
                  "jsonSource": "setta_files/setta-settings*.json",
         | 
| 206 206 | 
             
                  "jsonSourceKeys": ["shortcuts"]
         | 
| 207 207 | 
             
                },
         | 
| 208 208 | 
             
                "6b264a9a-0f87-4288-80aa-45cc6b16db96": {
         | 
| @@ -218,7 +218,7 @@ | |
| 218 218 | 
             
                  "variantIds": ["f3cb4189-2692-4e75-b58f-76d632f44205"],
         | 
| 219 219 | 
             
                  "configLanguage": "json",
         | 
| 220 220 | 
             
                  "hideSearch": true,
         | 
| 221 | 
            -
                  "jsonSource": "setta-settings*.json",
         | 
| 221 | 
            +
                  "jsonSource": "setta_files/setta-settings*.json",
         | 
| 222 222 | 
             
                  "jsonSourceKeys": ["gui"]
         | 
| 223 223 | 
             
                },
         | 
| 224 224 | 
             
                "f74b5aaf-d11d-4153-b55b-9c18e11e3a73": {
         | 
| @@ -234,7 +234,7 @@ | |
| 234 234 | 
             
                  "variantIds": ["36d29a06-7971-48d1-a1d2-23480f770d74"],
         | 
| 235 235 | 
             
                  "configLanguage": "json",
         | 
| 236 236 | 
             
                  "hideSearch": true,
         | 
| 237 | 
            -
                  "jsonSource": "setta-settings*.json",
         | 
| 237 | 
            +
                  "jsonSource": "setta_files/setta-settings*.json",
         | 
| 238 238 | 
             
                  "jsonSourceKeys": ["backend"]
         | 
| 239 239 | 
             
                },
         | 
| 240 240 | 
             
                "8389d4b3-0a1e-4c44-819b-7c745d6c3f1b": {
         | 
| @@ -250,7 +250,7 @@ | |
| 250 250 | 
             
                  "variantIds": ["4490975a-8d8d-4f02-8ed4-f48f8258f1ec"],
         | 
| 251 251 | 
             
                  "configLanguage": "json",
         | 
| 252 252 | 
             
                  "hideSearch": true,
         | 
| 253 | 
            -
                  "jsonSource": "setta-settings*.json",
         | 
| 253 | 
            +
                  "jsonSource": "setta_files/setta-settings*.json",
         | 
| 254 254 | 
             
                  "jsonSourceKeys": ["languageServer"]
         | 
| 255 255 | 
             
                },
         | 
| 256 256 | 
             
                "514c2046-25de-4b0a-b6f9-fca1dd14ad8e": {
         | 
| @@ -266,7 +266,7 @@ | |
| 266 266 | 
             
                  "variantIds": ["d2c7059a-8e28-488a-aa33-056476652d5e"],
         | 
| 267 267 | 
             
                  "configLanguage": "json",
         | 
| 268 268 | 
             
                  "hideSearch": true,
         | 
| 269 | 
            -
                  "jsonSource": "setta-settings*.json",
         | 
| 269 | 
            +
                  "jsonSource": "setta_files/setta-settings*.json",
         | 
| 270 270 | 
             
                  "jsonSourceKeys": ["sections"]
         | 
| 271 271 | 
             
                }
         | 
| 272 272 | 
             
              },
         |