Skip to main content
Codegen provides powerful APIs for reducing conditional logic to constant values. This is particularly useful for removing feature flags, cleaning up dead code paths, and simplifying conditional logic.

Overview

The reduce_condition() method is available on various conditional constructs: When you reduce a condition to True or False, Codegen automatically:
  1. Evaluates which code path(s) to keep
  2. Removes unnecessary branches
  3. Preserves proper indentation and formatting

Motivating Example

For example, consider the following code:
.reduce_condition allows you to deterministically reduce this code to the following:
This is useful when a feature flag is fully “rolled out”.

Implementations

IfBlockStatements

You can reduce if/else statements to either their “true” or “false” branch. For example, in the code snippet above:
This will remove the else branch and keep the print statement, like so:

Handling Elif Chains

Codegen intelligently handles elif chains when reducing conditions:

Ternary Expressions

Ternary expressions (conditional expressions) can also be reduced:

Nested Ternaries

Codegen handles nested ternary expressions correctly:

Binary Operations

Binary operations (and/or) can be reduced to simplify logic:

Function Calls

Function calls can also be reduced, which is particularly useful when dealing with hooks or utility functions that return booleans:

Feature Flag Hooks

A common use case is reducing feature flag hooks to constants. Consider the following code:
We can reduce the useFeatureFlag hook to a constant value like so, with FunctionCall.reduce_condition:
This produces the following code:

Comprehensive Example

Here’s a complete example of removing a feature flag from both configuration and usage:
This example:
  1. Removes the feature flag from configuration
  2. Finds all usages of the feature flag hook
  3. Reduces each usage to a constant value
  4. Automatically handles all conditional constructs using the flag
When reducing a function call, Codegen automatically handles all dependent conditions. This includes: - If/else statements - Ternary expressions - Binary operations

TypeScript and JSX Support

Condition reduction works with TypeScript and JSX, including conditional rendering:
Condition reduction is particularly useful for cleaning up feature flags in React components, where conditional rendering is common.