Commit graph

2256 commits

Author SHA1 Message Date
Anthony Sottile
04f49a7a77 Only use multiprocessing when the method is fork
In python3.8 on macos and in all versions on windows the multiprocessing
method is `spawn` which does not preserve class state.
2019-10-28 10:00:18 -07:00
Anthony Sottile
7441c63de8 Merge branch 'specific_noqa_pycodestyle' into 'master'
Do not pass `noqa` to plugins, have flake8 decide whether to report

Closes #552

See merge request pycqa/flake8!331
2019-10-28 16:51:09 +00:00
Anthony Sottile
6cc0abbea2 Merge branch 'only_fork' into 'master'
Only use multiprocessing when the method is fork

Closes #587

See merge request pycqa/flake8!366
2019-10-28 16:50:22 +00:00
Anthony Sottile
51f32bbe93 Only use multiprocessing when the method is fork
In python3.8 on macos and in all versions on windows the multiprocessing
method is `spawn` which does not preserve class state.
2019-10-28 09:43:30 -07:00
Anthony Sottile
d599950e6e Merge branch 'flake8-bugbear' into 'master'
linters: Add flake8-bugbear for finding bugs and design problems

See merge request pycqa/flake8!365
2019-10-25 21:22:11 +00:00
Eric N. Vander Weele
b42e758ac7 linters: Add flake8-bugbear for finding bugs and design problems
Also, make appropriate changes to satisfy issues flagged by
`flake8-bugbear`.
2019-10-25 17:11:30 -04:00
Eric N. Vander Weele
964b3a9c21 application: Forward remaining unknown arguments to final CLI parsing
Now that `parse_preliminary_options_and_args()` ignores unknown options
and arguments, forward the remaining unknown arguments to the main CLI
and configuration method to be consumed.  This prevents re-parsing the
entire `argv` list again by forwarding the remaining arguments left to
be consumed.
2019-10-25 17:07:43 -04:00
Eric N. Vander Weele
4151ae0e53 application: Ensure --version is unknown during preliminary parsing
Now that the preliminary parser is being used, we can remove needing to
prune out `--version` and copying the original `argv` list.
2019-10-25 17:07:43 -04:00
Eric N. Vander Weele
b9c8c3e118 application: Ensure -h/--help is unknown during preliminary parsing
Now that the preliminary parser is being used, we can remove needing to
prune out `-h` and `--help` from the copied `args` list.
2019-10-25 17:07:43 -04:00
Eric N. Vander Weele
2260f5362e application: Keep unknown options in the unknown argument list
Positional arguments aren't necessary for determining where to
load configuration anymore and is safe to keep both options and
arguments to be forwarded for later parsing after configuration is
loaded.
2019-10-25 17:07:43 -04:00
Eric N. Vander Weele
7f46990f4b application: Change to argparse.ArgumentParser for preliminary parsing
Now that preliminary options are registered with the preliminary parser
on the `Application`, leverage that for parsing known options.

This important change removes the `Application.option_manager` from
being responsible for pre-configuration parsing and the workarounds
needed in the `Application.parse_preliminary_options_and_args()` to
account for the fact that `Application.option_manager` was aware of
*all* options, not just the options necessary for pre-configuration
loading.  A following commit will address removing these workarounds.
2019-10-25 17:07:43 -04:00
Eric N. Vander Weele
a90200353e application: Register preliminary options on a separate argument parser
We introduce a new `ArgumentParser` for registering the preliminary
options to be inherited by the `Application.option_manager`.  The next
step will be to use the `Application.prelim_arg_parser` for parsing and
handling preliminary options and arguments.

Note that we prevent the preliminary parser from handling `-h/--help`
and defer to that to the primary parser.
2019-10-25 17:07:43 -04:00
Eric N. Vander Weele
1d7558f7da optmanager: Inherit options from parent argument parsers
Allow for including options from parent `argparse.ArgumentParser`
objects in preparation of splitting out the handling of preliminary
options from the `OptionManager`.
2019-10-25 17:07:43 -04:00
Eric N. Vander Weele
2a5c2bb696 options: Split-out registration of preliminary options
This is in preparation for having separate `ArgumentParser`s for
preliminary and the remaining options.
2019-10-25 17:07:43 -04:00
Anthony Sottile
e2c4b50a46 Merge branch 'config-search-relative-to-cwd' into 'master'
Simplify configuration file search to be relative to cwd

See merge request pycqa/flake8!363
2019-10-23 17:58:38 +00:00
Anthony Sottile
e061259709 Merge branch 'black-format' into 'master'
Reformat files via `black`

See merge request pycqa/flake8!362
2019-10-13 17:49:37 +00:00
Eric N. Vander Weele
66f832d291 application: Remove forwarding unused preliminary arguments
The `ConfigFileFinder` doesn't utilize the preliminary arguments (i.e.,
the file names) anymore for computing the starting path for the
configuration file search.
2019-10-13 13:37:19 -04:00
Eric N. Vander Weele
3f1bdc74a9 tests: Verify ConfigFileFinder behavior based on getcwd()
Update the tests now that `ConfigFileFinder` searches relative to the current working directory.
2019-10-13 13:37:19 -04:00
Eric N. Vander Weele
584402fa1c config: Remove args parameter from ConfigFileFinder.__init__
Now that `args` parameters is not being used, it is safe to remove from
the constructor signature.

Further work is required to evaluate and clean-up tearing out the
threading-through of `args` from various callers and tests.
2019-10-13 13:37:19 -04:00
Eric N. Vander Weele
b3a31496b7 config: Search for configuration relative to current working directory
This is the initial incision to only search for configuration relative
to the current working directory where `flake8` is invoked.  This brings
configuration file detection closer to other CLI-like programs.
2019-10-13 13:37:19 -04:00
Eric N. Vander Weele
5fc1d3def0 Reformat files via black
This was missed in bb12b83.
2019-10-13 13:35:56 -04:00
Anthony Sottile
daca2c80db Merge branch 'remove-output-file-config' into 'master'
options: Remove parsing `--output-file` from the configuration file

See merge request pycqa/flake8!361
2019-10-13 03:48:44 +00:00
Anthony Sottile
a8c69c3857 Merge branch 'remove-verbose-config' into 'master'
options: Remove parsing `--verbose` from the configuration file

See merge request pycqa/flake8!360
2019-10-13 03:47:45 +00:00
Eric N. Vander Weele
bb12b83cc0 options: Remove parsing --output-file from the configuration file
The `--output-file` option is used when parsing and handling preliminary
options for logging.  It is also used to set `BaseFormatter.filename`.
Towards ensuring that the option is respected consistently for both
logging and formatting plugins, only observe the value from the CLI.
2019-10-12 15:36:17 +01:00
Eric N. Vander Weele
6017022942 options: Remove parsing --verbose from the configuration file
The `--verbose` option is only used by `flake8`, itself,` when parsing
and handling preliminary options.  After parsing and merging options
from the configuration file, there is no other behavioral impact to the
core of `flake8`.  In other words, setting `verbose = ...` in a
configuration file doesn't change the logging verbosity.

While the `FileProcessor` does expose a `verbose` attribute, obtained
from the parsed options, the verbosity of the core of `flake8` should be
consistent with how a plugin may respond to the attribute's value.
2019-10-12 14:25:50 +01:00
Anthony Sottile
0359533fca Merge branch 'remove-application-prelim-option-state' into 'master'
Remove application prelimary option state

See merge request pycqa/flake8!358
2019-10-01 18:34:25 +00:00
Eric N. Vander Weele
b54164f916 application: Remove preliminary argument parsing state
The preliminary options and arguments returned from
`.parse_preliminary_options_and_args()` are now all threaded through to
the appropriate methods during initialization.
2019-10-01 08:48:18 +02:00
Eric N. Vander Weele
95a88e3fcd application: Pass prelim opts to .find_plugins()
The configuration file and boolean to ignore configuration files can be
threaded through now that `.parse_preliminary_options_and_args()`
returns options and arguments.
2019-10-01 08:48:18 +02:00
Eric N. Vander Weele
32ebb4fa55 application: Pass prelim opts and args to .make_config_finder()
Now that `.parse_preliminary_options_and_args()` returns options and
arguments, the boolean for appending configuration and the arguments can
be threaded through to the creation of the `ConfigFileFinder`.
2019-10-01 08:48:18 +02:00
Eric N. Vander Weele
55ef2c6f5e application: Pass returned prelim options to .configure_logging()
The verbosity and output file options can be obtained from options
returned by `.parse_preliminary_options_and_args()`, instead of state
from the `Application` object.
2019-10-01 08:48:18 +02:00
Eric N. Vander Weele
6043e90855 application: Return namespace and args from preliminary arg parsing
This is the initial step towards removing state from the `Application`
object during argument parsing and handling.  The goal is to remove
`Application.prelim_opts` and `Application.prelim_args`.
2019-10-01 08:48:18 +02:00
Ian Stapleton Cordasco
6bae5f7ef6 Merge branch 'remove_E101_indent_char_resetting' into 'master'
Don't reset indent_char when we encounter E101

See merge request pycqa/flake8!357
2019-09-25 23:42:44 +00:00
Anthony Sottile
fdcec2803a Don't reset indent_char when we encounter E101 2019-09-24 13:54:32 -07:00
Anthony Sottile
121ea4f056 Merge branch 'whitespace_fixers' into 'master'
Add whitespace fixers

See merge request pycqa/flake8!355
2019-09-08 06:53:48 +00:00
Anthony Sottile
e42884cf60 Add whitespace fixers 2019-09-07 23:49:47 -07:00
Anthony Sottile
5cce7c2cc3 Merge branch 'type_more' into 'master'
Add more type annotations

See merge request pycqa/flake8!353
2019-09-08 06:45:41 +00:00
Anthony Sottile
2c7b550d23 Merge branch 'disable_assert_nosec' into 'master'
Simplify bandit config and allow `assert`

See merge request pycqa/flake8!354
2019-09-08 06:45:08 +00:00
Anthony Sottile
f0cd1537ac Simplify bandit config and allow assert 2019-09-07 23:42:33 -07:00
Anthony Sottile
92fbdda253 Add type annotations for flake8.processor 2019-09-07 23:31:43 -07:00
Anthony Sottile
ae2f38fbeb Add type annotations to flake8.styleguide 2019-09-07 23:10:28 -07:00
Anthony Sottile
a13f02a386 Merge branch 'type_annotate_option_manager' into 'master'
Type annotate flake8.options.manager

See merge request pycqa/flake8!352
2019-09-07 21:51:05 +00:00
Anthony Sottile
8c4e42afaa Type annotate flake8.options.manager 2019-09-07 14:37:50 -07:00
Anthony Sottile
8cd1e0ecc7 Merge branch 'optmgr-parse-args-default-values' into 'master'
Set configuration file-provided values via ArgumentParser.set_defaults()

See merge request pycqa/flake8!350
2019-08-31 04:15:30 +00:00
Eric N. Vander Weele
aadd09dd8b Set configuration file-provided values via ArgumentParser.set_defaults()
When calling `ArgumentParser.parse_args()` with the `namespace`
argument, command-line options are just added to the  namespace without
going through any of the argument parsing and type conversion logic
(e.g., the `type` keyword argument of `ArgumentParser.add_argument()`).
In other words, it is assumed that a namespace is well-formed from a
previous invocation of `ArgumentParser.parse_args()`.

The `values` parameter is intended to be values already-provided from
configuration files.  To take advantage of the logic defined by
`ArgumentParser.add_argument()`,  utilize
`ArgumentParser.set_defaults()` instead.
2019-08-31 00:10:46 -04:00
Eric N. Vander Weele
b231c10016 Test default provided options are forwarded
Ensure options provided external to the command-line (i.e.,
configuration files) are present in the final result of options.
2019-08-31 00:10:46 -04:00
Eric N. Vander Weele
ec8fcfc8f8 Add typing to OptionManager.parse_args()
Note that the `assert` is necessary to "cast" `self.parser` since it is
specified as a `Union`.
2019-08-31 00:10:40 -04:00
Anthony Sottile
eee53d9440 Merge branch 'type-parse-known-args' into 'master'
Add typing to `OptionManager.parse_known_args()`

See merge request pycqa/flake8!348
2019-08-30 18:25:23 +00:00
Eric N. Vander Weele
8ea3c6321d Add typing to OptionManager.parse_known_args()
Note that type casting is necessary given that `self.parser` is
annotated as a `Union`.
2019-08-30 14:17:20 -04:00
Anthony Sottile
c185a2fe6a Merge branch 'remove-parse-known-args-value' into 'master'
Remove unused parameter from `OptionManager.parse_known_args()`

See merge request pycqa/flake8!347
2019-08-30 16:36:52 +00:00
Eric N. Vander Weele
220a9287f5 Remove unused parameter from OptionManager.parse_known_args()
The `values` parameter is not utilized anywhere and can be safely
removed.
2019-08-30 12:30:33 -04:00