heath1989 commited on
Commit
2a9d132
1 Parent(s): 7d6bf6e

Upload folder using huggingface_hub

Browse files
Files changed (44) hide show
  1. .github/workflows/update_space.yml +28 -0
  2. .gitignore +161 -0
  3. .idea/inspectionProfiles/Project_Default.xml +747 -0
  4. .idea/inspectionProfiles/profiles_settings.xml +6 -0
  5. .idea/misc.xml +4 -0
  6. .idea/shelf/Uncommitted_changes_before_Checkout_at_2023_8_28,_21_02_[Changes]/shelved.patch +40 -0
  7. .idea/shelf/Uncommitted_changes_before_Checkout_at_2023_8_28__21_02__Changes_.xml +4 -0
  8. .idea/vcs.xml +6 -0
  9. .idea/workspace.xml +465 -0
  10. LICENSE +24 -0
  11. README.md +69 -8
  12. install.py +4 -0
  13. model_guide.png +0 -0
  14. promptsModules/__pycache__/basePromptBuilder.cpython-310.pyc +0 -0
  15. promptsModules/__pycache__/basePromptBuilder.cpython-39.pyc +0 -0
  16. promptsModules/__pycache__/configDB.cpython-310.pyc +0 -0
  17. promptsModules/__pycache__/configDB.cpython-39.pyc +0 -0
  18. promptsModules/__pycache__/lora.cpython-310.pyc +0 -0
  19. promptsModules/__pycache__/lora.cpython-39.pyc +0 -0
  20. promptsModules/__pycache__/model_manager.cpython-310.pyc +0 -0
  21. promptsModules/__pycache__/model_manager.cpython-39.pyc +0 -0
  22. promptsModules/__pycache__/promptGen.cpython-310.pyc +0 -0
  23. promptsModules/__pycache__/promptGen.cpython-39.pyc +0 -0
  24. promptsModules/__pycache__/sd_command_gen.cpython-310.pyc +0 -0
  25. promptsModules/__pycache__/sd_command_gen.cpython-39.pyc +0 -0
  26. promptsModules/__pycache__/web_api.cpython-310.pyc +0 -0
  27. promptsModules/__pycache__/web_api.cpython-39.pyc +0 -0
  28. promptsModules/basePromptBuilder.py +1373 -0
  29. promptsModules/configDB.py +118 -0
  30. promptsModules/lora.py +136 -0
  31. promptsModules/model_manager.py +152 -0
  32. promptsModules/modelsConfig.xlsx +0 -0
  33. promptsModules/promptGen.py +282 -0
  34. promptsModules/sd_command_gen.py +188 -0
  35. promptsModules/web_api.py +12 -0
  36. requirements.txt +1 -0
  37. scripts/.DS_Store +0 -0
  38. scripts/.github/workflows/update_space.yml +28 -0
  39. scripts/README.md +6 -0
  40. scripts/__pycache__/prompt_rg.cpython-310.pyc +0 -0
  41. scripts/prompt_rg.py +367 -0
  42. scripts/requirements.txt +1 -0
  43. snap_Shot.png +0 -0
  44. ui_lora.png +0 -0
.github/workflows/update_space.yml ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: Run Python script
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+
8
+ jobs:
9
+ build:
10
+ runs-on: ubuntu-latest
11
+
12
+ steps:
13
+ - name: Checkout
14
+ uses: actions/checkout@v2
15
+
16
+ - name: Set up Python
17
+ uses: actions/setup-python@v2
18
+ with:
19
+ python-version: '3.9'
20
+
21
+ - name: Install Gradio
22
+ run: python -m pip install gradio
23
+
24
+ - name: Log in to Hugging Face
25
+ run: python -c 'import huggingface_hub; huggingface_hub.login(token="${{ secrets.hf_token }}")'
26
+
27
+ - name: Deploy to Spaces
28
+ run: gradio deploy
.gitignore ADDED
@@ -0,0 +1,161 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ share/python-wheels/
24
+ *.egg-info/
25
+ .installed.cfg
26
+ *.egg
27
+ MANIFEST
28
+
29
+ # PyInstaller
30
+ # Usually these files are written by a python script from a template
31
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
32
+ *.manifest
33
+ *.spec
34
+
35
+ # Installer logs
36
+ pip-log.txt
37
+ pip-delete-this-directory.txt
38
+
39
+ # Unit test / coverage reports
40
+ htmlcov/
41
+ .tox/
42
+ .nox/
43
+ .coverage
44
+ .coverage.*
45
+ .cache
46
+ nosetests.xml
47
+ coverage.xml
48
+ *.cover
49
+ *.py,cover
50
+ .hypothesis/
51
+ .pytest_cache/
52
+ cover/
53
+
54
+ # Translations
55
+ *.mo
56
+ *.pot
57
+
58
+ # Django stuff:
59
+ *.log
60
+ local_settings.py
61
+ db.sqlite3
62
+ db.sqlite3-journal
63
+
64
+ # Flask stuff:
65
+ instance/
66
+ .webassets-cache
67
+
68
+ # Scrapy stuff:
69
+ .scrapy
70
+
71
+ # Sphinx documentation
72
+ docs/_build/
73
+
74
+ # PyBuilder
75
+ .pybuilder/
76
+ target/
77
+
78
+ # Jupyter Notebook
79
+ .ipynb_checkpoints
80
+
81
+ # IPython
82
+ profile_default/
83
+ ipython_config.py
84
+
85
+ # pyenv
86
+ # For a library or package, you might want to ignore these files since the code is
87
+ # intended to run in multiple environments; otherwise, check them in:
88
+ # .python-version
89
+
90
+ # pipenv
91
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
92
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
93
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
94
+ # install all needed dependencies.
95
+ #Pipfile.lock
96
+
97
+ # poetry
98
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
99
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
100
+ # commonly ignored for libraries.
101
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
102
+ #poetry.lock
103
+
104
+ # pdm
105
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
106
+ #pdm.lock
107
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
108
+ # in version control.
109
+ # https://pdm.fming.dev/#use-with-ide
110
+ .pdm.toml
111
+
112
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
113
+ __pypackages__/
114
+
115
+ # Celery stuff
116
+ celerybeat-schedule
117
+ celerybeat.pid
118
+
119
+ # SageMath parsed files
120
+ *.sage.py
121
+
122
+ # Environments
123
+ .env
124
+ .venv
125
+ env/
126
+ venv/
127
+ ENV/
128
+ env.bak/
129
+ venv.bak/
130
+
131
+ # Spyder project settings
132
+ .spyderproject
133
+ .spyproject
134
+
135
+ # Rope project settings
136
+ .ropeproject
137
+
138
+ # mkdocs documentation
139
+ /site
140
+
141
+ # mypy
142
+ .mypy_cache/
143
+ .dmypy.json
144
+ dmypy.json
145
+
146
+ # Pyre type checker
147
+ .pyre/
148
+
149
+ # pytype static type analyzer
150
+ .pytype/
151
+
152
+ # Cython debug symbols
153
+ cython_debug/
154
+
155
+ # PyCharm
156
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
157
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
158
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
159
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
160
+ .idea/
161
+ promptsModules/prompts.txt
.idea/inspectionProfiles/Project_Default.xml ADDED
@@ -0,0 +1,747 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <component name="InspectionProjectProfileManager">
2
+ <profile version="1.0" is_locked="true">
3
+ <option name="myName" value="Project Default" />
4
+ <inspection_tool class="AlphaUnsortedPropertiesFile" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
5
+ <inspection_tool class="AngularAmbiguousComponentTag" enabled="false" level="ERROR" enabled_by_default="false" />
6
+ <inspection_tool class="AngularCliAddDependency" enabled="false" level="WARNING" enabled_by_default="false" />
7
+ <inspection_tool class="AngularInaccessibleComponentMemberInAotMode" enabled="false" level="WARNING" enabled_by_default="false" />
8
+ <inspection_tool class="AngularIncorrectTemplateDefinition" enabled="false" level="ERROR" enabled_by_default="false" />
9
+ <inspection_tool class="AngularInsecureBindingToEvent" enabled="false" level="WARNING" enabled_by_default="false" />
10
+ <inspection_tool class="AngularInvalidAnimationTriggerAssignment" enabled="false" level="ERROR" enabled_by_default="false" />
11
+ <inspection_tool class="AngularInvalidEntryComponent" enabled="false" level="ERROR" enabled_by_default="false" />
12
+ <inspection_tool class="AngularInvalidI18nAttribute" enabled="false" level="WARNING" enabled_by_default="false" />
13
+ <inspection_tool class="AngularInvalidImportedOrDeclaredSymbol" enabled="false" level="ERROR" enabled_by_default="false" />
14
+ <inspection_tool class="AngularInvalidSelector" enabled="false" level="ERROR" enabled_by_default="false" />
15
+ <inspection_tool class="AngularInvalidTemplateReferenceVariable" enabled="false" level="ERROR" enabled_by_default="false" />
16
+ <inspection_tool class="AngularMissingEventHandler" enabled="false" level="ERROR" enabled_by_default="false" />
17
+ <inspection_tool class="AngularMissingOrInvalidDeclarationInModule" enabled="false" level="ERROR" enabled_by_default="false" />
18
+ <inspection_tool class="AngularMissingRequiredDirectiveInputBinding" enabled="false" level="ERROR" enabled_by_default="false" />
19
+ <inspection_tool class="AngularMultipleStructuralDirectives" enabled="false" level="ERROR" enabled_by_default="false" />
20
+ <inspection_tool class="AngularNgOptimizedImage" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
21
+ <inspection_tool class="AngularNonEmptyNgContent" enabled="false" level="ERROR" enabled_by_default="false" />
22
+ <inspection_tool class="AngularRecursiveModuleImportExport" enabled="false" level="ERROR" enabled_by_default="false" />
23
+ <inspection_tool class="AngularUndefinedBinding" enabled="false" level="ERROR" enabled_by_default="false" />
24
+ <inspection_tool class="AngularUndefinedModuleExport" enabled="false" level="ERROR" enabled_by_default="false" />
25
+ <inspection_tool class="AngularUndefinedTag" enabled="false" level="ERROR" enabled_by_default="false" />
26
+ <inspection_tool class="Annotator" enabled="false" level="ERROR" enabled_by_default="false" />
27
+ <inspection_tool class="AnonymousFunctionJS" enabled="false" level="WARNING" enabled_by_default="false" />
28
+ <inspection_tool class="AppEngineThreadsafeCGIHandlerInspection" enabled="false" level="WARNING" enabled_by_default="false" />
29
+ <inspection_tool class="AppEngineThreadsafeInspection" enabled="false" level="WARNING" enabled_by_default="false" />
30
+ <inspection_tool class="AssignmentResultUsedJS" enabled="false" level="WARNING" enabled_by_default="false" />
31
+ <inspection_tool class="AssignmentToForLoopParameterJS" enabled="false" level="WARNING" enabled_by_default="false" />
32
+ <inspection_tool class="AssignmentToFunctionParameterJS" enabled="false" level="WARNING" enabled_by_default="false" />
33
+ <inspection_tool class="BadExpressionStatementJS" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
34
+ <inspection_tool class="BlockStatementJS" enabled="false" level="WARNING" enabled_by_default="false" />
35
+ <inspection_tool class="BreakStatementJS" enabled="false" level="WARNING" enabled_by_default="false" />
36
+ <inspection_tool class="BreakStatementWithLabelJS" enabled="false" level="WARNING" enabled_by_default="false" />
37
+ <inspection_tool class="CallerJS" enabled="false" level="WARNING" enabled_by_default="false" />
38
+ <inspection_tool class="ChainedEqualityJS" enabled="false" level="WARNING" enabled_by_default="false" />
39
+ <inspection_tool class="ChainedFunctionCallJS" enabled="false" level="WARNING" enabled_by_default="false" />
40
+ <inspection_tool class="CheckDtdRefs" enabled="false" level="ERROR" enabled_by_default="false" />
41
+ <inspection_tool class="CheckEmptyScriptTag" enabled="false" level="WARNING" enabled_by_default="false" />
42
+ <inspection_tool class="CheckImageSize" enabled="false" level="WARNING" enabled_by_default="false" />
43
+ <inspection_tool class="CheckTagEmptyBody" enabled="false" level="WARNING" enabled_by_default="false" />
44
+ <inspection_tool class="CheckValidXmlInScriptTagBody" enabled="false" level="ERROR" enabled_by_default="false" />
45
+ <inspection_tool class="CheckXmlFileWithXercesValidator" enabled="false" level="ERROR" enabled_by_default="false" />
46
+ <inspection_tool class="CoffeeScriptFunctionSignatures" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
47
+ <inspection_tool class="CoffeeScriptInfiniteLoop" enabled="false" level="WARNING" enabled_by_default="false" />
48
+ <inspection_tool class="CoffeeScriptLiteralNotFunction" enabled="false" level="ERROR" enabled_by_default="false" />
49
+ <inspection_tool class="CoffeeScriptModulesDependencies" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
50
+ <inspection_tool class="CoffeeScriptSillyAssignment" enabled="false" level="WARNING" enabled_by_default="false" />
51
+ <inspection_tool class="CoffeeScriptSwitchStatementWithNoDefaultBranch" enabled="false" level="WARNING" enabled_by_default="false" />
52
+ <inspection_tool class="CoffeeScriptUnusedLocalSymbols" enabled="false" level="WARNING" enabled_by_default="false" />
53
+ <inspection_tool class="CommaExpressionJS" enabled="false" level="WARNING" enabled_by_default="false" />
54
+ <inspection_tool class="CommandLineInspection" enabled="true" level="WARNING" enabled_by_default="true" />
55
+ <inspection_tool class="ComposeMissingKeys" enabled="false" level="ERROR" enabled_by_default="false" />
56
+ <inspection_tool class="ComposeUnknownKeys" enabled="false" level="ERROR" enabled_by_default="false" />
57
+ <inspection_tool class="ComposeUnknownValues" enabled="false" level="ERROR" enabled_by_default="false" />
58
+ <inspection_tool class="ComposeUnquotedPorts" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
59
+ <inspection_tool class="ConditionalExpressionJS" enabled="false" level="WARNING" enabled_by_default="false" />
60
+ <inspection_tool class="ConditionalExpressionWithIdenticalBranchesJS" enabled="false" level="WARNING" enabled_by_default="false" />
61
+ <inspection_tool class="ConfusingFloatingPointLiteralJS" enabled="false" level="WARNING" enabled_by_default="false" />
62
+ <inspection_tool class="ConfusingPlusesOrMinusesJS" enabled="false" level="WARNING" enabled_by_default="false" />
63
+ <inspection_tool class="ConstantConditionalExpressionJS" enabled="false" level="WARNING" enabled_by_default="false" />
64
+ <inspection_tool class="ConstantOnLHSOfComparisonJS" enabled="false" level="WARNING" enabled_by_default="false" />
65
+ <inspection_tool class="ConstantOnRHSOfComparisonJS" enabled="false" level="WARNING" enabled_by_default="false" />
66
+ <inspection_tool class="ContinueOrBreakFromFinallyBlockJS" enabled="false" level="WARNING" enabled_by_default="false" />
67
+ <inspection_tool class="ContinueStatementJS" enabled="false" level="WARNING" enabled_by_default="false" />
68
+ <inspection_tool class="ContinueStatementWithLabelJS" enabled="false" level="WARNING" enabled_by_default="false" />
69
+ <inspection_tool class="CssBrowserCompatibilityForProperties" enabled="false" level="WARNING" enabled_by_default="false" />
70
+ <inspection_tool class="CssConvertColorToHexInspection" enabled="false" level="WARNING" enabled_by_default="false" />
71
+ <inspection_tool class="CssConvertColorToRgbInspection" enabled="false" level="WARNING" enabled_by_default="false" />
72
+ <inspection_tool class="CssInvalidAtRule" enabled="false" level="ERROR" enabled_by_default="false" />
73
+ <inspection_tool class="CssInvalidCharsetRule" enabled="false" level="WARNING" enabled_by_default="false" />
74
+ <inspection_tool class="CssInvalidFunction" enabled="false" level="ERROR" enabled_by_default="false" />
75
+ <inspection_tool class="CssInvalidHtmlTagReference" enabled="false" level="WARNING" enabled_by_default="false" />
76
+ <inspection_tool class="CssInvalidImport" enabled="false" level="WARNING" enabled_by_default="false" />
77
+ <inspection_tool class="CssInvalidMediaFeature" enabled="false" level="ERROR" enabled_by_default="false" />
78
+ <inspection_tool class="CssInvalidNestedSelector" enabled="false" level="WARNING" enabled_by_default="false" />
79
+ <inspection_tool class="CssInvalidPropertyValue" enabled="false" level="ERROR" enabled_by_default="false" />
80
+ <inspection_tool class="CssInvalidPseudoSelector" enabled="false" level="ERROR" enabled_by_default="false" />
81
+ <inspection_tool class="CssMissingComma" enabled="false" level="WARNING" enabled_by_default="false" />
82
+ <inspection_tool class="CssMissingSemicolon" enabled="false" level="WARNING" enabled_by_default="false" />
83
+ <inspection_tool class="CssNegativeValue" enabled="false" level="ERROR" enabled_by_default="false" />
84
+ <inspection_tool class="CssNoGenericFontName" enabled="false" level="WARNING" enabled_by_default="false" />
85
+ <inspection_tool class="CssNonIntegerLengthInPixels" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
86
+ <inspection_tool class="CssOverwrittenProperties" enabled="false" level="WARNING" enabled_by_default="false" />
87
+ <inspection_tool class="CssRedundantUnit" enabled="false" level="WARNING" enabled_by_default="false" />
88
+ <inspection_tool class="CssReplaceWithShorthandSafely" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
89
+ <inspection_tool class="CssReplaceWithShorthandUnsafely" enabled="false" level="INFORMATION" enabled_by_default="false" />
90
+ <inspection_tool class="CssUnknownProperty" enabled="false" level="WARNING" enabled_by_default="false">
91
+ <option name="myCustomPropertiesEnabled" value="false" />
92
+ <option name="myIgnoreVendorSpecificProperties" value="false" />
93
+ <option name="myCustomPropertiesList">
94
+ <value>
95
+ <list size="0" />
96
+ </value>
97
+ </option>
98
+ </inspection_tool>
99
+ <inspection_tool class="CssUnknownTarget" enabled="false" level="ERROR" enabled_by_default="false" />
100
+ <inspection_tool class="CssUnresolvedClassInComposesRule" enabled="false" level="ERROR" enabled_by_default="false" />
101
+ <inspection_tool class="CssUnresolvedCustomProperty" enabled="false" level="ERROR" enabled_by_default="false" />
102
+ <inspection_tool class="CssUnusedSymbol" enabled="false" level="WARNING" enabled_by_default="false" />
103
+ <inspection_tool class="CucumberExamplesColon" enabled="false" level="ERROR" enabled_by_default="false" />
104
+ <inspection_tool class="CucumberMissedExamples" enabled="false" level="ERROR" enabled_by_default="false" />
105
+ <inspection_tool class="CucumberTableInspection" enabled="false" level="WARNING" enabled_by_default="false" />
106
+ <inspection_tool class="CucumberUndefinedStep" enabled="false" level="WARNING" enabled_by_default="false" />
107
+ <inspection_tool class="CustomRegExpInspection" enabled="false" level="WARNING" enabled_by_default="false" />
108
+ <inspection_tool class="CyclomaticComplexityJS" enabled="false" level="WARNING" enabled_by_default="false">
109
+ <option name="m_limit" value="10" />
110
+ </inspection_tool>
111
+ <inspection_tool class="CythonUsageBeforeDeclarationInspection" enabled="true" level="WARNING" enabled_by_default="true" />
112
+ <inspection_tool class="DebuggerStatementJS" enabled="false" level="WARNING" enabled_by_default="false" />
113
+ <inspection_tool class="DefaultNotLastCaseInSwitchJS" enabled="false" level="WARNING" enabled_by_default="false" />
114
+ <inspection_tool class="DivideByZeroJS" enabled="false" level="WARNING" enabled_by_default="false" />
115
+ <inspection_tool class="DjangoBrokenLineCommentInspection" enabled="false" level="WARNING" enabled_by_default="false" />
116
+ <inspection_tool class="DjangoCloseTagInspection" enabled="false" level="WARNING" enabled_by_default="false" />
117
+ <inspection_tool class="DjangoIncompatibleInspection" enabled="false" level="WARNING" enabled_by_default="false" />
118
+ <inspection_tool class="DjangoOrmInspection" enabled="false" level="WARNING" enabled_by_default="false" />
119
+ <inspection_tool class="DjangoRelationInspection" enabled="false" level="WARNING" enabled_by_default="false" />
120
+ <inspection_tool class="DjangoUnresolvedFilterInspection" enabled="false" level="WARNING" enabled_by_default="false" />
121
+ <inspection_tool class="DjangoUnresolvedLoadInspection" enabled="false" level="WARNING" enabled_by_default="false" />
122
+ <inspection_tool class="DjangoUnresolvedStaticReferenceInspection" enabled="false" level="WARNING" enabled_by_default="false" />
123
+ <inspection_tool class="DjangoUnresolvedTagInspection" enabled="false" level="WARNING" enabled_by_default="false" />
124
+ <inspection_tool class="DjangoUnresolvedTemplateReferenceInspection" enabled="false" level="WARNING" enabled_by_default="false" />
125
+ <inspection_tool class="DjangoUnresolvedUrlInspection" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
126
+ <inspection_tool class="DjangoUrlArgumentsInspection" enabled="false" level="WARNING" enabled_by_default="false" />
127
+ <inspection_tool class="DockerFileAddOrCopyPaths" enabled="false" level="WARNING" enabled_by_default="false" />
128
+ <inspection_tool class="DockerFileArgumentCount" enabled="false" level="ERROR" enabled_by_default="false" />
129
+ <inspection_tool class="DockerFileAssignments" enabled="false" level="ERROR" enabled_by_default="false" />
130
+ <inspection_tool class="DockerFileRunCommandMissingContinuation" enabled="false" level="ERROR" enabled_by_default="false" />
131
+ <inspection_tool class="DockerJsonFormStringLiterals" enabled="false" level="WARNING" enabled_by_default="false" />
132
+ <inspection_tool class="DocumentWriteJS" enabled="false" level="WARNING" enabled_by_default="false" />
133
+ <inspection_tool class="DuplicateConditionJS" enabled="false" level="WARNING" enabled_by_default="false" />
134
+ <inspection_tool class="DuplicateKeyInSection" enabled="false" level="WARNING" enabled_by_default="false" />
135
+ <inspection_tool class="DuplicatePropertyInspection" enabled="false" level="WARNING" enabled_by_default="false" />
136
+ <inspection_tool class="DuplicateSectionInFile" enabled="false" level="WARNING" enabled_by_default="false" />
137
+ <inspection_tool class="DuplicatedBlockNamesInspection" enabled="false" level="WARNING" enabled_by_default="false" />
138
+ <inspection_tool class="DuplicatedCode" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
139
+ <inspection_tool class="DynamicallyGeneratedCodeJS" enabled="false" level="WARNING" enabled_by_default="false" />
140
+ <inspection_tool class="ES6BindWithArrowFunction" enabled="false" level="WARNING" enabled_by_default="false" />
141
+ <inspection_tool class="ES6ClassMemberInitializationOrder" enabled="false" level="WARNING" enabled_by_default="false" />
142
+ <inspection_tool class="ES6ConvertIndexedForToForOf" enabled="false" level="INFORMATION" enabled_by_default="false" />
143
+ <inspection_tool class="ES6ConvertLetToConst" enabled="false" level="INFORMATION" enabled_by_default="false" />
144
+ <inspection_tool class="ES6ConvertModuleExportToExport" enabled="false" level="INFORMATION" enabled_by_default="false" />
145
+ <inspection_tool class="ES6ConvertRequireIntoImport" enabled="false" level="INFORMATION" enabled_by_default="false" />
146
+ <inspection_tool class="ES6ConvertToForOf" enabled="false" level="INFORMATION" enabled_by_default="false" />
147
+ <inspection_tool class="ES6ConvertVarToLetConst" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
148
+ <inspection_tool class="ES6DestructuringVariablesMerge" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
149
+ <inspection_tool class="ES6MissingAwait" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
150
+ <inspection_tool class="ES6PossiblyAsyncFunction" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
151
+ <inspection_tool class="ES6PreferShortImport" enabled="false" level="WARNING" enabled_by_default="false" />
152
+ <inspection_tool class="ES6RedundantAwait" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
153
+ <inspection_tool class="ES6RedundantNestingInTemplateLiteral" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
154
+ <inspection_tool class="ES6ShorthandObjectProperty" enabled="false" level="INFORMATION" enabled_by_default="false" />
155
+ <inspection_tool class="ES6TopLevelAwaitExpression" enabled="false" level="ERROR" enabled_by_default="false" />
156
+ <inspection_tool class="ES6UnusedImports" enabled="false" level="WARNING" enabled_by_default="false" />
157
+ <inspection_tool class="EditorConfigCharClassLetterRedundancy" enabled="false" level="WARNING" enabled_by_default="false" />
158
+ <inspection_tool class="EditorConfigCharClassRedundancy" enabled="false" level="WARNING" enabled_by_default="false" />
159
+ <inspection_tool class="EditorConfigDeprecatedDescriptor" enabled="false" level="WARNING" enabled_by_default="false" />
160
+ <inspection_tool class="EditorConfigEmptyHeader" enabled="false" level="ERROR" enabled_by_default="false" />
161
+ <inspection_tool class="EditorConfigEmptySection" enabled="false" level="WARNING" enabled_by_default="false" />
162
+ <inspection_tool class="EditorConfigEncoding" enabled="false" level="WARNING" enabled_by_default="false" />
163
+ <inspection_tool class="EditorConfigHeaderUniqueness" enabled="false" level="WARNING" enabled_by_default="false" />
164
+ <inspection_tool class="EditorConfigKeyCorrectness" enabled="false" level="WARNING" enabled_by_default="false" />
165
+ <inspection_tool class="EditorConfigListAcceptability" enabled="false" level="ERROR" enabled_by_default="false" />
166
+ <inspection_tool class="EditorConfigMissingRequiredDeclaration" enabled="false" level="ERROR" enabled_by_default="false" />
167
+ <inspection_tool class="EditorConfigNoMatchingFiles" enabled="false" level="WARNING" enabled_by_default="false" />
168
+ <inspection_tool class="EditorConfigNumerousWildcards" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
169
+ <inspection_tool class="EditorConfigOptionRedundancy" enabled="false" level="WARNING" enabled_by_default="false" />
170
+ <inspection_tool class="EditorConfigPairAcceptability" enabled="false" level="ERROR" enabled_by_default="false" />
171
+ <inspection_tool class="EditorConfigPartialOverride" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
172
+ <inspection_tool class="EditorConfigPatternEnumerationRedundancy" enabled="false" level="ERROR" enabled_by_default="false" />
173
+ <inspection_tool class="EditorConfigPatternRedundancy" enabled="false" level="WARNING" enabled_by_default="false" />
174
+ <inspection_tool class="EditorConfigReferenceCorrectness" enabled="false" level="ERROR" enabled_by_default="false" />
175
+ <inspection_tool class="EditorConfigRootDeclarationCorrectness" enabled="false" level="ERROR" enabled_by_default="false" />
176
+ <inspection_tool class="EditorConfigRootDeclarationUniqueness" enabled="false" level="ERROR" enabled_by_default="false" />
177
+ <inspection_tool class="EditorConfigShadowedOption" enabled="false" level="WARNING" enabled_by_default="false" />
178
+ <inspection_tool class="EditorConfigShadowingOption" enabled="false" level="WARNING" enabled_by_default="false" />
179
+ <inspection_tool class="EditorConfigSpaceInHeader" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
180
+ <inspection_tool class="EditorConfigUnexpectedComma" enabled="false" level="ERROR" enabled_by_default="false" />
181
+ <inspection_tool class="EditorConfigUnusedDeclaration" enabled="false" level="WARNING" enabled_by_default="false" />
182
+ <inspection_tool class="EditorConfigValueCorrectness" enabled="false" level="ERROR" enabled_by_default="false" />
183
+ <inspection_tool class="EditorConfigValueUniqueness" enabled="false" level="ERROR" enabled_by_default="false" />
184
+ <inspection_tool class="EditorConfigVerifyByCore" enabled="false" level="ERROR" enabled_by_default="false" />
185
+ <inspection_tool class="EditorConfigWildcardRedundancy" enabled="false" level="WARNING" enabled_by_default="false" />
186
+ <inspection_tool class="EmptyCatchBlockJS" enabled="false" level="WARNING" enabled_by_default="false" />
187
+ <inspection_tool class="EmptyDirectory" enabled="false" level="WARNING" enabled_by_default="false" />
188
+ <inspection_tool class="EmptyFinallyBlockJS" enabled="false" level="WARNING" enabled_by_default="false" />
189
+ <inspection_tool class="EmptyStatementBodyJS" enabled="false" level="WARNING" enabled_by_default="false">
190
+ <option name="m_reportEmptyBlocks" value="false" />
191
+ </inspection_tool>
192
+ <inspection_tool class="EmptyTryBlockJS" enabled="false" level="WARNING" enabled_by_default="false" />
193
+ <inspection_tool class="EndBlockNamesInspection" enabled="false" level="WARNING" enabled_by_default="false" />
194
+ <inspection_tool class="Eslint" enabled="false" level="WARNING" enabled_by_default="false" />
195
+ <inspection_tool class="ExceptionCaughtLocallyJS" enabled="false" level="WARNING" enabled_by_default="false" />
196
+ <inspection_tool class="ExtendsTagPositionInspection" enabled="false" level="WARNING" enabled_by_default="false" />
197
+ <inspection_tool class="FallThroughInSwitchStatementJS" enabled="false" level="WARNING" enabled_by_default="false" />
198
+ <inspection_tool class="FlowJSConfig" enabled="false" level="WARNING" enabled_by_default="false" />
199
+ <inspection_tool class="FlowJSCoverage" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
200
+ <inspection_tool class="FlowJSError" enabled="false" level="ERROR" enabled_by_default="false" />
201
+ <inspection_tool class="FlowJSFlagCommentPlacement" enabled="false" level="WARNING" enabled_by_default="false" />
202
+ <inspection_tool class="ForLoopReplaceableByWhileJS" enabled="false" level="WARNING" enabled_by_default="false">
203
+ <option name="m_ignoreLoopsWithoutConditions" value="false" />
204
+ </inspection_tool>
205
+ <inspection_tool class="ForLoopThatDoesntUseLoopVariableJS" enabled="false" level="WARNING" enabled_by_default="false" />
206
+ <inspection_tool class="FunctionNamingConventionJS" enabled="false" level="WARNING" enabled_by_default="false">
207
+ <option name="m_regex" value="[a-z][A-Za-z]*" />
208
+ <option name="m_minLength" value="4" />
209
+ <option name="m_maxLength" value="32" />
210
+ </inspection_tool>
211
+ <inspection_tool class="FunctionWithInconsistentReturnsJS" enabled="false" level="WARNING" enabled_by_default="false" />
212
+ <inspection_tool class="FunctionWithMultipleLoopsJS" enabled="false" level="WARNING" enabled_by_default="false" />
213
+ <inspection_tool class="FunctionWithMultipleReturnPointsJS" enabled="false" level="WARNING" enabled_by_default="false" />
214
+ <inspection_tool class="GherkinBrokenTableInspection" enabled="false" level="ERROR" enabled_by_default="false" />
215
+ <inspection_tool class="GherkinMisplacedBackground" enabled="false" level="ERROR" enabled_by_default="false" />
216
+ <inspection_tool class="GherkinScenarioToScenarioOutline" enabled="false" level="ERROR" enabled_by_default="false" />
217
+ <inspection_tool class="GrazieInspection" enabled="false" level="GRAMMAR_ERROR" enabled_by_default="false" />
218
+ <inspection_tool class="HtmlDeprecatedAttribute" enabled="false" level="WARNING" enabled_by_default="false" />
219
+ <inspection_tool class="HtmlDeprecatedTag" enabled="false" level="WARNING" enabled_by_default="false" />
220
+ <inspection_tool class="HtmlExtraClosingTag" enabled="false" level="WARNING" enabled_by_default="false" />
221
+ <inspection_tool class="HtmlFormInputWithoutLabel" enabled="false" level="WARNING" enabled_by_default="false" />
222
+ <inspection_tool class="HtmlMissingClosingTag" enabled="false" level="INFORMATION" enabled_by_default="false" />
223
+ <inspection_tool class="HtmlNonExistentInternetResource" enabled="false" level="WARNING" enabled_by_default="false" />
224
+ <inspection_tool class="HtmlPresentationalElement" enabled="false" level="INFORMATION" enabled_by_default="false" />
225
+ <inspection_tool class="HtmlRequiredAltAttribute" enabled="false" level="WARNING" enabled_by_default="false" />
226
+ <inspection_tool class="HtmlRequiredLangAttribute" enabled="false" level="WARNING" enabled_by_default="false" />
227
+ <inspection_tool class="HtmlRequiredSummaryAttribute" enabled="false" level="INFORMATION" enabled_by_default="false" />
228
+ <inspection_tool class="HtmlRequiredTitleAttribute" enabled="false" level="INFORMATION" enabled_by_default="false" />
229
+ <inspection_tool class="HtmlRequiredTitleElement" enabled="false" level="WARNING" enabled_by_default="false" />
230
+ <inspection_tool class="HtmlUnknownAnchorTarget" enabled="false" level="WARNING" enabled_by_default="false" />
231
+ <inspection_tool class="HtmlUnknownAttribute" enabled="false" level="WARNING" enabled_by_default="false">
232
+ <option name="myValues">
233
+ <value>
234
+ <list size="0" />
235
+ </value>
236
+ </option>
237
+ <option name="myCustomValuesEnabled" value="true" />
238
+ </inspection_tool>
239
+ <inspection_tool class="HtmlUnknownBooleanAttribute" enabled="false" level="WARNING" enabled_by_default="false" />
240
+ <inspection_tool class="HtmlUnknownTag" enabled="false" level="WARNING" enabled_by_default="false">
241
+ <option name="myValues">
242
+ <value>
243
+ <list size="6">
244
+ <item index="0" class="java.lang.String" itemvalue="nobr" />
245
+ <item index="1" class="java.lang.String" itemvalue="noembed" />
246
+ <item index="2" class="java.lang.String" itemvalue="comment" />
247
+ <item index="3" class="java.lang.String" itemvalue="noscript" />
248
+ <item index="4" class="java.lang.String" itemvalue="embed" />
249
+ <item index="5" class="java.lang.String" itemvalue="script" />
250
+ </list>
251
+ </value>
252
+ </option>
253
+ <option name="myCustomValuesEnabled" value="true" />
254
+ </inspection_tool>
255
+ <inspection_tool class="HtmlUnknownTarget" enabled="false" level="WARNING" enabled_by_default="false" />
256
+ <inspection_tool class="HtmlWrongAttributeValue" enabled="false" level="WARNING" enabled_by_default="false" />
257
+ <inspection_tool class="HttpClientUnresolvedVariable" enabled="false" level="WARNING" enabled_by_default="false" />
258
+ <inspection_tool class="HttpRequestContentLengthIsIgnored" enabled="false" level="WARNING" enabled_by_default="false" />
259
+ <inspection_tool class="HttpRequestPlaceholder" enabled="false" level="WARNING" enabled_by_default="false" />
260
+ <inspection_tool class="HttpRequestWhitespaceInsideRequestTargetPath" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
261
+ <inspection_tool class="HttpUrlsUsage" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
262
+ <inspection_tool class="IfStatementWithIdenticalBranchesJS" enabled="false" level="WARNING" enabled_by_default="false" />
263
+ <inspection_tool class="IfStatementWithTooManyBranchesJS" enabled="false" level="WARNING" enabled_by_default="false">
264
+ <option name="m_limit" value="3" />
265
+ </inspection_tool>
266
+ <inspection_tool class="IgnoreFileDuplicateEntry" enabled="false" level="WARNING" enabled_by_default="false" />
267
+ <inspection_tool class="IncompatibleMaskJS" enabled="false" level="WARNING" enabled_by_default="false" />
268
+ <inspection_tool class="InconsistentLineSeparators" enabled="false" level="WARNING" enabled_by_default="false" />
269
+ <inspection_tool class="IncorrectFormatting" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
270
+ <inspection_tool class="IncorrectHttpHeaderInspection" enabled="false" level="WARNING" enabled_by_default="false" />
271
+ <inspection_tool class="IncrementDecrementResultUsedJS" enabled="false" level="WARNING" enabled_by_default="false" />
272
+ <inspection_tool class="InfiniteLoopJS" enabled="false" level="WARNING" enabled_by_default="false" />
273
+ <inspection_tool class="InfiniteRecursionJS" enabled="false" level="WARNING" enabled_by_default="false" />
274
+ <inspection_tool class="InjectedReferences" enabled="false" level="ERROR" enabled_by_default="false" />
275
+ <inspection_tool class="InnerHTMLJS" enabled="false" level="WARNING" enabled_by_default="false" />
276
+ <inspection_tool class="JSAccessibilityCheck" enabled="false" level="WARNING" enabled_by_default="false" />
277
+ <inspection_tool class="JSAnnotator" enabled="false" level="ERROR" enabled_by_default="false" />
278
+ <inspection_tool class="JSArrowFunctionBracesCanBeRemoved" enabled="false" level="INFORMATION" enabled_by_default="false" />
279
+ <inspection_tool class="JSAssignmentUsedAsCondition" enabled="false" level="WARNING" enabled_by_default="false" />
280
+ <inspection_tool class="JSBitwiseOperatorUsage" enabled="false" level="WARNING" enabled_by_default="false" />
281
+ <inspection_tool class="JSCheckFunctionSignatures" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
282
+ <inspection_tool class="JSClassNamingConvention" enabled="false" level="WARNING" enabled_by_default="false" />
283
+ <inspection_tool class="JSClosureCompilerSyntax" enabled="false" level="WARNING" enabled_by_default="false" />
284
+ <inspection_tool class="JSCommentMatchesSignature" enabled="false" level="WARNING" enabled_by_default="false" />
285
+ <inspection_tool class="JSComparisonWithNaN" enabled="false" level="WARNING" enabled_by_default="false" />
286
+ <inspection_tool class="JSConsecutiveCommasInArrayLiteral" enabled="false" level="WARNING" enabled_by_default="false" />
287
+ <inspection_tool class="JSConstantReassignment" enabled="false" level="ERROR" enabled_by_default="false" />
288
+ <inspection_tool class="JSConstructorReturnsPrimitive" enabled="false" level="WARNING" enabled_by_default="false" />
289
+ <inspection_tool class="JSDeclarationsAtScopeStart" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
290
+ <inspection_tool class="JSDeprecatedSymbols" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
291
+ <inspection_tool class="JSDuplicateCaseLabel" enabled="false" level="WARNING" enabled_by_default="false" />
292
+ <inspection_tool class="JSDuplicatedDeclaration" enabled="false" level="WARNING" enabled_by_default="false" />
293
+ <inspection_tool class="JSEqualityComparisonWithCoercion" enabled="false" level="WARNING" enabled_by_default="false" />
294
+ <inspection_tool class="JSEqualityComparisonWithCoercion.TS" enabled="false" level="WARNING" enabled_by_default="false" />
295
+ <inspection_tool class="JSFileReferences" enabled="false" level="WARNING" enabled_by_default="false" />
296
+ <inspection_tool class="JSFunctionExpressionToArrowFunction" enabled="false" level="INFORMATION" enabled_by_default="false" />
297
+ <inspection_tool class="JSHint" enabled="false" level="ERROR" enabled_by_default="false" />
298
+ <inspection_tool class="JSIgnoredPromiseFromCall" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
299
+ <inspection_tool class="JSIncompatibleTypesComparison" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
300
+ <inspection_tool class="JSJQueryEfficiency" enabled="false" level="WARNING" enabled_by_default="false" />
301
+ <inspection_tool class="JSJoinVariableDeclarationAndAssignment" enabled="false" level="INFORMATION" enabled_by_default="false" />
302
+ <inspection_tool class="JSLastCommaInArrayLiteral" enabled="false" level="WARNING" enabled_by_default="false" />
303
+ <inspection_tool class="JSLastCommaInObjectLiteral" enabled="false" level="WARNING" enabled_by_default="false" />
304
+ <inspection_tool class="JSMethodCanBeStatic" enabled="false" level="INFORMATION" enabled_by_default="false" />
305
+ <inspection_tool class="JSMismatchedCollectionQueryUpdate" enabled="false" level="WARNING" enabled_by_default="false">
306
+ <option name="queries" value="trace,write,forEach,length,size" />
307
+ <option name="updates" value="pop,push,shift,splice,unshift,add,insert,remove,reverse,copyWithin,fill,sort" />
308
+ </inspection_tool>
309
+ <inspection_tool class="JSMissingSwitchBranches" enabled="false" level="INFORMATION" enabled_by_default="false" />
310
+ <inspection_tool class="JSMissingSwitchDefault" enabled="false" level="INFORMATION" enabled_by_default="false" />
311
+ <inspection_tool class="JSNonASCIINames" enabled="false" level="WARNING" enabled_by_default="false" />
312
+ <inspection_tool class="JSNonStrictModeUsed" enabled="false" level="WARNING" enabled_by_default="false" />
313
+ <inspection_tool class="JSObjectNullOrUndefined" enabled="false" level="WARNING" enabled_by_default="false" />
314
+ <inspection_tool class="JSOctalInteger" enabled="false" level="ERROR" enabled_by_default="false" />
315
+ <inspection_tool class="JSPotentiallyInvalidConstructorUsage" enabled="false" level="WARNING" enabled_by_default="false">
316
+ <option name="myConsiderUppercaseFunctionsToBeConstructors" value="true" />
317
+ </inspection_tool>
318
+ <inspection_tool class="JSPotentiallyInvalidTargetOfIndexedPropertyAccess" enabled="false" level="WARNING" enabled_by_default="false" />
319
+ <inspection_tool class="JSPotentiallyInvalidUsageOfClassThis" enabled="false" level="WARNING" enabled_by_default="false" />
320
+ <inspection_tool class="JSPotentiallyInvalidUsageOfThis" enabled="false" level="WARNING" enabled_by_default="false" />
321
+ <inspection_tool class="JSPrimitiveTypeWrapperUsage" enabled="false" level="WARNING" enabled_by_default="false" />
322
+ <inspection_tool class="JSRedundantSwitchStatement" enabled="false" level="INFORMATION" enabled_by_default="false" />
323
+ <inspection_tool class="JSReferencingMutableVariableFromClosure" enabled="false" level="WARNING" enabled_by_default="false" />
324
+ <inspection_tool class="JSRemoveUnnecessaryParentheses" enabled="false" level="INFORMATION" enabled_by_default="false" />
325
+ <inspection_tool class="JSStringConcatenationToES6Template" enabled="false" level="INFORMATION" enabled_by_default="false" />
326
+ <inspection_tool class="JSSuspiciousEqPlus" enabled="false" level="WARNING" enabled_by_default="false" />
327
+ <inspection_tool class="JSSuspiciousNameCombination" enabled="false" level="WARNING" enabled_by_default="false">
328
+ <group names="x,width,left,right" />
329
+ <group names="y,height,top,bottom" />
330
+ <exclude classes="Math" />
331
+ </inspection_tool>
332
+ <inspection_tool class="JSSwitchVariableDeclarationIssue" enabled="false" level="WARNING" enabled_by_default="false" />
333
+ <inspection_tool class="JSTestFailedLine" enabled="false" level="WARNING" enabled_by_default="false" />
334
+ <inspection_tool class="JSTypeOfValues" enabled="false" level="WARNING" enabled_by_default="false" />
335
+ <inspection_tool class="JSUndeclaredVariable" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
336
+ <inspection_tool class="JSUndefinedPropertyAssignment" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
337
+ <inspection_tool class="JSUnfilteredForInLoop" enabled="false" level="WARNING" enabled_by_default="false" />
338
+ <inspection_tool class="JSUnnecessarySemicolon" enabled="false" level="WARNING" enabled_by_default="false" />
339
+ <inspection_tool class="JSUnreachableSwitchBranches" enabled="false" level="WARNING" enabled_by_default="false" />
340
+ <inspection_tool class="JSUnresolvedExtXType" enabled="false" level="WARNING" enabled_by_default="false" />
341
+ <inspection_tool class="JSUnresolvedLibraryURL" enabled="false" level="WARNING" enabled_by_default="false" />
342
+ <inspection_tool class="JSUnresolvedReference" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
343
+ <inspection_tool class="JSUnusedAssignment" enabled="false" level="WARNING" enabled_by_default="false" />
344
+ <inspection_tool class="JSUnusedGlobalSymbols" enabled="false" level="WARNING" enabled_by_default="false" />
345
+ <inspection_tool class="JSUnusedLocalSymbols" enabled="false" level="WARNING" enabled_by_default="false" />
346
+ <inspection_tool class="JSUrlImportUsage" enabled="false" level="INFORMATION" enabled_by_default="false" />
347
+ <inspection_tool class="JSValidateJSDoc" enabled="false" level="WARNING" enabled_by_default="false" />
348
+ <inspection_tool class="JSValidateTypes" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
349
+ <inspection_tool class="JSVoidFunctionReturnValueUsed" enabled="false" level="WARNING" enabled_by_default="false" />
350
+ <inspection_tool class="JSXDomNesting" enabled="false" level="WARNING" enabled_by_default="false" />
351
+ <inspection_tool class="JSXNamespaceValidation" enabled="false" level="INFORMATION" enabled_by_default="false" />
352
+ <inspection_tool class="JSXSyntaxUsed" enabled="false" level="ERROR" enabled_by_default="false" />
353
+ <inspection_tool class="JSXUnresolvedComponent" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
354
+ <inspection_tool class="JsCoverageInspection" enabled="false" level="WARNING" enabled_by_default="false" />
355
+ <inspection_tool class="Json5StandardCompliance" enabled="false" level="ERROR" enabled_by_default="false" />
356
+ <inspection_tool class="JsonDuplicatePropertyKeys" enabled="false" level="WARNING" enabled_by_default="false" />
357
+ <inspection_tool class="JsonPathEvaluateUnknownKey" enabled="false" level="WARNING" enabled_by_default="false" />
358
+ <inspection_tool class="JsonPathUnknownFunction" enabled="false" level="WARNING" enabled_by_default="false" />
359
+ <inspection_tool class="JsonPathUnknownOperator" enabled="false" level="WARNING" enabled_by_default="false" />
360
+ <inspection_tool class="JsonSchemaCompliance" enabled="false" level="WARNING" enabled_by_default="false" />
361
+ <inspection_tool class="JsonSchemaDeprecation" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
362
+ <inspection_tool class="JsonSchemaRefReference" enabled="false" level="WARNING" enabled_by_default="false" />
363
+ <inspection_tool class="JsonStandardCompliance" enabled="false" level="ERROR" enabled_by_default="false" />
364
+ <inspection_tool class="JupyterPackageInspection" enabled="false" level="WARNING" enabled_by_default="false" />
365
+ <inspection_tool class="KarmaConfigFile" enabled="false" level="WARNING" enabled_by_default="false" />
366
+ <inspection_tool class="LabeledStatementJS" enabled="false" level="WARNING" enabled_by_default="false" />
367
+ <inspection_tool class="LanguageDetectionInspection" enabled="false" level="WARNING" enabled_by_default="false" />
368
+ <inspection_tool class="LessResolvedByNameOnly" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
369
+ <inspection_tool class="LessUnresolvedMixin" enabled="false" level="WARNING" enabled_by_default="false" />
370
+ <inspection_tool class="LessUnresolvedVariable" enabled="false" level="WARNING" enabled_by_default="false" />
371
+ <inspection_tool class="LocalVariableNamingConventionJS" enabled="false" level="WARNING" enabled_by_default="false">
372
+ <option name="m_regex" value="[a-z][A-Za-z]*" />
373
+ <option name="m_minLength" value="1" />
374
+ <option name="m_maxLength" value="32" />
375
+ </inspection_tool>
376
+ <inspection_tool class="LongLine" enabled="false" level="WARNING" enabled_by_default="false" />
377
+ <inspection_tool class="LoopStatementThatDoesntLoopJS" enabled="false" level="WARNING" enabled_by_default="false" />
378
+ <inspection_tool class="LossyEncoding" enabled="false" level="WARNING" enabled_by_default="false" />
379
+ <inspection_tool class="MagicNumberJS" enabled="false" level="WARNING" enabled_by_default="false" />
380
+ <inspection_tool class="MarkdownIncorrectTableFormatting" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
381
+ <inspection_tool class="MarkdownIncorrectlyNumberedListItem" enabled="false" level="WARNING" enabled_by_default="false" />
382
+ <inspection_tool class="MarkdownLinkDestinationWithSpaces" enabled="false" level="WARNING" enabled_by_default="false" />
383
+ <inspection_tool class="MarkdownNoTableBorders" enabled="false" level="ERROR" enabled_by_default="false" />
384
+ <inspection_tool class="MarkdownOutdatedTableOfContents" enabled="false" level="WARNING" enabled_by_default="false" />
385
+ <inspection_tool class="MarkdownUnresolvedFileReference" enabled="false" level="WARNING" enabled_by_default="false" />
386
+ <inspection_tool class="MarkdownUnresolvedHeaderReference" enabled="false" level="WARNING" enabled_by_default="false" />
387
+ <inspection_tool class="MarkdownUnresolvedLinkLabel" enabled="false" level="WARNING" enabled_by_default="false" />
388
+ <inspection_tool class="MongoJSDeprecationInspection" enabled="false" level="WARNING" enabled_by_default="false" />
389
+ <inspection_tool class="MongoJSExtDeprecationInspection" enabled="false" level="WARNING" enabled_by_default="false" />
390
+ <inspection_tool class="MongoJSExtResolveInspection" enabled="false" level="WARNING" enabled_by_default="false" />
391
+ <inspection_tool class="MongoJSExtSideEffectsInspection" enabled="false" level="WARNING" enabled_by_default="false" />
392
+ <inspection_tool class="MongoJSResolveInspection" enabled="false" level="WARNING" enabled_by_default="false" />
393
+ <inspection_tool class="MongoJSSideEffectsInspection" enabled="false" level="WARNING" enabled_by_default="false" />
394
+ <inspection_tool class="MsBuiltinInspection" enabled="false" level="WARNING" enabled_by_default="false" />
395
+ <inspection_tool class="MsOrderByInspection" enabled="false" level="ERROR" enabled_by_default="false" />
396
+ <inspection_tool class="MysqlLoadDataPathInspection" enabled="false" level="WARNING" enabled_by_default="false" />
397
+ <inspection_tool class="MysqlParsingInspection" enabled="false" level="WARNING" enabled_by_default="false" />
398
+ <inspection_tool class="MysqlSpaceAfterFunctionNameInspection" enabled="false" level="ERROR" enabled_by_default="false" />
399
+ <inspection_tool class="NegatedConditionalExpressionJS" enabled="false" level="WARNING" enabled_by_default="false" />
400
+ <inspection_tool class="NegatedIfStatementJS" enabled="false" level="WARNING" enabled_by_default="false" />
401
+ <inspection_tool class="NestedAssignmentJS" enabled="false" level="WARNING" enabled_by_default="false" />
402
+ <inspection_tool class="NestedConditionalExpressionJS" enabled="false" level="WARNING" enabled_by_default="false" />
403
+ <inspection_tool class="NestedFunctionCallJS" enabled="false" level="WARNING" enabled_by_default="false" />
404
+ <inspection_tool class="NestedFunctionJS" enabled="false" level="WARNING" enabled_by_default="false">
405
+ <option name="m_includeAnonymousFunctions" value="false" />
406
+ </inspection_tool>
407
+ <inspection_tool class="NestedSwitchStatementJS" enabled="false" level="WARNING" enabled_by_default="false" />
408
+ <inspection_tool class="NestingDepthJS" enabled="false" level="WARNING" enabled_by_default="false">
409
+ <option name="m_limit" value="5" />
410
+ </inspection_tool>
411
+ <inspection_tool class="NodeCoreCodingAssistance" enabled="false" level="WARNING" enabled_by_default="false" />
412
+ <inspection_tool class="NonAsciiCharacters" enabled="false" level="WARNING" enabled_by_default="false" />
413
+ <inspection_tool class="NonBlockStatementBodyJS" enabled="false" level="WARNING" enabled_by_default="false" />
414
+ <inspection_tool class="NpmUsedModulesInstalled" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
415
+ <inspection_tool class="ObjectAllocationIgnoredJS" enabled="false" level="WARNING" enabled_by_default="false" />
416
+ <inspection_tool class="OraMissingBodyInspection" enabled="false" level="WARNING" enabled_by_default="false" />
417
+ <inspection_tool class="OraOverloadInspection" enabled="false" level="WARNING" enabled_by_default="false" />
418
+ <inspection_tool class="OraUnmatchedForwardDeclarationInspection" enabled="false" level="ERROR" enabled_by_default="false" />
419
+ <inspection_tool class="OverlyComplexArithmeticExpressionJS" enabled="false" level="WARNING" enabled_by_default="false">
420
+ <option name="m_limit" value="6" />
421
+ </inspection_tool>
422
+ <inspection_tool class="OverlyComplexBooleanExpressionJS" enabled="false" level="WARNING" enabled_by_default="false">
423
+ <option name="m_limit" value="3" />
424
+ </inspection_tool>
425
+ <inspection_tool class="PackageJsonMismatchedDependency" enabled="false" level="WARNING" enabled_by_default="false" />
426
+ <inspection_tool class="ParameterNamingConventionJS" enabled="false" level="WARNING" enabled_by_default="false">
427
+ <option name="m_regex" value="[a-z][A-Za-z]*" />
428
+ <option name="m_minLength" value="1" />
429
+ <option name="m_maxLength" value="32" />
430
+ </inspection_tool>
431
+ <inspection_tool class="ParametersPerFunctionJS" enabled="false" level="WARNING" enabled_by_default="false">
432
+ <option name="m_limit" value="5" />
433
+ </inspection_tool>
434
+ <inspection_tool class="PgSelectFromProcedureInspection" enabled="false" level="WARNING" enabled_by_default="false" />
435
+ <inspection_tool class="PlatformDetectionJS" enabled="false" level="WARNING" enabled_by_default="false" />
436
+ <inspection_tool class="PoetryPackageVersionsInspection" enabled="true" level="WARNING" enabled_by_default="true" />
437
+ <inspection_tool class="PointlessArithmeticExpressionJS" enabled="false" level="WARNING" enabled_by_default="false" />
438
+ <inspection_tool class="PointlessBitwiseExpressionJS" enabled="false" level="WARNING" enabled_by_default="false">
439
+ <option name="m_ignoreExpressionsContainingConstants" value="false" />
440
+ </inspection_tool>
441
+ <inspection_tool class="PointlessBooleanExpressionJS" enabled="false" level="WARNING" enabled_by_default="false" />
442
+ <inspection_tool class="PostCssCustomMedia" enabled="false" level="ERROR" enabled_by_default="false" />
443
+ <inspection_tool class="PostCssCustomSelector" enabled="false" level="ERROR" enabled_by_default="false" />
444
+ <inspection_tool class="PostCssMediaRange" enabled="false" level="ERROR" enabled_by_default="false" />
445
+ <inspection_tool class="PostCssNesting" enabled="false" level="WARNING" enabled_by_default="false" />
446
+ <inspection_tool class="PostCssUnresolvedModuleValueReference" enabled="false" level="ERROR" enabled_by_default="false" />
447
+ <inspection_tool class="ProblematicWhitespace" enabled="false" level="WARNING" enabled_by_default="false" />
448
+ <inspection_tool class="Puppet3Deprecations" enabled="false" level="WARNING" enabled_by_default="false" />
449
+ <inspection_tool class="Puppet4Deprecations" enabled="false" level="WARNING" enabled_by_default="false" />
450
+ <inspection_tool class="PuppetMultipleHashSetParamsPerResourceInstance" enabled="false" level="ERROR" enabled_by_default="false" />
451
+ <inspection_tool class="PuppetUnresolved" enabled="false" level="WARNING" enabled_by_default="false" />
452
+ <inspection_tool class="PyAbstractClassInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
453
+ <inspection_tool class="PyArgumentEqualDefaultInspection" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
454
+ <inspection_tool class="PyArgumentListInspection" enabled="true" level="WARNING" enabled_by_default="true" />
455
+ <inspection_tool class="PyAssignmentToLoopOrWithParameterInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
456
+ <inspection_tool class="PyAsyncCallInspection" enabled="true" level="WARNING" enabled_by_default="true" />
457
+ <inspection_tool class="PyAttributeOutsideInitInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
458
+ <inspection_tool class="PyAugmentAssignmentInspection" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
459
+ <inspection_tool class="PyBDDParametersInspection" enabled="true" level="WARNING" enabled_by_default="true" />
460
+ <inspection_tool class="PyBehaveInspection" enabled="false" level="WARNING" enabled_by_default="false" />
461
+ <inspection_tool class="PyBroadExceptionInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
462
+ <inspection_tool class="PyByteLiteralInspection" enabled="true" level="WARNING" enabled_by_default="true" />
463
+ <inspection_tool class="PyCallingNonCallableInspection" enabled="true" level="WARNING" enabled_by_default="true" />
464
+ <inspection_tool class="PyChainedComparisonsInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
465
+ <inspection_tool class="PyClassHasNoInitInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
466
+ <inspection_tool class="PyClassVarInspection" enabled="true" level="WARNING" enabled_by_default="true" />
467
+ <inspection_tool class="PyClassicStyleClassInspection" enabled="false" level="WARNING" enabled_by_default="false" />
468
+ <inspection_tool class="PyComparisonWithNoneInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
469
+ <inspection_tool class="PyCompatibilityInspection" enabled="false" level="WARNING" enabled_by_default="false">
470
+ <option name="ourVersions">
471
+ <value>
472
+ <list size="2">
473
+ <item index="0" class="java.lang.String" itemvalue="2.7" />
474
+ <item index="1" class="java.lang.String" itemvalue="3.12" />
475
+ </list>
476
+ </value>
477
+ </option>
478
+ </inspection_tool>
479
+ <inspection_tool class="PyDataclassInspection" enabled="true" level="WARNING" enabled_by_default="true" />
480
+ <inspection_tool class="PyDecoratorInspection" enabled="true" level="WARNING" enabled_by_default="true" />
481
+ <inspection_tool class="PyDefaultArgumentInspection" enabled="true" level="WARNING" enabled_by_default="true" />
482
+ <inspection_tool class="PyDeprecationInspection" enabled="true" level="WARNING" enabled_by_default="true" />
483
+ <inspection_tool class="PyDictCreationInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
484
+ <inspection_tool class="PyDictDuplicateKeysInspection" enabled="true" level="WARNING" enabled_by_default="true" />
485
+ <inspection_tool class="PyDocstringTypesInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
486
+ <inspection_tool class="PyDunderSlotsInspection" enabled="true" level="WARNING" enabled_by_default="true" />
487
+ <inspection_tool class="PyExceptClausesOrderInspection" enabled="true" level="WARNING" enabled_by_default="true" />
488
+ <inspection_tool class="PyExceptionInheritInspection" enabled="true" level="WARNING" enabled_by_default="true" />
489
+ <inspection_tool class="PyFinalInspection" enabled="true" level="WARNING" enabled_by_default="true" />
490
+ <inspection_tool class="PyFromFutureImportInspection" enabled="true" level="WARNING" enabled_by_default="true" />
491
+ <inspection_tool class="PyGlobalUndefinedInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
492
+ <inspection_tool class="PyInconsistentIndentationInspection" enabled="true" level="WARNING" enabled_by_default="true" />
493
+ <inspection_tool class="PyIncorrectDocstringInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
494
+ <inspection_tool class="PyInitNewSignatureInspection" enabled="true" level="WARNING" enabled_by_default="true" />
495
+ <inspection_tool class="PyInterpreterInspection" enabled="true" level="WARNING" enabled_by_default="true" />
496
+ <inspection_tool class="PyListCreationInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
497
+ <inspection_tool class="PyMandatoryEncodingInspection" enabled="false" level="WARNING" enabled_by_default="false" />
498
+ <inspection_tool class="PyMethodFirstArgAssignmentInspection" enabled="true" level="WARNING" enabled_by_default="true" />
499
+ <inspection_tool class="PyMethodMayBeStaticInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
500
+ <inspection_tool class="PyMethodOverridingInspection" enabled="true" level="WARNING" enabled_by_default="true" />
501
+ <inspection_tool class="PyMethodParametersInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
502
+ <inspection_tool class="PyMissingConstructorInspection" enabled="true" level="WARNING" enabled_by_default="true" />
503
+ <inspection_tool class="PyMissingOrEmptyDocstringInspection" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
504
+ <inspection_tool class="PyMissingTypeHintsInspection" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
505
+ <inspection_tool class="PyNamedTupleInspection" enabled="true" level="WARNING" enabled_by_default="true" />
506
+ <inspection_tool class="PyNestedDecoratorsInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
507
+ <inspection_tool class="PyNonAsciiCharInspection" enabled="true" level="WARNING" enabled_by_default="true" />
508
+ <inspection_tool class="PyNoneFunctionAssignmentInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
509
+ <inspection_tool class="PyOldStyleClassesInspection" enabled="true" level="WARNING" enabled_by_default="true" />
510
+ <inspection_tool class="PyOverloadsInspection" enabled="true" level="WARNING" enabled_by_default="true" />
511
+ <inspection_tool class="PyPackageRequirementsInspection" enabled="true" level="WARNING" enabled_by_default="true">
512
+ <option name="ignoredPackages">
513
+ <value>
514
+ <list size="0" />
515
+ </value>
516
+ </option>
517
+ </inspection_tool>
518
+ <inspection_tool class="PyPandasSeriesToListInspection" enabled="false" level="WARNING" enabled_by_default="false" />
519
+ <inspection_tool class="PyPep8Inspection" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
520
+ <inspection_tool class="PyPep8NamingInspection" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
521
+ <inspection_tool class="PyPropertyAccessInspection" enabled="true" level="WARNING" enabled_by_default="true" />
522
+ <inspection_tool class="PyPropertyDefinitionInspection" enabled="true" level="WARNING" enabled_by_default="true" />
523
+ <inspection_tool class="PyProtectedMemberInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
524
+ <inspection_tool class="PyProtocolInspection" enabled="true" level="WARNING" enabled_by_default="true" />
525
+ <inspection_tool class="PyRedeclarationInspection" enabled="true" level="WARNING" enabled_by_default="true" />
526
+ <inspection_tool class="PyRedundantParenthesesInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
527
+ <inspection_tool class="PyRelativeImportInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
528
+ <inspection_tool class="PyReturnFromInitInspection" enabled="true" level="WARNING" enabled_by_default="true" />
529
+ <inspection_tool class="PySetFunctionToLiteralInspection" enabled="true" level="WARNING" enabled_by_default="true" />
530
+ <inspection_tool class="PyShadowingBuiltinsInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
531
+ <inspection_tool class="PyShadowingNamesInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
532
+ <inspection_tool class="PySimplifyBooleanCheckInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
533
+ <inspection_tool class="PySingleQuotedDocstringInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
534
+ <inspection_tool class="PyStatementEffectInspection" enabled="true" level="WARNING" enabled_by_default="true" />
535
+ <inspection_tool class="PyStringFormatInspection" enabled="true" level="WARNING" enabled_by_default="true" />
536
+ <inspection_tool class="PyStubPackagesAdvertiser" enabled="true" level="WARNING" enabled_by_default="true" />
537
+ <inspection_tool class="PyStubPackagesCompatibilityInspection" enabled="true" level="WARNING" enabled_by_default="true" />
538
+ <inspection_tool class="PySuperArgumentsInspection" enabled="true" level="WARNING" enabled_by_default="true" />
539
+ <inspection_tool class="PyTestParametrizedInspection" enabled="true" level="WARNING" enabled_by_default="true" />
540
+ <inspection_tool class="PyTrailingSemicolonInspection" enabled="true" level="WARNING" enabled_by_default="true" />
541
+ <inspection_tool class="PyTupleAssignmentBalanceInspection" enabled="true" level="WARNING" enabled_by_default="true" />
542
+ <inspection_tool class="PyTupleItemAssignmentInspection" enabled="true" level="WARNING" enabled_by_default="true" />
543
+ <inspection_tool class="PyTypeCheckerInspection" enabled="true" level="WARNING" enabled_by_default="true" />
544
+ <inspection_tool class="PyTypeHintsInspection" enabled="true" level="WARNING" enabled_by_default="true" />
545
+ <inspection_tool class="PyTypedDictInspection" enabled="true" level="WARNING" enabled_by_default="true" />
546
+ <inspection_tool class="PyUnboundLocalVariableInspection" enabled="true" level="WARNING" enabled_by_default="true" />
547
+ <inspection_tool class="PyUnnecessaryBackslashInspection" enabled="true" level="WARNING" enabled_by_default="true" />
548
+ <inspection_tool class="PyUnreachableCodeInspection" enabled="true" level="WARNING" enabled_by_default="true" />
549
+ <inspection_tool class="PyUnresolvedReferencesInspection" enabled="true" level="WARNING" enabled_by_default="true" />
550
+ <inspection_tool class="PyUnusedLocalInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
551
+ <inspection_tool class="PyprojectInspection" enabled="false" level="WARNING" enabled_by_default="false" />
552
+ <inspection_tool class="PyramidSetupInspection" enabled="false" level="WARNING" enabled_by_default="false" />
553
+ <inspection_tool class="QodanaSanity" enabled="false" level="ERROR" enabled_by_default="false" />
554
+ <inspection_tool class="QodanaServiceMessage" enabled="false" level="ERROR" enabled_by_default="false" />
555
+ <inspection_tool class="Query_bound_parameters" enabled="false" level="WARNING" enabled_by_default="false" />
556
+ <inspection_tool class="Query_index_required" enabled="false" level="WARNING" enabled_by_default="false" />
557
+ <inspection_tool class="Query_restricted" enabled="false" level="WARNING" enabled_by_default="false" />
558
+ <inspection_tool class="ReassignedToPlainText" enabled="false" level="WARNING" enabled_by_default="false" />
559
+ <inspection_tool class="RedundantSuppression" enabled="false" level="WARNING" enabled_by_default="false" />
560
+ <inspection_tool class="RegExpAnonymousGroup" enabled="false" level="WARNING" enabled_by_default="false" />
561
+ <inspection_tool class="RegExpDuplicateAlternationBranch" enabled="false" level="WARNING" enabled_by_default="false" />
562
+ <inspection_tool class="RegExpDuplicateCharacterInClass" enabled="false" level="WARNING" enabled_by_default="false" />
563
+ <inspection_tool class="RegExpEmptyAlternationBranch" enabled="false" level="WARNING" enabled_by_default="false" />
564
+ <inspection_tool class="RegExpEscapedMetaCharacter" enabled="false" level="INFORMATION" enabled_by_default="false" />
565
+ <inspection_tool class="RegExpOctalEscape" enabled="false" level="INFORMATION" enabled_by_default="false" />
566
+ <inspection_tool class="RegExpRedundantClassElement" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
567
+ <inspection_tool class="RegExpRedundantEscape" enabled="false" level="WARNING" enabled_by_default="false" />
568
+ <inspection_tool class="RegExpRedundantNestedCharacterClass" enabled="false" level="WARNING" enabled_by_default="false" />
569
+ <inspection_tool class="RegExpRepeatedSpace" enabled="false" level="WARNING" enabled_by_default="false" />
570
+ <inspection_tool class="RegExpSimplifiable" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
571
+ <inspection_tool class="RegExpSingleCharAlternation" enabled="false" level="WARNING" enabled_by_default="false" />
572
+ <inspection_tool class="RegExpSuspiciousBackref" enabled="false" level="WARNING" enabled_by_default="false" />
573
+ <inspection_tool class="RegExpUnexpectedAnchor" enabled="false" level="WARNING" enabled_by_default="false" />
574
+ <inspection_tool class="RegExpUnnecessaryNonCapturingGroup" enabled="false" level="WARNING" enabled_by_default="false" />
575
+ <inspection_tool class="ReplaceAssignmentWithOperatorAssignmentJS" enabled="false" level="WARNING" enabled_by_default="false" />
576
+ <inspection_tool class="RequiredAttributes" enabled="false" level="WARNING" enabled_by_default="false">
577
+ <option name="myAdditionalRequiredHtmlAttributes" value="" />
578
+ </inspection_tool>
579
+ <inspection_tool class="ReservedWordUsedAsNameJS" enabled="false" level="WARNING" enabled_by_default="false" />
580
+ <inspection_tool class="RestRoleInspection" enabled="false" level="WARNING" enabled_by_default="false">
581
+ <option name="ignoredRoles">
582
+ <value>
583
+ <list size="0" />
584
+ </value>
585
+ </option>
586
+ </inspection_tool>
587
+ <inspection_tool class="Restricted_Python_calls" enabled="false" level="WARNING" enabled_by_default="false" />
588
+ <inspection_tool class="ReturnFromFinallyBlockJS" enabled="false" level="WARNING" enabled_by_default="false" />
589
+ <inspection_tool class="ReuseOfLocalVariableJS" enabled="false" level="WARNING" enabled_by_default="false" />
590
+ <inspection_tool class="SSBasedInspection" enabled="true" level="WARNING" enabled_by_default="true" />
591
+ <inspection_tool class="SassScssResolvedByNameOnly" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
592
+ <inspection_tool class="SassScssUnresolvedMixin" enabled="false" level="WARNING" enabled_by_default="false" />
593
+ <inspection_tool class="SassScssUnresolvedPlaceholderSelector" enabled="false" level="WARNING" enabled_by_default="false" />
594
+ <inspection_tool class="SassScssUnresolvedVariable" enabled="false" level="WARNING" enabled_by_default="false" />
595
+ <inspection_tool class="ShellCheck" enabled="false" level="ERROR" enabled_by_default="false" />
596
+ <inspection_tool class="ShiftOutOfRangeJS" enabled="false" level="WARNING" enabled_by_default="false" />
597
+ <inspection_tool class="SillyAssignmentJS" enabled="false" level="WARNING" enabled_by_default="false" />
598
+ <inspection_tool class="SpellCheckingInspection" enabled="false" level="TYPO" enabled_by_default="false">
599
+ <option name="processCode" value="true" />
600
+ <option name="processLiterals" value="true" />
601
+ <option name="processComments" value="true" />
602
+ </inspection_tool>
603
+ <inspection_tool class="SqlAddNotNullColumnInspection" enabled="false" level="WARNING" enabled_by_default="false" />
604
+ <inspection_tool class="SqlAggregatesInspection" enabled="false" level="WARNING" enabled_by_default="false" />
605
+ <inspection_tool class="SqlAmbiguousColumnInspection" enabled="false" level="WARNING" enabled_by_default="false" />
606
+ <inspection_tool class="SqlAutoIncrementDuplicateInspection" enabled="false" level="WARNING" enabled_by_default="false" />
607
+ <inspection_tool class="SqlCallNotationInspection" enabled="false" level="ERROR" enabled_by_default="false" />
608
+ <inspection_tool class="SqlCaseVsCoalesceInspection" enabled="false" level="WARNING" enabled_by_default="false" />
609
+ <inspection_tool class="SqlCaseVsIfInspection" enabled="false" level="WARNING" enabled_by_default="false" />
610
+ <inspection_tool class="SqlCheckUsingColumnsInspection" enabled="false" level="WARNING" enabled_by_default="false" />
611
+ <inspection_tool class="SqlConstantConditionInspection" enabled="false" level="WARNING" enabled_by_default="false" />
612
+ <inspection_tool class="SqlConstantExpressionInspection" enabled="false" level="WARNING" enabled_by_default="false" />
613
+ <inspection_tool class="SqlCurrentSchemaInspection" enabled="false" level="WARNING" enabled_by_default="false" />
614
+ <inspection_tool class="SqlDeprecateTypeInspection" enabled="false" level="WARNING" enabled_by_default="false" />
615
+ <inspection_tool class="SqlDerivedTableAliasInspection" enabled="false" level="WARNING" enabled_by_default="false" />
616
+ <inspection_tool class="SqlDialectInspection" enabled="false" level="WARNING" enabled_by_default="false" />
617
+ <inspection_tool class="SqlDropIndexedColumnInspection" enabled="false" level="WARNING" enabled_by_default="false" />
618
+ <inspection_tool class="SqlDtInspection" enabled="false" level="WARNING" enabled_by_default="false" />
619
+ <inspection_tool class="SqlDuplicateColumnInspection" enabled="false" level="WARNING" enabled_by_default="false" />
620
+ <inspection_tool class="SqlGotoInspection" enabled="false" level="WARNING" enabled_by_default="false" />
621
+ <inspection_tool class="SqlIdentifierInspection" enabled="false" level="WARNING" enabled_by_default="false" />
622
+ <inspection_tool class="SqlIllegalCursorStateInspection" enabled="false" level="WARNING" enabled_by_default="false" />
623
+ <inspection_tool class="SqlInsertIntoGeneratedColumnInspection" enabled="false" level="WARNING" enabled_by_default="false" />
624
+ <inspection_tool class="SqlInsertNullIntoNotNullInspection" enabled="false" level="WARNING" enabled_by_default="false" />
625
+ <inspection_tool class="SqlInsertValuesInspection" enabled="false" level="WARNING" enabled_by_default="false" />
626
+ <inspection_tool class="SqlJoinWithoutOnInspection" enabled="false" level="WARNING" enabled_by_default="false" />
627
+ <inspection_tool class="SqlMisleadingReferenceInspection" enabled="false" level="WARNING" enabled_by_default="false" />
628
+ <inspection_tool class="SqlMissingColumnAliasesInspection" enabled="false" level="WARNING" enabled_by_default="false" />
629
+ <inspection_tool class="SqlMissingReturnInspection" enabled="false" level="ERROR" enabled_by_default="false" />
630
+ <inspection_tool class="SqlMultipleLimitClausesInspection" enabled="false" level="WARNING" enabled_by_default="false" />
631
+ <inspection_tool class="SqlNamedArgumentsInspection" enabled="false" level="WARNING" enabled_by_default="false" />
632
+ <inspection_tool class="SqlNoDataSourceInspection" enabled="false" level="WARNING" enabled_by_default="false" />
633
+ <inspection_tool class="SqlNullComparisonInspection" enabled="false" level="WARNING" enabled_by_default="false" />
634
+ <inspection_tool class="SqlRedundantAliasInspection" enabled="false" level="WARNING" enabled_by_default="false" />
635
+ <inspection_tool class="SqlRedundantCodeInCoalesceInspection" enabled="false" level="WARNING" enabled_by_default="false" />
636
+ <inspection_tool class="SqlRedundantElseNullInspection" enabled="false" level="WARNING" enabled_by_default="false" />
637
+ <inspection_tool class="SqlRedundantLimitInspection" enabled="false" level="WARNING" enabled_by_default="false" />
638
+ <inspection_tool class="SqlRedundantOrderingDirectionInspection" enabled="false" level="WARNING" enabled_by_default="false" />
639
+ <inspection_tool class="SqlResolveInspection" enabled="false" level="ERROR" enabled_by_default="false" />
640
+ <inspection_tool class="SqlShadowingAliasInspection" enabled="false" level="WARNING" enabled_by_default="false" />
641
+ <inspection_tool class="SqlShouldBeInGroupByInspection" enabled="false" level="WARNING" enabled_by_default="false" />
642
+ <inspection_tool class="SqlSideEffectsInspection" enabled="false" level="WARNING" enabled_by_default="false" />
643
+ <inspection_tool class="SqlSignatureInspection" enabled="false" level="WARNING" enabled_by_default="false" />
644
+ <inspection_tool class="SqlStorageInspection" enabled="false" level="WARNING" enabled_by_default="false" />
645
+ <inspection_tool class="SqlStringLengthExceededInspection" enabled="false" level="WARNING" enabled_by_default="false" />
646
+ <inspection_tool class="SqlTransactionStatementInTriggerInspection" enabled="false" level="WARNING" enabled_by_default="false" />
647
+ <inspection_tool class="SqlTriggerTransitionInspection" enabled="false" level="WARNING" enabled_by_default="false" />
648
+ <inspection_tool class="SqlTypeInspection" enabled="false" level="WARNING" enabled_by_default="false" />
649
+ <inspection_tool class="SqlUnicodeStringLiteralInspection" enabled="false" level="WARNING" enabled_by_default="false" />
650
+ <inspection_tool class="SqlUnreachableCodeInspection" enabled="false" level="WARNING" enabled_by_default="false" />
651
+ <inspection_tool class="SqlUnusedCteInspection" enabled="false" level="WARNING" enabled_by_default="false" />
652
+ <inspection_tool class="SqlUnusedSubqueryItemInspection" enabled="false" level="WARNING" enabled_by_default="false" />
653
+ <inspection_tool class="SqlUnusedVariableInspection" enabled="false" level="WARNING" enabled_by_default="false" />
654
+ <inspection_tool class="SqlWithoutWhereInspection" enabled="false" level="WARNING" enabled_by_default="false" />
655
+ <inspection_tool class="StandardJS" enabled="false" level="ERROR" enabled_by_default="false" />
656
+ <inspection_tool class="StatementsPerFunctionJS" enabled="false" level="WARNING" enabled_by_default="false">
657
+ <option name="m_limit" value="30" />
658
+ </inspection_tool>
659
+ <inspection_tool class="StringLiteralBreaksHTMLJS" enabled="false" level="WARNING" enabled_by_default="false" />
660
+ <inspection_tool class="Stylelint" enabled="false" level="ERROR" enabled_by_default="false" />
661
+ <inspection_tool class="SuspiciousTypeOfGuard" enabled="false" level="WARNING" enabled_by_default="false" />
662
+ <inspection_tool class="SwJsonMaybeSpecificationInspection" enabled="false" level="WARNING" enabled_by_default="false" />
663
+ <inspection_tool class="SwJsonUnresolvedReferencesInspection" enabled="false" level="ERROR" enabled_by_default="false" />
664
+ <inspection_tool class="SwYamlMaybeSpecificationInspection" enabled="false" level="WARNING" enabled_by_default="false" />
665
+ <inspection_tool class="SwYamlUnresolvedReferencesInspection" enabled="false" level="ERROR" enabled_by_default="false" />
666
+ <inspection_tool class="TailRecursionJS" enabled="false" level="WARNING" enabled_by_default="false" />
667
+ <inspection_tool class="TaskProblemsInspection" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
668
+ <inspection_tool class="TextLabelInSwitchStatementJS" enabled="false" level="WARNING" enabled_by_default="false" />
669
+ <inspection_tool class="ThisExpressionReferencesGlobalObjectJS" enabled="false" level="WARNING" enabled_by_default="false" />
670
+ <inspection_tool class="ThreeNegationsPerFunctionJS" enabled="false" level="WARNING" enabled_by_default="false" />
671
+ <inspection_tool class="ThrowFromFinallyBlockJS" enabled="false" level="WARNING" enabled_by_default="false" />
672
+ <inspection_tool class="TodoComment" enabled="false" level="WARNING" enabled_by_default="false" />
673
+ <inspection_tool class="TomlUnresolvedReference" enabled="false" level="WARNING" enabled_by_default="false" />
674
+ <inspection_tool class="TrailingSpacesInProperty" enabled="false" level="WARNING" enabled_by_default="false" />
675
+ <inspection_tool class="TrivialConditionalJS" enabled="false" level="WARNING" enabled_by_default="false" />
676
+ <inspection_tool class="TrivialIfJS" enabled="false" level="WARNING" enabled_by_default="false" />
677
+ <inspection_tool class="TsLint" enabled="false" level="WARNING" enabled_by_default="false" />
678
+ <inspection_tool class="TypeScriptAbstractClassConstructorCanBeMadeProtected" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
679
+ <inspection_tool class="TypeScriptCheckImport" enabled="false" level="ERROR" enabled_by_default="false" />
680
+ <inspection_tool class="TypeScriptConfig" enabled="false" level="WARNING" enabled_by_default="false" />
681
+ <inspection_tool class="TypeScriptDuplicateUnionOrIntersectionType" enabled="false" level="WARNING" enabled_by_default="false" />
682
+ <inspection_tool class="TypeScriptExplicitMemberType" enabled="false" level="INFORMATION" enabled_by_default="false" />
683
+ <inspection_tool class="TypeScriptFieldCanBeMadeReadonly" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
684
+ <inspection_tool class="TypeScriptJSXUnresolvedComponent" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
685
+ <inspection_tool class="TypeScriptLibrary" enabled="false" level="ERROR" enabled_by_default="false" />
686
+ <inspection_tool class="TypeScriptMissingAugmentationImport" enabled="false" level="INFORMATION" enabled_by_default="false" />
687
+ <inspection_tool class="TypeScriptMissingConfigOption" enabled="false" level="WARNING" enabled_by_default="false" />
688
+ <inspection_tool class="TypeScriptRedundantGenericType" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
689
+ <inspection_tool class="TypeScriptSmartCast" enabled="false" level="WARNING" enabled_by_default="false" />
690
+ <inspection_tool class="TypeScriptSuspiciousConstructorParameterAssignment" enabled="false" level="WARNING" enabled_by_default="false" />
691
+ <inspection_tool class="TypeScriptUMDGlobal" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
692
+ <inspection_tool class="TypeScriptUnresolvedReference" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
693
+ <inspection_tool class="TypeScriptValidateGenericTypes" enabled="false" level="ERROR" enabled_by_default="false" />
694
+ <inspection_tool class="TypeScriptValidateJSTypes" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
695
+ <inspection_tool class="TypeScriptValidateTypes" enabled="false" level="ERROR" enabled_by_default="false" />
696
+ <inspection_tool class="UnnecessaryContinueJS" enabled="false" level="WARNING" enabled_by_default="false" />
697
+ <inspection_tool class="UnnecessaryLabelJS" enabled="false" level="WARNING" enabled_by_default="false" />
698
+ <inspection_tool class="UnnecessaryLabelOnBreakStatementJS" enabled="false" level="WARNING" enabled_by_default="false" />
699
+ <inspection_tool class="UnnecessaryLabelOnContinueStatementJS" enabled="false" level="WARNING" enabled_by_default="false" />
700
+ <inspection_tool class="UnnecessaryLocalVariableJS" enabled="false" level="WARNING" enabled_by_default="false">
701
+ <option name="m_ignoreImmediatelyReturnedVariables" value="false" />
702
+ <option name="m_ignoreAnnotatedVariables" value="false" />
703
+ </inspection_tool>
704
+ <inspection_tool class="UnnecessaryReturnJS" enabled="false" level="WARNING" enabled_by_default="false" />
705
+ <inspection_tool class="UnreachableCodeJS" enabled="false" level="WARNING" enabled_by_default="false" />
706
+ <inspection_tool class="UnresolvedReference" enabled="false" level="ERROR" enabled_by_default="false" />
707
+ <inspection_tool class="UnterminatedStatementJS" enabled="false" level="WARNING" enabled_by_default="false">
708
+ <option name="ignoreSemicolonAtEndOfBlock" value="true" />
709
+ </inspection_tool>
710
+ <inspection_tool class="UnusedCatchParameterJS" enabled="false" level="WARNING" enabled_by_default="false">
711
+ <option name="m_ignoreCatchBlocksWithComments" value="false" />
712
+ </inspection_tool>
713
+ <inspection_tool class="UnusedDefine" enabled="false" level="WARNING" enabled_by_default="false" />
714
+ <inspection_tool class="UnusedProperty" enabled="false" level="WARNING" enabled_by_default="false" />
715
+ <inspection_tool class="UpdateDependencyToLatestVersion" enabled="false" level="INFORMATION" enabled_by_default="false" />
716
+ <inspection_tool class="UseEllipsisInPropertyInspection" enabled="false" level="WARNING" enabled_by_default="false" />
717
+ <inspection_tool class="VoidExpressionJS" enabled="false" level="WARNING" enabled_by_default="false" />
718
+ <inspection_tool class="VueDataFunction" enabled="false" level="WARNING" enabled_by_default="false" />
719
+ <inspection_tool class="VueDeprecatedSymbol" enabled="false" level="WARNING" enabled_by_default="false" />
720
+ <inspection_tool class="VueDuplicateTag" enabled="false" level="WARNING" enabled_by_default="false" />
721
+ <inspection_tool class="VueMissingComponentImportInspection" enabled="false" level="WARNING" enabled_by_default="false" />
722
+ <inspection_tool class="VueUnrecognizedDirective" enabled="false" level="WARNING" enabled_by_default="false" />
723
+ <inspection_tool class="VueUnrecognizedSlot" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
724
+ <inspection_tool class="VulnerableLibrariesGlobal" enabled="false" level="WARNING" enabled_by_default="false" />
725
+ <inspection_tool class="VulnerableLibrariesLocal" enabled="false" level="WARNING" enabled_by_default="false" />
726
+ <inspection_tool class="WebpackConfigHighlighting" enabled="false" level="WARNING" enabled_by_default="false" />
727
+ <inspection_tool class="WithStatementJS" enabled="false" level="WARNING" enabled_by_default="false" />
728
+ <inspection_tool class="WrongPropertyKeyValueDelimiter" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
729
+ <inspection_tool class="XHTMLIncompatabilitiesJS" enabled="false" level="WARNING" enabled_by_default="false" />
730
+ <inspection_tool class="XmlDefaultAttributeValue" enabled="false" level="WARNING" enabled_by_default="false" />
731
+ <inspection_tool class="XmlDeprecatedElement" enabled="false" level="WARNING" enabled_by_default="false" />
732
+ <inspection_tool class="XmlDuplicatedId" enabled="false" level="ERROR" enabled_by_default="false" />
733
+ <inspection_tool class="XmlHighlighting" enabled="false" level="ERROR" enabled_by_default="false" />
734
+ <inspection_tool class="XmlInvalidId" enabled="false" level="ERROR" enabled_by_default="false" />
735
+ <inspection_tool class="XmlPathReference" enabled="false" level="ERROR" enabled_by_default="false" />
736
+ <inspection_tool class="XmlUnboundNsPrefix" enabled="false" level="WARNING" enabled_by_default="false" />
737
+ <inspection_tool class="XmlUnusedNamespaceDeclaration" enabled="false" level="WARNING" enabled_by_default="false" />
738
+ <inspection_tool class="XmlWrongRootElement" enabled="false" level="ERROR" enabled_by_default="false" />
739
+ <inspection_tool class="YAMLDuplicatedKeys" enabled="false" level="ERROR" enabled_by_default="false" />
740
+ <inspection_tool class="YAMLIncompatibleTypes" enabled="false" level="WARNING" enabled_by_default="false" />
741
+ <inspection_tool class="YAMLRecursiveAlias" enabled="false" level="ERROR" enabled_by_default="false" />
742
+ <inspection_tool class="YAMLSchemaDeprecation" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
743
+ <inspection_tool class="YAMLSchemaValidation" enabled="false" level="WARNING" enabled_by_default="false" />
744
+ <inspection_tool class="YAMLUnresolvedAlias" enabled="false" level="ERROR" enabled_by_default="false" />
745
+ <inspection_tool class="YAMLUnusedAnchor" enabled="false" level="WARNING" enabled_by_default="false" />
746
+ </profile>
747
+ </component>
.idea/inspectionProfiles/profiles_settings.xml ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ <component name="InspectionProjectProfileManager">
2
+ <settings>
3
+ <option name="USE_PROJECT_PROFILE" value="false" />
4
+ <version value="1.0" />
5
+ </settings>
6
+ </component>
.idea/misc.xml ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9" project-jdk-type="Python SDK" />
4
+ </project>
.idea/shelf/Uncommitted_changes_before_Checkout_at_2023_8_28,_21_02_[Changes]/shelved.patch ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Index: scripts/prompt_rg.py
2
+ IDEA additional info:
3
+ Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
4
+ <+>import importlib\n\nimport gradio as gr\n\nfrom promptsModules.sd_command_gen import project_config as gen_config\nfrom promptsModules.web_api import (create_prompts)\nfrom promptsModules.model_manager import (LoraConfigManager)\n\nproject_config = gen_config\nt2i_text_box = None\nIS_PLUGIN = True\n\n\ndef get_model_input(com_value):\n arr = com_value.split(\",\")\n target_list = []\n if len(arr) > 0:\n target_list = [x.strip() for x in arr if x.strip()]\n return target_list\n\n\n######### gen #########\n# 我有史以来写的最长的方法\ndef gen_action(gen_times, widget_lora, widget_lyco, widget_embeddings, model_order, additional_prompt, angle, body_framing, location,\n pose_type,\n dynamic_mode, breasts_size, body_wear, top_wear, bottom_wear, leg_wear, panties, shoes_type, body_with,\n body_status, body_desc, cloth_trim, profession, hair_color, add_hair_style, enable_eye_color,\n face_expression, add_girl_beautyful, has_girl_desc, nsfw_type, is_nsfw, is_uncensored, is_simple_nude,\n nude_strong, sexual_list_random_index_times, nude_list_random_index_times, has_starting, is_realistic,\n add_colors, enable_day_weather, enable_light_effect, enable_image_tech, accessories_random_tims,\n object_random_times, suffix_words_random_times, assign_angle, assign_body_framing, assign_place,\n assign_pose, assign_job, assigin_expression, assign_clothes, assign_leg_wear, assign_shoes,\n assign_leg_wear_color, assign_shoes_color, assign_hair_color, hair_accessories, neck_accessories,\n earrings, has_ending, hair_length, people_cnt):\n if angle:\n project_config[\"angle\"] = \"\"\n else:\n project_config[\"angle\"] = assign_angle\n\n if body_framing:\n project_config[\"body_framing\"] = \"\"\n else:\n project_config[\"body_framing\"] = assign_body_framing\n\n if location:\n project_config[\"place\"] = \"\"\n else:\n project_config[\"place\"] = assign_place\n\n if pose_type == 2:\n project_config[\"assign_pose\"] = assign_pose\n else:\n project_config[\"assign_pose\"] = \"\"\n project_config[\"pose_type\"] = pose_type + 1\n\n project_config[\"dynamic_mode\"] = dynamic_mode\n if breasts_size == \"空NULL\":\n project_config[\"breasts_size\"] = \"null\"\n else:\n project_config[\"breasts_size\"] = breasts_size\n\n project_config[\"body_wear\"] = body_wear + 1\n project_config[\"top_wear\"] = top_wear + 1\n project_config[\"bottom_wear\"] = bottom_wear + 1\n project_config[\"leg_wear\"] = leg_wear + 1\n project_config[\"panties\"] = panties\n project_config[\"shoes_type\"] = shoes_type + 1\n project_config[\"body_with\"] = body_with\n project_config[\"body_status\"] = body_status\n project_config[\"body_description\"] = body_desc\n project_config[\"cloth_trim\"] = cloth_trim\n if profession:\n project_config[\"assign_profession\"] = \"\"\n else:\n project_config[\"assign_profession\"] = assign_job\n\n if hair_color and assign_hair_color == \"\":\n project_config[\"hair_color\"] = \"random\"\n else:\n if assign_hair_color == \"\":\n project_config[\"hair_color\"] = \"null\"\n else:\n project_config[\"hair_color\"] = assign_hair_color\n project_config[\"add_hair_style\"] = add_hair_style\n project_config[\"add_hair_length\"] = hair_length\n project_config[\"enable_eye_color\"] = enable_eye_color\n project_config[\"has_girl_desc\"] = has_girl_desc\n project_config[\"add_girl_beautyful\"] = add_girl_beautyful\n\n if face_expression <= 4:\n project_config[\"face_expression\"] = face_expression + 1\n else:\n project_config[\"assign_expression\"] = assigin_expression\n\n project_config[\"nsfw_type\"] = nsfw_type + 1\n project_config[\"is_nsfw\"] = is_nsfw\n project_config[\"is_uncensored\"] = is_uncensored\n project_config[\"is_simple_nude\"] = is_simple_nude\n project_config[\"nude_strong\"] = nude_strong\n\n project_config[\"sexual_list_random_index_times\"] = sexual_list_random_index_times\n project_config[\"nude_list_random_index_times\"] = nude_list_random_index_times\n\n project_config[\"use_starting\"] = has_starting\n project_config[\"is_realistic\"] = is_realistic\n project_config[\"add_colors\"] = add_colors\n project_config[\"enable_day_weather\"] = enable_day_weather\n project_config[\"enable_light_effect\"] = enable_light_effect\n project_config[\"enable_image_tech\"] = enable_image_tech\n project_config[\"accessories_random_tims\"] = accessories_random_tims\n project_config[\"object_random_times\"] = object_random_times\n project_config[\"suffix_words_random_times\"] = suffix_words_random_times\n\n project_config[\"assign_body_clothes\"] = assign_clothes\n project_config[\"assign_leg_wear\"] = assign_leg_wear\n project_config[\"assign_shoes\"] = assign_shoes\n project_config[\"leg_wear_color\"] = assign_leg_wear_color\n project_config[\"shoes_color\"] = assign_shoes_color\n\n project_config[\"add_hair_accessories\"] = hair_accessories\n project_config[\"add_neck_accessories\"] = neck_accessories\n project_config[\"add_earrings\"] = earrings\n project_config[\"add_detail_suffix\"] = has_ending\n project_config[\"girl_cnt\"] = people_cnt\n\n lora_config = get_model_input(widget_lora)\n lyco_config = get_model_input(widget_lyco)\n embeddings_config = get_model_input(widget_embeddings)\n project_config[\"lora\"] = lora_config\n project_config[\"lyco\"] = lyco_config\n project_config[\"embeddings\"] = embeddings_config\n if model_order is None or model_order == '':\n model_order = \"xyz\"\n project_config[\"models_order\"] = model_order\n project_config[\"additional_prompt\"] = additional_prompt\n return create_prompts(gen_times, project_config)\n\n\ndef send_action(result_text):\n if t2i_text_box is not None:\n lines = result_text.split(\"\\n\")\n stripped_lines = [line.strip() for line in lines]\n if len(stripped_lines) > 0:\n return stripped_lines[0]\n\n\ndef load_config_action():\n return LoraConfigManager().export_to_data_frame()\n\n\n######### UI #########\ndef on_ui_tabs():\n with gr.Blocks(analytics_enabled=False) as ui_component:\n with gr.Tab(\"生成prompt\"):\n with gr.Row():\n with gr.Column(scale=3):\n gr.Markdown(\"请修改以下配置\")\n\n with gr.Box():\n with gr.Row():\n time_slider = gr.Slider(1, 6, value=4, label=\"随机生成条数\", step=1, interactive=True)\n\n with gr.Box():\n gr.Markdown(\"视角、地点、动作\")\n with gr.Row():\n angle = gr.Checkbox(False, label=\"视角\", info=\"正面,侧面,背面...\")\n body_framing = gr.Checkbox(False, label=\"身体框架\", info=\"肖像,半身,全身...\")\n location = gr.Checkbox(False, label=\"地点\", info=\"随机地点\")\n pose_type = gr.Dropdown(['基础', '全身', '空NULL'], value='空NULL', type=\"index\",\n label=\"动作类型\",\n interactive=True,\n info=\"人物动作,站、坐、躺...\")\n dynamic_mode = gr.Checkbox(False, label=\"动态模式\",\n info=\"使用dynamic pose, angle,需对应配置勾选\")\n with gr.Box():\n gr.Markdown(\"身体穿着描述, 选择空NULL则不生成该tag\")\n with gr.Column():\n with gr.Row():\n breasts_size = gr.Dropdown([\"medium\", \"large\", \"huge\", \"gigantic\", \"空NULL\"],\n value=\"空NULL\",\n label=\"胸大小描述\", info=\"依次增大= =#\", interactive=True)\n body_wear = gr.Dropdown(\n [\"裙子dress\", \"制服UNIFORM\", \"紧身衣BODYSUIT\", \"传统服饰TRADITIONAL\",\n \"上下搭配(如上身体恤下身短裙)\", \"以上随机\", \"空NULL\"], value=\"空NULL\",\n type=\"index\", label=\"衣服\", info=\"\", interactive=True)\n top_wear = gr.Dropdown(\n [\"衬衫SHIRTS\", \"外套COAT\", \"毛衣SWEATER\", \"其他OTHERS\", \"以上随机RANDOM\"],\n value=\"衬衫SHIRTS\", type=\"index\", label=\"上身衣物\",\n info=\"选择上下搭配(如上身体恤下身短裙)该配置生效\", interactive=True)\n bottom_wear = gr.Dropdown([\"裤子PANTS\", \"短裙SKIRT\", \"短裤SHORTS\", \"以上随机RANDOM\"],\n value=\"短裙SKIRT\", type=\"index\", label=\"下身衣物\",\n info=\"选择上下搭配(如上身体恤下身短裙)该配置生效\",\n interactive=True)\n with gr.Row():\n leg_wear = gr.Dropdown(\n [\"短袜SOCKS\", \"小腿袜KNEEHIGHS\", \"过膝袜OVERKNEEHIGHS\", \"大腿袜THIGHHIGHS\",\n \"连裤袜PANTYHOSE\",\n \"光腿BARE\", \"空NULL\", \"以上随机RANDOM\"], value=\"空NULL\", type=\"index\",\n label=\"袜子\",\n interactive=True)\n panties = gr.Checkbox(False, label=\"内裤\", info=\"勾选则随机给生成一种内裤类型\")\n shoes_type = gr.Dropdown(\n [\"靴子BOOTS\", \"高跟鞋HIGHHEELS\", \"凉鞋SANDALS\", \"拖鞋SLIPPERS\", \"光脚BARE\",\n \"空NULL\"],\n value=\"空NULL\", type=\"index\", label=\"鞋子\", info=\"\", interactive=True)\n with gr.Row():\n body_with = gr.Checkbox(False, label=\"身体缠绕物\", info=\"缠绕一些东西,束缚,丝带,链条\")\n body_status = gr.Checkbox(False, label=\"身体状态\", info=\"湿身、出汗...\")\n body_desc = gr.Checkbox(False, label=\"身体描述\", info=\"完美身材,纤细身体...\")\n cloth_trim = gr.Checkbox(False, label=\"衣服装饰\", info=\"蕾丝,丝带,金色,花等等...\")\n with gr.Box():\n gr.Markdown(\"人物描述\")\n with gr.Row():\n profession = gr.Checkbox(False, label=\"职业\")\n people_cnt = gr.Slider(0, 8, value=1, label=\"人物数量\", step=1, interactive=True)\n with gr.Row():\n hair_length = gr.Checkbox(True, label=\"头发长度\")\n hair_color = gr.Checkbox(True, label=\"头发颜色\", interactive=True)\n add_hair_style = gr.Checkbox(False, label=\"头发风格\")\n enable_eye_color = gr.Checkbox(True, label=\"眼睛颜色\")\n with gr.Row():\n hair_accessories = gr.Checkbox(True, label=\"头饰\")\n neck_accessories = gr.Checkbox(True, label=\"颈部饰物\")\n earrings = gr.Checkbox(True, label=\"耳环\")\n with gr.Row():\n face_expression = gr.Dropdown(\n [\"情绪EMOTIONS\", \"诱惑的SEXUAL\", \"笑容SMILE\", \"俏皮的SMUG\", \"以上随机\", \"空NULL\"],\n value=\"笑容SMILE\",\n type=\"index\", label=\"表情\", interactive=True)\n add_girl_beautyful = gr.Checkbox(False, label=\"描述妹子的短词缀\", info=\"\")\n has_girl_desc = gr.Checkbox(False, label=\"描述妹子的长词缀\", info=\"\")\n\n with gr.Accordion(\"NSFW配置\", open=False):\n with gr.Box():\n with gr.Row():\n nsfw_type = gr.Dropdown([\"裸NUDE\", \"性感SEXUAL\", \"常规NOTNSFW\"], value=\"常规NOTNSFW\",\n type=\"index\",\n label=\"NSFW等级\",\n info=\"请确保你知道自己在干嘛!选择非常规类型,上面的人物衣服设置不生效\",\n interactive=True)\n is_nsfw = gr.Checkbox(False, label=\"是否添加nfsw词缀\")\n is_uncensored = gr.Checkbox(False, label=\"是否添加uncensored词缀\")\n is_simple_nude = gr.Checkbox(False, label=\"是否是简单的nude模式\", info=\"裸模式生效\")\n nude_strong = gr.Checkbox(False, label=\"是否加强nude模式\", info=\"裸模式生效\")\n with gr.Row():\n sexual_list_random_index_times = gr.Slider(0, 5, value=0, step=1,\n label=\"性感词缀随机数\",\n interactive=True)\n nude_list_random_index_times = gr.Slider(0, 9, value=0, step=1, label=\"裸体词缀随机数\",\n interactive=True)\n with gr.Accordion(\"Lora Loha embedding控制\", open=False):\n gr.Markdown(\n \"\"\"\n 关于lora/loha/embedding详细配置使用:[点我查看](https://github.com/HeathWang/prompt-r-gen-sd#loralohaembedding%E6%8E%A7%E5%88%B6%E8%AF%B4%E6%98%8E)\n \"\"\"\n )\n with gr.Box():\n with gr.Row():\n widget_lora = gr.Textbox(\"\", label=\"Lora【x】\",\n info=\"格式如下:101, 101:0.6, 路易斯:0.65\", elem_id=\"rp_widget_lora\")\n widget_lyco = gr.Textbox(\"\", label=\"lyco【y】\",\n info=\"格式如下:101, 101:0.6, 添加细节:1\", elem_id=\"rp_widget_lyco\")\n with gr.Row():\n widget_embeddings = gr.Textbox(\"\", label=\"embeddings【z】\",\n info=\"格式如下:100, ul:0.6\", elem_id=\"rp_widget_embeddings\")\n model_order = gr.Textbox(\"xyz\", label=\"lora,lyco,embed顺序\",\n info=\"默认为xyz顺序,即按照lora,lyco,emb顺序\")\n with gr.Box():\n gr.Markdown(\"其他\")\n with gr.Row():\n has_starting = gr.Checkbox(True, label=\"是否使用起手式\", info=\"best quality, absurdres,\")\n has_ending = gr.Checkbox(True, label=\"添加细节\", info=\"jewelry, ultra-detailed, 8k,\")\n is_realistic = gr.Checkbox(False, label=\"是否添加真实词缀\",\n info=\"realistic, photorealistic\")\n add_colors = gr.Checkbox(False, label=\"是否添加多彩词缀\")\n with gr.Row():\n enable_day_weather = gr.Checkbox(False, label=\"是否添加天气信息\")\n enable_light_effect = gr.Checkbox(True, label=\"是否添加灯光效果\")\n enable_image_tech = gr.Checkbox(False, label=\"是否开启图像技术,如模糊\")\n with gr.Row():\n accessories_random_tims = gr.Slider(0, 8, value=0, step=1, label=\"饰物随机数\",\n interactive=True,\n info=\"戒指,袜带等\")\n object_random_times = gr.Slider(0, 8, value=0, step=1, label=\"物品随机数\",\n info=\"花,冰火元素等\",\n interactive=True)\n suffix_words_random_times = gr.Slider(0, 10, value=0, step=1, label=\"形容词缀随机数\",\n info=\"一些描述奇幻,美丽相关的词缀\",\n interactive=True)\n\n with gr.Accordion(\"精准控制项\", open=False):\n with gr.Box():\n with gr.Row():\n assign_angle = gr.Textbox(\"null\", label=\"指定视角\")\n assign_body_framing = gr.Textbox(\"null\", label=\"指定身体框架\")\n assign_place = gr.Textbox(\"null\", label=\"指定地点\")\n with gr.Row():\n assign_pose = gr.Textbox(\"null\", label=\"指定人物动作\")\n assign_job = gr.Textbox(\"null\", label=\"指定角色\")\n assigin_expression = gr.Textbox(\"null\", label=\"指定人物表情\")\n with gr.Row():\n assign_clothes = gr.Textbox(\"\", label=\"指定衣服\")\n assign_leg_wear = gr.Textbox(\"\", label=\"指定袜子类型\")\n assign_shoes = gr.Textbox(\"\", label=\"指定鞋子类型\")\n with gr.Row():\n assign_leg_wear_color = gr.Textbox(\"\", label=\"指定袜子颜色\")\n assign_shoes_color = gr.Textbox(\"\", label=\"指定鞋子颜色\")\n assign_hair_color = gr.Textbox(\"\", label=\"指定头发颜色\")\n\n with gr.Box():\n gr.Markdown(\"手动输入项\")\n with gr.Row():\n additional_prompt = gr.Textbox(\"\", label=\"额外的prompt\")\n with gr.Column(scale=1):\n gr.Markdown(\"prompt输出:\")\n results = gr.Textbox(\"\", label=\"生成的prompt\", lines=20, show_copy_button=True, interactive=False)\n with gr.Row():\n gen_button = gr.Button(\"生成prompt\")\n send_button = gr.Button(\"发送到文生图\")\n with gr.Tab(\"查看配置\"):\n review_btn = gr.Button(\"加载excel配置\")\n data_sheet = gr.DataFrame(\n headers=[\"id\", \"类型\", \"模型名\", \"描述\"],\n datatype=[\"number\", \"str\", \"str\", \"str\"],\n col_count=4,\n interactive=False,\n )\n review_btn.click(load_config_action, outputs=data_sheet)\n\n gen_button.click(gen_action,\n inputs=[time_slider, widget_lora, widget_lyco, widget_embeddings, model_order, additional_prompt, angle,\n body_framing, location,\n pose_type, dynamic_mode, breasts_size, body_wear, top_wear, bottom_wear, leg_wear,\n panties, shoes_type, body_with, body_status, body_desc, cloth_trim, profession,\n hair_color, add_hair_style, enable_eye_color, face_expression, add_girl_beautyful,\n has_girl_desc, nsfw_type, is_nsfw, is_uncensored, is_simple_nude,\n nude_strong, sexual_list_random_index_times, nude_list_random_index_times,\n has_starting, is_realistic,\n add_colors, enable_day_weather, enable_light_effect, enable_image_tech,\n accessories_random_tims,\n object_random_times, suffix_words_random_times, assign_angle, assign_body_framing,\n assign_place, assign_pose, assign_job, assigin_expression, assign_clothes,\n assign_leg_wear, assign_shoes, assign_leg_wear_color, assign_shoes_color,\n assign_hair_color, hair_accessories, neck_accessories, earrings, has_ending,\n hair_length, people_cnt], outputs=results)\n send_button.click(send_action, inputs=results, outputs=t2i_text_box)\n if IS_PLUGIN:\n return [(ui_component, \"随机提示词RP\", \"随机提示词RP\")]\n else:\n return ui_component\n\n\ndef after_component(component, **kwargs):\n # Find the text2img textbox component\n global t2i_text_box\n if kwargs.get(\"elem_id\") == \"txt2img_prompt\": # postive prompt textbox\n t2i_text_box = component\n\n\nif IS_PLUGIN:\n module_plugin1 = \"modules.script_callbacks\"\n script_module = importlib.import_module(module_plugin1)\n script_module.on_ui_tabs(on_ui_tabs)\n script_module.on_after_component(after_component)\n\nelse:\n on_ui_tabs().launch(debug=True)\n
5
+ Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
6
+ <+>UTF-8
7
+ ===================================================================
8
+ diff --git a/scripts/prompt_rg.py b/scripts/prompt_rg.py
9
+ --- a/scripts/prompt_rg.py (revision 9db67b30a7ec244451f9e604fc40383e7b22396c)
10
+ +++ b/scripts/prompt_rg.py (date 1693225532658)
11
+ @@ -8,7 +8,7 @@
12
+
13
+ project_config = gen_config
14
+ t2i_text_box = None
15
+ -IS_PLUGIN = True
16
+ +IS_PLUGIN = False
17
+
18
+
19
+ def get_model_input(com_value):
20
+ Index: promptsModules/prompts.txt
21
+ IDEA additional info:
22
+ Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
23
+ <+>UTF-8
24
+ ===================================================================
25
+ diff --git a/promptsModules/prompts.txt b/promptsModules/prompts.txt
26
+ new file mode 100644
27
+ --- /dev/null (date 1692860198757)
28
+ +++ b/promptsModules/prompts.txt (date 1692860198757)
29
+ @@ -0,0 +1,11 @@
30
+ +{'angle': 'null', 'body_framing': 'null', 'assign_focus_on': 'null', 'add_focus': False, 'face_expression': <FaceExpression.SMILE: 3>, 'pose_type': 1, 'place': 'null', 'dynamic_mode': False, 'breasts_size': 'large', 'body_wear': 7, 'top_wear': <TopWearType.SHIRTS: 1>, 'bottom_wear': <BottomWearType.SKIRT: 2>, 'leg_wear': 7, 'panties': False, 'shoes_type': 6, 'body_with': False, 'body_status': False, 'body_description': False, 'cloth_trim': False, 'leg_wear_color': '', 'shoes_color': '', 'hair_color': 'null', 'enable_eye_color': True, 'disable_all_color': True, 'assign_pose': 'null', 'assign_profession': 'null', 'assign_expression': '', 'assign_shoes': '', 'assign_leg_wear': '', 'assign_body_clothes': '', 'assign_panties': '', 'assign_girl_description': '', 'accessories_random_tims': 0, 'object_random_times': 0, 'suffix_words_random_times': 0, 'nsfw_type': 3, 'sexual_list_random_index_times': 0, 'nude_list_random_index_times': 0, 'is_nsfw': False, 'is_uncensored': False, 'is_simple_nude': True, 'nude_strong': False, 'sex_mode': False, 'sex_type': <SexActType.SEX: 1>, 'man_random': False, 'has_girl_desc': False, 'add_girl_beautyful': False, 'add_hair_style': False, 'is_realistic': False, 'use_starting': True, 'add_colors': False, 'additional_prompt': '', 'enable_day_weather': False, 'enable_light_effect': True, 'enable_image_tech': False, 'lora': [101], 'lyco': [], 'lora_weights_random': True, 'embeddings': [], 'models_order': 'xyz'}
31
+ +
32
+ +
33
+ +fashi-g, makeup, mature female, <lora:fashigirl-v5.5-lora-naivae-64dim:0.76>, 1girl, cute smile, large breasts, absurdly long hair, blue eyes, eyeliner, best quality, absurdres, beautiful lighting, bell hair ornament, neck ribbon, stud earrings, jewelry, ultra-detailed, 8k,
34
+ +
35
+ +fashi-g, makeup, mature female, <lora:fashigirl-v5.5-lora-naivae-64dim:0.63>, 1girl, kind smile, large breasts, long hair, amethyst eyes, beautiful detailed eyes, best quality, absurdres, sunlight, star hair ornament, neck ribbon, stud earrings, jewelry, ultra-detailed, 8k,
36
+ +
37
+ +fashi-g, makeup, mature female, <lora:fashigirl-v5.5-lora-naivae-64dim:0.73>, 1girl, smile, large breasts, long hair, aquamarine eyes, best quality, absurdres, volumetric lighting, bell hair ornament, flower necklace, hoop earrings, jewelry, ultra-detailed, 8k,
38
+ +
39
+ +fashi-g, makeup, mature female, <lora:fashigirl-v5.5-lora-naivae-64dim:0.43>, 1girl, kind smile, large breasts, very long hair, amethyst eyes, best quality, absurdres, volumetric lighting, hair ribbon, choker, ear piercing, jewelry, ultra-detailed, 8k,
40
+ +
.idea/shelf/Uncommitted_changes_before_Checkout_at_2023_8_28__21_02__Changes_.xml ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ <changelist name="Uncommitted_changes_before_Checkout_at_2023_8_28,_21_02_[Changes]" date="1693227733295" recycled="true" deleted="true">
2
+ <option name="PATH" value="$PROJECT_DIR$/.idea/shelf/Uncommitted_changes_before_Checkout_at_2023_8_28,_21_02_[Changes]/shelved.patch" />
3
+ <option name="DESCRIPTION" value="Uncommitted changes before Checkout at 2023/8/28, 21:02 [Changes]" />
4
+ </changelist>
.idea/vcs.xml ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="VcsDirectoryMappings">
4
+ <mapping directory="" vcs="Git" />
5
+ </component>
6
+ </project>
.idea/workspace.xml ADDED
@@ -0,0 +1,465 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="AutoImportSettings">
4
+ <option name="autoReloadType" value="SELECTIVE" />
5
+ </component>
6
+ <component name="ChangeListManager">
7
+ <list default="true" id="f6135bf8-df9e-43b2-aa89-fa6954211078" name="Changes" comment="lora issue">
8
+ <change beforePath="$PROJECT_DIR$/scripts/prompt_rg.py" beforeDir="false" afterPath="$PROJECT_DIR$/scripts/prompt_rg.py" afterDir="false" />
9
+ </list>
10
+ <option name="SHOW_DIALOG" value="false" />
11
+ <option name="HIGHLIGHT_CONFLICTS" value="true" />
12
+ <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
13
+ <option name="LAST_RESOLUTION" value="IGNORE" />
14
+ </component>
15
+ <component name="FileTemplateManagerImpl">
16
+ <option name="RECENT_TEMPLATES">
17
+ <list>
18
+ <option value="Python Script" />
19
+ </list>
20
+ </option>
21
+ </component>
22
+ <component name="Git.Settings">
23
+ <option name="RECENT_BRANCH_BY_REPOSITORY">
24
+ <map>
25
+ <entry key="$PROJECT_DIR$" value="lora-issue" />
26
+ </map>
27
+ </option>
28
+ <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
29
+ </component>
30
+ <component name="MarkdownSettingsMigration">
31
+ <option name="stateVersion" value="1" />
32
+ </component>
33
+ <component name="ProjectId" id="2UI7RTgpXsbt4yCNpaetL7S0Lza" />
34
+ <component name="ProjectLevelVcsManager">
35
+ <ConfirmationsSetting value="2" id="Add" />
36
+ </component>
37
+ <component name="ProjectViewState">
38
+ <option name="hideEmptyMiddlePackages" value="true" />
39
+ <option name="showLibraryContents" value="true" />
40
+ </component>
41
+ <component name="PropertiesComponent">{
42
+ &quot;keyToString&quot;: {
43
+ &quot;ASKED_ADD_EXTERNAL_FILES&quot;: &quot;true&quot;,
44
+ &quot;RunOnceActivity.OpenProjectViewOnStart&quot;: &quot;true&quot;,
45
+ &quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
46
+ &quot;WebServerToolWindowFactoryState&quot;: &quot;false&quot;,
47
+ &quot;last_opened_file_path&quot;: &quot;/Users/hb/Documents/Mycode/prompt-r-gen-sd&quot;,
48
+ &quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
49
+ &quot;node.js.detected.package.tslint&quot;: &quot;true&quot;,
50
+ &quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;,
51
+ &quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;,
52
+ &quot;settings.editor.selected.configurable&quot;: &quot;com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable&quot;,
53
+ &quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
54
+ }
55
+ }</component>
56
+ <component name="RecentsManager">
57
+ <key name="MoveFile.RECENT_KEYS">
58
+ <recent name="$PROJECT_DIR$/promptsModules" />
59
+ </key>
60
+ </component>
61
+ <component name="RunManager" selected="Python.prompt_rg">
62
+ <configuration name="model_manager" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
63
+ <module name="prompt-r-gen-sd" />
64
+ <option name="INTERPRETER_OPTIONS" value="" />
65
+ <option name="PARENT_ENVS" value="true" />
66
+ <envs>
67
+ <env name="PYTHONUNBUFFERED" value="1" />
68
+ </envs>
69
+ <option name="SDK_HOME" value="" />
70
+ <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/promptsModules" />
71
+ <option name="IS_MODULE_SDK" value="true" />
72
+ <option name="ADD_CONTENT_ROOTS" value="true" />
73
+ <option name="ADD_SOURCE_ROOTS" value="true" />
74
+ <EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
75
+ <option name="SCRIPT_NAME" value="$PROJECT_DIR$/promptsModules/model_manager.py" />
76
+ <option name="PARAMETERS" value="" />
77
+ <option name="SHOW_COMMAND_LINE" value="false" />
78
+ <option name="EMULATE_TERMINAL" value="false" />
79
+ <option name="MODULE_MODE" value="false" />
80
+ <option name="REDIRECT_INPUT" value="false" />
81
+ <option name="INPUT_FILE" value="" />
82
+ <method v="2" />
83
+ </configuration>
84
+ <configuration name="prompt_rg" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
85
+ <module name="prompt-r-gen-sd" />
86
+ <option name="INTERPRETER_OPTIONS" value="" />
87
+ <option name="PARENT_ENVS" value="true" />
88
+ <envs>
89
+ <env name="PYTHONUNBUFFERED" value="1" />
90
+ </envs>
91
+ <option name="SDK_HOME" value="" />
92
+ <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/scripts" />
93
+ <option name="IS_MODULE_SDK" value="true" />
94
+ <option name="ADD_CONTENT_ROOTS" value="true" />
95
+ <option name="ADD_SOURCE_ROOTS" value="true" />
96
+ <EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
97
+ <option name="SCRIPT_NAME" value="$PROJECT_DIR$/scripts/prompt_rg.py" />
98
+ <option name="PARAMETERS" value="" />
99
+ <option name="SHOW_COMMAND_LINE" value="false" />
100
+ <option name="EMULATE_TERMINAL" value="false" />
101
+ <option name="MODULE_MODE" value="false" />
102
+ <option name="REDIRECT_INPUT" value="false" />
103
+ <option name="INPUT_FILE" value="" />
104
+ <method v="2" />
105
+ </configuration>
106
+ <list>
107
+ <item itemvalue="Python.model_manager" />
108
+ <item itemvalue="Python.prompt_rg" />
109
+ </list>
110
+ <recent_temporary>
111
+ <list>
112
+ <item itemvalue="Python.prompt_rg" />
113
+ <item itemvalue="Python.model_manager" />
114
+ <item itemvalue="Python.prompt_rg" />
115
+ <item itemvalue="Python.model_manager" />
116
+ <item itemvalue="Python.prompt_rg" />
117
+ </list>
118
+ </recent_temporary>
119
+ </component>
120
+ <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
121
+ <component name="TaskManager">
122
+ <task active="true" id="Default" summary="Default task">
123
+ <changelist id="f6135bf8-df9e-43b2-aa89-fa6954211078" name="Changes" comment="" />
124
+ <created>1692615234602</created>
125
+ <option name="number" value="Default" />
126
+ <option name="presentableId" value="Default" />
127
+ <updated>1692615234602</updated>
128
+ <workItem from="1692615236142" duration="286000" />
129
+ <workItem from="1692615536697" duration="18041000" />
130
+ <workItem from="1692702972930" duration="946000" />
131
+ <workItem from="1692780961157" duration="2029000" />
132
+ <workItem from="1692783135633" duration="5838000" />
133
+ <workItem from="1692845101473" duration="4394000" />
134
+ <workItem from="1692928928342" duration="1993000" />
135
+ <workItem from="1692951952892" duration="8672000" />
136
+ <workItem from="1692972214626" duration="13000" />
137
+ <workItem from="1693012175145" duration="12207000" />
138
+ <workItem from="1693150214399" duration="2341000" />
139
+ <workItem from="1693192262404" duration="7760000" />
140
+ <workItem from="1693222831729" duration="4650000" />
141
+ <workItem from="1693227796818" duration="194000" />
142
+ <workItem from="1693228084357" duration="1997000" />
143
+ </task>
144
+ <task id="LOCAL-00001" summary="init">
145
+ <option name="closed" value="true" />
146
+ <created>1692621137459</created>
147
+ <option name="number" value="00001" />
148
+ <option name="presentableId" value="LOCAL-00001" />
149
+ <option name="project" value="LOCAL" />
150
+ <updated>1692621137459</updated>
151
+ </task>
152
+ <task id="LOCAL-00002" summary="deploy">
153
+ <option name="closed" value="true" />
154
+ <created>1692624399625</created>
155
+ <option name="number" value="00002" />
156
+ <option name="presentableId" value="LOCAL-00002" />
157
+ <option name="project" value="LOCAL" />
158
+ <updated>1692624399625</updated>
159
+ </task>
160
+ <task id="LOCAL-00003" summary="fix error">
161
+ <option name="closed" value="true" />
162
+ <created>1692624848074</created>
163
+ <option name="number" value="00003" />
164
+ <option name="presentableId" value="LOCAL-00003" />
165
+ <option name="project" value="LOCAL" />
166
+ <updated>1692624848074</updated>
167
+ </task>
168
+ <task id="LOCAL-00004" summary="fix error">
169
+ <option name="closed" value="true" />
170
+ <created>1692625861011</created>
171
+ <option name="number" value="00004" />
172
+ <option name="presentableId" value="LOCAL-00004" />
173
+ <option name="project" value="LOCAL" />
174
+ <updated>1692625861011</updated>
175
+ </task>
176
+ <task id="LOCAL-00005" summary="update">
177
+ <option name="closed" value="true" />
178
+ <created>1692677271234</created>
179
+ <option name="number" value="00005" />
180
+ <option name="presentableId" value="LOCAL-00005" />
181
+ <option name="project" value="LOCAL" />
182
+ <updated>1692677271234</updated>
183
+ </task>
184
+ <task id="LOCAL-00006" summary="发送文生图逻辑处理">
185
+ <option name="closed" value="true" />
186
+ <created>1692682666388</created>
187
+ <option name="number" value="00006" />
188
+ <option name="presentableId" value="LOCAL-00006" />
189
+ <option name="project" value="LOCAL" />
190
+ <updated>1692682666388</updated>
191
+ </task>
192
+ <task id="LOCAL-00007" summary="修改tab名">
193
+ <option name="closed" value="true" />
194
+ <created>1692683317399</created>
195
+ <option name="number" value="00007" />
196
+ <option name="presentableId" value="LOCAL-00007" />
197
+ <option name="project" value="LOCAL" />
198
+ <updated>1692683317399</updated>
199
+ </task>
200
+ <task id="LOCAL-00008" summary="code update">
201
+ <option name="closed" value="true" />
202
+ <created>1692782619215</created>
203
+ <option name="number" value="00008" />
204
+ <option name="presentableId" value="LOCAL-00008" />
205
+ <option name="project" value="LOCAL" />
206
+ <updated>1692782619215</updated>
207
+ </task>
208
+ <task id="LOCAL-00009" summary="update ignore">
209
+ <option name="closed" value="true" />
210
+ <created>1692782979128</created>
211
+ <option name="number" value="00009" />
212
+ <option name="presentableId" value="LOCAL-00009" />
213
+ <option name="project" value="LOCAL" />
214
+ <updated>1692782979128</updated>
215
+ </task>
216
+ <task id="LOCAL-00010" summary="format code">
217
+ <option name="closed" value="true" />
218
+ <created>1692788758678</created>
219
+ <option name="number" value="00010" />
220
+ <option name="presentableId" value="LOCAL-00010" />
221
+ <option name="project" value="LOCAL" />
222
+ <updated>1692788758678</updated>
223
+ </task>
224
+ <task id="LOCAL-00011" summary="add more inputs to control prompts">
225
+ <option name="closed" value="true" />
226
+ <created>1692797290602</created>
227
+ <option name="number" value="00011" />
228
+ <option name="presentableId" value="LOCAL-00011" />
229
+ <option name="project" value="LOCAL" />
230
+ <updated>1692797290602</updated>
231
+ </task>
232
+ <task id="LOCAL-00012" summary="deploy test">
233
+ <option name="closed" value="true" />
234
+ <created>1692856539359</created>
235
+ <option name="number" value="00012" />
236
+ <option name="presentableId" value="LOCAL-00012" />
237
+ <option name="project" value="LOCAL" />
238
+ <updated>1692856539359</updated>
239
+ </task>
240
+ <task id="LOCAL-00013" summary="Optimize file import">
241
+ <option name="closed" value="true" />
242
+ <created>1692929575474</created>
243
+ <option name="number" value="00013" />
244
+ <option name="presentableId" value="LOCAL-00013" />
245
+ <option name="project" value="LOCAL" />
246
+ <updated>1692929575474</updated>
247
+ </task>
248
+ <task id="LOCAL-00014" summary="update layout">
249
+ <option name="closed" value="true" />
250
+ <created>1692930901280</created>
251
+ <option name="number" value="00014" />
252
+ <option name="presentableId" value="LOCAL-00014" />
253
+ <option name="project" value="LOCAL" />
254
+ <updated>1692930901280</updated>
255
+ </task>
256
+ <task id="LOCAL-00015" summary="implement load excel lora info function">
257
+ <option name="closed" value="true" />
258
+ <created>1692965072135</created>
259
+ <option name="number" value="00015" />
260
+ <option name="presentableId" value="LOCAL-00015" />
261
+ <option name="project" value="LOCAL" />
262
+ <updated>1692965072135</updated>
263
+ </task>
264
+ <task id="LOCAL-00016" summary="update code">
265
+ <option name="closed" value="true" />
266
+ <created>1692965729490</created>
267
+ <option name="number" value="00016" />
268
+ <option name="presentableId" value="LOCAL-00016" />
269
+ <option name="project" value="LOCAL" />
270
+ <updated>1692965729490</updated>
271
+ </task>
272
+ <task id="LOCAL-00017" summary="change load excel config logic">
273
+ <option name="closed" value="true" />
274
+ <created>1693015380139</created>
275
+ <option name="number" value="00017" />
276
+ <option name="presentableId" value="LOCAL-00017" />
277
+ <option name="project" value="LOCAL" />
278
+ <updated>1693015380139</updated>
279
+ </task>
280
+ <task id="LOCAL-00018" summary="remove my custom model info">
281
+ <option name="closed" value="true" />
282
+ <created>1693064356248</created>
283
+ <option name="number" value="00018" />
284
+ <option name="presentableId" value="LOCAL-00018" />
285
+ <option name="project" value="LOCAL" />
286
+ <updated>1693064356248</updated>
287
+ </task>
288
+ <task id="LOCAL-00019" summary="check special imp">
289
+ <option name="closed" value="true" />
290
+ <created>1693129630400</created>
291
+ <option name="number" value="00019" />
292
+ <option name="presentableId" value="LOCAL-00019" />
293
+ <option name="project" value="LOCAL" />
294
+ <updated>1693129630400</updated>
295
+ </task>
296
+ <task id="LOCAL-00020" summary="add check config excel">
297
+ <option name="closed" value="true" />
298
+ <created>1693144495995</created>
299
+ <option name="number" value="00020" />
300
+ <option name="presentableId" value="LOCAL-00020" />
301
+ <option name="project" value="LOCAL" />
302
+ <updated>1693144495995</updated>
303
+ </task>
304
+ <task id="LOCAL-00021" summary="update ui">
305
+ <option name="closed" value="true" />
306
+ <created>1693146264520</created>
307
+ <option name="number" value="00021" />
308
+ <option name="presentableId" value="LOCAL-00021" />
309
+ <option name="project" value="LOCAL" />
310
+ <updated>1693146264520</updated>
311
+ </task>
312
+ <task id="LOCAL-00022" summary="change some pint info">
313
+ <option name="closed" value="true" />
314
+ <created>1693146753655</created>
315
+ <option name="number" value="00022" />
316
+ <option name="presentableId" value="LOCAL-00022" />
317
+ <option name="project" value="LOCAL" />
318
+ <updated>1693146753655</updated>
319
+ </task>
320
+ <task id="LOCAL-00023" summary="fix loading excel error info">
321
+ <option name="closed" value="true" />
322
+ <created>1693148187897</created>
323
+ <option name="number" value="00023" />
324
+ <option name="presentableId" value="LOCAL-00023" />
325
+ <option name="project" value="LOCAL" />
326
+ <updated>1693148187897</updated>
327
+ </task>
328
+ <task id="LOCAL-00024" summary="model now support any key words">
329
+ <option name="closed" value="true" />
330
+ <created>1693190214581</created>
331
+ <option name="number" value="00024" />
332
+ <option name="presentableId" value="LOCAL-00024" />
333
+ <option name="project" value="LOCAL" />
334
+ <updated>1693190214581</updated>
335
+ </task>
336
+ <task id="LOCAL-00025" summary="update md">
337
+ <option name="closed" value="true" />
338
+ <created>1693193437582</created>
339
+ <option name="number" value="00025" />
340
+ <option name="presentableId" value="LOCAL-00025" />
341
+ <option name="project" value="LOCAL" />
342
+ <updated>1693193437582</updated>
343
+ </task>
344
+ <task id="LOCAL-00026" summary="update code">
345
+ <option name="closed" value="true" />
346
+ <created>1693194296245</created>
347
+ <option name="number" value="00026" />
348
+ <option name="presentableId" value="LOCAL-00026" />
349
+ <option name="project" value="LOCAL" />
350
+ <updated>1693194296245</updated>
351
+ </task>
352
+ <task id="LOCAL-00027" summary="update screen shot">
353
+ <option name="closed" value="true" />
354
+ <created>1693196678963</created>
355
+ <option name="number" value="00027" />
356
+ <option name="presentableId" value="LOCAL-00027" />
357
+ <option name="project" value="LOCAL" />
358
+ <updated>1693196678963</updated>
359
+ </task>
360
+ <task id="LOCAL-00028" summary="update ui and func">
361
+ <option name="closed" value="true" />
362
+ <created>1693208339318</created>
363
+ <option name="number" value="00028" />
364
+ <option name="presentableId" value="LOCAL-00028" />
365
+ <option name="project" value="LOCAL" />
366
+ <updated>1693208339318</updated>
367
+ </task>
368
+ <task id="LOCAL-00029" summary="fix error">
369
+ <option name="closed" value="true" />
370
+ <created>1693208653363</created>
371
+ <option name="number" value="00029" />
372
+ <option name="presentableId" value="LOCAL-00029" />
373
+ <option name="project" value="LOCAL" />
374
+ <updated>1693208653363</updated>
375
+ </task>
376
+ <task id="LOCAL-00030" summary="rename code">
377
+ <option name="closed" value="true" />
378
+ <created>1693223504736</created>
379
+ <option name="number" value="00030" />
380
+ <option name="presentableId" value="LOCAL-00030" />
381
+ <option name="project" value="LOCAL" />
382
+ <updated>1693223504736</updated>
383
+ </task>
384
+ <task id="LOCAL-00031" summary="rename module">
385
+ <option name="closed" value="true" />
386
+ <created>1693224059529</created>
387
+ <option name="number" value="00031" />
388
+ <option name="presentableId" value="LOCAL-00031" />
389
+ <option name="project" value="LOCAL" />
390
+ <updated>1693224059529</updated>
391
+ </task>
392
+ <task id="LOCAL-00032" summary="lora issue">
393
+ <option name="closed" value="true" />
394
+ <created>1693226277283</created>
395
+ <option name="number" value="00032" />
396
+ <option name="presentableId" value="LOCAL-00032" />
397
+ <option name="project" value="LOCAL" />
398
+ <updated>1693226277283</updated>
399
+ </task>
400
+ <option name="localTasksCounter" value="33" />
401
+ <servers />
402
+ </component>
403
+ <component name="TypeScriptGeneratedFilesManager">
404
+ <option name="version" value="3" />
405
+ </component>
406
+ <component name="Vcs.Log.History.Properties">
407
+ <option name="COLUMN_ID_ORDER">
408
+ <list>
409
+ <option value="Default.Root" />
410
+ <option value="Default.Author" />
411
+ <option value="Default.Date" />
412
+ <option value="Default.Subject" />
413
+ <option value="Space.CommitStatus" />
414
+ </list>
415
+ </option>
416
+ </component>
417
+ <component name="VcsManagerConfiguration">
418
+ <option name="CHECK_NEW_TODO" value="false" />
419
+ <option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" />
420
+ <MESSAGE value="code update" />
421
+ <MESSAGE value="修改tab名" />
422
+ <MESSAGE value="update ignore" />
423
+ <MESSAGE value="format code" />
424
+ <MESSAGE value="add more inputs to control prompts" />
425
+ <MESSAGE value="deploy test" />
426
+ <MESSAGE value="Optimize file import" />
427
+ <MESSAGE value="update layout" />
428
+ <MESSAGE value="implement load excel lora info function" />
429
+ <MESSAGE value="change load excel config logic" />
430
+ <MESSAGE value="remove my custom model info" />
431
+ <MESSAGE value="add check config excel" />
432
+ <MESSAGE value="update ui" />
433
+ <MESSAGE value="change some pint info" />
434
+ <MESSAGE value="fix loading excel error info" />
435
+ <MESSAGE value="model now support any key words" />
436
+ <MESSAGE value="check special imp" />
437
+ <MESSAGE value="update md" />
438
+ <MESSAGE value="update code" />
439
+ <MESSAGE value="update screen shot" />
440
+ <MESSAGE value="update ui and func" />
441
+ <MESSAGE value="fix error" />
442
+ <MESSAGE value="rename code" />
443
+ <MESSAGE value="rename module" />
444
+ <MESSAGE value="lora issue" />
445
+ <option name="LAST_COMMIT_MESSAGE" value="lora issue" />
446
+ </component>
447
+ <component name="XDebuggerManager">
448
+ <breakpoint-manager>
449
+ <breakpoints>
450
+ <line-breakpoint suspend="THREAD" type="python-line">
451
+ <url>file://$PROJECT_DIR$/scripts/promptsModules/model_manager.py</url>
452
+ <line>109</line>
453
+ <option name="timeStamp" value="1" />
454
+ </line-breakpoint>
455
+ </breakpoints>
456
+ </breakpoint-manager>
457
+ </component>
458
+ <component name="com.intellij.coverage.CoverageDataManagerImpl">
459
+ <SUITE FILE_PATH="coverage/prompt_r_gen_sd$prompt_rg.coverage" NAME="prompt_rg Coverage Results" MODIFIED="1693226013078" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/scripts" />
460
+ <SUITE FILE_PATH="coverage/prompt_r_gen_sd$model_manager.coverage" NAME="model_manager Coverage Results" MODIFIED="1693226005740" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/promptsModules" />
461
+ <SUITE FILE_PATH="coverage/prompt_r_gen_sd$web_api.coverage" NAME="web_api Coverage Results" MODIFIED="1693223797704" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/scripts/promptsModules" />
462
+ <SUITE FILE_PATH="coverage/prompt_r_gen_sd$sd_nsfw_random.coverage" NAME="sd_nsfw_random Coverage Results" MODIFIED="1692616884549" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/scripts/module" />
463
+ <SUITE FILE_PATH="coverage/prompt_r_gen_sd$model_manager__1_.coverage" NAME="model_manager (1) Coverage Results" MODIFIED="1693225915251" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/promptsModules" />
464
+ </component>
465
+ </project>
LICENSE ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ BSD 2-Clause License
2
+
3
+ Copyright (c) 2023, Heath Wang
4
+
5
+ Redistribution and use in source and binary forms, with or without
6
+ modification, are permitted provided that the following conditions are met:
7
+
8
+ 1. Redistributions of source code must retain the above copyright notice, this
9
+ list of conditions and the following disclaimer.
10
+
11
+ 2. Redistributions in binary form must reproduce the above copyright notice,
12
+ this list of conditions and the following disclaimer in the documentation
13
+ and/or other materials provided with the distribution.
14
+
15
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
19
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
21
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
22
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
23
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
README.md CHANGED
@@ -1,12 +1,73 @@
1
  ---
2
- title: Prompt R Gen Sd
3
- emoji: 🏆
4
- colorFrom: green
5
- colorTo: red
6
  sdk: gradio
7
- sdk_version: 3.41.2
8
- app_file: app.py
9
- pinned: false
10
  ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
 
12
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
  ---
2
+ title: prompt-r-gen-sd
3
+ app_file: scripts/prompt_rg.py
 
 
4
  sdk: gradio
5
+ sdk_version: 3.40.1
 
 
6
  ---
7
+ # prompt-r-gen-sd
8
+
9
+ ## 介绍
10
+ 这是一个[stable-diffusion-webui](https://github.com/AUTOMATIC1111/stable-diffusion-webui) 插件(extension),主要用来生成随机的文生图提示词。
11
+ 做这个的初衷是自己懒得写提示词,但是又想提示词可以一键生成且具有一定的随机性,所以有了这个插件。
12
+
13
+ ~~目前仅支持画女孩提示词~~,其他待开发。
14
+
15
+ 功能预览:https://huggingface.co/spaces/heath1989/prompt-rp
16
+
17
+ ## 功能
18
+
19
+ <img src="https://github.com/HeathWang/prompt-r-gen-sd/blob/master/snap_Shot.png" alt="ui" width="100%">
20
+
21
+ 1. 可配置一次生成的提示词数量,最小1,最大6
22
+ 2. 可随机视角、地点、人物动作
23
+ 3. 可随机人物衣着:衣服,鞋子,袜子,内裤等
24
+ 4. 可随机人物描述:职业,发型,发色,眼睛,眼睛颜色,面部表情(无负面表情)
25
+ 5. 可配置NSFW,~~自行尝试~~
26
+ 6. 可配置其他增强项:是否是真实照片,多彩,天气,灯光效果,摄影技术, 物品,饰品等
27
+ 7. 可配置本地安装的lora/loha/embedding,实现简单输入即可生成提示词
28
+ 8. 可输入额外提示词
29
+ 9. 可精细手动输入,精细控制人物,视角等。
30
+ 10. 可将生成内容一键发送到文生图
31
+
32
+ ## Lora/Loha/embedding控制说明
33
+
34
+ ### 配置修改
35
+ 该功能可实现输入个人自定义的文字来生成本地Lora/Loha/embedding提示词。
36
+ 安装本extension成功后,可以在extensions/prompt-r-gen-sd/scripts 文件中找到`modelsConfig.xlsx`,打开该excel,直接进行编辑。
37
+
38
+ 你也可以通过下面的地址下载:https://huggingface.co/spaces/heath1989/prompt-rp/resolve/main/modelsConfig.xlsx
39
+
40
+ 参照下面的图示添加你本地的lora等模型配置:
41
+
42
+ <img src="https://github.com/HeathWang/prompt-r-gen-sd/blob/master/model_guide.png" alt="guide" width="100%">
43
+ 修改excel保存后,配置可实时生效。
44
+ 对于云端部署的,需要云端覆盖`modelsConfig.xlsx`方可生效。
45
+
46
+ ### 使用说明
47
+ <img src="https://github.com/HeathWang/prompt-r-gen-sd/blob/master/ui_lora.png" alt="lora" width="100%">
48
+ 点开“Lora Loha embedding控制”下拉菜单,以本地下载的`st louis epoch5.safetensors`为例,
49
+ 在lora框输入:
50
+
51
+ 1. "圣姨",则表示“lora模型按照指定权重随机”
52
+ 2. "圣姨:0.6",则说明"lora模型固定0.6权重"
53
+
54
+ 对于使用多个模型,中间以“,”分割即可
55
+ 如:
56
+ 1. "圣姨,666:0.8,xyz",则表示"生成这3个配置lora的提示词"
57
+
58
+ ### Lora/Loha/embedding输出顺序
59
+ 默认情况下,按照Lora/Loha/embedding顺序输出,你可以在顺序更改输入框更改它们的输出顺序。
60
+ 1. xyz:Lora/Loha/embedding
61
+ 2. yxz:Loha/Lora/embedding
62
+ 3. zxy:embedding/Lora/loha
63
+ ......
64
+
65
+
66
+
67
+ ## 后续功能
68
+
69
+ 1. ~~添加精细控制模块,可自定义输入覆盖随机配置 [DONE]~~
70
+ 2. 存储默认配置项,下次启动自动载入
71
+ 3. 可查看历史生成记录📝。
72
+
73
 
 
install.py ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ import launch
2
+
3
+ if not launch.is_installed("openpyxl"):
4
+ launch.run_pip("install openpyxl==3.1.2", "requirements for prompt rp")
model_guide.png ADDED
promptsModules/__pycache__/basePromptBuilder.cpython-310.pyc ADDED
Binary file (37.8 kB). View file
 
promptsModules/__pycache__/basePromptBuilder.cpython-39.pyc ADDED
Binary file (38 kB). View file
 
promptsModules/__pycache__/configDB.cpython-310.pyc ADDED
Binary file (3.07 kB). View file
 
promptsModules/__pycache__/configDB.cpython-39.pyc ADDED
Binary file (3.09 kB). View file
 
promptsModules/__pycache__/lora.cpython-310.pyc ADDED
Binary file (12.1 kB). View file
 
promptsModules/__pycache__/lora.cpython-39.pyc ADDED
Binary file (3.17 kB). View file
 
promptsModules/__pycache__/model_manager.cpython-310.pyc ADDED
Binary file (3.07 kB). View file
 
promptsModules/__pycache__/model_manager.cpython-39.pyc ADDED
Binary file (4.41 kB). View file
 
promptsModules/__pycache__/promptGen.cpython-310.pyc ADDED
Binary file (5.92 kB). View file
 
promptsModules/__pycache__/promptGen.cpython-39.pyc ADDED
Binary file (5.66 kB). View file
 
promptsModules/__pycache__/sd_command_gen.cpython-310.pyc ADDED
Binary file (4.04 kB). View file
 
promptsModules/__pycache__/sd_command_gen.cpython-39.pyc ADDED
Binary file (3.57 kB). View file
 
promptsModules/__pycache__/web_api.cpython-310.pyc ADDED
Binary file (597 Bytes). View file
 
promptsModules/__pycache__/web_api.cpython-39.pyc ADDED
Binary file (450 Bytes). View file
 
promptsModules/basePromptBuilder.py ADDED
@@ -0,0 +1,1373 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # -*- coding:utf-8 -*-
2
+ import random
3
+ from enum import IntEnum
4
+
5
+ angle = ["view from above", "view from behind", "view from below", "view from side", "straight-on", "pov", "sideways"]
6
+
7
+ depth = ["atmospheric perspective", "fisheye", "panorama", "perspective", "vanishing point", "wide shot"]
8
+
9
+ body_framing = ["face", "portrait", "upper body", "lower body", "cowboy shot", "close-up", "half body",
10
+ "head out of frame", "feet out of frame", "profile"]
11
+
12
+ focus = ["ass focus", "back focus", "breast focus", "eye focus", "foot focus", "hip focus", "navel focus",
13
+ "pectoral focus", "thigh focus"]
14
+
15
+ beautifier = ["young", "cute", "monster", "japanese", "school", "fox", "demon", "cat", "magical", "20yo", "tall",
16
+ "extremely detailed beautiful", "dragon", "young cute beautiful 18-year-old", "little", "pure innocent",
17
+ "slime", "slim", "portrait of stunningly beautiful", "mature", "slender", "chinese",
18
+ "21years old pretty korean", "pretty", "teenage", "sexy", "colorful beautiful", "asian", "elf", "kawaii",
19
+ "fitness", "vampire", "blonde", "a beautiful young", "mature", "fashion"]
20
+
21
+ legwear_main = ["thighhighs", "pantyhose", "kneehighs", "over-kneehighs"]
22
+
23
+ legwear_style = ["aran", "bow", "cross-laced", "fishnet", "fluffy", "frilled", "knit", "lace", "lace-up",
24
+ "latex", "bell", "o-ring", "pleated", "ribbed", "ribbon", "seamed", "back-seamed",
25
+ "front-seamed", "side-seamed", "see-through", "shiny", "side-tie", "spiked", "studded", "toeless",
26
+ "bridal", "stirrup", "trimmed", "fur-trimmed", "lace-trimmed", "ribbon-trimmed", "zipper",
27
+ "animal ear", "torn", "mismatched", "naked", "nude"]
28
+
29
+ legwear_color = ["aqua", "beige", "black", "blue", "brown", "green", "grey", "lavender", "orange", "pink", "purple",
30
+ "red", "tan", "white", "yellow", "gradient", "multicolored", "two-tone"]
31
+
32
+ dress_color = ["black", "blue", "pink", "purple", "white", "multicolored", "two-tone", "red"]
33
+
34
+ dress_type = [
35
+ "armored dress", "backless dress", "crinoline", "collared dress", "frilled dress", "fur-trimmed dress",
36
+ "half-dress", "halter dress", "highleg dress", "high-low skirt", "hobble dress", "impossible dress",
37
+ "lace-trimmed dress", "latex dress", "layered dress", "long dress", "off-shoulder dress", "pleated dress",
38
+ "plunging neckline dress",
39
+ "ribbed dress", "ribbon-trimmed dress", "short dress", "side slit dress", "taut dress", "see-through dress",
40
+ "sleeveless dress", "strapless dress", 'cake dress', 'china dress', 'coat dress', 'cocktail dress', 'denim dress',
41
+ 'dirndl', 'evening gown', 'flowing dress', 'funeral dress', 'gown', 'mermaid dress', 'negligee', 'nightgown',
42
+ 'pencil dress', 'pinafore dress', 'sailor dress', 'santa dress', 'sundress', 'sweater dress', 'tennis dress',
43
+ 'trapeze dress', 'tube dress', 'vietnamese dress', 'wedding dress']
44
+
45
+ top_shirts = [
46
+ "collared shirt", "college shirt", "dress shirt", "flapper shirt", "gym shirt", "rash guard", "t-shirt", "v-neck",
47
+ "impossible shirt"]
48
+
49
+ top_coat = ['duffel coat', 'fur coat', 'fur-trimmed coat', 'long coat', 'overcoat', 'peacoat', 'raincoat',
50
+ 'yellow raincoat', 'transparent raincoat', 'trench coat', 'winter coat']
51
+
52
+ top_sweater = ['sweater', 'pullover', 'turtleneck', 'sleeveless turtleneck', 'sweater dress', 'ribbed sweater',
53
+ 'aran sweater']
54
+
55
+ top_others = ["tank top", "tube top", "bandeau", "underbust", "vest", "sweater vest", "waistcoat", "camisole",
56
+ "crop top"]
57
+
58
+ uniforms = ["apron", "armor", "armored dress", "bikini armor", "band uniform", "cape", "capelet", "hood",
59
+ "shoulder cape", "cassock", "cheerleader", "costume", "ghost costume", "gym uniform", "buruma",
60
+ "habit", "harem outfit", "loincloth", "hazmat suit", "hev suit", "kigurumi", "maid",
61
+ "miko", "nontraditional miko", "military uniform", "overalls", "pajamas", "pilot suit", "plugsuit",
62
+ "sailor (naval uniform)", "santa costume", "school uniform", "serafuku (sailor uniform)",
63
+ "sailor dress", "gakuran", "meiji schoolgirl uniform", "shosei", "suit", "business suit",
64
+ "pant suit", "skirt suit", "tuxedo", "track suit", "sweatpants", "sweater", "tutu", "waitress"]
65
+
66
+ bodysuits = ["bikesuit", "racing suit", "bodystocking", "bodysuit", "jumpsuit", "short jumpsuit", "leotard",
67
+ "strapless leotard", "playboy bunny", "swimsuit", "competition swimsuit", "slingshot swimsuit",
68
+ "school swimsuit", "bikini", "leaf bikini", "string bikini", "micro bikini", "side-tie bikini bottom",
69
+ "lowleg bikini", "thong bikini", "venus bikini", "sports bikini", "tankini", "criss-cross halter",
70
+ "swim briefs (speedo)", "jammers", "legskin", "rash guard", "robe", "bathrobe", "open robe", "kesa",
71
+ "romper", "sarong", "tunic", "unitard"]
72
+
73
+ traditional_clothes = ["chinese clothes", "changpao", "china dress", "fengguan", "hanfu", "longpao",
74
+ "tangzhuang", "dirndl", "japanese clothes", "fundoshi", "yamakasa", "hakama",
75
+ "hakama skirt",
76
+ "hakama short skirt", "hakama pants", "kimono", "furisode", "layered kimono", "short kimono",
77
+ "uchikake (wedding kimono)", "yukata", "haori", "happi", "chanchanko", "dotera", "hanten",
78
+ "kimono skirt", "miko", "nontraditional miko", "sarashi", "Midriff sarashi", "Chest sarashi",
79
+ "Budget sarashi", "Undone sarashi", "straw cape (mino)", "mino boushi", "tabi", "tasuki",
80
+ "korean clothes"]
81
+
82
+ bottom_skirts = ["bubble skirt", "belt skirt", "bikini skirt", "bow skirt", "checkered skirt",
83
+ "denim skirt", "frilled skirt", "grass skirt", "hakama short skirt", "half-skirt",
84
+ "high-low skirt", "hoop skirt", "kimono skirt", "layered skirt", "long skirt",
85
+ "microskirt", "miniskirt", "overskirt", "plaid skirt", "pleated skirt", "pencil skirt",
86
+ "showgirl skirt", "side-tie skirt", "skirt suit", "skirt set", "spank skirt", "suspender skirt"]
87
+
88
+ bottom_pants = ['plaid pants', 'pinstripe pants', 'bell-bottoms', 'capri pants', 'harem pants', 'jeans',
89
+ 'leather pants', 'pant suit', 'detached pants', 'pants rolled up', 'tight pants', 'single pantsleg']
90
+
91
+ bottom_shorts = ['shorts', 'bike shorts', 'denim shorts', 'dolphin shorts', 'gym shorts', 'lowleg shorts',
92
+ 'micro shorts', 'short shorts', 'shorts under skirt']
93
+
94
+ clothes_trim = ["flower trim", "frills", "gold trim", "lace trim", "ribbon trim", "silver trim"]
95
+
96
+ bSize = ["large breasts", "medium breasts", "huge breasts", "gigantic breasts"]
97
+
98
+ expression_emo = ["annoyed", "blush", "bored", "closed eyes", "confused", "crazy", "cry", "disappointed", "disdain",
99
+ "disgust", "despair", "drunk", "envy", "evil", "flustered", "furrowed brow", "guilt", "nervous",
100
+ "one eye closed", "rape face", "sleepy", "wince"]
101
+
102
+ expression_sexual = ["afterglow", "ahegao", "fucked silly", "aroused", "naughty face", "torogao"]
103
+
104
+ expression_smile = ["smile", "light smile", "seductive smile", "evil smile", "slight smile", "cute smile", "shy smile",
105
+ "sweet smile", "happy smile", "naughty smile", "beautiful smile", "sexy smile", "kind smile"]
106
+
107
+ expression_smug = ['doyagao', 'smirk', 'smug', 'troll face']
108
+
109
+ hairColor = ["white hair", "black hair", "purple hair", "pink hair", "aqua hair", "blonde hair", "blue hair",
110
+ "red hair", "brown hair", "green hair", "grey hair", "multicolored hair", "silver hair", "gradient hair",
111
+ "two-tone hair"]
112
+
113
+ hair_style = ["colored inner hair", "crystal hair", "expressive hair", "floating hair", "messy_hair",
114
+ "shiny_hair", "wet hair", "hair strand", "crystals texture hair", "wavy hair", "ponytail"]
115
+
116
+ hairLength = ["long", "very long", "absurdly long", "short", "medium"]
117
+
118
+ hair_others = ["bangs", "hair between eyes", "blunt bangs", "side blunt bangs"]
119
+
120
+ eye_wear = ["glasses", "goggles", "sunglasses"]
121
+
122
+ eyeColor = ["hazel", "green", "brown", "black", "grey", "purple", "pink",
123
+ "red", "silver", "yellow", "sapphire", "turquoise", "amethyst", "aquamarine", "ruby", "coral",
124
+ "peach", "gold", "dark brown", "jade", "teal", "ice blue", "light blue", "blue", "grey-blue",
125
+ "amber"]
126
+
127
+ eye_others = ["eyelashes", "big eyes", "eyeliner", "bright eyes", "red eyeshadow", "beautiful detailed eyes"]
128
+
129
+ # 除了头饰,耳饰,颈饰,其他的饰物(手饰,腰饰,脚饰,胸饰,臀饰,脚饰)随机组合
130
+ hair_accessories = ["hair ornament", "hair tie", "hairband", "hair ribbon", "flower hair ornament",
131
+ "star hair ornament", "bell hair ornament", "butterfly hair ornament", "feather hair ornament",
132
+ "leaf hair ornament"]
133
+ neck_accessories = [
134
+ "neckerchief", "necklace", "chain necklace", "flower necklace", "pearl necklace", "pendant", "neck ribbon",
135
+ "neck tassel", "charm", "beads", "choker"]
136
+
137
+ earrings = ["hoop earrings", "stud earrings", "earclip", "earrings", "ear piercing"]
138
+
139
+ other_accessories = [
140
+ # 头
141
+ ["crown", "forehead jewel", "circlet", "head chain", "chain headband", "headpiece", "tiara"],
142
+ # hand
143
+ ["bracelet", "ring", "wedding ring", "red and gold bracelets"],
144
+ # arms
145
+ ["wristband", "arm belt", "wrist cuffs"],
146
+ # leg
147
+ ["leg belt", "leg ribbon", "leg chain", "leg wrap", "thigh strap", "thigh ribbon", "o-ring thigh strap", "leg ring",
148
+ "leg ornament"],
149
+ # foot
150
+ ["anklet", "ankle band", "ankle ring", "ankle buckle", "ankle nail", "ankle bracelet"],
151
+ # waist 腰, navel piercing表现优秀,其他几个效果差不多
152
+ ["waist ribbon", "waist jewelry", "waist chain", "waist rope", "navel piercing", "sash", "narrow waist"],
153
+ # 躯干Torso和其他
154
+ ["boutonniere", "brooch", "corsage", "suspenders", "tassel", ],
155
+ ]
156
+
157
+ shoes_boots = ['boots', 'ankle boots', 'armored boots', 'knee boots', 'high heel boots', 'lace-up boots',
158
+ 'rubber boots', 'thigh boots', 'cowboy boots', 'spurs']
159
+
160
+ shoes_high_heels = ["high heels"]
161
+
162
+ shoes_sandals = ['sandals', 'clog sandals', 'cross-laced sandals', 'flip-flops', 'gladiator sandals', 'geta', 'okobo',
163
+ 'waraji', 'zouri']
164
+
165
+ shoes_slippers = ['slippers', 'animal slippers', 'ballet slippers', 'crocs', 'uwabaki']
166
+
167
+ background_view = ["cityscapes", "landscape", "architecture", "buildings", "nature", "ruins", "outdoors", "indoors",
168
+ "messy room", "seascape", "shrine", "pagoda", "temple", "far out space", "east asian architecture",
169
+ "chinese garden"]
170
+
171
+ place = ["ancient greece", "alien planet", "spaceship", "american farm", "hell",
172
+ "high school", "locker room", "bedroom", "dungeon", "castle", "classroom", "bathroom",
173
+ "public park", "church", "closet", "toilet stall", "laboratory", "prison cell", "living room",
174
+ "bathtub", "library", "stage", "kitchen", "office", "infirmary",
175
+ "fitting room", "hotel room", "onsen", "pool", "skyscraper", "shrine", "rooftop", "restaurant",
176
+ "windmill", "hospital", "apartment", "field", "bridge", "poolside", "street", "path",
177
+ "garden", "ferris wheel", "otaku room", "conservatory", "fountain", "pier", "village", "beach", "cave",
178
+ "mountain", "forest", "countryside", "desert", "jungle", "ocean", "river", "lake", "waterfall",
179
+ "island"]
180
+
181
+ #### pose 种类比较多
182
+
183
+ pose_base = ["kneeling", "lying", "sitting", "standing"]
184
+ pose_base_child = {
185
+ "kneeling": ["on one knee"],
186
+ "lying": ['crossed legs', 'fetal position', 'on back', 'on side', 'on stomach'],
187
+ "sitting": ["butterfly sitting", "crossed legs", "figure four sitting", "indian style", "hugging own legs",
188
+ "lotus position", "seiza", "sitting on lap", "sitting on person", "straddling", "thigh straddling",
189
+ "upright straddle", "wariza", "yokozuwari"],
190
+ "standing": ["balancing", "crossed legs", "legs apart", "standing on one leg"]
191
+ }
192
+ pose_whole = ["all fours", "reclining", "squatting", "stretching", "yoga"]
193
+ pose_legs = ["crossed legs", "legs up", "leg up", "spread legs", "crossed ankles", "outstretched leg", "watson cross"]
194
+ pose_arms = ["arms behind back", "arms behind head", "arms up", "arm up", "arm support", "arm at side"]
195
+ pose_hands = ["hand on own ear", "hand on headwear", "hand on own chest", "hands on own hips", "hand on own shoulder",
196
+ "breast hold", "breast lift", "breasts squeezed together", "arm between breasts", "hand in bra",
197
+ "nipple tweak", "hands on ass", "hand between legs"]
198
+
199
+ # These tags don't imply nudity, but are related to some other tags above.
200
+ pose_touching_clothes = ['adjusting clothes', 'clothes grab', 'apron grab', 'collar grab', 'necktie grab', 'skirt grab',
201
+ 'collar tug', 'dress tug', 'shirt tug', 'skirt tug', 'wringing clothes']
202
+
203
+ jobs = ["catgirl", "young innocent", "slut", "princess", "succubus", "medusa",
204
+ "librarian", "schoolgirl", "milf", "prostitute", "kitsune", "kyuubi", "magic girl",
205
+ "mage", "demon", "angel", "student", "elf", "fairy", "fox girl", "goddess", 'alchemist',
206
+ 'bartender', 'butler', 'croupier', 'dentist', 'dj', 'doctor', 'dominatrix', 'flight attendant',
207
+ 'florist', 'geisha', 'maid', 'miko', 'nun', 'nurse', 'school nurse', 'office lady',
208
+ 'prostitution', 'sailor', 'stripper', 'teacher', 'waitress', 'witch', "mermaid", "vampire", "dancer",
209
+ "dominatrix", "female pervert", "gyaru", "idol"]
210
+
211
+ ######## Objects ##########
212
+
213
+ objects_list = [
214
+ # religion symbols
215
+ ["mandala", "srivatsa", "cross", "star and crescent", "star of david", "dharmachakra", "om", "ankh", "bagua",
216
+ "ichthys", "kaaba", "padma", "pentagram", "allah", "amsden’s circle"],
217
+ # flower and some nice objects
218
+ ["flower", "ice flower", "fire flower", "black lotus", "lunar tear", "silk flower", "petals", "lily", "poppy",
219
+ "rose", "tulip", "snowdrop", "dandelion"],
220
+ # element
221
+ ["ice", "fire", "water", "lightning", "wind"],
222
+ ["metal", "wood", "stone", "sand", "glass", "fur", "feather", "blood", "gold", "steam", "smoke", "crystal",
223
+ "bubble", "foam", "ash", "mercury"],
224
+ # chain
225
+ ["chain jewelry", "chain collar", "chain leash", "chainlink fence", "pinheadchains", "chain piercing"],
226
+ # 奇幻和元素
227
+ ["arcane", "celestial", "aether", "crystalline", "aurora", "ember", "sylph", "obsidian", "radiance", "verdant",
228
+ "ecliptic", "nebula"],
229
+ # 混乱
230
+ ["chaos", "disorderly", "pandemonium", "tumultuous", "havoc", "entropy", "disarray"],
231
+ # hell
232
+ ["hell", "abyssal", "infernal", "damnation", "purgatorial", "tartarean", "hades", "sheol", "perdition",
233
+ "underworldly", "gehenna"],
234
+ ]
235
+
236
+ suffix_beautiful = ["radiant", "ethereal", "luminous", "vivid", "glowing", "elemental", "celestial", "pristine",
237
+ "splendid", "enchanting", "charming", "elegant", "gorgeous", "aesthetic", "exquisite", "beautiful",
238
+ "whimsical", "fantastical", "enigmatic", "quixotic", "surreal", "peculiar", "imaginative"]
239
+
240
+ day_time = ["evening", "night", "morning", "sunrise", "sunset", "twilight", "moonlit night"]
241
+
242
+ weather = ["blizzard", "blue sky", "cloudy sky", "fog", "rain", "snow", "mist"]
243
+
244
+ body_status = ["wet", "sweat"]
245
+
246
+ body_with = ["zentangle", "entangled", "chained", "bondage", "handcuffs", "leash", "ribbon bondage", "braid"]
247
+
248
+ body_desc_list = ["perfect body", "slim body", "perfect female body", "slender body", "soaked body", "steaming body"]
249
+
250
+ details = ["elaborate", "ornate", "intricate", "detailed", "fine", "refined",
251
+ "complicated", "convoluted", "extensive", "exhaustive", "far-reaching", "informative",
252
+ "in-depth", "thorough", "step-by-step", "exact", "precise", "exquisite", "lavish",
253
+ "sumptuous", "opulent", "luxurious", "intricately designed", "grandiose", "stately",
254
+ "splendid", "magnificent", "precious", "dazzling", "imperceptible detail", "fantasy illustration"]
255
+
256
+ image_techniques = ["bloom", "bokeh", "caustics", "chiaroscuro", "diffraction spikes", "depth of field", "film grain",
257
+ "foreshortening", "gradient", "lens flare", "motion blur",
258
+ ]
259
+
260
+ light_effects = ["cinematic lighting", "soft lighting", "perfect lighting", "volumetric lighting", "dramatic lighting",
261
+ "natural lighting", "sunlight", "rim lighting", "studio lighting", "beautiful lighting",
262
+ "sidelighting", "light on face", "natural volumetric lighting and best shadows", "neon lights",
263
+ "vivid vibrant glowing neon toxic colors"]
264
+
265
+ color_list = ["colorful", "vibrant colors", "vivid colors", "bright colors", "pastel colors", "neon colors"]
266
+
267
+ ############ sexual collection ############
268
+
269
+ sexual_lingerie = ['lingerie', 'babydoll', 'bodystocking', 'bra', 'bustier', 'camisole', 'chemise', 'corset',
270
+ 'fishnets', 'garter straps', 'garter belt', 'lace', 'nightgown', 'panties', 'boyshort panties',
271
+ 'strapless bottom', 'teddy', 'thong', 'g-string', 'pearl thong']
272
+ sexual_crotchless = ['crotchless', 'crotchless panties', 'crotchless pants', 'crotchless swimsuit',
273
+ 'crotchless pantyhose', 'crotchless leotard', 'crotchless bloomers', 'crotchless buruma']
274
+ sexual_ass_cutout = ['ass cutout', 'assless swimsuit', 'backless panties', 'backless pants']
275
+ sexual_breastless = ['breastless clothes', 'nippleless clothes', 'cupless bikini', 'cupless bra']
276
+ sexual_miscellaneous = ["anal ball wear", "maebari", "pasties"]
277
+ sexual_common = ["revealing clothes", "see-through", "cleavage"]
278
+
279
+ ############ uncensored collection ############
280
+
281
+ uncensored_list = ["convenient leg", "hair over breasts", "hair over crotch", "hair over one breast", "covering face"]
282
+
283
+
284
+ ##### nsfw/sex collection ############
285
+
286
+ class SexActType(IntEnum):
287
+ SEX = 1
288
+ STIMULATION = 2
289
+ GROUP = 3
290
+ TENTACLES = 4
291
+
292
+
293
+ sex_act_stimulation = ["footjob", "feet", "armpit", "grinding", "kneepit", "paizuri", "thigh", "handjob",
294
+ "masturbation", "oral"]
295
+
296
+ sex_act_group = ["love train", "cooperative fellatio", "cooperative footjob", "cooperative breast smother", "orgy",
297
+ "reverse spitroast", "spitroast", "teamwork", "MMF threesome", "FFM threesome"]
298
+
299
+ sex_act_tentacles = ["consensual tentacles", "tentacle gagged", "tentaclejob", "tentacle sex",
300
+ "tentacles in thighhighs", "tentacles under clothes", "too many tentacles"]
301
+
302
+ sex_category = [
303
+ ["footjob", "feet", "frottage", "groping", "handjob", "masturbation", "tail", "oral", "hug and suck",
304
+ "licking testicle",
305
+ "sitting on face", "sitting on face"],
306
+ ["group sex", "bisexual", "bisexual female", "bisexual male", "daisy chain", "gangbang", "double penetration",
307
+ "triple penetration" "love train", "cooperative fellatio", "cooperative footjob", "multiple breast smother",
308
+ "orgy",
309
+ "reverse spitroast", "spitroast", "teamwork", "threesome"],
310
+ ["after sex", "after anal", "after buttjob", "after fellatio", "after fingering", "after frottage",
311
+ "after insertion", "after masturbation", "after oral", "after paizuri", "after rape", "after urethral",
312
+ "after vaginal", "afterglow", "clothed after sex", "anal", "double anal", "imminent anal", "pegging",
313
+ "triple anal", "clothed sex", "guided penetration", "happy sex", "imminent penetration", "implied sex",
314
+ "navel sex", "sex from behind", "skull fucking", "ear sex", "penis in eye", "tentacle sex", "underwater sex",
315
+ "vaginal", "after vaginal", "double vaginal", "imminent vaginal", "triple vaginal"],
316
+ ["cum", "bukkake", "cumdump", "cum bath", "cumdrip", "cum pool", "cum inflation", "cum in ass", "cum in clothes",
317
+ "cum in cup", "cum in mouth", "cum in throat", "cum on tongue", "cum in pussy", "cum in urethra", "cum on body",
318
+ "cum on hair", "cum on ass", "cum on pussy", "cum on breasts", "cum on fingers", "cum on clothes",
319
+ "cum on eyewear", "cum on food", "ejaculation", "ejaculating while penetrated", "pull out", "facial", "autofacial",
320
+ "felching", "gokkun"]
321
+ ]
322
+
323
+ sex_positions_reload = [
324
+ "view from behind, pov", "breast grab, pov", "grabbing own breast", "cheek bulge:1.4, fellatio", "lying, pov",
325
+ "lying, on side, pov", "lying, leg up, on side, pov",
326
+ "cowgirl position, pov", "squatting cowgirl position, pov",
327
+ "doggystyle, pov, from side, standing", "doggystyle, fellatio", "fellatio, pov, from side",
328
+ "imminent penetration, missionary, cowgirl position, squatting cowgirl position",
329
+ "Jack'O Challenge, sex from behind, deep penetration", "licking penis, tongue, open mouth",
330
+ "lying, leg lift, lef up, on side", "missionary, pov, legs up", "paizuri, penis",
331
+ "piledrive position", "prone bone, from side", "suspended congress", "standing, split legs, leg lift",
332
+ "x-ray cervix, cross-section, internal cumshot, cum",
333
+ "aftersex, ass, cum in pussy, cum in face, fellatio, missionary, buttjob",
334
+ "guided breast grab, pov, guiding hand, breast grab, holding another's wrist",
335
+ ]
336
+
337
+ sex_place = ["hotel", "bathtub", "bedroom", "classroom", "bathroom", "living room", "office"]
338
+
339
+ sex_man_type = ["1boy", "a tentacle monster", "a group of aliens", "a slime monster", "a water elemental",
340
+ "a black hole with tentacles"]
341
+
342
+ nude_list = [
343
+ # Any clothes
344
+ ["clothing aside", "clothes down", "open clothes", "revealing clothes", "see-through", "unbuttoned", "undressing",
345
+ "unfastened", "untied", "untying", "unzipped", "unzipping"],
346
+ # Misc / Specific exposures that could fit multiple categories below
347
+ ["bikini bottom aside", "bikini pull", "cape lift", "lifting covers", "open bikini", "open bra", "open kimono",
348
+ "robe slip", "strap lift", "strap pull", "strap slip", "swimsuit aside", "one-piece swimsuit pull", "open towel",
349
+ "towel slip", "male underwear pull"],
350
+ # Exposed chest
351
+ ["center opening", "open coat", "open collar", "dress pull", "open hoodie", "open jacket", "leotard pull",
352
+ "kimono down", "kimono pull", "pajamas pull", "open robe", "shirt aside", "topless male", "no shirt",
353
+ "open shirt", "shirt lift", "shirt pull", "shirt slip", "sweater lift", "top pull", "open vest"],
354
+ # Exposed breasts
355
+ ["breastless clothes", "one breast out", "breast slip", "breasts out", "bra lift", "no bra", "bra pull", "topless"],
356
+ # Exposed parts of breasts
357
+ ["backboob", "cleavage", "cleavage cutout", "sideboob", "underboob", "underboob cutout"],
358
+ # Exposed nipples
359
+ ["areola slip", "nipple slip", "nippleless clothes", "nipples", "nipple piercing", "nipple chain",
360
+ "nipple jewelry"],
361
+ # Exposed torso
362
+ ['back cutout', 'backless outfit', 'bare back', 'frontless outfit', 'midriff', 'navel cutout', 'side cutout',
363
+ 'sideless outfit', 'stomach cutout', 'waist cutout'],
364
+ # Focus on exposed legs or feet
365
+ ["barefoot", "bare legs", "dress lift", "hip vent", "leg cutout", "thigh cutout", "side slit", "no pants",
366
+ "shoe pull", "sock pull", "zettai ryouiki"],
367
+ # Focus on exposed ass or crotch
368
+ ["ass cutout", "bottomless", "buruma pull", "buruma aside", "clitoris slip", "clothing aside", "crotch cutout",
369
+ "dress aside", "leotard aside", "hakama pull", "kimono lift", "yukata lift", "no panties", "panties aside",
370
+ "pants pull", "open pants", "pants pull", "panty lift", "panty pull", "pussy peek", "pantyhose pull",
371
+ "shorts aside", "shorts, open", "shorts pull", "skirt around one leg", "skirt around ankles", "open skirt",
372
+ "skirt pull", "skirt lift", "swimsuit aside", "bikini bottom aside"],
373
+ # Dressing / Covering body parts
374
+ ['covering', 'covering anus', 'covering ass', 'covering breasts', 'covering crotch', 'covering head',
375
+ 'covering own ears', 'covering one eye', 'covering own eyes', 'covering face', 'covering mouth', 'nude cover'],
376
+ ]
377
+
378
+ # Specific clothes or ornaments being worn as exceptions
379
+ nude_clothes = ["clothesnaked apron", "nearly naked apron", "naked bandage", "naked cape", "naked capelet",
380
+ "naked cloak", "naked coat", "naked hoodie", "naked jacket", "naked overalls",
381
+ "naked ribbon", "naked robe", "naked scarf", "naked sheet", "naked shirt", "naked suspenders",
382
+ "naked tabard", "naked towel", "underwear only"]
383
+
384
+ panties_list = ["bow panties", "crotch seam", "frilled panties", "side-tie panties", "string panties",
385
+ "stained panties", "wet panties", "backless panties", "c-string", "crotchless panties",
386
+ "loose panties", "micro panties", "lowleg panties", "highleg panties"]
387
+
388
+
389
+ def get_realistic_prompt():
390
+ if get_config_value_by_key("is_realistic"):
391
+ return "(realistic, photorealistic), "
392
+ else:
393
+ return ""
394
+
395
+
396
+ def get_angle_and_image_composition():
397
+ current_prompt = ""
398
+ if check_config_value_is_not_none("angle"):
399
+ current_prompt = get_assignment_prompt("angle")
400
+ else:
401
+ if get_config_value_by_key("dynamic_mode"):
402
+ current_prompt = current_prompt + "dynamic angle, "
403
+ else:
404
+ current_prompt = current_prompt \
405
+ + get_standard_prompt(angle)
406
+ if check_chance(0.7):
407
+ current_prompt = current_prompt + get_standard_prompt(depth)
408
+
409
+ if check_config_value_is_not_none("body_framing"):
410
+ current_prompt = current_prompt \
411
+ + get_assignment_prompt("body_framing")
412
+ else:
413
+ current_prompt = current_prompt \
414
+ + get_standard_prompt(body_framing)
415
+
416
+ return current_prompt
417
+
418
+
419
+ def get_focus_prompt():
420
+ current_prompt = ""
421
+ if check_config_value_is_not_none("assign_focus_on"):
422
+ current_prompt = get_assignment_prompt("assign_focus_on")
423
+ elif get_config_value_by_key("add_focus"):
424
+ current_prompt = current_prompt \
425
+ + get_standard_prompt(focus)
426
+ return current_prompt
427
+
428
+
429
+ def get_girl_desc_prompt():
430
+ if check_config_value_is_not_none("assign_girl_description"):
431
+ return get_assignment_prompt("assign_girl_description")
432
+
433
+ girl_cnt = get_config_value_by_key("girl_cnt")
434
+ prompt = "1girl, "
435
+ if girl_cnt == 0:
436
+ return ""
437
+ elif girl_cnt == 1:
438
+ pass
439
+ elif 1 < girl_cnt <= 5:
440
+ prompt = f"{girl_cnt}girls, "
441
+ elif girl_cnt == 6:
442
+ prompt = "6+girls, "
443
+ elif girl_cnt > 6:
444
+ prompt = "multiple girls, "
445
+ if get_config_value_by_key("add_girl_beautyful"):
446
+ return prompt + get_random_from_list(beautifier) + " girl, "
447
+
448
+ return prompt
449
+
450
+
451
+ def get_face_expression():
452
+ expression_type = FaceExpression.SMILE
453
+ expression_index = 3
454
+ current_prompt = ""
455
+ if check_config_value_is_not_none("assign_expression"):
456
+ return get_assignment_prompt("assign_expression")
457
+
458
+ if check_config_value_is_not_none("face_expression"):
459
+ expression_type = get_config_value_by_key("face_expression")
460
+
461
+ if expression_type == FaceExpression.RANDOM:
462
+ expression_index = random.randint(1, 4)
463
+ else:
464
+ expression_index = expression_type
465
+
466
+ if expression_index == FaceExpression.SMILE:
467
+ current_prompt = current_prompt \
468
+ + get_standard_prompt(expression_smile)
469
+ elif expression_index == FaceExpression.EMOTIONS:
470
+ current_prompt = current_prompt \
471
+ + get_standard_prompt(expression_emo)
472
+ elif expression_index == FaceExpression.SEXUAL:
473
+ current_prompt = current_prompt \
474
+ + get_standard_prompt(expression_sexual)
475
+ elif expression_index == FaceExpression.SMUG:
476
+ current_prompt = current_prompt \
477
+ + get_standard_prompt(expression_smug)
478
+
479
+ return current_prompt
480
+
481
+
482
+ def get_pose_prompt():
483
+ if check_config_value_is_not_none("assign_pose"):
484
+ return get_assignment_prompt("assign_pose")
485
+
486
+ if get_config_value_by_key("dynamic_mode"):
487
+ return "dynamic pose, "
488
+
489
+ current_prompt = ""
490
+ pose_type = PoseType.BASE
491
+
492
+ if check_config_value_is_not_none("pose_type"):
493
+ pose_type = get_config_value_by_key("pose_type")
494
+
495
+ if pose_type == PoseType.BASE:
496
+ base_pose = get_random_from_list(pose_base)
497
+ current_prompt = current_prompt \
498
+ + base_pose + ", "
499
+
500
+ if pose_base_child[base_pose] is not None and check_chance(0.5):
501
+ base_child_list = pose_base_child[base_pose]
502
+ base_child = get_random_from_list(base_child_list)
503
+ current_prompt = current_prompt \
504
+ + base_child + ", "
505
+ elif pose_type == PoseType.WHOLE:
506
+ current_prompt = current_prompt + get_standard_prompt(pose_whole)
507
+
508
+ sub_index = random.randint(-1, 3)
509
+ if sub_index == -1:
510
+ pass
511
+ elif sub_index == 0:
512
+ current_prompt = current_prompt + get_standard_prompt(pose_legs)
513
+ elif sub_index == 1:
514
+ current_prompt = current_prompt + get_standard_prompt(pose_arms)
515
+ elif sub_index == 2:
516
+ current_prompt = current_prompt + get_standard_prompt(pose_hands)
517
+ elif sub_index == 3:
518
+ current_prompt = current_prompt + get_standard_prompt(pose_touching_clothes)
519
+
520
+ return current_prompt
521
+
522
+
523
+ def get_legwear_prompt():
524
+ current_prompt_leg = ""
525
+
526
+ if check_config_value_is_not_none("assign_leg_wear"):
527
+ current_prompt_leg = "("
528
+ if check_config_value_is_not_none("leg_wear_color"):
529
+ current_prompt_leg = current_prompt_leg \
530
+ + get_config_value_by_key("leg_wear_color") + " and "
531
+ current_prompt_leg = current_prompt_leg + get_random_from_list(legwear_style) + " "
532
+ current_prompt_leg = current_prompt_leg \
533
+ + get_config_value_by_key("assign_leg_wear") \
534
+ + ":{:.2f}".format(make_prompt_strong_scale) \
535
+ + "), "
536
+ # return get_assignment_prompt("assign_leg_wear")
537
+ return current_prompt_leg
538
+
539
+ legwear_type = LegWearType.PANTYHOSE
540
+ has_assign_color = False
541
+
542
+ if check_config_value_is_not_none("leg_wear"):
543
+ legwear_type = get_config_value_by_key("leg_wear")
544
+
545
+ if legwear_type == LegWearType.ASNULL:
546
+ return ""
547
+ elif legwear_type == LegWearType.RANDON:
548
+ legwear_type = get_random_from_list(
549
+ [LegWearType.PANTYHOSE, LegWearType.BARE, LegWearType.THIGHHIGHS, LegWearType.KNEEHIGHS,
550
+ LegWearType.OVERKNEEHIGHS, LegWearType.SOCKS])
551
+
552
+ current_prompt_leg = current_prompt_leg + "("
553
+ if legwear_type != LegWearType.BARE:
554
+ if check_config_value_is_not_none("leg_wear_color"):
555
+ current_prompt_leg = current_prompt_leg \
556
+ + get_config_value_by_key("leg_wear_color") \
557
+ + " and "
558
+ has_assign_color = True
559
+ else:
560
+ if get_config_value_by_key("disable_all_color") is False:
561
+ current_prompt_leg = current_prompt_leg \
562
+ + get_random_from_list(legwear_color) + " and "
563
+
564
+ if legwear_type != LegWearType.BARE:
565
+ current_prompt_leg = current_prompt_leg + get_random_from_list(legwear_style) + " "
566
+
567
+ if legwear_type == LegWearType.SOCKS:
568
+ current_prompt_leg = current_prompt_leg \
569
+ + "socks"
570
+ elif legwear_type == LegWearType.PANTYHOSE:
571
+ current_prompt_leg = current_prompt_leg \
572
+ + "pantyhose"
573
+ elif legwear_type == LegWearType.KNEEHIGHS:
574
+ current_prompt_leg = current_prompt_leg \
575
+ + "kneehighs"
576
+ elif legwear_type == LegWearType.OVERKNEEHIGHS:
577
+ current_prompt_leg = current_prompt_leg \
578
+ + "over-kneehighs"
579
+ elif legwear_type == LegWearType.THIGHHIGHS:
580
+ current_prompt_leg = current_prompt_leg \
581
+ + "thighhighs"
582
+ elif legwear_type == LegWearType.BARE:
583
+ current_prompt_leg = current_prompt_leg \
584
+ + "bare legs"
585
+
586
+ if has_assign_color and legwear_type != LegWearType.BARE:
587
+ current_prompt_leg = current_prompt_leg \
588
+ + ":{:.2f}".format(make_prompt_strong_scale)
589
+
590
+ current_prompt_leg = current_prompt_leg + "), "
591
+
592
+ return current_prompt_leg
593
+
594
+
595
+ def get_shoes_prompt():
596
+ current_prompt = ""
597
+ if check_config_value_is_not_none("assign_shoes"):
598
+ current_prompt = "("
599
+ if check_config_value_is_not_none("shoes_color"):
600
+ current_prompt = current_prompt + get_config_value_by_key("shoes_color") + " "
601
+ current_prompt = current_prompt \
602
+ + get_config_value_by_key("assign_shoes") \
603
+ + ":" \
604
+ + "{:.2f}".format(make_prompt_strong_scale) \
605
+ + "),"
606
+
607
+ return current_prompt
608
+
609
+ has_assign_color = False
610
+
611
+ shoes_type = FootWearType.HIGHHEELS
612
+ if check_config_value_is_not_none("shoes_type"):
613
+ shoes_type = get_config_value_by_key("shoes_type")
614
+
615
+ if shoes_type == FootWearType.ASNULL:
616
+ return ""
617
+
618
+ if shoes_type != FootWearType.BARE:
619
+ if check_config_value_is_not_none("shoes_color"):
620
+ current_prompt = current_prompt \
621
+ + "(" + get_config_value_by_key("shoes_color") \
622
+ + " "
623
+ has_assign_color = True
624
+
625
+ if shoes_type == FootWearType.HIGHHEELS:
626
+ current_prompt = current_prompt \
627
+ + get_random_from_list(shoes_high_heels)
628
+ elif shoes_type == FootWearType.BOOTS:
629
+ current_prompt = current_prompt \
630
+ + get_random_from_list(shoes_boots)
631
+ elif shoes_type == FootWearType.SANDALS:
632
+ current_prompt = current_prompt \
633
+ + get_random_from_list(shoes_sandals)
634
+ elif shoes_type == FootWearType.SLIPPERS:
635
+ current_prompt = current_prompt \
636
+ + get_random_from_list(shoes_slippers)
637
+ elif shoes_type == FootWearType.BARE:
638
+ current_prompt = current_prompt \
639
+ + "bare foot"
640
+
641
+ if has_assign_color:
642
+ current_prompt = current_prompt \
643
+ + ":{:.2f}".format(make_prompt_strong_scale) \
644
+ + "), "
645
+ else:
646
+ current_prompt = current_prompt + ", "
647
+ return current_prompt
648
+
649
+
650
+ def get_ribbon_others():
651
+ current_ribbon_others = ""
652
+ if get_config_value_by_key("cloth_trim"):
653
+ current_ribbon_others = current_ribbon_others + get_standard_prompt(clothes_trim, True)
654
+ return current_ribbon_others
655
+
656
+
657
+ def get_body_with_prompt():
658
+ if get_config_value_by_key("body_with"):
659
+ return get_standard_prompt(body_with, True)
660
+ else:
661
+ return ""
662
+
663
+
664
+ def get_body_status_prompt():
665
+ if get_config_value_by_key("body_status"):
666
+ if get_config_value_by_key("sex_mode") or get_config_value_by_key("nsfw_type") != NSFWType.NOTNSFW:
667
+ body_status.append("cum on body")
668
+ return get_standard_prompt(body_status, True)
669
+ else:
670
+ return get_standard_prompt(body_status, True)
671
+ else:
672
+ return ""
673
+
674
+
675
+ def get_body_description_prompt():
676
+ current_prompt = ""
677
+ if get_config_value_by_key("body_description"):
678
+ current_prompt = current_prompt + get_standard_prompt(body_desc_list)
679
+ current_prompt = current_prompt + "narrow waist, chest jewel, navel, "
680
+ return current_prompt
681
+
682
+
683
+ def get_accessories_mix_prompt():
684
+ random_times = 1
685
+ random_times = get_config_value_by_key("accessories_random_tims")
686
+ if random_times <= 0:
687
+ return ""
688
+
689
+ current_accessories_mix = ""
690
+ is_sex = get_config_value_by_key("sex_mode")
691
+ is_nude = get_config_value_by_key("nsfw_type") == NSFWType.NUDE
692
+
693
+ random_list = other_accessories.copy()
694
+
695
+ if is_sex is not True:
696
+ current_accessories_mix = "("
697
+ if is_nude or is_sex:
698
+ random_list.append(["nipple chain", "nipple piercing"])
699
+
700
+ if random_times > len(random_list):
701
+ random_times = len(random_list)
702
+ select_index_list = random_list_no_repeat_number(len(random_list), random_times)
703
+ for v in select_index_list:
704
+ current_accessories_mix = current_accessories_mix \
705
+ + get_standard_prompt(random_list[v - 1])
706
+
707
+ current_accessories_mix = remove_comma_space(current_accessories_mix)
708
+
709
+ if is_sex:
710
+ current_accessories_mix = current_accessories_mix + ", "
711
+ else:
712
+ current_accessories_mix = current_accessories_mix + "), "
713
+ return current_accessories_mix
714
+
715
+
716
+ def get_objects_mix_prompt():
717
+ random_times = get_config_value_by_key("object_random_times")
718
+ if random_times > len(objects_list):
719
+ random_times = len(objects_list)
720
+ current_prompt = ""
721
+
722
+ if random_times <= 0:
723
+ return current_prompt
724
+ else:
725
+ select_index_list = random_list_no_repeat_number(len(objects_list), random_times)
726
+ for v in select_index_list:
727
+ current_prompt = current_prompt \
728
+ + get_standard_prompt(objects_list[v - 1])
729
+ return current_prompt
730
+
731
+
732
+ def get_suffix_beautiful_prompt():
733
+ random_times = get_config_value_by_key("suffix_words_random_times")
734
+ current_prompt = ""
735
+ if random_times <= 0:
736
+ return current_prompt
737
+ else:
738
+ if random_times > len(suffix_beautiful):
739
+ random_times = len(suffix_beautiful)
740
+ select_index_list = random_list_no_repeat_number(len(suffix_beautiful), random_times)
741
+ for v in select_index_list:
742
+ current_prompt = current_prompt \
743
+ + suffix_beautiful[v - 1] + ", "
744
+ return current_prompt
745
+
746
+
747
+ def get_breasts_size_prompt():
748
+ if check_config_value_is_not_none("breasts_size"):
749
+ size_value = get_config_value_by_key("breasts_size")
750
+ if size_value == "nil" or size_value == "null" or size_value == "none":
751
+ return ""
752
+ return get_config_value_by_key("breasts_size") + " breasts, "
753
+ else:
754
+ return get_standard_prompt(bSize)
755
+
756
+
757
+ def get_panties_prompt():
758
+ current_prompt = ""
759
+
760
+ if get_config_value_by_key("panties"):
761
+ if check_config_value_is_not_none("assign_panties"):
762
+ current_prompt = get_assignment_prompt("assign_panties")
763
+ else:
764
+ current_prompt = get_standard_prompt(panties_list)
765
+ return current_prompt
766
+
767
+
768
+ def get_nsfw_prompt():
769
+ nsfw = ""
770
+ if get_config_value_by_key("is_nsfw"):
771
+ nsfw = "(nsfw), "
772
+ return nsfw
773
+
774
+
775
+ def get_uncensored_prompt():
776
+ is_uncensored = get_config_value_by_key("is_uncensored")
777
+ current_prompt = ""
778
+ if is_uncensored:
779
+ current_prompt = "uncensored, "
780
+ current_prompt = current_prompt + get_standard_prompt(uncensored_list)
781
+
782
+ return current_prompt
783
+
784
+
785
+ def get_body_wear_prompt():
786
+ body_wear_output = get_pose_prompt()
787
+
788
+ nsfw_type = NSFWType.NOTNSFW
789
+ body_wear = BodyWearType.RANDOM
790
+ top_wear = TopWearType.RANDOM
791
+ bottom_wear = BottomWearType.RANDOM
792
+
793
+ if check_config_value_is_not_none("nsfw_type"):
794
+ nsfw_type = get_config_value_by_key("nsfw_type")
795
+
796
+ if check_config_value_is_not_none("body_wear"):
797
+ body_wear = get_config_value_by_key("body_wear")
798
+ if check_config_value_is_not_none("top_wear"):
799
+ top_wear = get_config_value_by_key("top_wear")
800
+ if check_config_value_is_not_none("bottom_wear"):
801
+ bottom_wear = get_config_value_by_key("bottom_wear")
802
+
803
+ if nsfw_type == NSFWType.NUDE:
804
+ body_wear_output = get_body_nude_prompt(body_wear_output)
805
+ elif nsfw_type == NSFWType.SEXUAL:
806
+ body_wear_output = get_body_sexual_prompt(body_wear_output)
807
+ else:
808
+ if check_config_value_is_not_none("assign_body_clothes"):
809
+ return body_wear_output + get_assignment_prompt("assign_body_clothes")
810
+
811
+ i = int(body_wear)
812
+ if i == 6:
813
+ i = random.randint(1, 5)
814
+
815
+ if i == BodyWearType.DRESS:
816
+ body_wear_output = body_wear_output + "("
817
+ if get_config_value_by_key("disable_all_color") is True:
818
+ body_wear_output = body_wear_output \
819
+ + get_random_from_list(dress_type) \
820
+ + "), "
821
+ else:
822
+ body_wear_output = body_wear_output \
823
+ + get_random_from_list(dress_color) \
824
+ + " and " \
825
+ + get_random_from_list(dress_type) \
826
+ + "), "
827
+ elif i == BodyWearType.UNIFORM:
828
+ body_wear_output = body_wear_output \
829
+ + get_standard_prompt(uniforms)
830
+ elif i == BodyWearType.BODYSUIT:
831
+ body_wear_output = body_wear_output \
832
+ + get_standard_prompt(bodysuits)
833
+ elif i == BodyWearType.TRADITIONAL:
834
+ body_wear_output = body_wear_output \
835
+ + get_standard_prompt(traditional_clothes)
836
+ elif i == BodyWearType.CUSTOM:
837
+ body_wear_output = body_wear_output \
838
+ + get_top_wear_prompt(top_wear) \
839
+ + get_bottom_wear_prompt(bottom_wear)
840
+
841
+ body_wear_output = body_wear_output \
842
+ + get_body_description_prompt() \
843
+ + get_legwear_prompt() \
844
+ + get_body_with_prompt() \
845
+ + get_ribbon_others() \
846
+ + get_shoes_prompt() \
847
+ + get_panties_prompt() \
848
+ + get_focus_prompt()
849
+
850
+ return body_wear_output
851
+
852
+
853
+ def get_body_sexual_prompt(body_wear_output):
854
+ # convert sexual_common list to sting with ", "
855
+ sexual_common_str = "("
856
+ sexual_tmp_list = [sexual_lingerie, sexual_crotchless, sexual_ass_cutout, sexual_breastless,
857
+ sexual_miscellaneous]
858
+ sexual_common_str = sexual_common_str + get_random_from_list(sexual_common) + ", "
859
+ body_wear_output = body_wear_output + sexual_common_str
860
+ sexual_random_times = len(sexual_tmp_list)
861
+ sexual_random_times = get_config_value_by_key("sexual_list_random_index_times")
862
+ if sexual_random_times > len(sexual_tmp_list):
863
+ sexual_random_times = len(sexual_tmp_list)
864
+ elif sexual_random_times <= 0:
865
+ sexual_random_times = 0
866
+ if sexual_random_times > 0:
867
+ select_list = random_list_no_repeat_number(len(sexual_tmp_list), sexual_random_times)
868
+ for v in select_list:
869
+ body_wear_output = body_wear_output + get_standard_prompt(sexual_tmp_list[v - 1])
870
+ body_wear_output = remove_comma_space(body_wear_output)
871
+ body_wear_output = body_wear_output + "), "
872
+ return body_wear_output
873
+
874
+
875
+ def get_body_nude_prompt(body_wear_output):
876
+ if get_config_value_by_key("nude_strong"):
877
+ body_wear_output = body_wear_output + "(nipples, pussy, "
878
+ else:
879
+ body_wear_output = body_wear_output + "("
880
+ nude_random_times = 1
881
+ body_wear_output = body_wear_output + \
882
+ "completely nude, " + \
883
+ get_standard_prompt(nude_clothes, False, True)
884
+ if get_config_value_by_key("is_simple_nude") is not True:
885
+ body_wear_output = body_wear_output \
886
+ + get_standard_prompt(nude_list[0]) \
887
+ + get_standard_prompt(pose_touching_clothes)
888
+ nude_random_times = get_config_value_by_key("nude_list_random_index_times")
889
+ if nude_random_times > len(nude_list) - 1:
890
+ nude_random_times = len(nude_list) - 1
891
+ elif nude_random_times <= 0:
892
+ nude_random_times = 0
893
+ if nude_random_times > 0:
894
+ select_list = random_list_no_repeat_number(len(nude_list) - 1, nude_random_times)
895
+ for v in select_list:
896
+ body_wear_output = body_wear_output + get_standard_prompt(nude_list[v])
897
+ body_wear_output = remove_comma_space(body_wear_output)
898
+ body_wear_output = body_wear_output + "), "
899
+ return body_wear_output
900
+
901
+
902
+ def get_top_wear_prompt(type_value):
903
+ top_wear_output = ""
904
+ """
905
+ SHIRTS = 1
906
+ COAT = 2
907
+ SWEATER = 3
908
+ OTHERS = 4
909
+ RANDOM = 5
910
+ """
911
+ index = int(type_value)
912
+ if index == 5:
913
+ index = random.randint(1, 4)
914
+ if index == TopWearType.SHIRTS:
915
+ top_wear_output = get_standard_prompt(top_shirts)
916
+ elif index == TopWearType.COAT:
917
+ top_wear_output = get_standard_prompt(top_coat)
918
+ elif index == TopWearType.SWEATER:
919
+ top_wear_output = get_standard_prompt(top_sweater)
920
+ elif index == TopWearType.OTHERS:
921
+ top_wear_output = get_standard_prompt(top_others)
922
+
923
+ return top_wear_output
924
+
925
+
926
+ def get_bottom_wear_prompt(type_value):
927
+ bottom_wear_output = ""
928
+ """
929
+ PANTS = 1
930
+ SKIRT = 2
931
+ SHORT = 3
932
+ RANDOM = 4
933
+ """
934
+ index = int(type_value)
935
+ if index == 4:
936
+ index = random.randint(1, 3)
937
+ if index == BottomWearType.SHORT:
938
+ bottom_wear_output = get_standard_prompt(bottom_shorts)
939
+ bottom_wear_output = bottom_wear_output \
940
+ + get_legwear_prompt()
941
+ elif index == BottomWearType.SKIRT:
942
+ bottom_wear_output = get_standard_prompt(bottom_skirts)
943
+ bottom_wear_output = bottom_wear_output \
944
+ + get_legwear_prompt()
945
+ elif index == BottomWearType.PANTS:
946
+ bottom_wear_output = get_standard_prompt(bottom_pants)
947
+ return bottom_wear_output
948
+
949
+
950
+ def get_hair_prompt():
951
+ prompt = ""
952
+ has_hair_length = get_config_value_by_key("add_hair_length")
953
+ if has_hair_length:
954
+ prompt = prompt + get_random_from_list(hairLength)
955
+
956
+ hair_assign = get_assignment_prompt("hair_color")
957
+ if hair_assign == "":
958
+ prompt = ""
959
+ elif "r" in hair_assign or "random" in hair_assign:
960
+ if has_hair_length:
961
+ prompt = prompt + " and " + get_random_from_list(hairColor)
962
+ else:
963
+ prompt = prompt + get_random_from_list(hairColor)
964
+ else:
965
+ if has_hair_length:
966
+ prompt = prompt + " and " + get_config_value_by_key("hair_color") + " hair"
967
+ else:
968
+ prompt = prompt + get_config_value_by_key("hair_color") + " hair"
969
+
970
+ return prompt
971
+
972
+
973
+ def get_hair_eyes_prompt():
974
+ current_prompt = ""
975
+ current_prompt = get_face_expression() \
976
+ + get_breasts_size_prompt() \
977
+ + get_hair_prompt()
978
+
979
+ if get_config_value_by_key("add_hair_style"):
980
+ current_prompt = current_prompt \
981
+ + get_standard_prompt(hair_style)
982
+ if check_chance(0.6):
983
+ current_prompt = current_prompt + get_standard_prompt(hair_others)
984
+
985
+ if get_config_value_by_key("enable_eye_color"):
986
+ current_prompt = current_prompt \
987
+ + get_random_from_list(eyeColor) \
988
+ + " eyes, "
989
+ if check_chance(0.5):
990
+ current_prompt = current_prompt + get_standard_prompt(eye_others)
991
+ return current_prompt
992
+
993
+
994
+ def get_job_prompt():
995
+ if check_config_value_is_not_none("assign_profession"):
996
+ return get_assignment_prompt("assign_profession")
997
+ else:
998
+ return get_random_from_list(jobs) + ", "
999
+
1000
+
1001
+ def get_place_prompt():
1002
+ if check_config_value_is_not_none("place"):
1003
+ return get_assignment_prompt("place")
1004
+ else:
1005
+ if get_config_value_by_key("sex_mode"):
1006
+ return get_standard_prompt(sex_place, False, True)
1007
+ else:
1008
+ if check_chance(0.5):
1009
+ return get_standard_prompt(place)
1010
+ else:
1011
+ return get_standard_prompt(background_view)
1012
+
1013
+
1014
+ def get_user_additional_prompt():
1015
+ target_prompt = ""
1016
+ if check_config_value_is_not_none("additional_prompt"):
1017
+ target_prompt = target_prompt + get_assignment_prompt("additional_prompt")
1018
+ return target_prompt
1019
+
1020
+
1021
+ def get_starting_prompt():
1022
+ target_prompt = ""
1023
+ if get_config_value_by_key("use_starting"):
1024
+ # masterpiece,
1025
+ target_prompt = "best quality, absurdres, "
1026
+ return target_prompt
1027
+
1028
+
1029
+ def get_colors_prompt():
1030
+ if get_config_value_by_key("add_colors"):
1031
+ return get_standard_prompt(color_list)
1032
+ return ""
1033
+
1034
+
1035
+ def get_bottom_prompt():
1036
+ target_prompt = ""
1037
+ if get_config_value_by_key("enable_light_effect"):
1038
+ target_prompt = target_prompt + get_standard_prompt(light_effects)
1039
+ if get_config_value_by_key("enable_image_tech"):
1040
+ target_prompt = target_prompt + get_standard_prompt(image_techniques)
1041
+
1042
+ if get_config_value_by_key("add_hair_accessories"):
1043
+ target_prompt = target_prompt + get_standard_prompt(hair_accessories)
1044
+ if get_config_value_by_key("add_neck_accessories"):
1045
+ target_prompt = target_prompt + get_standard_prompt(neck_accessories)
1046
+ if get_config_value_by_key("add_earrings"):
1047
+ target_prompt = target_prompt + get_standard_prompt(earrings)
1048
+ if get_config_value_by_key("add_detail_suffix"):
1049
+ target_prompt = target_prompt + "jewelry, ultra-detailed, 8k, "
1050
+
1051
+ if get_config_value_by_key("enable_day_weather"):
1052
+ target_prompt = target_prompt \
1053
+ + get_standard_prompt(day_time) \
1054
+ + get_standard_prompt(weather)
1055
+
1056
+ target_prompt = target_prompt \
1057
+ + get_body_status_prompt() \
1058
+ + get_accessories_mix_prompt() \
1059
+ + get_objects_mix_prompt() \
1060
+ + get_suffix_beautiful_prompt()
1061
+
1062
+ if get_config_value_by_key("has_girl_desc"):
1063
+ # finely detailed beautiful eyes and detailed face
1064
+ target_prompt = target_prompt + "extremely detailed eyes and face, extremely delicate and beautiful girl, beautiful face, "
1065
+
1066
+ target_prompt = target_prompt + get_colors_prompt()
1067
+
1068
+ return target_prompt
1069
+
1070
+
1071
+ ########## Sex Mode ##########
1072
+ def get_s_girl_desc():
1073
+ return "1 " + get_random_from_list(beautifier) + " girl, "
1074
+
1075
+
1076
+ def get_s_man_type_prompt():
1077
+ if get_config_value_by_key("man_random") is not True:
1078
+ return "1boy, "
1079
+ else:
1080
+ return get_standard_prompt(sex_man_type)
1081
+
1082
+
1083
+ def get_s_position():
1084
+ current_prompt = "("
1085
+ current_prompt = current_prompt + get_random_from_list(sex_positions_reload) + "), "
1086
+ return current_prompt
1087
+
1088
+
1089
+ def get_s_act_sex_prompt():
1090
+ prompt = get_realistic_prompt() \
1091
+ + get_s_position() \
1092
+ + "(" + get_s_girl_desc() \
1093
+ + get_s_man_type_prompt() \
1094
+ + "sex), " \
1095
+ + "vaginal, penis, blush, pussy, pussy juice, tong, penetration, " \
1096
+ + get_s_bottom_prompt()
1097
+
1098
+ return prompt
1099
+
1100
+
1101
+ def get_s_act_group_prompt():
1102
+ prompt = get_realistic_prompt() + "("
1103
+ r_value = get_random_from_list(sex_act_group)
1104
+ prompt = prompt \
1105
+ + r_value \
1106
+ + ", group sex), " \
1107
+ + get_s_position() \
1108
+ + "vaginal, penis, blush, pussy, pussy juice, tong, penetration, " \
1109
+ + get_s_bottom_prompt()
1110
+ return prompt
1111
+
1112
+
1113
+ def get_s_act_tentacles_prompt():
1114
+ prompt = get_realistic_prompt() + \
1115
+ "(" + get_s_girl_desc() \
1116
+ + get_random_from_list(sex_act_tentacles) + ", " \
1117
+ + get_s_position() \
1118
+ + ")," \
1119
+ + "vaginal, blush, pussy, pussy juice, " \
1120
+ + get_s_bottom_prompt()
1121
+
1122
+ return prompt
1123
+
1124
+
1125
+ def get_s_bottom_prompt():
1126
+ return get_standard_prompt(expression_sexual) \
1127
+ + get_breasts_size_prompt() \
1128
+ + get_standard_prompt(hair_accessories) \
1129
+ + get_standard_prompt(neck_accessories) \
1130
+ + get_standard_prompt(earrings) \
1131
+ + get_place_prompt() \
1132
+ + get_legwear_prompt() \
1133
+ + get_panties_prompt() \
1134
+ + get_ribbon_others() \
1135
+ + get_shoes_prompt() \
1136
+ + get_accessories_mix_prompt() \
1137
+ + "nude, jewelry, chain, ribbon, best quality, absurdres, ultra-detailed, 8k, " \
1138
+ + "\n\n"
1139
+
1140
+
1141
+ def get_assignment_prompt(the_assignment):
1142
+ the_value = get_config_value_by_key(the_assignment).lower()
1143
+ # check the_value, if is like nil, null, none, then return ""
1144
+ if the_value == "nil" or the_value == "null" or the_value == "none" or the_value == "空":
1145
+ return ""
1146
+ else:
1147
+ return "(" + get_config_value_by_key(the_assignment) + "), "
1148
+
1149
+
1150
+ def get_standard_prompt(target_list, strong=False, chance_toggle=False):
1151
+ if strong:
1152
+ return "(" \
1153
+ + get_random_from_list(target_list) \
1154
+ + ":{:.2f}".format(random.uniform(1.1, 1.21)) \
1155
+ + "), "
1156
+ else:
1157
+ if chance_toggle:
1158
+ if check_chance(0.5):
1159
+ return get_random_from_list(target_list) + ", "
1160
+ else:
1161
+ return ""
1162
+ else:
1163
+ return get_random_from_list(target_list) + ", "
1164
+
1165
+
1166
+ def get_random_from_list(list):
1167
+ i = random.randint(0, len(list) - 1)
1168
+ return list[i]
1169
+
1170
+
1171
+ def check_chance(threshold=0.5):
1172
+ probability = random.random()
1173
+ # print(probability)
1174
+
1175
+ # 如果随机数大于或者阈值,执行操作A
1176
+ if probability < threshold:
1177
+ return False
1178
+ else:
1179
+ return True
1180
+
1181
+
1182
+ def random_list_no_repeat_number(max_int, count):
1183
+ result = []
1184
+ nums = list(range(1, max_int + 1))
1185
+ for _ in range(count):
1186
+ idx = random.randint(0, len(nums) - 1)
1187
+ result.append(nums.pop(idx))
1188
+ return result
1189
+
1190
+
1191
+ def remove_comma_space(string):
1192
+ index = string.rfind(", ")
1193
+ if index != -1:
1194
+ string = string[:index] + string[index + 2:]
1195
+ return string
1196
+
1197
+
1198
+ def check_config_value_is_not_none(the_key):
1199
+ the_value = project_config[the_key]
1200
+ if the_value is not None:
1201
+ # check if the value is string, if it is, check if it is not empty
1202
+ # check if the value is list, if it is, check if it is not empty
1203
+ if isinstance(the_value, str):
1204
+ if the_value != "":
1205
+ return True
1206
+ else:
1207
+ return False
1208
+ elif isinstance(the_value, list):
1209
+ if len(the_value) > 0:
1210
+ return True
1211
+ else:
1212
+ return False
1213
+ else:
1214
+ return True
1215
+ else:
1216
+ return False
1217
+
1218
+
1219
+ def get_config_value_by_key(the_key):
1220
+ return project_config[the_key]
1221
+
1222
+
1223
+ class FaceExpression(IntEnum):
1224
+ EMOTIONS = 1
1225
+ SEXUAL = 2
1226
+ SMILE = 3
1227
+ SMUG = 4
1228
+ RANDOM = 5
1229
+
1230
+
1231
+ class BodyWearType(IntEnum):
1232
+ DRESS = 1
1233
+ UNIFORM = 2
1234
+ BODYSUIT = 3
1235
+ TRADITIONAL = 4
1236
+ CUSTOM = 5
1237
+ RANDOM = 6
1238
+ ASNULL = 7
1239
+
1240
+
1241
+ class BottomWearType(IntEnum):
1242
+ PANTS = 1
1243
+ SKIRT = 2
1244
+ SHORT = 3
1245
+ RANDOM = 4
1246
+
1247
+
1248
+ class TopWearType(IntEnum):
1249
+ SHIRTS = 1
1250
+ COAT = 2
1251
+ SWEATER = 3
1252
+ OTHERS = 4
1253
+ RANDOM = 5
1254
+
1255
+
1256
+ class PoseType(IntEnum):
1257
+ BASE = 1
1258
+ WHOLE = 2
1259
+
1260
+
1261
+ class FootWearType(IntEnum):
1262
+ BOOTS = 1
1263
+ HIGHHEELS = 2
1264
+ SANDALS = 3
1265
+ SLIPPERS = 4
1266
+ BARE = 5
1267
+ ASNULL = 6
1268
+
1269
+
1270
+ class LegWearType(IntEnum):
1271
+ SOCKS = 1
1272
+ KNEEHIGHS = 2
1273
+ OVERKNEEHIGHS = 3
1274
+ THIGHHIGHS = 4
1275
+ PANTYHOSE = 5
1276
+ BARE = 6
1277
+ ASNULL = 7
1278
+ RANDON = 8
1279
+
1280
+
1281
+ class NSFWType(IntEnum):
1282
+ NUDE = 1
1283
+ SEXUAL = 2
1284
+ NOTNSFW = 3
1285
+
1286
+
1287
+ make_prompt_strong_scale = 1.331
1288
+
1289
+ project_config = {
1290
+ # 视角&地点
1291
+ "angle": "", # null则禁用
1292
+ "body_framing": "",
1293
+ "assign_focus_on": "", # null则禁用
1294
+ "add_focus": False,
1295
+ "face_expression": FaceExpression.SMILE,
1296
+ "pose_type": PoseType.BASE,
1297
+ "place": "",
1298
+ "dynamic_mode": False, # 是否开启动态模式,动态模式下angle,pose, view使用动态
1299
+ # 身体穿着
1300
+ "breasts_size": "", # null则禁用
1301
+ "body_wear": BodyWearType.DRESS,
1302
+ "top_wear": TopWearType.SHIRTS,
1303
+ "bottom_wear": BottomWearType.SKIRT,
1304
+ "leg_wear": LegWearType.ASNULL,
1305
+ "panties": False,
1306
+ "shoes_type": FootWearType.ASNULL,
1307
+ "body_with": True,
1308
+ "body_status": True,
1309
+ "body_description": False,
1310
+ "cloth_trim": True,
1311
+
1312
+ # 颜色,只用给颜色即可
1313
+ "leg_wear_color": "",
1314
+ "shoes_color": "",
1315
+ "hair_color": "",
1316
+ "enable_eye_color": True,
1317
+ "disable_all_color": True,
1318
+ # 直接指定prompt,这会直接跳过其他配置,并且自动加深prompt权重
1319
+ "assign_pose": "", # null则禁用
1320
+ "assign_profession": "", # null则禁用
1321
+ "assign_expression": "",
1322
+ "assign_shoes": "",
1323
+ "assign_leg_wear": "",
1324
+ "assign_body_clothes": "",
1325
+ "assign_panties": "",
1326
+ "assign_girl_description": "",
1327
+
1328
+ # 装饰、物品、形容词
1329
+ "accessories_random_tims": 3, # max:6 NOTE:对于某些model,如何这些prompt出现,可能会影响视角效果
1330
+ "object_random_times": 0, # max: 6
1331
+ "suffix_words_random_times": 0, # 形容词缀随机次数
1332
+
1333
+ # nsfw/sexual/nude
1334
+ "nsfw_type": NSFWType.NUDE,
1335
+ "sexual_list_random_index_times": 2, # max:5
1336
+ "nude_list_random_index_times": 1, # max:9
1337
+ "is_nsfw": False,
1338
+ "is_uncensored": False,
1339
+ "is_simple_nude": False,
1340
+ "nude_strong": False, # 是否加强nude,添加了nipple和pussy
1341
+
1342
+ # sex
1343
+ "sex_mode": False,
1344
+ "sex_type": SexActType.SEX,
1345
+ "man_random": False,
1346
+
1347
+ # 人物描述
1348
+ "girl_cnt": 1, # 人物数量
1349
+ "has_girl_desc": False, # 是否加入超长的girl描述,目前看来大部分不需要
1350
+ "add_girl_beautyful": True, # girl前缀描述
1351
+ "add_hair_length": True, # 是否加入发长描述
1352
+ "add_hair_style": False, # 是否加入发型描述
1353
+ "add_hair_accessories": False, # 是否加入发饰描述
1354
+ "add_neck_accessories": False, # 是否加入颈饰描述
1355
+ "add_earrings": False, # 是否加入耳饰描述
1356
+
1357
+ # 其他配置
1358
+ "is_realistic": True,
1359
+ "use_starting": True, # 是否使用咒语起手式
1360
+ "add_detail_suffix": False, # 是否加入细节描述
1361
+ "add_colors": False,
1362
+ "additional_prompt": "",
1363
+ "enable_day_weather": False, # 是否启用天气
1364
+ "enable_light_effect": True, # 灯光效果
1365
+ "enable_image_tech": False, # 图像技术
1366
+
1367
+ # lora & embeddings
1368
+ "lora": [], # x
1369
+ "lyco": [], # y
1370
+ "lora_weights_random": True,
1371
+ "embeddings": [], # z
1372
+ "models_order": ['xyz'], # lora, lyco, embeddings 输出顺序xyz
1373
+ }
promptsModules/configDB.py ADDED
@@ -0,0 +1,118 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # -*- coding:utf-8 -*-
2
+ import json
3
+ import sqlite3
4
+ from enum import IntEnum
5
+
6
+
7
+ def convert_enum_to_int(data):
8
+ # 遍历字典中的键值对
9
+ for key, value in data.items():
10
+ # 检查值是否为IntEnum类型
11
+ if isinstance(value, IntEnum):
12
+ # 将IntEnum值转换为整数
13
+ data[key] = value.value
14
+
15
+ return data
16
+
17
+
18
+ def dict_to_string(data):
19
+ # 将字典数据转换为JSON字符串
20
+ json_string = json.dumps(data)
21
+ return json_string
22
+
23
+
24
+ def string_to_dict(json_string):
25
+ # 将JSON字符串转换为字典数据
26
+ data = json.loads(json_string)
27
+ return data
28
+
29
+
30
+ def store_data_in_database(data, alias_name):
31
+ # 将数据转换为字符串
32
+ convert_data = convert_enum_to_int(data)
33
+ json_string = dict_to_string(convert_data)
34
+
35
+ # 存储字符串到数据库
36
+ conn = sqlite3.connect('prompt.db')
37
+ cursor = conn.cursor()
38
+ cursor.execute('''
39
+ CREATE TABLE IF NOT EXISTS t_config (
40
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
41
+ config TEXT NOT NULL,
42
+ alias TEXT NOT NULL,
43
+ update_time TEXT
44
+ )
45
+ ''')
46
+
47
+ # query if the alias exists
48
+ cursor.execute("SELECT id FROM t_config WHERE alias = ? LIMIT 1", (alias_name,))
49
+ result = cursor.fetchone()
50
+ if result is not None:
51
+ print("{}配置已存在,是否要更新配置?".format(alias_name))
52
+ user_input = input("请输入 'yes/y/Y' 确认更新配置:")
53
+
54
+ if user_input.lower() == 'yes' or user_input.lower() == 'y':
55
+ # 更新现有配置
56
+ cursor.execute("UPDATE t_config SET config = ?, update_time = datetime('now') WHERE alias = ?",
57
+ (json_string, alias_name,))
58
+ conn.commit()
59
+ conn.close()
60
+ print("{}配置已更新。".format(alias_name))
61
+ else:
62
+ conn.close()
63
+ print("取消更新配置。")
64
+ return
65
+ else:
66
+ cursor.execute("INSERT INTO t_config (config, alias, update_time) VALUES (?, ?, datetime('now'))",
67
+ (json_string, alias_name,))
68
+ conn.commit()
69
+ conn.close()
70
+ print("配置已存储完成.")
71
+
72
+
73
+ def retrieve_data_from_database(query_key):
74
+ # 从数据库查询数据
75
+ conn = sqlite3.connect('prompt.db')
76
+ cursor = conn.cursor()
77
+
78
+ if query_key.isdigit():
79
+ cursor.execute("SELECT config FROM t_config WHERE id = ? LIMIT 1", (query_key,))
80
+ else:
81
+ cursor.execute("SELECT config FROM t_config WHERE alias = ? LIMIT 1", (query_key,))
82
+ result = cursor.fetchone()
83
+ conn.close()
84
+
85
+ if result is not None:
86
+ json_string = result[0]
87
+ # 将字符串转换为字典数据
88
+ data = string_to_dict(json_string)
89
+ return data
90
+ else:
91
+ return None
92
+
93
+
94
+ def list_alias(limit=100):
95
+ # 从数据库查询数据
96
+ conn = sqlite3.connect('prompt.db')
97
+ cursor = conn.cursor()
98
+ cursor.execute("SELECT id, alias,update_time FROM t_config ORDER BY update_time DESC LIMIT ?", (limit,))
99
+ result = cursor.fetchall()
100
+ conn.close()
101
+
102
+ if result is not None:
103
+ return result
104
+ else:
105
+ return None
106
+
107
+
108
+ def delete_data_from_database(arg_alias):
109
+ # delete data with id
110
+ if arg_alias.isdigit():
111
+ conn = sqlite3.connect('prompt.db')
112
+ cursor = conn.cursor()
113
+ cursor.execute("DELETE FROM t_config WHERE id = ?", (arg_alias,))
114
+ conn.commit()
115
+ conn.close()
116
+ print("配置已删除.")
117
+ else:
118
+ print("只能根据id删除配置.")
promptsModules/lora.py ADDED
@@ -0,0 +1,136 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # -*- coding:utf-8 -*-
2
+
3
+ import random
4
+
5
+ from promptsModules.model_manager import (ModelInfo, LoraConfigManager)
6
+
7
+ global_random_f = False
8
+
9
+
10
+ def get_single_lora_prompt(category, weight=None):
11
+ prompt = ""
12
+ lora = LoraConfigManager()
13
+ model = lora.query_data(f"{category}_1")
14
+ if isinstance(model, ModelInfo):
15
+
16
+ if model.trigger_words != "":
17
+ prompt = "{},<lora:{}:{}>,".format(model.trigger_words, model.name_model,
18
+ get_random_weight(model.min_widget, model.max_widget,
19
+ model.default_widget, weight))
20
+
21
+ else:
22
+ prompt = "<lora:{}:{}>,".format(model.name_model,
23
+ get_random_weight(model.min_widget, model.max_widget, model.default_widget,
24
+ weight))
25
+
26
+ return prompt
27
+
28
+
29
+ def get_single_lycoris_prompt(category, weight=None):
30
+ prompt = ""
31
+ model = LoraConfigManager().query_data(f"{category}_2")
32
+ if isinstance(model, ModelInfo):
33
+
34
+ if model.trigger_words != "":
35
+ prompt = "{},<lyco:{}:{}>,".format(model.trigger_words, model.name_model,
36
+ get_random_weight(model.min_widget, model.max_widget,
37
+ model.default_widget, weight))
38
+
39
+ else:
40
+ prompt = "<lyco:{}:{}>,".format(model.name_model,
41
+ get_random_weight(model.min_widget, model.max_widget, model.default_widget,
42
+ weight))
43
+ return prompt
44
+
45
+
46
+ def get_random_weight(from_v, to_v=1.0, default_v=0.6, weight=None):
47
+ if weight is not None and isinstance(weight, str):
48
+ return weight
49
+ final_v = 0
50
+ if global_random_f is not True:
51
+ final_v = default_v
52
+ else:
53
+ final_v = random.uniform(from_v, to_v)
54
+ return "{:.2f}".format(final_v)
55
+
56
+
57
+ def gen_lora_prompt_list(lora_list, random_f=False):
58
+ global global_random_f
59
+ global_random_f = random_f
60
+ prompt_list = []
61
+ for lora in lora_list:
62
+ lora_name, weight = convert_widget_string(lora)
63
+ prompt_list.append(get_single_lora_prompt(lora_name, weight))
64
+ prompt = "".join(prompt_list)
65
+ return prompt
66
+
67
+
68
+ def gen_lycoris_prompt_list(lycoris_list, random_f=False):
69
+ global global_random_f
70
+ global_random_f = random_f
71
+ prompt_list = []
72
+ for lyco in lycoris_list:
73
+ lyco_name, weight = convert_widget_string(lyco)
74
+ prompt_list.append(get_single_lycoris_prompt(lyco_name, weight))
75
+ prompt = "".join(prompt_list)
76
+ return prompt
77
+
78
+
79
+ def get_embed_prompt(embedding_list):
80
+ global global_random_f
81
+ global_random_f = True
82
+ prompt_list = []
83
+ for embedding_str in embedding_list:
84
+ embedding, weight = convert_widget_string(embedding_str)
85
+ prompt_list.append(get_single_embedding_prompt(embedding, weight))
86
+
87
+ prompt = "".join(prompt_list)
88
+ return prompt
89
+
90
+
91
+ def get_single_embedding_prompt(category, weight=None):
92
+ prompt = ""
93
+ model = LoraConfigManager().query_data(f"{category}_3")
94
+ if isinstance(model, ModelInfo):
95
+
96
+ if model.trigger_words != "":
97
+ prompt = "({}:{}), {},".format(model.name_model,
98
+ get_random_weight(model.min_widget, model.max_widget, model.default_widget,
99
+ weight), model.trigger_words)
100
+
101
+ else:
102
+ prompt = "({}:{}),".format(model.name_model,
103
+ get_random_weight(model.min_widget, model.max_widget, model.default_widget,
104
+ weight))
105
+ return prompt
106
+
107
+
108
+ def convert_widget_string(model_str):
109
+ # check if model_str is int or float
110
+ if isinstance(model_str, int) or isinstance(model_str, float):
111
+ return model_str, None
112
+ elif isinstance(model_str, str):
113
+
114
+ if ':' in model_str:
115
+ splitted = model_str.split(':')
116
+ before_colon = splitted[0]
117
+ after_colon = splitted[1]
118
+ return before_colon, after_colon
119
+ else:
120
+ return model_str, None
121
+ else:
122
+ raise ValueError("CAN NOT VALIDATE MODEL STRING")
123
+
124
+
125
+ def should_re_gen_prompt(lora_list):
126
+ if len(lora_list) <= 0:
127
+ return False
128
+ return True
129
+
130
+
131
+ def is_special_single(model_list):
132
+ for model in model_list:
133
+ model_name, weight = convert_widget_string(model)
134
+ if LoraConfigManager().check_special(model_name):
135
+ return True
136
+ return False
promptsModules/model_manager.py ADDED
@@ -0,0 +1,152 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # -*- coding:utf-8 -*-
2
+ import os
3
+
4
+ import openpyxl as pyxl
5
+
6
+
7
+ class ModelInfo:
8
+ def __init__(self, id_model, type_model, name_model, trigger_words="", min_widget=0.4, max_widget=1,
9
+ default_widget=0.6, is_special=False, user_desc=""):
10
+ self.id_model = id_model
11
+ self.type_model = type_model
12
+ self.name_model = name_model
13
+ self.trigger_words = trigger_words
14
+ self.min_widget = min_widget
15
+ self.max_widget = max_widget
16
+ self.default_widget = default_widget
17
+ self.is_special = is_special
18
+ self.user_desc = user_desc
19
+
20
+ def __str__(self):
21
+ return f"{self.id_model} {self.type_model} {self.name_model} {self.trigger_words} {self.min_widget} {self.max_widget} {self.default_widget} {self.is_special}"
22
+
23
+
24
+ class LoraConfigManager(object):
25
+ _data = {}
26
+ _special_ids = set()
27
+ _lastModifyTime = 0
28
+
29
+ _instance = None
30
+
31
+ def __new__(cls, *args, **kw):
32
+ if cls._instance is None:
33
+ cls._instance = object.__new__(cls, *args, **kw)
34
+ cls._instance.loadData()
35
+ return cls._instance
36
+
37
+ def __init__(self):
38
+ pass
39
+
40
+ def get_excel_file_path(self):
41
+ current_file_path = os.path.abspath(__file__)
42
+ current_folder = os.path.dirname(current_file_path)
43
+
44
+ target_file_name = "modelsConfig.xlsx"
45
+ target_file_path = os.path.join(current_folder, target_file_name)
46
+ return target_file_path
47
+
48
+ def loadData(self):
49
+ target_file_path = self.get_excel_file_path()
50
+
51
+ # 检查文件是否存在
52
+ if os.path.exists(target_file_path):
53
+ print(f"loading prompt-r-gen-sd excel file:{target_file_path}")
54
+ self._lastModifyTime = os.path.getmtime(target_file_path)
55
+ workbook = pyxl.load_workbook(target_file_path)
56
+ sheet = workbook.active
57
+ for row in sheet.iter_rows(min_row=2, values_only=True): # 从第2行开始遍历
58
+ id_model = row[0]
59
+ type_model = row[1]
60
+ name_model = row[2]
61
+ trigger_words = row[3]
62
+ min_widget = row[4]
63
+ max_widget = row[5]
64
+ default_widget = row[6]
65
+ is_special = row[7]
66
+ user_desc = row[8]
67
+
68
+ if id_model is None or type_model is None or name_model is None:
69
+ continue
70
+
71
+ if trigger_words is not None and isinstance(trigger_words, str) and trigger_words.endswith(","):
72
+ trigger_words = trigger_words[:-1]
73
+ elif isinstance(trigger_words, str):
74
+ pass
75
+ else:
76
+ trigger_words = ""
77
+
78
+ if min_widget is not None:
79
+ if isinstance(min_widget, str) and min_widget.isdigit():
80
+ min_widget = float(min_widget)
81
+ else:
82
+ min_widget = 0.4
83
+ if max_widget is not None:
84
+ if isinstance(max_widget, str) and max_widget.isdigit():
85
+ max_widget = float(max_widget)
86
+ else:
87
+ max_widget = 1
88
+ if default_widget is not None:
89
+ if isinstance(default_widget, str) and default_widget.isdigit():
90
+ default_widget = float(default_widget)
91
+ else:
92
+ default_widget = 0.6
93
+ else:
94
+ default_widget = 0.6
95
+
96
+ is_special = (is_special == 1)
97
+ model_obj = ModelInfo(id_model, type_model, name_model, trigger_words, min_widget, max_widget,
98
+ default_widget, is_special, user_desc)
99
+ # print(model_obj)
100
+ identifer = f"{id_model}_{type_model}"
101
+ if is_special:
102
+ self._special_ids.add(identifer)
103
+ self._data[identifer] = model_obj
104
+ workbook.close()
105
+ else:
106
+ print(f"can NOT find prompt-r-gen-sd excel file:{target_file_path}")
107
+
108
+ def query_data(self, model_id):
109
+ if self._lastModifyTime != os.path.getmtime(self.get_excel_file_path()):
110
+ self.reload()
111
+ if model_id in self._data:
112
+ return self._data[model_id]
113
+ else:
114
+ if model_id in self._data:
115
+ return self._data[model_id]
116
+ return None
117
+
118
+ def reload(self):
119
+ self._lastModifyTime = os.path.getmtime(self.get_excel_file_path())
120
+ self._data = {}
121
+ self._special_ids = set()
122
+ self.loadData()
123
+
124
+ def check_special(self, model_id):
125
+ if f"{model_id}_1" in self._special_ids:
126
+ return True
127
+ if f"{model_id}_2" in self._special_ids:
128
+ return True
129
+
130
+ return False
131
+
132
+ def export_to_data_frame(self):
133
+ data = []
134
+ for key, value in self._data.items():
135
+ obj_index = key.split("_")[0]
136
+ obj_type = value.type_model
137
+ if obj_type == 1 or obj_type == "1":
138
+ obj_type = "Lora"
139
+ elif obj_type == 2 or obj_type == "2":
140
+ obj_type = "Loha"
141
+ elif obj_type == 3 or obj_type == "3":
142
+ obj_type = "Embedding"
143
+ obj_name = value.name_model
144
+ obj_desc = value.user_desc
145
+ data.append([key, obj_index, obj_type, obj_name, obj_desc])
146
+
147
+ # sort data with key obj
148
+ data.sort(key=lambda x: x[0])
149
+ # loop data, and remove every firt obj from child node
150
+ for i in range(len(data)):
151
+ data[i].remove(data[i][0])
152
+ return data
promptsModules/modelsConfig.xlsx ADDED
Binary file (13 kB). View file
 
promptsModules/promptGen.py ADDED
@@ -0,0 +1,282 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # -*- coding:utf-8 -*-
2
+
3
+
4
+ from enum import IntEnum
5
+
6
+ from promptsModules.basePromptBuilder import (
7
+ get_config_value_by_key,
8
+ get_starting_prompt, get_user_additional_prompt, get_realistic_prompt, get_angle_and_image_composition,
9
+ get_girl_desc_prompt, get_job_prompt, get_body_wear_prompt, get_hair_eyes_prompt, get_place_prompt,
10
+ get_bottom_prompt, LegWearType, NSFWType, FaceExpression, FootWearType, get_nsfw_prompt, get_uncensored_prompt,
11
+ SexActType, get_s_act_sex_prompt, get_s_act_group_prompt, get_s_act_tentacles_prompt, BodyWearType, project_config
12
+ )
13
+
14
+ from promptsModules.lora import (
15
+ gen_lora_prompt_list, gen_lycoris_prompt_list, get_embed_prompt, is_special_single, should_re_gen_prompt
16
+ )
17
+
18
+
19
+ class DefaultConfig(IntEnum):
20
+ DEFAULT = 1
21
+ WALLPAPER = 2 # 壁纸
22
+ CROSSLEGS = 3
23
+ NUDESIMPLE1 = 4 # nude, 精简模式,较多饰物,无nude其他prompt
24
+ NUDEDEFAULT = 5 # nude, 非精简模式,较多饰物,少量nude prompt
25
+ NUDEDEFAULT_BACK = 6 # nude, 背部
26
+ NORMAL_DRESS = 7
27
+ SEXAULDEFAULT = 8
28
+
29
+
30
+ def get_lora_prompt(lora_list):
31
+ return gen_lora_prompt_list(lora_list, get_config_value_by_key("lora_weights_random"))
32
+
33
+
34
+ def get_lyco_prompt(lyco_list):
35
+ return gen_lycoris_prompt_list(lyco_list, get_config_value_by_key("lora_weights_random"))
36
+
37
+
38
+ def get_embeddings_prompt():
39
+ return get_embed_prompt(get_config_value_by_key("embeddings"))
40
+
41
+
42
+ def gen_lora_prompt():
43
+ lora_list = get_config_value_by_key("lora")
44
+ lyco_list = get_config_value_by_key("lyco")
45
+ order_list = get_config_value_by_key("models_order")
46
+ # order_list为string,按照字符,拆分为数组
47
+ order_arr = [char for char in order_list]
48
+ prompt = ""
49
+ if is_special_single(lora_list) or is_special_single(lyco_list):
50
+ for v in order_arr:
51
+ if v == 'x':
52
+ prompt = prompt + gen_lora_prompt_list(lora_list)
53
+ elif v == 'y':
54
+ prompt = prompt + get_lyco_prompt(lyco_list)
55
+ elif v == 'z':
56
+ prompt = prompt + get_embeddings_prompt()
57
+ prompt = prompt \
58
+ + get_starting_prompt() \
59
+ + get_user_additional_prompt() \
60
+ + get_realistic_prompt() \
61
+ + "\n"
62
+
63
+ else:
64
+ for_lora_config = {
65
+
66
+ # 颜色,只用给颜色即可
67
+ "disable_all_color": True,
68
+
69
+ # 直接指定prompt,这会直接跳过其他配置,并且自动加深prompt权重
70
+ "assign_focus_on": "null", # null则禁用
71
+ "assign_profession": "null",
72
+
73
+ # "body_with": False,
74
+ # "body_status": False,
75
+
76
+ "is_simple_nude": True,
77
+
78
+ # "accessories_random_tims": 0, # max:6 NOTE:对于某些model,如何这些prompt出现,可能会影响视角效果
79
+ # "object_random_times": 0, # max: 6
80
+ # "sexual_list_random_index_times": 0, # max:5
81
+ # "nude_list_random_index_times": 0, # max:9
82
+
83
+ # 其他配置
84
+ # "is_realistic": True,
85
+ # "use_starting": False, # 是否使用咒语起手式
86
+
87
+ }
88
+ for key in for_lora_config:
89
+ if key in project_config:
90
+ project_config[key] = for_lora_config[key]
91
+
92
+ for v in order_arr:
93
+ if v == 'x':
94
+ prompt = prompt + get_lora_prompt(lora_list)
95
+ elif v == 'y':
96
+ prompt = prompt + get_lyco_prompt(lyco_list)
97
+ elif v == 'z':
98
+ prompt = prompt + get_embeddings_prompt()
99
+ prompt = prompt \
100
+ + get_user_additional_prompt() \
101
+ + get_realistic_prompt() \
102
+ + get_angle_and_image_composition() \
103
+ + get_girl_desc_prompt() \
104
+ + get_job_prompt() \
105
+ + get_body_wear_prompt() \
106
+ + get_hair_eyes_prompt() \
107
+ + get_place_prompt() \
108
+ + get_starting_prompt() \
109
+ + get_bottom_prompt() \
110
+ + "\n"
111
+ return prompt
112
+
113
+
114
+ def get_preset_config_map(preset_type):
115
+ if preset_type == DefaultConfig.DEFAULT:
116
+ return {}
117
+ elif preset_type == DefaultConfig.WALLPAPER:
118
+ return {
119
+ "angle": "null",
120
+ "body_framing": "portrait",
121
+ "add_focus": False,
122
+ "breasts_size": "null",
123
+ "leg_wear": LegWearType.ASNULL,
124
+ "panties": False,
125
+ "shoes_type": FootWearType.ASNULL,
126
+ "body_with": False,
127
+ "body_status": False,
128
+ "assign_pose": "null",
129
+ "assign_expression": "smile",
130
+ "accessories_random_tims": 0,
131
+ "object_random_times": 3,
132
+ "nsfw_type": NSFWType.NOTNSFW,
133
+ "is_nsfw": False,
134
+ "sex_mode": False,
135
+ "is_realistic": True,
136
+ }
137
+ elif preset_type == DefaultConfig.CROSSLEGS:
138
+ return {
139
+ "angle": "null",
140
+ "body_framing": "lower body",
141
+ "assign_focus_on": "leg focus",
142
+ "breasts_size": "medium",
143
+ "leg_wear": LegWearType.PANTYHOSE,
144
+ "panties": False,
145
+ "body_with": False,
146
+ "body_status": False,
147
+ "assign_pose": "sitting, crossed legs",
148
+ "assign_expression": "smile",
149
+ "assign_shoes": "high heels",
150
+ "accessories_random_tims": 4,
151
+ "object_random_times": 3,
152
+ "nsfw_type": NSFWType.NOTNSFW,
153
+ "is_nsfw": False,
154
+ "sex_mode": False,
155
+ "is_realistic": True,
156
+ }
157
+ elif preset_type == DefaultConfig.NORMAL_DRESS:
158
+ return {
159
+ "body_wear": BodyWearType.DRESS,
160
+ "leg_wear": LegWearType.PANTYHOSE,
161
+ "panties": False,
162
+ "accessories_random_tims": 3,
163
+ "object_random_times": 3,
164
+ "nsfw_type": NSFWType.NOTNSFW,
165
+ "sex_mode": False,
166
+ }
167
+ elif preset_type == DefaultConfig.SEXAULDEFAULT:
168
+ return {
169
+ "panties": True,
170
+ "accessories_random_tims": 3,
171
+ "object_random_times": 2,
172
+ "sexual_list_random_index_times": 3,
173
+ "nsfw_type": NSFWType.SEXUAL,
174
+ "sex_mode": False,
175
+ }
176
+ elif preset_type == DefaultConfig.NUDESIMPLE1 \
177
+ or preset_type == DefaultConfig.NUDEDEFAULT \
178
+ or preset_type == DefaultConfig.NUDEDEFAULT_BACK:
179
+ nude_config = {
180
+ "face_expression": FaceExpression.SEXUAL,
181
+ "breasts_size": "large",
182
+ "leg_wear": LegWearType.RANDON,
183
+ "panties": True,
184
+ "shoes_type": FootWearType.ASNULL,
185
+ "body_with": True,
186
+ "body_status": False,
187
+ "accessories_random_tims": 4,
188
+ "object_random_times": 2,
189
+
190
+ "nsfw_type": NSFWType.NUDE,
191
+ "nude_list_random_index_times": 0, # max:9
192
+ "is_nsfw": False,
193
+ "is_simple_nude": True,
194
+ "nude_strong": False,
195
+ }
196
+ if preset_type == DefaultConfig.NUDESIMPLE1:
197
+ pass
198
+ elif preset_type == DefaultConfig.NUDEDEFAULT:
199
+ nude_config["nude_list_random_index_times"] = 2
200
+ nude_config["is_simple_nude"] = False
201
+ elif preset_type == DefaultConfig.NUDEDEFAULT_BACK:
202
+ nude_config["nude_list_random_index_times"] = 2
203
+ nude_config["is_simple_nude"] = False
204
+
205
+ nude_config["angle"] = "view from behind"
206
+ nude_config["assign_pose"] = "all fours, sitting"
207
+
208
+ return nude_config
209
+
210
+
211
+ def generate_normal_prompts():
212
+ prompts = ""
213
+
214
+ if should_re_gen_prompt(get_config_value_by_key("lora")) or should_re_gen_prompt(
215
+ get_config_value_by_key("lyco")):
216
+ prompts = gen_lora_prompt()
217
+ else:
218
+
219
+ prompts = prompts \
220
+ + get_starting_prompt() \
221
+ + get_user_additional_prompt() \
222
+ + get_embeddings_prompt() \
223
+ + get_realistic_prompt() \
224
+ + get_nsfw_prompt() \
225
+ + get_angle_and_image_composition() \
226
+ + get_girl_desc_prompt() \
227
+ + get_uncensored_prompt() \
228
+ + get_job_prompt() \
229
+ + get_body_wear_prompt() \
230
+ + get_hair_eyes_prompt() \
231
+ + get_place_prompt() \
232
+ + get_bottom_prompt() \
233
+ + "\n"
234
+ return prompts
235
+
236
+
237
+ def generate_sex_prompts():
238
+ prompts = ""
239
+ sex_type = get_config_value_by_key("sex_type")
240
+
241
+ if sex_type == SexActType.SEX:
242
+ prompts = get_s_act_sex_prompt()
243
+ prompts = prompts \
244
+ + get_embeddings_prompt() \
245
+ + get_lora_prompt()
246
+ elif sex_type == SexActType.GROUP:
247
+ prompts = get_s_act_group_prompt()
248
+ elif sex_type == SexActType.TENTACLES:
249
+ prompts = get_s_act_tentacles_prompt()
250
+ return prompts
251
+
252
+
253
+ def random_prompts():
254
+ if get_config_value_by_key("sex_mode"):
255
+ return generate_sex_prompts()
256
+ else:
257
+ return generate_normal_prompts()
258
+
259
+
260
+ def gen_prompt(config_map):
261
+ preset_value = 1
262
+ if "preset" in config_map:
263
+ preset_value = config_map["preset"]
264
+ if preset_value < 1:
265
+ preset_value = 1
266
+
267
+ if preset_value is not None and preset_value != 1:
268
+ replace_config_by(config_map)
269
+ preset_map = get_preset_config_map(preset_value)
270
+ replace_config_by(preset_map)
271
+ else:
272
+ replace_config_by(config_map)
273
+
274
+ return random_prompts(), project_config
275
+
276
+
277
+ def replace_config_by(custom_map):
278
+ # update project_config by replace the key which exists in config_map
279
+ for key in custom_map:
280
+ # check if the key exists in project_config
281
+ if key in project_config:
282
+ project_config[key] = custom_map[key]
promptsModules/sd_command_gen.py ADDED
@@ -0,0 +1,188 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # -*- coding:utf-8 -*-
2
+
3
+ import argparse
4
+ from enum import IntEnum
5
+
6
+ from promptsModules.configDB import (store_data_in_database, retrieve_data_from_database, list_alias,
7
+ delete_data_from_database)
8
+ from promptsModules.promptGen import (gen_prompt)
9
+
10
+ output_file_name = "prompts.txt"
11
+
12
+ """
13
+ // lora
14
+ CHARACTER_ST_LOUIS = 201, POSE_SIT_CROSSLEG = 626, FUNC_DETAIL_TWEAKER = 901, FUNC_AHEGAO = 903, FUNC_ADD_CUMBERSOME = 904,
15
+ BODY_PERFECT_FULL_ROUND_BREASTS_SLIM_WAIST = 503,
16
+ // lyco
17
+ BACKGROUND_HALATION = 402, STYLE_BEAUTYLEGS = 601, STYLE_ABSTRACT_DREAMWAVE = 202
18
+ """
19
+
20
+ """
21
+ // adetailer prompt:
22
+ <lora:MengX girl_Mix:0.8>, 1girl, smile, cute, 18yo, extremely detailed eyes and face, beautiful face,
23
+ <lora:cutegirl25d:0.9>, 1girl, smile, cute, 18yo,
24
+ """
25
+
26
+ project_config = {
27
+ # "preset": 2,
28
+ "lora": [101], # x
29
+ "lyco": [], # y
30
+ "embeddings": [], # z
31
+ "models_order": 'xyz', # lora, lyco, embeddings 输出顺序xyz
32
+ "lora_weights_random": True,
33
+ "additional_prompt": "",
34
+
35
+ # 视角动作
36
+ "angle": "null", # null则禁用
37
+ "body_framing": "null",
38
+ "dynamic_mode": False,
39
+ "pose_type": 1, # base = 1 whole = 2
40
+
41
+ # 颜色,只用给颜色即可
42
+ "leg_wear_color": "",
43
+ "shoes_color": "",
44
+ "hair_color": "null",
45
+ "enable_eye_color": True,
46
+ "disable_all_color": True,
47
+
48
+ # 身体穿着
49
+ "breasts_size": "large", # null则禁用
50
+ # DRESS = 1 UNIFORM = 2 BODYSUIT = 3 TRADITIONAL = 4 CUSTOM = 5 RANDOM = 6 ASNULL = 7
51
+ "body_wear": 7,
52
+ # "top_wear": TopWearType.SHIRTS,
53
+ # "bottom_wear": BottomWearType.SKIRT,
54
+ # socks = 1; knee_highs = 2; over_knee_highs = 3; thigh_highs = 4; pantyhose = 5; bare = 6; as_null = 7; random = 8
55
+ "leg_wear": 7,
56
+ "panties": False,
57
+ # BOOTS, HIGHHEELS, SANDALS, SLIPPERS, BARE, ASNULL = 1, 2, 3, 4, 5, 6
58
+ "shoes_type": 6,
59
+
60
+ # 直接指定prompt,这会直接跳过其他配置,并且自动加深prompt权重
61
+ "assign_focus_on": "null", # null则禁用
62
+ "assign_pose": "null", # null则禁用
63
+ "assign_profession": "null",
64
+ "assign_expression": "",
65
+ "assign_shoes": "",
66
+ "assign_leg_wear": "",
67
+ "assign_body_clothes": "",
68
+ "assign_panties": "",
69
+ "assign_girl_description": "",
70
+ "place": "null",
71
+
72
+ # 身体相关
73
+ "body_with": False,
74
+ "body_status": False,
75
+ "body_description": False,
76
+ "cloth_trim": False,
77
+ "add_focus": False,
78
+
79
+ "nsfw_type": 3, # 1 nude 2 sexual 3 normal
80
+
81
+ "accessories_random_tims": 0, # max:6 NOTE:对于某些model,如何这些prompt出现,可能会影响视角效果
82
+ "suffix_words_random_times": 0, # 形容词缀随机次数
83
+ "object_random_times": 0, # max: 6
84
+ "sexual_list_random_index_times": 0, # max:5
85
+ "nude_list_random_index_times": 0, # max:9
86
+ "is_simple_nude": True,
87
+
88
+ # 人物描述
89
+ "has_girl_desc": False, # 是否加入超长的girl描述,目前看来大部分不需要
90
+ "add_girl_beautyful": False, # girl前缀描述
91
+ "add_hair_style": False, # 是否加入发型描述
92
+
93
+ # 其他配置
94
+ "is_realistic": False,
95
+ "use_starting": True, # 是否使用咒语起手式
96
+ "add_colors": False,
97
+ "enable_day_weather": False, # 是否启用天气
98
+ "enable_light_effect": True, # 灯光效果
99
+ "enable_image_tech": False, # 图像技术
100
+
101
+ }
102
+
103
+
104
+ def open_file(file_name):
105
+ return open(file_name, 'w')
106
+
107
+
108
+ def create_prompts(prompt_count):
109
+ prompts = ""
110
+ config_ = {}
111
+ f = open_file(output_file_name)
112
+
113
+ for i in range(prompt_count):
114
+ prompt_tmp, config = gen_prompt(project_config)
115
+ prompts = prompts + prompt_tmp + "\n"
116
+ config_ = config
117
+
118
+ target = str(config_) + "\n\n\n" + prompts
119
+ f.write(target)
120
+ return config_
121
+
122
+
123
+ def convert_enum_to_int(data):
124
+ # 遍历字典中的键值对
125
+ for key, value in data.items():
126
+ # 检查值是否为IntEnum类型
127
+ if isinstance(value, IntEnum):
128
+ # 将IntEnum值转换为整数
129
+ data[key] = value.value
130
+
131
+ return data
132
+
133
+
134
+ def main():
135
+ # 创建参数解析器
136
+ parser = argparse.ArgumentParser()
137
+
138
+ # 添加命令行参数
139
+ parser.add_argument("--m", default='1', help="""
140
+ 运行模式:
141
+ m = 1 表示简单模式,只生成prompt,不保存该次配置
142
+ m = 2 表示生成prompt,并保存该次配置
143
+ m = 3 根据alias读取配置,并使用该配置生成prompt
144
+ m = 4 列出保存的alias
145
+ m = 5 删除保存的alias,根据id删除
146
+ """)
147
+ parser.add_argument("--s", default='', required=False, help="""
148
+ 保存配置的alias,仅在m = 2/3时有效
149
+ """)
150
+ parser.add_argument("--n", default='4', required=False, help="生成prompt数量,默认为6")
151
+ parser.add_argument("--ls", default='100', required=False, help="查询alias数量,默认为100")
152
+
153
+ # 解析命令行参数
154
+ args = parser.parse_args()
155
+
156
+ # 获取参数值
157
+ arg_mode = args.m
158
+ arg_alias = args.s
159
+ arg_gen_number = args.n
160
+ arg_query_alias_number = args.ls
161
+
162
+ if arg_mode == '2':
163
+ config_callback = create_prompts(int(arg_gen_number))
164
+ store_data_in_database(config_callback, arg_alias)
165
+ elif arg_mode == '3':
166
+ query_result = retrieve_data_from_database(arg_alias)
167
+ if query_result is None:
168
+ print("未找到该配置的alias或id,请检查输入是否正确")
169
+ else:
170
+ global project_config
171
+ project_config = query_result
172
+ create_prompts(int(arg_gen_number))
173
+ elif arg_mode == '4':
174
+ results = list_alias(int(arg_query_alias_number))
175
+ for i in range(0, len(results), 2):
176
+ print(results[i], end=" ")
177
+ if i + 1 < len(results):
178
+ print(results[i + 1], end=" ")
179
+ # 换行打印下一行
180
+ print()
181
+ elif arg_mode == '5':
182
+ delete_data_from_database(arg_alias)
183
+ else:
184
+ create_prompts(int(arg_gen_number))
185
+
186
+
187
+ if __name__ == '__main__':
188
+ main()
promptsModules/web_api.py ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # -*- coding:utf-8 -*-
2
+
3
+ from promptsModules.promptGen import gen_prompt
4
+
5
+
6
+ def create_prompts(prompt_count, project_config):
7
+ prompts = ""
8
+
9
+ for i in range(prompt_count):
10
+ prompt_tmp, config = gen_prompt(project_config)
11
+ prompts = prompts + prompt_tmp + "\n"
12
+ return prompts
requirements.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ openpyxl==3.1.2
scripts/.DS_Store ADDED
Binary file (6.15 kB). View file
 
scripts/.github/workflows/update_space.yml ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: Run Python script
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+
8
+ jobs:
9
+ build:
10
+ runs-on: ubuntu-latest
11
+
12
+ steps:
13
+ - name: Checkout
14
+ uses: actions/checkout@v2
15
+
16
+ - name: Set up Python
17
+ uses: actions/setup-python@v2
18
+ with:
19
+ python-version: '3.9'
20
+
21
+ - name: Install Gradio
22
+ run: python -m pip install gradio
23
+
24
+ - name: Log in to Hugging Face
25
+ run: python -c 'import huggingface_hub; huggingface_hub.login(token="${{ secrets.hf_token }}")'
26
+
27
+ - name: Deploy to Spaces
28
+ run: gradio deploy
scripts/README.md ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ ---
2
+ title: prompt-rp
3
+ app_file: prompt_rg.py
4
+ sdk: gradio
5
+ sdk_version: 3.40.1
6
+ ---
scripts/__pycache__/prompt_rg.cpython-310.pyc ADDED
Binary file (12.1 kB). View file
 
scripts/prompt_rg.py ADDED
@@ -0,0 +1,367 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import importlib
2
+
3
+ import gradio as gr
4
+
5
+ from promptsModules.sd_command_gen import project_config as gen_config
6
+ from promptsModules.web_api import (create_prompts)
7
+ from promptsModules.model_manager import (LoraConfigManager)
8
+
9
+ project_config = gen_config
10
+ t2i_text_box = None
11
+ IS_PLUGIN = False
12
+
13
+
14
+ def get_model_input(com_value):
15
+ arr = com_value.split(",")
16
+ target_list = []
17
+ if len(arr) > 0:
18
+ target_list = [x.strip() for x in arr if x.strip()]
19
+ return target_list
20
+
21
+
22
+ ######### gen #########
23
+ # 我有史以来写的最长的方法
24
+ def gen_action(gen_times, widget_lora, widget_lyco, widget_embeddings, model_order, additional_prompt, angle, body_framing, location,
25
+ pose_type,
26
+ dynamic_mode, breasts_size, body_wear, top_wear, bottom_wear, leg_wear, panties, shoes_type, body_with,
27
+ body_status, body_desc, cloth_trim, profession, hair_color, add_hair_style, enable_eye_color,
28
+ face_expression, add_girl_beautyful, has_girl_desc, nsfw_type, is_nsfw, is_uncensored, is_simple_nude,
29
+ nude_strong, sexual_list_random_index_times, nude_list_random_index_times, has_starting, is_realistic,
30
+ add_colors, enable_day_weather, enable_light_effect, enable_image_tech, accessories_random_tims,
31
+ object_random_times, suffix_words_random_times, assign_angle, assign_body_framing, assign_place,
32
+ assign_pose, assign_job, assigin_expression, assign_clothes, assign_leg_wear, assign_shoes,
33
+ assign_leg_wear_color, assign_shoes_color, assign_hair_color, hair_accessories, neck_accessories,
34
+ earrings, has_ending, hair_length, people_cnt):
35
+ if angle:
36
+ project_config["angle"] = ""
37
+ else:
38
+ project_config["angle"] = assign_angle
39
+
40
+ if body_framing:
41
+ project_config["body_framing"] = ""
42
+ else:
43
+ project_config["body_framing"] = assign_body_framing
44
+
45
+ if location:
46
+ project_config["place"] = ""
47
+ else:
48
+ project_config["place"] = assign_place
49
+
50
+ if pose_type == 2:
51
+ project_config["assign_pose"] = assign_pose
52
+ else:
53
+ project_config["assign_pose"] = ""
54
+ project_config["pose_type"] = pose_type + 1
55
+
56
+ project_config["dynamic_mode"] = dynamic_mode
57
+ if breasts_size == "空NULL":
58
+ project_config["breasts_size"] = "null"
59
+ else:
60
+ project_config["breasts_size"] = breasts_size
61
+
62
+ project_config["body_wear"] = body_wear + 1
63
+ project_config["top_wear"] = top_wear + 1
64
+ project_config["bottom_wear"] = bottom_wear + 1
65
+ project_config["leg_wear"] = leg_wear + 1
66
+ project_config["panties"] = panties
67
+ project_config["shoes_type"] = shoes_type + 1
68
+ project_config["body_with"] = body_with
69
+ project_config["body_status"] = body_status
70
+ project_config["body_description"] = body_desc
71
+ project_config["cloth_trim"] = cloth_trim
72
+ if profession:
73
+ project_config["assign_profession"] = ""
74
+ else:
75
+ project_config["assign_profession"] = assign_job
76
+
77
+ if hair_color and assign_hair_color == "":
78
+ project_config["hair_color"] = "random"
79
+ else:
80
+ if assign_hair_color == "":
81
+ project_config["hair_color"] = "null"
82
+ else:
83
+ project_config["hair_color"] = assign_hair_color
84
+ project_config["add_hair_style"] = add_hair_style
85
+ project_config["add_hair_length"] = hair_length
86
+ project_config["enable_eye_color"] = enable_eye_color
87
+ project_config["has_girl_desc"] = has_girl_desc
88
+ project_config["add_girl_beautyful"] = add_girl_beautyful
89
+
90
+ if face_expression <= 4:
91
+ project_config["face_expression"] = face_expression + 1
92
+ else:
93
+ project_config["assign_expression"] = assigin_expression
94
+
95
+ project_config["nsfw_type"] = nsfw_type + 1
96
+ project_config["is_nsfw"] = is_nsfw
97
+ project_config["is_uncensored"] = is_uncensored
98
+ project_config["is_simple_nude"] = is_simple_nude
99
+ project_config["nude_strong"] = nude_strong
100
+
101
+ project_config["sexual_list_random_index_times"] = sexual_list_random_index_times
102
+ project_config["nude_list_random_index_times"] = nude_list_random_index_times
103
+
104
+ project_config["use_starting"] = has_starting
105
+ project_config["is_realistic"] = is_realistic
106
+ project_config["add_colors"] = add_colors
107
+ project_config["enable_day_weather"] = enable_day_weather
108
+ project_config["enable_light_effect"] = enable_light_effect
109
+ project_config["enable_image_tech"] = enable_image_tech
110
+ project_config["accessories_random_tims"] = accessories_random_tims
111
+ project_config["object_random_times"] = object_random_times
112
+ project_config["suffix_words_random_times"] = suffix_words_random_times
113
+
114
+ project_config["assign_body_clothes"] = assign_clothes
115
+ project_config["assign_leg_wear"] = assign_leg_wear
116
+ project_config["assign_shoes"] = assign_shoes
117
+ project_config["leg_wear_color"] = assign_leg_wear_color
118
+ project_config["shoes_color"] = assign_shoes_color
119
+
120
+ project_config["add_hair_accessories"] = hair_accessories
121
+ project_config["add_neck_accessories"] = neck_accessories
122
+ project_config["add_earrings"] = earrings
123
+ project_config["add_detail_suffix"] = has_ending
124
+ project_config["girl_cnt"] = people_cnt
125
+
126
+ lora_config = get_model_input(widget_lora)
127
+ lyco_config = get_model_input(widget_lyco)
128
+ embeddings_config = get_model_input(widget_embeddings)
129
+ project_config["lora"] = lora_config
130
+ project_config["lyco"] = lyco_config
131
+ project_config["embeddings"] = embeddings_config
132
+ if model_order is None or model_order == '':
133
+ model_order = "xyz"
134
+ project_config["models_order"] = model_order
135
+ project_config["additional_prompt"] = additional_prompt
136
+ return create_prompts(gen_times, project_config)
137
+
138
+
139
+ def send_action(result_text):
140
+ if t2i_text_box is not None:
141
+ lines = result_text.split("\n")
142
+ stripped_lines = [line.strip() for line in lines]
143
+ if len(stripped_lines) > 0:
144
+ return stripped_lines[0]
145
+
146
+
147
+ def load_config_action():
148
+ return LoraConfigManager().export_to_data_frame()
149
+
150
+
151
+ ######### UI #########
152
+ def on_ui_tabs():
153
+ with gr.Blocks(analytics_enabled=False) as ui_component:
154
+ with gr.Tab("生成prompt"):
155
+ with gr.Row():
156
+ with gr.Column(scale=3):
157
+ gr.Markdown("请修改以下配置")
158
+
159
+ with gr.Box():
160
+ with gr.Row():
161
+ time_slider = gr.Slider(1, 6, value=4, label="随机生成条数", step=1, interactive=True)
162
+
163
+ with gr.Box():
164
+ gr.Markdown("视角、地点、动作")
165
+ with gr.Row():
166
+ angle = gr.Checkbox(False, label="视角", info="正面,侧面,背面...")
167
+ body_framing = gr.Checkbox(False, label="身体框架", info="肖像,半身,全身...")
168
+ location = gr.Checkbox(False, label="地点", info="随机地点")
169
+ pose_type = gr.Dropdown(['基础', '全身', '空NULL'], value='空NULL', type="index",
170
+ label="动作类型",
171
+ interactive=True,
172
+ info="人物动作,站、坐、躺...")
173
+ dynamic_mode = gr.Checkbox(False, label="动态模式",
174
+ info="使用dynamic pose, angle,需对应配置勾选")
175
+ with gr.Box():
176
+ gr.Markdown("身体穿着描述, 选择空NULL则不生成该tag")
177
+ with gr.Column():
178
+ with gr.Row():
179
+ breasts_size = gr.Dropdown(["medium", "large", "huge", "gigantic", "空NULL"],
180
+ value="空NULL",
181
+ label="胸大小描述", info="依次增大= =#", interactive=True)
182
+ body_wear = gr.Dropdown(
183
+ ["裙子dress", "制服UNIFORM", "紧身衣BODYSUIT", "传统服饰TRADITIONAL",
184
+ "上下搭配(如上身体恤下身短裙)", "以上随机", "空NULL"], value="空NULL",
185
+ type="index", label="衣服", info="", interactive=True)
186
+ top_wear = gr.Dropdown(
187
+ ["衬衫SHIRTS", "外套COAT", "毛衣SWEATER", "其他OTHERS", "以上随机RANDOM"],
188
+ value="衬衫SHIRTS", type="index", label="上身衣物",
189
+ info="选择上下搭配(如上身体恤下身短裙)该配置生效", interactive=True)
190
+ bottom_wear = gr.Dropdown(["裤子PANTS", "短裙SKIRT", "短裤SHORTS", "以上随机RANDOM"],
191
+ value="短裙SKIRT", type="index", label="下身衣物",
192
+ info="选择上下搭配(如上身体恤下身短裙)该配置生效",
193
+ interactive=True)
194
+ with gr.Row():
195
+ leg_wear = gr.Dropdown(
196
+ ["短袜SOCKS", "小腿袜KNEEHIGHS", "过膝袜OVERKNEEHIGHS", "大腿袜THIGHHIGHS",
197
+ "连裤袜PANTYHOSE",
198
+ "光腿BARE", "空NULL", "以上随机RANDOM"], value="空NULL", type="index",
199
+ label="袜子",
200
+ interactive=True)
201
+ panties = gr.Checkbox(False, label="内裤", info="勾选则随机给生成一种内裤类型")
202
+ shoes_type = gr.Dropdown(
203
+ ["靴子BOOTS", "高跟鞋HIGHHEELS", "凉鞋SANDALS", "拖鞋SLIPPERS", "光脚BARE",
204
+ "空NULL"],
205
+ value="空NULL", type="index", label="鞋子", info="", interactive=True)
206
+ with gr.Row():
207
+ body_with = gr.Checkbox(False, label="身体缠绕物", info="缠绕一些东西,束缚,丝带,链条")
208
+ body_status = gr.Checkbox(False, label="身体状态", info="湿身、出汗...")
209
+ body_desc = gr.Checkbox(False, label="身体描述", info="完美身材,纤细身体...")
210
+ cloth_trim = gr.Checkbox(False, label="衣服装饰", info="蕾丝,丝带,金色,花等等...")
211
+ with gr.Box():
212
+ gr.Markdown("人物描述")
213
+ with gr.Row():
214
+ profession = gr.Checkbox(False, label="职业")
215
+ people_cnt = gr.Slider(0, 8, value=1, label="人物数量", step=1, interactive=True)
216
+ with gr.Row():
217
+ hair_length = gr.Checkbox(True, label="头发长度")
218
+ hair_color = gr.Checkbox(True, label="头发颜色", interactive=True)
219
+ add_hair_style = gr.Checkbox(False, label="头发风格")
220
+ enable_eye_color = gr.Checkbox(True, label="眼睛颜色")
221
+ with gr.Row():
222
+ hair_accessories = gr.Checkbox(True, label="头饰")
223
+ neck_accessories = gr.Checkbox(True, label="颈部饰物")
224
+ earrings = gr.Checkbox(True, label="耳环")
225
+ with gr.Row():
226
+ face_expression = gr.Dropdown(
227
+ ["情绪EMOTIONS", "诱惑的SEXUAL", "笑容SMILE", "俏皮的SMUG", "以上随机", "空NULL"],
228
+ value="笑容SMILE",
229
+ type="index", label="表情", interactive=True)
230
+ add_girl_beautyful = gr.Checkbox(False, label="描述妹子的短词缀", info="")
231
+ has_girl_desc = gr.Checkbox(False, label="描述妹子的长词缀", info="")
232
+
233
+ with gr.Accordion("NSFW配置", open=False):
234
+ with gr.Box():
235
+ with gr.Row():
236
+ nsfw_type = gr.Dropdown(["裸NUDE", "性感SEXUAL", "常规NOTNSFW"], value="常规NOTNSFW",
237
+ type="index",
238
+ label="NSFW等级",
239
+ info="请确保你知道自己在干嘛!选择非常规类型,上面的人物衣服设置不生效",
240
+ interactive=True)
241
+ is_nsfw = gr.Checkbox(False, label="是否添加nfsw词缀")
242
+ is_uncensored = gr.Checkbox(False, label="是否添加uncensored词缀")
243
+ is_simple_nude = gr.Checkbox(False, label="是否是简单的nude模式", info="裸模式生效")
244
+ nude_strong = gr.Checkbox(False, label="是否加强nude模式", info="裸模式生效")
245
+ with gr.Row():
246
+ sexual_list_random_index_times = gr.Slider(0, 5, value=0, step=1,
247
+ label="性感词缀随机数",
248
+ interactive=True)
249
+ nude_list_random_index_times = gr.Slider(0, 9, value=0, step=1, label="裸体词缀随机数",
250
+ interactive=True)
251
+ with gr.Accordion("Lora Loha embedding控制", open=False):
252
+ gr.Markdown(
253
+ """
254
+ 关于lora/loha/embedding详细配置使用:[点我查看](https://github.com/HeathWang/prompt-r-gen-sd#loralohaembedding%E6%8E%A7%E5%88%B6%E8%AF%B4%E6%98%8E)
255
+ """
256
+ )
257
+ with gr.Box():
258
+ with gr.Row():
259
+ widget_lora = gr.Textbox("", label="Lora【x】",
260
+ info="格式如下:101, 101:0.6, 路易斯:0.65", elem_id="rp_widget_lora")
261
+ widget_lyco = gr.Textbox("", label="lyco【y】",
262
+ info="格式如下:101, 101:0.6, 添加细节:1", elem_id="rp_widget_lyco")
263
+ with gr.Row():
264
+ widget_embeddings = gr.Textbox("", label="embeddings【z】",
265
+ info="格式如下:100, ul:0.6", elem_id="rp_widget_embeddings")
266
+ model_order = gr.Textbox("xyz", label="lora,lyco,embed顺序",
267
+ info="默认为xyz顺序,即按照lora,lyco,emb顺序")
268
+ with gr.Box():
269
+ gr.Markdown("其他")
270
+ with gr.Row():
271
+ has_starting = gr.Checkbox(True, label="是否使用起手式", info="best quality, absurdres,")
272
+ has_ending = gr.Checkbox(True, label="添加细节", info="jewelry, ultra-detailed, 8k,")
273
+ is_realistic = gr.Checkbox(False, label="是否添加真实词缀",
274
+ info="realistic, photorealistic")
275
+ add_colors = gr.Checkbox(False, label="是否添加多彩词缀")
276
+ with gr.Row():
277
+ enable_day_weather = gr.Checkbox(False, label="是否添加天气信息")
278
+ enable_light_effect = gr.Checkbox(True, label="是否添加灯光效果")
279
+ enable_image_tech = gr.Checkbox(False, label="是否开启图像技术,如模糊")
280
+ with gr.Row():
281
+ accessories_random_tims = gr.Slider(0, 8, value=0, step=1, label="饰物随机数",
282
+ interactive=True,
283
+ info="戒指,袜带等")
284
+ object_random_times = gr.Slider(0, 8, value=0, step=1, label="物品随机数",
285
+ info="花,冰火元素等",
286
+ interactive=True)
287
+ suffix_words_random_times = gr.Slider(0, 10, value=0, step=1, label="形容词缀随机数",
288
+ info="一些描述奇幻,美丽相关的词缀",
289
+ interactive=True)
290
+
291
+ with gr.Accordion("精准控制项", open=False):
292
+ with gr.Box():
293
+ with gr.Row():
294
+ assign_angle = gr.Textbox("null", label="指定视角")
295
+ assign_body_framing = gr.Textbox("null", label="指定身体框架")
296
+ assign_place = gr.Textbox("null", label="指定地点")
297
+ with gr.Row():
298
+ assign_pose = gr.Textbox("null", label="指定人物动作")
299
+ assign_job = gr.Textbox("null", label="指定角色")
300
+ assigin_expression = gr.Textbox("null", label="指定人物表情")
301
+ with gr.Row():
302
+ assign_clothes = gr.Textbox("", label="指定衣服")
303
+ assign_leg_wear = gr.Textbox("", label="指定袜子类型")
304
+ assign_shoes = gr.Textbox("", label="指定鞋子类型")
305
+ with gr.Row():
306
+ assign_leg_wear_color = gr.Textbox("", label="指定袜子颜色")
307
+ assign_shoes_color = gr.Textbox("", label="指定鞋子颜色")
308
+ assign_hair_color = gr.Textbox("", label="指定头发颜色")
309
+
310
+ with gr.Box():
311
+ gr.Markdown("手动输入项")
312
+ with gr.Row():
313
+ additional_prompt = gr.Textbox("", label="额外的prompt")
314
+ with gr.Column(scale=1):
315
+ gr.Markdown("prompt输出:")
316
+ results = gr.Textbox("", label="生成的prompt", lines=20, show_copy_button=True, interactive=False)
317
+ with gr.Row():
318
+ gen_button = gr.Button("生成prompt")
319
+ send_button = gr.Button("发送到文生图")
320
+ with gr.Tab("查看配置"):
321
+ review_btn = gr.Button("加载excel配置")
322
+ data_sheet = gr.DataFrame(
323
+ headers=["id", "类型", "模型名", "描述"],
324
+ datatype=["number", "str", "str", "str"],
325
+ col_count=4,
326
+ interactive=False,
327
+ )
328
+ review_btn.click(load_config_action, outputs=data_sheet)
329
+
330
+ gen_button.click(gen_action,
331
+ inputs=[time_slider, widget_lora, widget_lyco, widget_embeddings, model_order, additional_prompt, angle,
332
+ body_framing, location,
333
+ pose_type, dynamic_mode, breasts_size, body_wear, top_wear, bottom_wear, leg_wear,
334
+ panties, shoes_type, body_with, body_status, body_desc, cloth_trim, profession,
335
+ hair_color, add_hair_style, enable_eye_color, face_expression, add_girl_beautyful,
336
+ has_girl_desc, nsfw_type, is_nsfw, is_uncensored, is_simple_nude,
337
+ nude_strong, sexual_list_random_index_times, nude_list_random_index_times,
338
+ has_starting, is_realistic,
339
+ add_colors, enable_day_weather, enable_light_effect, enable_image_tech,
340
+ accessories_random_tims,
341
+ object_random_times, suffix_words_random_times, assign_angle, assign_body_framing,
342
+ assign_place, assign_pose, assign_job, assigin_expression, assign_clothes,
343
+ assign_leg_wear, assign_shoes, assign_leg_wear_color, assign_shoes_color,
344
+ assign_hair_color, hair_accessories, neck_accessories, earrings, has_ending,
345
+ hair_length, people_cnt], outputs=results)
346
+ send_button.click(send_action, inputs=results, outputs=t2i_text_box)
347
+ if IS_PLUGIN:
348
+ return [(ui_component, "随机提示词RP", "随机提示词RP")]
349
+ else:
350
+ return ui_component
351
+
352
+
353
+ def after_component(component, **kwargs):
354
+ # Find the text2img textbox component
355
+ global t2i_text_box
356
+ if kwargs.get("elem_id") == "txt2img_prompt": # postive prompt textbox
357
+ t2i_text_box = component
358
+
359
+
360
+ if IS_PLUGIN:
361
+ module_plugin1 = "modules.script_callbacks"
362
+ script_module = importlib.import_module(module_plugin1)
363
+ script_module.on_ui_tabs(on_ui_tabs)
364
+ script_module.on_after_component(after_component)
365
+
366
+ else:
367
+ on_ui_tabs().launch(debug=True)
scripts/requirements.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ openpyxl==3.1.2
snap_Shot.png ADDED
ui_lora.png ADDED