# Pull Request
## Description
Allows variables in the RHS of expressions (e.g. `<ppp:if tagsSeen
contains tag>`) for more complex logic
## Type of change
Please delete options that are not relevant.
- [x] New feature (non-breaking change which adds functionality)
- [x] This change requires a documentation update
## How Has This Been Tested?
Added additional tests to the existing test suite.
## Checklist
- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my own code
- [x] I have commented my code, particularly in hard-to-understand areas
- [x] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] New and existing unit tests pass locally with my changes
- [x] Any dependent changes have been merged and published in downstream
modules
- [x] I have checked my code and corrected any misspellings
# Pull Request
## Description
When a variable cannot be converted to integer (because it is undefined, or it is a string that cannot convert) then either warn or fail with proper error message (instead of current behavior which just sort of crashes with no useful information).
`<ppp:if undefinedVar gt 1>` or `{var=hello}<ppp:if var gt 1>` will no longer crash but will warn or stop.
## Type of change
Please delete options that are not relevant.
- [x] Bug fix (non-breaking change which fixes an issue)
- [x] New feature (non-breaking change which adds functionality)
- [x] This change requires a documentation update
## How Has This Been Tested?
Additional unit tests added to the test suite.
## Checklist
- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my own code
- [x] I have commented my code, particularly in hard-to-understand areas
- [x] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [x] I have added tests that prove my fix is effective or that my feature works
- [x] New and existing unit tests pass locally with my changes
- [x] Any dependent changes have been merged and published in downstream modules
- [x] I have checked my code and corrected any misspellings
Allow bare identifiers as the RHS of comparisons in ppp:if conditions
(e.g., `<ppp:if var1 contains var2>`). The grammar now accepts IDENTIFIER
as an alternative to SIMPLEVALUE, and __eval_basiccondition resolves
bare identifier values as variable references before comparison.
Add 4 TDD tests for the var-vs-var comparison feature (S1-TT2):
- test_cmd_if_var_vs_var_eq
- test_cmd_if_var_vs_var_ne
- test_cmd_if_var_vs_var_contains
- test_cmd_if_var_vs_var_not_contains
All tests fail because the grammar only accepts SIMPLEVALUE on RHS,
not IDENTIFIER. Implementation in S1-T2 will make them pass.
Wrap int(var_value) in __eval_basiccondition() with try/except to
prevent ValueError crash when a variable is undefined, empty, or
contains non-numeric text. In warn mode the comparison evaluates to
false; in stop mode a PPPInterrupt is raised with a descriptive message.
Add 5 tests covering the ValueError crash in __eval_basiccondition()
when int() is called on empty/non-numeric variable values during
integer comparisons. Tests verify expected behavior for warn mode
(comparison evaluates to false) and stop mode (proper PPPInterrupt).
* added "$$" to end of parameters as first choice in a wildcard, to avoid confusion with a choice that could be considered parameters.
* additional fixes in the parser.
* Mapping of extranetworks through the new command. This allows you to use a "virtual" extranetwork that is converted to a real one depending on conditions, like the model kind/variant.
* Fixed a parsing bug with the if command.
* Some refactoring and additional checks.
* Improved timing logging.
* Refactor application support handling.
* Enhanced regex patterns in `ppp.py` for wildcard and choice detection to ensure proper escaping.
* Included icon source files.
* New option on_warning to stop on invalid content.
* New option cleanup_extra_separators_include_eol to choose whether to also remove adjacent EOLs when removing extra separators or not. Default is not to do it. In previous versions it was forced.
* Refactoring of the cleanup method.
* Only simplify attention modifiers when the merge attention option is set.
* A1111: avoid logging about HR prompts and avoid saving them in extra metadata when not different.
* A1111: consider options and environment info in the caching of results.
* Some refactorings.
* Enhance PromptPostProcessorComfyUINode to return variables.
* New PromptPostProcessorSelectVariableComfyUINode for selecting variables.
* Fixed detection of Flux Schnell in Forge.
* Improved documentation.
* Fixed and refactored some UI settings. Slight change in the generation of batched seeds.
* Detection of reforge.
* Small refactoring when getting choices.
* Cache now takes wildcard definitions into consideration.
* ComfyUI: node is not cached if wildcard processing is active.
* Add a space with prefix and suffix if needed.
* Checks requirements before installing them.
* Fix a bug obtaining random seed.
* Reading version number from pyproject file.
* A1111: Support for forcing the same seed/variation seed to all images in a batch.
* A1111: Support for unlinking the seed from the image seed and specifying one for the prompt.
* ComfyUI: Warning on use of invalid constructs. Related settings kept but default to False.
This PR adds a Github Action (publish-node-action) that will publish an
updated version of your custom node to the
[registry](https://comfyregistry.org/) whenever the `pyproject.toml`
file changes.
* Support for choice labels and their use for filtering wildcard choices.
* New system variable _modelclass and renaming of _sd->_model, _sdname->_modelname and _sdfullname->_modelfullname.
* Support for auraflow models with _is_auraflow.
* Option to "join attention" when sending to negative replaced and generalized as "merge attention".
* Improved processing of extranetwork tags.
* Better debug log.
* Set commands support lazy evaluation and content addition.
* Unified in one tree and processing phase.
* Supports Flux.
* Fix evaluation of string variable as truthy.
* Show invalid wildcards.
* Better detection of installed UI.
* Improved cache of results.
* Works as a ComfyUI node.
* Debug setting changed to debug level.
* Fixes in variable use.
* Added timing reporting.
* Detection of more model types.
* Installation script for requirements.
* Extension metadata for A1111.
* Lark grammar in separate file and cached.
* Improved conditions for if command.
* Avoid repeats in the processing of prompts.
* Fix multiple loading of settings.
* New options to choose whether to process in img2img.
* Option to detect and do something with unwanted wildcards.
* Cleanup processing rewritten and separated in multiple options.
# Pull Request
## Description
Fixes processing A1111 hr prompts.
Fixes#3
## Type of change
- [x] Bug fix (non-breaking change which fixes an issue)
## How Has This Been Tested?
**Test Configuration**:
- A1111 v1.6
- SD.Next
## Checklist
- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my own code
- [x] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my
feature works
- [x] New and existing unit tests pass locally with my changes
- [ ] Any dependent changes have been merged and published in downstream
modules
- [x] I have checked my code and corrected any misspellings