Skip to content

⚡ Bolt: Optimize regex patterns and set creation#161

Closed
abhimehro wants to merge 1 commit intomainfrom
bolt-regex-optimization-1860199817399537809
Closed

⚡ Bolt: Optimize regex patterns and set creation#161
abhimehro wants to merge 1 commit intomainfrom
bolt-regex-optimization-1860199817399537809

Conversation

@abhimehro
Copy link
Owner

💡 What: Pre-compiled regex patterns (RULE_PATTERN, PROFILE_ID_PATTERN, PROFILE_URL_PATTERN) and moved the dangerous characters set (DANGEROUS_FOLDER_CHARS) to module-level constants.
🎯 Why: To reduce overhead of compiling regexes and allocating sets in tight loops (e.g., validating thousands of rules).
📊 Impact: Improves CPU efficiency during validation of large rule sets.
🔬 Measurement: Verified with existing tests; functionality remains identical.


PR created automatically by Jules for task 1860199817399537809 started by @abhimehro

Pre-compiled regex patterns and moved set creation to module level to improve performance in validation loops.

Co-authored-by: abhimehro <84992105+abhimehro@users.noreply.github.com>
Copilot AI review requested due to automatic review settings February 4, 2026 14:39
@google-labs-jules
Copy link

👋 Jules, reporting for duty! I'm here to lend a hand with this pull request.

When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down.

I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job!

For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

@trunk-io
Copy link

trunk-io bot commented Feb 4, 2026

Merging to main in this repository is managed by Trunk.

  • To merge this pull request, check the box to the left or comment /trunk merge below.

@github-actions github-actions bot added the python label Feb 4, 2026
@gemini-code-assist
Copy link

Summary of Changes

Hello @abhimehro, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request introduces performance optimizations by refactoring how regular expressions and a specific character set are handled. By pre-compiling regex patterns and defining a frequently used character set as a module-level constant, the changes aim to reduce computational overhead, particularly in scenarios involving repeated validation checks, thereby improving CPU efficiency.

Highlights

  • Regex Pre-compilation: Three regular expression patterns (RULE_PATTERN, PROFILE_ID_PATTERN, PROFILE_URL_PATTERN) are now pre-compiled at the module level using re.compile().
  • Constant Set Definition: The set of DANGEROUS_FOLDER_CHARS is moved from an inline definition within a function to a module-level constant.
  • Usage Update: All instances where these regex patterns or the dangerous characters set were previously created inline are updated to use the new module-level constants.
Changelog
  • main.py
    • Added RULE_PATTERN, PROFILE_ID_PATTERN, PROFILE_URL_PATTERN as pre-compiled regex constants.
    • Defined DANGEROUS_FOLDER_CHARS as a module-level set constant.
    • Updated extract_profile_id to use PROFILE_URL_PATTERN.
    • Updated is_valid_profile_id_format to use PROFILE_ID_PATTERN.
    • Updated validate_profile_id to use PROFILE_ID_PATTERN.
    • Updated is_valid_rule to use RULE_PATTERN.
    • Updated is_valid_folder_name to use DANGEROUS_FOLDER_CHARS.
Activity
  • The pull request was automatically created by Jules for task 1860199817399537809, initiated by @abhimehro.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR optimizes regex pattern compilation and set creation by moving them from inline definitions to module-level constants. The optimization reduces overhead when validating large numbers of rules, profile IDs, and folder names by avoiding repeated regex compilation and set allocation.

Changes:

  • Pre-compiled three regex patterns (RULE_PATTERN, PROFILE_ID_PATTERN, PROFILE_URL_PATTERN) at module level
  • Moved dangerous folder character set to a module-level constant (DANGEROUS_FOLDER_CHARS)
  • Updated four validation functions to use the pre-compiled patterns and set

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request effectively optimizes the application by pre-compiling regular expression patterns and moving the DANGEROUS_FOLDER_CHARS set to a module-level constant. These changes directly address the stated goal of reducing overhead in tight loops, which should lead to improved CPU efficiency during the validation of large rule sets. The implementation is clean and correctly replaces inline regex and set creations with their optimized counterparts. This is a solid performance improvement.

Copilot AI added a commit that referenced this pull request Feb 8, 2026
…itization, add dry-run plan details

Incorporates the best changes from 36 Jules PRs, addressing review feedback:

Bolt (Performance) - from PR #173:
- Pre-compile PROFILE_ID_PATTERN and RULE_PATTERN at module level
- Use compiled patterns in is_valid_profile_id_format, validate_profile_id, and is_valid_rule
- Supersedes PRs: #140, #143, #152, #155, #158, #161, #167, #170, #173

Sentinel (Security) - from PR #172 with review feedback:
- Enhance sanitize_for_log to redact Basic Auth credentials in URLs
- Redact sensitive query parameters (token, key, secret, password, etc.)
- Handle fragment separators (#) per Gemini Code Assist review
- Use [^&#\s]* pattern per Copilot reviewer suggestion
- Update docstring per reviewer suggestion
- Supersedes PRs: #142, #145, #148, #151, #154, #157, #160, #169, #172

Palette (UX) - from PR #174 with lint fixes:
- Add print_plan_details function for dry-run visibility
- Fix duplicate render_progress_bar definition bug
- Supersedes PRs: #139, #141, #144, #147, #150, #153, #156, #159, #162, #165, #168, #171, #174

Also: #146, #149, #164 (parallel folder deletion) and #166 (auto-fix .env perms) are independent features not consolidated here.

Co-authored-by: abhimehro <84992105+abhimehro@users.noreply.github.com>
@abhimehro abhimehro closed this Feb 9, 2026
@abhimehro abhimehro deleted the bolt-regex-optimization-1860199817399537809 branch February 9, 2026 00:17
abhimehro added a commit that referenced this pull request Feb 9, 2026
…itization, add dry-run plan details

Incorporates the best changes from 36 Jules PRs, addressing review feedback:

Bolt (Performance) - from PR #173:
- Pre-compile PROFILE_ID_PATTERN and RULE_PATTERN at module level
- Use compiled patterns in is_valid_profile_id_format, validate_profile_id, and is_valid_rule
- Supersedes PRs: #140, #143, #152, #155, #158, #161, #167, #170, #173

Sentinel (Security) - from PR #172 with review feedback:
- Enhance sanitize_for_log to redact Basic Auth credentials in URLs
- Redact sensitive query parameters (token, key, secret, password, etc.)
- Handle fragment separators (#) per Gemini Code Assist review
- Use [^&#\s]* pattern per Copilot reviewer suggestion
- Update docstring per reviewer suggestion
- Supersedes PRs: #142, #145, #148, #151, #154, #157, #160, #169, #172

Palette (UX) - from PR #174 with lint fixes:
- Add print_plan_details function for dry-run visibility
- Fix duplicate render_progress_bar definition bug
- Supersedes PRs: #139, #141, #144, #147, #150, #153, #156, #159, #162, #165, #168, #171, #174

Also: #146, #149, #164 (parallel folder deletion) and #166 (auto-fix .env perms) are independent features not consolidated here.

Co-authored-by: abhimehro <84992105+abhimehro@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants