Skip to content

Commit

Permalink
Version 0.1.0 pre-release
Browse files Browse the repository at this point in the history
  • Loading branch information
sobolevn committed Sep 30, 2018
1 parent 45871cd commit 17a5301
Show file tree
Hide file tree
Showing 13 changed files with 1,010 additions and 0 deletions.
18 changes: 18 additions & 0 deletions .editorconfig
@@ -0,0 +1,18 @@
# Check http://editorconfig.org for more information
# This is the main config file for this project:
root = true

[*]
charset = utf-8
trim_trailing_whitespace = true
end_of_line = lf
indent_style = space
insert_final_newline = true
indent_size = 2

[*.py]
indent_size = 4

[tests/fixtures/incorrect.py]
# We need it for better testing final spaces:
trim_trailing_whitespace = false
196 changes: 196 additions & 0 deletions .gitignore
@@ -0,0 +1,196 @@
#### joe made this: http://goel.io/joe
#### python ####
# Byte-compiled / optimized / DLL files
.pytest_cache
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg

# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
target/

# Jupyter Notebook
.ipynb_checkpoints

# pyenv
.python-version

# celery beat schedule file
celerybeat-schedule

# SageMath parsed files
*.sage.py

# Environments
.env
.venv
env/
venv/
ENV/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
#### macos ####
# General
*.DS_Store
.AppleDouble
.LSOverride

# Icon must end with two \r
Icon


# Thumbnails
._*

# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent

# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
#### windows ####
# Windows thumbnail cache files
Thumbs.db
ehthumbs.db
ehthumbs_vista.db

# Dump file
*.stackdump

# Folder config file
Desktop.ini

# Recycle Bin used on file shares
$RECYCLE.BIN/

# Windows Installer files
*.cab
*.msi
*.msm
*.msp

# Windows shortcuts
*.lnk
#### linux ####
*~

# temporary files which can be created if a process still has a handle open of a deleted file
.fuse_hidden*

# KDE directory preferences
.directory

# Linux trash folder which might appear on any partition or disk
.Trash-*

# .nfs files are created when an open file is removed but is still being accessed
.nfs*
#### jetbrains ####
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839

# User-specific stuff:
.idea/

## File-based project format:
*.iws

## Plugin-specific files:

# IntelliJ
/out/

# mpeltonen/sbt-idea plugin
.idea_modules/

# JIRA plugin
atlassian-ide-plugin.xml

# Cursive Clojure plugin
.idea/replstate.xml

# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
27 changes: 27 additions & 0 deletions .travis.yml
@@ -0,0 +1,27 @@
language: python

matrix:
fast_finish: true
include:
- python: 3.6
- python: 3.7
dist: xenial
sudo: true

install:
- pip install poetry
- poetry install
- poetry develop

script:
- poetry run pytest
- poetry run mypy flake8_broken_line.py

after_success:
- pip install coveralls
- coveralls

notifications:
email:
on_success: never
on_failure: change
39 changes: 39 additions & 0 deletions README.md
@@ -0,0 +1,39 @@
# flake8-broken-line

[![wemake.services](https://img.shields.io/badge/-wemake.services-green.svg?label=%20&logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAALGPC%2FxhBQAAAAFzUkdCAK7OHOkAAAAbUExURQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F%2F%2F5TvxDIAAAAIdFJOUwAjRA8xXANAL%2Bv0SAAAADNJREFUGNNjYCAIOJjRBdBFWMkVQeGzcHAwksJnAPPZGOGAASzPzAEHEGVsLExQwE7YswCb7AFZSF3bbAAAAABJRU5ErkJggg%3D%3D)](https://wemake.services) [![Build Status](https://travis-ci.org/sobolevn/flake8-broken-line.svg?branch=master)](https://travis-ci.org/sobolevn/flake8-broken-line) [![Coverage](https://coveralls.io/repos/github/sobolevn/flake8-broken-line/badge.svg?branch=master)](https://coveralls.io/github/sobolevn/flake8-broken-line?branch=master) [![Python Version](https://img.shields.io/pypi/pyversions/flake8-broken-line.svg)](https://pypi.org/project/flake8-broken-line/) [![PyPI version](https://badge.fury.io/py/flake8-broken-line.svg)](https://pypi.org/project/flake8-broken-line/)

Do not break the line! 馃毃

## Installation

```bash
pip install flake8-broken-line
```

## Code example

Things we check with this plugin:

```python
# String line breaks, use `()` or `"""` instead:

some_string = 'first line\
second line'

# Use a single line, `()`, or new variables instead:

if 1 == 1 and \
2 == 2:
print('Do not do that!')

```

## Error codes

| Error code | Description |
|:----------:|:---------------------------------------------:|
| N400 | Found backslash that is used for line braking |

## License

MIT.
27 changes: 27 additions & 0 deletions flake8_broken_line.py
@@ -0,0 +1,27 @@
# -*- coding: utf-8 -*-

import re
from typing import Optional, Tuple

import pkg_resources

pkg_name = 'flake8-broken-line'

#: We store the version number inside the `pyproject.toml`:
pkg_version: str = pkg_resources.get_distribution(pkg_name).version

INVALID_LINE_BREAK = re.compile(r'(?<!\\)\\$', re.M)

N400 = 'N400: Found backslash that is used for line braking'


def check_line_breaks(physical_line: str) -> Optional[Tuple[int, str]]:
"""Functional ``flake8`` plugin to check for backslashes."""
if INVALID_LINE_BREAK.search(physical_line.rstrip()):
return 0, N400
return None


# Flake8 API definition:
check_line_breaks.name = pkg_name # type: ignore
check_line_breaks.version = pkg_version # type: ignore

0 comments on commit 17a5301

Please sign in to comment.