Repository navigation
fix: close remaining multi-worker detection gaps - #449
Conversation
- Recognize the remaining dict-mutator, pool/ExitStack/partial callback, conditional class, type()/new_class namespace and metaclass spellings in the Gunicorn worker scan. - Keep the documented app target when value-taking gunicorn flags precede it. - Accept a BOM-prefixed gunicorn config in both probe and scanner.
Architecture Data flow Review ✨ Nothing flagged · reviewed Tip Set 🪧 More tips
Thanks for using PR Lens! It's free for OSS. If it helped, a star helps other teams find it. |
|
@codex review |
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 26 minutes. View limit details
Walkthrough
Merge Risk:
|
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 015aab8e17
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
- Keep every reachable literal base tuple when a conditional branch reassigns it. - Do not record a calling lambda as a safe constructor barrier. - Check ExitStack.push only through its exit hook and keep partial thread payloads. - Separate new_class creation from instantiation and accept a positional exec_body. - Handle unpacked heapq arguments and deferred annotations. - Treat --proxy-protocol as an optional-value option so --config keeps its value.
… flag - type(name, bases, ns) resolves a single literal namespace variable and stays static for a rebound one. - --wsgi-app is no longer treated as a value-taking Gunicorn option (it does not exist in Gunicorn 26).
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f93afe704d
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
…tate - A nested class that shares a module-level class name no longer rewrites that class's bases, hooks or metaclass: a bare name can never resolve to it.\n- A definite bases reassignment replaces the earlier tuple; only assignments inside a branch or loop are unioned.\n- A literal namespace is no longer trusted after del/update/pop/clear/|= mutation.\n- stack.push() only counts its exit hook when the stack actually unwinds.
The panel still supports Python 3.10, where ast.TryStar does not exist; referencing it directly raised AttributeError for any non-empty config. Look the newer node types up defensively and filter them out.
|



Summary
dict.__dict__/globals().__class__.__dict__map_async/starmap_asyncpool callbacks,ExitStack.push, andfunctools.partialthread targets andkey=callbacksif/try/withblocks (super chains, literal base tuples, constructor barriers, metaclasses, deferredtype()constructors)heapqcalls,dict(...)and named-__init__type namespaces, nesteddefdefaults,types.new_class(exec_body=...), and bare-name metaclasses--proxy-protocol/--http2-cleartextno longer swallow the app target.gunicorn.conf.pyfiles in both the scanner and the entrypoint probe.Verification
python -m pytest -m "not integration"— 1489 passed, 5 deselected (22 new regression tests)python -c "import config, app, gunicorn_config_probe"— cleanpython -m compileall— cleansh entrypoint.shstub check for--proxy-protocol/--http2-cleartext— default app target preservedSummary by CodeRabbit
--proxy-protocol, and no longer treats--wsgi-appas requiring a value.