Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issue #1661: Add wemake profile #1662

Merged
merged 3 commits into from Feb 10, 2021
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Expand Up @@ -8,6 +8,7 @@ Find out more about isort's release policy [here](https://pycqa.github.io/isort/
- Fixed #1631: as import comments can in some cases be duplicated.
- Implemented #1648: Export MyPY type hints.
- Implemented #1641: Identified import statements now return runnable code.
- Implemented #1661: Added "wemake" profile.

### 5.7.0 December 30th 2020
- Fixed #1612: In rare circumstances an extra comma is added after import and before comment.
Expand Down
8 changes: 8 additions & 0 deletions docs/configuration/profiles.md
Expand Up @@ -76,3 +76,11 @@ To use any of the listed profiles, use `isort --profile PROFILE_NAME` from the c
- **force_grid_wrap**: `0`
- **use_parentheses**: `True`
- **line_length**: `100`

#wemake


- **multi_line_output**: `3`
- **include_trailing_comma**: `True`
- **use_parentheses**: `True`
- **line_length**: `80`
7 changes: 7 additions & 0 deletions isort/profiles.py
Expand Up @@ -55,6 +55,12 @@
"use_parentheses": True,
"line_length": 100,
}
wemake = {
"multi_line_output": 3,
"include_trailing_comma": True,
"use_parentheses": True,
"line_length": 80,
}

profiles: Dict[str, Dict[str, Any]] = {
"black": black,
Expand All @@ -65,4 +71,5 @@
"plone": plone,
"attrs": attrs,
"hug": hug,
"wemake": wemake,
}
87 changes: 87 additions & 0 deletions tests/unit/profiles/test_wemake.py
@@ -0,0 +1,87 @@
"""A set of test cases for the wemake isort profile.

Snippets are taken directly from the wemake-python-styleguide project here:
https://github.com/wemake-services/wemake-python-styleguide
"""
from functools import partial

from ..utils import isort_test

wemake_isort_test = partial(
isort_test, profile="wemake", known_first_party=["wemake_python_styleguide"]
)


def test_wemake_snippet_one():
wemake_isort_test(
"""
import ast
import tokenize
import traceback
from typing import ClassVar, Iterator, Sequence, Type

from flake8.options.manager import OptionManager
from typing_extensions import final

from wemake_python_styleguide import constants, types
from wemake_python_styleguide import version as pkg_version
from wemake_python_styleguide.options.config import Configuration
from wemake_python_styleguide.options.validation import validate_options
from wemake_python_styleguide.presets.types import file_tokens as tokens_preset
from wemake_python_styleguide.presets.types import filename as filename_preset
from wemake_python_styleguide.presets.types import tree as tree_preset
from wemake_python_styleguide.transformations.ast_tree import transform
from wemake_python_styleguide.violations import system
from wemake_python_styleguide.visitors import base

VisitorClass = Type[base.BaseVisitor]
"""
)


def test_wemake_snippet_two():
wemake_isort_test(
"""
from collections import defaultdict
from typing import ClassVar, DefaultDict, List

from flake8.formatting.base import BaseFormatter
from flake8.statistics import Statistics
from flake8.style_guide import Violation
from pygments import highlight
from pygments.formatters import TerminalFormatter
from pygments.lexers import PythonLexer
from typing_extensions import Final

from wemake_python_styleguide.version import pkg_version

#: That url is generated and hosted by Sphinx.
DOCS_URL_TEMPLATE: Final = (
'https://wemake-python-stylegui.de/en/{0}/pages/usage/violations/'
)
"""
)


def test_wemake_snippet_three():
wemake_isort_test(
"""
import ast

from pep8ext_naming import NamingChecker
from typing_extensions import final

from wemake_python_styleguide.transformations.ast.bugfixes import (
fix_async_offset,
fix_line_number,
)
from wemake_python_styleguide.transformations.ast.enhancements import (
set_if_chain,
set_node_context,
)


@final
class _ClassVisitor(ast.NodeVisitor):
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Probably class _ClassVisitor(ast.NodeVisitor): ...

"""
)