Skip to content

Add exponential function spacing option - #1

Open
pullfrog[bot] wants to merge 1 commit into
mainfrom
pullfrog/exponential-function-spacing
Open

Add exponential function spacing option#1
pullfrog[bot] wants to merge 1 commit into
mainfrom
pullfrog/exponential-function-spacing

Conversation

@pullfrog

@pullfrog pullfrog Bot commented Dec 19, 2025

Copy link
Copy Markdown

Summary

This PR adds a new --exponential-function-spacing flag that applies exponentially increasing blank lines between function definitions to discourage developers from creating too many functions in a single file.

Behavior

When enabled, the spacing follows the pattern 2^n where n is the function index (0-based):

  • 1st to 2nd function: 1 blank line (2^0)
  • 2nd to 3rd function: 2 blank lines (2^1)
  • 3rd to 4th function: 4 blank lines (2^2)
  • 4th to 5th function: 8 blank lines (2^3)
  • And so on...

Example

Before:

def first_function():
    pass

def second_function():
    pass

def third_function():
    pass

After (with --exponential-function-spacing):

def first_function():
    pass

def second_function():
    pass


def third_function():
    pass

Changes

  • Added exponential_function_spacing boolean field to Mode class
  • Updated Mode.__hash__ and get_cache_key to include new field
  • Added function_count_at_depth tracking to EmptyLineTracker
  • Modified empty line calculation logic to apply exponential spacing
  • Added --exponential-function-spacing CLI option

Test Plan

  • All existing tests pass
  • Manual testing with sample files confirms exponential spacing behavior
  • Feature works correctly at different indentation depths

Pullfrog  | Triggered by Pullfrog | Using Claude CodeView workflow runpullfrog.com𝕏

This commit adds a new --exponential-function-spacing flag that applies
exponentially increasing blank lines between function definitions. The
spacing follows the pattern 2^n where n is the function index (0-based):
- 1st to 2nd function: 1 blank line (2^0)
- 2nd to 3rd function: 2 blank lines (2^1)
- 3rd to 4th function: 4 blank lines (2^2)
- 4th to 5th function: 8 blank lines (2^3)

This feature discourages developers from creating too many functions in
a single file by making the visual separation increasingly dramatic.

Changes:
- Added exponential_function_spacing boolean field to Mode class
- Updated Mode.__hash__ and get_cache_key to include new field
- Added function_count_at_depth tracking to EmptyLineTracker
- Modified empty line calculation logic to apply exponential spacing
- Added --exponential-function-spacing CLI option
@pullfrog

pullfrog Bot commented Dec 19, 2025

Copy link
Copy Markdown
Author
@github-actions

Copy link
Copy Markdown

diff-shades reports zero changes comparing this PR (7915bc6) to main (b8c15b1).


What is this? | Workflow run | diff-shades documentation

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

0 participants