Skip to content

Gazelle will confuse stdlib packages/modules with sibling modules #3097

Open
@dougthor42

Description

@dougthor42

🐞 bug report

Affected Rule

gazelle

Is this a regression?

It's been like this for as long as I've been using rules_python.

Description

If there's a file called, say, typing.py and a sibling file foo.py has from typing import TYPE_CHECKING or similar, gazelle will add :typing to the foo target deps (or to the package srcs for package generation mode).

The correct behavior is to not include :typing unless the import is from . import typing or from .typing import MyType or import .typing as typing.

🔬 Minimal Reproduction

Dir structure:

$ tree gazelle/python/testdata/stdlib_confusion/
gazelle/python/testdata/stdlib_confusion/
├── file_based
│   ├── BUILD.in
│   ├── BUILD.out
│   ├── foo.py
│   ├── __init__.py
│   └── typing.py
├── package_based
│   ├── BUILD.in
│   ├── BUILD.out
│   ├── foo.py
│   ├── __init__.py
│   └── typing.py
├── README.md
├── test.yaml
└── WORKSPACE
--- FAIL: TestGazelleBinary (0.00s)
    --- FAIL: TestGazelleBinary/stdlib_confusion (0.02s)
        python_test.go:186: stdlib_confusion/file_based/BUILD diff (-want,+got):
              (
                """
                ... // 6 identical lines
                    srcs = ["foo.py"],
                    visibility = ["//:__subpackages__"],
            +       deps = [":typing"],
                )
              
                ... // 5 identical lines
                """
              )
        python_test.go:186: stdlib_confusion/package_based/BUILD diff (-want,+got):
              (
                """
                ... // 5 identical lines
                        "__init__.py",
                        "foo.py",
            +           "typing.py",
                    ],
                    visibility = ["//:__subpackages__"],
                )
                """
              )

Metadata

Metadata

Assignees

Labels

gazelleGazelle plugin related issues

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions

    pFad - Phonifier reborn

    Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

    Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


    Alternative Proxies:

    Alternative Proxy

    pFad Proxy

    pFad v3 Proxy

    pFad v4 Proxy