Skip to content

Avoid relative imports; import only modules #125

@justinchuby

Description

@justinchuby
  1. Even though relative imports are prevalent in ort, they are confusing, harder to manage and refactor. We should prefer absolute imports for clarity and robustness.
    https://softwareengineering.stackexchange.com/questions/159503/whats-wrong-with-relative-imports-in-python
    https://google.github.io/styleguide/pyguide.html#22-imports
  2. Import only modules (in most cases that is not __init__).
    Import only the module instead of classes and functions to (1) keep the namespace clean and provide readers with more context on where its members come from, and (2) prevent circular import errors.
    • Prevent circular import errors: Programming FAQ — Python 3.10.4 documentation
      Circular imports are fine where both modules use the “import ” form of import. They fail when the 2nd module wants to grab a name out of the first (“from module import name”) and the import is at the top level. That’s because names in the 1st are not yet available, because the first module is busy importing the 2nd.

    • Clean namespace: For example, readers don’t need to backtrack to see sleep is a function from time, as opposed to a function defined in the file. https://google.github.io/styleguide/pyguide.html#22-imports

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions