diff options
| author | Ian Cordasco <graffatcolmingov@gmail.com> | 2016-07-30 00:42:32 +0000 |
|---|---|---|
| committer | Ian Cordasco <graffatcolmingov@gmail.com> | 2016-07-30 00:42:32 +0000 |
| commit | b02855769bcc89e9c9ad8aa84e6cfdf3fdac1f2e (patch) | |
| tree | 609e22c5263c7d97cf39dec8b621b3edd70edee5 | |
| parent | e619fd3b2095a4951ecd1cfceab195e6f501f8ee (diff) | |
| parent | 63f5f15068ed7031b4375168392ca64a856083b6 (diff) | |
| download | flake8-b02855769bcc89e9c9ad8aa84e6cfdf3fdac1f2e.tar.gz | |
Merge branch 'bug/194' into 'master'
Re-allow for relative paths for exclude
*Description of changes*
Use the directory that the configuration file is found in as the parent (instead of the current working directory) when normalizing paths.
*Related to:* #194
See merge request !109
| -rw-r--r-- | docs/source/release-notes/3.0.3.rst | 18 | ||||
| -rw-r--r-- | src/flake8/options/config.py | 11 | ||||
| -rw-r--r-- | src/flake8/options/manager.py | 4 | ||||
| -rw-r--r-- | tox.ini | 16 |
4 files changed, 34 insertions, 15 deletions
diff --git a/docs/source/release-notes/3.0.3.rst b/docs/source/release-notes/3.0.3.rst index 92252ac..0f62a50 100644 --- a/docs/source/release-notes/3.0.3.rst +++ b/docs/source/release-notes/3.0.3.rst @@ -4,21 +4,25 @@ - Disable ``--jobs`` for any version of Python on Windows. (See also `this Python bug report`_) -- Fix ``# noqa`` comments followed by a ``:`` and explanation broken by - 3.0.0 (See also `GitLab#178`_) - -- Fix issue where users were unable to ignore plugin errors that were on - by default. (See also `GitLab#195`_) - - Raise exception when entry_point in plugin not callable. This raises an informative error when a plugin fails to load because its entry_point is not callable, which can happen with a plugin which is buggy or not updated for the current version of flake8. This is nicer than raising a `PicklingError` about failing to pickle a module (See also `GitLab#164`_) +- Fix ``# noqa`` comments followed by a ``:`` and explanation broken by + 3.0.0 (See also `GitLab#178`_) + - Always open our output file in append mode so we do not overwrite log messages. (See also `GitLab#193`_) +- When normalizing path values read from configuration, keep in context the + directory where the configuration was found so that relative paths work. + (See also `GitLab#194`_) + +- Fix issue where users were unable to ignore plugin errors that were on + by default. (See also `GitLab#195`_) + .. links .. _GitLab#164: @@ -27,6 +31,8 @@ https://gitlab.com/pycqa/flake8/issues/178 .. _GitLab#193: https://gitlab.com/pycqa/flake8/issues/193 +.. _GitLab#194: + https://gitlab.com/pycqa/flake8/issues/193 .. _GitLab#195: https://gitlab.com/pycqa/flake8/issues/195 .. _this Python bug report: diff --git a/src/flake8/options/config.py b/src/flake8/options/config.py index d1408fe..8306251 100644 --- a/src/flake8/options/config.py +++ b/src/flake8/options/config.py @@ -43,6 +43,8 @@ class ConfigFileFinder(object): # List of filenames to find in the local/project directory self.project_filenames = ('setup.cfg', 'tox.ini', self.program_config) + self.local_directory = os.path.abspath(os.curdir) + if not args: args = ['.'] self.parent = self.tail = os.path.abspath(os.path.commonprefix(args)) @@ -78,6 +80,7 @@ class ConfigFileFinder(object): if os.path.exists(filename): yield filename found_config_files = True + self.local_directory = parent (parent, tail) = os.path.split(parent) def local_config_files(self): @@ -160,9 +163,11 @@ class MergedConfigParser(object): self.config_finder = ConfigFileFinder(self.program_name, self.args, self.extra_config_files) - @staticmethod - def _normalize_value(option, value): - final_value = option.normalize(value) + def _normalize_value(self, option, value): + final_value = option.normalize( + value, + self.config_finder.local_directory, + ) LOG.debug('%r has been normalized to %r for option "%s"', value, final_value, option.config_name) return final_value diff --git a/src/flake8/options/manager.py b/src/flake8/options/manager.py index 58d8b2d..de9356e 100644 --- a/src/flake8/options/manager.py +++ b/src/flake8/options/manager.py @@ -121,14 +121,14 @@ class Option(object): return self.long_option_name[2:].replace('-', '_') return self.short_option_name[1] - def normalize(self, value): + def normalize(self, value, *normalize_args): """Normalize the value based on the option configuration.""" if self.normalize_paths: # Decide whether to parse a list of paths or a single path normalize = utils.normalize_path if self.comma_separated_list: normalize = utils.normalize_paths - return normalize(value) + return normalize(value, *normalize_args) elif self.comma_separated_list: return utils.parse_comma_separated_list(value) return value @@ -138,10 +138,18 @@ commands = # Once Flake8 3.0 is released and in a good state, we can use both and it will # work well \o/ ignore = D203 -# NOTE(sigmavirus24): Once we release 3.0.0 this exclude option can be specified -# across multiple lines. Presently it cannot be specified across multiple lines. -# :-( -exclude = .tox,.git,__pycache__,docs/source/conf.py,build,dist,tests/fixtures/*,*.pyc,*.egg-info,./.cache,./.eggs +exclude = + .tox, + .git, + __pycache__, + docs/source/conf.py, + build, + dist, + tests/fixtures/*, + *.pyc, + *.egg-info, + .cache, + .eggs max-complexity = 10 import-order-style = google application-import-names = flake8 |
