Skip to content

Latest commit

 

History

History
47 lines (30 loc) · 1.26 KB

0008-standardized-imports.md

File metadata and controls

47 lines (30 loc) · 1.26 KB

8. Standardized imports

Date: 2020-06-01

Status

Accepted

Context

Python has many ways of importing:

# option 1: import module

# option 1.a
import foo.bar.bazaar as baz
baz.do_the_thing()

# option 1.b
from foo.bar import bazaar as baz
baz.do_the_thing()

# option 2: import value
from foo.bar.bazaar import do_the_thing
do_the_thing()

Not to mention that each of these styles may be done with relative imports (replacing foo.bar with .bar if the bar package is a sibling).

Confusingly, Option 1.a and Option 1.b are conceptually the same, but mechanically there are subtle differences.

Decision

Imports within tamr_client:

  • Must import statements for modules, classes, and exceptions
  • Must from foo import bar instead of import foo.bar as bar
  • Must not import functions directly. Instead import the containing module and use module.function(...)
  • Must not use relative imports. Use absolute imports instead.

Consequences

Standardized import style helps linter correctly order imports.

Choosing import styles is a syntactic choice without semantic meaning. Removing this choice should speed up development and review.