PHP 8.2.30
Preview: brain_fstrings.py Size: 2.41 KB
/opt/cloudlinux/venv/lib64/python3.11/site-packages/astroid/brain/brain_fstrings.py

# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html
# For details: https://github.com/PyCQA/astroid/blob/main/LICENSE
# Copyright (c) https://github.com/PyCQA/astroid/blob/main/CONTRIBUTORS.txt

from __future__ import annotations

import collections.abc
from typing import TypeVar

from astroid import nodes
from astroid.manager import AstroidManager

_NodeT = TypeVar("_NodeT", bound=nodes.NodeNG)


def _clone_node_with_lineno(
    node: _NodeT, parent: nodes.NodeNG, lineno: int | None
) -> _NodeT:
    cls = node.__class__
    other_fields = node._other_fields
    _astroid_fields = node._astroid_fields
    init_params = {"lineno": lineno, "col_offset": node.col_offset, "parent": parent}
    postinit_params = {param: getattr(node, param) for param in _astroid_fields}
    if other_fields:
        init_params.update({param: getattr(node, param) for param in other_fields})
    new_node = cls(**init_params)
    if hasattr(node, "postinit") and _astroid_fields:
        for param, child in postinit_params.items():
            if child and not isinstance(child, collections.abc.Sequence):
                cloned_child = _clone_node_with_lineno(
                    node=child, lineno=new_node.lineno, parent=new_node
                )
                postinit_params[param] = cloned_child
        new_node.postinit(**postinit_params)
    return new_node


def _transform_formatted_value(  # pylint: disable=inconsistent-return-statements
    node: nodes.FormattedValue,
) -> nodes.FormattedValue | None:
    if node.value and node.value.lineno == 1:
        if node.lineno != node.value.lineno:
            new_node = nodes.FormattedValue(
                lineno=node.lineno, col_offset=node.col_offset, parent=node.parent
            )
            new_value = _clone_node_with_lineno(
                node=node.value, lineno=node.lineno, parent=new_node
            )
            new_node.postinit(
                value=new_value,
                conversion=node.conversion,
                format_spec=node.format_spec,
            )
            return new_node


# TODO: this fix tries to *patch* http://bugs.python.org/issue29051
# The problem is that FormattedValue.value, which is a Name node,
# has wrong line numbers, usually 1. This creates problems for pylint,
# which expects correct line numbers for things such as message control.
AstroidManager().register_transform(nodes.FormattedValue, _transform_formatted_value)

Directory Contents

Dirs: 1 × Files: 53

Name Size Perms Modified Actions
- drwxr-xr-x 2026-02-06 08:01:08
Edit Download
1.52 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
2.97 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
1012 B lrw-r--r-- 2026-01-20 13:01:48
Edit Download
33.45 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
4.31 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
863 B lrw-r--r-- 2026-01-20 13:01:48
Edit Download
2.60 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
3.40 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
21.57 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
767 B lrw-r--r-- 2026-01-20 13:01:48
Edit Download
2.41 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
5.85 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
7.37 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
2.75 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
10.39 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
1.69 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
1.49 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
2.58 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
3.14 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
22.19 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
2.27 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
825 B lrw-r--r-- 2026-01-20 13:01:48
Edit Download
732 B lrw-r--r-- 2026-01-20 13:01:48
Edit Download
1.27 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
4.14 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
1.59 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
8.35 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
4.78 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
896 B lrw-r--r-- 2026-01-20 13:01:48
Edit Download
8.79 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
3.36 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
2.58 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
1.51 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
2.15 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
2.17 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
2.74 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
2.82 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
2.80 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
3.28 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
1.82 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
2.22 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
3.79 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
7.42 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
1009 B lrw-r--r-- 2026-01-20 13:01:48
Edit Download
6.40 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
2.93 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
870 B lrw-r--r-- 2026-01-20 13:01:48
Edit Download
2.42 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
13.98 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
1.12 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
667 B lrw-r--r-- 2026-01-20 13:01:48
Edit Download
908 B lrw-r--r-- 2026-01-20 13:01:48
Edit Download
0 B lrw-r--r-- 2026-01-20 13:01:48
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).