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

Add option to skip the first line of source code #3299

Merged
merged 12 commits into from Oct 6, 2022
Merged

Add option to skip the first line of source code #3299

merged 12 commits into from Oct 6, 2022

Commits on Sep 29, 2022

  1. Add option to skip the first line in source file

    This commit adds a CLi option to skip the first line in the source
    files, just like the Cpython command line allows [1]. By enabling the
    flag, using `-x` or `--skip-source-first-line`, the first line is
    removed temporarilly while the remaining contents are formatted. The
    first line is added back before returning the formatted output.
    
    [1]: https://docs.python.org/dev/using/cmdline.html#cmdoption-x
    
    Signed-off-by: Antonio Ossa Guerra <aaossa@uc.cl>
    aaossa committed Sep 29, 2022
    Copy the full SHA
    348eed2 View commit details
    Browse the repository at this point in the history
  2. Add tests for --skip-source-first-line option

    When the flag is disabled (default), black formats the entire source
    file, as in every line. In the other hand, if the flag is enabled, by
    using `-x` or `--skip-source-first-line`, the first line is retained
    while the rest of the source is formatted and then is added back.
    
    These tests use an empty Python file that contains invalid syntax in
    its first line (`invalid_header.py`, at `miscellaneous/`). First,
    Black is invoked without enabling the flag which should result in an
    exit code different than 0. When the flag is enabled, Black is
    expected to return a successful exit code and the header is expected
    to be retained (even if its not valid Python syntax).
    
    Signed-off-by: Antonio Ossa Guerra <aaossa@uc.cl>
    aaossa committed Sep 29, 2022
    Copy the full SHA
    92297b6 View commit details
    Browse the repository at this point in the history
  3. Support skip source first line option for blackd

    The recently added option can be added as an acceptable header for
    blackd. The arguments are passed in such a way that using the new
    header will activate the skip source first line behaviour as expected
    
    Signed-off-by: Antonio Ossa Guerra <aaossa@uc.cl>
    aaossa committed Sep 29, 2022
    Copy the full SHA
    73eac33 View commit details
    Browse the repository at this point in the history
  4. Add skip source first line option to blackd docs

    The new option can be passed to blackd as a header. This commit
    updates the blackd docs to include the new header.
    
    Signed-off-by: Antonio Ossa Guerra <aaossa@uc.cl>
    aaossa committed Sep 29, 2022
    Copy the full SHA
    21933ca View commit details
    Browse the repository at this point in the history
  5. Update CHANGES.md

    Include the new Black option to skip the first line of source code in
    the configuration section
    
    Signed-off-by: Antonio Ossa Guerra <aaossa@uc.cl>
    aaossa committed Sep 29, 2022
    Copy the full SHA
    9a7dd69 View commit details
    Browse the repository at this point in the history

Commits on Oct 4, 2022

  1. Merge branch 'main' into main

    aaossa committed Oct 4, 2022
    Copy the full SHA
    936903c View commit details
    Browse the repository at this point in the history

Commits on Oct 5, 2022

  1. Merge branch 'main' into main

    aaossa committed Oct 5, 2022
    Copy the full SHA
    6e24dfb View commit details
    Browse the repository at this point in the history

Commits on Oct 6, 2022

  1. Update skip first line test including valid syntax

    Including valid Python syntax help us make sure that the file is still
    actually valid after skipping the first line of the source file (which
    contains invalid Python syntax)
    
    Signed-off-by: Antonio Ossa Guerra <aaossa@uc.cl>
    aaossa committed Oct 6, 2022
    Copy the full SHA
    1701b6f View commit details
    Browse the repository at this point in the history
  2. Skip first source line at format_file_in_place

    Instead of skipping the first source line at `format_file_contents`,
    do it before. This allow us to find the correct newline and encoding
    on the actual source code (everything that's after the header).
    
    This change is also applied at Blackd: take the header before passing
    the source to `format_file_contents` and put the header back once we
    get the formatted result.
    
    Signed-off-by: Antonio Ossa Guerra <aaossa@uc.cl>
    aaossa committed Oct 6, 2022
    Copy the full SHA
    7baf898 View commit details
    Browse the repository at this point in the history
  3. Test output newlines when skipping first line

    When skipping the first line of source code, the reference newline must
    be taken from the second line of the file instead of the first one, in
    case that the file mixes more than one kind of newline character
    
    Signed-off-by: Antonio Ossa Guerra <aaossa@uc.cl>
    aaossa committed Oct 6, 2022
    Copy the full SHA
    02d1d17 View commit details
    Browse the repository at this point in the history
  4. Test that Blackd also skips first line correctly

    Simliarly to the Black tests, we first compare that Blackd fails when
    the first line is invalid Python syntax and then check that the result
    is the expected when tha flag is activated
    
    Signed-off-by: Antonio Ossa Guerra <aaossa@uc.cl>
    aaossa committed Oct 6, 2022
    Copy the full SHA
    6177cb3 View commit details
    Browse the repository at this point in the history
  5. Use the content encoding to decode the header

    When decoding the header to put it back at the top of the contents of
    the file, use the same encoding used in the content. This should be a
    better "guess" that using the default value
    
    Signed-off-by: Antonio Ossa Guerra <aaossa@uc.cl>
    aaossa committed Oct 6, 2022
    Copy the full SHA
    62dd941 View commit details
    Browse the repository at this point in the history