In the project
codebase, there are multiple standalone packages in a folder titled plugins
, and each package is in its own folder which has a setup.py
file in it, and the project itself is a python package with its own setup.py
file.
I have two folders, project/project
and plugins/myplugin_one/project_plugins/myplugin_one
, that I need to be considered first_party
and third_party
when appropriate. For example, inside plugins/myplugin_one/project_plugins/myplugin_one
, there's a file config.py
with this code:
from dataclasses import dataclass, field
from typing import Any, Dict, List, Optional
# First Party
from project.core.config_store import ConfigStore
The import from project.core.config_store import ConfigStore
is being treated as a first_party
import, but should be considered as a third_party
import because the file resides in plugins/myplugin_one/project_plugins/myplugin_one
and myplugin_one
is a standalone package (first_party
), while project
is third_party
in this context.
Similarly, for any imports residing in files inside project/project
, project/project
should be considered first_party
and importing from plugins/myplugin_one/project_plugins/myplugin_one
should be considered third_party
.
The sections
order for the project should be:
sections=
FUTURE
STDLIB
THIRDPARTY
FIRSTPARTY
LOCALFOLDER
This is an upgrade from isort 4 to isort 5.4.2, so default sections are no longer first_party
but third_party
and __init__.py
is not skipped by default.
This is my isort.cfg
file:
[settings]
multi_line_output=3
include_trailing_comma=True
force_grid_wrap=0
use_parentheses=True
float_to_top = true
line_length=88
ensure_newline_before_comments=True
sections=
FUTURE
STDLIB
THIRDPARTY
FIRSTPARTY
LOCALFOLDER
import_heading_stdlib=Standard Library
import_heading_firstparty=First Party
import_heading_thirdparty=Third Party
import_heading_localfolder=Local Folder
known_first_party=project,project_plugins
known_local_folder=build_helpers,tests
src_paths=
skip=
__init__.py