From 67f07faedcfd33502b91416a38d09797b2e80c11dce92a96a93e96c3d1223afb Mon Sep 17 00:00:00 2001 From: Matej Cepl Date: Wed, 18 Jun 2025 07:31:08 +0000 Subject: [PATCH 1/2] - Skip test_simple_format tests, which is failing with 3.13.5 (gh#pypy/pypy#5297). - Use libalternatives instead of update-alternatives - Add upstream click-820.patch to make it work with latest python-click gh#psf/black#4577, gh#psf/black#4591, gh#psf/black#4666 - Update to 25.1.0: Highlights: * Normalize casing of Unicode escape characters in strings to lowercase (#2916) * Fix inconsistencies in whether certain strings are detected as docstrings (#4095) * Consistently add trailing commas to typed function parameters (#4164) * Remove redundant parentheses in if guards for case blocks (#4214) * Add parentheses to if clauses in case blocks when the line is too long (#4269) * Whitespace before # fmt: skip comments is no longer normalized (#4146) * Fix line length computation for certain expressions that involve the power operator (#4154) * Check if there is a newline before the terminating quotes of a docstring (#4185) * Fix type annotation spacing between * and more complex type variable tuple (#4440) * Remove parentheses around sole list items (#4312) * Generic function definitions are now formatted more elegantly: parameters are split over multiple lines first instead of type parameter definitions (#4553) Stable style: * Fix formatting cells in IPython notebooks with magic methods and starting or trailing empty lines (#4484) * Fix crash when formatting with statements containing tuple generators/unpacking (#4538) Preview style: * Fix/remove string merging changing f-string quotes on f-strings with internal quotes (#4498) * Collapse multiple empty lines after an import into one (#4489) * Prevent string_processing and wrap_long_dict_values_in_parens from removing parentheses around long dictionary values (#4377) * Move wrap_long_dict_values_in_parens from the unstable to preview style (#4561) Packaging: * Store license identifier inside the License-Expression metadata field, see PEP 639. (#4479) Performance: * Speed up the is_fstring_start function in Black's tokenizer (#4541) Integrations: * If using stdin with --stdin-filename set to a force excluded path, stdin won't be formatted. (#4539) - update requirements from pyproject.toml - Update to 24.8.0 Stable style * Fix crash when # fmt: off is used before a closing parenthesis or bracket. (#4363) Parser * Fix regression where Black failed to parse a multiline f-string containing another multiline string (#4339) * Fix regression where Black failed to parse an escaped single quote inside an f-string (#4401) * Fix bug with Black incorrectly parsing empty lines with a backslash (#4343) * Fix bugs with Black's tokenizer not handling \{ inside f-strings very well (#4422) * Fix incorrect line numbers in the tokenizer for certain tokens within f-strings (#4423) Performance * Improve performance when a large directory is listed in .gitignore (#4415) Blackd * Fix blackd (and all extras installs) for docker container (#4357) - update to 24.4.2 * Fix regression where certain complex f-strings failed to parse * Fix bad performance on certain complex string literals - update to 24.4.1 * Add support for the new Python 3.12 f-string syntax introduced by PEP 701 * Fix crash involving indented dummy functions containing newlines * Add support for type parameter defaults, a new syntactic feature added to Python 3.13 by PEP 696 - update to 24.4.0 * Fix unwanted crashes caused by AST equivalency check * if guards in case blocks are now wrapped in parentheses when the line is too long. * Stop moving multiline strings to a new line unless inside brackets - update to 24.3.0 (bsc#1221530, CVE-2024-21503): * Don't move comments along with delimiters, which could cause crashes * Strengthen AST safety check to catch more unsafe changes to strings. Previous versions of Black would incorrectly format the contents of certain unusual f-strings containing nested strings with the same quote type. Now, Black will crash on such strings until support for the new f-string syntax is implemented. * Fix a bug where line-ranges exceeding the last code line would not work as expected * Fix catastrophic performance on docstrings that contain large numbers of leading tab characters. This fixes CVE-2024-21503. * Note what happens when `--check` is used with `--quiet` - Update to 24.2.0 * Consistently add trailing comma on typed parameters (#4164) * Fixed a bug where comments where mistakenly removed along with redundant parentheses (#4218) * Move the hug_parens_with_braces_and_square_brackets feature to the unstable style due to an outstanding crash and proposed formatting tweaks (#4198) * Black now ignores pyproject.toml that is missing a [tool.black] section when discovering project root and configuration. * More changes, see upstream CHANGES.md - update to 24.1.0: * Add parentheses around `if`-`else` expressions * Dummy class and function implementations consisting only of `...` are formatted more compactly * If an assignment statement is too long, we now prefer splitting on the right-hand side * Hex codes in Unicode escape sequences are now standardized to lowercase * Allow empty first lines at the beginning of most blocks * Add parentheses around long type annotations * Enforce newline after module docstrings * Fix incorrect magic trailing comma handling in return types * Remove blank lines before class docstrings * Wrap multiple context managers in parentheses if combined in a single `with` statement * Fix bug in line length calculations for power operations * Add trailing commas to collection literals even if there's a comment after the last entry * When using `--skip-magic-trailing-comma` or `-C`, trailing commas are stripped from subscript expressions with more than 1 element * Add extra blank lines in stubs in a few cases * Accept raw strings as docstrings * Split long lines in case blocks * Stop removing spaces from walrus operators within subscripts * Fix incorrect formatting of certain async statements * Allow combining `# fmt: skip` with other comments * There are already a few improvements in the `--preview` style, which are slated for the 2025 stable style. Try them out and share your feedback. In the past, the preview style has included some features that we were not able to stabilize. This year, we're adding a separate `--unstable` style for features with known problems. Now, the `--preview` style only includes features that we actually expect to make it into next year's stable style. * Fix comment handling when parenthesising conditional expressions * Fix bug where spaces were not added around parenthesized walruses in subscripts, unlike other binary operators * Remove empty lines before docstrings in async functions * Address a missing case in the change to allow empty lines at the beginning of all blocks, except immediately before a docstring * For stubs, fix logic to enforce empty line after nested classes with bodies * Add `--unstable` style, covering preview features that have known problems that would block them from going into the stable style. Also add the `--enable-unstable-feature` flag; for example, use `--enable-unstable-feature hug_parens_with_braces_and_square_brackets` to apply this preview feature throughout 2024, even if a later Black release downgrades the feature to unstable * Format module docstrings the same as class and function docstrings * Fix crash when using a walrus in a dictionary * Fix unnecessary parentheses when wrapping long dicts * Stop normalizing spaces before `# fmt: skip` comments * Print warning when configuration in `pyproject.toml` contains an invalid key * Fix symlink handling, properly ignoring symlinks that point outside of root * Fix cache mtime logic that resulted in false positive cache hits * Remove the long-deprecated `--experimental-string-processing` flag. This feature can currently be enabled with `--preview --enable-unstable- feature string_processing`. * Revert the change to run Black's pre-commit integration only on specific git hooks (#3940) for better compatibility with older versions of pre-commit - update to 23.12.1: * Fixed a bug that included dependencies from the `d` extra by default * This release (23.12.0) will still produce the 2023 style. Most but not all of the changes in `--preview` mode will be in the 2024 stable style. * Fix bug where `# fmt: off` automatically dedents when used with the `--line-ranges` option, even when it is not within the specified line range. * Fix feature detection for parenthesized context managers * Prefer more equal signs before a break when splitting chained assignments * Standalone form feed characters at the module level are no longer removed * Additional cases of immediately nested tuples, lists, and dictionaries are now indented less * Allow empty lines at the beginning of all blocks, except immediately before a docstring * Fix crash in preview mode when using a short `--line-length` * Keep suites consisting of only an ellipsis on their own lines if they are not functions or class definitions * `--line-ranges` now skips _Black_'s internal stability check in `--safe` mode. This avoids a crash on rare inputs that have many unformatted same-content lines. - update to 23.11.0: * Support formatting ranges of lines with the new `--line- ranges` command-line option * Fix crash on formatting bytes strings that look like docstrings (#4003) * Fix crash when whitespace followed a backslash before newline in a docstring (#4008) * Fix standalone comments inside complex blocks crashing Black * Fix crash on formatting code like `await (a ** b)` (#3994) * No longer treat leading f-strings as docstrings. This matches Python's behaviour and fixes a crash (#4019) * Consistently apply force exclusion logic before resolving symlinks (#4015) * Fix a bug in the matching of absolute path names in `--include` (#3976) - update to 23.10.1: * Maintanence release to get a fix out for GitHub Action edge case (#3957) * Fix merging implicit multiline strings that have inline comments (#3956) * Allow empty first line after block open before a comment or compound statement (#3967) * Fix comments getting removed from inside parenthesized strings (#3909) * Fix long lines with power operators getting split before the line length (#3942) * Long type hints are now wrapped in parentheses and properly indented when split across multiple lines (#3899) * Magic trailing commas are now respected in return types. * Require one empty line after module-level docstrings. (#3932) * Treat raw triple-quoted strings as docstrings (#3947) * Fix bug where attributes named `type` were not accepted inside `match` statements * Add support for PEP 695 type aliases containing lambdas and other unusual expressions * Black no longer attempts to provide special errors for attempting to format Python 2 code (#3933) * Black will more consistently print stacktraces on internal errors in verbose mode - remove buildrequires that are not used on sle15 - update to 23.9.1: * Upgrade to mypy 1.5.1 (#3864) * Store raw tuples instead of NamedTuples in Black's cache, improving performance and decreasing the size of the cache * More concise formatting for dummy implementations (#3796) * In stub files, add a blank line between a statement with a body (e.g an `if sys.version_info > (3, x):`) and a function definition on the same level (#3862) * Fix a bug whereby spaces were removed from walrus operators within subscript(#3823) * Black now applies exclusion and ignore logic before resolving symlinks (#3846) * Avoid importing `IPython` if notebook cells do not contain magics (#3782) * Improve caching by comparing file hashes as fallback for mtime and size (#3821) * Fix an issue in `blackd` with single character input (#3558) - update to 23.7.0: * Runtime support for Python 3.7 has been removed. Formatting 3.7 code will still be supported until further notice (#3765) * Fix a bug where an illegal trailing comma was added to return type annotations using PEP 604 unions (#3735) * Fix several bugs and crashes where comments in stub files were removed or mishandled under some circumstances (#3745) * Fix a crash with multi-line magic comments like `type: ignore` within parentheses * Fix error in AST validation when _Black_ removes trailing whitespace in a type comment * Remove patching of Click that mitigated errors on Python 3.6 with `LANG=C` (#3768) * Add support for the new PEP 695 syntax in Python 3.12 (#3703) * Speed up _Black_ significantly when the cache is full (#3751) * Avoid importing `IPython` in a case where we wouldn't need it (#3748) * Use aware UTC datetimes internally, avoids deprecation warning on Python 3.12 (#3728) * Change verbose logging to exactly mirror _Black_'s logic for source discovery (#3749) - limit to newer python versions, older are no longer needed - add sle15_python_module_pythons (jsc#PED-68) - Make calling of %{sle15modernpython} optional. - update to 23.3.0: * Import lines with `# fmt: skip` and `# fmt: off` no longer have an extra blank line added when they are right after another import line (#3610) * Added support for formatting files with invalid type comments * Document that only the most recent release is supported for security issues; * Introduce the 2023 stable style, which incorporates most aspects of last year's preview style (#3418). * Enforce empty lines before classes and functions with sticky leading comments * Reformat empty and whitespace-only files as either an empty file (if no newline is present) or as a single newline character (if a newline is present) (#3348) * Correctly handle trailing commas that are inside a line's leading non-nested parens * `--skip-string-normalization` / `-S` now prevents docstring prefixes from being * Details see https://github.com/psf/black/releases/tag/23.3.0 - update to version 22.8.0: * Highlights + Python 3.11 is now supported, except for blackd as aiohttp does not support 3.11 as of publishing (#3234) + This is the last release that supports running Black on Python 3.6 (formatting 3.6 code will continue to be supported until further notice) + Reword the stability policy to say that we may, in rare cases, make changes that affect code that was not previously formatted by Black (#3155) * Stable style + Fix an infinite loop when using # fmt: on/off in the middle of an expression or code block (#3158) + Fix incorrect handling of # fmt: skip on colon (:) lines (#3148) + Comments are no longer deleted when a line had spaces removed around power operators (#2874) * Preview style + Single-character closing docstring quotes are no longer moved to their own line as this is invalid. This was a bug introduced in version 22.6.0. (#3166) + --skip-string-normalization / -S now prevents docstring prefixes from being normalized as expected (#3168) + When using --skip-magic-trailing-comma or -C, trailing commas are stripped from subscript expressions with more than 1 element (#3209) + Implicitly concatenated strings inside a list, set, or tuple are now wrapped inside parentheses (#3162) + Fix a string merging/split issue when a comment is present in the middle of implicitly concatenated strings on its own line (#3227) * Blackd + blackd now supports enabling the preview style via the X-Preview header (#3217) * Configuration + Black now uses the presence of debug f-strings to detect target version (#3215) + Fix misdetection of project root and verbose logging of sources in cases involving --stdin-filename (#3216) + Immediate .gitignore files in source directories given on the command line are now also respected, previously only .gitignore files in the project root and automatically discovered directories were respected (#3237) * Documentation + Recommend using BlackConnect in IntelliJ IDEs (#3150) * Integrations + Vim plugin: prefix messages with Black: so it's clear they come from Black (#3194) + Docker: changed to a /opt/venv installation + added to PATH to be available to non-root users (#3202) + Vim plugin: add flag (g:black_preview) to enable/disable the preview style (#3246) * Output + Change from deprecated asyncio.get_event_loop() to create our event loop which removes DeprecationWarning (#3164) + Remove logging from internal blib2to3 library since it regularly emits error logs about failed caching that can and should be ignored (#3193) * Parser + Type comments are now included in the AST equivalence check consistently so accidental deletion raises an error. Though type comments can't be tracked when running on PyPy 3.7 due to standard library limitations. (#2874) * Performance + Reduce Black's startup time when formatting a single file by 15-30% (#3211) - update to version 22.6.0: * Style + Fix unstable formatting involving #fmt: skip and # fmt:skip comments (notice the lack of spaces) (#2970) * Preview style + Docstring quotes are no longer moved if it would violate the line length limit (#3044) + Parentheses around return annotations are now managed (#2990) + Remove unnecessary parentheses around awaited objects (#2991) + Remove unnecessary parentheses in with statements (#2926) + Remove trailing newlines after code block open (#3035) * Integrations + Add scripts/migrate-black.py script to ease introduction of Black to a Git project (#3038) * Output + Output Python version and implementation as part of --version flag (#2997) * Packaging + Use tomli instead of tomllib on Python 3.11 builds where tomllib is not available (#2987) * Parser + PEP 654 syntax (for example, except *ExceptionGroup:) is now supported (#3016) + PEP 646 syntax (for example, Array[Batch, *Shape] or def fn(*args: *T) -> None) is now supported (#3071) * Vim Plugin + Fix strtobool function. It didn't parse true/on/false/off. (#3025) - specfile: * removed black-primer - update to version 22.3.0: * Preview style + Code cell separators #%% are now standardised to # %% (#2919) + Remove unnecessary parentheses from except statements (#2939) + Remove unnecessary parentheses from tuple unpacking in for loops (#2945) + Avoid magic-trailing-comma in single-element subscripts (#2942) * Configuration + Do not format __pypackages__ directories by default (#2836) + Add support for specifying stable version with --required-version (#2832). + Avoid crashing when the user has no homedir (#2814) + Avoid crashing when md5 is not available (#2905) + Fix handling of directory junctions on Windows (#2904) * Documentation + Update pylint config documentation (#2931) * Integrations + Move test to disable plugin in Vim/Neovim, which speeds up loading (#2896) * Output + In verbose, mode, log when Black is using user-level config (#2861) * Packaging + Fix Black to work with Click 8.1.0 (#2966) + On Python 3.11 and newer, use the standard library's tomllib instead of tomli (#2903) + black-primer, the deprecated internal devtool, has been removed and copied to a separate repository (#2924) * Parser + Black can now parse starred expressions in the target of for and async for statements, e.g for item in *items_1, *items_2: pass (#2879). - Update to 22.1.0 * Remove Python 2 support (#2740) * Introduce the --preview flag (#2752) * Deprecate --experimental-string-processing and move the functionality under --preview (#2789) * For stubs, one blank line between class attributes and methods is now kept if there's at least one pre-existing blank line (#2736) * Black now normalizes string prefix order (#2297) * Remove spaces around power operators if both operands are simple (#2726) * Work around bug that causes unstable formatting in some cases in the presence of the magic trailing comma (#2807) * Use parentheses for attribute access on decimal float and int literals (#2799) * Don't add whitespace for attribute access on hexadecimal, binary, octal, and complex literals (#2799) * Treat blank lines in stubs the same inside top-level if statements (#2820) * Fix unstable formatting with semicolons and arithmetic expressions (#2817) * Fix unstable formatting around magic trailing comma (#2572) * Fix mapping cases that contain as-expressions, like case {"key": 1 | 2 as password} (#2686) * Fix cases that contain multiple top-level as-expressions, like case 1 as a, 2 as b (#2716) * Fix call patterns that contain as-expressions with keyword arguments, like case Foo(bar=baz as quux) (#2749) * Tuple unpacking on return and yield constructs now implies 3.8+ (#2700) * Unparenthesized tuples on annotated assignments (e.g values: Tuple[int, ...] = 1, 2, 3) now implies 3.8+ (#2708) * Fix handling of standalone match() or case() when there is a trailing newline or a comment inside of the parentheses. (#2760) * from __future__ import annotations statement now implies Python 3.7+ (#2690) * Speed-up the new backtracking parser about 4X in general (enabled when --target-version is set to 3.10 and higher). (#2728) * Black is now compiled with mypyc for an overall 2x speed-up. 64-bit Windows, MacOS, and Linux (not including musl) are supported. (#1009, #2431) * Do not accept bare carriage return line endings in pyproject.toml (#2408) * Add configuration option (python-cell-magics) to format cells with custom magics in Jupyter Notebooks (#2744) * Allow setting custom cache directory on all platforms with environment variable BLACK_CACHE_DIR (#2739). * Enable Python 3.10+ by default, without any extra need to specify --target-version=py310. (#2758) * Make passing SRC or --code mandatory and mutually exclusive (#2804) * Improve error message for invalid regular expression (#2678) * Improve error message when parsing fails during AST safety check by embedding the underlying SyntaxError (#2693) * No longer color diff headers white as it's unreadable in light themed terminals (#2691) * Text coloring added in the final statistics (#2712) * Verbose mode also now describes how a project root was discovered and which paths will be formatted. (#2526) * All upper version bounds on dependencies have been removed (#2718) * typing-extensions is no longer a required dependency in Python 3.10+ (#2772) * Set click lower bound to 8.0.0 as Black crashes on 7.1.2 (#2791) * Deprecate the black-primer tool (#2809) * Document Python support policy (#2819) - Drop black-pr2718-unpin.patch - Unpin tomli and pathspec * black-pr2718-unpin.patch -- gh#psf/black#2718 * gh#psf/black#2703 - Remove obsolete python36 flavor expression - Update requirements for Python 3.6 distros - Update to 21.12.0b1: * Fix determination of f-string expression spans (#2654) * Fix bad formatting of error messages about EOF in multi-line statements (#2343) * Functions and classes in blocks now have more consistent surrounding spacing (#2472) * from __future__ import annotations statement now implies Python 3.7+ (#2690) * Fix assignment to environment variables in Jupyter Notebooks (#2642) * Point users to using --target-version py310 if we detect 3.10-only syntax (#2668) * Fix match statements with open sequence subjects, like match a, b: or match a, *b: (#2639) (#2659) * Fix match/case statements that contain match/case soft keywords multiple times, like match re.match() (#2661) * Fix case statements with an inline body (#2665) * Fix styling of starred expressions inside match subject (#2667) * Fix parser error location on invalid syntax in a match statement (#2649) * Fix Python 3.10 support on platforms without ProcessPoolExecutor (#2631) * Improve parsing performance on code that uses match under --target-version py310 up to ~50% (#2670) * Remove dependency on regex (#2644) (#2663) * Warn about Python 2 deprecation in more cases by improving Python 2 only syntax detection (#2592) * Add experimental PyPy support (#2559) * Add partial support for the match statement. As it's experimental, it's only enabled when --target-version py310 is explicitly specified (#2586) * Add support for parenthesized with (#2586) * Declare support for Python 3.10 for running Black (#2562) * Add new --workers parameter (#2514) * Fixed feature detection for positional-only arguments in lambdas (#2532) * Fixed a Python 3.10 compatibility issue where the loop argument was still being passed even though it has been removed (#2580) * Deprecate Python 2 formatting support (#2523) * Fix missing modules in self-contained binaries (#2466) * Fix missing toml extra used during installation (#2475) * Add support for formatting Jupyter Notebook files (#2357) * Move from appdirs dependency to platformdirs (#2375) * Present a more user-friendly error if .gitignore is invalid (#2414) * Pin setuptools-scm build-time dependency version (#2457) * Configuration files using TOML features higher than spec v0.5.0 are now supported (#2301) * Accept empty stdin (#2346) * Provide a more useful error when parsing fails during AST safety checks (#2304) * Fix failure caused by fmt: skip and indentation (#2281) * Account for += assignment when deciding whether to split string (#2312) * Correct max string length calculation when there are string operators (#2292) * Fixed option usage when using the --code flag (#2259) * Do not call uvloop.install() when Black is used as a library (#2303) * Added --required-version option to require a specific version to be running (#2300) * Fix incorrect custom breakpoint indices when string group contains fake f-strings (#2311) * Fix regression where R prefixes would be lowercased for docstrings (#2285) * Fix handling of named escapes (\N{...}) when --experimental-string-processing is used (#2319) * Restored compatibility with Click 8.0 on Python 3.6 when LANG=C used (#2227) * Add extra uvloop install + import support if in python env (#2258) * Fix --experimental-string-processing crash when matching parens are not found (#2283) * Make sure to split lines that start with a string operator (#2286) * Fix regular expression that black uses to identify f-expressions (#2287) * Blackd * Add a lower bound for the aiohttp-cors dependency. Only 0.4.0 or higher is supported. (#2231) * Refactor src/black/__init__.py into many files (#2206) * Set --pyi mode if --stdin-filename ends in .pyi (#2169) * Stop detecting target version as Python 3.9+ with pre-PEP-614 decorators that are being called but with no arguments (#2182) * Fix crash if the user configuration directory is inaccessible. (#2158) * Clarify circumstances in which Black may change the AST (#2159) * Fix crash on docstrings ending with "\ ". (#2142) * Fix crash when atypical whitespace is cleaned out of dostrings (#2120) * Reflect the --skip-magic-trailing-comma and --experimental-string-processing flags in the name of the cache file. Without this fix, changes in these flags would not take effect if the cache had already been populated. (#2131) * Fixed a rare but annoying formatting instability created by the combination of optional trailing commas inserted by Black and optional parentheses looking at pre-existing "magic" trailing commas. This fixes issue #1629 and all of its many many duplicates. (#2126) * Black now cleans up leading non-breaking spaces in comments (#2092) * Black no longer removes all empty lines between non-function code and decorators when formatting typing stubs. Now Black enforces a single empty line. (#1646) * Black no longer adds an incorrect space after a parenthesized assignment expression in if/while statements (#1655) * Added --skip-magic-trailing-comma / -C to avoid using trailing commas as a reason to split lines (#1824) * fixed a crash when PWD=/ on POSIX (#1631) * fixed "I/O operation on closed file" when using --diff (#1664) * Prevent coloured diff output being interleaved with multiple files (#1673) * Added support for PEP 614 relaxed decorator syntax on python 3.9 (#1711) * Added parsing support for unparenthesized tuples and yield expressions in annotated assignments (#1835) * --diff correctly indicates when a file doesn't end in a newline (#1662) * Added --stdin-filename argument to allow stdin to respect --force-exclude rules (#1780) * Lines ending with fmt: skip will now be not formatted (#1800) * PR #2053: Black no longer relies on typed-ast for Python 3.8 and higher - Skip python 2 tests unconditionally. - Fix Python 3.6 for Leap 15.2 and for the upcoming python36 flavor in Tumbleweed: Requires python-dataclasses gh#openSUSE/python-rpm-macros#66 - Include change log and docs in package - Update to v20.8b1 * Explicitly depend on Click 7.1.2 or newer as `Black` no longer works with versions older than 7.0 - from v20.8b0 * Re-implemented support for explicit trailing commas: now it works consistently within any bracket pair, including nested structures * Reindents docstrings when reindenting code around it * Show colored diffs * Supports Python 3.8 code, e.g. star expressions in return statements * No longer normalizes capital R-string prefixes as those have a community-accepted meaning * Uses exit code 2 when specified configuration file doesn't exit * Works on AWS Lambda * Added `--force-exclude` argument * Removed deprecated `--py36` option * Fixed `--diff` output when EOF is encountered * Fixed `# fmt: off` handling around decorators * Fixed unstable formatting with some `# type: ignore` comments * Fixed invalid removal on organizing brackets followed by indexing * Introduced `black-primer`, a CI tool that allows us to run regression tests against existing open source users of Black * Introduced property-based fuzzing to our test suite based on Hypothesis and Hypothersmith * Implemented experimental and disabled by default long string rewrapping hidden under a `--experimental-string-processing` flag while it's being worked on; this is an undocumented and unsupported feature * Vim plugin prefer virtualenv packages over global packages - update URL - python-aiohttp_cors is now available --> install blackd - skip python2 test on big endian platforms gh#psf/black#1109 - drop fix-tests.patch - %python3_only -> %python_alternative - Add missing Requires - update to 19.10b0 - add fix-tests.patch to avoid problem during test collection - dont distribute 'blackd' as missing deps * no obvious changelog - Skip randomly failing test (only in OBS) - Update to 19.3b0: * No obvious changelog - update to 18.9b0 * numeric literals are now formatted by Black * numeric literals are normalized to include _ separators on Python 3.6+ code * added --skip-numeric-underscore-normalization to disable the above behavior and leave numeric underscores as they were in the input * code with _ in numeric literals is recognized as Python 3.6+ * most letters in numeric literals are lowercased (e.g., in 1e10, 0x01) * hexadecimal digits are always uppercased (e.g. 0xBADC0DE) * added blackd, see its documentation for more info * adjacent string literals are now correctly split into multiple lines * trailing comma is now added to single imports that don't fit on a line * cache is now populated when --check is successful for a file which speeds up consecutive checks of properly formatted unmodified files * whitespace at the beginning of the file is now removed * fixed mangling pweave and Spyder IDE special comments * fixed unstable formatting when unpacking big tuples * fixed parsing of __future__ imports with renames * fixed scope of # fmt: off when directly preceding yield and other nodes * fixed formatting of lambda expressions with default arguments * fixed async for statements: Black no longer breaks them into separate lines * note: the Vim plugin stopped registering ,= as a default chord as it turned out to be a bad idea - Raise minimal py required to be 3.6 - Replace all the marketing in the description with something substantial. - disable testsuite for py older than 3.7 - Code formatter used by pytest/etc OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-black?expand=0&rev=72 --- .gitattributes | 23 ++ .gitignore | 1 + black-24.3.0.tar.gz | 3 + black-24.4.2.tar.gz | 3 + black-24.8.0.tar.gz | 3 + black-25.1.0.tar.gz | 3 + click-820.patch | 213 ++++++++++++ python-black.changes | 757 +++++++++++++++++++++++++++++++++++++++++++ python-black.spec | 125 +++++++ 9 files changed, 1131 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 black-24.3.0.tar.gz create mode 100644 black-24.4.2.tar.gz create mode 100644 black-24.8.0.tar.gz create mode 100644 black-25.1.0.tar.gz create mode 100644 click-820.patch create mode 100644 python-black.changes create mode 100644 python-black.spec diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/black-24.3.0.tar.gz b/black-24.3.0.tar.gz new file mode 100644 index 0000000..1aac0eb --- /dev/null +++ b/black-24.3.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0c9c4a0771afc6919578cec71ce82a3e31e054904e7197deacbc9382671c41f +size 634292 diff --git a/black-24.4.2.tar.gz b/black-24.4.2.tar.gz new file mode 100644 index 0000000..249bcca --- /dev/null +++ b/black-24.4.2.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c872b53057f000085da66a19c55d68f6f8ddcac2642392ad3a355878406fbd4d +size 642299 diff --git a/black-24.8.0.tar.gz b/black-24.8.0.tar.gz new file mode 100644 index 0000000..ac39a57 --- /dev/null +++ b/black-24.8.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2500945420b6784c38b9ee885af039f5e7471ef284ab03fa35ecdde4688cd83f +size 644810 diff --git a/black-25.1.0.tar.gz b/black-25.1.0.tar.gz new file mode 100644 index 0000000..232743a --- /dev/null +++ b/black-25.1.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:33496d5cd1222ad73391352b4ae8da15253c5de89b93a80b3e2c8d9a19ec2666 +size 649449 diff --git a/click-820.patch b/click-820.patch new file mode 100644 index 0000000..d86436a --- /dev/null +++ b/click-820.patch @@ -0,0 +1,213 @@ +From df50f6c30c696d4f9121e6cd8e885a05dce39360 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Mark=C3=A9ta=20Cal=C3=A1bkov=C3=A1?= + +Date: Fri, 7 Feb 2025 17:05:43 +0100 +Subject: [PATCH 1/4] mix_stderr parameter was removed from click 8.2.0 + +--- + tests/test_black.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tests/test_black.py b/tests/test_black.py +index 31bc34d4b89..8fa352e3d22 100644 +--- a/tests/test_black.py ++++ b/tests/test_black.py +@@ -114,7 +114,7 @@ class BlackRunner(CliRunner): + """Make sure STDOUT and STDERR are kept separate when testing Black via its CLI.""" + + def __init__(self) -> None: +- super().__init__(mix_stderr=False) ++ super().__init__() + + + def invokeBlack( + +From a65eb895e13263dc700cfbf60db0376e15957c4e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Mark=C3=A9ta=20Cal=C3=A1bkov=C3=A1?= + +Date: Mon, 10 Feb 2025 11:12:17 +0100 +Subject: [PATCH 2/4] make the call conditional on click version + +--- + tests/test_black.py | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/tests/test_black.py b/tests/test_black.py +index 8fa352e3d22..cbb5006d070 100644 +--- a/tests/test_black.py ++++ b/tests/test_black.py +@@ -14,6 +14,7 @@ + from concurrent.futures import ThreadPoolExecutor + from contextlib import contextmanager, redirect_stderr + from dataclasses import fields, replace ++from importlib.metadata import version as imp_version + from io import BytesIO + from pathlib import Path, WindowsPath + from platform import system +@@ -26,6 +27,7 @@ + from click import unstyle + from click.testing import CliRunner + from pathspec import PathSpec ++from packaging.version import Version + + import black + import black.files +@@ -114,7 +116,10 @@ class BlackRunner(CliRunner): + """Make sure STDOUT and STDERR are kept separate when testing Black via its CLI.""" + + def __init__(self) -> None: +- super().__init__() ++ if Version(imp_version('click')) >= Version('8.2.0'): ++ super().__init__() ++ else: ++ super().__init__(mix_stderr=False) + + + def invokeBlack( + +From bdc188f550709e40b86f97777465e4068c61c261 Mon Sep 17 00:00:00 2001 +From: "pre-commit-ci[bot]" + <66853113+pre-commit-ci[bot]@users.noreply.github.com> +Date: Mon, 10 Feb 2025 11:02:28 +0000 +Subject: [PATCH 3/4] [pre-commit.ci] auto fixes from pre-commit.com hooks + +for more information, see https://pre-commit.ci +--- + tests/test_black.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tests/test_black.py b/tests/test_black.py +index cbb5006d070..9870cec4c26 100644 +--- a/tests/test_black.py ++++ b/tests/test_black.py +@@ -26,8 +26,8 @@ + import pytest + from click import unstyle + from click.testing import CliRunner +-from pathspec import PathSpec + from packaging.version import Version ++from pathspec import PathSpec + + import black + import black.files + +From 3dfacb5f34476b8c1ff28b5eb05cb85ff7418a66 Mon Sep 17 00:00:00 2001 +From: MeggyCal +Date: Mon, 17 Feb 2025 12:01:26 +0100 +Subject: [PATCH 4/4] double quotes + +--- + tests/test_black.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tests/test_black.py b/tests/test_black.py +index 9870cec4c26..4bdbdbba5cf 100644 +--- a/tests/test_black.py ++++ b/tests/test_black.py +@@ -116,7 +116,7 @@ class BlackRunner(CliRunner): + """Make sure STDOUT and STDERR are kept separate when testing Black via its CLI.""" + + def __init__(self) -> None: +- if Version(imp_version('click')) >= Version('8.2.0'): ++ if Version(imp_version("click")) >= Version("8.2.0"): + super().__init__() + else: + super().__init__(mix_stderr=False) + +From 17101f151b407cb3346b0a472d9e32d7a56d5aca Mon Sep 17 00:00:00 2001 +From: "Michael R. Crusoe" +Date: Thu, 27 Feb 2025 15:17:21 +0100 +Subject: [PATCH] additional fix for click 8.2.0 + +--- + tests/test_black.py | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +diff --git a/tests/test_black.py b/tests/test_black.py +index 4bdbdbba5cf..ca19c17678b 100644 +--- a/tests/test_black.py ++++ b/tests/test_black.py +@@ -192,10 +192,10 @@ def test_piping(self) -> None: + input=BytesIO(source.encode("utf-8")), + ) + self.assertEqual(result.exit_code, 0) +- self.assertFormatEqual(expected, result.output) +- if source != result.output: +- black.assert_equivalent(source, result.output) +- black.assert_stable(source, result.output, DEFAULT_MODE) ++ self.assertFormatEqual(expected, result.stdout) ++ if source != result.stdout: ++ black.assert_equivalent(source, result.stdout) ++ black.assert_stable(source, result.stdout, DEFAULT_MODE) + + def test_piping_diff(self) -> None: + diff_header = re.compile( +@@ -215,7 +215,7 @@ def test_piping_diff(self) -> None: + black.main, args, input=BytesIO(source.encode("utf-8")) + ) + self.assertEqual(result.exit_code, 0) +- actual = diff_header.sub(DETERMINISTIC_HEADER, result.output) ++ actual = diff_header.sub(DETERMINISTIC_HEADER, result.stdout) + actual = actual.rstrip() + "\n" # the diff output has a trailing space + self.assertEqual(expected, actual) + +@@ -300,7 +300,7 @@ def test_expression_diff(self) -> None: + self.assertEqual(result.exit_code, 0) + finally: + os.unlink(tmp_file) +- actual = result.output ++ actual = result.stdout + actual = diff_header.sub(DETERMINISTIC_HEADER, actual) + if expected != actual: + dump = black.dump_to_file(actual) +@@ -409,7 +409,7 @@ def test_skip_magic_trailing_comma(self) -> None: + self.assertEqual(result.exit_code, 0) + finally: + os.unlink(tmp_file) +- actual = result.output ++ actual = result.stdout + actual = diff_header.sub(DETERMINISTIC_HEADER, actual) + actual = actual.rstrip() + "\n" # the diff output has a trailing space + if expected != actual: +@@ -1831,7 +1831,7 @@ def test_bpo_2142_workaround(self) -> None: + self.assertEqual(result.exit_code, 0) + finally: + os.unlink(tmp_file) +- actual = result.output ++ actual = result.stdout + actual = diff_header.sub(DETERMINISTIC_HEADER, actual) + self.assertEqual(actual, expected) + +@@ -1841,7 +1841,7 @@ def compare_results( + ) -> None: + """Helper method to test the value and exit code of a click Result.""" + assert ( +- result.output == expected_value ++ result.stdout == expected_value + ), "The output did not match the expected value." + assert result.exit_code == expected_exit_code, "The exit code is incorrect." + + +From 7cf419741ab55028519f43524c3414a759aaa984 Mon Sep 17 00:00:00 2001 +From: Daniel Garcia Moreno +Date: Mon, 12 May 2025 13:49:11 +0200 +Subject: [PATCH] Update test_code_option_safe to work with click 8.2.0 + +--- + tests/test_black.py | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/tests/test_black.py b/tests/test_black.py +index acafb521619..f5c950244ef 100644 +--- a/tests/test_black.py ++++ b/tests/test_black.py +@@ -1907,7 +1907,8 @@ def test_code_option_safe(self) -> None: + args = ["--safe", "--code", code] + result = CliRunner().invoke(black.main, args) + +- self.compare_results(result, error_msg, 123) ++ assert error_msg == result.output ++ assert result.exit_code == 123 + + def test_code_option_fast(self) -> None: + """Test that the code option ignores errors when the sanity checks fail.""" diff --git a/python-black.changes b/python-black.changes new file mode 100644 index 0000000..d6cc743 --- /dev/null +++ b/python-black.changes @@ -0,0 +1,757 @@ +------------------------------------------------------------------- +Wed Jun 18 07:27:52 UTC 2025 - Matej Cepl + +- Skip test_simple_format tests, which is failing with 3.13.5 + (gh#pypy/pypy#5297). + +------------------------------------------------------------------- +Mon May 12 11:01:03 UTC 2025 - Daniel Garcia + +- Use libalternatives instead of update-alternatives +- Add upstream click-820.patch to make it work with latest + python-click + gh#psf/black#4577, gh#psf/black#4591, gh#psf/black#4666 + +------------------------------------------------------------------- +Mon Feb 10 09:37:29 UTC 2025 - Nico Krapp + +- Update to 25.1.0: + Highlights: + * Normalize casing of Unicode escape characters in strings to lowercase (#2916) + * Fix inconsistencies in whether certain strings are detected as docstrings (#4095) + * Consistently add trailing commas to typed function parameters (#4164) + * Remove redundant parentheses in if guards for case blocks (#4214) + * Add parentheses to if clauses in case blocks when the line is too long (#4269) + * Whitespace before # fmt: skip comments is no longer normalized (#4146) + * Fix line length computation for certain expressions that involve the power operator (#4154) + * Check if there is a newline before the terminating quotes of a docstring (#4185) + * Fix type annotation spacing between * and more complex type variable tuple (#4440) + * Remove parentheses around sole list items (#4312) + * Generic function definitions are now formatted more elegantly: parameters are + split over multiple lines first instead of type parameter definitions (#4553) + Stable style: + * Fix formatting cells in IPython notebooks with magic methods and starting or trailing + empty lines (#4484) + * Fix crash when formatting with statements containing tuple generators/unpacking + (#4538) + Preview style: + * Fix/remove string merging changing f-string quotes on f-strings with internal quotes + (#4498) + * Collapse multiple empty lines after an import into one (#4489) + * Prevent string_processing and wrap_long_dict_values_in_parens from removing + parentheses around long dictionary values (#4377) + * Move wrap_long_dict_values_in_parens from the unstable to preview style (#4561) + Packaging: + * Store license identifier inside the License-Expression metadata field, see + PEP 639. (#4479) + Performance: + * Speed up the is_fstring_start function in Black's tokenizer (#4541) + Integrations: + * If using stdin with --stdin-filename set to a force excluded path, stdin won't be + formatted. (#4539) +- update requirements from pyproject.toml + +------------------------------------------------------------------- +Fri Sep 27 01:22:37 UTC 2024 - Yogalakshmi Arunachalam + +- Update to 24.8.0 + Stable style + * Fix crash when # fmt: off is used before a closing parenthesis + or bracket. (#4363) + Parser + * Fix regression where Black failed to parse a multiline f-string + containing another multiline string (#4339) + * Fix regression where Black failed to parse an escaped single + quote inside an f-string (#4401) + * Fix bug with Black incorrectly parsing empty lines with + a backslash (#4343) + * Fix bugs with Black's tokenizer not handling \{ + inside f-strings very well (#4422) + * Fix incorrect line numbers in the tokenizer for certain + tokens within f-strings (#4423) + Performance + * Improve performance when a large directory is listed + in .gitignore (#4415) + Blackd + * Fix blackd (and all extras installs) for docker container (#4357) + +------------------------------------------------------------------- +Sun Jul 21 16:03:44 UTC 2024 - Andrea Manzini + +- update to 24.4.2 + * Fix regression where certain complex f-strings failed to parse + * Fix bad performance on certain complex string literals +- update to 24.4.1 + * Add support for the new Python 3.12 f-string syntax introduced by PEP 701 + * Fix crash involving indented dummy functions containing newlines + * Add support for type parameter defaults, a new syntactic feature added + to Python 3.13 by PEP 696 +- update to 24.4.0 + * Fix unwanted crashes caused by AST equivalency check + * if guards in case blocks are now wrapped in parentheses when the line is too long. + * Stop moving multiline strings to a new line unless inside brackets + + +------------------------------------------------------------------- +Sun Mar 17 19:11:13 UTC 2024 - Dirk Müller + +- update to 24.3.0 (bsc#1221530, CVE-2024-21503): + * Don't move comments along with delimiters, which could cause + crashes + * Strengthen AST safety check to catch more unsafe changes to + strings. Previous versions of Black would incorrectly format + the contents of certain unusual f-strings containing + nested strings with the same quote type. Now, Black will + crash on such strings until support for the new f-string syntax + is implemented. + * Fix a bug where line-ranges exceeding the last code line + would not work as expected + * Fix catastrophic performance on docstrings that contain large + numbers of leading tab characters. This fixes CVE-2024-21503. + * Note what happens when `--check` is used with `--quiet` + +------------------------------------------------------------------- +Thu Feb 22 13:28:34 UTC 2024 - Markéta Machová + +- Update to 24.2.0 + * Consistently add trailing comma on typed parameters (#4164) + * Fixed a bug where comments where mistakenly removed along with + redundant parentheses (#4218) + * Move the hug_parens_with_braces_and_square_brackets feature to + the unstable style due to an outstanding crash and proposed + formatting tweaks (#4198) + * Black now ignores pyproject.toml that is missing a [tool.black] + section when discovering project root and configuration. + * More changes, see upstream CHANGES.md + +------------------------------------------------------------------- +Mon Jan 29 08:51:18 UTC 2024 - Dirk Müller + +- update to 24.1.0: + * Add parentheses around `if`-`else` expressions + * Dummy class and function implementations consisting only of + `...` are formatted more compactly + * If an assignment statement is too long, we now prefer + splitting on the right-hand side + * Hex codes in Unicode escape sequences are now standardized to + lowercase + * Allow empty first lines at the beginning of most blocks + * Add parentheses around long type annotations + * Enforce newline after module docstrings + * Fix incorrect magic trailing comma handling in return types + * Remove blank lines before class docstrings + * Wrap multiple context managers in parentheses if combined in + a single `with` statement + * Fix bug in line length calculations for power operations + * Add trailing commas to collection literals even if there's a + comment after the last entry + * When using `--skip-magic-trailing-comma` or `-C`, trailing + commas are stripped from subscript expressions with more than + 1 element + * Add extra blank lines in stubs in a few cases + * Accept raw strings as docstrings + * Split long lines in case blocks + * Stop removing spaces from walrus operators within subscripts + * Fix incorrect formatting of certain async statements + * Allow combining `# fmt: skip` with other comments + * There are already a few improvements in the `--preview` + style, which are slated for the 2025 stable style. Try them + out and share your feedback. In the past, the preview + style has included some features that we were not able to + stabilize. This year, we're adding a separate `--unstable` + style for features with known problems. Now, the `--preview` + style only includes features that we actually expect to make + it into next year's stable style. + * Fix comment handling when parenthesising conditional + expressions + * Fix bug where spaces were not added around parenthesized + walruses in subscripts, unlike other binary operators + * Remove empty lines before docstrings in async functions + * Address a missing case in the change to allow empty lines at + the beginning of all blocks, except immediately before a + docstring + * For stubs, fix logic to enforce empty line after nested + classes with bodies + * Add `--unstable` style, covering preview features that have + known problems that would block them from going into the + stable style. Also add the `--enable-unstable-feature` + flag; for example, use `--enable-unstable-feature + hug_parens_with_braces_and_square_brackets` to apply this + preview feature throughout 2024, even if a later Black + release downgrades the feature to unstable + * Format module docstrings the same as class and function + docstrings + * Fix crash when using a walrus in a dictionary + * Fix unnecessary parentheses when wrapping long dicts + * Stop normalizing spaces before `# fmt: skip` comments + * Print warning when configuration in `pyproject.toml` contains + an invalid key + * Fix symlink handling, properly ignoring symlinks that point + outside of root + * Fix cache mtime logic that resulted in false positive cache + hits + * Remove the long-deprecated `--experimental-string-processing` + flag. This feature can currently be enabled with `--preview + --enable-unstable- feature string_processing`. + * Revert the change to run Black's pre-commit integration only + on specific git hooks (#3940) for better compatibility with + older versions of pre-commit + +------------------------------------------------------------------- +Tue Jan 2 08:19:30 UTC 2024 - Dirk Müller + +- update to 23.12.1: + * Fixed a bug that included dependencies from the `d` extra by + default + * This release (23.12.0) will still produce the 2023 style. + Most but not all of the changes in `--preview` mode will be + in the 2024 stable style. + * Fix bug where `# fmt: off` automatically dedents when used + with the `--line-ranges` option, even when it is not within + the specified line range. + * Fix feature detection for parenthesized context managers + * Prefer more equal signs before a break when splitting chained + assignments + * Standalone form feed characters at the module level are no + longer removed + * Additional cases of immediately nested tuples, lists, and + dictionaries are now indented less + * Allow empty lines at the beginning of all blocks, except + immediately before a docstring + * Fix crash in preview mode when using a short `--line-length` + * Keep suites consisting of only an ellipsis on their own lines + if they are not functions or class definitions + * `--line-ranges` now skips _Black_'s internal stability check + in `--safe` mode. This avoids a crash on rare inputs that have + many unformatted same-content lines. + +------------------------------------------------------------------- +Thu Nov 16 17:31:29 UTC 2023 - Dirk Müller + +- update to 23.11.0: + * Support formatting ranges of lines with the new `--line- + ranges` command-line option + * Fix crash on formatting bytes strings that look like + docstrings (#4003) + * Fix crash when whitespace followed a backslash before newline + in a docstring (#4008) + * Fix standalone comments inside complex blocks crashing Black + * Fix crash on formatting code like `await (a ** b)` (#3994) + * No longer treat leading f-strings as docstrings. This matches + Python's behaviour and fixes a crash (#4019) + * Consistently apply force exclusion logic before resolving + symlinks (#4015) + * Fix a bug in the matching of absolute path names in + `--include` (#3976) + +------------------------------------------------------------------- +Tue Oct 24 16:05:14 UTC 2023 - Dirk Müller + +- update to 23.10.1: + * Maintanence release to get a fix out for GitHub Action edge + case (#3957) + * Fix merging implicit multiline strings that have inline + comments (#3956) + * Allow empty first line after block open before a comment or + compound statement (#3967) + * Fix comments getting removed from inside parenthesized + strings (#3909) + * Fix long lines with power operators getting split before the + line length (#3942) + * Long type hints are now wrapped in parentheses and properly + indented when split across multiple lines (#3899) + * Magic trailing commas are now respected in return types. + * Require one empty line after module-level docstrings. (#3932) + * Treat raw triple-quoted strings as docstrings (#3947) + * Fix bug where attributes named `type` were not accepted + inside `match` statements + * Add support for PEP 695 type aliases containing lambdas and + other unusual expressions + * Black no longer attempts to provide special errors for + attempting to format Python 2 code (#3933) + * Black will more consistently print stacktraces on internal + errors in verbose mode + +------------------------------------------------------------------- +Tue Sep 19 14:51:16 UTC 2023 - Dirk Müller + +- remove buildrequires that are not used on sle15 + +------------------------------------------------------------------- +Tue Sep 12 07:11:17 UTC 2023 - Dirk Müller + +- update to 23.9.1: + * Upgrade to mypy 1.5.1 (#3864) + * Store raw tuples instead of NamedTuples in Black's cache, + improving performance and decreasing the size of the cache + * More concise formatting for dummy implementations (#3796) + * In stub files, add a blank line between a statement with a + body (e.g an `if sys.version_info > (3, x):`) and a + function definition on the same level (#3862) + * Fix a bug whereby spaces were removed from walrus operators + within subscript(#3823) + * Black now applies exclusion and ignore logic before resolving + symlinks (#3846) + * Avoid importing `IPython` if notebook cells do not contain + magics (#3782) + * Improve caching by comparing file hashes as fallback for + mtime and size (#3821) + * Fix an issue in `blackd` with single character input (#3558) + +------------------------------------------------------------------- +Sun Jul 16 14:00:30 UTC 2023 - Dirk Müller + +- update to 23.7.0: + * Runtime support for Python 3.7 has been removed. Formatting + 3.7 code will still be supported until further notice (#3765) + * Fix a bug where an illegal trailing comma was added to return + type annotations using PEP 604 unions (#3735) + * Fix several bugs and crashes where comments in stub files + were removed or mishandled under some circumstances (#3745) + * Fix a crash with multi-line magic comments like `type: + ignore` within parentheses + * Fix error in AST validation when _Black_ removes trailing + whitespace in a type comment + * Remove patching of Click that mitigated errors on Python 3.6 + with `LANG=C` (#3768) + * Add support for the new PEP 695 syntax in Python 3.12 (#3703) + * Speed up _Black_ significantly when the cache is full (#3751) + * Avoid importing `IPython` in a case where we wouldn't need it + (#3748) + * Use aware UTC datetimes internally, avoids deprecation + warning on Python 3.12 (#3728) + * Change verbose logging to exactly mirror _Black_'s logic for + source discovery (#3749) + +------------------------------------------------------------------- +Thu Jun 22 15:25:56 UTC 2023 - Dirk Müller + +- limit to newer python versions, older are no longer needed + +------------------------------------------------------------------- +Fri Apr 21 12:22:42 UTC 2023 - Dirk Müller + +- add sle15_python_module_pythons (jsc#PED-68) + +------------------------------------------------------------------- +Thu Apr 13 22:40:17 UTC 2023 - Matej Cepl + +- Make calling of %{sle15modernpython} optional. + +------------------------------------------------------------------- +Mon Apr 3 18:49:11 UTC 2023 - Dirk Müller + +- update to 23.3.0: + * Import lines with `# fmt: skip` and `# fmt: off` no longer + have an extra blank line added when they are right after + another import line (#3610) + * Added support for formatting files with invalid type comments + * Document that only the most recent release is supported for + security issues; + * Introduce the 2023 stable style, which incorporates most + aspects of last year's preview style (#3418). + * Enforce empty lines before classes and functions with sticky + leading comments + * Reformat empty and whitespace-only files as either an empty + file (if no newline is present) or as a single newline character + (if a newline is present) (#3348) + * Correctly handle trailing commas that are inside a line's + leading non-nested parens + * `--skip-string-normalization` / `-S` now prevents docstring + prefixes from being + * Details see https://github.com/psf/black/releases/tag/23.3.0 + +------------------------------------------------------------------- +Fri Sep 9 14:42:55 UTC 2022 - Yogalakshmi Arunachalam + +- update to version 22.8.0: + * Highlights + + Python 3.11 is now supported, except for blackd as aiohttp does not support 3.11 as of publishing (#3234) + + This is the last release that supports running Black on Python 3.6 (formatting 3.6 code will continue to be supported until further notice) + + Reword the stability policy to say that we may, in rare cases, make changes that affect code that was not previously formatted by Black (#3155) + * Stable style + + Fix an infinite loop when using # fmt: on/off in the middle of an expression or code block (#3158) + + Fix incorrect handling of # fmt: skip on colon (:) lines (#3148) + + Comments are no longer deleted when a line had spaces removed around power operators (#2874) + * Preview style + + Single-character closing docstring quotes are no longer moved to their own line as this is invalid. This was a bug introduced in version 22.6.0. (#3166) + + --skip-string-normalization / -S now prevents docstring prefixes from being normalized as expected (#3168) + + When using --skip-magic-trailing-comma or -C, trailing commas are stripped from subscript expressions with more than 1 element (#3209) + + Implicitly concatenated strings inside a list, set, or tuple are now wrapped inside parentheses (#3162) + + Fix a string merging/split issue when a comment is present in the middle of implicitly concatenated strings on its own line (#3227) + * Blackd + + blackd now supports enabling the preview style via the X-Preview header (#3217) + * Configuration + + Black now uses the presence of debug f-strings to detect target version (#3215) + + Fix misdetection of project root and verbose logging of sources in cases involving --stdin-filename (#3216) + + Immediate .gitignore files in source directories given on the command line are now also respected, previously only .gitignore files + in the project root and automatically discovered directories were respected (#3237) + * Documentation + + Recommend using BlackConnect in IntelliJ IDEs (#3150) + * Integrations + + Vim plugin: prefix messages with Black: so it's clear they come from Black (#3194) + + Docker: changed to a /opt/venv installation + added to PATH to be available to non-root users (#3202) + + Vim plugin: add flag (g:black_preview) to enable/disable the preview style (#3246) + * Output + + Change from deprecated asyncio.get_event_loop() to create our event loop which removes DeprecationWarning (#3164) + + Remove logging from internal blib2to3 library since it regularly emits error logs about failed caching that can and should be ignored (#3193) + * Parser + + Type comments are now included in the AST equivalence check consistently so accidental deletion raises an error. + Though type comments can't be tracked when running on PyPy 3.7 due to standard library limitations. (#2874) + * Performance + + Reduce Black's startup time when formatting a single file by 15-30% (#3211) + +------------------------------------------------------------------- +Fri Jul 15 04:52:30 UTC 2022 - Arun Persaud + +- update to version 22.6.0: + * Style + + Fix unstable formatting involving #fmt: skip and # fmt:skip + comments (notice the lack of spaces) (#2970) + * Preview style + + Docstring quotes are no longer moved if it would violate the + line length limit (#3044) + + Parentheses around return annotations are now managed (#2990) + + Remove unnecessary parentheses around awaited objects (#2991) + + Remove unnecessary parentheses in with statements (#2926) + + Remove trailing newlines after code block open (#3035) + * Integrations + + Add scripts/migrate-black.py script to ease introduction of + Black to a Git project (#3038) + * Output + + Output Python version and implementation as part of --version + flag (#2997) + * Packaging + + Use tomli instead of tomllib on Python 3.11 builds where tomllib + is not available (#2987) + * Parser + + PEP 654 syntax (for example, except *ExceptionGroup:) is now + supported (#3016) + + PEP 646 syntax (for example, Array[Batch, *Shape] or def + fn(*args: *T) -> None) is now supported (#3071) + * Vim Plugin + + Fix strtobool function. It didn't parse + true/on/false/off. (#3025) + +------------------------------------------------------------------- +Sat Apr 9 02:02:54 UTC 2022 - Arun Persaud + +- specfile: + * removed black-primer + +- update to version 22.3.0: + * Preview style + + Code cell separators #%% are now standardised to # %% (#2919) + + Remove unnecessary parentheses from except statements (#2939) + + Remove unnecessary parentheses from tuple unpacking in for loops + (#2945) + + Avoid magic-trailing-comma in single-element subscripts (#2942) + * Configuration + + Do not format __pypackages__ directories by default (#2836) + + Add support for specifying stable version with + --required-version (#2832). + + Avoid crashing when the user has no homedir (#2814) + + Avoid crashing when md5 is not available (#2905) + + Fix handling of directory junctions on Windows (#2904) + * Documentation + + Update pylint config documentation (#2931) + * Integrations + + Move test to disable plugin in Vim/Neovim, which speeds up + loading (#2896) + * Output + + In verbose, mode, log when Black is using user-level config + (#2861) + * Packaging + + Fix Black to work with Click 8.1.0 (#2966) + + On Python 3.11 and newer, use the standard library's tomllib + instead of tomli (#2903) + + black-primer, the deprecated internal devtool, has been removed + and copied to a separate repository (#2924) + * Parser + + Black can now parse starred expressions in the target of for and + async for statements, e.g for item in *items_1, *items_2: pass + (#2879). + +------------------------------------------------------------------- +Sun Mar 27 19:34:20 UTC 2022 - Ben Greiner + +- Update to 22.1.0 + * Remove Python 2 support (#2740) + * Introduce the --preview flag (#2752) + * Deprecate --experimental-string-processing and move the + functionality under --preview (#2789) + * For stubs, one blank line between class attributes and methods + is now kept if there's at least one pre-existing blank line + (#2736) + * Black now normalizes string prefix order (#2297) + * Remove spaces around power operators if both operands are + simple (#2726) + * Work around bug that causes unstable formatting in some cases + in the presence of the magic trailing comma (#2807) + * Use parentheses for attribute access on decimal float and int + literals (#2799) + * Don't add whitespace for attribute access on hexadecimal, + binary, octal, and complex literals (#2799) + * Treat blank lines in stubs the same inside top-level if + statements (#2820) + * Fix unstable formatting with semicolons and arithmetic + expressions (#2817) + * Fix unstable formatting around magic trailing comma (#2572) + * Fix mapping cases that contain as-expressions, like case + {"key": 1 | 2 as password} (#2686) + * Fix cases that contain multiple top-level as-expressions, like + case 1 as a, 2 as b (#2716) + * Fix call patterns that contain as-expressions with keyword + arguments, like case Foo(bar=baz as quux) (#2749) + * Tuple unpacking on return and yield constructs now implies 3.8+ + (#2700) + * Unparenthesized tuples on annotated assignments (e.g values: + Tuple[int, ...] = 1, 2, 3) now implies 3.8+ (#2708) + * Fix handling of standalone match() or case() when there is a + trailing newline or a comment inside of the parentheses. + (#2760) + * from __future__ import annotations statement now implies Python + 3.7+ (#2690) + * Speed-up the new backtracking parser about 4X in general + (enabled when --target-version is set to 3.10 and higher). + (#2728) + * Black is now compiled with mypyc for an overall 2x speed-up. + 64-bit Windows, MacOS, and Linux (not including musl) are + supported. (#1009, #2431) + * Do not accept bare carriage return line endings in + pyproject.toml (#2408) + * Add configuration option (python-cell-magics) to format cells + with custom magics in Jupyter Notebooks (#2744) + * Allow setting custom cache directory on all platforms with + environment variable BLACK_CACHE_DIR (#2739). + * Enable Python 3.10+ by default, without any extra need to + specify --target-version=py310. (#2758) + * Make passing SRC or --code mandatory and mutually exclusive + (#2804) + * Improve error message for invalid regular expression (#2678) + * Improve error message when parsing fails during AST safety + check by embedding the underlying SyntaxError (#2693) + * No longer color diff headers white as it's unreadable in light + themed terminals (#2691) + * Text coloring added in the final statistics (#2712) + * Verbose mode also now describes how a project root was + discovered and which paths will be formatted. (#2526) + * All upper version bounds on dependencies have been removed + (#2718) + * typing-extensions is no longer a required dependency in Python + 3.10+ (#2772) + * Set click lower bound to 8.0.0 as Black crashes on 7.1.2 + (#2791) + * Deprecate the black-primer tool (#2809) + * Document Python support policy (#2819) +- Drop black-pr2718-unpin.patch + +------------------------------------------------------------------- +Thu Jan 27 12:04:33 UTC 2022 - Ben Greiner + +- Unpin tomli and pathspec + * black-pr2718-unpin.patch -- gh#psf/black#2718 + * gh#psf/black#2703 +- Remove obsolete python36 flavor expression +- Update requirements for Python 3.6 distros + +------------------------------------------------------------------- +Wed Jan 12 03:39:41 UTC 2022 - Steve Kowalik + +- Update to 21.12.0b1: + * Fix determination of f-string expression spans (#2654) + * Fix bad formatting of error messages about EOF in multi-line statements (#2343) + * Functions and classes in blocks now have more consistent surrounding spacing (#2472) + * from __future__ import annotations statement now implies Python 3.7+ (#2690) + * Fix assignment to environment variables in Jupyter Notebooks (#2642) + * Point users to using --target-version py310 if we detect 3.10-only syntax (#2668) + * Fix match statements with open sequence subjects, like match a, b: or match a, *b: (#2639) (#2659) + * Fix match/case statements that contain match/case soft keywords multiple times, like match re.match() (#2661) + * Fix case statements with an inline body (#2665) + * Fix styling of starred expressions inside match subject (#2667) + * Fix parser error location on invalid syntax in a match statement (#2649) + * Fix Python 3.10 support on platforms without ProcessPoolExecutor (#2631) + * Improve parsing performance on code that uses match under --target-version py310 up to ~50% (#2670) + * Remove dependency on regex (#2644) (#2663) + * Warn about Python 2 deprecation in more cases by improving Python 2 only syntax detection (#2592) + * Add experimental PyPy support (#2559) + * Add partial support for the match statement. As it's experimental, it's only enabled when --target-version py310 is explicitly specified (#2586) + * Add support for parenthesized with (#2586) + * Declare support for Python 3.10 for running Black (#2562) + * Add new --workers parameter (#2514) + * Fixed feature detection for positional-only arguments in lambdas (#2532) + * Fixed a Python 3.10 compatibility issue where the loop argument was still being passed even though it has been removed (#2580) + * Deprecate Python 2 formatting support (#2523) + * Fix missing modules in self-contained binaries (#2466) + * Fix missing toml extra used during installation (#2475) + * Add support for formatting Jupyter Notebook files (#2357) + * Move from appdirs dependency to platformdirs (#2375) + * Present a more user-friendly error if .gitignore is invalid (#2414) + * Pin setuptools-scm build-time dependency version (#2457) + * Configuration files using TOML features higher than spec v0.5.0 are now supported (#2301) + * Accept empty stdin (#2346) + * Provide a more useful error when parsing fails during AST safety checks (#2304) + * Fix failure caused by fmt: skip and indentation (#2281) + * Account for += assignment when deciding whether to split string (#2312) + * Correct max string length calculation when there are string operators (#2292) + * Fixed option usage when using the --code flag (#2259) + * Do not call uvloop.install() when Black is used as a library (#2303) + * Added --required-version option to require a specific version to be running (#2300) + * Fix incorrect custom breakpoint indices when string group contains fake f-strings (#2311) + * Fix regression where R prefixes would be lowercased for docstrings (#2285) + * Fix handling of named escapes (\N{...}) when --experimental-string-processing is used (#2319) + * Restored compatibility with Click 8.0 on Python 3.6 when LANG=C used (#2227) + * Add extra uvloop install + import support if in python env (#2258) + * Fix --experimental-string-processing crash when matching parens are not found (#2283) + * Make sure to split lines that start with a string operator (#2286) + * Fix regular expression that black uses to identify f-expressions (#2287) + * Blackd + * Add a lower bound for the aiohttp-cors dependency. Only 0.4.0 or higher is supported. (#2231) + * Refactor src/black/__init__.py into many files (#2206) + * Set --pyi mode if --stdin-filename ends in .pyi (#2169) + * Stop detecting target version as Python 3.9+ with pre-PEP-614 decorators that are being called but with no arguments (#2182) + * Fix crash if the user configuration directory is inaccessible. (#2158) + * Clarify circumstances in which Black may change the AST (#2159) + * Fix crash on docstrings ending with "\ ". (#2142) + * Fix crash when atypical whitespace is cleaned out of dostrings (#2120) + * Reflect the --skip-magic-trailing-comma and --experimental-string-processing flags in the name of the cache file. Without this fix, changes in these flags would not take effect if the cache had already been populated. (#2131) + * Fixed a rare but annoying formatting instability created by the combination of optional trailing commas inserted by Black and optional parentheses looking at pre-existing "magic" trailing commas. This fixes issue #1629 and all of its many many duplicates. (#2126) + * Black now cleans up leading non-breaking spaces in comments (#2092) + * Black no longer removes all empty lines between non-function code and decorators when formatting typing stubs. Now Black enforces a single empty line. (#1646) + * Black no longer adds an incorrect space after a parenthesized assignment expression in if/while statements (#1655) + * Added --skip-magic-trailing-comma / -C to avoid using trailing commas as a reason to split lines (#1824) + * fixed a crash when PWD=/ on POSIX (#1631) + * fixed "I/O operation on closed file" when using --diff (#1664) + * Prevent coloured diff output being interleaved with multiple files (#1673) + * Added support for PEP 614 relaxed decorator syntax on python 3.9 (#1711) + * Added parsing support for unparenthesized tuples and yield expressions in annotated assignments (#1835) + * --diff correctly indicates when a file doesn't end in a newline (#1662) + * Added --stdin-filename argument to allow stdin to respect --force-exclude rules (#1780) + * Lines ending with fmt: skip will now be not formatted (#1800) + * PR #2053: Black no longer relies on typed-ast for Python 3.8 and higher +- Skip python 2 tests unconditionally. + +------------------------------------------------------------------- +Sat Dec 5 23:44:07 UTC 2020 - Benjamin Greiner + +- Fix Python 3.6 for Leap 15.2 and for the upcoming python36 flavor + in Tumbleweed: Requires python-dataclasses + gh#openSUSE/python-rpm-macros#66 + +------------------------------------------------------------------- +Fri Sep 4 12:19:10 UTC 2020 - John Vandenberg + +- Include change log and docs in package +- Update to v20.8b1 + * Explicitly depend on Click 7.1.2 or newer as `Black` no longer + works with versions older than 7.0 +- from v20.8b0 + * Re-implemented support for explicit trailing commas: now it + works consistently within any bracket pair, including nested + structures + * Reindents docstrings when reindenting code around it + * Show colored diffs + * Supports Python 3.8 code, e.g. star expressions in return statements + * No longer normalizes capital R-string prefixes as those have a + community-accepted meaning + * Uses exit code 2 when specified configuration file doesn't exit + * Works on AWS Lambda + * Added `--force-exclude` argument + * Removed deprecated `--py36` option + * Fixed `--diff` output when EOF is encountered + * Fixed `# fmt: off` handling around decorators + * Fixed unstable formatting with some `# type: ignore` comments + * Fixed invalid removal on organizing brackets followed by indexing + * Introduced `black-primer`, a CI tool that allows us to run + regression tests against existing open source users of Black + * Introduced property-based fuzzing to our test suite based on + Hypothesis and Hypothersmith + * Implemented experimental and disabled by default long string + rewrapping hidden under a `--experimental-string-processing` + flag while it's being worked on; this is an undocumented and + unsupported feature + * Vim plugin prefer virtualenv packages over global packages + +------------------------------------------------------------------- +Mon Aug 24 21:56:53 UTC 2020 - Benjamin Greiner + +- update URL +- python-aiohttp_cors is now available --> install blackd +- skip python2 test on big endian platforms gh#psf/black#1109 +- drop fix-tests.patch + +------------------------------------------------------------------- +Wed May 27 09:36:28 UTC 2020 - Petr Gajdos + +- %python3_only -> %python_alternative + +------------------------------------------------------------------- +Wed Nov 13 11:25:32 UTC 2019 - Ondřej Súkup + +- Add missing Requires + +------------------------------------------------------------------- +Mon Nov 11 14:14:38 UTC 2019 - Ondřej Súkup + +- update to 19.10b0 +- add fix-tests.patch to avoid problem during test collection +- dont distribute 'blackd' as missing deps + * no obvious changelog + +------------------------------------------------------------------- +Tue Jun 4 13:53:31 UTC 2019 - Tomáš Chvátal + +- Skip randomly failing test (only in OBS) + +------------------------------------------------------------------- +Thu Mar 21 15:44:47 UTC 2019 - Tomáš Chvátal + +- Update to 19.3b0: + * No obvious changelog + +------------------------------------------------------------------- +Wed Oct 3 12:40:28 UTC 2018 - Ondřej Súkup + +- update to 18.9b0 + * numeric literals are now formatted by Black + * numeric literals are normalized to include _ separators on Python 3.6+ code + * added --skip-numeric-underscore-normalization to disable the above behavior + and leave numeric underscores as they were in the input + * code with _ in numeric literals is recognized as Python 3.6+ + * most letters in numeric literals are lowercased (e.g., in 1e10, 0x01) + * hexadecimal digits are always uppercased (e.g. 0xBADC0DE) + * added blackd, see its documentation for more info + * adjacent string literals are now correctly split into multiple lines + * trailing comma is now added to single imports that don't fit on a line + * cache is now populated when --check is successful for a file which + speeds up consecutive checks of properly formatted unmodified files + * whitespace at the beginning of the file is now removed + * fixed mangling pweave and Spyder IDE special comments + * fixed unstable formatting when unpacking big tuples + * fixed parsing of __future__ imports with renames + * fixed scope of # fmt: off when directly preceding yield and other nodes + * fixed formatting of lambda expressions with default arguments + * fixed async for statements: Black no longer breaks them into separate lines + * note: the Vim plugin stopped registering ,= as a default chord + as it turned out to be a bad idea + +------------------------------------------------------------------- +Wed Aug 29 10:31:11 UTC 2018 - tchvatal@suse.com + +- Raise minimal py required to be 3.6 + +------------------------------------------------------------------- +Tue Aug 28 21:27:40 UTC 2018 - jengelh@inai.de + +- Replace all the marketing in the description with something + substantial. + +------------------------------------------------------------------- +Mon Aug 27 19:27:43 UTC 2018 - mimi.vx@gmail.com + +- disable testsuite for py older than 3.7 + +------------------------------------------------------------------- +Mon Aug 27 09:08:50 UTC 2018 - tchvatal@suse.com + +- Code formatter used by pytest/etc diff --git a/python-black.spec b/python-black.spec new file mode 100644 index 0000000..e35c457 --- /dev/null +++ b/python-black.spec @@ -0,0 +1,125 @@ +# +# spec file for package python-black +# +# Copyright (c) 2025 SUSE LLC +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +%if 0%{?suse_version} > 1500 +%bcond_without libalternatives +%else +%bcond_with libalternatives +%endif + +%{?sle15_python_module_pythons} +Name: python-black +Version: 25.1.0 +Release: 0 +Summary: A code formatter written in, and written for Python +License: MIT +URL: https://github.com/psf/black +Source: https://files.pythonhosted.org/packages/source/b/black/black-%{version}.tar.gz +# PATCH-FIX-UPSTREAM click-820.patch gh#psf/black#4577, gh#psf/black#4591, gh#psf/black#4666 +Patch0: click-820.patch +BuildRequires: %{python_module aiohttp >= 3.3.2} +BuildRequires: %{python_module base >= 3.8} +BuildRequires: %{python_module click >= 8.0.0} +BuildRequires: %{python_module hatch-fancy-pypi-readme} +BuildRequires: %{python_module hatch_vcs} +BuildRequires: %{python_module hatchling >= 1.8.0} +BuildRequires: %{python_module mypy_extensions >= 0.4.3} +BuildRequires: %{python_module packaging >= 22.0} +BuildRequires: %{python_module pathspec >= 0.9.0} +BuildRequires: %{python_module pip} +BuildRequires: %{python_module platformdirs >= 2} +BuildRequires: %{python_module pytest} +BuildRequires: %{python_module wheel} +BuildRequires: fdupes +BuildRequires: python-rpm-macros +Suggests: python-aiohttp >= 3.10.0 +Requires: python-click >= 8.0.0 +Requires: python-mypy_extensions >= 0.4.3 +Requires: python-packaging +Requires: python-pathspec >= 0.9.0 +Requires: python-platformdirs >= 2 + +%if %{with libalternatives} +BuildRequires: alts +Requires: alts +%else +Requires(post): update-alternatives +Requires(postun): update-alternatives +%endif +BuildArch: noarch +%python_subpackages + +%description +Black is a code formatter written in Python, and reformats Python 2.x +and 3.x code. + +Black reformats entire files in place. It is not configurable. It +does not take previous formatting into account. The coding style +enforced is a PEP-8 subset, adheres to PEP-257, and otherwise passes +the rules of the "pycodestyle" checker. Black skips over blocks that +start and end with "# fmt: off" and "# fmt: on", respectively. It +also recognizes YAPF's block comments to the same effect. + +%prep +%autosetup -p1 -n black-%{version} + +%build +%pyproject_wheel + +%install +%pyproject_install +%python_clone -a %{buildroot}%{_bindir}/black +%python_clone -a %{buildroot}%{_bindir}/blackd +%{python_expand %fdupes %{buildroot}%{$python_sitelib}} + +%check +# Copy one of the executable scripts into the PATH +mkdir -p ~/bin +cp $(ls %{buildroot}%{_bindir}/black-* | head -1) ~/bin/black +export PATH=$PATH:~/bin + +# test_expression_diff - sometimes fails on async timing in OBS +# test_bpo_2142_workaround fails on arm +skiptests="test_expression_diff or test_bpo_2142_workaround" +# gh#pypy/pypy#5297 +skiptests+=" or test_simple_format" +%pytest -k "not ($skiptests)" + +%pre +# If libalternatives is used: Removing old update-alternatives entries. +%python_libalternatives_reset_alternative black + +%post +%python_install_alternative black blackd + +%postun +%python_uninstall_alternative black + +%files %{python_files} +%doc README.md CHANGES.md docs/*.md +%license LICENSE +%python_alternative %{_bindir}/black +%python_alternative %{_bindir}/blackd +%{python_sitelib}/_black_version.py* +%{python_sitelib}/black/ +%{python_sitelib}/blackd/ +%{python_sitelib}/blib2to3/ +%{python_sitelib}/black-%{version}*-info +%pycache_only %{python_sitelib}/__pycache__/* + +%changelog From 00b5fcb8c173fceabc504692aa9d9408f8c12bdea56ceb1d366ef5893eeaf6ab Mon Sep 17 00:00:00 2001 From: Matej Cepl Date: Wed, 18 Jun 2025 10:54:53 +0000 Subject: [PATCH 2/2] Fix the bug reference. OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-black?expand=0&rev=73 --- python-black.changes | 2 +- python-black.spec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/python-black.changes b/python-black.changes index d6cc743..ac0b075 100644 --- a/python-black.changes +++ b/python-black.changes @@ -2,7 +2,7 @@ Wed Jun 18 07:27:52 UTC 2025 - Matej Cepl - Skip test_simple_format tests, which is failing with 3.13.5 - (gh#pypy/pypy#5297). + (gh#psf/black#4698). ------------------------------------------------------------------- Mon May 12 11:01:03 UTC 2025 - Daniel Garcia diff --git a/python-black.spec b/python-black.spec index e35c457..2203865 100644 --- a/python-black.spec +++ b/python-black.spec @@ -96,7 +96,7 @@ export PATH=$PATH:~/bin # test_expression_diff - sometimes fails on async timing in OBS # test_bpo_2142_workaround fails on arm skiptests="test_expression_diff or test_bpo_2142_workaround" -# gh#pypy/pypy#5297 +# gh#psf/black#4698 skiptests+=" or test_simple_format" %pytest -k "not ($skiptests)"