diff --git a/.isort.cfg b/.isort.cfg new file mode 100644 index 000000000..f61ed443e --- /dev/null +++ b/.isort.cfg @@ -0,0 +1,31 @@ +# Copyright 2022 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +# +# Config file for the isort python module. +# This is used to enforce import sorting standards. +# +# https://pycqa.github.io/isort/docs/configuration/options.html + +[settings] +# Be compatible with `black` since it also matches what we want. +profile = black + +line_length = 80 +length_sort = false +force_single_line = true +lines_after_imports = 2 +from_first = false +case_sensitive = false +force_sort_within_sections = true +order_by_type = false + +# Ignore generated files. +extend_skip_glob = *_pb2.py + +# Allow importing multiple classes on a single line from these modules. +# https://google.github.io/styleguide/pyguide#s2.2-imports +single_line_exclusions = + abc, + collections.abc, + typing, diff --git a/isort b/isort new file mode 100755 index 000000000..ccf1640d6 --- /dev/null +++ b/isort @@ -0,0 +1,30 @@ +#!/usr/bin/env vpython3 +# Copyright 2022 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# Note: We use tags here instead of refs because refs will always hit the +# network to see if there are any updates. + +# [VPYTHON:BEGIN] +# python_version: "3.8" +# +# wheel: < +# name: "infra/python/wheels/isort-py3" +# version: "version:5.10.1" +# > +# +# [VPYTHON:END] + +from pathlib import Path +import sys + + +THIS_DIR = Path(__file__).resolve().parent +RC_FILE = THIS_DIR / '.isort.cfg' + +# Set default config options. If a project wants to deviate, they'll have to +# manually override. +sys.argv = sys.argv[:1] + [f'--settings-file={RC_FILE}'] + sys.argv[1:] + +import isort.__main__