Skip to content

Commit

Permalink
Squashed commit of the following:
Browse files Browse the repository at this point in the history
commit 6dba72c
Author: temyurchenko <[email protected]>
Date:   Wed Oct 2 16:13:50 2024 -0400

    Enforce a non-None parent in build_function (pylint-dev#2562)

    It's a part of the campaign to get rid of non-module roots

commit e3813e3
Author: temyurchenko <[email protected]>
Date:   Wed Oct 2 14:19:23 2024 -0400

    Set proper parents for namedtuple's and enum's (pylint-dev#2555)

    it's a part of the campaign to get rid of non-module roots

commit be00359
Author: correctmost <[email protected]>
Date:   Wed Oct 2 11:20:50 2024 -0400

    Remove unused numpy utility functions (pylint-dev#2595)

    Follow-up to c7ea1e9.

commit d174ca2
Author: correctmost <[email protected]>
Date:   Wed Oct 2 10:45:43 2024 -0400

    Fix OverflowError with empty list and large multiplier

    This regressed in dfe1ccc.

commit dfe1ccc
Author: correctmost <[email protected]>
Date:   Wed Oct 2 07:16:33 2024 -0400

    Fix crashes with large positive and negative list multipliers

    Closes pylint-dev#2521
    Closes pylint-dev#2523

commit ba7df4a
Author: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Date:   Tue Oct 1 10:30:42 2024 +0200

    [pre-commit.ci] pre-commit autoupdate (pylint-dev#2593)

    updates:
    - [github.com/astral-sh/ruff-pre-commit: v0.6.7 → v0.6.8](astral-sh/ruff-pre-commit@v0.6.7...v0.6.8)

    Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

commit 8620ae1
Author: Nick Drozd <[email protected]>
Date:   Mon Sep 30 15:14:25 2024 -0400

    Enable design complexity checks (pylint-dev#2591)

commit 36094ed
Author: temyurchenko <[email protected]>
Date:   Mon Sep 30 15:14:13 2024 -0400

    control setting nodes as local outside of the constructor (pylint-dev#2588)

    1. The main reason is that a node might be assigned to its parent via
       an «alias»:

    Sometimes a class accesses a member by a different name than
       "__name__" of that member: in pypy3 `list.__mul__.__name__ ==
       "__rmul__"`.

    As a result, in the example above we weren't able to find
       "list.__mul__", because it was recorded only as "list.__rmul__".

    2. Sometimes we want to have a parent semantically, but we don't want
       to add it to the list of locals. For example, when inferring
       properties we are creating ad-hoc properties. We wouldn't want to
       add another symbol to the locals every time we do an
       inference. (actually, there's a very good question as to why we are
       doing those ad-hoc properties but that's out of scope)

    it's a part of the campaign to get rid of non-module roots

commit 32cb29e
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Mon Sep 30 20:33:57 2024 +0200

    Bump actions/checkout from 4.1.7 to 4.2.0 (pylint-dev#2592)

    Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.7 to 4.2.0.
    - [Release notes](https://github.com/actions/checkout/releases)
    - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
    - [Commits](actions/checkout@v4.1.7...v4.2.0)

    ---
    updated-dependencies:
    - dependency-name: actions/checkout
      dependency-type: direct:production
      update-type: version-update:semver-minor
    ...

    Signed-off-by: dependabot[bot] <[email protected]>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit d394fb9
Author: Jacob Walls <[email protected]>
Date:   Mon Sep 30 08:52:35 2024 -0400

    Bump astroid to 4.0.0-dev0, update changelog

commit c7ea1e9
Author: correctmost <[email protected]>
Date:   Sat Sep 7 14:47:47 2024 -0400

    Consolidate numpy member transforms to reduce function calls

commit f19fc0a
Author: Artem Yurchenko <[email protected]>
Date:   Thu Sep 26 19:56:45 2024 -0700

    disable AsyncGeneratorModel from inheriting Generator attributes

    for example, usual generators have "send", but async don't. They have
       "async" instead.

commit 62c5bad
Author: temyurchenko <[email protected]>
Date:   Thu Sep 26 00:29:36 2024 -0400

    change the type annotation error heuristic (pylint-dev#2583)

    The previous one depended on the message from "typed_ast", which is
       not used anymore.

    Instead, we check if there is a "# type:" substring in the source line
       of the exception. This can yield some false positives, but probably
       rarely.

commit a3f5c4a
Author: temyurchenko <[email protected]>
Date:   Wed Sep 25 16:18:58 2024 -0400

    wrap GeneratorModel methods into BoundMethod; remove redundant test (pylint-dev#2584)

    The LookupTest.test_generator_attributes contains outdated Python 2
       code (doesn't run on Python 3). The test is superceded by
       GeneratorModelTest.test_model.

    Fix AsyncGenerator test and model, they just weren't used before

commit eb88dfe
Author: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Date:   Tue Sep 24 06:47:29 2024 +0200

    [pre-commit.ci] pre-commit autoupdate (pylint-dev#2582)

    updates:
    - [github.com/astral-sh/ruff-pre-commit: v0.6.5 → v0.6.7](astral-sh/ruff-pre-commit@v0.6.5...v0.6.7)

    Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

commit c8e8831
Merge: 8585ce6 498cf96
Author: Jacob Walls <[email protected]>
Date:   Mon Sep 23 14:33:13 2024 -0400

    Merge pull request pylint-dev#2581 from pylint-dev/post-3.3.4

    Post 3.3.4

commit 498cf96
Merge: 8585ce6 6042e58
Author: Jacob Walls <[email protected]>
Date:   Mon Sep 23 14:25:58 2024 -0400

    Merge branch 'maintenance/3.3.x' into post-3.3.4

commit 8585ce6
Author: Eric Vergnaud <[email protected]>
Date:   Mon Sep 23 19:53:55 2024 +0200

    Fix issue when inferring single-node or non-const JoinedStr (pylint-dev#2578)

commit 706fcdb
Author: Jacob Walls <[email protected]>
Date:   Sun Sep 22 09:14:31 2024 -0400

    Address pylint 3.3 messages (pylint-dev#2575)

commit a679550
Author: Nick Drozd <[email protected]>
Date:   Sun Sep 22 09:00:09 2024 -0400

    Check for empty format specs (pylint-dev#2574)

commit 58286a1
Author: Akhil Kamat <[email protected]>
Date:   Sat Sep 21 21:36:35 2024 -0400

    Fix `manager.clear_cache()` not fully clearing the module cache (pylint-dev#2572)

commit 1368be1
Merge: 5a93a9f 11db16d
Author: Jacob Walls <[email protected]>
Date:   Fri Sep 20 08:10:58 2024 -0300

    Merge pull request pylint-dev#2570 from pylint-dev/post-3.3.3

    Post 3.3.3

commit 11db16d
Merge: 5a93a9f a01a9c9
Author: Jacob Walls <[email protected]>
Date:   Fri Sep 20 06:46:12 2024 -0400

    Merge branch 'maintenance/3.3.x' into post-3.3.3

commit 5a93a9f
Author: Jacob Walls <[email protected]>
Date:   Thu Sep 19 09:43:50 2024 -0300

    Fix inference regression with property setters (pylint-dev#2567)

    Closes pylint-dev/pylint#9811

commit 826d477
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Thu Sep 19 12:05:44 2024 +0000

    Bump actions/upload-artifact from 4.3.6 to 4.4.0 (pylint-dev#2533)

    Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.3.6 to 4.4.0.
    - [Release notes](https://github.com/actions/upload-artifact/releases)
    - [Commits](actions/upload-artifact@v4.3.6...v4.4.0)

    ---
    updated-dependencies:
    - dependency-name: actions/upload-artifact
      dependency-type: direct:production
      update-type: version-update:semver-minor
    ...

    Signed-off-by: dependabot[bot] <[email protected]>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit 709f991
Author: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Date:   Tue Sep 17 07:04:26 2024 +0200

    [pre-commit.ci] pre-commit autoupdate (pylint-dev#2565)

    updates:
    - [github.com/astral-sh/ruff-pre-commit: v0.6.4 → v0.6.5](astral-sh/ruff-pre-commit@v0.6.4...v0.6.5)

    Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

commit a99967e
Author: temyurchenko <[email protected]>
Date:   Fri Sep 13 11:35:02 2024 -0400

    Require build class parent (pylint-dev#2557)

    * enforce a non-None parent in build_class

    We also remove `add_local_node` to avoid redundancy. Instead we do the
       attachment to the parent scope in the constructor of `ClassDef`.

    We append a node to the body of the frame when it is also the
       parent. If it's not a parent, then the node should belong to the
       "body" of the parent if it existed. An example is a definition
       within an "if", where the parent is the If node, but the frame is
       the whole module.

    it's a part of the campaign to get rid of non-module roots

commit c7b8a2f
Author: akamat10 <[email protected]>
Date:   Mon Sep 9 18:17:02 2024 -0400

    add setuptools dependency for python >= 3.12

commit 44907c2
Author: akamat10 <[email protected]>
Date:   Mon Sep 9 18:16:37 2024 -0400

    Remove setuptools dependency from ci

commit b4ac0e2
Author: Akhil Kamat <[email protected]>
Date:   Wed Sep 11 06:06:28 2024 -0400

    Remove newstyle variable given old-style class support should be removed (pylint-dev#2561)

commit 523eeb4
Author: temyurchenko <[email protected]>
Date:   Wed Sep 11 04:53:30 2024 -0400

    Fix unexpected `__doc__` values   (pylint-dev#2556)

    * fix unexpected '__doc__' values

    some '__doc__' fields of standard library
       symbols (e.g. WrapperDescriptorType.__doc__) don't return a string,
       they return a 'getset_descriptor'. Thus, an attempt to print "as
       string" fails. The solution is to check that __doc__ is an instance
       of str.

    Note that it wasn't uncovered by the tests due to classes not being
       attached to their parent in some cases. This is be done in one of
       the subsequent commits.

    it's a part of the campaign to get rid of non-module roots

    * put the "temporary_class" for the metaclass hack into adhoc module

    it's a part of the campaign to get rid of non-module roots

commit e442776
Author: Artem Yurchenko <[email protected]>
Date:   Mon Sep 9 11:31:27 2024 -0700

    set PartialFunction's parent to adhoc module instead of Unknown

    it's a part of the campaign to get rid of non-module roots

commit 8364693
Author: temyurchenko <[email protected]>
Date:   Tue Sep 10 15:32:07 2024 -0400

    Fix in place properties (pylint-dev#2553)

    * fix construction of in-place properties

    This is an example of an in-place property: `bar = property(getter)`.
       They just create a nameless object, not the one with the name of
       the getter. Thus, the name was changed to
       "<property>". Furthermore, the definition of that property is not
       attached to any scope, as it's again nameless.

    it's a part of the campaign to get rid of non-module roots

commit 20890b8
Author: Artem Yurchenko <[email protected]>
Date:   Mon Sep 9 11:12:33 2024 -0700

    set namespace's parent to adhoc module instead of Unknown

    it's a part of the campaign to get rid of non-module roots

commit b6d52d3
Author: Artem Yurchenko <[email protected]>
Date:   Mon Sep 9 11:04:34 2024 -0700

    create an "adhoc" module for "artificial" nodes

    the module is specifically for nodes that are not based in the real
       syntactic tree, but created "ad-hoc", for example, new namedtuple
       classes that we create (see brain_namedtuple_enum).

    This is the base for future changes on replacing non-module
      roots (with the adhoc module or something more approriate).

commit 6ec2d40
Author: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Date:   Tue Sep 10 06:15:01 2024 +0200

    [pre-commit.ci] pre-commit autoupdate (pylint-dev#2559)

    updates:
    - [github.com/astral-sh/ruff-pre-commit: v0.6.3 → v0.6.4](astral-sh/ruff-pre-commit@v0.6.3...v0.6.4)

    Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

commit 0011e7f
Author: Artem Yurchenko <[email protected]>
Date:   Tue Sep 3 16:12:12 2024 -0700

    add the parent node to "__main__"

    Not having a parent leads to weird situations, like `root()` returning
       the node itself, not a `Module`.

commit 7954bac
Author: correctmost <[email protected]>
Date:   Sat Sep 7 11:52:56 2024 -0400

    Fix most of the mypy errors in astroid/nodes/as_string.py

commit 8573b68
Author: correctmost <[email protected]>
Date:   Sun Sep 8 03:15:01 2024 -0400

    Fix useless-suppression Pylint warning (pylint-dev#2548)

    * Bump Pylint requirement to 3.2.7

commit cae2977
Author: correctmost <[email protected]>
Date:   Sun Sep 8 00:59:25 2024 -0400

    Add .tox to Pylint ignore list (pylint-dev#2549)

commit 887668b
Author: correctmost <[email protected]>
Date:   Sat Sep 7 02:37:50 2024 -0400

    Fix additional mypy errors and expand CI checks to more files (pylint-dev#2541)

    * Fix additional mypy errors and expand CI checks to more files

    * Use an assertion instead of a type ignore

    * Move an assert outside of a type-checking block

commit ba331c0
Author: correctmost <[email protected]>
Date:   Sat Sep 7 02:09:11 2024 -0400

    Use extend-exclude instead of exclude in ruff config (pylint-dev#2545)

    The ruff docs recommend using extend-exclude for custom paths.

commit 003a2df
Author: correctmost <[email protected]>
Date:   Sat Sep 7 00:47:03 2024 -0400

    Remove Python 3.8 from tox config (pylint-dev#2546)

commit dc5dafb
Author: correctmost <[email protected]>
Date:   Fri Sep 6 01:37:53 2024 -0400

    Avoid extra isinstance calls in _builtin_filter_predicate (pylint-dev#2544)

commit 5982618
Author: correctmost <[email protected]>
Date:   Thu Sep 5 15:29:25 2024 -0400

    Move Pylint exclusions to pylintrc (pylint-dev#2542)

    This makes it easier to run Pylint outside of the pre-commit hooks.

commit 71f5c0c
Author: correctmost <[email protected]>
Date:   Wed Sep 4 10:55:41 2024 -0400

    Do not reassign submodule_path parameters in method bodies

    This makes it easier to use less generic annotations with mypy.

commit 1495979
Author: correctmost <[email protected]>
Date:   Wed Sep 4 10:34:55 2024 -0400

    Fix type annotations for tuple parameters

commit 6deb34f
Author: correctmost <[email protected]>
Date:   Wed Sep 4 02:04:09 2024 -0400

    Add ruff exclusions to pyproject.toml (pylint-dev#2537)

    This makes it easier to run 'ruff check' outside of the pre-commit
    hook.

    Co-authored-by: Pierre Sassoulas <[email protected]>

commit 78f7f60
Author: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Date:   Tue Sep 3 08:52:20 2024 +0200

    [pre-commit.ci] pre-commit autoupdate (pylint-dev#2535)

    updates:
    - [github.com/astral-sh/ruff-pre-commit: v0.6.2 → v0.6.3](astral-sh/ruff-pre-commit@v0.6.2...v0.6.3)

    Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

commit a30794c
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Mon Sep 2 20:09:47 2024 +0200

    Bump actions/setup-python from 5.1.1 to 5.2.0 (pylint-dev#2534)

    Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5.1.1 to 5.2.0.
    - [Release notes](https://github.com/actions/setup-python/releases)
    - [Commits](actions/setup-python@v5.1.1...v5.2.0)

    ---
    updated-dependencies:
    - dependency-name: actions/setup-python
      dependency-type: direct:production
      update-type: version-update:semver-minor
    ...

    Signed-off-by: dependabot[bot] <[email protected]>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit 37b6c0d
Author: temyurchenko <[email protected]>
Date:   Fri Aug 30 17:30:56 2024 -0400

    fix the documentation and the error message of modpath_from_file (pylint-dev#2532)

    The doc should clarify that the search will always include sys.path.

    The error message should reflect the actual paths used for checking.

commit 5210e61
Author: correctmost <[email protected]>
Date:   Fri Aug 30 09:00:26 2024 -0400

    Enable mypy checking for astroid/interpreter/_import/ (pylint-dev#2530)

    This commit also removes unnecessary tuple -> list conversions in
    _find_spec.

commit a389ef7
Author: correctmost <[email protected]>
Date:   Tue Aug 27 17:19:26 2024 -0400

    Use a tuple for processed parameter to facilitate future caching (pylint-dev#2529)

commit 16990fc
Author: correctmost <[email protected]>
Date:   Tue Aug 27 16:25:48 2024 -0400

    Remove unnecessary isinstance calls from transform predicates (pylint-dev#2507)

commit 0cf9a2e
Author: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Date:   Tue Aug 27 06:34:11 2024 +0200

    [pre-commit.ci] pre-commit autoupdate (pylint-dev#2528)

    updates:
    - [github.com/astral-sh/ruff-pre-commit: v0.6.1 → v0.6.2](astral-sh/ruff-pre-commit@v0.6.1...v0.6.2)
    - [github.com/pre-commit/mirrors-mypy: v1.11.1 → v1.11.2](pre-commit/mirrors-mypy@v1.11.1...v1.11.2)

    Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

commit d8dbc46
Author: correctmost <[email protected]>
Date:   Sun Aug 25 21:53:58 2024 -0400

    Use a tuple for module_parts parameter to facilitate future caching

commit f924ba2
Author: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Date:   Tue Aug 20 06:15:34 2024 +0200

    [pre-commit.ci] pre-commit autoupdate (pylint-dev#2512)

    updates:
    - [github.com/astral-sh/ruff-pre-commit: v0.5.7 → v0.6.1](astral-sh/ruff-pre-commit@v0.5.7...v0.6.1)

    Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

commit b312b56
Author: correctmost <[email protected]>
Date:   Sun Aug 18 04:49:15 2024 +0000

    Make Finder.find_module static to facilitate future caching (pylint-dev#2509)

commit 8515010
Author: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Date:   Tue Aug 13 06:19:18 2024 +0200

    [pre-commit.ci] pre-commit autoupdate (pylint-dev#2510)

    updates:
    - [github.com/astral-sh/ruff-pre-commit: v0.5.6 → v0.5.7](astral-sh/ruff-pre-commit@v0.5.6...v0.5.7)

    Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

commit fa32673
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Mon Aug 12 22:35:41 2024 +0200

    Bump actions/upload-artifact from 4.3.5 to 4.3.6 (pylint-dev#2508)

    Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.3.5 to 4.3.6.
    - [Release notes](https://github.com/actions/upload-artifact/releases)
    - [Commits](actions/upload-artifact@v4.3.5...v4.3.6)

    ---
    updated-dependencies:
    - dependency-name: actions/upload-artifact
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...

    Signed-off-by: dependabot[bot] <[email protected]>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit 5e8fac7
Author: correctmost <[email protected]>
Date:   Sun Aug 11 17:41:02 2024 +0000

    Add cached version of os.path.isfile to avoid repetitive I/O (pylint-dev#2501)

commit 3a743a4
Merge: 5b838f2 4df8708
Author: Jacob Walls <[email protected]>
Date:   Sun Aug 11 10:18:28 2024 -0400

    Merge pull request pylint-dev#2506 from pylint-dev/post-3.3.2

    Post 3.3.2

commit 4df8708
Merge: 86c7871 4ae4617
Author: Jacob Walls <[email protected]>
Date:   Sun Aug 11 08:02:12 2024 -0400

    Merge branch 'maintenance/3.3.x' into post-3.3.2

commit 5b838f2
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Sun Aug 11 13:50:27 2024 +0200

    Update sphinx requirement from ~=7.4 to ~=8.0 (pylint-dev#2494)

    * Update sphinx requirement from ~=7.4 to ~=8.0

    Updates the requirements on [sphinx](https://github.com/sphinx-doc/sphinx) to permit the latest version.
    - [Release notes](https://github.com/sphinx-doc/sphinx/releases)
    - [Changelog](https://github.com/sphinx-doc/sphinx/blob/v8.0.2/CHANGES.rst)
    - [Commits](sphinx-doc/sphinx@v7.4.0...v8.0.2)

    ---
    updated-dependencies:
    - dependency-name: sphinx
      dependency-type: direct:production
    ...

    Signed-off-by: dependabot[bot] <[email protected]>

    * Upgrade furo too

    ---------

    Signed-off-by: dependabot[bot] <[email protected]>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Pierre Sassoulas <[email protected]>

commit 86c7871
Author: Jacob Walls <[email protected]>
Date:   Sat Aug 10 17:06:09 2024 -0400

    [PY313] Add stubs for soft-deprecated typing members (pylint-dev#2503)

commit 0156c04
Author: correctmost <[email protected]>
Date:   Wed Aug 7 11:57:49 2024 +0000

    Avoid overhead of cast() calls when not type checking (pylint-dev#2500)

commit 29b6cbd
Author: correctmost <[email protected]>
Date:   Wed Aug 7 11:48:42 2024 +0000

    Avoid extra isinstance calls in _visit_generic (pylint-dev#2502)

commit 15207a7
Merge: 04f4f3f 996ffea
Author: Jacob Walls <[email protected]>
Date:   Tue Aug 6 09:52:55 2024 -0400

    Merge pull request pylint-dev#2499 from pylint-dev/post-3.3.1

commit 996ffea
Merge: 04f4f3f de58003
Author: Jacob Walls <[email protected]>
Date:   Tue Aug 6 09:05:54 2024 -0400

    Merge branch 'maintenance/3.3.x' into post-3.3.1

commit 04f4f3f
Author: Eric Vergnaud <[email protected]>
Date:   Tue Aug 6 13:59:28 2024 +0200

    Fix pylint regression with invalid format strings (pylint-dev#2496)

    Catch exceptions when calling string.format

commit 8d3cdbb
Author: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Date:   Mon Aug 5 20:06:08 2024 -0400

    [pre-commit.ci] pre-commit autoupdate (pylint-dev#2495)

    updates:
    - [github.com/astral-sh/ruff-pre-commit: v0.5.5 → v0.5.6](astral-sh/ruff-pre-commit@v0.5.5...v0.5.6)
    - [github.com/psf/black: 24.4.2 → 24.8.0](psf/black@24.4.2...24.8.0)
    - [github.com/pre-commit/mirrors-mypy: v1.11.0 → v1.11.1](pre-commit/mirrors-mypy@v1.11.0...v1.11.1)

    Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

commit 61dba89
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Mon Aug 5 23:27:45 2024 +0200

    Bump actions/upload-artifact from 4.3.4 to 4.3.5 (pylint-dev#2493)

    Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.3.4 to 4.3.5.
    - [Release notes](https://github.com/actions/upload-artifact/releases)
    - [Commits](actions/upload-artifact@v4.3.4...v4.3.5)

    ---
    updated-dependencies:
    - dependency-name: actions/upload-artifact
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...

    Signed-off-by: dependabot[bot] <[email protected]>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit b105186
Author: Jacob Walls <[email protected]>
Date:   Sun Aug 4 09:10:21 2024 -0400

    Bump astroid to 3.4.0-dev0, update changelog
  • Loading branch information
cdce8p committed Nov 6, 2024
1 parent 8a198fa commit 2bc0f2f
Show file tree
Hide file tree
Showing 7 changed files with 66 additions and 66 deletions.
13 changes: 8 additions & 5 deletions ChangeLog
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,13 @@ What's New in astroid 4.0.0?
============================
Release date: TBA

* Removed internal functions ``infer_numpy_member``, ``name_looks_like_numpy_member``, and
``attribute_looks_like_numpy_member`` from ``astroid.brain.brain_numpy_utils``.

* Fix crashes with large positive and negative list multipliers.

Closes #2521
Closes #2523


What's New in astroid 3.3.6?
Expand All @@ -24,11 +31,7 @@ Release date: 2024-10-04

* Control setting local nodes outside of the supposed local's constructor.

Closes #1490

* Fix Python 3.13 compatibility re: `collections.abc`

Closes pylint-dev/pylint#10000
Closes pylint-dev/astroid/issues/1490


What's New in astroid 3.3.4?
Expand Down
48 changes: 23 additions & 25 deletions astroid/brain/brain_namedtuple_enum.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,9 @@ def _extract_namedtuple_arg_or_keyword( # pylint: disable=inconsistent-return-s

def infer_func_form(
node: nodes.Call,
base_type: list[nodes.NodeNG],
base_type: nodes.NodeNG,
*,
parent: nodes.NodeNG,
context: InferenceContext | None = None,
enum: bool = False,
) -> tuple[nodes.ClassDef, str, list[str]]:
Expand Down Expand Up @@ -147,15 +149,10 @@ def infer_func_form(
col_offset=node.col_offset,
end_lineno=node.end_lineno,
end_col_offset=node.end_col_offset,
parent=nodes.Unknown(),
parent=parent,
)
# A typical ClassDef automatically adds its name to the parent scope,
# but doing so causes problems, so defer setting parent until after init
# see: https://github.com/pylint-dev/pylint/issues/5982
class_node.parent = node.parent
class_node.postinit(
# set base class=tuple
bases=base_type,
bases=[base_type],
body=[],
decorators=None,
)
Expand Down Expand Up @@ -195,25 +192,16 @@ def infer_named_tuple(
node: nodes.Call, context: InferenceContext | None = None
) -> Iterator[nodes.ClassDef]:
"""Specific inference function for namedtuple Call node."""
tuple_base_name: list[nodes.NodeNG] = [
nodes.Name(
name="tuple",
parent=node.root(),
lineno=0,
col_offset=0,
end_lineno=None,
end_col_offset=None,
)
]
tuple_base: nodes.Name = _extract_single_node("tuple")
class_node, name, attributes = infer_func_form(
node, tuple_base_name, context=context
node, tuple_base, parent=AstroidManager().adhoc_module, context=context
)

call_site = arguments.CallSite.from_call(node, context=context)
node = extract_node("import collections; collections.namedtuple")
try:
func = next(node.infer())
except StopIteration as e:
raise InferenceError(node=node) from e
func = util.safe_infer(
_extract_single_node("import collections; collections.namedtuple")
)
assert isinstance(func, nodes.NodeNG)
try:
rename = next(
call_site.infer_argument(func, "rename", context or InferenceContext())
Expand Down Expand Up @@ -365,7 +353,17 @@ def value(self):
__members__ = ['']
"""
)
class_node = infer_func_form(node, [enum_meta], context=context, enum=True)[0]

# FIXME arguably, the base here shouldn't be the EnumMeta class definition
# itself, but a reference (Name) to it. Otherwise, the invariant that all
# children of a node have that node as their parent is broken.
class_node = infer_func_form(
node,
enum_meta,
parent=AstroidManager().adhoc_module,
context=context,
enum=True,
)[0]
return iter([class_node.instantiate_class()])


Expand Down
28 changes: 0 additions & 28 deletions astroid/brain/brain_numpy_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,12 +48,6 @@ def infer_numpy_attribute(
return extracted_node.infer(context=context)


# TODO: Deprecate and remove this function
def infer_numpy_member(src, node, context: InferenceContext | None = None):
node = extract_node(src)
return node.infer(context=context)


def _is_a_numpy_module(node: Name) -> bool:
"""
Returns True if the node is a representation of a numpy module.
Expand Down Expand Up @@ -96,25 +90,3 @@ def attribute_name_looks_like_numpy_member(
and isinstance(node.expr, Name)
and _is_a_numpy_module(node.expr)
)


# TODO: Deprecate and remove this function
def name_looks_like_numpy_member(member_name: str, node: Name) -> bool:
"""
Returns True if the Name is a member of numpy whose
name is member_name.
"""
return node.name == member_name and node.root().name.startswith("numpy")


# TODO: Deprecate and remove this function
def attribute_looks_like_numpy_member(member_name: str, node: Attribute) -> bool:
"""
Returns True if the Attribute is a member of numpy whose
name is member_name.
"""
return (
node.attrname == member_name
and isinstance(node.expr, Name)
and _is_a_numpy_module(node.expr)
)
5 changes: 4 additions & 1 deletion astroid/protocols.py
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,10 @@ def _multiply_seq_by_int(
context: InferenceContext,
) -> _TupleListNodeT:
node = self.__class__(parent=opnode)
if value > 1e8:
if value <= 0 or not self.elts:
node.elts = []
return node
if len(self.elts) * value > 1e8:
node.elts = [util.Uninferable]
return node
filtered_elts = (
Expand Down
6 changes: 4 additions & 2 deletions astroid/raw_building.py
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@ def build_class(

def build_function(
name: str,
parent: nodes.NodeNG,
args: list[str] | None = None,
posonlyargs: list[str] | None = None,
defaults: list[Any] | None = None,
Expand All @@ -149,7 +150,7 @@ def build_function(
name,
lineno=0,
col_offset=0,
parent=node_classes.Unknown(),
parent=parent,
end_col_offset=0,
end_lineno=0,
)
Expand Down Expand Up @@ -321,6 +322,7 @@ def object_build_function(

return build_function(
getattr(member, "__name__", "<no-name>"),
node,
args,
posonlyargs,
defaults,
Expand All @@ -344,7 +346,7 @@ def object_build_methoddescriptor(
"""create astroid for a living method descriptor object"""
# FIXME get arguments ?
name = getattr(member, "__name__", "<no-name>")
func = build_function(name, doc=member.__doc__)
func = build_function(name, node, doc=member.__doc__)
_add_dunder_class(func, node, member)
return func

Expand Down
22 changes: 22 additions & 0 deletions tests/test_protocols.py
Original file line number Diff line number Diff line change
Expand Up @@ -286,6 +286,28 @@ def test_uninferable_list_multiplication() -> None:
element = parsed.inferred()[0].elts[0]
assert element.value is Uninferable

@staticmethod
def test_uninferable_list_multiplication_with_multiple_operands() -> None:
"""Attempting to calculate the result is prohibitively expensive."""
parsed = extract_node("[0] * 825 * 16547118")
element = parsed.inferred()[0].elts[0]
assert element.value is Uninferable

@staticmethod
def test_list_multiplication_with_empty_list_and_overflowing_multiplier() -> None:
parsed = extract_node("[] * 1163845194457646539560")
assert parsed.inferred()[0].elts == []

@staticmethod
def test_list_multiplication_with_zero_multiplier() -> None:
parsed = extract_node("[0] * 0")
assert parsed.inferred()[0].elts == []

@staticmethod
def test_list_multiplication_with_negative_overflowing_multiplier() -> None:
parsed = extract_node("[0] * -9223372036854775809")
assert parsed.inferred()[0].elts == []


def test_named_expr_inference() -> None:
code = """
Expand Down
10 changes: 5 additions & 5 deletions tests/test_raw_building.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,28 +55,28 @@ def test_build_class(self) -> None:
self.assertEqual(node.doc_node, None)

def test_build_function(self) -> None:
node = build_function("MyFunction")
node = build_function("MyFunction", DUMMY_MOD)
self.assertEqual(node.name, "MyFunction")
self.assertEqual(node.doc_node, None)

def test_build_function_args(self) -> None:
args = ["myArgs1", "myArgs2"]
node = build_function("MyFunction", args)
node = build_function("MyFunction", DUMMY_MOD, args)
self.assertEqual("myArgs1", node.args.args[0].name)
self.assertEqual("myArgs2", node.args.args[1].name)
self.assertEqual(2, len(node.args.args))

def test_build_function_defaults(self) -> None:
defaults = ["defaults1", "defaults2"]
node = build_function(name="MyFunction", args=None, defaults=defaults)
node = build_function("MyFunction", DUMMY_MOD, args=None, defaults=defaults)
self.assertEqual(2, len(node.args.defaults))

def test_build_function_posonlyargs(self) -> None:
node = build_function(name="MyFunction", posonlyargs=["a", "b"])
node = build_function("MyFunction", DUMMY_MOD, posonlyargs=["a", "b"])
self.assertEqual(2, len(node.args.posonlyargs))

def test_build_function_kwonlyargs(self) -> None:
node = build_function(name="MyFunction", kwonlyargs=["a", "b"])
node = build_function("MyFunction", DUMMY_MOD, kwonlyargs=["a", "b"])
assert len(node.args.kwonlyargs) == 2
assert node.args.kwonlyargs[0].name == "a"
assert node.args.kwonlyargs[1].name == "b"
Expand Down

0 comments on commit 2bc0f2f

Please sign in to comment.